### Eclipse Workspace Patch 1.0 #P org.eclipse.gmf.graphdef.editor Index: templates/parts/setViewColor.javajet =================================================================== RCS file: templates/parts/setViewColor.javajet diff -N templates/parts/setViewColor.javajet --- templates/parts/setViewColor.javajet 14 Apr 2006 12:33:35 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,32 +0,0 @@ -if (modelElement.get<%=modelColorProperty%>Color() != null) { - final int rgbColor; - if (modelElement.get<%=modelColorProperty%>Color() instanceof RGBColor) { - <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%> modelColor = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%>) modelElement.get<%=modelColorProperty%>Color(); - rgbColor = (modelColor.getRed()& 0xFF) | ((modelColor.getGreen() & 0xFF) << 8) | ((modelColor.getBlue() & 0xFF) << 16); - } else { - <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.ConstantColor")%> modelColor = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.ConstantColor")%>) modelElement.get<%=modelColorProperty%>Color(); - switch (modelColor.getValue().getValue()) { -/* - case : { - rgbColor = org.eclipse.draw2d.ColorConstants..getRGB().hashCode(); - break; - } -*/ - default: - rgbColor = -1; - } - } - if (rgbColor != -1 && shapeStyle.get<%=viewColorProperty%>Color() != rgbColor) { - <%=importManager.getImportedName("org.eclipse.emf.workspace.AbstractEMFOperation")%> setColorOperation = new <%=importManager.getImportedName("org.eclipse.emf.workspace.AbstractEMFOperation")%>(getEditingDomain(), "Synchronizing view <%=modelColorProperty%> color with the model", <%=importManager.getImportedName("java.util.Collections")%>.singletonMap(<%=importManager.getImportedName("org.eclipse.emf.transaction.Transaction")%>.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$ - protected <%=importManager.getImportedName("org.eclipse.core.runtime.IStatus")%> doExecute(<%=importManager.getImportedName("org.eclipse.core.runtime.IProgressMonitor")%> monitor, <%=importManager.getImportedName("org.eclipse.core.runtime.IAdaptable")%> info) throws <%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> { - shapeStyle.set<%=viewColorProperty%>Color(rgbColor); - return <%=importManager.getImportedName("org.eclipse.core.runtime.Status")%>.OK_STATUS; - } - }; - try { - setColorOperation.execute(new <%=importManager.getImportedName("org.eclipse.core.runtime.NullProgressMonitor")%>(), null); - } catch (<%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> e) { - <%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError("Unable to synchronize view <%=modelColorProperty%> background color with the model", e); //$NON-NLS-1$ - } - } -} \ No newline at end of file Index: templates/parts/NodeEditPart.javajet =================================================================== RCS file: templates/parts/NodeEditPart.javajet diff -N templates/parts/NodeEditPart.javajet --- templates/parts/NodeEditPart.javajet 26 Jun 2006 18:38:20 -0000 1.9 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,1021 +0,0 @@ -<%@ jet package="org.eclipse.gmf.codegen.templates.parts" class="NodeEditPartGenerator" - imports="java.util.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*" - skeleton="../common.skeleton"%> -<% -final GenNode genNode = (GenNode) ((Object[]) argument)[0]; -final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; -GenDiagram genDiagram = genNode.getDiagram(); -boolean isXYLayout = ViewmapLayoutType.XY_LAYOUT_LITERAL.equals(genNode.getLayoutType()); - -class NodeEditPartHelper { - private final List myInnerLabels = new LinkedList(); - private final List myExternalLabels = new LinkedList(); - private final List myPinnedCompartments = new LinkedList(); - private final List myFloatingCompartments = new LinkedList(); - private GenNodeLabel myPrimaryLabel; - private boolean myHasChildrenInListCompartments = false; - - public NodeEditPartHelper(GenNode genNode){ - myPrimaryLabel = null; - - for (Iterator labels = genNode.getLabels().iterator(); labels.hasNext();) { - GenNodeLabel next = (GenNodeLabel) labels.next(); - if (myPrimaryLabel == null){ - myPrimaryLabel = next; - } - if (next instanceof GenExternalNodeLabel) { - myExternalLabels.add(next); - } else if (next.getViewmap() instanceof ParentAssignedViewmap) { - myInnerLabels.add(next); - } - } - - for (Iterator compartments = genNode.getCompartments().iterator(); compartments.hasNext();){ - GenCompartment next = (GenCompartment) compartments.next(); - if (next.getViewmap() instanceof ParentAssignedViewmap){ - myPinnedCompartments.add(next); - } else { - myFloatingCompartments.add(next); - } - - myHasChildrenInListCompartments |= next.isListLayout() && !next.getChildNodes().isEmpty(); - } - } - - public boolean hasChildrenInListCompartments(){ - return myHasChildrenInListCompartments; - } - - public boolean hasInnerFixedLabels(){ - return !myInnerLabels.isEmpty(); - } - - public boolean hasPinnedCompartments(){ - return !myPinnedCompartments.isEmpty(); - } - - public boolean hasFixedChildren(){ - return hasInnerFixedLabels() || hasPinnedCompartments(); - } - - public boolean hasExternalLabels(){ - return !myExternalLabels.isEmpty(); - } - - public GenNodeLabel getPrimaryLabel(){ - return myPrimaryLabel; - } - - public Iterator getInnerFixedLabels(){ - return myInnerLabels.iterator(); - } - - public Iterator getExternalLabels(){ - return myExternalLabels.iterator(); - } - - public Iterator getPinnedCompartments(){ - return myPinnedCompartments.iterator(); - } -} -final NodeEditPartHelper myHelper = new NodeEditPartHelper(genNode); -// [graphdef++] -GenClass metaclass = genNode.getModelFacet().getMetaClass(); -boolean generateSyncronizationCode = genNode.getViewmap() instanceof InnerClassViewmap && metaclass.getEcoreClass().getEAllSuperTypes().contains(metaclass.getEcoreClass().getEPackage().getEClassifier("FigureMarker")); -// [graphdef--] -%> -<%@ include file="../copyright4java.jetinc"%> -<%importManager.emitPackageStatement(stringBuffer);%> - -<% -if (genNode.getViewmap() instanceof InnerClassViewmap) { -importManager.registerInnerClass(((InnerClassViewmap) genNode.getViewmap()).getClassName()); -} -importManager.addImport("org.eclipse.draw2d.IFigure"); -importManager.addImport("org.eclipse.draw2d.StackLayout"); -importManager.addImport("org.eclipse.gef.EditPolicy"); -importManager.addImport("org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles"); -importManager.addImport("org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure"); -importManager.addImport("org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure"); -importManager.addImport("org.eclipse.gmf.runtime.notation.View"); -importManager.markImportLocation(stringBuffer); -%> - -/** - * @generated - */ -public class <%=genNode.getEditPartClassName()%> extends <%=/*[graphdef++]*/generateSyncronizationCode ? importManager.getImportedName(genDiagram.getEditPartsPackageName() + ".AbstractFigureEditPart") : importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart")/*[graphdef++]*/%> { -<%{ -GenCommonBase genCommonBase = genNode;%> -<%@ include file="visualID.jetinc"%> -<%}%> - - /** - * @generated - */ - protected IFigure contentPane; - -<% -// [graphdef++] -if (generateSyncronizationCode) { -%> - /** - * @generated - */ - private <%=((InnerClassViewmap) genNode.getViewmap()).getClassName()%> myFigure; - -// TODO: use myFigure? - /** - * @generated - */ - protected <%=importManager.getImportedName("org.eclipse.draw2d.Figure")%> myNodeFigure; - -<% -} -// [graphdef--] -%> - /** - * @generated - */ - protected IFigure primaryShape; - - /** - * @generated - */ - public <%=genNode.getEditPartClassName()%>(View view) { - super(view); - } -<% -// [graphdef++] -if (generateSyncronizationCode) { - String modelInterfaceName = importManager.getImportedName(metaclass.getQualifiedInterfaceName()); -%> - - /** - * @generated - */ - public void activate() { - if (isActive()){ - return; - } - View view = (View) getModel(); - if (view.getElement() == null) { - super.activate(); - return; - } - - final <%=modelInterfaceName%> modelElement = (<%=modelInterfaceName%>) view.getElement(); - -<% - for (Iterator genFeatures = metaclass.getAllGenFeatures().iterator(); genFeatures.hasNext();) { - GenFeature nextGenFeature = (GenFeature) genFeatures.next(); - if (skip(nextGenFeature)) { - continue; - } - String packageInterfaceName = metaclass.getGenPackage().getQualifiedPackageInterfaceName(); - if (false == nextGenFeature.getTypeGenClassifier() instanceof GenDataType) { -%> - final <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener")%> <%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener = new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener")%>() { - public void notifyChanged(Notification notification) { - <%=getProcessChangesCall("modelElement", nextGenFeature)%>; - } - }; -<%@ include file="addFeaturePropertyChangeListeners.jetinc"%> -<% }%> - addListenerFilter("<%=nextGenFeature.getFeatureAccessorName()%>_Listener", new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener")%>() { - public void notifyChanged(<%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> notification) { -<% if (false == nextGenFeature.getTypeGenClassifier() instanceof GenDataType) { - if (nextGenFeature.isListType()) {%> - int listSize = modelElement.<%=nextGenFeature.getGetAccessor()%>().size(); - if (notification.getOldValue() instanceof <%=importManager.getImportedName("java.util.Collection")%>) { - listSize += ((<%=importManager.getImportedName("java.util.Collection")%>) notification.getOldValue()).size(); - } else { - listSize++; - } - for (int i = 0; i < listSize; i++) { - removeListenerFilter("<%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener#" + i); - } -<% } else {%> - removeListenerFilter("<%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener"); -<% }%> -<%@ include file="addFeaturePropertyChangeListeners.jetinc"%> -<% }%> - <%=getProcessChangesCall("modelElement", nextGenFeature)%>; - } - }, modelElement, <%=importManager.getImportedName(nextGenFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=nextGenFeature.getFeatureAccessorName()%>()); - -<% }%> - final <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%> bounds = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%>) ((<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>) view).getLayoutConstraint(); - final int sizeX; - final int sizeY; - if (modelElement.getPreferredSize() != null) { - sizeX = getMapMode().DPtoLP(modelElement.getPreferredSize().getDx()); - sizeY = getMapMode().DPtoLP(modelElement.getPreferredSize().getDy()); - } else { - sizeX = getMapMode().DPtoLP(20); - sizeY = getMapMode().DPtoLP(20); - } - final int locationX; - final int locationY; - if (modelElement.getLocation() != null) { - locationX = getMapMode().DPtoLP(modelElement.getLocation().getX()); - locationY = getMapMode().DPtoLP(modelElement.getLocation().getY()); - } else { - locationX = bounds.getX(); - locationY = bounds.getY(); - } - if (sizeX != bounds.getWidth() || sizeY != bounds.getHeight() || locationX != bounds.getX() || locationY != bounds.getY()) { - try { - new <%=importManager.getImportedName("org.eclipse.emf.workspace.AbstractEMFOperation")%>(getEditingDomain(), "Synchronizing view size with the model", <%=importManager.getImportedName("java.util.Collections")%>.singletonMap(<%=importManager.getImportedName("org.eclipse.emf.transaction.Transaction")%>.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$ - protected <%=importManager.getImportedName("org.eclipse.core.runtime.IStatus")%> doExecute(<%=importManager.getImportedName("org.eclipse.core.runtime.IProgressMonitor")%> monitor, <%=importManager.getImportedName("org.eclipse.core.runtime.IAdaptable")%> info) throws <%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> { - bounds.setX(locationX); - bounds.setY(locationY); - bounds.setWidth(sizeX); - bounds.setHeight(sizeY); - return <%=importManager.getImportedName("org.eclipse.core.runtime.Status")%>.OK_STATUS; - } - }.execute(new <%=importManager.getImportedName("org.eclipse.core.runtime.NullProgressMonitor")%>(), null); - } catch (<%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> e) { - <%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError("Unable to synchronize view size with the model", e); //$NON-NLS-1$ - } - } - addListenerFilter("BoundsListener", new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener")%>() { - public void notifyChanged(final <%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> notification) { - try { - new <%=importManager.getImportedName("org.eclipse.emf.workspace.AbstractEMFOperation")%>(getEditingDomain(), "Synchronizing model size with the view", <%=importManager.getImportedName("java.util.Collections")%>.singletonMap(<%=importManager.getImportedName("org.eclipse.emf.transaction.Transaction")%>.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$ - protected <%=importManager.getImportedName("org.eclipse.core.runtime.IStatus")%> doExecute(<%=importManager.getImportedName("org.eclipse.core.runtime.IProgressMonitor")%> monitor, <%=importManager.getImportedName("org.eclipse.core.runtime.IAdaptable")%> info) throws <%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> { - <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%> bounds = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%>) notification.getNotifier(); - <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Dimension")%> dim = modelElement.getPreferredSize(); - if (dim == null) { - dim = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createDimension(); - modelElement.setPreferredSize(dim); - } - <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Point")%> location = modelElement.getLocation(); - if (location == null) { - location = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createPoint(); - modelElement.setLocation(location); - } - - int x = getMapMode().LPtoDP(bounds.getX()); - int y = getMapMode().LPtoDP(bounds.getY()); - int width = getMapMode().LPtoDP(bounds.getWidth()); - int height = getMapMode().LPtoDP(bounds.getHeight()); - if (location.getX() != x || location.getY() != y) { - location.setX(x); - location.setY(y); - } - if (dim.getDx() != width || dim.getDy() != height) { - dim.setDx(width); - dim.setDy(height); - } - - myNodeFigure.setPreferredSize(bounds.getWidth(), bounds.getHeight()); - myNodeFigure.setLocation(new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%>(bounds.getX(), bounds.getY())); - - if (modelElement.getLayoutData() instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%> || (modelElement.getParent() != null && modelElement.getParent().getLayout() instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayout")%>)) { - <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%> xyLayoutData = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%>) modelElement.getLayoutData(); - if (xyLayoutData == null) { - xyLayoutData = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createXYLayoutData(); - modelElement.setLayoutData(xyLayoutData); - xyLayoutData.setTopLeft(<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createPoint()); - xyLayoutData.getTopLeft().setX(0); - xyLayoutData.getTopLeft().setY(0); - xyLayoutData.setSize(<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createDimension()); - xyLayoutData.getSize().setDx(40); - xyLayoutData.getSize().setDy(40); - } - <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Point")%> topLeft; - if (xyLayoutData.getTopLeft() != null) { - topLeft = xyLayoutData.getTopLeft(); - } else { - topLeft = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createPoint(); - xyLayoutData.setTopLeft(topLeft); - } - if (topLeft.getX() != location.getX() || topLeft.getY() != location.getY()) { - topLeft.setX(location.getX()); - topLeft.setY(location.getY()); - } - - <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Dimension")%> size; - if (xyLayoutData.getSize() != null) { - size = xyLayoutData.getSize(); - } else { - size = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createDimension(); - xyLayoutData.setSize(size); - } - if (size.getDx() != dim.getDx() || size.getDy() != dim.getDy()) { - size.setDx(dim.getDx()); - size.setDy(dim.getDy()); - } - } - return <%=importManager.getImportedName("org.eclipse.core.runtime.Status")%>.OK_STATUS; - } - }.execute(new <%=importManager.getImportedName("org.eclipse.core.runtime.NullProgressMonitor")%>(), null); - } catch (<%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> e) { - <%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError("Unable to synchronize model size with the view", e); //$NON-NLS-1$ - } - if (getRoot() != null) { - handleMajorSemanticChange(); - } - } - }, bounds); - -<% - String shapeStyleInterface = importManager.getImportedName("org.eclipse.gmf.runtime.notation.ShapeStyle"); - String notationPackageInterfaceName = importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"); -%> - final <%=shapeStyleInterface%> shapeStyle = (<%=shapeStyleInterface%>) view.getStyle(<%=notationPackageInterfaceName%>.eINSTANCE.getShapeStyle()); -<% { - String modelColorProperty = "Background"; - String viewColorProperty = "Fill";%> -<%@ include file = "setViewColor.javajet"%> -<% }%> -<% { - String modelColorProperty = "Foreground"; - String viewColorProperty = "Line";%> -<%@ include file = "setViewColor.javajet"%> -<% }%> - addListenerFilter("ShapeStyleListener", new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener")%>() { - public void notifyChanged(final <%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> notification) { - try { - new <%=importManager.getImportedName("org.eclipse.emf.workspace.AbstractEMFOperation")%>(getEditingDomain(), "Synchronizing model size with the view", <%=importManager.getImportedName("java.util.Collections")%>.singletonMap(<%=importManager.getImportedName("org.eclipse.emf.transaction.Transaction")%>.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$ - protected <%=importManager.getImportedName("org.eclipse.core.runtime.IStatus")%> doExecute(<%=importManager.getImportedName("org.eclipse.core.runtime.IProgressMonitor")%> monitor, <%=importManager.getImportedName("org.eclipse.core.runtime.IAdaptable")%> info) throws <%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> { - <%=shapeStyleInterface%> shapeStyle = (<%=shapeStyleInterface%>) notification.getNotifier(); - switch (notification.getFeatureID(<%=shapeStyleInterface%>.class)) { - case <%=notationPackageInterfaceName%>.SHAPE_STYLE__FILL_COLOR: - { - int color = shapeStyle.getFillColor(); - <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%> modelColor; - if (modelElement.getBackgroundColor() instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%>) { - modelColor = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%>) modelElement.getBackgroundColor(); - } else { - modelColor = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createRGBColor(); - modelElement.setBackgroundColor(modelColor); - } - if (modelColor.getRed() != (color & 0x000000FF) || modelColor.getGreen() != (color & 0x0000FF00) >> 8 || modelColor.getBlue() != (color & 0x00FF0000) >> 16) { - modelColor.setRed(color & 0x000000FF); - modelColor.setGreen((color & 0x0000FF00) >> 8); - modelColor.setBlue((color & 0x00FF0000) >> 16); - } - break; - } - case <%=notationPackageInterfaceName%>.SHAPE_STYLE__LINE_COLOR: - { - int color = shapeStyle.getLineColor(); - <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%> modelColor; - if (modelElement.getForegroundColor() instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%>) { - modelColor = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.RGBColor")%>) modelElement.getForegroundColor(); - } else { - modelColor = <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory")%>.eINSTANCE.createRGBColor(); - modelElement.setForegroundColor(modelColor); - } - if (modelColor.getRed() != (color & 0x000000FF) || modelColor.getGreen() != (color & 0x0000FF00) >> 8 || modelColor.getBlue() != (color & 0x00FF0000) >> 16) { - modelColor.setRed(color & 0x000000FF); - modelColor.setGreen((color & 0x0000FF00) >> 8); - modelColor.setBlue((color & 0x00FF0000) >> 16); - } - break; - } - } - return <%=importManager.getImportedName("org.eclipse.core.runtime.Status")%>.OK_STATUS; - } - }.execute(new <%=importManager.getImportedName("org.eclipse.core.runtime.NullProgressMonitor")%>(), null); - } catch (<%=importManager.getImportedName("org.eclipse.core.commands.ExecutionException")%> e) { - <%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError("Unable to synchronize model size with the view", e); //$NON-NLS-1$ - } - } - }, shapeStyle); - super.activate(); - } -<% -} -// [graphdef--] -%> - - /** - * @generated - */ - protected void createDefaultEditPolicies() { -<% -if (!genNode.getChildNodes().isEmpty() || myHelper.hasChildrenInListCompartments()) { -%> - installEditPolicy(EditPolicyRoles.CREATION_ROLE, new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy")%>() -<% if (myHelper.hasChildrenInListCompartments()) {%> - { - - public <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getCommand(<%=importManager.getImportedName("org.eclipse.gef.Request")%> request) { - if (understandsRequest(request)) { - if (request instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest")%>) { - <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter")%> adapter = - ((<%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest")%>) request).getViewAndElementDescriptor().getCreateElementRequestAdapter(); - <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.type.core.IElementType")%> type = - (<%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.type.core.IElementType")%>) adapter.getAdapter(<%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.type.core.IElementType")%>.class); -<% - for (Iterator compartments = genNode.getCompartments().iterator(); compartments.hasNext();) { - GenCompartment compartment = (GenCompartment) compartments.next(); - if (compartment.isListLayout() && !compartment.getChildNodes().isEmpty()) { - for (Iterator children = compartment.getChildNodes().iterator(); children.hasNext(); ) { - GenNode child = (GenNode) children.next(); -%> - if (type == <%=importManager.getImportedName(genDiagram.getElementTypesQualifiedClassName())%>.<%=child.getUniqueIdentifier()%>) { - <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> compartmentEditPart = - getChildBySemanticHint(<%=importManager.getImportedName(genDiagram.getVisualIDRegistryQualifiedClassName())%>.getType(<%=importManager.getImportedName(compartment.getEditPartQualifiedClassName())%>.VISUAL_ID)); - return compartmentEditPart == null ? null : compartmentEditPart.getCommand(request); - } -<% - } - } - } -%> - } - return super.getCommand(request); - } - return null; - } -} -<% }%> - ); -<%}%> - super.createDefaultEditPolicies(); - installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new <%=importManager.getImportedName(genNode.getItemSemanticEditPolicyQualifiedClassName())%>()); - installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new <%=importManager.getImportedName(genNode.getGraphicalNodeEditPolicyQualifiedClassName())%>()); -<%if (!genNode.getChildNodes().isEmpty()) {%> - installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy")%>()); -<%} - -if (genDiagram.isSynchronized()) {%> - installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new <%=importManager.getImportedName(genNode.getCanonicalEditPolicyQualifiedClassName())%>()); -<%}%> - installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); - } - - /** - * @generated - */ - protected <%=importManager.getImportedName("org.eclipse.gef.editpolicies.LayoutEditPolicy")%> createLayoutEditPolicy() { -<% -final String fqnEditPart = importManager.getImportedName("org.eclipse.gef.EditPart"); -switch(genNode.getLayoutType().getValue()){ - case ViewmapLayoutType.XY_LAYOUT: -%> - <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.XYLayoutEditPolicy")%> lep = new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.XYLayoutEditPolicy")%>() { -<% if (myHelper.hasExternalLabels()) {%> - - protected void decorateChild(EditPart child) { - if (isExternalLabel(child)) { - return; - } - super.decorateChild(child); - } -<% }%> - - protected EditPolicy createChildEditPolicy(<%=fqnEditPart%> child) { - EditPolicy result = super.createChildEditPolicy(child); - if (result == null) { - return new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableShapeEditPolicy")%>(); - } - return result; - } - -<% -// [graphdef++] - if (generateSyncronizationCode) { -%> - protected <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> getLayoutOrigin() { - return ((<%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart")%>)getHost()).getContentPane().getClientArea().getLocation(); - } - - protected <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%> getCurrentConstraintFor(<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%> child) { - <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%> result = super.getCurrentConstraintFor(child); - if (result == null) { - IFigure fig = child.getFigure(); - result = fig.getBounds().getCopy(); - } - return result; - } - -<% - } -// [graphdef--] -%> - }; -<% if (myHelper.hasExternalLabels()) {%> - <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%> xlep = new <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%>() { - - protected boolean isExternalLabel(EditPart editPart) { - return <%=genNode.getEditPartClassName()%>.this.isExternalLabel(editPart); - } - }; - xlep.setRealLayoutEditPolicy(lep); - return xlep; -<% } else {%> - return lep; -<% - } - break; - case ViewmapLayoutType.TOOLBAR_LAYOUT: -%> - <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConstrainedToolbarLayoutEditPolicy")%> lep = new <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConstrainedToolbarLayoutEditPolicy")%>() { -<% if (myHelper.hasExternalLabels()) {%> - - protected void decorateChild(EditPart child) { - if (isExternalLabel(child)) { - return; - } - super.decorateChild(child); - } -<% }%> - - protected EditPolicy createChildEditPolicy(<%=fqnEditPart%> child) { - if (child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE) == null) { - if (child instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart")%>) { - return new <%=importManager.getImportedName(genDiagram.getTextSelectionEditPolicyQualifiedClassName())%>(); - } - } - return super.createChildEditPolicy(child); - } -<% -// [graphdef++] - if (generateSyncronizationCode) { -%> - protected <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> getLayoutOrigin() { - return ((<%=importManager.getImportedName("org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart")%>)getHost()).getContentPane().getClientArea().getLocation(); - } -<% - } -// [graphdef--] -%> - - }; -<% if (myHelper.hasExternalLabels()) {%> - <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%> xlep = new <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%>() { - - protected boolean isExternalLabel(EditPart editPart) { - return <%=genNode.getEditPartClassName()%>.this.isExternalLabel(editPart); - } - }; - xlep.setRealLayoutEditPolicy(lep); - return xlep; -<% } else {%> - return lep; -<% - } - break; - case ViewmapLayoutType.FLOW_LAYOUT: -%> - <%=importManager.getImportedName("org.eclipse.gef.editpolicies.FlowLayoutEditPolicy")%> lep = new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.FlowLayoutEditPolicy")%>() { -<% if (myHelper.hasExternalLabels()) {%> - - protected void decorateChild(EditPart child) { - if (isExternalLabel(child)) { - return; - } - super.decorateChild(child); - } -<% }%> - - protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> createAddCommand(<%=fqnEditPart%> child, <%=fqnEditPart%> after) { - return null; - } - - protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> createMoveChildCommand(<%=fqnEditPart%> child, <%=fqnEditPart%> after) { - return null; - } - - protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getCreateCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.CreateRequest")%> request) { - return null; - } - }; -<% if (myHelper.hasExternalLabels()) {%> - <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%> xlep = new <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%>() { - - protected boolean isExternalLabel(EditPart editPart) { - return <%=genNode.getEditPartClassName()%>.this.isExternalLabel(editPart); - } - }; - xlep.setRealLayoutEditPolicy(lep); - return xlep; -<% } else {%> - return lep; -<% - } - break; - default: -%> - <%=importManager.getImportedName("org.eclipse.gef.editpolicies.LayoutEditPolicy")%> lep = new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.LayoutEditPolicy")%>() { -<% if (myHelper.hasExternalLabels()) {%> - - protected void decorateChild(EditPart child) { - if (isExternalLabel(child)) { - return; - } - super.decorateChild(child); - } -<% }%> - - protected EditPolicy createChildEditPolicy(<%=fqnEditPart%> child) { - EditPolicy result = child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); - if( result == null ){ - result = new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.NonResizableEditPolicy")%>(); - } - return result; - } - - protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getMoveChildrenCommand(<%=importManager.getImportedName("org.eclipse.gef.Request")%> request) { - return null; - } - - protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getCreateCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.CreateRequest")%> request) { - return null; - } - }; -<% if (myHelper.hasExternalLabels()) {%> - <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%> xlep = new <%=importManager.getImportedName(genDiagram.getExternalNodeLabelHostLayoutEditPolicyQualifiedClassName())%>() { - - protected boolean isExternalLabel(EditPart editPart) { - return <%=genNode.getEditPartClassName()%>.this.isExternalLabel(editPart); - } - }; - xlep.setRealLayoutEditPolicy(lep); - return xlep; -<% } else {%> - return lep; -<% - } -} //switch -%> - } - - /** - * @generated - */ - protected IFigure createNodeShape() { -<% -String figureQualifiedClassName = null; -Viewmap viewmap = genNode.getViewmap(); -if (viewmap instanceof FigureViewmap) { - figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName(); - if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) { - figureQualifiedClassName = "org.eclipse.draw2d.RectangleFigure"; - } - figureQualifiedClassName = importManager.getImportedName(figureQualifiedClassName); -%> - return primaryShape = new <%=figureQualifiedClassName%>()<%if (isXYLayout) {%> { - protected boolean useLocalCoordinates() { - return true; - } - }<%} // if isXYLayout%>; -<%} // instanceof FigureViewmap - else if (viewmap instanceof SnippetViewmap) {%> - return <%=((SnippetViewmap) viewmap).getBody()%>; -<%} // instanceof SnippetViewmap; FIXME : obtain figure class name to generate getter - else if (viewmap instanceof InnerClassViewmap) { - figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName(); -%> - <%=figureQualifiedClassName%> figure = new <%=figureQualifiedClassName%>(); -<%if (!genNode.getChildNodes().isEmpty() && isXYLayout) { /*otherwise, leave to figure's default value*/%> - figure.setUseLocalCoordinates(true); -<%} -// [graphdef++] - if (generateSyncronizationCode) { - String modelInterfaceName = importManager.getImportedName(metaclass.getQualifiedInterfaceName()); -%> - myFigure = figure; - <%=modelInterfaceName%> modelElement = (<%=modelInterfaceName%>) ((View) getModel()).getElement(); - if (modelElement != null) { -<% - for (Iterator genFeatures = metaclass.getAllGenFeatures().iterator(); genFeatures.hasNext();) { - GenFeature nextGenFeature = (GenFeature) genFeatures.next(); - if (skip(nextGenFeature)) { - continue; - } -%> - { - <%=getProcessChangesCall("modelElement", nextGenFeature)%>; - } -<% }%> - } -<% - } -// [graphdef--] -%> - return primaryShape = figure; -<%}%> - } -<%if (figureQualifiedClassName != null) {%> - - /** - * @generated - */ - public <%=figureQualifiedClassName%> getPrimaryShape() { - return (<%=figureQualifiedClassName%>) primaryShape; - } -<%}%> - -<% -if (myHelper.hasFixedChildren()) { -%> - /** - * @generated - */ - protected boolean addFixedChild(EditPart childEditPart) { -<% -for (Iterator it = myHelper.getInnerFixedLabels(); it.hasNext(); ) { - GenNodeLabel genLabel = (GenNodeLabel) it.next(); - final String labelEditPart = importManager.getImportedName(genLabel.getEditPartQualifiedClassName()); - final ParentAssignedViewmap childViewmap = (ParentAssignedViewmap) genLabel.getViewmap(); - final String childSetterName = childViewmap.getSetterName() == null ? "setLabel" : childViewmap.getSetterName(); -%> - if (childEditPart instanceof <%=labelEditPart%>) { - ((<%=labelEditPart%>) childEditPart).<%=childSetterName%>(getPrimaryShape().<%=childViewmap.getGetterName()%>()); - return true; - } -<% - } - -for (Iterator it = myHelper.getPinnedCompartments(); it.hasNext(); ) { - GenCompartment next = (GenCompartment) it.next(); - final ParentAssignedViewmap childViewmap = (ParentAssignedViewmap) next.getViewmap(); - String compartmentEditPartFQN = importManager.getImportedName(next.getEditPartQualifiedClassName()); -%> - if (childEditPart instanceof <%=compartmentEditPartFQN%>) { - <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> pane = getPrimaryShape().<%=childViewmap.getGetterName()%>(); - setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way - pane.add(((<%=compartmentEditPartFQN%>)childEditPart).getFigure()); - return true; - } -<% -} // for pinned compartments -%> - return false; - } - - /** - * @generated - */ - protected boolean removeFixedChild(EditPart childEditPart) { -<% -//XXX: ignore labels assuming that they never may be removed -for (Iterator it = myHelper.getPinnedCompartments(); it.hasNext(); ) { - GenCompartment next = (GenCompartment) it.next(); - final ParentAssignedViewmap childViewmap = (ParentAssignedViewmap) next.getViewmap(); - String compartmentEditPartFQN = importManager.getImportedName(next.getEditPartQualifiedClassName()); -%> - if (childEditPart instanceof <%=compartmentEditPartFQN%>) { - <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> pane = getPrimaryShape().<%=childViewmap.getGetterName()%>(); - pane.remove(((<%=compartmentEditPartFQN%>)childEditPart).getFigure()); - return true; - } -<% -} // for pinned compartments -%> - return false; - } -<% -} // if myHelper.hasFixedChildren() -%> - - /** - * @generated - */ - protected <%=importManager.getImportedName("org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure")%> createNodePlate() { -<% -int width = 40; -int height = 40; -DefaultSizeAttributes defSizeAttrs = (DefaultSizeAttributes) genNode.getViewmap().find(DefaultSizeAttributes.class); -if (defSizeAttrs != null) { - width = defSizeAttrs.getWidth(); - height = defSizeAttrs.getHeight(); -} -%> - return new <%=importManager.getImportedName("org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure")%>(getMapMode().DPtoLP(<%=width%>), getMapMode().DPtoLP(<%=height%>)); - } -<%if (genNode.getViewmap().find(ResizeConstraints.class) != null) { - final ResizeConstraints rc = (ResizeConstraints) genNode.getViewmap().find(ResizeConstraints.class); - final String draw2dPC = importManager.getImportedName("org.eclipse.draw2d.PositionConstants");%> - - /** - * @generated - */ - public EditPolicy getPrimaryDragEditPolicy() { - <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ResizableEditPolicy")%> ep = (<%=importManager.getImportedName("org.eclipse.gef.editpolicies.ResizableEditPolicy")%>) super.getPrimaryDragEditPolicy(); - <%if (rc.getResizeHandleNames().isEmpty()) {%> - ep.setResizeDirections(<%=draw2dPC%>.NONE); - <% } else {%> - ep.setResizeDirections(<%for (Iterator rcNamesIter = rc.getResizeHandleNames().iterator(); rcNamesIter.hasNext();) { - String nextConstantName = (String) rcNamesIter.next();%><%=draw2dPC%>.<%=nextConstantName%><%if (rcNamesIter.hasNext()) {%> | <%}}%>); - <%}%> - return ep; - } -<%}%> - /** - * Creates figure for this edit part. - * - * Body of this method does not depend on settings in generation model - * so you may safely remove generated tag and modify it. - * - * @generated - */ - protected <%=importManager.getImportedName("org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure")%> createNodeFigure() { - <%=importManager.getImportedName("org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure")%> figure = createNodePlate(); -<% -// [graphdef++] -if (generateSyncronizationCode) { -%> - myNodeFigure = figure; -<% -} -// [graphdef--] -%> - figure.setLayoutManager(new StackLayout()); - IFigure shape = createNodeShape(); - figure.add(shape); - contentPane = setupContentPane(shape); - return figure; - } - - /** - * Default implementation treats passed figure as content pane. - * Respects layout one may have set for generated figure. - * @param nodeShape instance of generated figure class - * @generated - */ - protected IFigure setupContentPane(IFigure nodeShape) { - if (nodeShape.getLayoutManager() == null) { -<% -if (isXYLayout) { -%> - nodeShape.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayout")%>() { - - public Object getConstraint(IFigure figure) { - Object result = constraints.get(figure); - if (result == null) { - result = new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%>(0, 0, -1, -1); - } - return result; - } - }); -<%} else { - String layoutClassName = importManager.getImportedName("org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout"); -%> - <%=layoutClassName%> layout = new <%=layoutClassName%>(); - layout.setSpacing(getMapMode().DPtoLP(5)); - nodeShape.setLayoutManager(layout); -<%}%> -} - return nodeShape; // use nodeShape itself as contentPane - } - - /** - * @generated - */ - public IFigure getContentPane() { - if (contentPane != null) { - return contentPane; - } - return super.getContentPane(); - } -<% -if (myHelper.getPrimaryLabel() != null) { - GenNodeLabel primaryLabel = myHelper.getPrimaryLabel(); -%> - - /** - * @generated - */ - public <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> getPrimaryChildEditPart() { - return getChildBySemanticHint(<%=importManager.getImportedName(genDiagram.getVisualIDRegistryQualifiedClassName())%>.getType(<%=importManager.getImportedName(primaryLabel.getEditPartQualifiedClassName())%>.VISUAL_ID)); - } -<% -} -if (myHelper.hasExternalLabels()){ -%> - - /** - * @generated - */ - protected boolean isExternalLabel(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart) { -<% - for (Iterator externalLabels = myHelper.getExternalLabels(); externalLabels.hasNext();) { - GenNodeLabel next = (GenNodeLabel) externalLabels.next(); -%> - if (childEditPart instanceof <%=importManager.getImportedName(next.getEditPartQualifiedClassName())%>) { - return true; - } -<% }%> - return false; - } - - /** - * @generated - */ - protected IFigure getExternalLabelsContainer() { - <%=importManager.getImportedName("org.eclipse.gef.editparts.LayerManager")%> root = (<%=importManager.getImportedName("org.eclipse.gef.editparts.LayerManager")%>) getRoot(); - return root.getLayer(<%=importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName())%>.EXTERNAL_NODE_LABELS_LAYER); - } - -<% -} -if (myHelper.hasFixedChildren() || myHelper.hasExternalLabels()) { -%> - - /** - * @generated - */ - protected void addChildVisual(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart, int index) { -<% if (myHelper.hasExternalLabels()) {%> - if (isExternalLabel(childEditPart)) { - IFigure labelFigure = ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) childEditPart).getFigure(); - getExternalLabelsContainer().add(labelFigure); - return; - } -<% -} -if (myHelper.hasFixedChildren()){ -%> - if (addFixedChild(childEditPart)) { - return; - } -<% }%> - super.addChildVisual(childEditPart, -1); - } - - /** - * @generated - */ - protected void removeChildVisual(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart) { -<% if (myHelper.hasExternalLabels()) {%> - if (isExternalLabel(childEditPart)) { - IFigure labelFigure = ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) childEditPart).getFigure(); - getExternalLabelsContainer().remove(labelFigure); - return; - } -<% -} -if (myHelper.hasFixedChildren()){ -%> - if (removeFixedChild(childEditPart)){ - return; - } -<% }%> - super.removeChildVisual(childEditPart); - } -<% if (myHelper.hasExternalLabels()) {%> - - /** - * @generated - */ - public void removeNotify() { - for (<%=importManager.getImportedName("java.util.Iterator")%> it = getChildren().iterator(); it.hasNext();) { - <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart = (<%=importManager.getImportedName("org.eclipse.gef.EditPart")%>) it.next(); - if (isExternalLabel(childEditPart)) { - IFigure labelFigure = ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) childEditPart).getFigure(); - getExternalLabelsContainer().remove(labelFigure); - } - } - super.removeNotify(); - } -<% - } -} // if hasFixedChildren || hasExternalLabels -%> - -<%if (genNode.getViewmap() instanceof InnerClassViewmap) {%> -<%=((InnerClassViewmap) genNode.getViewmap()).getClassBody()%> -<%}%> -<% -// [graphdef++] -if (generateSyncronizationCode) {%> - - /** - * @generated - */ - protected <%=importManager.getImportedName("org.eclipse.draw2d.LayoutManager")%> getFigureLayoutManager() { - return myFigure.getLayoutManager(); - } - - /** - * @generated - */ - protected void setFigureLayoutManager(<%=importManager.getImportedName("org.eclipse.draw2d.LayoutManager")%> layoutManager) { - myFigure.setLayoutManager(layoutManager); - } - - /** - * @generated - */ - protected void refreshBounds() { - if (((<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) getParent().getModel()).getElement() instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.FigureMarker")%>) { - int width = ((Integer) getStructuralFeatureValue(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getSize_Width())).intValue(); - int height = ((Integer) getStructuralFeatureValue(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getSize_Height())).intValue(); - myNodeFigure.setPreferredSize(new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")%>(width, height)); - } else { - super.refreshBounds(); - } - } -<% -} -// [graphdef--] -%> -} -<%importManager.emitSortedImports();%> Index: templates/parts/addFeaturePropertyChangeListeners.jetinc =================================================================== RCS file: templates/parts/addFeaturePropertyChangeListeners.jetinc diff -N templates/parts/addFeaturePropertyChangeListeners.jetinc --- templates/parts/addFeaturePropertyChangeListeners.jetinc 5 May 2006 16:31:18 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,7 +0,0 @@ -<%if (nextGenFeature.isListType()) {%>for (int i = 0; i < modelElement.<%=nextGenFeature.getGetAccessor()%>().size(); i++) { - addListenerFilter("<%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener#" + i, <%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener, (<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) modelElement.<%=nextGenFeature.getGetAccessor()%>().get(i)); -} -<%} else {%>if (modelElement.<%=nextGenFeature.getGetAccessor()%>() != null) { - addListenerFilter("<%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener", <%=nextGenFeature.getFeatureAccessorName()%>_PropertiesListener, modelElement.<%=nextGenFeature.getGetAccessor()%>()); -} -<%}%> \ No newline at end of file Index: templates/providers/additionalPropertiesProvider.javajet =================================================================== RCS file: templates/providers/additionalPropertiesProvider.javajet diff -N templates/providers/additionalPropertiesProvider.javajet --- templates/providers/additionalPropertiesProvider.javajet 26 Jun 2006 18:38:20 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,118 +0,0 @@ -if (element instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Layoutable")%>) { - <%=importManager.getImportedName("org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource")%> compositeSource = new <%=importManager.getImportedName("org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource")%>(element); - compositeSource.addPropertySource(super.getPropertySource(element)); -<% -String factoryAccessor = importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphFactory") + ".eINSTANCE"; -String providerFactoryAccessor = importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()) + ".getInstance().getItemProvidersAdapterFactory()"; -String packageAccessor = importManager.getImportedName("org.eclipse.gmf.gmfgraph.GMFGraphPackage") + ".eINSTANCE"; -%> - class ChildMetaclassItemPropertyDescriptor extends <%=importManager.getImportedName("org.eclipse.emf.edit.provider.ItemPropertyDescriptor")%> { - - private <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>[] myValues; - - ChildMetaclassItemPropertyDescriptor(<%=importManager.getImportedName("org.eclipse.emf.common.notify.AdapterFactory")%> adapterFactory, String displayName, String description, <%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> feature, boolean isSettable, <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>[] valueInstances) { - super(adapterFactory, displayName, description, feature, isSettable); - myValues = valueInstances; - } - - protected <%=importManager.getImportedName("java.util.Collection")%> getComboBoxObjects(Object object) { - if (object instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) { - <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> eObject = (<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) object; - Object currentValue = getValue(eObject, feature); - <%=importManager.getImportedName("java.util.Collection")%> result = new <%=importManager.getImportedName("java.util.ArrayList")%>(); - result.add(currentValue); - <%=importManager.getImportedName("org.eclipse.emf.ecore.EClass")%> valueEClass = currentValue instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> ? ((<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) currentValue).eClass() : null; - for (int i = 0; i < myValues.length; i++) { - if (myValues[i].eClass() == valueEClass) { - continue; - } - result.add(myValues[i]); - } - if (currentValue != null) { - result.add(null); - } - return result; - } - return null; - } - - public void setPropertyValue(Object object, Object value) { - if (value instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) { - <%=importManager.getImportedName("org.eclipse.emf.ecore.EClass")%> eClass = ((<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) value).eClass(); - value = eClass.getEPackage().getEFactoryInstance().create(eClass); - if (value instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%>) { - <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%> xyLayoutData = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.XYLayoutData")%>) value; - xyLayoutData.setTopLeft(<%=factoryAccessor%>.createPoint()); - xyLayoutData.getTopLeft().setX(0); - xyLayoutData.getTopLeft().setY(0); - xyLayoutData.setSize(<%=factoryAccessor%>.createDimension()); - xyLayoutData.getSize().setDx(40); - xyLayoutData.getSize().setDy(40); - } - } - super.setPropertyValue(object, value); - } - } - - class SingleDescriptorPropertySource implements <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertySource")%> { - - private <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> myPropertyDescriptor; - - private <%=importManager.getImportedName("java.util.List")%> myDescriptors = new <%=importManager.getImportedName("java.util.LinkedList")%>(); - - SingleDescriptorPropertySource(<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> propertyDescriptor) { - myPropertyDescriptor = propertyDescriptor; - myDescriptors.add(myPropertyDescriptor); - } - - public <%=importManager.getImportedName("java.util.List")%> getPropertyDescriptors(Object object) { - return myDescriptors; - } - - public <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> getPropertyDescriptor(Object object, Object propertyID) { - return myPropertyDescriptor; - } - - public Object getEditableValue(Object object) { - return object; - } - - } - - <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> layoutPropertyDescriptor = new ChildMetaclassItemPropertyDescriptor(<%=providerFactoryAccessor%>, "Layout Manager", "Layout Manager", <%=packageAccessor%>.getLayoutable_Layout(), true, new <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>[] {<%=factoryAccessor%>.createBorderLayout(), <%=factoryAccessor%>.createCustomLayout(), <%=factoryAccessor%>.createFlowLayout(), <%=factoryAccessor%>.createGridLayout(), <%=factoryAccessor%>.createStackLayout(), <%=factoryAccessor%>.createXYLayout()}); - compositeSource.addPropertySource(new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource")%>(element, new SingleDescriptorPropertySource(layoutPropertyDescriptor), "EMF")); //$NON-NLS-1$ - <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> layoutDataPropertyDescriptor = new ChildMetaclassItemPropertyDescriptor(<%=providerFactoryAccessor%>, "Layout Data", "Layout Data", <%=packageAccessor%>.getLayoutable_LayoutData(), true, new <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>[] {<%=factoryAccessor%>.createBorderLayoutData(), <%=factoryAccessor%>.createCustomLayoutData(), <%=factoryAccessor%>.createGridLayoutData(), <%=factoryAccessor%>.createXYLayoutData()}); - compositeSource.addPropertySource(new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource")%>(element, new SingleDescriptorPropertySource(layoutDataPropertyDescriptor), "EMF")); //$NON-NLS-1$ - - if (element instanceof <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Polyline")%>) { - int counter = 1; - for (<%=importManager.getImportedName("java.util.Iterator")%> it = ((<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Polyline")%>) element).getTemplate().iterator(); it.hasNext(); counter++) { - <%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Point")%> nextPoint = (<%=importManager.getImportedName("org.eclipse.gmf.gmfgraph.Point")%>) it.next(); - final String titleX = "Point " + counter + " X"; - <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> nextPointPropertyDescriptorX = new <%=importManager.getImportedName("org.eclipse.emf.edit.provider.ItemPropertyDescriptor")%>(<%=providerFactoryAccessor%>, titleX, titleX, <%=packageAccessor%>.getPoint_X(), true, "Template"); - compositeSource.addPropertySource(new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource")%>(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorX), "EMF") { - protected <%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertyDescriptor")%> newPropertyDescriptor(<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> itemPropertyDescriptor) { - return new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor")%>(object, itemPropertyDescriptor, getCategory()) { - public Object getId() { - return titleX; - } - }; - } - }); - - final String titleY = "Point " + counter + " Y"; - <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> nextPointPropertyDescriptorY = new <%=importManager.getImportedName("org.eclipse.emf.edit.provider.ItemPropertyDescriptor")%>(<%=providerFactoryAccessor%>, titleY, titleY, <%=packageAccessor%>.getPoint_Y(), true, "Template"); - compositeSource.addPropertySource(new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource")%>(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorY), "EMF") { - protected <%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertyDescriptor")%> newPropertyDescriptor(<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertyDescriptor")%> itemPropertyDescriptor) { - return new <%=importManager.getImportedName("org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor")%>(object, itemPropertyDescriptor, getCategory()) { - public Object getId() { - return titleY; - } - }; - } - }); - } - } - - return compositeSource; -} \ No newline at end of file Index: templates/providers/PropertyProvider.javajet =================================================================== RCS file: templates/providers/PropertyProvider.javajet diff -N templates/providers/PropertyProvider.javajet --- templates/providers/PropertyProvider.javajet 22 May 2006 17:37:31 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,70 +0,0 @@ -<%@ jet package="org.eclipse.gmf.codegen.templates.providers" class="PropertyProviderGenerator" - imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> -<% -final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; -final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; -%> -<%@ include file="../copyright4java.jetinc"%> -<%importManager.emitPackageStatement(stringBuffer);%> - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.gef.EditPart; -import org.eclipse.gmf.runtime.common.core.service.IOperation; -import org.eclipse.gmf.runtime.common.ui.services.properties.GetPropertySourceOperation; -import org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource; -import org.eclipse.gmf.runtime.common.ui.services.properties.IPropertiesProvider; -import org.eclipse.gmf.runtime.emf.ui.properties.providers.GenericEMFPropertiesProvider; -import org.eclipse.gmf.runtime.notation.View; -<%importManager.markImportLocation(stringBuffer);%> - -/** - * @generated - */ -public class <%=genDiagram.getPropertyProviderClassName()%> extends GenericEMFPropertiesProvider implements IPropertiesProvider { - - /** - * @generated - */ - public boolean provides(IOperation operation) { - if (operation instanceof GetPropertySourceOperation) { - Object object = ((GetPropertySourceOperation) operation).getObject(); - return getSemanticElement(object) != null; - } - return false; - } - - /** - * @generated - */ - public ICompositePropertySource getPropertySource(Object object) { - EObject element = getSemanticElement(object); - if (element != null) { -<%// [graphdef++]%> -<%@ include file="additionalPropertiesProvider.javajet"%> -<%// [graphdef--]%> - return super.getPropertySource(element); - } - return null; - } - - /** - * @generated - */ - protected EObject getSemanticElement(Object object) { - View view = null; - if (object instanceof View) { - view = (View) object; - } else if (object instanceof EditPart) { - EditPart editPart = (EditPart) object; - if (editPart.getModel() instanceof View) { - view = (View) editPart.getModel(); - } - } - if (view != null && <%=importManager.getImportedName(genDiagram.getEditPartQualifiedClassName())%>.MODEL_ID.equals(<%=importManager.getImportedName(genDiagram.getVisualIDRegistryQualifiedClassName())%>.getModelID(view))) { - return view.getElement(); - } - return null; - } - -} -<%importManager.emitSortedImports();%> Index: models/graphdef.gmfmap =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.editor/models/graphdef.gmfmap,v retrieving revision 1.3 diff -u -r1.3 graphdef.gmfmap --- models/graphdef.gmfmap 30 May 2006 18:14:45 -0000 1.3 +++ models/graphdef.gmfmap 8 Feb 2007 17:29:11 -0000 @@ -3,7 +3,7 @@ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" - xmlns:gmfmap="http://www.eclipse.org/gmf/2005/mappings" + xmlns:gmfmap="http://www.eclipse.org/gmf/2005/mappings/2.0" xmlns:gmftool="http://www.eclipse.org/gmf/2005/ToolDefinition"> - + - + - + - + @@ -32,9 +33,10 @@ editPartClassName="RectangleEditPart" itemSemanticEditPolicyClassName="RectangleItemSemanticEditPolicy" notationViewFactoryClassName="RectangleViewFactory" - childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" canonicalEditPolicyClassName="RectangleCanonicalEditPolicy" + childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" graphicalNodeEditPolicyClassName="RectangleGraphicalNodeEditPolicy" + createCommandClassName="RectangleCreateCommand" containers="//@diagram/@compartments.3"> @@ -67,9 +69,10 @@ editPartClassName="Rectangle2EditPart" itemSemanticEditPolicyClassName="Rectangle2ItemSemanticEditPolicy" notationViewFactoryClassName="Rectangle2ViewFactory" - childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" canonicalEditPolicyClassName="Rectangle2CanonicalEditPolicy" + childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" graphicalNodeEditPolicyClassName="Rectangle2GraphicalNodeEditPolicy" + createCommandClassName="Rectangle2CreateCommand" containers="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6"> @@ -103,9 +106,10 @@ editPartClassName="EllipseEditPart" itemSemanticEditPolicyClassName="EllipseItemSemanticEditPolicy" notationViewFactoryClassName="EllipseViewFactory" - childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" canonicalEditPolicyClassName="EllipseCanonicalEditPolicy" + childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" graphicalNodeEditPolicyClassName="EllipseGraphicalNodeEditPolicy" + createCommandClassName="EllipseCreateCommand" containers="//@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.1 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6"> @@ -138,9 +142,10 @@ editPartClassName="RoundedRectangleEditPart" itemSemanticEditPolicyClassName="RoundedRectangleItemSemanticEditPolicy" notationViewFactoryClassName="RoundedRectangleViewFactory" - childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" canonicalEditPolicyClassName="RoundedRectangleCanonicalEditPolicy" + childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" graphicalNodeEditPolicyClassName="RoundedRectangleGraphicalNodeEditPolicy" + createCommandClassName="RoundedRectangleCreateCommand" containers="//@diagram/@childNodes.3 //@diagram/@childNodes.2 //@diagram/@childNodes.1 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6"> @@ -175,6 +180,7 @@ notationViewFactoryClassName="PolylineViewFactory" canonicalEditPolicyClassName="PolylineCanonicalEditPolicy" graphicalNodeEditPolicyClassName="PolylineGraphicalNodeEditPolicy" + createCommandClassName="PolylineCreateCommand" containers="//@diagram/@childNodes.3 //@diagram/@childNodes.2 //@diagram/@childNodes.1 //@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6"> @@ -205,9 +211,10 @@ editPartClassName="Ellipse2EditPart" itemSemanticEditPolicyClassName="Ellipse2ItemSemanticEditPolicy" notationViewFactoryClassName="Ellipse2ViewFactory" - childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" canonicalEditPolicyClassName="Ellipse2CanonicalEditPolicy" + childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" graphicalNodeEditPolicyClassName="Ellipse2GraphicalNodeEditPolicy" + createCommandClassName="Ellipse2CreateCommand" containers="//@diagram/@compartments.3"> @@ -241,9 +248,10 @@ editPartClassName="RoundedRectangle2EditPart" itemSemanticEditPolicyClassName="RoundedRectangle2ItemSemanticEditPolicy" notationViewFactoryClassName="RoundedRectangle2ViewFactory" - childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" canonicalEditPolicyClassName="RoundedRectangle2CanonicalEditPolicy" + childNodes="//@diagram/@childNodes.1 //@diagram/@childNodes.2 //@diagram/@childNodes.3 //@diagram/@childNodes.4" graphicalNodeEditPolicyClassName="RoundedRectangle2GraphicalNodeEditPolicy" + createCommandClassName="RoundedRectangle2CreateCommand" containers="//@diagram/@compartments.3"> @@ -279,6 +287,7 @@ notationViewFactoryClassName="Polyline2ViewFactory" canonicalEditPolicyClassName="Polyline2CanonicalEditPolicy" graphicalNodeEditPolicyClassName="Polyline2GraphicalNodeEditPolicy" + createCommandClassName="Polyline2CreateCommand" containers="//@diagram/@compartments.3"> @@ -312,7 +321,8 @@ notationViewFactoryClassName="CompartmentViewFactory" canonicalEditPolicyClassName="CompartmentCanonicalEditPolicy" compartments="//@diagram/@compartments.0" - graphicalNodeEditPolicyClassName="CompartmentGraphicalNodeEditPolicy"> + graphicalNodeEditPolicyClassName="CompartmentGraphicalNodeEditPolicy" + createCommandClassName="CompartmentCreateCommand"> - @@ -359,7 +369,8 @@ notationViewFactoryClassName="NodeViewFactory" canonicalEditPolicyClassName="NodeCanonicalEditPolicy" compartments="//@diagram/@compartments.1" - graphicalNodeEditPolicyClassName="NodeGraphicalNodeEditPolicy"> + graphicalNodeEditPolicyClassName="NodeGraphicalNodeEditPolicy" + createCommandClassName="NodeCreateCommand"> - @@ -406,7 +417,8 @@ notationViewFactoryClassName="ConnectionViewFactory" canonicalEditPolicyClassName="ConnectionCanonicalEditPolicy" compartments="//@diagram/@compartments.2" - graphicalNodeEditPolicyClassName="ConnectionGraphicalNodeEditPolicy"> + graphicalNodeEditPolicyClassName="ConnectionGraphicalNodeEditPolicy" + createCommandClassName="ConnectionCreateCommand"> - @@ -453,7 +465,8 @@ notationViewFactoryClassName="FigureGalleryViewFactory" canonicalEditPolicyClassName="FigureGalleryCanonicalEditPolicy" compartments="//@diagram/@compartments.3" - graphicalNodeEditPolicyClassName="FigureGalleryGraphicalNodeEditPolicy"> + graphicalNodeEditPolicyClassName="FigureGalleryGraphicalNodeEditPolicy" + createCommandClassName="FigureGalleryCreateCommand"> - @@ -572,8 +585,8 @@ editPartClassName="FigureGalleryFiguresEditPart" itemSemanticEditPolicyClassName="FigureGalleryFiguresItemSemanticEditPolicy" notationViewFactoryClassName="FigureGalleryFiguresViewFactory" - childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6 //@diagram/@childNodes.7" canonicalEditPolicyClassName="FigureGalleryFiguresCanonicalEditPolicy" + childNodes="//@diagram/@childNodes.0 //@diagram/@childNodes.5 //@diagram/@childNodes.6 //@diagram/@childNodes.7" title="Figures" node="//@diagram/@topLevelNodes.3" listLayout="false"> @@ -647,11 +660,298 @@ genNodes="//@diagram/@childNodes.4 //@diagram/@childNodes.7"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + org.eclipse.gmf.runtime.notation.View + org.eclipse.gef.EditPart + abstractNavigatorItem + + + Index: templates/common.skeleton =================================================================== RCS file: templates/common.skeleton diff -N templates/common.skeleton --- templates/common.skeleton 5 May 2006 16:31:18 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,207 +0,0 @@ -public class CLASS { - -// [graphdef++] - private java.util.Map myMethodsMap; - - private java.util.Set mySkippedDataTypeFeatures; - - private java.util.Set myAllowedNonDataTypeFeatures; - - private java.util.Map getMethodsMap() { - if (myMethodsMap == null) { - myMethodsMap = new java.util.HashMap(); - myMethodsMap.put("XorFill", "myFigure.setFillXOR"); - myMethodsMap.put("XorOutline", "myFigure.setOutlineXOR"); - myMethodsMap.put("LineKind", "myFigure.setLineStyle"); - myMethodsMap.put("CornerWidth", "myFigure.setCornerDimensions"); - myMethodsMap.put("CornerHeight", "myFigure.setCornerDimensions"); - myMethodsMap.put("Template", "myFigure.setPoints"); - } - return myMethodsMap; - } - - private java.util.Set getSkippedDataTypeFeatures() { - if (mySkippedDataTypeFeatures == null) { - mySkippedDataTypeFeatures = new java.util.HashSet(); - mySkippedDataTypeFeatures.add("name"); - } - return mySkippedDataTypeFeatures; - } - - private java.util.Set getAllowedNonDataTypeFeatures() { - if (myAllowedNonDataTypeFeatures == null) { - myAllowedNonDataTypeFeatures = new java.util.HashSet(); - myAllowedNonDataTypeFeatures.add("layout"); - myAllowedNonDataTypeFeatures.add("layoutData"); - myAllowedNonDataTypeFeatures.add("layout"); - myAllowedNonDataTypeFeatures.add("template"); - } - return myAllowedNonDataTypeFeatures; - } - - protected final boolean skip(GenFeature feature) { - if (feature.getTypeGenClassifier() instanceof GenDataType) { - return getSkippedDataTypeFeatures().contains(feature.getName()); - } - return !getAllowedNonDataTypeFeatures().contains(feature.getName()); - } - - private final StringBuffer getValue(String modelElementVariable, GenFeature feature) { - StringBuffer result = new StringBuffer(); - String featureName = feature.getName(); - if ("cornerWidth".equals(featureName) || "cornerHeight".equals(featureName)) { - result.append("getMapMode().DPtoLP("); - result.append(modelElementVariable); - result.append(".getCornerWidth()), getMapMode().DPtoLP("); - result.append(modelElementVariable); - result.append(".getCornerHeight())"); - } else { - result.append(modelElementVariable); - result.append("."); - result.append(feature.getGetAccessor()); - result.append("()"); - } - return result; - } - - private final void transform(StringBuffer value, GenFeature feature) { - String featureName = feature.getName(); - if ("cornerWidth".equals(featureName) || "cornerHeight".equals(featureName)) { - value.insert(0, "new org.eclipse.draw2d.geometry.Dimension("); - value.append(")"); - } else if ("lineKind".equals(featureName)) { - value.insert(0, "getLineStyle("); - value.append(")"); - } else if ("template".equals(featureName)) { - value.insert(0, "getPointList("); - value.append(")"); - } - } - - private final void setValue(StringBuffer value, GenFeature feature) { - value.insert(0, "("); - java.util.Map map = getMethodsMap(); - String accessorName = feature.getAccessorName(); - if (map.containsKey(accessorName)) { - value.insert(0, (String) map.get(accessorName)); - } else { - if (feature.getTypeGenClassifier() instanceof GenDataType) { - value.insert(0, accessorName); - value.insert(0, "myFigure.set"); - } else { - value.insert(0, "Changed"); - value.insert(0, feature.getName()); - } - } - value.append(")"); - } - - protected final String getProcessChangesCall(String modelElementVariable, GenFeature feature) { - StringBuffer result = getValue(modelElementVariable, feature); - transform(result, feature); - setValue(result, feature); - return result.toString(); - } -// [graphdef--] - - protected final String getFeatureValueGetter(String containerName, GenFeature feature, boolean isContainerEObject, ImportAssistant importManager) { - StringBuffer result = new StringBuffer(); - if (feature.getGenClass().isExternalInterface()) { -// Using EMF reflective method to access feature value - result.append("(("); - if (feature.isListType()) { - result.append(importManager.getImportedName("java.util.Collection")); - } else { - result.append(importManager.getImportedName(feature.getTypeGenClass().getQualifiedInterfaceName())); - } - result.append(")"); - if (!isContainerEObject) { -// Casting container to EObject - ExternalIntarfce could be not an instance of EObject - result.append("(("); - result.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); - result.append(")"); - } - result.append(containerName); - if (!isContainerEObject) { - result.append(")"); - } - result.append(".eGet("); - result.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())); - result.append(".eINSTANCE.get"); - result.append(feature.getFeatureAccessorName()); - result.append("()))"); - } else { - if (isContainerEObject) { -// Casting container to the typed interface - result.append("(("); - result.append(importManager.getImportedName(feature.getGenClass().getQualifiedInterfaceName())); - result.append(")"); - } - result.append(containerName); - if (isContainerEObject) { - result.append(")"); - } - result.append("."); - result.append(feature.getGetAccessor()); - result.append("()"); - } - return result.toString(); - } - - protected final String getFeatureValueSetterPrefix(String containerName, GenFeature feature, boolean isContainerEObject, ImportAssistant importManager) { - StringBuffer result = new StringBuffer(); - if (feature.getGenClass().isExternalInterface()) { -// Using EMF reflective method to access feature value - if (!isContainerEObject) { -// Casting container to EObject - ExternalIntarfce could be not an instance of EObject - result.append("(("); - result.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); - result.append(")"); - } - result.append(containerName); - if (!isContainerEObject) { - result.append(")"); - } - result.append(".eSet("); - result.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())); - result.append(".eINSTANCE.get"); - result.append(feature.getFeatureAccessorName()); - result.append("(), "); - } else { - if (isContainerEObject) { -// Casting container to the typed interface - result.append("(("); - result.append(importManager.getImportedName(feature.getGenClass().getQualifiedInterfaceName())); - result.append(")"); - } - result.append(containerName); - if (isContainerEObject) { - result.append(")"); - } - if (feature.isListType()) { - result.append("."); - result.append(feature.getGetAccessor()); - result.append("().add("); - } else { - result.append(".set"); - result.append(feature.getAccessorName()); - result.append("("); - } - } - return result.toString(); - } - - protected final String getMetaClassAccessor(GenClass genClass, ImportAssistant importManager) { - StringBuffer buf = new StringBuffer(); - buf.append(importManager.getImportedName(genClass.getGenPackage().getQualifiedPackageInterfaceName())) - .append(".eINSTANCE.get") //$NON-NLS-1$ - .append(genClass.getName()) - .append("()"); //$NON-NLS-1$ - return buf.toString(); - } - - public String generate(Object argument) { - return ""; - } - -} \ No newline at end of file Index: templates/aspects/xpt/diagram/editparts/Utils.ext =================================================================== RCS file: templates/aspects/xpt/diagram/editparts/Utils.ext diff -N templates/aspects/xpt/diagram/editparts/Utils.ext --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/aspects/xpt/diagram/editparts/Utils.ext 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2007 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: + * Anna Karjakina (Borland) - initial API and implementation + */ + +import "http://www.eclipse.org/gmf/2005/GraphicalDefinition"; +import "http://www.eclipse.org/gmf/2005/GenModel/2.0"; +import "http://www.eclipse.org/emf/2002/GenModel"; +import "http://www.eclipse.org/emf/2002/Ecore"; + +extension xpt::GenModelUtils; + +cached List[genmodel::GenFeature] getAllGenFeatures(genmodel::GenClass genClass) : +getAllBaseGenClasses(genClass).genFeatures.union(genClass.genFeatures) +; + +cached List[genmodel::GenClass] getAllBaseGenClasses(genmodel::GenClass genClass) : +genClass.ecoreClass.eAllSuperTypes.findGenClassifier(genClass.genPackage.genModel) +; + +private genmodel::GenClass findGenClassifier(ecore::EClass eClass, genmodel::GenModel genModel) : +findGenClassifier(genModel, eClass) +; + +cached genmodel::GenClassifier getTypeGenClassifier(genmodel::GenFeature genFeature) : +null != genFeature.ecoreFeature.eType ? findGenClassifier(genFeature.genClass.genPackage.genModel, genFeature.ecoreFeature.eType) : null +; + +cached genmodel::GenClass metaclass(gmfgen::GenNode genNode) : +genNode.getDomainMetaClass() +; + +cached boolean skip(genmodel::GenFeature genFeature) : +skip(getTypeGenClassifier(genFeature), getName(genFeature)) +; + +private String getName(genmodel::GenFeature genFeature) : +genFeature.ecoreFeature.name +; + +private boolean skip(genmodel::GenClassifier type, String genFeatureName) : +!genFeatureName.matches("layoutData|layout|template") +; + +private boolean skip(genmodel::GenDataType type, String genFeatureName) : +genFeatureName.matches("name") +; + +cached boolean generateSyncronizationCode(genmodel::GenClass metaclass) : +metaclass.ecoreClass.eAllSuperTypes.contains(metaclass.ecoreClass.ePackage.getEClassifier("FigureMarker")) +; + +boolean isInnerClassViewmap(gmfgen::Viewmap viewmap) : +false +; + +boolean isInnerClassViewmap(gmfgen::InnerClassViewmap viewmap) : +true +; + +cached String getProcessChangesCall(genmodel::GenFeature genFeature, String modelElementVariable) : +setValue(genFeature, transform(genFeature, getValue(genFeature, modelElementVariable))) +; + +private String getValue(genmodel::GenFeature genFeature, String modelElementVariable) : +isCornerWidthOrHeight(genFeature) ? +DPtoLPcall(modelElementVariable+".getCornerWidth()")+", "+DPtoLPcall(modelElementVariable+".getCornerHeight()") : +modelElementVariable+"."+getGetAccessor(genFeature)+"()" +; + +private String DPtoLPcall(String variable) : +"getMapMode().DPtoLP("+variable+")" +; + +private String transform(genmodel::GenFeature genFeature, String getValueString) : +switch (getName(genFeature)) { +case "cornerWidth": "new org.eclipse.draw2d.geometry.Dimension("+getValueString+")" +case "cornerHeight": "new org.eclipse.draw2d.geometry.Dimension("+getValueString+")" +case "lineKind": "getLineStyle("+getValueString+")" +case "template": "getPointList("+getValueString+")" +default : getValueString +} +; + +private boolean isCornerWidthOrHeight(genmodel::GenFeature genFeature) : +getName(genFeature).matches("cornerWidth|cornerHeight") +; + +private String getAccessorCall(genmodel::GenFeature genFeature) : +switch (getAccessorName(genFeature)) { +case "XorFill": "myFigure.setFillXOR" +case "XorOutline": "myFigure.setOutlineXOR" +case "LineKind": "myFigure.setLineStyle" +case "CornerWidth": "myFigure.setCornerDimensions" +case "CornerHeight": "myFigure.setCornerDimensions" +case "Template": "myFigure.setPoints" +default : getTypedAccessorCall(genFeature, getTypeGenClassifier(genFeature)) +} +; + +private String getTypedAccessorCall(genmodel::GenFeature genFeature, genmodel::GenDataType type) : +"myFigure.set"+getAccessorName(genFeature) +; + +private String getTypedAccessorCall(genmodel::GenFeature genFeature, genmodel::GenClassifier type) : +getName(genFeature)+"Changed" +; + +private String setValue(genmodel::GenFeature genFeature, String transformedValueString) : +getAccessorCall(genFeature)+"("+transformedValueString+")" +; Index: templates/aspects/xpt/propsheet/PropertySection.xpt =================================================================== RCS file: templates/aspects/xpt/propsheet/PropertySection.xpt diff -N templates/aspects/xpt/propsheet/PropertySection.xpt --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/aspects/xpt/propsheet/PropertySection.xpt 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,191 @@ +/* + * Copyright (c) 2007 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: + * Anna Karjakina (Borland) - initial API and implementation + */ +«IMPORT "http://www.eclipse.org/gmf/2005/GenModel/2.0"» +«IMPORT "http://www.eclipse.org/emf/2002/Ecore"» + +«AROUND getPropertySourceMethod FOR gmfgen::GenCustomPropertyTab-» + «EXPAND xpt::Common::generatedMemberComment» + public org.eclipse.ui.views.properties.IPropertySource getPropertySource(Object object) { + «EXPAND additionalPropertiesProvider-» + if (object instanceof org.eclipse.ui.views.properties.IPropertySource) { + return (org.eclipse.ui.views.properties.IPropertySource) object; + } + org.eclipse.emf.common.notify.AdapterFactory af = getAdapterFactory(object); + if (af != null) { + org.eclipse.emf.edit.provider.IItemPropertySource ips = (org.eclipse.emf.edit.provider.IItemPropertySource) af.adapt(object, org.eclipse.emf.edit.provider.IItemPropertySource.class); + if (ips != null) { + return new org.eclipse.emf.edit.ui.provider.PropertySource(object, ips); + } + } + if (object instanceof org.eclipse.core.runtime.IAdaptable) { + return (org.eclipse.ui.views.properties.IPropertySource) ((org.eclipse.core.runtime.IAdaptable) object).getAdapter(org.eclipse.ui.views.properties.IPropertySource.class); + } + return null; + } +«ENDAROUND» + +«DEFINE additionalPropertiesProvider FOR gmfgen::GenCustomPropertyTab-» +if (object instanceof org.eclipse.gmf.gmfgraph.Layoutable) { + org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource compositeSource = new org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource(object); + + compositeSource.addPropertySource(adaptToOldCompositePropertySource(object)); + + org.eclipse.emf.edit.provider.IItemPropertyDescriptor layoutPropertyDescriptor = new ChildMetaclassItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), "Layout Manager", "Layout Manager", org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), true, new org.eclipse.emf.ecore.EObject[] {org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createBorderLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createCustomLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createFlowLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createGridLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createStackLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createXYLayout()}); + compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(object, new SingleDescriptorPropertySource(layoutPropertyDescriptor), "EMF")); //$NON-NLS-1$ + + org.eclipse.emf.edit.provider.IItemPropertyDescriptor layoutDataPropertyDescriptor = new ChildMetaclassItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), "Layout Data", "Layout Data", org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getLayoutable_LayoutData(), true, new org.eclipse.emf.ecore.EObject[] {org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createBorderLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createCustomLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createGridLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createXYLayoutData()}); + compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(object, new SingleDescriptorPropertySource(layoutDataPropertyDescriptor), "EMF")); //$NON-NLS-1$ + + if (object instanceof org.eclipse.gmf.gmfgraph.Polyline) { + int counter = 1; + for (java.util.Iterator it = ((org.eclipse.gmf.gmfgraph.Polyline) object).getTemplate().iterator(); it.hasNext(); counter++) { + org.eclipse.gmf.gmfgraph.Point nextPoint = (org.eclipse.gmf.gmfgraph.Point) it.next(); + final String titleX = "Point " + counter + " X"; + org.eclipse.emf.edit.provider.IItemPropertyDescriptor nextPointPropertyDescriptorX = new org.eclipse.emf.edit.provider.ItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), titleX, titleX, org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getPoint_X(), true, "Template"); + compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorX), "EMF") { + protected org.eclipse.ui.views.properties.IPropertyDescriptor newPropertyDescriptor(org.eclipse.emf.edit.provider.IItemPropertyDescriptor itemPropertyDescriptor) { + return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor(object, itemPropertyDescriptor, getCategory()) { + public Object getId() { + return titleX; + } + }; + } + }); + + final String titleY = "Point " + counter + " Y"; + org.eclipse.emf.edit.provider.IItemPropertyDescriptor nextPointPropertyDescriptorY = new org.eclipse.emf.edit.provider.ItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), titleY, titleY, org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getPoint_Y(), true, "Template"); + compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorY), "EMF") { + protected org.eclipse.ui.views.properties.IPropertyDescriptor newPropertyDescriptor(org.eclipse.emf.edit.provider.IItemPropertyDescriptor itemPropertyDescriptor) { + return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor(object, itemPropertyDescriptor, getCategory()) { + public Object getId() { + return titleY; + } + }; + } + }); + } + } + + return compositeSource; +} +«ENDDEFINE» + +«AROUND additions FOR gmfgen::GenCustomPropertyTab-» +«EXPAND xpt::Common::generatedMemberComment» +private org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource adaptToOldCompositePropertySource(Object object) { + if (object instanceof org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource) { + return (org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource) object; + } + org.eclipse.emf.common.notify.AdapterFactory af = getAdapterFactory(object); + if (af != null) { + org.eclipse.emf.edit.provider.IItemPropertySource ips = (org.eclipse.emf.edit.provider.IItemPropertySource) af.adapt(object, org.eclipse.emf.edit.provider.IItemPropertySource.class); + if (ips != null) { + return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(object, ips, "EMF"); + } + } + if (object instanceof org.eclipse.core.runtime.IAdaptable) { + return (org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource) ((org.eclipse.core.runtime.IAdaptable) object).getAdapter(org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource.class); + } + return null; +} + +«EXPAND SingleDescriptorPropertySourceClass-» +«EXPAND ChildMetaclassItemPropertyDescriptorClass-» +«ENDAROUND» + +«DEFINE SingleDescriptorPropertySourceClass FOR gmfgen::GenCustomPropertyTab» +«EXPAND xpt::Common::generatedMemberComment» +public static class SingleDescriptorPropertySource implements org.eclipse.emf.edit.provider.IItemPropertySource { + + «EXPAND xpt::Common::generatedMemberComment» + private org.eclipse.emf.edit.provider.IItemPropertyDescriptor myPropertyDescriptor; + + «EXPAND xpt::Common::generatedMemberComment» + private java.util.List myDescriptors = new java.util.LinkedList(); + + «EXPAND xpt::Common::generatedMemberComment» + SingleDescriptorPropertySource(org.eclipse.emf.edit.provider.IItemPropertyDescriptor propertyDescriptor) { + myPropertyDescriptor = propertyDescriptor; + myDescriptors.add(myPropertyDescriptor); + } + + «EXPAND xpt::Common::generatedMemberComment» + public java.util.List getPropertyDescriptors(Object object) { + return myDescriptors; + } + + «EXPAND xpt::Common::generatedMemberComment» + public org.eclipse.emf.edit.provider.IItemPropertyDescriptor getPropertyDescriptor(Object object, Object propertyID) { + return myPropertyDescriptor; + } + + «EXPAND xpt::Common::generatedMemberComment» + public Object getEditableValue(Object object) { + return object; + } +} +«ENDDEFINE» + +«DEFINE ChildMetaclassItemPropertyDescriptorClass FOR gmfgen::GenCustomPropertyTab» +«EXPAND xpt::Common::generatedMemberComment» +public static class ChildMetaclassItemPropertyDescriptor extends org.eclipse.emf.edit.provider.ItemPropertyDescriptor { + + «EXPAND xpt::Common::generatedMemberComment» + private org.eclipse.emf.ecore.EObject[] myValues; + + «EXPAND xpt::Common::generatedMemberComment» + ChildMetaclassItemPropertyDescriptor(org.eclipse.emf.common.notify.AdapterFactory adapterFactory, String displayName, String description, org.eclipse.emf.ecore.EStructuralFeature feature, boolean isSettable, org.eclipse.emf.ecore.EObject[] valueInstances) { + super(adapterFactory, displayName, description, feature, isSettable); + myValues = valueInstances; + } + + «EXPAND xpt::Common::generatedMemberComment» + protected java.util.Collection getComboBoxObjects(Object object) { + if (object instanceof org.eclipse.emf.ecore.EObject) { + org.eclipse.emf.ecore.EObject eObject = (org.eclipse.emf.ecore.EObject) object; + Object currentValue = getValue(eObject, feature); + java.util.Collection result = new java.util.ArrayList(); + result.add(currentValue); + org.eclipse.emf.ecore.EClass valueEClass = currentValue instanceof org.eclipse.emf.ecore.EObject ? ((org.eclipse.emf.ecore.EObject) currentValue).eClass() : null; + for (int i = 0; i < myValues.length; i++) { + if (myValues[i].eClass() == valueEClass) { + continue; + } + result.add(myValues[i]); + } + if (currentValue != null) { + result.add(null); + } + return result; + } + return null; + } + + «EXPAND xpt::Common::generatedMemberComment» + public void setPropertyValue(Object object, Object value) { + if (value instanceof org.eclipse.emf.ecore.EObject) { + org.eclipse.emf.ecore.EClass eClass = ((org.eclipse.emf.ecore.EObject) value).eClass(); + value = eClass.getEPackage().getEFactoryInstance().create(eClass); + if (value instanceof org.eclipse.gmf.gmfgraph.XYLayoutData) { + org.eclipse.gmf.gmfgraph.XYLayoutData xyLayoutData = (org.eclipse.gmf.gmfgraph.XYLayoutData) value; + xyLayoutData.setTopLeft(org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createPoint()); + xyLayoutData.getTopLeft().setX(0); + xyLayoutData.getTopLeft().setY(0); + xyLayoutData.setSize(org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createDimension()); + xyLayoutData.getSize().setDx(40); + xyLayoutData.getSize().setDy(40); + } + } + super.setPropertyValue(object, value); + } +} +«ENDDEFINE» Index: templates/aspects/xpt/diagram/editparts/NodeEditPart.xpt =================================================================== RCS file: templates/aspects/xpt/diagram/editparts/NodeEditPart.xpt diff -N templates/aspects/xpt/diagram/editparts/NodeEditPart.xpt --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/aspects/xpt/diagram/editparts/NodeEditPart.xpt 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,464 @@ +/* + * Copyright (c) 2007 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: + * Anna Karjakina (Borland) - initial API and implementation + */ + +«IMPORT "http://www.eclipse.org/gmf/2005/GraphicalDefinition"» +«IMPORT "http://www.eclipse.org/gmf/2005/GenModel/2.0"» +«IMPORT "http://www.eclipse.org/emf/2002/GenModel"» +«IMPORT "http://www.eclipse.org/emf/2002/Ecore"» + +«EXTENSION xpt::GenModelUtils» +«EXTENSION xpt::diagram::editparts::Utils» +«EXTENSION aspects::xpt::diagram::editparts::Utils» + +«DEFINE addFeaturePropertyChangeListeners FOR genmodel::GenFeature-» +«IF this.isListType()-» +for (int i = 0; i < modelElement.«this.getGetAccessor()»().size(); i++) { + addListenerFilter("«this.getFeatureAccessorName()»_PropertiesListener#" + i, «this.getFeatureAccessorName()»_PropertiesListener, (org.eclipse.emf.ecore.EObject) modelElement.«this.getGetAccessor()»().get(i)); +} +«ELSE-» +if (modelElement.«this.getGetAccessor()»() != null) { + addListenerFilter("«this.getFeatureAccessorName()»_PropertiesListener", «this.getFeatureAccessorName()»_PropertiesListener, modelElement.«this.getGetAccessor()»()); +} +«ENDIF-» +«ENDDEFINE» + +«DEFINE setViewColor(String modelColorProperty, String viewColorProperty) FOR gmfgen::GenNode-» +if (modelElement.get«modelColorProperty»Color() != null) { + final int rgbColor; + if (modelElement.get«modelColorProperty»Color() instanceof org.eclipse.gmf.gmfgraph.RGBColor) { + org.eclipse.gmf.gmfgraph.RGBColor modelColor = (org.eclipse.gmf.gmfgraph.RGBColor) modelElement.get«modelColorProperty»Color(); + rgbColor = (modelColor.getRed()& 0xFF) | ((modelColor.getGreen() & 0xFF) << 8) | ((modelColor.getBlue() & 0xFF) << 16); + } else { + org.eclipse.gmf.gmfgraph.ConstantColor modelColor = (org.eclipse.gmf.gmfgraph.ConstantColor) modelElement.get«modelColorProperty»Color(); + switch (modelColor.getValue().getValue()) { +/* + case : { + rgbColor = org.eclipse.draw2d.ColorConstants..getRGB().hashCode(); + break; + } +*/ + default: + rgbColor = -1; + } + } + if (rgbColor != -1 && shapeStyle.get«viewColorProperty»Color() != rgbColor) { + org.eclipse.emf.workspace.AbstractEMFOperation setColorOperation = new org.eclipse.emf.workspace.AbstractEMFOperation(getEditingDomain(), "Synchronizing view «modelColorProperty» color with the model", java.util.Collections.singletonMap(org.eclipse.emf.transaction.Transaction.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$ + protected org.eclipse.core.runtime.IStatus doExecute(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info) throws org.eclipse.core.commands.ExecutionException { + shapeStyle.set«viewColorProperty»Color(rgbColor); + return org.eclipse.core.runtime.Status.OK_STATUS; + } + }; + try { + setColorOperation.execute(new org.eclipse.core.runtime.NullProgressMonitor(), null); + } catch (org.eclipse.core.commands.ExecutionException e) { + «getDiagram().editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Unable to synchronize view «modelColorProperty» background color with the model", e); //$NON-NLS-1$ + } + } +} +«ENDDEFINE» + +«DEFINE listenerForDatatype FOR genmodel::GenFeature-» +«EXPAND listenerForDatatype(getTypeGenClassifier())-» +«ENDDEFINE» + +«DEFINE listenerForDatatype(genmodel::GenClassifier type) FOR genmodel::GenFeature-» + final org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener «this.getFeatureAccessorName()»_PropertiesListener = new org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener() { + public void notifyChanged(org.eclipse.emf.common.notify.Notification notification) { + «getProcessChangesCall(this, "modelElement")»; + } + }; + «EXPAND addFeaturePropertyChangeListeners-» +«ENDDEFINE» + +«DEFINE listenerForDatatype(genmodel::GenDataType type) FOR genmodel::GenFeature-» +«ENDDEFINE» + +«DEFINE notifyBodyForDatatype FOR genmodel::GenFeature-» +«EXPAND notifyBodyForDatatype(getTypeGenClassifier())-» +«ENDDEFINE» + +«DEFINE notifyBodyForDatatype(genmodel::GenClassifier type) FOR genmodel::GenFeature-» + «IF this.isListType()-» + int listSize = modelElement.«this.getGetAccessor()»().size(); + if (notification.getOldValue() instanceof java.util.Collection) { + listSize += ((java.util.Collection) notification.getOldValue()).size(); + } else { + listSize++; + } + for (int i = 0; i < listSize; i++) { + removeListenerFilter("«this.getFeatureAccessorName()»_PropertiesListener#" + i); + } + «ELSE-» + removeListenerFilter("«this.getFeatureAccessorName()»_PropertiesListener"); + «ENDIF-» + «EXPAND addFeaturePropertyChangeListeners-» +«ENDDEFINE» + +«DEFINE notifyBodyForDatatype(genmodel::GenDataType type) FOR genmodel::GenFeature-» +«ENDDEFINE» + +«AROUND extendsList FOR gmfgen::GenNode-» +«IF generateSyncronizationCode(metaclass()) && isInnerClassViewmap(viewmap)-» +«getDiagram().editPartsPackageName».AbstractFigureEditPart«ELSE»«targetDef.proceed()»«ENDIF» +«ENDAROUND» + +«AROUND additions FOR gmfgen::GenNode-» +«IF generateSyncronizationCode(metaclass())-» +«EXPAND additions(viewmap)-» +«ELSE-» +«targetDef.proceed()» +«ENDIF-» +«ENDAROUND» + +«DEFINE additions(gmfgen::Viewmap innerViewmap) FOR gmfgen::GenNode-» +«ENDDEFINE» + +«DEFINE additions(gmfgen::InnerClassViewmap innerViewmap) FOR gmfgen::GenNode-» + «EXPAND xpt::Common::generatedMemberComment» + private «innerViewmap.className» myFigure; + +// TODO: use myFigure? + «EXPAND xpt::Common::generatedMemberComment» + protected org.eclipse.draw2d.Figure myNodeFigure; + + «EXPAND xpt::Common::generatedMemberComment» + public void activate() { + if (isActive()){ + return; + } + org.eclipse.gmf.runtime.notation.View view = (org.eclipse.gmf.runtime.notation.View) getModel(); + if (view.getElement() == null) { + super.activate(); + return; + } + + final «metaclass().getQualifiedInterfaceName()» modelElement = («metaclass().getQualifiedInterfaceName()») view.getElement(); + + «FOREACH metaclass().getAllGenFeatures() AS nextGenFeature» + «IF !skip(nextGenFeature)-» + «EXPAND listenerForDatatype FOR nextGenFeature-» + addListenerFilter("«nextGenFeature.getFeatureAccessorName()»_Listener", new org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener() { + public void notifyChanged(org.eclipse.emf.common.notify.Notification notification) { + «EXPAND notifyBodyForDatatype FOR nextGenFeature-» + «getProcessChangesCall(nextGenFeature, "modelElement")»; + } + }, modelElement, «nextGenFeature.genClass.genPackage.getQualifiedPackageInterfaceName()».eINSTANCE.get«nextGenFeature.getFeatureAccessorName()»()); + «ENDIF-» + «ENDFOREACH» + + final org.eclipse.gmf.runtime.notation.Bounds bounds = (org.eclipse.gmf.runtime.notation.Bounds) ((org.eclipse.gmf.runtime.notation.Node) view).getLayoutConstraint(); + final int sizeX; + final int sizeY; + if (modelElement.getPreferredSize() != null) { + sizeX = getMapMode().DPtoLP(modelElement.getPreferredSize().getDx()); + sizeY = getMapMode().DPtoLP(modelElement.getPreferredSize().getDy()); + } else { + sizeX = getMapMode().DPtoLP(20); + sizeY = getMapMode().DPtoLP(20); + } + final int locationX; + final int locationY; + if (modelElement.getLocation() != null) { + locationX = getMapMode().DPtoLP(modelElement.getLocation().getX()); + locationY = getMapMode().DPtoLP(modelElement.getLocation().getY()); + } else { + locationX = bounds.getX(); + locationY = bounds.getY(); + } + if (sizeX != bounds.getWidth() || sizeY != bounds.getHeight() || locationX != bounds.getX() || locationY != bounds.getY()) { + try { + new org.eclipse.emf.workspace.AbstractEMFOperation(getEditingDomain(), "Synchronizing view size with the model", java.util.Collections.singletonMap(org.eclipse.emf.transaction.Transaction.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$ + protected org.eclipse.core.runtime.IStatus doExecute(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info) throws org.eclipse.core.commands.ExecutionException { + bounds.setX(locationX); + bounds.setY(locationY); + bounds.setWidth(sizeX); + bounds.setHeight(sizeY); + return org.eclipse.core.runtime.Status.OK_STATUS; + } + }.execute(new org.eclipse.core.runtime.NullProgressMonitor(), null); + } catch (org.eclipse.core.commands.ExecutionException e) { + «getDiagram().editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Unable to synchronize view size with the model", e); //$NON-NLS-1$ + } + } + addListenerFilter("BoundsListener", new org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener() { + public void notifyChanged(final org.eclipse.emf.common.notify.Notification notification) { + try { + new org.eclipse.emf.workspace.AbstractEMFOperation(getEditingDomain(), "Synchronizing model size with the view", java.util.Collections.singletonMap(org.eclipse.emf.transaction.Transaction.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$ + protected org.eclipse.core.runtime.IStatus doExecute(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info) throws org.eclipse.core.commands.ExecutionException { + org.eclipse.gmf.runtime.notation.Bounds bounds = (org.eclipse.gmf.runtime.notation.Bounds) notification.getNotifier(); + org.eclipse.gmf.gmfgraph.Dimension dim = modelElement.getPreferredSize(); + if (dim == null) { + dim = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createDimension(); + modelElement.setPreferredSize(dim); + } + org.eclipse.gmf.gmfgraph.Point location = modelElement.getLocation(); + if (location == null) { + location = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createPoint(); + modelElement.setLocation(location); + } + + int x = getMapMode().LPtoDP(bounds.getX()); + int y = getMapMode().LPtoDP(bounds.getY()); + int width = getMapMode().LPtoDP(bounds.getWidth()); + int height = getMapMode().LPtoDP(bounds.getHeight()); + if (location.getX() != x || location.getY() != y) { + location.setX(x); + location.setY(y); + } + if (dim.getDx() != width || dim.getDy() != height) { + dim.setDx(width); + dim.setDy(height); + } + + myNodeFigure.setPreferredSize(bounds.getWidth(), bounds.getHeight()); + myNodeFigure.setLocation(new org.eclipse.draw2d.geometry.Point(bounds.getX(), bounds.getY())); + + if (modelElement.getLayoutData() instanceof org.eclipse.gmf.gmfgraph.XYLayoutData || (modelElement.getParent() != null && modelElement.getParent().getLayout() instanceof org.eclipse.gmf.gmfgraph.XYLayout)) { + org.eclipse.gmf.gmfgraph.XYLayoutData xyLayoutData = (org.eclipse.gmf.gmfgraph.XYLayoutData) modelElement.getLayoutData(); + if (xyLayoutData == null) { + xyLayoutData = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createXYLayoutData(); + modelElement.setLayoutData(xyLayoutData); + xyLayoutData.setTopLeft(org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createPoint()); + xyLayoutData.getTopLeft().setX(0); + xyLayoutData.getTopLeft().setY(0); + xyLayoutData.setSize(org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createDimension()); + xyLayoutData.getSize().setDx(40); + xyLayoutData.getSize().setDy(40); + } + org.eclipse.gmf.gmfgraph.Point topLeft; + if (xyLayoutData.getTopLeft() != null) { + topLeft = xyLayoutData.getTopLeft(); + } else { + topLeft = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createPoint(); + xyLayoutData.setTopLeft(topLeft); + } + if (topLeft.getX() != location.getX() || topLeft.getY() != location.getY()) { + topLeft.setX(location.getX()); + topLeft.setY(location.getY()); + } + + org.eclipse.gmf.gmfgraph.Dimension size; + if (xyLayoutData.getSize() != null) { + size = xyLayoutData.getSize(); + } else { + size = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createDimension(); + xyLayoutData.setSize(size); + } + if (size.getDx() != dim.getDx() || size.getDy() != dim.getDy()) { + size.setDx(dim.getDx()); + size.setDy(dim.getDy()); + } + } + return org.eclipse.core.runtime.Status.OK_STATUS; + } + }.execute(new org.eclipse.core.runtime.NullProgressMonitor(), null); + } catch (org.eclipse.core.commands.ExecutionException e) { + «getDiagram().editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Unable to synchronize model size with the view", e); //$NON-NLS-1$ + } + if (getRoot() != null) { + handleMajorSemanticChange(); + } + } + }, bounds); + + final org.eclipse.gmf.runtime.notation.ShapeStyle shapeStyle = (org.eclipse.gmf.runtime.notation.ShapeStyle) view.getStyle(org.eclipse.gmf.runtime.notation.NotationPackage.eINSTANCE.getShapeStyle()); + «EXPAND setViewColor("Background", "Fill")-» + «EXPAND setViewColor("Foreground", "Line")-» + addListenerFilter("ShapeStyleListener", new org.eclipse.gmf.runtime.diagram.core.listener.NotificationListener() { + public void notifyChanged(final org.eclipse.emf.common.notify.Notification notification) { + try { + new org.eclipse.emf.workspace.AbstractEMFOperation(getEditingDomain(), "Synchronizing model size with the view", java.util.Collections.singletonMap(org.eclipse.emf.transaction.Transaction.OPTION_UNPROTECTED, Boolean.TRUE)) { //$NON-NLS-1$ + protected org.eclipse.core.runtime.IStatus doExecute(org.eclipse.core.runtime.IProgressMonitor monitor, org.eclipse.core.runtime.IAdaptable info) throws org.eclipse.core.commands.ExecutionException { + org.eclipse.gmf.runtime.notation.ShapeStyle shapeStyle = (org.eclipse.gmf.runtime.notation.ShapeStyle) notification.getNotifier(); + switch (notification.getFeatureID(org.eclipse.gmf.runtime.notation.ShapeStyle.class)) { + case org.eclipse.gmf.runtime.notation.NotationPackage.SHAPE_STYLE__FILL_COLOR: + { + int color = shapeStyle.getFillColor(); + org.eclipse.gmf.gmfgraph.RGBColor modelColor; + if (modelElement.getBackgroundColor() instanceof org.eclipse.gmf.gmfgraph.RGBColor) { + modelColor = (org.eclipse.gmf.gmfgraph.RGBColor) modelElement.getBackgroundColor(); + } else { + modelColor = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createRGBColor(); + modelElement.setBackgroundColor(modelColor); + } + if (modelColor.getRed() != (color & 0x000000FF) || modelColor.getGreen() != (color & 0x0000FF00) >> 8 || modelColor.getBlue() != (color & 0x00FF0000) >> 16) { + modelColor.setRed(color & 0x000000FF); + modelColor.setGreen((color & 0x0000FF00) >> 8); + modelColor.setBlue((color & 0x00FF0000) >> 16); + } + break; + } + case org.eclipse.gmf.runtime.notation.NotationPackage.SHAPE_STYLE__LINE_COLOR: + { + int color = shapeStyle.getLineColor(); + org.eclipse.gmf.gmfgraph.RGBColor modelColor; + if (modelElement.getForegroundColor() instanceof org.eclipse.gmf.gmfgraph.RGBColor) { + modelColor = (org.eclipse.gmf.gmfgraph.RGBColor) modelElement.getForegroundColor(); + } else { + modelColor = org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createRGBColor(); + modelElement.setForegroundColor(modelColor); + } + if (modelColor.getRed() != (color & 0x000000FF) || modelColor.getGreen() != (color & 0x0000FF00) >> 8 || modelColor.getBlue() != (color & 0x00FF0000) >> 16) { + modelColor.setRed(color & 0x000000FF); + modelColor.setGreen((color & 0x0000FF00) >> 8); + modelColor.setBlue((color & 0x00FF0000) >> 16); + } + break; + } + } + return org.eclipse.core.runtime.Status.OK_STATUS; + } + }.execute(new org.eclipse.core.runtime.NullProgressMonitor(), null); + } catch (org.eclipse.core.commands.ExecutionException e) { + «getDiagram().editorGen.plugin.getActivatorQualifiedClassName()».getInstance().logError("Unable to synchronize model size with the view", e); //$NON-NLS-1$ + } + } + }, shapeStyle); + super.activate(); + } + + «EXPAND xpt::Common::generatedMemberComment» + protected org.eclipse.draw2d.LayoutManager getFigureLayoutManager() { + return myFigure.getLayoutManager(); + } + + «EXPAND xpt::Common::generatedMemberComment» + protected void setFigureLayoutManager(org.eclipse.draw2d.LayoutManager layoutManager) { + myFigure.setLayoutManager(layoutManager); + } + + «EXPAND xpt::Common::generatedMemberComment» + protected void refreshBounds() { + if (((org.eclipse.gmf.runtime.notation.View) getParent().getModel()).getElement() instanceof org.eclipse.gmf.gmfgraph.FigureMarker) { + int width = ((Integer) getStructuralFeatureValue(org.eclipse.gmf.runtime.notation.NotationPackage.eINSTANCE.getSize_Width())).intValue(); + int height = ((Integer) getStructuralFeatureValue(org.eclipse.gmf.runtime.notation.NotationPackage.eINSTANCE.getSize_Height())).intValue(); + myNodeFigure.setPreferredSize(new org.eclipse.draw2d.geometry.Dimension(width, height)); + } else { + super.refreshBounds(); + } + } +«ENDDEFINE» + +«DEFINE overrideGetCurrentConstraintFor(gmfgen::Viewmap innerViewmap) FOR gmfgen::GenNode-»«ENDDEFINE» + +«DEFINE overrideGetCurrentConstraintFor(gmfgen::InnerClassViewmap innerViewmap) FOR gmfgen::GenNode-» + +protected org.eclipse.draw2d.geometry.Rectangle getCurrentConstraintFor(org.eclipse.gef.GraphicalEditPart child) { + org.eclipse.draw2d.geometry.Rectangle result = super.getCurrentConstraintFor(child); + if (result == null) { + org.eclipse.draw2d.IFigure fig = child.getFigure(); + result = fig.getBounds().getCopy(); + } + return result; +} +«ENDDEFINE» + +«DEFINE overrideGetLayoutOrigin(gmfgen::Viewmap innerViewmap) FOR gmfgen::GenNode-»«ENDDEFINE» + +«DEFINE overrideGetLayoutOrigin(gmfgen::InnerClassViewmap innerViewmap) FOR gmfgen::GenNode-» + +protected org.eclipse.draw2d.geometry.Point getLayoutOrigin() { + return ((org.eclipse.gmf.runtime.diagram.ui.editparts.GraphicalEditPart)getHost()).getContentPane().getClientArea().getLocation(); +} +«ENDDEFINE» + +«AROUND createLayoutEditPolicyMethodBody FOR gmfgen::GenNode-» +«IF generateSyncronizationCode(metaclass())-» + «IF gmfgen::ViewmapLayoutType::XY_LAYOUT.value == getLayoutType().value-» + org.eclipse.gmf.runtime.diagram.ui.editpolicies.XYLayoutEditPolicy lep = + new org.eclipse.gmf.runtime.diagram.ui.editpolicies.XYLayoutEditPolicy() { + + protected org.eclipse.gef.EditPolicy createChildEditPolicy(org.eclipse.gef.EditPart child) { + «IF hasBorderItems()-» + if (child instanceof org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart) { + return new org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy(); + } + «ENDIF-» + org.eclipse.gef.EditPolicy result = super.createChildEditPolicy(child); + if (result == null) { + return new org.eclipse.gmf.runtime.diagram.ui.editpolicies.ResizableShapeEditPolicy(); + } + return result; + } + «EXPAND overrideGetLayoutOrigin(viewmap)-» + «EXPAND overrideGetCurrentConstraintFor(viewmap)-» + + }; + return lep; + «ELSEIF gmfgen::ViewmapLayoutType::TOOLBAR_LAYOUT.value == getLayoutType().value» + org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConstrainedToolbarLayoutEditPolicy lep = + new org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConstrainedToolbarLayoutEditPolicy() { + + protected org.eclipse.gef.EditPolicy createChildEditPolicy(org.eclipse.gef.EditPart child) { + «IF hasBorderItems()-» + if (child instanceof org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart) { + return new org.eclipse.gmf.runtime.diagram.ui.editpolicies.BorderItemSelectionEditPolicy(); + } + «ENDIF-» + if (child.getEditPolicy(org.eclipse.gef.EditPolicy.PRIMARY_DRAG_ROLE) == null) { + if (child instanceof org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart) { + return new «getDiagram().getTextSelectionEditPolicyQualifiedClassName()»(); + } + } + return super.createChildEditPolicy(child); + } + «EXPAND overrideGetLayoutOrigin(this.viewmap)-» + + }; + return lep; + «ELSE-» + «targetDef.proceed()» + «ENDIF-» +«ELSE» +«targetDef.proceed()» +«ENDIF-» +«ENDAROUND» + +«AROUND createNodeShape(gmfgen::GenNode node) FOR gmfgen::InnerClassViewmap» +«IF generateSyncronizationCode(node.metaclass()) && isInnerClassViewmap(node.viewmap)» + «EXPAND xpt::Common::generatedMemberComment» + protected org.eclipse.draw2d.IFigure createNodeShape() { + «className» figure = new «className»(); + «IF node.childNodes.size() > 0 && node.getLayoutType().value == gmfgen::ViewmapLayoutType::XY_LAYOUT.value-» + figure.setUseLocalCoordinates(true); + «ENDIF-» + «EXPAND processChanges(node)-» + return primaryShape = figure; + } + + «EXPAND xpt::Common::generatedMemberComment» + public «className» getPrimaryShape() { + return («className») primaryShape; + } +«ELSE» +«targetDef.proceed()» +«ENDIF» +«ENDAROUND» + +«DEFINE processChanges(gmfgen::GenNode node) FOR gmfgen::InnerClassViewmap-» + myFigure = figure; + «node.metaclass().getQualifiedInterfaceName()» modelElement = («node.metaclass().getQualifiedInterfaceName()») ((org.eclipse.gmf.runtime.notation.View) getModel()).getElement(); + if (modelElement != null) { + «FOREACH node.metaclass().getAllGenFeatures() AS nextGenFeature-» + «IF !skip(nextGenFeature)-» + { + «getProcessChangesCall(nextGenFeature, "modelElement")»; + } + «ENDIF-» + «ENDFOREACH-» + } +«ENDDEFINE» + +«AROUND setupNodePlate FOR gmfgen::GenNode-» +«IF generateSyncronizationCode(metaclass()) && isInnerClassViewmap(viewmap)»myNodeFigure = result;«ELSE»«targetDef.proceed()»«ENDIF-» +«ENDAROUND» +