[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.
|