[Exmmt-commit] SF.net SVN: exmmt: [113] net.sourceforge.exmmt
Status: Inactive
Brought to you by:
lgrammel
From: <lgr...@us...> - 2006-10-12 17:28:01
|
Revision: 113 http://svn.sourceforge.net/exmmt/?rev=113&view=rev Author: lgrammel Date: 2006-10-12 10:27:46 -0700 (Thu, 12 Oct 2006) Log Message: ----------- #1500774 scenario "shopping list" Modified Paths: -------------- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/AbstractRenderer.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/DelegatingRenderer.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/IRenderer.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/NullRenderer.java net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/DelegatingRendererTest.java net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/NullRendererTest.java Added Paths: ----------- net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/AbstractRendererTest.java 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:32:39 UTC (rev 112) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java 2006-10-12 17:27:46 UTC (rev 113) @@ -15,6 +15,9 @@ 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 net.sourceforge.exmmt.navigation.Focus; +import net.sourceforge.exmmt.renderer.IRenderer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; @@ -65,38 +68,49 @@ } void handlePaint(Event event) { - System.out.println("handlePaint"); final GC gc = event.gc; Color color = new Color(gc.getDevice(), new RGB(255, 255, 255)); - Color color2 = new Color(gc.getDevice(), new RGB(200, 255, 255)); - Color color3 = new Color(gc.getDevice(), new RGB(255, 200, 200)); gc.setBackground(color); drawBackground(gc, getClientArea().x, getClientArea().y, getClientArea().width, getClientArea().height); - // create draw area - // call render with draw area + // @tag todo.test: algorithm once extracted + // @tag todo.combine IDrawArea area = new DefaultDrawArea(gc); + ISizeCalculator sizeCalculator = new DefaultSizeCalculator(gc); - ControllerTreeBuilder builder = new ControllerTreeBuilder(); - Element root = getDocumentRoot(); - Controller controller = builder.build(root); + Controller controller = createController(); + Focus focus = new Focus(controller); - controller.getRenderer().calculateSize(new DefaultSizeCalculator(gc)); - controller.getRenderer().render(area); + // @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 + // appears at + IRenderer focusedElementRenderer = focus.getFocusedElement().getRenderer(); + IRenderer renderer = controller.getRenderer(); + + renderer.calculateSize(sizeCalculator); + renderer.render(area); + color.dispose(); - color2.dispose(); - color3.dispose(); } + private Controller createController() { + ControllerTreeBuilder builder = new ControllerTreeBuilder(); + Element root = getDocumentRoot(); + return builder.build(root); + } + private Element getDocumentRoot() { Element root = new Element("root"); - - root.setAttribute("blah","blub"); - root.setAttribute("blah2","blub222"); - + + root.setAttribute("blah", "blub"); + root.setAttribute("blah2", "blub222"); + return root; } Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/AbstractRenderer.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/AbstractRenderer.java 2006-10-12 16:32:39 UTC (rev 112) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/AbstractRenderer.java 2006-10-12 17:27:46 UTC (rev 113) @@ -12,6 +12,10 @@ */ package net.sourceforge.exmmt.renderer; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; public abstract class AbstractRenderer implements IRenderer { @@ -26,4 +30,14 @@ this.size = size; } + public List<Point> getLocations(IRenderer renderer) { + ArrayList<Point> result = new ArrayList<Point>(); + + if (renderer == this) { + result.add(new Point(0,0)); + } + + return result; + } + } \ No newline at end of file Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/DelegatingRenderer.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/DelegatingRenderer.java 2006-10-12 16:32:39 UTC (rev 112) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/DelegatingRenderer.java 2006-10-12 17:27:46 UTC (rev 113) @@ -17,7 +17,7 @@ import org.eclipse.swt.graphics.Rectangle; -public abstract class DelegatingRenderer implements IRenderer { +public abstract class DelegatingRenderer extends AbstractRenderer { public void calculateSize(ISizeCalculator sizeCalculator) { getDelegate().calculateSize(sizeCalculator); Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/IRenderer.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/IRenderer.java 2006-10-12 16:32:39 UTC (rev 112) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/IRenderer.java 2006-10-12 17:27:46 UTC (rev 113) @@ -12,13 +12,18 @@ */ package net.sourceforge.exmmt.renderer; +import java.util.List; + import net.sourceforge.exmmt.graphics.IDrawArea; import net.sourceforge.exmmt.graphics.ISizeCalculator; +import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; public interface IRenderer { + List<Point> getLocations(IRenderer renderer); + void render(IDrawArea drawArea); void calculateSize(ISizeCalculator sizeCalculator); Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/NullRenderer.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/NullRenderer.java 2006-10-12 16:32:39 UTC (rev 112) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/NullRenderer.java 2006-10-12 17:27:46 UTC (rev 113) @@ -12,6 +12,7 @@ */ package net.sourceforge.exmmt.renderer; + import org.eclipse.swt.graphics.Rectangle; import net.sourceforge.exmmt.graphics.IDrawArea; @@ -22,7 +23,7 @@ public NullRenderer() { setSize(new Rectangle(0, 0, 0, 0)); } - + public void calculateSize(ISizeCalculator sizeCalculator) { } Added: net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/AbstractRendererTest.java =================================================================== --- net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/AbstractRendererTest.java (rev 0) +++ net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/AbstractRendererTest.java 2006-10-12 17:27:46 UTC (rev 113) @@ -0,0 +1,36 @@ +package net.sourceforge.exmmt.renderer; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.eclipse.swt.graphics.Point; +import org.junit.Before; +import org.junit.Test; + +public abstract class AbstractRendererTest { + + protected IRenderer renderer; + + protected abstract IRenderer createRenderer(); + + @Test + public void getSelfLocation() { + List<Point> locations = renderer.getLocations(renderer); + + assertEquals(1, locations.size()); + assertEquals(new Point(0, 0), locations.get(0)); + } + + @Test + public void isRenderer() { + assertTrue(IRenderer.class.isAssignableFrom(renderer.getClass())); + } + + @Before + public void setUp() { + renderer = createRenderer(); + } + +} Modified: net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/DelegatingRendererTest.java =================================================================== --- net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/DelegatingRendererTest.java 2006-10-12 16:32:39 UTC (rev 112) +++ net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/DelegatingRendererTest.java 2006-10-12 17:27:46 UTC (rev 113) @@ -17,7 +17,6 @@ import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; import junit.framework.JUnit4TestAdapter; import net.sourceforge.exmmt.graphics.IDrawArea; import net.sourceforge.exmmt.graphics.ISizeCalculator; @@ -26,18 +25,11 @@ import org.junit.Before; import org.junit.Test; -public class DelegatingRendererTest { +public class DelegatingRendererTest extends AbstractRendererTest { private IRenderer mockRenderer; - private DelegatingRenderer delegatingRenderer; - @Test - public void isRenderer() { - assertTrue(IRenderer.class.isAssignableFrom(DelegatingRenderer.class)); - } - - @Test public void render() { IDrawArea drawArea = createMock(IDrawArea.class); @@ -46,7 +38,7 @@ replay(drawArea); replay(mockRenderer); - delegatingRenderer.render(drawArea); + renderer.render(drawArea); verify(drawArea); verify(mockRenderer); @@ -61,7 +53,7 @@ replay(sizeCalculator); replay(mockRenderer); - delegatingRenderer.calculateSize(sizeCalculator); + renderer.calculateSize(sizeCalculator); verify(sizeCalculator); verify(mockRenderer); @@ -70,21 +62,19 @@ @Test public void getSize() { Rectangle bounds = new Rectangle(20, 20, 20, 20); - + expect(mockRenderer.getSize()).andReturn(bounds); replay(mockRenderer); - assertEquals(bounds, delegatingRenderer.getSize()); + assertEquals(bounds, renderer.getSize()); verify(mockRenderer); } - @Before - public void setUp() { - mockRenderer = createMock(IRenderer.class); - - delegatingRenderer = new DelegatingRenderer() { + @Override + protected IRenderer createRenderer() { + return new DelegatingRenderer() { @Override protected IRenderer getDelegate() { return mockRenderer; @@ -92,6 +82,11 @@ }; } + @Before + public void createMockRenderer() { + mockRenderer = createMock(IRenderer.class); + } + // Junit 3.8.1 backward compability public static junit.framework.Test suite() { return new JUnit4TestAdapter(DelegatingRendererTest.class); Modified: net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/NullRendererTest.java =================================================================== --- net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/NullRendererTest.java 2006-10-12 16:32:39 UTC (rev 112) +++ net.sourceforge.exmmt.test/trunk/src/net/sourceforge/exmmt/renderer/NullRendererTest.java 2006-10-12 17:27:46 UTC (rev 113) @@ -16,36 +16,34 @@ import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; + + import junit.framework.JUnit4TestAdapter; import net.sourceforge.exmmt.graphics.ISizeCalculator; import org.eclipse.swt.graphics.Rectangle; import org.junit.Test; -public class NullRendererTest { +public class NullRendererTest extends AbstractRendererTest { @Test - public void isRenderer() { - assertTrue(IRenderer.class.isAssignableFrom(NullRenderer.class)); - } - - @Test public void computeSize() { - IRenderer renderer = new NullRenderer(); - ISizeCalculator sizeCalculator = createMock(ISizeCalculator.class); replay(sizeCalculator); - + renderer.calculateSize(sizeCalculator); - + assertEquals(new Rectangle(0, 0, 0, 0), renderer.getSize()); verify(sizeCalculator); } - // Junit 3.8.1 backward compability + protected AbstractRenderer createRenderer() { + return new NullRenderer(); + } + + // @tag compability: Junit 3.8.1 public static junit.framework.Test suite() { return new JUnit4TestAdapter(NullRendererTest.class); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |