Thread: [Exmmt-commit] SF.net SVN: exmmt: [112] net.sourceforge.exmmt/trunk/src/java/net/ sourceforge/exmmt
Status: Inactive
Brought to you by:
lgrammel
From: <lgr...@us...> - 2006-10-12 16:32:47
|
Revision: 112 http://svn.sourceforge.net/exmmt/?rev=112&view=rev Author: lgrammel Date: 2006-10-12 09:32:39 -0700 (Thu, 12 Oct 2006) Log Message: ----------- #1500774 scenario "shopping list" Modified Paths: -------------- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java Added Paths: ----------- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java Added: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java (rev 0) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java 2006-10-12 16:32:39 UTC (rev 112) @@ -0,0 +1,27 @@ +/** + * + */ +package net.sourceforge.exmmt; + +import net.sourceforge.exmmt.graphics.ISizeCalculator; + +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.graphics.TextLayout; + +public final class DefaultSizeCalculator implements ISizeCalculator { + + private final GC gc; + + public DefaultSizeCalculator(GC gc) { + this.gc = gc; + } + + public Rectangle calculateSize(String text) { + TextLayout textLayout = new TextLayout(gc.getDevice()); + + textLayout.setText(text); + + return textLayout.getBounds(); + } +} \ No newline at end of file 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 16:30:12 UTC (rev 111) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java 2006-10-12 16:32:39 UTC (rev 112) @@ -15,14 +15,11 @@ import net.sourceforge.exmmt.builder.Controller; import net.sourceforge.exmmt.builder.ControllerTreeBuilder; import net.sourceforge.exmmt.graphics.IDrawArea; -import net.sourceforge.exmmt.graphics.ISizeCalculator; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.graphics.TextLayout; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Caret; import org.eclipse.swt.widgets.Composite; @@ -86,17 +83,7 @@ Element root = getDocumentRoot(); Controller controller = builder.build(root); - controller.getRenderer().calculateSize(new ISizeCalculator() { - - public Rectangle calculateSize(String text) { - TextLayout textLayout = new TextLayout(gc.getDevice()); - - textLayout.setText(text); - - return textLayout.getBounds(); - } - - }); + controller.getRenderer().calculateSize(new DefaultSizeCalculator(gc)); controller.getRenderer().render(area); color.dispose(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lgr...@us...> - 2006-10-12 17:43:36
|
Revision: 115 http://svn.sourceforge.net/exmmt/?rev=115&view=rev Author: lgrammel Date: 2006-10-12 10:43:30 -0700 (Thu, 12 Oct 2006) Log Message: ----------- #1500774 scenario "shopping list" Modified Paths: -------------- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/graphics/IDrawArea.java Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java 2006-10-12 17:38:20 UTC (rev 114) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java 2006-10-12 17:43:30 UTC (rev 115) @@ -1,11 +1,9 @@ -/** - * - */ package net.sourceforge.exmmt; import net.sourceforge.exmmt.graphics.IDrawArea; import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Rectangle; public class DefaultDrawArea implements IDrawArea { @@ -40,4 +38,9 @@ x += deltaX; y += deltaY; } + + public void drawFocusRectangle(Rectangle size) { + gc.drawRectangle(x, y, size.width, size.height); + } + } \ No newline at end of file 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:38:20 UTC (rev 114) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java 2006-10-12 17:43:30 UTC (rev 115) @@ -12,6 +12,8 @@ */ package net.sourceforge.exmmt; +import java.util.List; + import net.sourceforge.exmmt.builder.Controller; import net.sourceforge.exmmt.builder.ControllerTreeBuilder; import net.sourceforge.exmmt.graphics.IDrawArea; @@ -22,7 +24,9 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Caret; import org.eclipse.swt.widgets.Composite; @@ -95,6 +99,12 @@ renderer.calculateSize(sizeCalculator); renderer.render(area); + List<Point> locations = renderer.getLocations(focusedElementRenderer); + Rectangle size = focusedElementRenderer.getSize(); + for (Point point : locations) { + area.setPosition(point.x, point.y); + area.drawFocusRectangle(size); + } color.dispose(); } Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/graphics/IDrawArea.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/graphics/IDrawArea.java 2006-10-12 17:38:20 UTC (rev 114) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/graphics/IDrawArea.java 2006-10-12 17:43:30 UTC (rev 115) @@ -12,6 +12,8 @@ */ package net.sourceforge.exmmt.graphics; +import org.eclipse.swt.graphics.Rectangle; + // @tag todo.introduce: Point class public interface IDrawArea { @@ -25,4 +27,6 @@ int getY(); + void drawFocusRectangle(Rectangle size); + } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <lgr...@us...> - 2006-10-12 18:39:23
|
Revision: 119 http://svn.sourceforge.net/exmmt/?rev=119&view=rev Author: lgrammel Date: 2006-10-12 11:39:19 -0700 (Thu, 12 Oct 2006) Log Message: ----------- #1500774 scenario "shopping list" Modified Paths: -------------- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java 2006-10-12 18:17:30 UTC (rev 118) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java 2006-10-12 18:39:19 UTC (rev 119) @@ -2,7 +2,9 @@ import net.sourceforge.exmmt.graphics.IDrawArea; +import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.Rectangle; public class DefaultDrawArea implements IDrawArea { @@ -40,7 +42,12 @@ } public void drawFocusRectangle(Rectangle size) { + Color color = new Color(gc.getDevice(), new RGB(128, 128, 255)); + Color oldBackground = gc.getBackground(); + gc.setBackground(color); + gc.fillRectangle(x, y, size.width, size.height); gc.drawRectangle(x, y, size.width, size.height); + gc.setBackground(oldBackground); } } \ No newline at end of file Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java 2006-10-12 18:17:30 UTC (rev 118) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java 2006-10-12 18:39:19 UTC (rev 119) @@ -19,9 +19,12 @@ public Rectangle calculateSize(String text) { TextLayout textLayout = new TextLayout(gc.getDevice()); + textLayout.setFont(gc.getFont()); textLayout.setText(text); return textLayout.getBounds(); + + // @tag todo.dispose: textlayout } } \ No newline at end of file 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 18:17:30 UTC (rev 118) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java 2006-10-12 18:39:19 UTC (rev 119) @@ -59,7 +59,7 @@ case SWT.KeyDown: handleKeyEvent(event); NewModelText.this.editor.control.redraw(); -// NewModelText.this.editor.handleKeyDown(event); + // NewModelText.this.editor.handleKeyDown(event); break; } } @@ -110,24 +110,29 @@ IDrawArea area = new DefaultDrawArea(gc); ISizeCalculator sizeCalculator = new DefaultSizeCalculator(gc); - // clean solution: method that gathers all the positions the focused - // element - // appears at - IRenderer focusedElementRenderer = focus.getFocusedElement() - .getRenderer(); IRenderer renderer = controller.getRenderer(); renderer.calculateSize(sizeCalculator); + + drawFocus(area, renderer); + renderer.render(area); + color.dispose(); + } + + private void drawFocus(IDrawArea area, IRenderer renderer) { + IRenderer focusedElementRenderer = focus.getFocusedElement() + .getRenderer(); List<Point> locations = renderer.getLocations(focusedElementRenderer); Rectangle size = focusedElementRenderer.getSize(); for (Point point : locations) { + int x = area.getX(); + int y = area.getY(); area.setPosition(point.x, point.y); area.drawFocusRectangle(size); + area.setPosition(x, y); } - - color.dispose(); } private Controller createController() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lgr...@us...> - 2006-10-12 18:47:53
|
Revision: 120 http://svn.sourceforge.net/exmmt/?rev=120&view=rev Author: lgrammel Date: 2006-10-12 11:47:48 -0700 (Thu, 12 Oct 2006) Log Message: ----------- #1500774 scenario "shopping list" Modified Paths: -------------- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/HorizontalSequenceRenderer.java Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java 2006-10-12 18:39:19 UTC (rev 119) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultSizeCalculator.java 2006-10-12 18:47:48 UTC (rev 120) @@ -1,6 +1,3 @@ -/** - * - */ package net.sourceforge.exmmt; import net.sourceforge.exmmt.graphics.ISizeCalculator; Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/HorizontalSequenceRenderer.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/HorizontalSequenceRenderer.java 2006-10-12 18:39:19 UTC (rev 119) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/HorizontalSequenceRenderer.java 2006-10-12 18:47:48 UTC (rev 120) @@ -60,6 +60,9 @@ return list; } + // @tag idea: callback to drawArea (visitor pattern) + // drawarea with point stack, start and finish methods + // extract render as template method to superclass afterwards public void render(IDrawArea drawArea) { int originalX = drawArea.getX(); int originalY = drawArea.getY(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lgr...@us...> - 2006-10-12 19:56:29
|
Revision: 122 http://svn.sourceforge.net/exmmt/?rev=122&view=rev Author: lgrammel Date: 2006-10-12 12:56:27 -0700 (Thu, 12 Oct 2006) Log Message: ----------- #1500774 scenario "shopping list" Modified Paths: -------------- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/graphics/IDrawArea.java Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java 2006-10-12 18:54:59 UTC (rev 121) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java 2006-10-12 19:56:27 UTC (rev 122) @@ -1,6 +1,7 @@ package net.sourceforge.exmmt; import net.sourceforge.exmmt.graphics.IDrawArea; +import net.sourceforge.exmmt.renderer.IRenderer; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; @@ -43,5 +44,11 @@ gc.drawRectangle(position.x, position.y, size.width, size.height); gc.setBackground(oldBackground); } + + public void finishDrawing(IRenderer renderer) { + } + + public void startDrawing(IRenderer renderer) { + } } \ No newline at end of file Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/graphics/IDrawArea.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/graphics/IDrawArea.java 2006-10-12 18:54:59 UTC (rev 121) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/graphics/IDrawArea.java 2006-10-12 19:56:27 UTC (rev 122) @@ -12,15 +12,27 @@ */ package net.sourceforge.exmmt.graphics; +import net.sourceforge.exmmt.renderer.IRenderer; + import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; +// @tag todo: positions should be relative to the current position from the +// superior node +// @tag todo: save the complete context on the stack +// @tag todo.rename +// @tag todo.move: move gc abstract away to create testeable drawarea implementation public interface IDrawArea { + void startDrawing(IRenderer renderer); + + void finishDrawing(IRenderer renderer); + void drawText(String text); - + void setPosition(Point position); - + + // @tag todo.split: into moveHorizontal, moveVertical void changePosition(int deltaX, int deltaY); Point getPosition(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |