### Eclipse Workspace Patch 1.0 #P org.eclipse.gmf.tests Index: src/org/eclipse/gmf/tests/gen/GenericFigureCheck.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/gen/GenericFigureCheck.java,v retrieving revision 1.1 diff -u -r1.1 GenericFigureCheck.java --- src/org/eclipse/gmf/tests/gen/GenericFigureCheck.java 30 Mar 2006 13:38:09 -0000 1.1 +++ src/org/eclipse/gmf/tests/gen/GenericFigureCheck.java 31 Mar 2006 14:57:30 -0000 @@ -12,24 +12,32 @@ package org.eclipse.gmf.tests.gen; +import java.lang.reflect.Field; import java.util.Iterator; import java.util.List; +import org.eclipse.draw2d.Graphics; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.geometry.PointList; import org.eclipse.gmf.gmfgraph.BasicFont; +import org.eclipse.gmf.gmfgraph.Border; import org.eclipse.gmf.gmfgraph.Color; -import org.eclipse.gmf.gmfgraph.ColorConstants; +import org.eclipse.gmf.gmfgraph.CompoundBorder; import org.eclipse.gmf.gmfgraph.ConstantColor; import org.eclipse.gmf.gmfgraph.Dimension; import org.eclipse.gmf.gmfgraph.Figure; import org.eclipse.gmf.gmfgraph.Font; import org.eclipse.gmf.gmfgraph.FontStyle; import org.eclipse.gmf.gmfgraph.GMFGraphPackage; +import org.eclipse.gmf.gmfgraph.Insets; import org.eclipse.gmf.gmfgraph.Label; +import org.eclipse.gmf.gmfgraph.LineBorder; +import org.eclipse.gmf.gmfgraph.LineKind; +import org.eclipse.gmf.gmfgraph.MarginBorder; import org.eclipse.gmf.gmfgraph.Point; import org.eclipse.gmf.gmfgraph.Polyline; import org.eclipse.gmf.gmfgraph.RGBColor; +import org.eclipse.gmf.gmfgraph.Shape; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.RGB; @@ -46,12 +54,12 @@ checkFigure(myGMFRootFigure, figure); } - private void checkFigure(Figure gmfFigure, IFigure d2dFigure){ + protected void checkFigure(Figure gmfFigure, IFigure d2dFigure){ checkFigureItself(gmfFigure, d2dFigure); checkFigureChildren(gmfFigure, d2dFigure); } - private void checkFigureChildren(Figure gmfFigure, IFigure d2dFigure){ + protected void checkFigureChildren(Figure gmfFigure, IFigure d2dFigure){ List gmfChildren = gmfFigure.getChildren(); List d2dChildren = d2dFigure.getChildren(); assertNotNull(gmfChildren); @@ -68,17 +76,57 @@ } } - private void checkFigureItself(Figure gmfFigure, IFigure d2dFigure){ + protected void checkFigureItself(Figure gmfFigure, IFigure d2dFigure){ checkSize(gmfFigure, d2dFigure); + //XXX: checkLocation(gmfFigure, d2dFigure); + checkMaximumSize(gmfFigure, d2dFigure); + checkMinimumSize(gmfFigure, d2dFigure); checkPreferredSize(gmfFigure, d2dFigure); checkFont(gmfFigure, d2dFigure); checkForeground(gmfFigure, d2dFigure); checkBackgroud(gmfFigure, d2dFigure); + checkInsets(gmfFigure, d2dFigure); + checkBorder(gmfFigure, d2dFigure); + checkShapeProperties(gmfFigure, d2dFigure); checkLabelText(gmfFigure, d2dFigure); checkPolylinePoints(gmfFigure, d2dFigure); } + + private void checkShapeProperties(Figure gmfFigure, IFigure figure) { + if (gmfFigure instanceof Shape){ + Shape eShape = (Shape)gmfFigure; + assertTrue(figure instanceof org.eclipse.draw2d.Shape); + org.eclipse.draw2d.Shape d2dShape = (org.eclipse.draw2d.Shape)figure; + checkLineKind(eShape, d2dShape); + checkLineWidth(eShape, d2dShape); + } + } + + protected void checkLineWidth(Shape eShape, org.eclipse.draw2d.Shape d2dShape) { + if (eShape.eIsSet(GMFGraphPackage.eINSTANCE.getShape_LineWidth())){ + int expected = eShape.getLineWidth(); + assertEquals(expected, d2dShape.getLineWidth()); + } + } + + protected void checkLineKind(Shape eShape, org.eclipse.draw2d.Shape d2dShape) { + if (eShape.eIsSet(GMFGraphPackage.eINSTANCE.getShape_LineKind())){ + LineKind expected = eShape.getLineKind(); + assertEquals(transformLineKind(expected), d2dShape.getLineStyle()); + } + } - private void checkPolylinePoints(Figure gmfFigure, IFigure d2dFigure) { + private int transformLineKind(LineKind kind){ + Object d2dValue = getStaticFieldValue("Unknown LineKind: " + kind, Graphics.class, kind.getName()); + assertTrue(d2dValue instanceof Integer); + return ((Integer)d2dValue).intValue(); + } + + protected final void checkDimension(Dimension eDimension, org.eclipse.draw2d.geometry.Dimension d2dDimension){ + assertEquals(new org.eclipse.draw2d.geometry.Dimension(eDimension.getDx(), eDimension.getDy()), d2dDimension); + } + + protected void checkPolylinePoints(Figure gmfFigure, IFigure d2dFigure) { if (gmfFigure instanceof Polyline && gmfFigure.eIsSet(GMFGraphPackage.eINSTANCE.getPolyline_Template())){ Polyline gmfPolyline = (Polyline)gmfFigure; assertTrue(d2dFigure instanceof org.eclipse.draw2d.Polyline); @@ -98,7 +146,7 @@ } - private void checkLabelText(Figure gmfFigure, IFigure d2dFigure) { + protected void checkLabelText(Figure gmfFigure, IFigure d2dFigure) { if (gmfFigure instanceof Label && gmfFigure.eIsSet(GMFGraphPackage.eINSTANCE.getLabel_Text())){ assertTrue(d2dFigure instanceof org.eclipse.draw2d.Label); org.eclipse.draw2d.Label d2dLabel = (org.eclipse.draw2d.Label)d2dFigure; @@ -107,19 +155,19 @@ } } - private void checkBackgroud(Figure gmfFigure, IFigure figure) { + protected void checkBackgroud(Figure gmfFigure, IFigure figure) { if (gmfFigure.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_BackgroundColor())){ checkColor(gmfFigure.getBackgroundColor(), figure.getBackgroundColor()); } } - private void checkForeground(Figure gmfFigure, IFigure figure) { + protected void checkForeground(Figure gmfFigure, IFigure figure) { if (gmfFigure.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_ForegroundColor())){ checkColor(gmfFigure.getForegroundColor(), figure.getForegroundColor()); } } - private void checkColor(Color eColor, org.eclipse.swt.graphics.Color swtColor){ + protected final void checkColor(Color eColor, org.eclipse.swt.graphics.Color swtColor){ assertNotNull(swtColor); assertNotNull(eColor); @@ -134,14 +182,14 @@ assertEquals(expectedRGB, swtColor.getRGB()); } - private void checkFont(Figure gmfFigure, IFigure figure) { + protected void checkFont(Figure gmfFigure, IFigure figure) { if (gmfFigure.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_Font())){ Font eFont = gmfFigure.getFont(); checkFont(eFont, figure.getFont()); } } - private void checkFont(Font gmfFont, org.eclipse.swt.graphics.Font actual){ + protected final void checkFont(Font gmfFont, org.eclipse.swt.graphics.Font actual){ assertNotNull(actual); if (gmfFont instanceof BasicFont && actual.getFontData().length == 1){ BasicFont expected = (BasicFont)gmfFont; @@ -164,23 +212,22 @@ } private org.eclipse.swt.graphics.Color transformConstantColor(ConstantColor color) { - switch(color.getValue().getValue()){ - case ColorConstants.BLACK : return org.eclipse.draw2d.ColorConstants.black; - case ColorConstants.BLUE : return org.eclipse.draw2d.ColorConstants.blue; - case ColorConstants.CYAN : return org.eclipse.draw2d.ColorConstants.cyan; - case ColorConstants.DARK_BLUE : return org.eclipse.draw2d.ColorConstants.darkBlue; - case ColorConstants.DARK_GRAY: return org.eclipse.draw2d.ColorConstants.darkGray; - case ColorConstants.DARK_GREEN: return org.eclipse.draw2d.ColorConstants.darkGreen; - case ColorConstants.GRAY: return org.eclipse.draw2d.ColorConstants.gray; - case ColorConstants.GREEN: return org.eclipse.draw2d.ColorConstants.green; - case ColorConstants.LIGHT_BLUE: return org.eclipse.draw2d.ColorConstants.lightBlue; - case ColorConstants.LIGHT_GRAY: return org.eclipse.draw2d.ColorConstants.lightGray; - case ColorConstants.LIGHT_GREEN: return org.eclipse.draw2d.ColorConstants.lightGreen; - case ColorConstants.ORANGE: return org.eclipse.draw2d.ColorConstants.orange; - case ColorConstants.RED: return org.eclipse.draw2d.ColorConstants.red; - case ColorConstants.WHITE: return org.eclipse.draw2d.ColorConstants.white; - case ColorConstants.YELLOW: return org.eclipse.draw2d.ColorConstants.yellow; - default: throw new IllegalArgumentException("Unknown Color: " + color); + Class d2dClass = org.eclipse.draw2d.ColorConstants.class; + Object d2dValue = getStaticFieldValue("Unknown color: " + color, d2dClass, color.getValue().getLiteral()); + assertTrue(d2dValue instanceof org.eclipse.swt.graphics.Color); + return (org.eclipse.swt.graphics.Color)d2dValue; + } + + private Object getStaticFieldValue(String failureMessage, Class clazz, String fieldName){ + try { + Field constant = clazz.getField(fieldName); + assertNotNull(failureMessage, constant); + Object value = constant.get(null); + assertNotNull(failureMessage, value); + return value; + } catch (Exception e) { + fail(failureMessage + "\n" + e.toString()); + throw new InternalError("Unreachable"); } } @@ -188,18 +235,95 @@ return new RGB(color.getRed(), color.getGreen(), color.getBlue()); } - private void checkPreferredSize(Figure gmfFigure, IFigure figure) { + protected void checkPreferredSize(Figure gmfFigure, IFigure figure) { if (gmfFigure.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_PreferredSize())){ Dimension ePreferredSize = gmfFigure.getPreferredSize(); - assertEquals(new org.eclipse.draw2d.geometry.Dimension(ePreferredSize.getDx(), ePreferredSize.getDy()), figure.getPreferredSize()); + checkDimension(ePreferredSize, figure.getPreferredSize()); } } - private void checkSize(Figure gmfFigure, IFigure figure) { + protected void checkSize(Figure gmfFigure, IFigure figure) { if (gmfFigure.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_Size())){ Point eSize = gmfFigure.getSize(); assertEquals(new org.eclipse.draw2d.geometry.Dimension(eSize.getX(), eSize.getY()), figure.getSize()); } } + + protected void checkMaximumSize(Figure gmfFigure, IFigure figure) { + if (gmfFigure.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_MaximumSize())){ + Dimension eSize = gmfFigure.getMaximumSize(); + checkDimension(eSize, figure.getMaximumSize()); + } + } + + protected void checkMinimumSize(Figure gmfFigure, IFigure figure) { + if (gmfFigure.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_MinimumSize())){ + Dimension eSize = gmfFigure.getMinimumSize(); + checkDimension(eSize, figure.getMinimumSize()); + } + } + + + protected void checkBorder(Figure gmfFigure, IFigure figure) { + if (gmfFigure.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_Border())){ + Border eBorder = gmfFigure.getBorder(); + checkBorder(eBorder, figure.getBorder(), figure); + } + } + + protected final void checkBorder(Border eBorder, org.eclipse.draw2d.Border d2dBorder, IFigure mainD2DFigure){ + assertNotNull(eBorder); + assertNotNull(d2dBorder); + if (eBorder instanceof LineBorder){ + checkLineBorder((LineBorder)eBorder, d2dBorder); + } else if (eBorder instanceof CompoundBorder){ + checkCompoundBorder((CompoundBorder)eBorder, d2dBorder, mainD2DFigure); + } else if (eBorder instanceof MarginBorder){ + checkMarginBorder((MarginBorder)eBorder, d2dBorder, mainD2DFigure); + } + } + + protected final void checkMarginBorder(MarginBorder eBorder, org.eclipse.draw2d.Border d2dBorder, IFigure mainD2DFigure) { + assertTrue(d2dBorder instanceof org.eclipse.draw2d.MarginBorder); + org.eclipse.draw2d.MarginBorder actual = (org.eclipse.draw2d.MarginBorder)d2dBorder; + if (eBorder.eIsSet(GMFGraphPackage.eINSTANCE.getMarginBorder_Insets())){ + Insets eInsets = eBorder.getInsets(); + checkInsets(eInsets, actual.getInsets(mainD2DFigure)); + } + } + + protected final void checkCompoundBorder(CompoundBorder eBorder, org.eclipse.draw2d.Border d2dBorder, IFigure mainD2DFigure){ + assertTrue(d2dBorder instanceof org.eclipse.draw2d.CompoundBorder); + org.eclipse.draw2d.CompoundBorder actual = (org.eclipse.draw2d.CompoundBorder)d2dBorder; + if (eBorder.eIsSet(GMFGraphPackage.eINSTANCE.getCompoundBorder_Inner())){ + checkBorder(eBorder.getInner(), actual.getInnerBorder(), mainD2DFigure); + } + if (eBorder.eIsSet(GMFGraphPackage.eINSTANCE.getCompoundBorder_Outer())){ + checkBorder(eBorder.getOuter(), actual.getOuterBorder(), mainD2DFigure); + } + } + + protected final void checkLineBorder(LineBorder eBorder, org.eclipse.draw2d.Border d2dBorder){ + assertTrue(d2dBorder instanceof org.eclipse.draw2d.LineBorder); + org.eclipse.draw2d.LineBorder actual = (org.eclipse.draw2d.LineBorder)d2dBorder; + //intentionally always checked, there is a default value mathcing default value in d2d + assertEquals(eBorder.getWidth(), actual.getWidth()); + + if (eBorder.eIsSet(GMFGraphPackage.eINSTANCE.getLineBorder_Color())){ + checkColor(eBorder.getColor(), actual.getColor()); + } + } + + protected void checkInsets(Figure gmfFigure, IFigure figure) { + if (gmfFigure.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_Insets())){ + checkInsets(gmfFigure.getInsets(), figure.getInsets()); + } + } + + protected final void checkInsets(Insets eInsets, org.eclipse.draw2d.geometry.Insets d2dInsets){ + assertNotNull(d2dInsets); + assertNotNull(eInsets); + assertEquals(new org.eclipse.draw2d.geometry.Insets(eInsets.getTop(), eInsets.getLeft(), eInsets.getBottom(), eInsets.getRight()), d2dInsets); + } } Index: src/org/eclipse/gmf/tests/AllTests.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/AllTests.java,v retrieving revision 1.35 diff -u -r1.35 AllTests.java --- src/org/eclipse/gmf/tests/AllTests.java 30 Mar 2006 13:51:00 -0000 1.35 +++ src/org/eclipse/gmf/tests/AllTests.java 31 Mar 2006 14:57:30 -0000 @@ -29,6 +29,7 @@ import org.eclipse.gmf.tests.gen.HandcodedImplTest; import org.eclipse.gmf.tests.gen.MapModeStrategyTest; import org.eclipse.gmf.tests.gen.RTFigureTest; +import org.eclipse.gmf.tests.gen.ShapePropertiesTest; import org.eclipse.gmf.tests.gen.StandaloneMapModeTest; import org.eclipse.gmf.tests.gen.ToolDefHandocodedImplTest; import org.eclipse.gmf.tests.gen.ViewmapProducersTest; @@ -62,6 +63,7 @@ suite.addTestSuite(HistoryTest.class); suite.addTestSuite(FigureCodegenTest.class); + suite.addTestSuite(ShapePropertiesTest.class); suite.addTestSuite(FigureLayoutTest.class); suite.addTestSuite(StandaloneMapModeTest.class); suite.addTestSuite(RTFigureTest.class); Index: src/org/eclipse/gmf/tests/gen/ShapePropertiesTest.java =================================================================== RCS file: src/org/eclipse/gmf/tests/gen/ShapePropertiesTest.java diff -N src/org/eclipse/gmf/tests/gen/ShapePropertiesTest.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/gmf/tests/gen/ShapePropertiesTest.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,188 @@ +/* + * Copyright (c) 2006 Borland Software Corporation + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Michael Golubev (Borland) - initial API and implementation + */ + +package org.eclipse.gmf.tests.gen; + +import java.util.Iterator; + +import org.eclipse.gmf.gmfgraph.Color; +import org.eclipse.gmf.gmfgraph.ColorConstants; +import org.eclipse.gmf.gmfgraph.CompoundBorder; +import org.eclipse.gmf.gmfgraph.ConstantColor; +import org.eclipse.gmf.gmfgraph.Dimension; +import org.eclipse.gmf.gmfgraph.GMFGraphFactory; +import org.eclipse.gmf.gmfgraph.Insets; +import org.eclipse.gmf.gmfgraph.LineBorder; +import org.eclipse.gmf.gmfgraph.LineKind; +import org.eclipse.gmf.gmfgraph.MarginBorder; +import org.eclipse.gmf.gmfgraph.Rectangle; +import org.eclipse.gmf.gmfgraph.RoundedRectangle; +import org.eclipse.gmf.gmfgraph.Shape; + +public class ShapePropertiesTest extends FigureCodegenTestBase { + public ShapePropertiesTest(String name) { + super(name); + } + + public void testShapeLineStyle() { + Rectangle container = GMFGraphFactory.eINSTANCE.createRectangle(); + container.setName("Container"); + for (Iterator kinds = LineKind.VALUES.iterator(); kinds.hasNext(); ) { + LineKind next = (LineKind) kinds.next(); + Shape shape = GMFGraphFactory.eINSTANCE.createEllipse(); + shape.setName("Ellipse_" + next.getLiteral()); + shape.setLineKind(next); + container.getChildren().add(shape); + } + performTests(container); + } + + public void testShapeLineWidth() { + Shape shape = GMFGraphFactory.eINSTANCE.createRoundedRectangle(); + shape.setLineWidth(23); + shape.setName("Bold"); + performTests(shape); + } + + public void testShapeInsets() { + Rectangle withInsets = GMFGraphFactory.eINSTANCE.createRectangle(); + withInsets.setName("WithInsets"); + Insets insets = GMFGraphFactory.eINSTANCE.createInsets(); + insets.setBottom(23); + insets.setTop(34); + insets.setRight(45); + insets.setLeft(56); + withInsets.setInsets(insets); + + performTests(withInsets); + } + + public void testLineBorder() { + Rectangle container = GMFGraphFactory.eINSTANCE.createRectangle(); + container.setName("Root"); + + Rectangle colorAndWidth = GMFGraphFactory.eINSTANCE.createRectangle(); + colorAndWidth.setName("ColorAndWidth"); + LineBorder colorAndWidthBorder = GMFGraphFactory.eINSTANCE.createLineBorder(); + colorAndWidthBorder.setColor(createConstantColor(ColorConstants.CYAN_LITERAL)); + colorAndWidthBorder.setWidth(23); + colorAndWidth.setBorder(colorAndWidthBorder); + + Rectangle onlyColor = GMFGraphFactory.eINSTANCE.createRectangle(); + onlyColor.setName("OnlyColor"); + LineBorder onlyColorBorder = GMFGraphFactory.eINSTANCE.createLineBorder(); + onlyColorBorder.setColor(createConstantColor(ColorConstants.CYAN_LITERAL)); + onlyColor.setBorder(onlyColorBorder); + + Rectangle onlyWidth = GMFGraphFactory.eINSTANCE.createRectangle(); + onlyWidth.setName("OnlyWidth"); + LineBorder onlyWidthBorder = GMFGraphFactory.eINSTANCE.createLineBorder(); + onlyWidthBorder.setWidth(34); + onlyWidth.setBorder(onlyWidthBorder); + + Rectangle empty = GMFGraphFactory.eINSTANCE.createRectangle(); + empty.setName("Empty"); + LineBorder emptyBorder = GMFGraphFactory.eINSTANCE.createLineBorder(); + empty.setBorder(emptyBorder); + + container.getChildren().add(colorAndWidth); + container.getChildren().add(onlyColor); + container.getChildren().add(onlyWidth); + container.getChildren().add(empty); + + performTests(container); + } + + public void testCompoundBorder(){ + LineBorder outerOuter = GMFGraphFactory.eINSTANCE.createLineBorder(); + outerOuter.setColor(createConstantColor(ColorConstants.BLUE_LITERAL)); + outerOuter.setWidth(22); + + MarginBorder outerInner = GMFGraphFactory.eINSTANCE.createMarginBorder(); + outerInner.setInsets(GMFGraphFactory.eINSTANCE.createInsets()); + outerInner.getInsets().setBottom(23); + outerInner.getInsets().setTop(34); + //sic! outerInner.getInsets().setRight(45); + //sic! outerInner.getInsets().setLeft(56); + + CompoundBorder outer = GMFGraphFactory.eINSTANCE.createCompoundBorder(); + outer.setOuter(outerOuter); + outer.setInner(outerInner); + + CompoundBorder innerEmpty = GMFGraphFactory.eINSTANCE.createCompoundBorder(); + //sic! + innerEmpty.setInner(null); + innerEmpty.setOuter(null); + + CompoundBorder result = GMFGraphFactory.eINSTANCE.createCompoundBorder(); + result.setOuter(outer); + result.setInner(innerEmpty); + + Rectangle tester = GMFGraphFactory.eINSTANCE.createRectangle(); + tester.setBorder(result); + tester.setName("Tester"); + + performTests(tester); + } + + public void testMarginBorder(){ + MarginBorder border = GMFGraphFactory.eINSTANCE.createMarginBorder(); + border.setInsets(GMFGraphFactory.eINSTANCE.createInsets()); + border.getInsets().setBottom(23); + border.getInsets().setTop(34); + border.getInsets().setRight(45); + border.getInsets().setLeft(56); + + Shape marginTester = GMFGraphFactory.eINSTANCE.createEllipse(); + marginTester.setBorder(border); + marginTester.setName("MarginTester"); + + performTests(marginTester); + } + + public void testConstantColors(){ + Rectangle rainbow = GMFGraphFactory.eINSTANCE.createRectangle(); + rainbow.setName("Rainbow"); + for (Iterator colors = ColorConstants.VALUES.iterator(); colors.hasNext();){ + ColorConstants next = (ColorConstants)colors.next(); + Rectangle nextColored = GMFGraphFactory.eINSTANCE.createRectangle(); + nextColored.setName(next.getLiteral()); + nextColored.setBackgroundColor(createConstantColor(next)); + rainbow.getChildren().add(nextColored); + } + performTests(rainbow); + } + + public void testMaxAndMinSize(){ + RoundedRectangle withMinAndMaxSize = GMFGraphFactory.eINSTANCE.createRoundedRectangle(); + withMinAndMaxSize.setName("WithMinAndMaxSize"); + withMinAndMaxSize.setMaximumSize(createDimension(1000, 2000)); + withMinAndMaxSize.setMinimumSize(createDimension(234, 123)); + performTests(withMinAndMaxSize); + } + + private Dimension createDimension(int x, int y){ + Dimension result = GMFGraphFactory.eINSTANCE.createDimension(); + result.setDx(x); + result.setDy(y); + return result; + } + + private Color createConstantColor(ColorConstants constant) { + ConstantColor result = GMFGraphFactory.eINSTANCE.createConstantColor(); + result.setValue(constant); + return result; + } + + + +} #P org.eclipse.gmf.graphdef Index: src/org/eclipse/gmf/gmfgraph/LineBorder.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/src/org/eclipse/gmf/gmfgraph/LineBorder.java,v retrieving revision 1.1 diff -u -r1.1 LineBorder.java --- src/org/eclipse/gmf/gmfgraph/LineBorder.java 5 Jan 2006 17:33:07 -0000 1.1 +++ src/org/eclipse/gmf/gmfgraph/LineBorder.java 31 Mar 2006 14:57:31 -0000 @@ -53,6 +53,7 @@ /** * Returns the value of the 'Width' attribute. + * The default value is "1". * *

* If the meaning of the 'Width' attribute isn't clear, @@ -62,7 +63,7 @@ * @return the value of the 'Width' attribute. * @see #setWidth(int) * @see org.eclipse.gmf.gmfgraph.GMFGraphPackage#getLineBorder_Width() - * @model + * @model default="1" * @generated */ int getWidth(); Index: models/gmfgraph.ecore =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef/models/gmfgraph.ecore,v retrieving revision 1.13 diff -u -r1.13 gmfgraph.ecore --- models/gmfgraph.ecore 7 Mar 2006 18:39:24 -0000 1.13 +++ models/gmfgraph.ecore 31 Mar 2006 14:57:31 -0000 @@ -281,7 +281,8 @@ - + Width}' attribute. #P org.eclipse.gmf.graphdef.codegen Index: templates/attr/Figure.javajet =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/templates/attr/Figure.javajet,v retrieving revision 1.4 diff -u -r1.4 Figure.javajet --- templates/attr/Figure.javajet 7 Mar 2006 19:04:35 -0000 1.4 +++ templates/attr/Figure.javajet 31 Mar 2006 14:57:33 -0000 @@ -20,8 +20,20 @@ <%} if (figureInstance.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_Size())) { Point p = figureInstance.getSize();%> <%=figureVarName%>.setSize(<%=dispatcher.DPtoLP(p.getX())%>, <%=dispatcher.DPtoLP(p.getY())%>); +<%} if (figureInstance.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_MaximumSize())) { + Dimension d = figureInstance.getMaximumSize();%> + <%=figureVarName%>.setMaximumSize(new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")%>(<%=dispatcher.DPtoLP(d.getDx())%>, <%=dispatcher.DPtoLP(d.getDy())%>)); +<%} if (figureInstance.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_MinimumSize())) { + Dimension d = figureInstance.getMinimumSize();%> + <%=figureVarName%>.setMinimumSize(new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")%>(<%=dispatcher.DPtoLP(d.getDx())%>, <%=dispatcher.DPtoLP(d.getDy())%>)); <%} if (figureInstance.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_Font())) { // XXX possible CCE when fonts other than Basic added to model BasicFont font = (BasicFont) figureInstance.getFont();%> <%=figureVarName%>.setFont(new <%=importManager.getImportedName("org.eclipse.swt.graphics.Font")%>(<%=importManager.getImportedName("org.eclipse.swt.widgets.Display")%>.getCurrent(), "<%=font.getFaceName()%>", <%=font.getHeight()%>, <%=importManager.getImportedName("org.eclipse.swt.SWT")%>.<%=font.getStyle().getLiteral()%>)); +<%} if (figureInstance.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_Insets())) { + Insets insets = figureInstance.getInsets();%> + <%=figureVarName%>.setBorder(new <%=importManager.getImportedName("org.eclipse.draw2d.MarginBorder")%>(<%=insets.getTop()%>, <%=insets.getLeft()%>, <%=insets.getBottom()%>, <%=insets.getRight()%>)); +<%} if (figureInstance.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_Border())) { + Border border = figureInstance.getBorder();%> + <%=figureVarName%>.setBorder(<%=dispatcher.dispatch(border, new Object[] {border, dispatcher})%>); <%}%> \ No newline at end of file Index: src/org/eclipse/gmf/graphdef/codegen/templates/FigureAttrGenerator.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/src/org/eclipse/gmf/graphdef/codegen/templates/FigureAttrGenerator.java,v retrieving revision 1.4 diff -u -r1.4 FigureAttrGenerator.java --- src/org/eclipse/gmf/graphdef/codegen/templates/FigureAttrGenerator.java 7 Mar 2006 19:04:35 -0000 1.4 +++ src/org/eclipse/gmf/graphdef/codegen/templates/FigureAttrGenerator.java 31 Mar 2006 14:57:33 -0000 @@ -43,13 +43,33 @@ protected final String TEXT_25 = ", "; protected final String TEXT_26 = ");"; protected final String TEXT_27 = NL + "\t\t"; - protected final String TEXT_28 = ".setFont(new "; + protected final String TEXT_28 = ".setMaximumSize(new "; protected final String TEXT_29 = "("; - protected final String TEXT_30 = ".getCurrent(), \""; - protected final String TEXT_31 = "\", "; - protected final String TEXT_32 = ", "; - protected final String TEXT_33 = "."; - protected final String TEXT_34 = "));"; + protected final String TEXT_30 = ", "; + protected final String TEXT_31 = "));"; + protected final String TEXT_32 = NL + "\t\t"; + protected final String TEXT_33 = ".setMinimumSize(new "; + protected final String TEXT_34 = "("; + protected final String TEXT_35 = ", "; + protected final String TEXT_36 = "));"; + protected final String TEXT_37 = NL + "\t\t"; + protected final String TEXT_38 = ".setFont(new "; + protected final String TEXT_39 = "("; + protected final String TEXT_40 = ".getCurrent(), \""; + protected final String TEXT_41 = "\", "; + protected final String TEXT_42 = ", "; + protected final String TEXT_43 = "."; + protected final String TEXT_44 = "));"; + protected final String TEXT_45 = NL + "\t\t"; + protected final String TEXT_46 = ".setBorder(new "; + protected final String TEXT_47 = "("; + protected final String TEXT_48 = ", "; + protected final String TEXT_49 = ", "; + protected final String TEXT_50 = ", "; + protected final String TEXT_51 = "));"; + protected final String TEXT_52 = NL + "\t\t"; + protected final String TEXT_53 = ".setBorder("; + protected final String TEXT_54 = ");"; public String generate(Object argument) { @@ -122,24 +142,68 @@ stringBuffer.append(TEXT_25); stringBuffer.append(dispatcher.DPtoLP(p.getY())); stringBuffer.append(TEXT_26); + } if (figureInstance.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_MaximumSize())) { + Dimension d = figureInstance.getMaximumSize(); + stringBuffer.append(TEXT_27); + stringBuffer.append(figureVarName); + stringBuffer.append(TEXT_28); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")); + stringBuffer.append(TEXT_29); + stringBuffer.append(dispatcher.DPtoLP(d.getDx())); + stringBuffer.append(TEXT_30); + stringBuffer.append(dispatcher.DPtoLP(d.getDy())); + stringBuffer.append(TEXT_31); + } if (figureInstance.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_MinimumSize())) { + Dimension d = figureInstance.getMinimumSize(); + stringBuffer.append(TEXT_32); + stringBuffer.append(figureVarName); + stringBuffer.append(TEXT_33); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")); + stringBuffer.append(TEXT_34); + stringBuffer.append(dispatcher.DPtoLP(d.getDx())); + stringBuffer.append(TEXT_35); + stringBuffer.append(dispatcher.DPtoLP(d.getDy())); + stringBuffer.append(TEXT_36); } if (figureInstance.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_Font())) { // XXX possible CCE when fonts other than Basic added to model BasicFont font = (BasicFont) figureInstance.getFont(); - stringBuffer.append(TEXT_27); + stringBuffer.append(TEXT_37); stringBuffer.append(figureVarName); - stringBuffer.append(TEXT_28); + stringBuffer.append(TEXT_38); stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); - stringBuffer.append(TEXT_29); + stringBuffer.append(TEXT_39); stringBuffer.append(importManager.getImportedName("org.eclipse.swt.widgets.Display")); - stringBuffer.append(TEXT_30); + stringBuffer.append(TEXT_40); stringBuffer.append(font.getFaceName()); - stringBuffer.append(TEXT_31); + stringBuffer.append(TEXT_41); stringBuffer.append(font.getHeight()); - stringBuffer.append(TEXT_32); + stringBuffer.append(TEXT_42); stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); - stringBuffer.append(TEXT_33); + stringBuffer.append(TEXT_43); stringBuffer.append(font.getStyle().getLiteral()); - stringBuffer.append(TEXT_34); + stringBuffer.append(TEXT_44); + } if (figureInstance.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_Insets())) { + Insets insets = figureInstance.getInsets(); + stringBuffer.append(TEXT_45); + stringBuffer.append(figureVarName); + stringBuffer.append(TEXT_46); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.MarginBorder")); + stringBuffer.append(TEXT_47); + stringBuffer.append(insets.getTop()); + stringBuffer.append(TEXT_48); + stringBuffer.append(insets.getLeft()); + stringBuffer.append(TEXT_49); + stringBuffer.append(insets.getBottom()); + stringBuffer.append(TEXT_50); + stringBuffer.append(insets.getRight()); + stringBuffer.append(TEXT_51); + } if (figureInstance.eIsSet(GMFGraphPackage.eINSTANCE.getFigure_Border())) { + Border border = figureInstance.getBorder(); + stringBuffer.append(TEXT_52); + stringBuffer.append(figureVarName); + stringBuffer.append(TEXT_53); + stringBuffer.append(dispatcher.dispatch(border, new Object[] {border, dispatcher})); + stringBuffer.append(TEXT_54); } return stringBuffer.toString(); } Index: src/org/eclipse/gmf/graphdef/codegen/FigureGenerator.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.codegen/src/org/eclipse/gmf/graphdef/codegen/FigureGenerator.java,v retrieving revision 1.15 diff -u -r1.15 FigureGenerator.java --- src/org/eclipse/gmf/graphdef/codegen/FigureGenerator.java 29 Mar 2006 12:56:04 -0000 1.15 +++ src/org/eclipse/gmf/graphdef/codegen/FigureGenerator.java 31 Mar 2006 14:57:33 -0000 @@ -16,6 +16,7 @@ import org.eclipse.gmf.common.codegen.ImportAssistant; import org.eclipse.gmf.gmfgraph.BorderLayout; import org.eclipse.gmf.gmfgraph.BorderLayoutData; +import org.eclipse.gmf.gmfgraph.CompoundBorder; import org.eclipse.gmf.gmfgraph.CustomFigure; import org.eclipse.gmf.gmfgraph.CustomLayout; import org.eclipse.gmf.gmfgraph.CustomLayoutData; @@ -24,6 +25,8 @@ import org.eclipse.gmf.gmfgraph.GridLayout; import org.eclipse.gmf.gmfgraph.GridLayoutData; import org.eclipse.gmf.gmfgraph.Label; +import org.eclipse.gmf.gmfgraph.LineBorder; +import org.eclipse.gmf.gmfgraph.MarginBorder; import org.eclipse.gmf.gmfgraph.PolygonDecoration; import org.eclipse.gmf.gmfgraph.Polyline; import org.eclipse.gmf.gmfgraph.PolylineConnection; @@ -45,9 +48,12 @@ import org.eclipse.gmf.graphdef.codegen.templates.InitGridLayoutGenerator; import org.eclipse.gmf.graphdef.codegen.templates.InitXYLayoutDataGenerator; import org.eclipse.gmf.graphdef.codegen.templates.LabelAttrGenerator; +import org.eclipse.gmf.graphdef.codegen.templates.NewCompoundBorderExpressionGenerator; import org.eclipse.gmf.graphdef.codegen.templates.NewFigureGenerator; import org.eclipse.gmf.graphdef.codegen.templates.NewLayoutDataGenerator; import org.eclipse.gmf.graphdef.codegen.templates.NewLayoutGenerator; +import org.eclipse.gmf.graphdef.codegen.templates.NewLineBorderExpressionGenerator; +import org.eclipse.gmf.graphdef.codegen.templates.NewMarginBorderExpressionGenerator; import org.eclipse.gmf.graphdef.codegen.templates.PolygonDecorationAttrGenerator; import org.eclipse.gmf.graphdef.codegen.templates.PolylineAttrGenerator; import org.eclipse.gmf.graphdef.codegen.templates.PolylineDecorationAttrGenerator; @@ -160,6 +166,12 @@ tr.put(BorderLayoutData.class, "/layoutData/BorderLayoutData.javajet", InitBorderLayoutDataGenerator.class); tr.put(CustomLayoutData.class, "/layoutData/CustomLayoutData.javajet", InitCustomLayoutDataGenerator.class); tr.put(XYLayoutData.class, "/layoutData/XYLayoutData.javajet", InitXYLayoutDataGenerator.class); + + //Borders + tr.put(LineBorder.class, "/new/LineBorder.javajet", NewLineBorderExpressionGenerator.class); + tr.put(MarginBorder.class, "/new/MarginBorder.javajet", NewMarginBorderExpressionGenerator.class); + tr.put(CompoundBorder.class, "/new/CompoundBorder.javajet", NewCompoundBorderExpressionGenerator.class); + return tr; } Index: src/org/eclipse/gmf/graphdef/codegen/templates/NewCompoundBorderExpressionGenerator.java =================================================================== RCS file: src/org/eclipse/gmf/graphdef/codegen/templates/NewCompoundBorderExpressionGenerator.java diff -N src/org/eclipse/gmf/graphdef/codegen/templates/NewCompoundBorderExpressionGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/gmf/graphdef/codegen/templates/NewCompoundBorderExpressionGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,49 @@ +package org.eclipse.gmf.graphdef.codegen.templates; + +import org.eclipse.gmf.gmfgraph.*; +import org.eclipse.gmf.graphdef.codegen.*; +import org.eclipse.gmf.common.codegen.ImportAssistant; + +public class NewCompoundBorderExpressionGenerator +{ + protected static String nl; + public static synchronized NewCompoundBorderExpressionGenerator create(String lineSeparator) + { + nl = lineSeparator; + NewCompoundBorderExpressionGenerator result = new NewCompoundBorderExpressionGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = "\t"; + protected final String TEXT_2 = NL + "new "; + protected final String TEXT_3 = "(" + NL + "\t"; + protected final String TEXT_4 = ", " + NL + "\t"; + protected final String TEXT_5 = NL + ")"; + + public String generate(Object argument) + { + StringBuffer stringBuffer = new StringBuffer(); + +Object[] args = (Object[]) argument; +final CompoundBorder border = (CompoundBorder)args[0]; +final GraphDefDispatcher dispatcher = (GraphDefDispatcher)args[1]; +final ImportAssistant importManager = dispatcher.getImportManager(); + +//We want NEITHER insert any names into the scope NOR produce statement. We need expression instead. + + stringBuffer.append(TEXT_1); + Border outer = border.getOuter(); + Border inner = border.getInner(); + + stringBuffer.append(TEXT_2); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.CompoundBorder")); + stringBuffer.append(TEXT_3); + stringBuffer.append( (outer == null) ? "null" : dispatcher.dispatch(outer, new Object[]{outer, dispatcher})); + stringBuffer.append(TEXT_4); + stringBuffer.append( (inner == null) ? "null" : dispatcher.dispatch(inner, new Object[]{inner, dispatcher})); + stringBuffer.append(TEXT_5); + return stringBuffer.toString(); + } +} Index: templates/new/LineBorder.javajet =================================================================== RCS file: templates/new/LineBorder.javajet diff -N templates/new/LineBorder.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/new/LineBorder.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,34 @@ +<%@ jet package="org.eclipse.gmf.graphdef.codegen.templates" class="NewLineBorderExpressionGenerator" + imports="org.eclipse.gmf.gmfgraph.* org.eclipse.gmf.graphdef.codegen.* org.eclipse.gmf.common.codegen.ImportAssistant"%> +<% +Object[] args = (Object[]) argument; +final LineBorder border = (LineBorder)args[0]; +final GraphDefDispatcher dispatcher = (GraphDefDispatcher)args[1]; +final ImportAssistant importManager = dispatcher.getImportManager(); + +//We do not want to insert any names into the scope. +//We want to provide EXPRESSION instead of statement +%> +<% + String borderClazz = importManager.getImportedName("org.eclipse.draw2d.LineBorder"); + boolean hasColor = border.eIsSet(GMFGraphPackage.eINSTANCE.getLineBorder_Color()); + boolean hasWidth = border.eIsSet(GMFGraphPackage.eINSTANCE.getLineBorder_Width()); + Color colorVal = (hasColor) ? border.getColor() : null; + if (hasColor && hasWidth){ +%> +new <%=borderClazz%>(<%@ include file="../Color.jetinc"%>, <%=border.getWidth()%>) +<% + } else if (hasColor && !hasWidth) { +%> +new <%=borderClazz%>(<%@ include file="../Color.jetinc"%>) +<% + } else if (!hasColor && hasWidth){ +%> +new <%=borderClazz%>(<%=border.getWidth()%>) +<% + } else { +%> +new <%=borderClazz%>() +<% + } +%> Index: src/org/eclipse/gmf/graphdef/codegen/templates/NewLineBorderExpressionGenerator.java =================================================================== RCS file: src/org/eclipse/gmf/graphdef/codegen/templates/NewLineBorderExpressionGenerator.java diff -N src/org/eclipse/gmf/graphdef/codegen/templates/NewLineBorderExpressionGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/gmf/graphdef/codegen/templates/NewLineBorderExpressionGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,125 @@ +package org.eclipse.gmf.graphdef.codegen.templates; + +import org.eclipse.gmf.gmfgraph.*; +import org.eclipse.gmf.graphdef.codegen.*; +import org.eclipse.gmf.common.codegen.ImportAssistant; + +public class NewLineBorderExpressionGenerator +{ + protected static String nl; + public static synchronized NewLineBorderExpressionGenerator create(String lineSeparator) + { + nl = lineSeparator; + NewLineBorderExpressionGenerator result = new NewLineBorderExpressionGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = "new "; + protected final String TEXT_2 = "("; + protected final String TEXT_3 = "new "; + protected final String TEXT_4 = "(null, "; + protected final String TEXT_5 = ", "; + protected final String TEXT_6 = ", "; + protected final String TEXT_7 = ")"; + protected final String TEXT_8 = "."; + protected final String TEXT_9 = ", "; + protected final String TEXT_10 = ")"; + protected final String TEXT_11 = NL + "new "; + protected final String TEXT_12 = "("; + protected final String TEXT_13 = "new "; + protected final String TEXT_14 = "(null, "; + protected final String TEXT_15 = ", "; + protected final String TEXT_16 = ", "; + protected final String TEXT_17 = ")"; + protected final String TEXT_18 = "."; + protected final String TEXT_19 = ")"; + protected final String TEXT_20 = NL + "new "; + protected final String TEXT_21 = "("; + protected final String TEXT_22 = ")"; + protected final String TEXT_23 = NL + "new "; + protected final String TEXT_24 = "()"; + + public String generate(Object argument) + { + StringBuffer stringBuffer = new StringBuffer(); + +Object[] args = (Object[]) argument; +final LineBorder border = (LineBorder)args[0]; +final GraphDefDispatcher dispatcher = (GraphDefDispatcher)args[1]; +final ImportAssistant importManager = dispatcher.getImportManager(); + +//We do not want to insert any names into the scope. +//We want to provide EXPRESSION instead of statement + + + String borderClazz = importManager.getImportedName("org.eclipse.draw2d.LineBorder"); + boolean hasColor = border.eIsSet(GMFGraphPackage.eINSTANCE.getLineBorder_Color()); + boolean hasWidth = border.eIsSet(GMFGraphPackage.eINSTANCE.getLineBorder_Width()); + Color colorVal = (hasColor) ? border.getColor() : null; + if (hasColor && hasWidth){ + + stringBuffer.append(TEXT_1); + stringBuffer.append(borderClazz); + stringBuffer.append(TEXT_2); + if (colorVal instanceof RGBColor) { + stringBuffer.append(TEXT_3); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_4); + stringBuffer.append(((RGBColor) colorVal).getRed()); + stringBuffer.append(TEXT_5); + stringBuffer.append(((RGBColor) colorVal).getGreen()); + stringBuffer.append(TEXT_6); + stringBuffer.append(((RGBColor) colorVal).getBlue()); + stringBuffer.append(TEXT_7); + } else if (colorVal instanceof ConstantColor) { + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ColorConstants")); + stringBuffer.append(TEXT_8); + stringBuffer.append(((ConstantColor) colorVal).getValue().getLiteral()); + } + stringBuffer.append(TEXT_9); + stringBuffer.append(border.getWidth()); + stringBuffer.append(TEXT_10); + + } else if (hasColor && !hasWidth) { + + stringBuffer.append(TEXT_11); + stringBuffer.append(borderClazz); + stringBuffer.append(TEXT_12); + if (colorVal instanceof RGBColor) { + stringBuffer.append(TEXT_13); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_14); + stringBuffer.append(((RGBColor) colorVal).getRed()); + stringBuffer.append(TEXT_15); + stringBuffer.append(((RGBColor) colorVal).getGreen()); + stringBuffer.append(TEXT_16); + stringBuffer.append(((RGBColor) colorVal).getBlue()); + stringBuffer.append(TEXT_17); + } else if (colorVal instanceof ConstantColor) { + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ColorConstants")); + stringBuffer.append(TEXT_18); + stringBuffer.append(((ConstantColor) colorVal).getValue().getLiteral()); + } + stringBuffer.append(TEXT_19); + + } else if (!hasColor && hasWidth){ + + stringBuffer.append(TEXT_20); + stringBuffer.append(borderClazz); + stringBuffer.append(TEXT_21); + stringBuffer.append(border.getWidth()); + stringBuffer.append(TEXT_22); + + } else { + + stringBuffer.append(TEXT_23); + stringBuffer.append(borderClazz); + stringBuffer.append(TEXT_24); + + } + + return stringBuffer.toString(); + } +} Index: templates/new/MarginBorder.javajet =================================================================== RCS file: templates/new/MarginBorder.javajet diff -N templates/new/MarginBorder.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/new/MarginBorder.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,24 @@ +<%@ jet package="org.eclipse.gmf.graphdef.codegen.templates" class="NewMarginBorderExpressionGenerator" + imports="org.eclipse.gmf.gmfgraph.* org.eclipse.gmf.graphdef.codegen.* org.eclipse.gmf.common.codegen.ImportAssistant"%> +<% +Object[] args = (Object[]) argument; +final MarginBorder border = (MarginBorder)args[0]; +final GraphDefDispatcher dispatcher = (GraphDefDispatcher)args[1]; +final ImportAssistant importManager = dispatcher.getImportManager(); + +//Produces EXPRESSION instead of statement +%> +<% + int top = 0; + int left = 0; + int bottom = 0; + int right = 0; + if (border.eIsSet(GMFGraphPackage.eINSTANCE.getMarginBorder_Insets())){ + Insets insets = border.getInsets(); + top = insets.getTop(); + left = insets.getLeft(); + bottom = insets.getBottom(); + right = insets.getRight(); + } +%> +new <%=importManager.getImportedName("org.eclipse.draw2d.MarginBorder")%>(<%=top%>, <%=left%>, <%=bottom%>, <%=right%>) Index: templates/new/CompoundBorder.javajet =================================================================== RCS file: templates/new/CompoundBorder.javajet diff -N templates/new/CompoundBorder.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/new/CompoundBorder.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,17 @@ +<%@ jet package="org.eclipse.gmf.graphdef.codegen.templates" class="NewCompoundBorderExpressionGenerator" + imports="org.eclipse.gmf.gmfgraph.* org.eclipse.gmf.graphdef.codegen.* org.eclipse.gmf.common.codegen.ImportAssistant"%> +<% +Object[] args = (Object[]) argument; +final CompoundBorder border = (CompoundBorder)args[0]; +final GraphDefDispatcher dispatcher = (GraphDefDispatcher)args[1]; +final ImportAssistant importManager = dispatcher.getImportManager(); + +//We want NEITHER insert any names into the scope NOR produce statement. We need expression instead. +%> + <% Border outer = border.getOuter(); + Border inner = border.getInner(); + %> +new <%=importManager.getImportedName("org.eclipse.draw2d.CompoundBorder")%>( + <%= (outer == null) ? "null" : dispatcher.dispatch(outer, new Object[]{outer, dispatcher})%>, + <%= (inner == null) ? "null" : dispatcher.dispatch(inner, new Object[]{inner, dispatcher})%> +) Index: src/org/eclipse/gmf/graphdef/codegen/templates/NewMarginBorderExpressionGenerator.java =================================================================== RCS file: src/org/eclipse/gmf/graphdef/codegen/templates/NewMarginBorderExpressionGenerator.java diff -N src/org/eclipse/gmf/graphdef/codegen/templates/NewMarginBorderExpressionGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/gmf/graphdef/codegen/templates/NewMarginBorderExpressionGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,63 @@ +package org.eclipse.gmf.graphdef.codegen.templates; + +import org.eclipse.gmf.gmfgraph.*; +import org.eclipse.gmf.graphdef.codegen.*; +import org.eclipse.gmf.common.codegen.ImportAssistant; + +public class NewMarginBorderExpressionGenerator +{ + protected static String nl; + public static synchronized NewMarginBorderExpressionGenerator create(String lineSeparator) + { + nl = lineSeparator; + NewMarginBorderExpressionGenerator result = new NewMarginBorderExpressionGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = "\t" + NL + "new "; + protected final String TEXT_2 = "("; + protected final String TEXT_3 = ", "; + protected final String TEXT_4 = ", "; + protected final String TEXT_5 = ", "; + protected final String TEXT_6 = ")"; + + public String generate(Object argument) + { + StringBuffer stringBuffer = new StringBuffer(); + +Object[] args = (Object[]) argument; +final MarginBorder border = (MarginBorder)args[0]; +final GraphDefDispatcher dispatcher = (GraphDefDispatcher)args[1]; +final ImportAssistant importManager = dispatcher.getImportManager(); + +//Produces EXPRESSION instead of statement + + + int top = 0; + int left = 0; + int bottom = 0; + int right = 0; + if (border.eIsSet(GMFGraphPackage.eINSTANCE.getMarginBorder_Insets())){ + Insets insets = border.getInsets(); + top = insets.getTop(); + left = insets.getLeft(); + bottom = insets.getBottom(); + right = insets.getRight(); + } + + stringBuffer.append(TEXT_1); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.MarginBorder")); + stringBuffer.append(TEXT_2); + stringBuffer.append(top); + stringBuffer.append(TEXT_3); + stringBuffer.append(left); + stringBuffer.append(TEXT_4); + stringBuffer.append(bottom); + stringBuffer.append(TEXT_5); + stringBuffer.append(right); + stringBuffer.append(TEXT_6); + return stringBuffer.toString(); + } +} #P org.eclipse.gmf.borland Index: models/gmfgraph.emf =================================================================== RCS file: /cvs/tools/org.eclipse.gmf.borland/models/gmfgraph.emf,v retrieving revision 1.14 diff -u -r1.14 gmfgraph.emf --- models/gmfgraph.emf 7 Mar 2006 18:43:06 -0000 1.14 +++ models/gmfgraph.emf 31 Mar 2006 15:02:15 -0000 @@ -273,7 +273,7 @@ class LineBorder extends Border { val Color color; - attr int width; + attr int width = 1; } class MarginBorder extends Border {