Thread: [Exmmt-commit] SF.net SVN: exmmt: [17] net.sourceforge.exmmt/trunk
Status: Inactive
Brought to you by:
lgrammel
From: <lgr...@us...> - 2006-05-17 13:53:12
|
Revision: 17 Author: lgrammel Date: 2006-05-17 06:52:33 -0700 (Wed, 17 May 2006) ViewCVS: http://svn.sourceforge.net/exmmt/?rev=17&view=rev Log Message: ----------- #1490257 change subversion directory infrastructure to support tags Added Paths: ----------- net.sourceforge.exmmt/trunk/.project net.sourceforge.exmmt/trunk/META-INF/ net.sourceforge.exmmt/trunk/about.html net.sourceforge.exmmt/trunk/build.properties net.sourceforge.exmmt/trunk/lib/ net.sourceforge.exmmt/trunk/license/ net.sourceforge.exmmt/trunk/plugin.xml net.sourceforge.exmmt/trunk/resources/ net.sourceforge.exmmt/trunk/src/ Removed Paths: ------------- net.sourceforge.exmmt/trunk/net.sourceforge.exmmt/ Added: net.sourceforge.exmmt/trunk/.project =================================================================== --- net.sourceforge.exmmt/trunk/.project (rev 0) +++ net.sourceforge.exmmt/trunk/.project 2006-05-17 13:52:33 UTC (rev 17) @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>net.sourceforge.exmmt</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> Copied: net.sourceforge.exmmt/trunk/META-INF (from rev 16, net.sourceforge.exmmt/trunk/net.sourceforge.exmmt/META-INF) Copied: net.sourceforge.exmmt/trunk/about.html (from rev 16, net.sourceforge.exmmt/trunk/net.sourceforge.exmmt/about.html) =================================================================== --- net.sourceforge.exmmt/trunk/about.html (rev 0) +++ net.sourceforge.exmmt/trunk/about.html 2006-05-17 13:52:33 UTC (rev 17) @@ -0,0 +1,17 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> +<html> +<head> +<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"> +<title>Plugin License Information</title> +</head> + +<body lang="EN-US" link=blue vlink=purple> +<h2>Plugin License Information</h2> + +This plugin is available under the terms of <a href="license/net.sourceforge.exmmt.html">CPL</a>. + +The JDOM library contained in this plugin is available under the terms +of the <a href="license/jdom.txt">JDOM license</a>. + +</body> +</html> \ No newline at end of file Copied: net.sourceforge.exmmt/trunk/build.properties (from rev 16, net.sourceforge.exmmt/trunk/net.sourceforge.exmmt/build.properties) =================================================================== --- net.sourceforge.exmmt/trunk/build.properties (rev 0) +++ net.sourceforge.exmmt/trunk/build.properties 2006-05-17 13:52:33 UTC (rev 17) @@ -0,0 +1,19 @@ +bin.includes = META-INF/,\ + plugin.xml,\ + resources/,\ + net.sourceforge.exmmt.jar,\ + lib/,\ + about.html,\ + license/,\ + src/mappings/ +jars.compile.order = net.sourceforge.exmmt.jar +src.includes = plugin.xml,\ + src/,\ + resources/,\ + lib/,\ + META-INF/,\ + about.html,\ + license/ +source.net.sourceforge.exmmt.jar = src/java/ +output.net.sourceforge.exmmt.jar = bin/ +src.excludes = src/java/ Copied: net.sourceforge.exmmt/trunk/lib (from rev 16, net.sourceforge.exmmt/trunk/net.sourceforge.exmmt/lib) Copied: net.sourceforge.exmmt/trunk/license (from rev 16, net.sourceforge.exmmt/trunk/net.sourceforge.exmmt/license) Copied: net.sourceforge.exmmt/trunk/plugin.xml (from rev 16, net.sourceforge.exmmt/trunk/net.sourceforge.exmmt/plugin.xml) =================================================================== --- net.sourceforge.exmmt/trunk/plugin.xml (rev 0) +++ net.sourceforge.exmmt/trunk/plugin.xml 2006-05-17 13:52:33 UTC (rev 17) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> +<plugin> + + <extension point="org.eclipse.ui.editors"> + <editor + class="net.sourceforge.exmmt.ModelEditor" + extensions="xml" + icon="resources/icons/editor.gif" + id="net.sourceforge.exmmt.ModelEditor" + name="Model Editor"/> + </extension> + +</plugin> Copied: net.sourceforge.exmmt/trunk/resources (from rev 16, net.sourceforge.exmmt/trunk/net.sourceforge.exmmt/resources) Copied: net.sourceforge.exmmt/trunk/src (from rev 16, net.sourceforge.exmmt/trunk/net.sourceforge.exmmt/src) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lgr...@us...> - 2006-05-17 14:01:50
|
Revision: 18 Author: lgrammel Date: 2006-05-17 07:01:36 -0700 (Wed, 17 May 2006) ViewCVS: http://svn.sourceforge.net/exmmt/?rev=18&view=rev Log Message: ----------- #1490257 change subversion directory infrastructure to support tags Modified Paths: -------------- net.sourceforge.exmmt/trunk/.project Added Paths: ----------- net.sourceforge.exmmt/trunk/.classpath Property Changed: ---------------- net.sourceforge.exmmt/trunk/ Property changes on: net.sourceforge.exmmt/trunk ___________________________________________________________________ Name: svn:ignore + bin Added: net.sourceforge.exmmt/trunk/.classpath =================================================================== --- net.sourceforge.exmmt/trunk/.classpath (rev 0) +++ net.sourceforge.exmmt/trunk/.classpath 2006-05-17 14:01:36 UTC (rev 18) @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src/java"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="lib" path="lib/jaxen-core.jar"/> + <classpathentry kind="lib" path="lib/jaxen-jdom.jar"/> + <classpathentry kind="lib" path="lib/org.jdom.jar"/> + <classpathentry kind="lib" path="lib/saxpath.jar"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> Modified: net.sourceforge.exmmt/trunk/.project =================================================================== --- net.sourceforge.exmmt/trunk/.project 2006-05-17 13:52:33 UTC (rev 17) +++ net.sourceforge.exmmt/trunk/.project 2006-05-17 14:01:36 UTC (rev 18) @@ -5,7 +5,24 @@ <projects> </projects> <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> </buildSpec> <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> </natures> </projectDescription> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lgr...@us...> - 2006-10-12 16:29:31
|
Revision: 110 http://svn.sourceforge.net/exmmt/?rev=110&view=rev Author: lgrammel Date: 2006-10-12 09:29:21 -0700 (Thu, 12 Oct 2006) Log Message: ----------- #1500774 scenario "shopping list" Modified Paths: -------------- net.sourceforge.exmmt/trunk/plugin.xml net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/builder/Controller.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/builder/ControllerTreeBuilder.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/graphics/IDrawArea.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/navigation/Focus.java net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/HorizontalSequenceRenderer.java Added Paths: ----------- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java 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/plugin.xml =================================================================== --- net.sourceforge.exmmt/trunk/plugin.xml 2006-06-05 16:10:27 UTC (rev 109) +++ net.sourceforge.exmmt/trunk/plugin.xml 2006-10-12 16:29:21 UTC (rev 110) @@ -9,6 +9,12 @@ icon="resources/icons/editor.gif" id="net.sourceforge.exmmt.ModelEditor" name="Model Editor"/> + <editor + class="net.sourceforge.exmmt.NewModelEditor" + extensions="xml" + icon="resources/icons/editor.gif" + id="net.sourceforge.exmmt.NewModelEditor" + name="New Model Editor"/> </extension> </plugin> Added: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java (rev 0) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/DefaultDrawArea.java 2006-10-12 16:29:21 UTC (rev 110) @@ -0,0 +1,43 @@ +/** + * + */ +package net.sourceforge.exmmt; + +import net.sourceforge.exmmt.graphics.IDrawArea; + +import org.eclipse.swt.graphics.GC; + +public class DefaultDrawArea implements IDrawArea { + + private final GC gc; + + private int x; + + private int y; + + public DefaultDrawArea(GC gc) { + this.gc = gc; + } + + public void setPosition(int x, int y) { + this.x = x; + this.y = y; + } + + public int getY() { + return y; + } + + public int getX() { + return x; + } + + public void drawText(String text) { + gc.drawText(text, x, y); + } + + public void changePosition(int deltaX, int deltaY) { + x += deltaX; + y += deltaY; + } +} \ No newline at end of file Added: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelEditor.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelEditor.java (rev 0) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelEditor.java 2006-10-12 16:29:21 UTC (rev 110) @@ -0,0 +1,317 @@ +/* $HeadURL: https://svn.sourceforge.net/svnroot/exmmt/net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/ModelEditor.java $ + * ----------------------------------------------------------------------------- + * + * Copyright (C) Lars Grammel and others. + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Common Public License v1.0 which accompanies + * this distribution, and is available at + * + * http://www.eclipse.org/legal/cpl-v10.html + * + */ +package net.sourceforge.exmmt; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Canvas; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.part.EditorPart; +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.Format; +import org.jdom.output.XMLOutputter; + +public class NewModelEditor extends EditorPart { + + final static boolean IS_CARBON, IS_GTK, IS_MOTIF; + + // TODO move / change + static { + String platform = SWT.getPlatform(); + IS_CARBON = "carbon".equals(platform); + IS_GTK = "gtk".equals(platform); + IS_MOTIF = "motif".equals(platform); + } + + IModelElement selectedLiteral; + + IModelElement rootArea; + + private Canvas control; + + private Document document; + + private boolean dirty = false; + + private IFile file; + + private Map<String, IMetaModelElement> metaModelMap; + + @Override + public void createPartControl(Composite parent) { + control = new NewModelText(this, parent, SWT.NONE); + } + + @Override + public void dispose() { + if (control != null) { + control.dispose(); + } + + super.dispose(); + } + + @Override + public void doSave(IProgressMonitor monitor) { + try { + // write the document back + XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat()); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + + outputter.output(document, out); + + out.flush(); + out.close(); + + ByteArrayInputStream in = new ByteArrayInputStream(out + .toByteArray()); + + file.setContents(in, true, true, null); + + dirty = false; + firePropertyChange(PROP_DIRTY); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + @Override + public void doSaveAs() { + } + + public Document getMappingFile() throws JDOMException, IOException { + String mappingFile = document.getRootElement().getAttributeValue( + "file", document.getRootElement().getNamespace("mapping")); + + System.out.println(mappingFile); + + IPath projectLocation = file.getProject().getLocation(); + IPath path2 = projectLocation.append(file.getProjectRelativePath() + .removeLastSegments(1)); + IPath path = path2.append(mappingFile); + + SAXBuilder builder = new SAXBuilder(); + return builder.build(path.toFile()); + } + + @Override + public void init(IEditorSite site, IEditorInput input) + throws PartInitException { + setSite(site); + setInput(input); + + file = (IFile) input.getAdapter(IFile.class); + try { + document = new SAXBuilder().build(file.getContents()); + System.out.println(document); + } catch (JDOMException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + createMetaModelMap(); + rootArea = metaModelMap.get(document.getRootElement().getName()) + .create(document.getRootElement(), null); + selectedLiteral = getNavigationElements().get(0); + } + + @Override + public boolean isDirty() { + return dirty; + } + + @Override + public boolean isSaveAsAllowed() { + return false; + } + + @Override + public void setFocus() { + } + + void handleKeyDown(Event event) { + System.out.println(event); + + // TODO refactor + if (((event.keyCode == SWT.TAB) && ((event.stateMask & SWT.SHIFT) == SWT.SHIFT)) + || event.keyCode == SWT.ARROW_UP) { + int index = getNavigationElements().indexOf(selectedLiteral) - 1; + if (index < 0) { + index = getNavigationElements().size() - 1; + } + selectedLiteral = getNavigationElements().get(index); + control.redraw(); + } else if (((event.keyCode == SWT.TAB) && !((event.stateMask & SWT.SHIFT) == SWT.SHIFT)) + || event.keyCode == SWT.ARROW_DOWN) { + int index = getNavigationElements().indexOf(selectedLiteral) + 1; + if (index >= getNavigationElements().size()) { + index = 0; + } + selectedLiteral = getNavigationElements().get(index); + control.redraw(); + } else if (selectedLiteral instanceof VariableLiteral) { + VariableLiteral literal = (VariableLiteral) selectedLiteral; + if (event.keyCode == SWT.ARROW_RIGHT) { + literal.setCaretPosition(literal.getCaretPosition() + 1); + } else if (event.keyCode == SWT.ARROW_LEFT) { + literal.setCaretPosition(literal.getCaretPosition() - 1); + } else if (event.keyCode == SWT.DEL + && (literal.getCaretPosition() < literal.getValue() + .length())) { + StringBuffer value = new StringBuffer(literal.getValue()); + value.deleteCharAt(literal.getCaretPosition()); + literal.setValue(value.toString()); + changed(); + } else if (event.keyCode == SWT.BS + && (literal.getCaretPosition() > 0)) { + StringBuffer value = new StringBuffer(literal.getValue()); + value.deleteCharAt(literal.getCaretPosition() - 1); + literal.setValue(value.toString()); + literal.setCaretPosition(literal.getCaretPosition() - 1); + changed(); + } else if (isValidCharacter(event.stateMask, event.character)) { + StringBuffer value = new StringBuffer(literal.getValue()); + value.insert(literal.getCaretPosition(), event.character); + literal.setValue(value.toString()); + literal.setCaretPosition(literal.getCaretPosition() + 1); + changed(); + } + control.redraw(); + } else if (event.keyCode == SWT.CR + && selectedLiteral instanceof AdditionPoint) { + AdditionPoint literal = (AdditionPoint) selectedLiteral; + literal.execute(); + control.redraw(); + } + } + + private void changed() { + dirty = true; + firePropertyChange(PROP_DIRTY); + } + + private void createMetaModelMap() { + metaModelMap = new HashMap<String, IMetaModelElement>(); + Map<String, IMetaMetaModelElement> metaMetaModelMap = createMetaMetaModelMap(); + + try { + Document mappingFile = getMappingFile(); + + Element rootElement = mappingFile.getRootElement(); + List<Element> mappings = rootElement.getChildren("mapping"); + + for (Element mappingElement : mappings) { + Element configuration = (Element) mappingElement.getChildren() + .get(0); + + IMetaMetaModelElement metaMetaModelElement = metaMetaModelMap + .get(configuration.getName()); + IMetaModelElement metaModelElement = metaMetaModelElement + .create(configuration, metaMetaModelMap, metaModelMap); + + metaModelMap.put(mappingElement.getAttributeValue("select"), + metaModelElement); + } + + } catch (JDOMException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + + private Map<String, IMetaMetaModelElement> createMetaMetaModelMap() { + Map<String, IMetaMetaModelElement> metaMappingMap = new HashMap<String, IMetaMetaModelElement>(); + + metaMappingMap.put("area", new AreaFactoryFactory()); + metaMappingMap.put("line", new LineFactoryFactory()); + metaMappingMap.put("edit", new VariableFactoryFactory()); + metaMappingMap.put("literal", new FixedLiteralFactoryFactory()); + metaMappingMap.put("apply-mappings", new ApplyMappingsFactoryFactory()); + metaMappingMap.put("addition-point", new AdditionPointFactoryFactory()); + + return metaMappingMap; + } + + // TODO performance: use caching instead of recalculation + private List<IModelElement> getNavigationElements() { + NavigationElementSearcher visitor = new NavigationElementSearcher(); + + rootArea.accept(visitor); + + return visitor.getNavigationElements(); + } + + private boolean isValidCharacter(int stateMask, char character) { + boolean ignore = false; + + if (IS_CARBON) { + // Ignore accelerator key combinations (we do not want to + // insert a character in the text in this instance). Do not + // ignore COMMAND+ALT combinations since that key sequence + // produces characters on the mac. + ignore = (stateMask ^ SWT.COMMAND) == 0 + || (stateMask ^ (SWT.COMMAND | SWT.SHIFT)) == 0; + } else if (IS_MOTIF) { + // Ignore accelerator key combinations (we do not want to + // insert a character in the text in this instance). Do not + // ignore ALT combinations since this key sequence + // produces characters on motif. + ignore = (stateMask ^ SWT.CTRL) == 0 + || (stateMask ^ (SWT.CTRL | SWT.SHIFT)) == 0; + } else { + // Ignore accelerator key combinations (we do not want to + // insert a character in the text in this instance). Don't + // ignore CTRL+ALT combinations since that is the Alt Gr + // key on some keyboards. See bug 20953. + ignore = (stateMask ^ SWT.ALT) == 0 || (stateMask ^ SWT.CTRL) == 0 + || (stateMask ^ (SWT.ALT | SWT.SHIFT)) == 0 + || (stateMask ^ (SWT.CTRL | SWT.SHIFT)) == 0; + } + boolean isCharacter = !ignore && character > 31 && character != SWT.DEL; + // -ignore anything below SPACE except for line delimiter keys and tab. + // -ignore DEL + return isCharacter; + } +} Added: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java (rev 0) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/NewModelText.java 2006-10-12 16:29:21 UTC (rev 110) @@ -0,0 +1,116 @@ +/* $HeadURL: https://svn.sourceforge.net/svnroot/exmmt/net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/ModelText.java $ + * ----------------------------------------------------------------------------- + * + * Copyright (C) Lars Grammel and others. + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Common Public License v1.0 which accompanies + * this distribution, and is available at + * + * http://www.eclipse.org/legal/cpl-v10.html + * + */ +package net.sourceforge.exmmt; + +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; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; +import org.jdom.Element; + +public class NewModelText extends Canvas { + + private final NewModelEditor editor; + + private Listener listener; + + private Caret caret; + + public NewModelText(NewModelEditor editor, Composite parent, int style) { + super(parent, style); + this.editor = editor; + + listener = new Listener() { + public void handleEvent(Event event) { + switch (event.type) { + case SWT.Paint: + handlePaint(event); + break; + case SWT.KeyDown: + NewModelText.this.editor.handleKeyDown(event); + break; + } + } + + }; + addListener(SWT.Paint, listener); + addListener(SWT.KeyDown, listener); + + caret = new Caret(this, SWT.NULL); + setCaret(caret); + } + + public void dispose() { + caret.dispose(); + super.dispose(); + } + + 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 + IDrawArea area = new DefaultDrawArea(gc); + + ControllerTreeBuilder builder = new ControllerTreeBuilder(); + 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().render(area); + + color.dispose(); + color2.dispose(); + color3.dispose(); + } + + private Element getDocumentRoot() { + Element root = new Element("root"); + + root.setAttribute("blah","blub"); + root.setAttribute("blah2","blub222"); + + return root; + } + +} \ No newline at end of file Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/builder/Controller.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/builder/Controller.java 2006-06-05 16:10:27 UTC (rev 109) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/builder/Controller.java 2006-10-12 16:29:21 UTC (rev 110) @@ -18,6 +18,7 @@ import net.sourceforge.exmmt.renderer.IRenderer; import net.sourceforge.exmmt.renderer.NullRenderer; +// @tag structure.tree public class Controller { private final Object model; @@ -30,6 +31,7 @@ public Controller(Object model) { assert model != null; + this.model = model; } @@ -43,7 +45,7 @@ assert children.contains(child); } - // TODO result should be immutable or a copy + // @tag todo: result should be immutable or a copy public List<Controller> getChildren() { return children; } Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/builder/ControllerTreeBuilder.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/builder/ControllerTreeBuilder.java 2006-06-05 16:10:27 UTC (rev 109) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/builder/ControllerTreeBuilder.java 2006-10-12 16:29:21 UTC (rev 110) @@ -23,6 +23,7 @@ public class ControllerTreeBuilder { + // @tag structure.tree public Controller build(Element element) { Controller controller = new Controller(element); 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-06-05 16:10:27 UTC (rev 109) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/graphics/IDrawArea.java 2006-10-12 16:29:21 UTC (rev 110) @@ -12,7 +12,7 @@ */ package net.sourceforge.exmmt.graphics; -// TODO check introduction of Point class +// @tag todo.introduce: Point class public interface IDrawArea { void drawText(String text); Modified: net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/navigation/Focus.java =================================================================== --- net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/navigation/Focus.java 2006-06-05 16:10:27 UTC (rev 109) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/navigation/Focus.java 2006-10-12 16:29:21 UTC (rev 110) @@ -51,6 +51,8 @@ int currentIndex = siblings.indexOf(focusedElement); + // @tag todo.refactor.extractStaticMethod: interval restriction + assert currentIndex >= 0; assert currentIndex <= siblings.size() - 1; @@ -78,6 +80,8 @@ int currentIndex = siblings.indexOf(focusedElement); + // @tag todo.refactor.extractStaticMethod: interval restriction + assert currentIndex >= 0; assert currentIndex <= siblings.size() - 1; 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-06-05 16:10:27 UTC (rev 109) +++ net.sourceforge.exmmt/trunk/src/java/net/sourceforge/exmmt/renderer/HorizontalSequenceRenderer.java 2006-10-12 16:29:21 UTC (rev 110) @@ -27,15 +27,13 @@ public void calculateSize(ISizeCalculator sizeCalculator) { int height = 0; int width = 0; - + for (IRenderer renderer : subRenderers) { renderer.calculateSize(sizeCalculator); + Rectangle bounds = renderer.getSize(); - if (bounds.height > height) { - height = bounds.height; - } - + height = Math.max(height, bounds.height); width += bounds.width; } @@ -43,18 +41,15 @@ } public void render(IDrawArea drawArea) { - int oldX = drawArea.getX(); - int oldY = drawArea.getY(); - + int originalX = drawArea.getX(); + int originalY = drawArea.getY(); + for (IRenderer renderer : subRenderers) { renderer.render(drawArea); - - Rectangle bounds = renderer.getSize(); - - drawArea.changePosition(bounds.width, 0); + drawArea.changePosition(renderer.getSize().width, 0); } - - drawArea.setPosition(oldX, oldY); + + drawArea.setPosition(originalX, originalY); } public void add(IRenderer subRenderer) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |