[Exmmt-commit] SF.net SVN: exmmt: [116] net.sourceforge.exmmt/trunk/src/java/net/ sourceforge/exmmt
Status: Inactive
Brought to you by:
lgrammel
From: <lgr...@us...> - 2006-10-12 17:54:40
|
Revision: 116 http://svn.sourceforge.net/exmmt/?rev=116&view=rev Author: lgrammel Date: 2006-10-12 10:54:31 -0700 (Thu, 12 Oct 2006) Log Message: ----------- #1500774 scenario "shopping list" Modified Paths: -------------- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelEditor.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelEditor.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelEditor.java 2006-10-12 17:43:30 UTC (rev 115) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelEditor.java 2006-10-12 17:54:31 UTC (rev 116) @@ -54,7 +54,7 @@ IModelElement rootArea; - private Canvas control; + Canvas control; private Document document; Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java 2006-10-12 17:43:30 UTC (rev 115) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java 2006-10-12 17:54:31 UTC (rev 116) @@ -42,6 +42,10 @@ private Caret caret; + private Controller controller; + + private Focus focus; + public NewModelText(NewModelEditor editor, Composite parent, int style) { super(parent, style); this.editor = editor; @@ -53,7 +57,9 @@ handlePaint(event); break; case SWT.KeyDown: - NewModelText.this.editor.handleKeyDown(event); + handleKeyEvent(event); + NewModelText.this.editor.control.redraw(); +// NewModelText.this.editor.handleKeyDown(event); break; } } @@ -64,8 +70,28 @@ caret = new Caret(this, SWT.NULL); setCaret(caret); + + controller = createController(); + focus = new Focus(controller); } + protected void handleKeyEvent(Event event) { + if ((event.stateMask & SWT.CTRL) == SWT.CTRL) { + if (event.keyCode == SWT.ARROW_UP) { + focus.moveToParent(); + } + if (event.keyCode == SWT.ARROW_DOWN) { + focus.moveToChild(); + } + if (event.keyCode == SWT.ARROW_LEFT) { + focus.moveToPreviousSibling(); + } + if (event.keyCode == SWT.ARROW_RIGHT) { + focus.moveToNextSibling(); + } + } + } + public void dispose() { caret.dispose(); super.dispose(); @@ -84,21 +110,16 @@ IDrawArea area = new DefaultDrawArea(gc); ISizeCalculator sizeCalculator = new DefaultSizeCalculator(gc); - Controller controller = createController(); - Focus focus = new Focus(controller); - - // @tag problem: focus rendering needs exact element position - // one element may have more than one position if it is rendered at different - // locations - - // clean solution: method that gathers all the positions the focused element + // clean solution: method that gathers all the positions the focused + // element // appears at - IRenderer focusedElementRenderer = focus.getFocusedElement().getRenderer(); + IRenderer focusedElementRenderer = focus.getFocusedElement() + .getRenderer(); IRenderer renderer = controller.getRenderer(); - + renderer.calculateSize(sizeCalculator); renderer.render(area); - + List<Point> locations = renderer.getLocations(focusedElementRenderer); Rectangle size = focusedElementRenderer.getSize(); for (Point point : locations) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |