### Eclipse Workspace Patch 1.0 #P org.eclipse.gmf.codegen.lite Index: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/CompartmentEditPartGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/CompartmentEditPartGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/parts/CompartmentEditPartGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/parts/CompartmentEditPartGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,456 @@ +package org.eclipse.gmf.codegen.templates.lite.parts; + +import java.util.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; + +public class CompartmentEditPartGenerator +{ + protected static String nl; + public static synchronized CompartmentEditPartGenerator create(String lineSeparator) + { + nl = lineSeparator; + CompartmentEditPartGenerator result = new CompartmentEditPartGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_5 = " extends "; + protected final String TEXT_6 = " implements IUpdatableEditPart {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_7 = "(View view) {" + NL + "\t\tsetModel(view);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_8 = " getModelChildren() {" + NL + "\t\treturn ((View) getModel()).getChildren();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void createEditPolicies() {" + NL + "\t\t//XXX: install correct edit policies!"; + protected final String TEXT_9 = NL + "\t\tinstallEditPolicy("; + protected final String TEXT_10 = ".LAYOUT_ROLE, new "; + protected final String TEXT_11 = "() {" + NL + "\t\t\tprotected Command createChangeConstraintCommand(final "; + protected final String TEXT_12 = " request, EditPart child, Object constraint) {" + NL + "\t\t\t\tfinal Node node = (Node) child.getModel();" + NL + "\t\t\t\treturn new Command(\"Change node position/size\") {" + NL + "\t\t\t\t\tprivate "; + protected final String TEXT_13 = " moveDelta = request.getMoveDelta();" + NL + "\t\t\t\t\tprivate "; + protected final String TEXT_14 = " resizeDelta = request.getSizeDelta();" + NL + "" + NL + "\t\t\t\t\tpublic boolean canUndo() {" + NL + "\t\t\t\t\t\treturn canExecute();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic boolean canExecute() {" + NL + "\t\t\t\t\t\treturn node.getLayoutConstraint() instanceof Bounds;" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic void undo() {" + NL + "\t\t\t\t\t\texecute(moveDelta.getNegated(), resizeDelta.getNegated());" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic void execute() {" + NL + "\t\t\t\t\t\texecute(moveDelta, resizeDelta);" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tprivate void execute("; + protected final String TEXT_15 = " move, "; + protected final String TEXT_16 = " resize) {" + NL + "\t\t\t\t\t\tBounds bounds = (Bounds) node.getLayoutConstraint();" + NL + "\t\t\t\t\t\tbounds.setX(bounds.getX() + move.x);" + NL + "\t\t\t\t\t\tbounds.setY(bounds.getY() + move.y);" + NL + "\t\t\t\t\t\tbounds.setWidth(bounds.getWidth() + resize.width);" + NL + "\t\t\t\t\t\tbounds.setHeight(bounds.getHeight() + resize.height);" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t};" + NL + "\t\t\t}" + NL + "\t\t\tprotected Command createChangeConstraintCommand(EditPart child, Object constraint) {" + NL + "\t\t\t\tassert false;" + NL + "\t\t\t\treturn "; + protected final String TEXT_17 = ".INSTANCE;" + NL + "\t\t\t}"; + protected final String TEXT_18 = NL + "\t\tinstallEditPolicy("; + protected final String TEXT_19 = ".LAYOUT_ROLE, new "; + protected final String TEXT_20 = "() {" + NL + "\t\t\tprotected Object getConstraintFor("; + protected final String TEXT_21 = " rect) {" + NL + "\t\t\t\treturn null;" + NL + "\t\t\t}" + NL + "\t\t\tprotected Object getConstraintFor("; + protected final String TEXT_22 = " point) {" + NL + "\t\t\t\treturn null;" + NL + "\t\t\t}" + NL + "\t\t\tprotected Command createChangeConstraintCommand(EditPart child, Object constraint) {" + NL + "\t\t\t\treturn "; + protected final String TEXT_23 = ".INSTANCE;" + NL + "\t\t\t}"; + protected final String TEXT_24 = NL + "\t\t\tprotected Command getCreateCommand(CreateRequest request) {"; + protected final String TEXT_25 = NL + "\t\t\t\tif (request instanceof "; + protected final String TEXT_26 = ".CreateRequestEx) {" + NL + "\t\t\t\t\t"; + protected final String TEXT_27 = ".CreateRequestEx requestEx = ("; + protected final String TEXT_28 = ".CreateRequestEx) request;" + NL + "\t\t\t\t\tint[] visualIds = requestEx.getVisualIds();" + NL + "\t\t\t\t\tCompoundCommand result = new CompoundCommand();" + NL + "\t\t\t\t\tfor(int i = 0; i < visualIds.length; i++) {" + NL + "\t\t\t\t\t\tint nextVisualId = visualIds[i];" + NL + "\t\t\t\t\t\tswitch (nextVisualId) {"; + protected final String TEXT_29 = NL + "\t\t\t\t\t\tcase "; + protected final String TEXT_30 = ":" + NL + "\t\t\t\t\t\t\tresult.add(new Create"; + protected final String TEXT_31 = "Command((View) getModel(), requestEx"; + protected final String TEXT_32 = ", " + NL + "\t\t\t\t\t\t\t\t("; + protected final String TEXT_33 = ")getConstraintFor(request)"; + protected final String TEXT_34 = "));" + NL + "\t\t\t\t\t\t\tbreak;"; + protected final String TEXT_35 = NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\treturn result.unwrap();" + NL + "\t\t\t\t}"; + protected final String TEXT_36 = NL + "\t\t\t\treturn null;" + NL + "\t\t\t}" + NL + "\t\t});" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String getTitleName() {" + NL + "\t\treturn \""; + protected final String TEXT_37 = "\";" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_38 = " createFigure() {" + NL + "\t\t"; + protected final String TEXT_39 = " result = new "; + protected final String TEXT_40 = "();" + NL + "\t\tresult.setLabel(getTitleName());" + NL + "\t\tresult.setOpaque(false);" + NL + "\t\tresult.setLayoutManager(new "; + protected final String TEXT_41 = "());" + NL + "\t\t"; + protected final String TEXT_42 = " scrollPane = new "; + protected final String TEXT_43 = "();" + NL + "\t\tresult.add(scrollPane);"; + protected final String TEXT_44 = NL + "\t\t"; + protected final String TEXT_45 = " viewport = new "; + protected final String TEXT_46 = "();" + NL + "\t\tcontentPane = new "; + protected final String TEXT_47 = "();" + NL + "\t\tcontentPane.setLayoutManager(new "; + protected final String TEXT_48 = "());"; + protected final String TEXT_49 = NL + "\t\t"; + protected final String TEXT_50 = " viewport = new "; + protected final String TEXT_51 = "();" + NL + "\t\tcontentPane = new "; + protected final String TEXT_52 = "();" + NL + "\t\tcontentPane.setLayoutManager(new "; + protected final String TEXT_53 = "());"; + protected final String TEXT_54 = NL + "\t\tviewport.setContents(contentPane);" + NL + "\t\tscrollPane.setViewport(viewport);" + NL + "\t\treturn result;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic IFigure getContentPane() {" + NL + "\t\treturn contentPane;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate IFigure contentPane;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_55 = " resolveSemanticElement() {" + NL + "\t\tfor(EditPart editPart = this; editPart != null; editPart = editPart.getParent()) {" + NL + "\t\t\tView view = (View)editPart.getModel();" + NL + "\t\t\tif (view != null && view.getElement() != null) {" + NL + "\t\t\t\treturn ("; + protected final String TEXT_56 = ") view.getElement();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL; + protected final String TEXT_57 = NL; + protected final String TEXT_58 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_59 = " structuralFeatures2Refresher;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Refresher getRefresher("; + protected final String TEXT_60 = " feature, "; + protected final String TEXT_61 = " msg) {" + NL + "\t\tif (structuralFeatures2Refresher == null) {" + NL + "\t\t\tcreateRefreshers();" + NL + "\t\t}" + NL + "\t\treturn (Refresher) structuralFeatures2Refresher.get(feature);" + NL + "\t}" + NL + "" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void createRefreshers() {" + NL + "\t\tstructuralFeatures2Refresher = new HashMap();"; + protected final String TEXT_62 = NL; + protected final String TEXT_63 = "\t\tRefresher childrenRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshChildren();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_64 = ".eINSTANCE.getView_PersistedChildren(), childrenRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_65 = ".eINSTANCE.getView_TransientChildren(), childrenRefresher);"; + protected final String TEXT_66 = NL; + protected final String TEXT_67 = "\t\tRefresher visibilityRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshVisibility();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_68 = ".eINSTANCE.getView_Visible(), visibilityRefresher);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshVisuals() {" + NL + "\t\tsuper.refreshVisuals();" + NL + "//XXX:\t\trefreshBackgroundColor();" + NL + "//XXX:\t\trefreshForegroundColor();" + NL + "//XXX:\t\trefreshFont();" + NL + "\t\trefreshVisibility();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshVisibility() {" + NL + "\t\tboolean isVisible = ((View)getModel()).isVisible();" + NL + "\t\tboolean wasVisible = getFigure().isVisible();" + NL + "\t\tif (isVisible == wasVisible) {" + NL + "\t\t\treturn;" + NL + "\t\t}" + NL + "\t\tif (!isVisible && (getSelected() != SELECTED_NONE)) {" + NL + "\t\t\tgetViewer().deselect(this);" + NL + "\t\t}" + NL + "" + NL + "\t\tgetFigure().setVisible(isVisible);" + NL + "\t\tgetFigure().revalidate();" + NL + "\t}" + NL; + protected final String TEXT_69 = NL; + protected final String TEXT_70 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_71 = "static "; + protected final String TEXT_72 = "class Create"; + protected final String TEXT_73 = "Command extends "; + protected final String TEXT_74 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final "; + protected final String TEXT_75 = " parent;" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate "; + protected final String TEXT_76 = " createdNode;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic Create"; + protected final String TEXT_77 = "Command("; + protected final String TEXT_78 = " parent, "; + protected final String TEXT_79 = ".CreateRequestEx request"; + protected final String TEXT_80 = ", "; + protected final String TEXT_81 = " constraint"; + protected final String TEXT_82 = ") {" + NL + "\t\t\tthis.parent = parent;" + NL + "\t\t\tcreatedNode = "; + protected final String TEXT_83 = ".eINSTANCE.createNode();"; + protected final String TEXT_84 = NL + "\t\t\t"; + protected final String TEXT_85 = " createdDomainElement = "; + protected final String TEXT_86 = ".eINSTANCE.create(" + NL + "\t\t\t\t"; + protected final String TEXT_87 = ".eINSTANCE.get"; + protected final String TEXT_88 = "());"; + protected final String TEXT_89 = NL + "\t\t\t"; + protected final String TEXT_90 = " createdDomainElement = "; + protected final String TEXT_91 = ".eINSTANCE.create"; + protected final String TEXT_92 = "();"; + protected final String TEXT_93 = "\t\t\tcreatedNode.setElement(createdDomainElement);" + NL + "\t\t\t"; + protected final String TEXT_94 = NL + "\t\t\t"; + protected final String TEXT_95 = "."; + protected final String TEXT_96 = ".initializeElement(createdDomainElement);" + NL + "\t\t\t"; + protected final String TEXT_97 = ".decorateView(createdNode);"; + protected final String TEXT_98 = NL + "\t\t\t"; + protected final String TEXT_99 = " bounds = "; + protected final String TEXT_100 = ".eINSTANCE.createBounds();" + NL + "\t\t\tcreatedNode.setLayoutConstraint(bounds);" + NL + "\t\t\tbounds.setX(constraint.x);" + NL + "\t\t\tbounds.setY(constraint.y);"; + protected final String TEXT_101 = NL + "\t\t\tbounds.setWidth(Math.max(constraint.width, "; + protected final String TEXT_102 = "));" + NL + "\t\t\tbounds.setHeight(Math.max(constraint.height, "; + protected final String TEXT_103 = "));"; + protected final String TEXT_104 = NL + "\t\t\t"; + protected final String TEXT_105 = " domainModelEditDomain = "; + protected final String TEXT_106 = ".getEditingDomainFor(parent.getDiagram().getElement());"; + protected final String TEXT_107 = NL + "\t\t\t"; + protected final String TEXT_108 = " compoundCommand = new "; + protected final String TEXT_109 = "();" + NL + "\t\t\tcompoundCommand.append("; + protected final String TEXT_110 = ".create(domainModelEditDomain, "; + protected final String TEXT_111 = ", " + NL + "\t\t\t\t"; + protected final String TEXT_112 = ".eINSTANCE.get"; + protected final String TEXT_113 = "(), createdNode.getElement()));" + NL + "\t\t\tcompoundCommand.append("; + protected final String TEXT_114 = ".create(domainModelEditDomain, "; + protected final String TEXT_115 = ", " + NL + "\t\t\t\t"; + protected final String TEXT_116 = ".eINSTANCE.get"; + protected final String TEXT_117 = "(), createdNode.getElement()));" + NL + "\t\t\tthis.domainModelAddCommand = compoundCommand;"; + protected final String TEXT_118 = NL + "\t\t\tthis.domainModelAddCommand = "; + protected final String TEXT_119 = ".create(domainModelEditDomain, "; + protected final String TEXT_120 = ", " + NL + "\t\t\t\t"; + protected final String TEXT_121 = ".eINSTANCE.get"; + protected final String TEXT_122 = "(), createdNode.getElement());"; + protected final String TEXT_123 = NL + "\t\t\trequest.setCreatedObject(createdNode);" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final org.eclipse.emf.common.command.Command domainModelAddCommand;" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic boolean canExecute() {" + NL + "\t\t\treturn domainModelAddCommand != null && domainModelAddCommand.canExecute();" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic boolean canUndo() {" + NL + "\t\t\treturn domainModelAddCommand != null && domainModelAddCommand.canUndo();" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void execute() {" + NL + "\t\t\tparent.insertChild(createdNode);" + NL + "\t\t\tdomainModelAddCommand.execute();" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void undo() {" + NL + "\t\t\tparent.getPersistedChildren().remove(createdNode);" + NL + "\t\t\tdomainModelAddCommand.undo();" + NL + "\t\t}" + NL + "\t}"; + protected final String TEXT_124 = NL + "}" + NL; + protected final String TEXT_125 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenCompartment genCompartment = (GenCompartment) ((Object[]) argument)[0]; +GenNode genHost = genCompartment.getNode(); +GenDiagram genDiagram = genCompartment.getDiagram(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + importManager.emitPackageStatement(stringBuffer); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.addImport("org.eclipse.gef.commands.Command"); +importManager.addImport("org.eclipse.gef.commands.CompoundCommand"); +importManager.addImport("org.eclipse.gef.EditPart"); +importManager.addImport("org.eclipse.gef.requests.CreateRequest"); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_4); + stringBuffer.append(genCompartment.getEditPartClassName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")); + stringBuffer.append(TEXT_6); + stringBuffer.append(genCompartment.getEditPartClassName()); + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName("java.util.List")); + stringBuffer.append(TEXT_8); + if (!genCompartment.isListLayout()) { + stringBuffer.append(TEXT_9); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_10); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.XYLayoutEditPolicy")); + stringBuffer.append(TEXT_11); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.ChangeBoundsRequest")); + stringBuffer.append(TEXT_12); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point")); + stringBuffer.append(TEXT_13); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")); + stringBuffer.append(TEXT_14); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point")); + stringBuffer.append(TEXT_15); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")); + stringBuffer.append(TEXT_16); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_17); + } else { + stringBuffer.append(TEXT_18); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_19); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ConstrainedLayoutEditPolicy")); + stringBuffer.append(TEXT_20); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")); + stringBuffer.append(TEXT_21); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point")); + stringBuffer.append(TEXT_22); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_23); + } + stringBuffer.append(TEXT_24); + if (null != genDiagram.getPalette()) { +final Palette palette = genDiagram.getPalette(); + stringBuffer.append(TEXT_25); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_26); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_27); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_28); + +for(Iterator it = genCompartment.getChildNodes().iterator(); it.hasNext(); ) { + GenChildNode next = (GenChildNode)it.next(); + + stringBuffer.append(TEXT_29); + stringBuffer.append(next.getVisualID()); + stringBuffer.append(TEXT_30); + stringBuffer.append(next.getDomainMetaClass().getName()); + stringBuffer.append(next.getVisualID()); + stringBuffer.append(TEXT_31); + if (!genCompartment.isListLayout()) { + stringBuffer.append(TEXT_32); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")); + stringBuffer.append(TEXT_33); + } + stringBuffer.append(TEXT_34); + +} + + stringBuffer.append(TEXT_35); + }/*when there's palette*/ + stringBuffer.append(TEXT_36); + stringBuffer.append(genCompartment.getTitle()); + stringBuffer.append(TEXT_37); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_38); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.LabeledContainer")); + stringBuffer.append(TEXT_39); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.LabeledContainer")); + stringBuffer.append(TEXT_40); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.StackLayout")); + stringBuffer.append(TEXT_41); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ScrollPane")); + stringBuffer.append(TEXT_42); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ScrollPane")); + stringBuffer.append(TEXT_43); + if (genCompartment.isListLayout()) { + stringBuffer.append(TEXT_44); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Viewport")); + stringBuffer.append(TEXT_45); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Viewport")); + stringBuffer.append(TEXT_46); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Figure")); + stringBuffer.append(TEXT_47); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ToolbarLayout")); + stringBuffer.append(TEXT_48); + } else { + stringBuffer.append(TEXT_49); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Viewport")); + stringBuffer.append(TEXT_50); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformViewport")); + stringBuffer.append(TEXT_51); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformLayer")); + stringBuffer.append(TEXT_52); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformLayout")); + stringBuffer.append(TEXT_53); + } + stringBuffer.append(TEXT_54); + stringBuffer.append(importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_55); + stringBuffer.append(importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_56); + stringBuffer.append(TEXT_57); + stringBuffer.append(TEXT_58); + stringBuffer.append(importManager.getImportedName("java.util.HashMap")); + stringBuffer.append(TEXT_59); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_60); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification")); + stringBuffer.append(TEXT_61); + stringBuffer.append(TEXT_62); + stringBuffer.append(TEXT_63); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_64); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_65); + stringBuffer.append(TEXT_66); + stringBuffer.append(TEXT_67); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_68); + +for(Iterator it = genCompartment.getChildNodes().iterator(); genDiagram.getPalette() != null && it.hasNext(); ) { + GenChildNode next = (GenChildNode)it.next(); + boolean isStatic = false; + boolean isListLayout = genCompartment.isListLayout(); + String resolvedSemanticElement = "resolveSemanticElement()"; + + stringBuffer.append(TEXT_69); + stringBuffer.append(TEXT_70); + if (isStatic) { + stringBuffer.append(TEXT_71); + } + stringBuffer.append(TEXT_72); + stringBuffer.append(next.getDomainMetaClass().getName()); + stringBuffer.append(next.getVisualID()); + stringBuffer.append(TEXT_73); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_74); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_75); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_76); + stringBuffer.append(next.getDomainMetaClass().getName()); + stringBuffer.append(next.getVisualID()); + stringBuffer.append(TEXT_77); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_78); + stringBuffer.append(importManager.getImportedName(genDiagram.getPalette().getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_79); + if (!isListLayout) { + stringBuffer.append(TEXT_80); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")); + stringBuffer.append(TEXT_81); + } + stringBuffer.append(TEXT_82); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_83); + +if (next.getDomainMetaClass().isMapEntry()) { +/*Workaround for Ecore example: map entries cannot be created using factory, only using reflective EFactory.create() method*/ + + stringBuffer.append(TEXT_84); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); + stringBuffer.append(TEXT_85); + stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName())); + stringBuffer.append(TEXT_86); + stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_87); + stringBuffer.append(next.getDomainMetaClass().getClassifierAccessorName()); + stringBuffer.append(TEXT_88); + +} else { + + stringBuffer.append(TEXT_89); + stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_90); + stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName())); + stringBuffer.append(TEXT_91); + stringBuffer.append(next.getDomainMetaClass().getClassifierAccessorName()); + stringBuffer.append(TEXT_92); + +} + + stringBuffer.append(TEXT_93); + /*XXX: Class name DomainElementInitializer should be user-customizable*/ + stringBuffer.append(TEXT_94); + stringBuffer.append(importManager.getImportedName(genDiagram.getNotationViewFactoriesPackageName() + ".DomainElementInitializer")); + stringBuffer.append(TEXT_95); + stringBuffer.append(next.getUniqueIdentifier()); + stringBuffer.append(TEXT_96); + stringBuffer.append(importManager.getImportedName(next.getNotationViewFactoryQualifiedClassName())); + stringBuffer.append(TEXT_97); + + if (!isListLayout) { + + stringBuffer.append(TEXT_98); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")); + stringBuffer.append(TEXT_99); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_100); + + int defaultWidth = 40; + int defaultHeight = 40; + DefaultSizeAttributes defSizeAttrs = (DefaultSizeAttributes) next.getViewmap().find(DefaultSizeAttributes.class); + if (defSizeAttrs != null) { + defaultWidth = defSizeAttrs.getWidth(); + defaultHeight = defSizeAttrs.getHeight(); + } + + stringBuffer.append(TEXT_101); + stringBuffer.append(defaultWidth); + stringBuffer.append(TEXT_102); + stringBuffer.append(defaultHeight); + stringBuffer.append(TEXT_103); + + } + + stringBuffer.append(TEXT_104); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")); + stringBuffer.append(TEXT_105); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_106); + + TypeModelFacet facet = next.getModelFacet(); + GenFeature childFeature = facet.getChildMetaFeature(); + GenFeature containmentFeature = facet.getContainmentMetaFeature(); + if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) { + + stringBuffer.append(TEXT_107); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_108); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_109); + stringBuffer.append(importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_110); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_111); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_112); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_113); + stringBuffer.append(importManager.getImportedName(childFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_114); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_115); + stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_116); + stringBuffer.append(childFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_117); + + } else { + + stringBuffer.append(TEXT_118); + stringBuffer.append(importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_119); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_120); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_121); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_122); + + } + + stringBuffer.append(TEXT_123); + +} + + stringBuffer.append(TEXT_124); + importManager.emitSortedImports(); + stringBuffer.append(TEXT_125); + return stringBuffer.toString(); + } +} Index: templates/parts/DiagramEditPart.javajet =================================================================== RCS file: templates/parts/DiagramEditPart.javajet diff -N templates/parts/DiagramEditPart.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/DiagramEditPart.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,249 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="DiagramEditPartGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* java.util.* org.eclipse.emf.codegen.ecore.genmodel.*"%> +<% +GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> + +<% +importManager.emitPackageStatement(stringBuffer); +importManager.addImport("org.eclipse.gef.editparts.AbstractGraphicalEditPart"); +importManager.addImport("org.eclipse.draw2d.IFigure"); +importManager.addImport("org.eclipse.draw2d.FreeformLayer"); +importManager.addImport("org.eclipse.draw2d.FreeformLayout"); +importManager.addImport("org.eclipse.draw2d.MarginBorder"); +importManager.addImport("org.eclipse.gef.commands.Command"); +importManager.addImport("org.eclipse.gef.commands.CompoundCommand"); +importManager.addImport("org.eclipse.gef.EditPolicy"); +importManager.addImport("org.eclipse.draw2d.geometry.Dimension"); +importManager.addImport("org.eclipse.draw2d.geometry.Point"); +importManager.addImport("org.eclipse.gef.EditPart"); +importManager.addImport("org.eclipse.gef.SnapToGrid"); +importManager.addImport("org.eclipse.gef.SnapToHelper"); +importManager.addImport("org.eclipse.gef.editpolicies.RootComponentEditPolicy"); +importManager.addImport("org.eclipse.gef.commands.UnexecutableCommand"); +importManager.addImport("org.eclipse.gef.editpolicies.RootComponentEditPolicy"); +importManager.addImport("org.eclipse.gef.editpolicies.XYLayoutEditPolicy"); +importManager.addImport("org.eclipse.gef.requests.ChangeBoundsRequest"); +importManager.addImport("org.eclipse.gef.requests.CreateRequest"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Bounds"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Node"); +importManager.addImport("org.eclipse.gmf.runtime.notation.NotationPackage"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.addImport("java.util.List"); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genDiagram.getEditPartClassName()%> extends AbstractGraphicalEditPart implements IUpdatableEditPart { + /** + * @generated + */ + public <%=genDiagram.getEditPartClassName()%>(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%> model) { + setModel(model); + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%> getDiagram() { + return (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%>) getModel(); + } + + /** + * @generated + */ + protected void createEditPolicies() { + installEditPolicy(EditPolicy.COMPONENT_ROLE, new RootComponentEditPolicy()); + installEditPolicy(EditPolicy.LAYOUT_ROLE, new XYLayoutEditPolicy() { + protected Command getCreateCommand(CreateRequest request) { +<%if (null != genDiagram.getPalette()) { +final Palette palette = genDiagram.getPalette();%> + if (request instanceof <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx) { + <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx requestEx = (<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx) request; + int[] visualIds = requestEx.getVisualIds(); + CompoundCommand result = new CompoundCommand(); + for(int i = 0; i < visualIds.length; i++) { + int nextVisualId = visualIds[i]; + switch (nextVisualId) { +<% +for(Iterator it = genDiagram.getTopLevelNodes().iterator(); it.hasNext(); ) { + GenTopLevelNode next = (GenTopLevelNode)it.next(); +%> + case <%=next.getVisualID()%>: + result.add(new Create<%=next.getDomainMetaClass().getName()%><%=next.getVisualID()%>Command(getDiagram(), requestEx, (<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%>)getConstraintFor(request))); + break; +<% +} +%> + } + } + return result.unwrap(); + } +<%}/*when there's palette*/%> + return null; + } + protected Command createChangeConstraintCommand(final ChangeBoundsRequest request, EditPart child, Object constraint) { + final Node node = (Node) child.getModel(); + return new Command("Change node position/size") { + private Point moveDelta = request.getMoveDelta(); + private Dimension resizeDelta = request.getSizeDelta(); + + public boolean canUndo() { + return canExecute(); + } + public boolean canExecute() { + return node.getLayoutConstraint() instanceof Bounds; + } + public void undo() { + execute(moveDelta.getNegated(), resizeDelta.getNegated()); + } + public void execute() { + execute(moveDelta, resizeDelta); + } + private void execute(Point move, Dimension resize) { + Bounds bounds = (Bounds) node.getLayoutConstraint(); + bounds.setX(bounds.getX() + move.x); + bounds.setY(bounds.getY() + move.y); + bounds.setWidth(bounds.getWidth() + resize.width); + bounds.setHeight(bounds.getHeight() + resize.height); + } + }; + } + protected Command createChangeConstraintCommand(EditPart child, Object constraint) { + assert false; + return UnexecutableCommand.INSTANCE; + } + }); + } + + /** + * @generated + */ + protected IFigure createFigure() { + IFigure f = new FreeformLayer(); + f.setBorder(new MarginBorder(5)); + f.setLayoutManager(new FreeformLayout()); + return f; + } + + /** + * @generated + */ + public Object getAdapter(Class key) { + if (<%=importManager.getImportedName("org.eclipse.gef.SnapToHelper")%>.class == key) { + return new <%=importManager.getImportedName("org.eclipse.gef.SnapToGrid")%>(this); + } +<%/*@ include file="adapters/propertySource.javajetinc"*/%> + return super.getAdapter(key); + } + + /** + * @generated + */ + protected List getModelChildren() { + return getDiagram().getVisibleChildren(); + } + +<% +for(Iterator it = genDiagram.getTopLevelNodes().iterator(); genDiagram.getPalette() != null && it.hasNext(); ) { + GenTopLevelNode next = (GenTopLevelNode)it.next(); + boolean isStatic = true; + boolean isListLayout = false; + String resolvedSemanticElement = "parent.getElement()"; +%> +<%@ include file="createNodeCommand.javajetinc"%> +<% +} +%> + +<%@ include file="refresher.javajetinc"%> + + /** + * @generated + */ + private void createRefreshers() { + structuralFeatures2Refresher = new HashMap(); +<%@ include file="refreshers.javajetinc/children.javajetinc"%> + } + + /** + * @generated + */ + private class UpdateManager extends <%=importManager.getImportedName("org.eclipse.emf.ecore.util.EContentAdapter")%> { + /** + * @generated + */ + public void notifyChanged(<%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> msg) { + super.notifyChanged(msg); + if (msg.isTouch()) { + return; + } + <%=importManager.getImportedName("java.util.Collection")%> affectedEditParts = findAffectedParts(msg); + for(<%=importManager.getImportedName("java.util.Iterator")%> it = affectedEditParts.iterator(); it.hasNext(); ) { + IUpdatableEditPart next = (IUpdatableEditPart) it.next(); + IUpdatableEditPart.Refresher refresher = next.getRefresher((<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%>)msg.getFeature(), msg); + if (refresher != null) { + refresher.refresh(); + } + } + } + + /** + * @generated + */ + private <%=importManager.getImportedName("java.util.Collection")%>/**/ findAffectedParts(<%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> msg) { + Object notifier = msg.getNotifier(); + if (notifier instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view = getView((EObject) notifier); + if (view != null) { + EditPart affectedEditPart = (EditPart) getViewer().getEditPartRegistry().get(view); + if (affectedEditPart != null) { + return <%=importManager.getImportedName("java.util.Collections")%>.singleton(affectedEditPart); + } + } + } + return <%=importManager.getImportedName("java.util.Collections")%>.EMPTY_LIST; + } + + /** + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> getView(EObject offspring) { + while (offspring != null && offspring instanceof View == false) { + offspring = offspring.eContainer(); + } + return (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) offspring; + } + } + + /** + * @generated + */ + public void activate() { + super.activate(); + getDiagram().eAdapters().add(updateManager); + getDiagram().getElement().eAdapters().add(domainModelRefresher); + } + + /** + * @generated + */ + public void deactivate() { + getDiagram().getElement().eAdapters().remove(domainModelRefresher); + getDiagram().eAdapters().remove(updateManager); + super.deactivate(); + } + +<%@ include file="refreshers.javajetinc/domainModelRefresher.javajetinc"%> + + /** + * @generated + */ + private UpdateManager updateManager = new UpdateManager(); +} +<%importManager.emitSortedImports();%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/PropertySourceProviderGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/PropertySourceProviderGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/providers/PropertySourceProviderGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/providers/PropertySourceProviderGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,120 @@ +package org.eclipse.gmf.codegen.templates.lite.providers; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; + +public class PropertySourceProviderGenerator +{ + protected static String nl; + public static synchronized PropertySourceProviderGenerator create(String lineSeparator) + { + nl = lineSeparator; + PropertySourceProviderGenerator result = new PropertySourceProviderGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_5 = " implements "; + protected final String TEXT_6 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_7 = " adapterFactoryContentProvider;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_8 = "("; + protected final String TEXT_9 = " domainAdapterFactory) {" + NL + "\t\tadapterFactoryContentProvider = new "; + protected final String TEXT_10 = "(domainAdapterFactory);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_11 = " getPropertySource(Object object) {" + NL + "\t\tif (object instanceof "; + protected final String TEXT_12 = ") {" + NL + "\t\t\treturn ("; + protected final String TEXT_13 = ") object;" + NL + "\t\t}" + NL + "\t\t"; + protected final String TEXT_14 = " view = getNotationElement(object);" + NL + "\t\tif (view == null) {" + NL + "\t\t\treturn adapterFactoryContentProvider.getPropertySource(object);" + NL + "\t\t}" + NL + "\t\t//XXX: compose with view properties" + NL + "\t\t"; + protected final String TEXT_15 = " domainElement = view.getElement();" + NL + "\t\treturn adapterFactoryContentProvider.getPropertySource(domainElement);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_16 = " getNotationElement(Object object) {" + NL + "\t\t"; + protected final String TEXT_17 = " view = null;" + NL + "\t\tif (object instanceof "; + protected final String TEXT_18 = ") {" + NL + "\t\t\tview = ("; + protected final String TEXT_19 = ") object;" + NL + "\t\t} else if (object instanceof "; + protected final String TEXT_20 = ") {" + NL + "\t\t\t"; + protected final String TEXT_21 = " editPart = ("; + protected final String TEXT_22 = ") object;" + NL + "\t\t\tif (editPart.getModel() instanceof "; + protected final String TEXT_23 = ") {" + NL + "\t\t\t\tview = ("; + protected final String TEXT_24 = ") editPart.getModel();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\tif (view != null && \""; + protected final String TEXT_25 = "\".equals(getModelID(view))) {" + NL + "\t\t\treturn view;" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL; + protected final String TEXT_26 = NL; + protected final String TEXT_27 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate String getModelID("; + protected final String TEXT_28 = " containerView) {" + NL + "\t\t"; + protected final String TEXT_29 = " annotation = containerView.getEAnnotation(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "\t\tif (annotation == null) {" + NL + "\t\t\treturn null;" + NL + "\t\t}" + NL + "\t\treturn (String) annotation.getDetails().get(\"modelID\"); //$NON-NLS-1$" + NL + "\t}" + NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_4); + stringBuffer.append(genDiagram.getPropertyProviderClassName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySourceProvider")); + stringBuffer.append(TEXT_6); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider")); + stringBuffer.append(TEXT_7); + stringBuffer.append(genDiagram.getPropertyProviderClassName()); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.AdapterFactory")); + stringBuffer.append(TEXT_9); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider")); + stringBuffer.append(TEXT_10); + stringBuffer.append(importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource")); + stringBuffer.append(TEXT_11); + stringBuffer.append(importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource")); + stringBuffer.append(TEXT_12); + stringBuffer.append(importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource")); + stringBuffer.append(TEXT_13); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_14); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); + stringBuffer.append(TEXT_15); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_16); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_17); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_18); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_19); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_20); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_21); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_22); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_23); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_24); + stringBuffer.append(genDiagram.getEditorGen().getModelID()); + stringBuffer.append(TEXT_25); + stringBuffer.append(TEXT_26); + stringBuffer.append(TEXT_27); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_28); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_29); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: templates/parts/componentEditPolicy.javajetinc =================================================================== RCS file: templates/parts/componentEditPolicy.javajetinc diff -N templates/parts/componentEditPolicy.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/componentEditPolicy.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,91 @@ + installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.COMPONENT_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ComponentEditPolicy")%>() { + protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> createDeleteCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.GroupRequest")%> deleteRequest) { + return new <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%>() { +<% +{ +TypeModelFacet facet = genNode.getModelFacet(); +GenFeature childFeature = facet.getChildMetaFeature(); +GenFeature containmentFeature = facet.getContainmentMetaFeature(); +if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) { +%> + private final org.eclipse.emf.common.command.Command domainModelRemoveCommand = getDomainModelRemoveCommand(); + private org.eclipse.emf.common.command.Command getDomainModelRemoveCommand() { + <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%> result = new <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%>(); +<% + if (containmentFeature.getEcoreFeature().isMany()) { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), + getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(), + getDiagramNode().getElement())); +<% + } else { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), + getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(), + <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE)); +<% + } +%> +<% + if (childFeature.getEcoreFeature().isMany()) { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), + getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(), + getDiagramNode().getElement())); +<% + } else { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), + getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(), + <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE)); +<% + } +%> + return result; + } +<% +} else { + if (containmentFeature.getEcoreFeature().isMany()) { +%> + private final org.eclipse.emf.common.command.Command domainModelRemoveCommand = <%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), + getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(), + getDiagramNode().getElement()); +<% + } else { +%> + private final org.eclipse.emf.common.command.Command domainModelRemoveCommand = <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), + getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(), + <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE); +<% + } +} +%> + private final org.eclipse.emf.common.command.Command viewRemoveCommand = <%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram()), + getDiagramNode()); + public boolean canExecute() { + return domainModelRemoveCommand != null && domainModelRemoveCommand.canExecute() && viewRemoveCommand != null && viewRemoveCommand.canExecute(); + } + public void execute() { + domainModelRemoveCommand.execute(); + viewRemoveCommand.execute(); + } + public boolean canUndo() { + return domainModelRemoveCommand != null && domainModelRemoveCommand.canUndo() && viewRemoveCommand != null && viewRemoveCommand.canUndo(); + } + public void undo() { + domainModelRemoveCommand.undo(); + viewRemoveCommand.undo(); + } + }; + } + }); +<% +} /*restrict local vars used in component edit policy*/ +%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/DiagramViewFactoryGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/DiagramViewFactoryGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/providers/DiagramViewFactoryGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/providers/DiagramViewFactoryGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,74 @@ +package org.eclipse.gmf.codegen.templates.lite.providers; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; + +public class DiagramViewFactoryGenerator +{ + protected static String nl; + public static synchronized DiagramViewFactoryGenerator create(String lineSeparator) + { + nl = lineSeparator; + DiagramViewFactoryGenerator result = new DiagramViewFactoryGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_5 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static void decorateView("; + protected final String TEXT_6 = " view) {"; + protected final String TEXT_7 = NL; + protected final String TEXT_8 = " annotation = "; + protected final String TEXT_9 = ".eINSTANCE.createEAnnotation();" + NL + "annotation.setSource(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "view.getEAnnotations().add(annotation);" + NL + "annotation.getDetails().put(\"modelID\", \""; + protected final String TEXT_10 = "\"); //$NON-NLS-1$" + NL + "annotation.getDetails().put(\"visualID\", \""; + protected final String TEXT_11 = "\"); //$NON-NLS-1$" + NL + "\t\t"; + protected final String TEXT_12 = " style = "; + protected final String TEXT_13 = ".eINSTANCE.createDiagramStyle();" + NL + "\t\tview.getStyles().add(style);" + NL + "\t\t//XXX: init styles from attributes!!!" + NL + "\t}" + NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +GenDiagram genElement = genDiagram; /*make jetinc happy*/ +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_4); + stringBuffer.append(genElement.getNotationViewFactoryClassName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_6); + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory")); + stringBuffer.append(TEXT_9); + stringBuffer.append(genDiagram.getEditorGen().getModelID()); + stringBuffer.append(TEXT_10); + stringBuffer.append(genElement.getVisualID()); + stringBuffer.append(TEXT_11); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.DiagramStyle")); + stringBuffer.append(TEXT_12); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_13); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/ChildNodeEditPartGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/ChildNodeEditPartGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/parts/ChildNodeEditPartGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/parts/ChildNodeEditPartGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,921 @@ +package org.eclipse.gmf.codegen.templates.lite.parts; + +import java.util.*; +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; +import org.eclipse.emf.ecore.*; + +public class ChildNodeEditPartGenerator +{ + protected static String nl; + public static synchronized ChildNodeEditPartGenerator create(String lineSeparator) + { + nl = lineSeparator; + ChildNodeEditPartGenerator result = new ChildNodeEditPartGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL; + protected final String TEXT_5 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_6 = " extends "; + protected final String TEXT_7 = " implements IUpdatableEditPart {"; + protected final String TEXT_8 = NL; + protected final String TEXT_9 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_10 = " manager;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate String defaultText;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_11 = "(View view) {" + NL + "\t\tsetModel(view);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_12 = " getDiagramNode() {" + NL + "\t\treturn ("; + protected final String TEXT_13 = ") getModel();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void createEditPolicies() {" + NL + "\t\t//XXX: install correct edit policies!"; + protected final String TEXT_14 = NL; + protected final String TEXT_15 = "\t\tinstallEditPolicy("; + protected final String TEXT_16 = ".DIRECT_EDIT_ROLE," + NL + "\t\t\t\tnew "; + protected final String TEXT_17 = "() {" + NL + "\t\t\t\t\tprotected void showCurrentEditValue("; + protected final String TEXT_18 = " request) {" + NL + "\t\t\t\t\t\tString value = (String) request.getCellEditor().getValue();" + NL + "\t\t\t\t\t\tgetLabel().setText(value);" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tprotected "; + protected final String TEXT_19 = " getDirectEditCommand("; + protected final String TEXT_20 = " request) {" + NL + "\t\t\t\t\t\tString value = (String) request.getCellEditor().getValue();" + NL + "\t\t\t\t\t\tif (value == null) {" + NL + "\t\t\t\t\t\t\t//Invalid value is transformed into a null by the validator." + NL + "\t\t\t\t\t\t\t//XXX: implement validator" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_21 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\tfinal Object[] parseResult;" + NL + "\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\tparseResult = new "; + protected final String TEXT_22 = "(EDIT_PATTERN).parse(value);" + NL + "\t\t\t\t\t\t} catch (IllegalArgumentException e) {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_23 = ".INSTANCE;" + NL + "\t\t\t\t\t\t} catch ("; + protected final String TEXT_24 = " e) {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_25 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}"; + protected final String TEXT_26 = NL + "\t\t\t\t\t\tif (parseResult.length != 1) {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_27 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new "; + protected final String TEXT_28 = "() {" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_29 = " element = "; + protected final String TEXT_30 = ";" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_31 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_32 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_33 = " domainModelEditDomain = "; + protected final String TEXT_34 = ".getEditingDomainFor("; + protected final String TEXT_35 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_36 = " feature = ("; + protected final String TEXT_37 = ") "; + protected final String TEXT_38 = ".eINSTANCE.get"; + protected final String TEXT_39 = "();" + NL + "\t\t\t\t\t\t\t\tObject valueToSet;" + NL + "\t\t\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\t\t\tvalueToSet = "; + protected final String TEXT_40 = ".parseValue(feature, parseResult[0]);" + NL + "\t\t\t\t\t\t\t\t} catch (IllegalArgumentException e) {" + NL + "\t\t\t\t\t\t\t\t\treturn "; + protected final String TEXT_41 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}"; + protected final String TEXT_42 = NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_43 = " result = new "; + protected final String TEXT_44 = "();" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_45 = " values = new "; + protected final String TEXT_46 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get"; + protected final String TEXT_47 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_48 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_49 = ".create(domainModelEditDomain, element, feature, valueToSet));" + NL + "\t\t\t\t\t\t\t\treturn result;"; + protected final String TEXT_50 = NL + "\t\t\t\t\t\t\t\treturn "; + protected final String TEXT_51 = ".create(domainModelEditDomain, element, feature, valueToSet);"; + protected final String TEXT_52 = NL + "\t\t\t\t\t\t\t}"; + protected final String TEXT_53 = NL + "\t\t\t\t\t\tif (parseResult.length != "; + protected final String TEXT_54 = ") {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_55 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new "; + protected final String TEXT_56 = "() {" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_57 = " element = "; + protected final String TEXT_58 = ";" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_59 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_60 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_61 = " domainModelEditDomain = "; + protected final String TEXT_62 = ".getEditingDomainFor("; + protected final String TEXT_63 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_64 = " result = new "; + protected final String TEXT_65 = "();" + NL + "\t\t\t\t\t\t\t\tObject valueToSet;"; + protected final String TEXT_66 = NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_67 = " "; + protected final String TEXT_68 = "feature = ("; + protected final String TEXT_69 = ") "; + protected final String TEXT_70 = ".eINSTANCE.get"; + protected final String TEXT_71 = "();" + NL + "\t\t\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\t\t\tvalueToSet = "; + protected final String TEXT_72 = ".parseValue(feature, parseResult["; + protected final String TEXT_73 = "]);" + NL + "\t\t\t\t\t\t\t\t} catch (IllegalArgumentException e) {" + NL + "\t\t\t\t\t\t\t\t\treturn "; + protected final String TEXT_74 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}"; + protected final String TEXT_75 = NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_76 = " "; + protected final String TEXT_77 = "values = new "; + protected final String TEXT_78 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get"; + protected final String TEXT_79 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_80 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_81 = ".create(domainModelEditDomain, element, feature, valueToSet));"; + protected final String TEXT_82 = NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_83 = ".create(domainModelEditDomain, element, feature, valueToSet));"; + protected final String TEXT_84 = NL + "\t\t\t\t\t\t\t\treturn result;" + NL + "\t\t\t\t\t\t\t}"; + protected final String TEXT_85 = NL + "\t\t\t\t\t\t\tpublic void undo() {" + NL + "\t\t\t\t\t\t\t\tdomainModelCommand.undo();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t\tpublic void execute() {" + NL + "\t\t\t\t\t\t\t\tdomainModelCommand.execute();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t\tpublic boolean canUndo() {" + NL + "\t\t\t\t\t\t\t\treturn element != null && domainModelCommand != null && domainModelCommand.canUndo();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t\tpublic boolean canExecute() {" + NL + "\t\t\t\t\t\t\t\treturn element != null && domainModelCommand != null && domainModelCommand.canExecute();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t};" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t});"; + protected final String TEXT_86 = NL; + protected final String TEXT_87 = "\t\tinstallEditPolicy("; + protected final String TEXT_88 = ".COMPONENT_ROLE, new "; + protected final String TEXT_89 = "() {" + NL + "\t\t\tprotected "; + protected final String TEXT_90 = " createDeleteCommand("; + protected final String TEXT_91 = " deleteRequest) {" + NL + "\t\t\t\treturn new "; + protected final String TEXT_92 = "() {"; + protected final String TEXT_93 = NL + "\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command domainModelRemoveCommand = getDomainModelRemoveCommand();" + NL + "\t\t\t\t\tprivate org.eclipse.emf.common.command.Command getDomainModelRemoveCommand() {" + NL + "\t\t\t\t\t\t"; + protected final String TEXT_94 = " result = new "; + protected final String TEXT_95 = "();"; + protected final String TEXT_96 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_97 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_98 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_99 = ".eINSTANCE.get"; + protected final String TEXT_100 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement()));"; + protected final String TEXT_101 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_102 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_103 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_104 = ".eINSTANCE.get"; + protected final String TEXT_105 = "()," + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_106 = ".UNSET_VALUE));"; + protected final String TEXT_107 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_108 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_109 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_110 = ".eINSTANCE.get"; + protected final String TEXT_111 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement()));"; + protected final String TEXT_112 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_113 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_114 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_115 = ".eINSTANCE.get"; + protected final String TEXT_116 = "()," + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_117 = ".UNSET_VALUE));"; + protected final String TEXT_118 = NL + "\t\t\t\t\t\treturn result;" + NL + "\t\t\t\t\t}"; + protected final String TEXT_119 = NL + "\t\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command domainModelRemoveCommand = "; + protected final String TEXT_120 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_121 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_122 = ".eINSTANCE.get"; + protected final String TEXT_123 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement());"; + protected final String TEXT_124 = NL + "\t\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command domainModelRemoveCommand = "; + protected final String TEXT_125 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_126 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_127 = ".eINSTANCE.get"; + protected final String TEXT_128 = "()," + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_129 = ".UNSET_VALUE);"; + protected final String TEXT_130 = NL + "\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command viewRemoveCommand = "; + protected final String TEXT_131 = ".create(" + NL + "\t\t\t\t\t\t"; + protected final String TEXT_132 = ".getEditingDomainFor(getDiagramNode().getDiagram()), " + NL + "\t\t\t\t\t\tgetDiagramNode());" + NL + "\t\t\t\t\tpublic boolean canExecute() {" + NL + "\t\t\t\t\t\treturn domainModelRemoveCommand != null && domainModelRemoveCommand.canExecute() && viewRemoveCommand != null && viewRemoveCommand.canExecute();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic void execute() {" + NL + "\t\t\t\t\t\tdomainModelRemoveCommand.execute();" + NL + "\t\t\t\t\t\tviewRemoveCommand.execute();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic boolean canUndo() {" + NL + "\t\t\t\t\t\treturn domainModelRemoveCommand != null && domainModelRemoveCommand.canUndo() && viewRemoveCommand != null && viewRemoveCommand.canUndo();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic void undo() {" + NL + "\t\t\t\t\t\tdomainModelRemoveCommand.undo();" + NL + "\t\t\t\t\t\tviewRemoveCommand.undo();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t};" + NL + "\t\t\t}" + NL + "\t\t});"; + protected final String TEXT_133 = NL + "\t}" + NL; + protected final String TEXT_134 = NL; + protected final String TEXT_135 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void performRequest("; + protected final String TEXT_136 = " req) {" + NL + "\t\tif ("; + protected final String TEXT_137 = ".REQ_DIRECT_EDIT == req.getType()) {" + NL + "\t\t\tperformDirectEdit();" + NL + "\t\t} else {" + NL + "\t\t\tsuper.performRequest(req);" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_138 = " getManager() {" + NL + "\t\tif (manager == null) {" + NL + "\t\t\tmanager = new "; + protected final String TEXT_139 = "(this, "; + protected final String TEXT_140 = ".class, new "; + protected final String TEXT_141 = "() {" + NL + "\t\t\t\tpublic void relocate("; + protected final String TEXT_142 = " celleditor) {" + NL + "\t\t\t\t\t"; + protected final String TEXT_143 = " rect = getLabel().getTextBounds();" + NL + "\t\t\t\t\tgetLabel().translateToAbsolute(rect);" + NL + "\t\t\t\t\tcelleditor.getControl().setBounds(rect.x, rect.y, rect.width, rect.height);" + NL + "\t\t\t\t}" + NL + "\t\t\t}) {" + NL + "\t\t\t\tprotected void initCellEditor() {" + NL + "\t\t\t\t\tgetCellEditor().setValue(getLabelEditText());" + NL + "\t\t\t\t}" + NL + "\t\t\t};" + NL + "\t\t}" + NL + "\t\treturn manager;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void performDirectEdit() {" + NL + "\t\tgetManager().show();" + NL + "\t}" + NL + "" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected List getModelChildren() {" + NL + "\t\treturn ((View)getModel()).getVisibleChildren();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected List getModelSourceConnections() {" + NL + "\t\treturn ((View)getModel()).getSourceEdges();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected List getModelTargetConnections() {" + NL + "\t\treturn ((View)getModel()).getTargetEdges();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshVisuals() {" + NL + "\t\tsuper.refreshVisuals();" + NL + "\t\trefreshLabel();" + NL + "\t\trefreshFont();" + NL + "\t\trefreshFontColor();" + NL + "\t\trefreshVisibility();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshLabel() {" + NL + "\t\tgetLabel().setText(getLabelText());" + NL + "\t\tgetLabel().setIcon(getLabelIcon());" + NL + "\t}"; + protected final String TEXT_144 = NL; + protected final String TEXT_145 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String VIEW_PATTERN = \""; + protected final String TEXT_146 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String EDIT_PATTERN = \""; + protected final String TEXT_147 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String getLabelText() {" + NL + "\t\t"; + protected final String TEXT_148 = " element = "; + protected final String TEXT_149 = ";" + NL + "\t\tif (element == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}" + NL + "\t\treturn buildTextByPattern(element, VIEW_PATTERN);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String getLabelEditText() {" + NL + "\t\t"; + protected final String TEXT_150 = " element = "; + protected final String TEXT_151 = ";" + NL + "\t\tif (element == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}" + NL + "\t\treturn buildTextByPattern(element, EDIT_PATTERN);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String buildTextByPattern("; + protected final String TEXT_152 = " element, String pattern) {"; + protected final String TEXT_153 = NL + "\t\tif (element.get"; + protected final String TEXT_154 = "() == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}"; + protected final String TEXT_155 = NL + "\t\treturn "; + protected final String TEXT_156 = ".format(pattern, new Object[] {"; + protected final String TEXT_157 = NL + "\t\t\t"; + protected final String TEXT_158 = NL + "\t\t});"; + protected final String TEXT_159 = NL + "\t\treturn "; + protected final String TEXT_160 = ".format(pattern, new Object[] {"; + protected final String TEXT_161 = NL + "\t\t"; + protected final String TEXT_162 = ","; + protected final String TEXT_163 = NL + "\t\t});"; + protected final String TEXT_164 = NL + "\t\t//XXX: unexpected model facet." + NL + "\t\treturn defaultText;"; + protected final String TEXT_165 = NL + "\t}"; + protected final String TEXT_166 = NL; + protected final String TEXT_167 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFont() {" + NL + "\t\t"; + protected final String TEXT_168 = " style =" + NL + "\t\t\t("; + protected final String TEXT_169 = ") "; + protected final String TEXT_170 = ".getStyle(" + NL + "\t\t\t\t"; + protected final String TEXT_171 = ".eINSTANCE.getFontStyle());" + NL + "\t\t"; + protected final String TEXT_172 = " toDispose = createdFont;" + NL + "\t\tif (style != null) {" + NL + "\t\t\tString fontName = style.getFontName();" + NL + "\t\t\tint fontHeight = style.getFontHeight();" + NL + "\t\t\tint fontStyle = "; + protected final String TEXT_173 = ".NORMAL;" + NL + "\t\t\tif (style.isBold()) {" + NL + "\t\t\t\tfontStyle |= "; + protected final String TEXT_174 = ".BOLD;" + NL + "\t\t\t}" + NL + "\t\t\tif (style.isItalic()) {" + NL + "\t\t\t\tfontStyle |= "; + protected final String TEXT_175 = ".ITALIC;" + NL + "\t\t\t}" + NL + "\t\t\t"; + protected final String TEXT_176 = " currentFont = getFigure().getFont();" + NL + "\t\t\tif (currentFont != null) {" + NL + "\t\t\t\t"; + protected final String TEXT_177 = " currentFontData = currentFont.getFontData()[0];" + NL + "\t\t\t\tif (currentFontData.getName().equals(fontName) && currentFontData.getHeight() == fontHeight && currentFontData.getStyle() == fontStyle) {" + NL + "\t\t\t\t\treturn;" + NL + "\t\t\t\t}" + NL + "\t\t\t}" + NL + "\t\t\tcreatedFont = new "; + protected final String TEXT_178 = "(null, fontName, fontHeight, fontStyle);" + NL + "\t\t\tgetFigure().setFont(createdFont);" + NL + "\t\t} else {" + NL + "\t\t\t//revert to the default font" + NL + "\t\t\tgetFigure().setFont(getViewer().getControl().getFont());" + NL + "\t\t\tcreatedFont = null;" + NL + "\t\t}" + NL + "\t\tif (toDispose != null) {" + NL + "\t\t\ttoDispose.dispose();" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * The font (created by {@link #refreshFont()}) currently assigned to the label (unless the default font is assigned)." + NL + "\t * Whenever another non-default font is assigned to it, it is safe to dispose the previous one." + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_179 = " createdFont;"; + protected final String TEXT_180 = NL; + protected final String TEXT_181 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFontColor() {" + NL + "\t\t"; + protected final String TEXT_182 = " style = ("; + protected final String TEXT_183 = ") "; + protected final String TEXT_184 = ".getStyle("; + protected final String TEXT_185 = ".eINSTANCE.getFontStyle());" + NL + "\t\t"; + protected final String TEXT_186 = " toDispose = createdFontColor;" + NL + "\t\tif (style != null) {" + NL + "\t\t\tint fontColor = style.getFontColor();" + NL + "\t\t\tint red = fontColor & 0x000000FF;" + NL + "\t\t\tint green = (fontColor & 0x0000FF00) >> 8;" + NL + "\t\t\tint blue = (fontColor & 0x00FF0000) >> 16;" + NL + "\t\t\t"; + protected final String TEXT_187 = " currentColor = getLabel().getForegroundColor();" + NL + "\t\t\tif (currentColor != null && currentColor.getRed() == red && currentColor.getGreen() == green && currentColor.getBlue() == blue) {" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t\tcreatedFontColor = new "; + protected final String TEXT_188 = "(null, red, green, blue);" + NL + "\t\t\tgetFigure().setForegroundColor(createdFontColor);" + NL + "\t\t} else {" + NL + "\t\t\tgetFigure().setForegroundColor(getViewer().getControl().getForeground());" + NL + "\t\t\tcreatedFontColor = null;" + NL + "\t\t}" + NL + "\t\tif (toDispose != null) {" + NL + "\t\t\ttoDispose.dispose();" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * The color (created by {@link #refreshFontColor()}) currently assigned to the label." + NL + "\t * Whenever another color is assigned to it, it is safe to dispose the previous one." + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_189 = " createdFontColor;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_190 = " getLabelIcon() {" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshVisibility() {" + NL + "\t\tboolean isVisible = getDiagramNode().isVisible();" + NL + "\t\tboolean wasVisible = getFigure().isVisible();" + NL + "\t\tif (isVisible == wasVisible) {" + NL + "\t\t\treturn;" + NL + "\t\t}" + NL + "\t\tif (!isVisible && (getSelected() != SELECTED_NONE)) {" + NL + "\t\t\tgetViewer().deselect(this);" + NL + "\t\t}" + NL + "" + NL + "\t\tgetFigure().setVisible(isVisible);" + NL + "\t\tgetFigure().revalidate();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Object getAdapter(Class key) {"; + protected final String TEXT_191 = NL + "\t\treturn super.getAdapter(key);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void activate() {" + NL + "\t\tsuper.activate();" + NL + "\t\tgetDiagramNode().getElement().eAdapters().add(domainModelRefresher);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void deactivate() {" + NL + "\t\tgetDiagramNode().getElement().eAdapters().remove(domainModelRefresher);" + NL + "\t\tsuper.deactivate();" + NL + "\t}" + NL; + protected final String TEXT_192 = NL; + protected final String TEXT_193 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate DomainModelRefresher domainModelRefresher = new DomainModelRefresher();" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate class DomainModelRefresher extends "; + protected final String TEXT_194 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void notifyChanged("; + protected final String TEXT_195 = " msg) {" + NL + "\t\t\tsuper.notifyChanged(msg);" + NL + "\t\t\tif (msg.isTouch()) {" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t\tRefresher refresher = getRefresher(("; + protected final String TEXT_196 = ") msg.getFeature(), msg);" + NL + "\t\t\tif (refresher != null) {" + NL + "\t\t\t\trefresher.refresh();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t}" + NL; + protected final String TEXT_197 = NL; + protected final String TEXT_198 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_199 = " structuralFeatures2Refresher;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Refresher getRefresher("; + protected final String TEXT_200 = " feature, "; + protected final String TEXT_201 = " msg) {" + NL + "\t\tif (structuralFeatures2Refresher == null) {" + NL + "\t\t\tcreateRefreshers();" + NL + "\t\t}" + NL + "\t\treturn (Refresher) structuralFeatures2Refresher.get(feature);" + NL + "\t}" + NL + "" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void createRefreshers() {" + NL + "\t\tstructuralFeatures2Refresher = new HashMap();"; + protected final String TEXT_202 = NL; + protected final String TEXT_203 = "\t\tRefresher childrenRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshChildren();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_204 = ".eINSTANCE.getView_PersistedChildren(), childrenRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_205 = ".eINSTANCE.getView_TransientChildren(), childrenRefresher);"; + protected final String TEXT_206 = NL; + protected final String TEXT_207 = "\t\tRefresher visibilityRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshVisibility();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_208 = ".eINSTANCE.getView_Visible(), visibilityRefresher);" + NL + "\t\tRefresher labelRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshLabel();" + NL + "\t\t\t}" + NL + "\t\t};"; + protected final String TEXT_209 = NL + "\t\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_210 = ".eINSTANCE.get"; + protected final String TEXT_211 = "(), labelRefresher);"; + protected final String TEXT_212 = NL + "\t\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_213 = ".eINSTANCE.get"; + protected final String TEXT_214 = "(), labelRefresher);"; + protected final String TEXT_215 = NL; + protected final String TEXT_216 = "\t\tRefresher fontRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshFont();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_217 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_218 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_219 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_220 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);" + NL + "\t\t"; + protected final String TEXT_221 = NL; + protected final String TEXT_222 = "\t\tRefresher fontColorRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshFontColor();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_223 = ".eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);" + NL + "\t}" + NL; + protected final String TEXT_224 = NL; + protected final String TEXT_225 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_226 = " createFigure() {" + NL + "\t\t"; + protected final String TEXT_227 = " label = createLabel();" + NL + "\t\tdefaultText = label.getText();" + NL + "\t\treturn label;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_228 = " createLabel() {"; + protected final String TEXT_229 = NL + "\t\treturn new "; + protected final String TEXT_230 = "();"; + protected final String TEXT_231 = NL + "\t\treturn "; + protected final String TEXT_232 = ";"; + protected final String TEXT_233 = NL + "\t\treturn new "; + protected final String TEXT_234 = "();"; + protected final String TEXT_235 = NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_236 = " getLabel() {" + NL + "\t\treturn ("; + protected final String TEXT_237 = ") getFigure();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void setLabel("; + protected final String TEXT_238 = " figure) {" + NL + "\t\tunregisterVisuals();" + NL + "\t\tsetFigure(figure);" + NL + "\t\tdefaultText = figure.getText();" + NL + "\t\tregisterVisuals();" + NL + "\t\trefreshVisuals();" + NL + "\t}" + NL; + protected final String TEXT_239 = NL; + protected final String TEXT_240 = NL; + protected final String TEXT_241 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static class MapModeWorkaround {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic int DPtoLP(int dp) {" + NL + "\t\t\treturn dp;" + NL + "\t\t}" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic static MapModeWorkaround INSTANCE = new MapModeWorkaround();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate MapModeWorkaround getMapMode() {" + NL + "\t\treturn MapModeWorkaround.INSTANCE;" + NL + "\t}"; + protected final String TEXT_242 = NL + "}"; + protected final String TEXT_243 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenNode genChildNode = (GenNode) ((Object[]) argument)[0]; +GenNodeLabel genLabel = (GenNodeLabel) genChildNode.getLabels().get(0); +GenNode genHost = genChildNode; +GenNode genNode = genChildNode; /*var used by componentEditPolicy.javajetinc*/ +GenClass underlyingMetaClass = genHost.getDomainMetaClass(); +GenDiagram genDiagram = genChildNode.getDiagram(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +LabelModelFacet labelModelFacet = genLabel.getModelFacet(); + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + stringBuffer.append(TEXT_4); + importManager.emitPackageStatement(stringBuffer); + +importManager.addImport("org.eclipse.gef.EditPolicy"); +importManager.addImport("org.eclipse.gef.Request"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.addImport("org.eclipse.gmf.runtime.notation.NotationPackage"); +importManager.addImport("java.util.List"); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_5); + stringBuffer.append(genChildNode.getEditPartClassName()); + stringBuffer.append(TEXT_6); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")); + stringBuffer.append(TEXT_7); + stringBuffer.append(TEXT_8); + stringBuffer.append(TEXT_9); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")); + stringBuffer.append(TEXT_10); + stringBuffer.append(genChildNode.getEditPartClassName()); + stringBuffer.append(TEXT_11); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_12); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_13); + + String resolvedSemanticElement = "(" + importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName()) + ") getDiagramNode().getElement()"; + final String primaryView = "getDiagramNode()"; + + stringBuffer.append(TEXT_14); + stringBuffer.append(TEXT_15); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_16); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.DirectEditPolicy")); + stringBuffer.append(TEXT_17); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest")); + stringBuffer.append(TEXT_18); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_19); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest")); + stringBuffer.append(TEXT_20); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_21); + stringBuffer.append(importManager.getImportedName("java.text.MessageFormat")); + stringBuffer.append(TEXT_22); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_23); + stringBuffer.append(importManager.getImportedName("java.text.ParseException")); + stringBuffer.append(TEXT_24); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_25); + +if (labelModelFacet instanceof FeatureLabelModelFacet && !genLabel.isReadOnly()) { + GenFeature featureToSet = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); + EStructuralFeature ecoreFeature = featureToSet.getEcoreFeature(); + + stringBuffer.append(TEXT_26); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_27); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_28); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_29); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_30); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_31); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_32); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")); + stringBuffer.append(TEXT_33); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_34); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_35); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_36); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_37); + stringBuffer.append(importManager.getImportedName(featureToSet.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_38); + stringBuffer.append(featureToSet.getFeatureAccessorName()); + stringBuffer.append(TEXT_39); + stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName())); + stringBuffer.append(TEXT_40); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")); + stringBuffer.append(TEXT_41); + + if (ecoreFeature.isMany()) { + + stringBuffer.append(TEXT_42); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_43); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_44); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList")); + stringBuffer.append(TEXT_45); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")); + stringBuffer.append(TEXT_46); + stringBuffer.append(featureToSet.getAccessorName()); + stringBuffer.append(TEXT_47); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_48); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand")); + stringBuffer.append(TEXT_49); + + } else { + + stringBuffer.append(TEXT_50); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_51); + + } + + stringBuffer.append(TEXT_52); + +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + List metaFeatures = compositeFeatureLabelModelFacet.getMetaFeatures(); + + stringBuffer.append(TEXT_53); + stringBuffer.append(metaFeatures.size()); + stringBuffer.append(TEXT_54); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_55); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_56); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_57); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_58); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_59); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_60); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")); + stringBuffer.append(TEXT_61); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_62); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_63); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_64); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_65); + + boolean haveDeclaredValues = false; + for(int i = 0; i < metaFeatures.size(); i++) { + GenFeature nextFeatureToSet = (GenFeature) metaFeatures.get(i); + EStructuralFeature nextEcoreFeature = nextFeatureToSet.getEcoreFeature(); + + stringBuffer.append(TEXT_66); + if (i == 0) { + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_67); + } + stringBuffer.append(TEXT_68); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_69); + stringBuffer.append(importManager.getImportedName(nextFeatureToSet.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_70); + stringBuffer.append(nextFeatureToSet.getFeatureAccessorName()); + stringBuffer.append(TEXT_71); + stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName())); + stringBuffer.append(TEXT_72); + stringBuffer.append(i); + stringBuffer.append(TEXT_73); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")); + stringBuffer.append(TEXT_74); + + if (nextEcoreFeature.isMany()) { + + stringBuffer.append(TEXT_75); + if (!haveDeclaredValues) { haveDeclaredValues = true; + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList")); + stringBuffer.append(TEXT_76); + } + stringBuffer.append(TEXT_77); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")); + stringBuffer.append(TEXT_78); + stringBuffer.append(nextFeatureToSet.getAccessorName()); + stringBuffer.append(TEXT_79); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_80); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand")); + stringBuffer.append(TEXT_81); + + } else { + + stringBuffer.append(TEXT_82); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_83); + + } + + + } + + stringBuffer.append(TEXT_84); + +} + + stringBuffer.append(TEXT_85); + stringBuffer.append(TEXT_86); + stringBuffer.append(TEXT_87); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_88); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ComponentEditPolicy")); + stringBuffer.append(TEXT_89); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_90); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.GroupRequest")); + stringBuffer.append(TEXT_91); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_92); + +{ +TypeModelFacet facet = genNode.getModelFacet(); +GenFeature childFeature = facet.getChildMetaFeature(); +GenFeature containmentFeature = facet.getContainmentMetaFeature(); +if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) { + + stringBuffer.append(TEXT_93); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_94); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_95); + + if (containmentFeature.getEcoreFeature().isMany()) { + + stringBuffer.append(TEXT_96); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_97); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_98); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_99); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_100); + + } else { + + stringBuffer.append(TEXT_101); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_102); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_103); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_104); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_105); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_106); + + } + + + if (childFeature.getEcoreFeature().isMany()) { + + stringBuffer.append(TEXT_107); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_108); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_109); + stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_110); + stringBuffer.append(childFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_111); + + } else { + + stringBuffer.append(TEXT_112); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_113); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_114); + stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_115); + stringBuffer.append(childFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_116); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_117); + + } + + stringBuffer.append(TEXT_118); + +} else { + if (containmentFeature.getEcoreFeature().isMany()) { + + stringBuffer.append(TEXT_119); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_120); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_121); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_122); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_123); + + } else { + + stringBuffer.append(TEXT_124); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_125); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_126); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_127); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_128); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_129); + + } +} + + stringBuffer.append(TEXT_130); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_131); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_132); + +} /*restrict local vars used in component edit policy*/ + + stringBuffer.append(TEXT_133); + stringBuffer.append(TEXT_134); + stringBuffer.append(TEXT_135); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request")); + stringBuffer.append(TEXT_136); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants")); + stringBuffer.append(TEXT_137); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")); + stringBuffer.append(TEXT_138); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")); + stringBuffer.append(TEXT_139); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.TextCellEditor")); + stringBuffer.append(TEXT_140); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.CellEditorLocator")); + stringBuffer.append(TEXT_141); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.CellEditor")); + stringBuffer.append(TEXT_142); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")); + stringBuffer.append(TEXT_143); + stringBuffer.append(TEXT_144); + +/*genFeature.getObjectType() throws NPE on primitive types. This is a workaround. */ +HashMap primitiveTypeToWrapperClassName = new HashMap(); +primitiveTypeToWrapperClassName.put(Boolean.TYPE, "Boolean"); +primitiveTypeToWrapperClassName.put(Byte.TYPE, "Byte"); +primitiveTypeToWrapperClassName.put(Character.TYPE, "Character"); +primitiveTypeToWrapperClassName.put(Double.TYPE, "Double"); +primitiveTypeToWrapperClassName.put(Float.TYPE, "Float"); +primitiveTypeToWrapperClassName.put(Integer.TYPE, "Integer"); +primitiveTypeToWrapperClassName.put(Long.TYPE, "Long"); +primitiveTypeToWrapperClassName.put(Short.TYPE, "Short"); +String viewPattern = null; +String editPattern = null; +if (labelModelFacet instanceof FeatureLabelModelFacet) { + FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet; + viewPattern = featureLabelModelFacet.getViewPattern(); + if (viewPattern == null || viewPattern.length() == 0) { + viewPattern = "{0}"; + } + editPattern = featureLabelModelFacet.getEditPattern(); + if (editPattern == null || editPattern.length() == 0) { + editPattern = "{0}"; + } +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + viewPattern = compositeFeatureLabelModelFacet.getViewPattern(); + if (viewPattern == null || viewPattern.length() == 0) { + StringBuffer patternBuffer = new StringBuffer(); + for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) { + patternBuffer.append("{").append(i).append("} "); + } + viewPattern = patternBuffer.toString().trim(); + } + editPattern = compositeFeatureLabelModelFacet.getEditPattern(); + if (editPattern == null || editPattern.length() == 0) { + StringBuffer patternBuffer = new StringBuffer(); + for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) { + patternBuffer.append("{").append(i).append("} "); + } + editPattern = patternBuffer.toString().trim(); + } +} + + stringBuffer.append(TEXT_145); + stringBuffer.append(viewPattern); + stringBuffer.append(TEXT_146); + stringBuffer.append(editPattern); + stringBuffer.append(TEXT_147); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_148); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_149); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_150); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_151); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_152); + +if (labelModelFacet instanceof FeatureLabelModelFacet) { + FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet; + GenFeature feature = featureLabelModelFacet.getMetaFeature(); + if (!feature.isPrimitiveType()) { + + stringBuffer.append(TEXT_153); + stringBuffer.append(feature.getCapName()); + stringBuffer.append(TEXT_154); + + } + + stringBuffer.append(TEXT_155); + stringBuffer.append(importManager.getImportedName("java.text.MessageFormat")); + stringBuffer.append(TEXT_156); + + String value = "element.get" + feature.getCapName() + "()"; /*XXX: getTypedKey is not a part of public API!*/ + if (feature.isPrimitiveType()) { + value = "new " + primitiveTypeToWrapperClassName.get(feature.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")"; + } + + stringBuffer.append(TEXT_157); + stringBuffer.append(value); + stringBuffer.append(TEXT_158); + +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + + stringBuffer.append(TEXT_159); + stringBuffer.append(importManager.getImportedName("java.text.MessageFormat")); + stringBuffer.append(TEXT_160); + + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); + String value = "element.get" + next.getCapName() + "()"; /*XXX: getTypedKey is not a part of public API!*/ + if (next.isPrimitiveType()) { + value = "new " + primitiveTypeToWrapperClassName.get(next.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")"; + } + + stringBuffer.append(TEXT_161); + stringBuffer.append(value); + if (it.hasNext()) { + stringBuffer.append(TEXT_162); + } + + } + + stringBuffer.append(TEXT_163); + +} else { + + stringBuffer.append(TEXT_164); + +} + + stringBuffer.append(TEXT_165); + stringBuffer.append(TEXT_166); + stringBuffer.append(TEXT_167); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_168); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_169); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_170); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_171); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_172); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_173); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_174); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_175); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_176); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.FontData")); + stringBuffer.append(TEXT_177); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_178); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_179); + stringBuffer.append(TEXT_180); + stringBuffer.append(TEXT_181); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_182); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_183); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_184); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_185); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_186); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_187); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_188); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_189); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Image")); + stringBuffer.append(TEXT_190); + /*@ include file="adapters/propertySource.javajetinc"*/ + stringBuffer.append(TEXT_191); + stringBuffer.append(TEXT_192); + stringBuffer.append(TEXT_193); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.impl.AdapterImpl")); + stringBuffer.append(TEXT_194); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification")); + stringBuffer.append(TEXT_195); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_196); + stringBuffer.append(TEXT_197); + stringBuffer.append(TEXT_198); + stringBuffer.append(importManager.getImportedName("java.util.HashMap")); + stringBuffer.append(TEXT_199); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_200); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification")); + stringBuffer.append(TEXT_201); + stringBuffer.append(TEXT_202); + stringBuffer.append(TEXT_203); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_204); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_205); + stringBuffer.append(TEXT_206); + stringBuffer.append(TEXT_207); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_208); + +if (labelModelFacet instanceof FeatureLabelModelFacet) { + GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); + + stringBuffer.append(TEXT_209); + stringBuffer.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_210); + stringBuffer.append(feature.getFeatureAccessorName()); + stringBuffer.append(TEXT_211); + +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); + + stringBuffer.append(TEXT_212); + stringBuffer.append(importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_213); + stringBuffer.append(next.getFeatureAccessorName()); + stringBuffer.append(TEXT_214); + + } +} + + stringBuffer.append(TEXT_215); + stringBuffer.append(TEXT_216); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_217); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_218); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_219); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_220); + stringBuffer.append(TEXT_221); + stringBuffer.append(TEXT_222); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_223); + stringBuffer.append(TEXT_224); + stringBuffer.append(TEXT_225); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_226); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_227); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_228); + +String figureQualifiedClassName = null; +Viewmap viewmap = genLabel.getViewmap(); +if (viewmap instanceof FigureViewmap) { + figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName(); + if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) { + figureQualifiedClassName = "org.eclipse.draw2d.Label"; + } + + stringBuffer.append(TEXT_229); + stringBuffer.append(importManager.getImportedName(figureQualifiedClassName)); + stringBuffer.append(TEXT_230); + } // instanceof FigureViewmap + else if (viewmap instanceof SnippetViewmap) { + stringBuffer.append(TEXT_231); + stringBuffer.append(((SnippetViewmap) viewmap).getBody()); + stringBuffer.append(TEXT_232); + } // instanceof SnippetViewmap; FIXME : obtain figure class name to generate getter + else if (viewmap instanceof InnerClassViewmap) { + figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName(); + + stringBuffer.append(TEXT_233); + stringBuffer.append(figureQualifiedClassName); + stringBuffer.append(TEXT_234); + } + stringBuffer.append(TEXT_235); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_236); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_237); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_238); + +if (genLabel.getViewmap() instanceof InnerClassViewmap) { + String classBody = ((InnerClassViewmap) genLabel.getViewmap()).getClassBody(); + + stringBuffer.append(TEXT_239); + stringBuffer.append(classBody); + stringBuffer.append(TEXT_240); + +if (classBody.indexOf("DPtoLP") != -1) { + + stringBuffer.append(TEXT_241); + +} + + +} + + stringBuffer.append(TEXT_242); + importManager.emitSortedImports(); + stringBuffer.append(TEXT_243); + return stringBuffer.toString(); + } +} Index: templates/editor/PaletteFactory.javajet =================================================================== RCS file: templates/editor/PaletteFactory.javajet diff -N templates/editor/PaletteFactory.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/PaletteFactory.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,352 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="PaletteFactoryGenerator" + imports="java.util.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.codegen.ecore.genmodel.*"%> +<% +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final Palette palette = genDiagram.getPalette(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); + +importManager.addImport("org.eclipse.gef.Tool"); +importManager.addImport("org.eclipse.gef.Request"); +importManager.addImport("org.eclipse.gef.requests.CreationFactory"); +importManager.addImport("org.eclipse.gef.tools.CreationTool"); +importManager.addImport("org.eclipse.gef.tools.ConnectionCreationTool"); +importManager.addImport("org.eclipse.gef.palette.PaletteContainer"); +importManager.addImport("org.eclipse.gef.palette.PaletteDrawer"); +importManager.addImport("org.eclipse.gef.palette.PaletteGroup"); +importManager.addImport("org.eclipse.gef.palette.PaletteRoot"); +importManager.addImport("org.eclipse.gef.palette.ConnectionCreationToolEntry"); +importManager.addImport("org.eclipse.gef.palette.MarqueeToolEntry"); +importManager.addImport("org.eclipse.gef.palette.SelectionToolEntry"); +importManager.addImport("org.eclipse.gef.palette.ToolEntry"); +importManager.addImport("org.eclipse.jface.resource.ImageDescriptor"); +importManager.addImport("org.eclipse.emf.edit.provider.IItemLabelProvider"); +importManager.addImport("org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry"); +importManager.addImport("org.eclipse.emf.common.notify.AdapterFactory"); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=palette.getFactoryClassName()%> { + /** + * @generated + */ + private final AdapterFactory domainAdapterFactory; + + /** + * @generated + */ + public <%=palette.getFactoryClassName()%>(AdapterFactory domainAdapterFactory) { + this.domainAdapterFactory = domainAdapterFactory; + } + + /** + * @generated + */ + public void contributeToPalette(PaletteRoot paletteRoot) { + PaletteGroup controls = new PaletteGroup("Controls"); + paletteRoot.add(controls); + + ToolEntry tool = new SelectionToolEntry(); + controls.add(tool); + paletteRoot.setDefaultEntry(tool); + + controls.add(new MarqueeToolEntry()); +<% +List toolGroups = palette.getGroups(); +for (int i = 0; i < toolGroups.size(); i++) { + ToolGroup toolGroup = (ToolGroup) toolGroups.get(i); +%> + paletteRoot.add(<%=toolGroup.getCreateMethodName()%>()); +<%}%> + } + +<% +for (int i = 0; i < toolGroups.size(); i++) { + ToolGroup toolGroup = (ToolGroup) toolGroups.get(i); +%> + + /** + * @generated + */ + private PaletteContainer <%=toolGroup.getCreateMethodName()%>() { + PaletteContainer paletteContainer = createContainer("<%=toolGroup.getTitleKey()%>"); +<% + List nodeCreationTools = toolGroup.getNodeTools(); + for (int j = 0; j < nodeCreationTools.size(); j++) { + NodeEntry nodeCreationTool = (NodeEntry) nodeCreationTools.get(j); +%> + paletteContainer.add(<%=nodeCreationTool.getCreateMethodName()%>()); +<% } + List linkCreationTools = toolGroup.getLinkTools(); + for (int j = 0; j < linkCreationTools.size(); j++) { + LinkEntry linkCreationTool = (LinkEntry) linkCreationTools.get(j); + if (j == 0) { +%> + paletteContainer.add(new <%=importManager.getImportedName("org.eclipse.gef.palette.PaletteSeparator")%>()); +<% }%> + paletteContainer.add(<%=linkCreationTool.getCreateMethodName()%>()); +<% }%> + return paletteContainer; + } +<% +} +for (int i = 0; i < toolGroups.size(); i++) { + ToolGroup toolGroup = (ToolGroup) toolGroups.get(i); + List nodeCreationTools = toolGroup.getNodeTools(); + for (int j = 0; j < nodeCreationTools.size(); j++) { + NodeEntry nodeCreationTool = (NodeEntry) nodeCreationTools.get(j); + List genNodes = nodeCreationTool.getGenNode(); + GenNode firstGenNode = (GenNode) genNodes.get(0); + GenClass genClass = firstGenNode.getDomainMetaClass(); + final String domainElementInstanceCreationCode; + if (!genClass.isMapEntry()) { + domainElementInstanceCreationCode = importManager.getImportedName(genClass.getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create" + genClass.getName() + "()"; + } else { + domainElementInstanceCreationCode = importManager.getImportedName(genClass.getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create(" + + importManager.getImportedName(genClass.getGenPackage().getQualifiedPackageInterfaceName()) + ".eINSTANCE.get" + genClass.getClassifierAccessorName() + "())"; + } +%> + + /** + * @generated + */ + private ToolEntry <%=nodeCreationTool.getCreateMethodName()%>() { + <%if (nodeCreationTool.getSmallIconPath() != null) {%> + ImageDescriptor smallImage = ImageDescriptor.createFromFile(<%=palette.getFactoryClassName()%>.class, "<%=nodeCreationTool.getSmallIconPath()%>"); + <%} else {%> + ImageDescriptor smallImage = getImage(<%=domainElementInstanceCreationCode%>); + <%}%> + <%if (nodeCreationTool.getLargeIconPath() != null) {%> + ImageDescriptor largeImage = ImageDescriptor.createFromFile(<%=palette.getFactoryClassName()%>.class, "<%=nodeCreationTool.getLargeIconPath()%>"); + <%} else {%> + ImageDescriptor largeImage = smallImage; + <%}%> + final int[] visualIds = new int[] { +<% + for (Iterator genNodesIterator = genNodes.iterator(); genNodesIterator.hasNext();) { + GenNode nextNode = (GenNode) genNodesIterator.next(); +%> + <%=nextNode.getVisualID()%><%if (genNodesIterator.hasNext()) {%>,<%}%> +<% + } +%> + }; + return new <%=importManager.getImportedName("org.eclipse.gef.palette.CombinedTemplateCreationEntry")%>("<%=nodeCreationTool.getTitleKey()%>", + "<%=nodeCreationTool.getDescriptionKey()%>", new ModelCreationFactory(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>.class), smallImage, largeImage) { + public Tool createTool() { + Tool result = new CreationTool() { + protected Request createTargetRequest() { + CreateRequestEx request = new CreateRequestEx(visualIds); + request.setFactory(getFactory()); + return request; + } + protected void performCreation(int button) { + super.performCreation(button); + final <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> createdEditPart = (<%=importManager.getImportedName("org.eclipse.gef.EditPart")%>)getCurrentViewer().getEditPartRegistry().get(getCreateRequest().getNewObject()); + if (createdEditPart != null) { + getCurrentViewer().getControl().getDisplay().asyncExec(new Runnable() { + public void run() { + if (createdEditPart.isActive()) { + createdEditPart.performRequest(new <%=importManager.getImportedName("org.eclipse.gef.Request")%>(<%=importManager.getImportedName("org.eclipse.gef.RequestConstants")%>.REQ_DIRECT_EDIT)); + } + } + }); + } + } + }; + result.setProperties(getToolProperties()); + return result; + } + }; + } +<% + } + List linkCreationTools = toolGroup.getLinkTools(); + for (int j = 0; j < linkCreationTools.size(); j++) { + LinkEntry linkCreationTool = (LinkEntry) linkCreationTools.get(j); + List genLinks = linkCreationTool.getGenLink(); + GenLink firstGenLink = (GenLink) genLinks.get(0); + LinkModelFacet linkModelFacet = firstGenLink.getModelFacet(); + final String domainElementInstanceCreationCode; + if (linkModelFacet instanceof TypeLinkModelFacet) { + TypeLinkModelFacet typeLinkModelFacet = (TypeLinkModelFacet) linkModelFacet; + GenClass genClass = typeLinkModelFacet.getMetaClass(); + domainElementInstanceCreationCode = importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create" + genClass.getName() + "()"; + } else { + domainElementInstanceCreationCode = "null"; + } +%> + + /** + * @generated + */ + private ToolEntry <%=linkCreationTool.getCreateMethodName()%>() { + <%if (linkCreationTool.getSmallIconPath() != null) {%> + ImageDescriptor smallImage = ImageDescriptor.createFromFile(<%=palette.getFactoryClassName()%>.class, "<%=linkCreationTool.getSmallIconPath()%>"); + <%} else {%> + ImageDescriptor smallImage = getImage(<%=domainElementInstanceCreationCode%>); + <%}%> + <%if (linkCreationTool.getLargeIconPath() != null) {%> + ImageDescriptor largeImage = ImageDescriptor.createFromFile(<%=palette.getFactoryClassName()%>.class, "<%=linkCreationTool.getLargeIconPath()%>"); + <%} else {%> + ImageDescriptor largeImage = smallImage; + <%}%> + final int[] visualIds = new int[] { +<% + for (Iterator genLinksIterator = genLinks.iterator(); genLinksIterator.hasNext();) { + GenLink nextLink = (GenLink) genLinksIterator.next(); +%> + <%=nextLink.getVisualID()%><%if (genLinksIterator.hasNext()) {%>,<%}%> +<% + } +%> + }; + return new ConnectionCreationToolEntry("<%=linkCreationTool.getTitleKey()%>", "<%=linkCreationTool.getDescriptionKey()%>", + new ModelCreationFactory(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")%>.class), smallImage, largeImage) { + public Tool createTool() { + Tool result = new ConnectionCreationTool() { + protected Request createTargetRequest() { + CreateConnectionRequestEx request = new CreateConnectionRequestEx(visualIds); + request.setFactory(getFactory()); + return request; + } + }; + result.setProperties(getToolProperties()); + return result; + } + }; + } +<% + } +} +%> + + /** + * @generated + */ + private PaletteContainer createContainer(String title) { + return new PaletteDrawer(title); + } + + /** + * @generated + */ + private ImageDescriptor getImage(Object o) { + IItemLabelProvider labelProvider = (IItemLabelProvider) domainAdapterFactory.adapt(o, IItemLabelProvider.class); + if (labelProvider != null) { + return ExtendedImageRegistry.getInstance().getImageDescriptor(labelProvider.getImage(o)); + } + return null; + } + + /** + * @generated + */ + public static class CreateRequestEx extends <%=importManager.getImportedName("org.eclipse.gef.requests.CreateRequest")%> { + /** + * @generated + */ + private final int[] visualIds; + + /** + * @generated + */ + public CreateRequestEx(int[] visualIds) { + this.visualIds = visualIds; + } + + /** + * @generated + */ + public int[] getVisualIds() { + return visualIds; + } + + /** + * @generated + */ + public void setCreatedObject(Object createdObject) { + ((ModelCreationFactory)getFactory()).setCreatedObject(createdObject); + } + } + + /** + * @generated + */ + public static class CreateConnectionRequestEx extends <%=importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest")%> { + /** + * @generated + */ + private final int[] visualIds; + + /** + * @generated + */ + public CreateConnectionRequestEx(int[] visualIds) { + this.visualIds = visualIds; + } + + /** + * @generated + */ + public int[] getVisualIds() { + return visualIds; + } + + /** + * @generated + */ + public void setCreatedObject(Object createdObject) { + ((ModelCreationFactory)getFactory()).setCreatedObject(createdObject); + } + } + + /** + * @generated + */ + private static class ModelCreationFactory implements CreationFactory { + /** + * @generated + */ + private Object createdObject; + + /** + * @generated + */ + private final Class createdObjectType; + + /** + * @generated + */ + public ModelCreationFactory(Class objectType) { + createdObjectType = objectType; + } + + /** + * @generated + */ + public Object getNewObject() { + return createdObject; + } + + /** + * @generated + */ + public Object getObjectType() { + return createdObjectType; + } + + /** + * @generated + */ + public void setCreatedObject(Object createdObject) { + this.createdObject = createdObject; + } + } +} +<%importManager.emitSortedImports();%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,79 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +import org.eclipse.emf.common.util.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; + +public class PluginGenerator +{ + protected static String nl; + public static synchronized PluginGenerator create(String lineSeparator) + { + nl = lineSeparator; + PluginGenerator result = new PluginGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = NL + "import java.util.ArrayList;" + NL + "import java.util.List;" + NL + "" + NL + "import org.eclipse.core.runtime.IStatus;" + NL + "import org.eclipse.core.runtime.Status;" + NL + "" + NL + "import org.eclipse.emf.common.notify.AdapterFactory;" + NL + "import org.eclipse.emf.edit.provider.ComposedAdapterFactory;" + NL + "import org.eclipse.emf.edit.provider.IItemLabelProvider;" + NL + "import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;" + NL + "import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;" + NL + "import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;" + NL + "import org.eclipse.jface.resource.ImageDescriptor;" + NL + "import org.eclipse.swt.graphics.Image;" + NL + "import org.eclipse.ui.plugin.AbstractUIPlugin;" + NL + "import org.osgi.framework.BundleContext;"; + protected final String TEXT_2 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_3 = " extends AbstractUIPlugin {" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static final String ID = \""; + protected final String TEXT_4 = "\"; //$NON-NLS-1$" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static "; + protected final String TEXT_5 = " instance;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ComposedAdapterFactory adapterFactory;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_6 = "() {" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void start(BundleContext context) throws Exception {" + NL + "\t\tsuper.start(context);" + NL + "\t\tinstance = this;" + NL + "\t\tadapterFactory = createAdapterFactory();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void stop(BundleContext context) throws Exception {" + NL + "\t\tadapterFactory.dispose();" + NL + "\t\tadapterFactory = null;" + NL + "\t\tinstance = null;" + NL + "\t\tsuper.stop(context);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static "; + protected final String TEXT_7 = " getInstance() {" + NL + "\t\treturn instance;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ComposedAdapterFactory createAdapterFactory() {" + NL + "\t\tList factories = new ArrayList();" + NL + "\t\tfillItemProviderFactories(factories);" + NL + "\t\treturn new ComposedAdapterFactory(factories);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void fillItemProviderFactories(List factories) {"; + protected final String TEXT_8 = NL + "\t\tfactories.add(new "; + protected final String TEXT_9 = "());"; + protected final String TEXT_10 = NL + "\t\tfactories.add(new ResourceItemProviderAdapterFactory());" + NL + "\t\tfactories.add(new ReflectiveItemProviderAdapterFactory());" + NL + "\t}" + NL + "\t" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic AdapterFactory getItemProvidersAdapterFactory() {" + NL + "\t\treturn adapterFactory;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ImageDescriptor getItemImageDescriptor(Object item) {" + NL + "\t\tIItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(item, IItemLabelProvider.class);" + NL + "\t\tif (labelProvider != null) {"; + protected final String TEXT_11 = NL + "\t\t\treturn ExtendedImageRegistry.getInstance().getImageDescriptor(labelProvider.getImage(item));" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * Returns an image descriptor for the image file at the given" + NL + "\t * plug-in relative path." + NL + "\t *" + NL + "\t * @generated" + NL + "\t * @param path the path" + NL + "\t * @return the image descriptor" + NL + "\t */" + NL + "\tpublic static ImageDescriptor getBundledImageDescriptor(String path) {" + NL + "\t\treturn AbstractUIPlugin.imageDescriptorFromPlugin(ID, path);" + NL + "\t}" + NL + "\t" + NL + "\t/**" + NL + "\t * Returns an image for the image file at the given plug-in relative path." + NL + "\t * Client do not need to dispose this image. Images will be disposed automatically." + NL + "\t *" + NL + "\t * @generated" + NL + "\t * @param path the path" + NL + "\t * @return image instance" + NL + "\t */" + NL + "\tpublic Image getBundledImage(String path) {" + NL + "\t\tImage image = getImageRegistry().get(path);" + NL + "\t\tif (image == null) {" + NL + "\t\t\tgetImageRegistry().put(path, getBundledImageDescriptor(path));" + NL + "\t\t\timage = getImageRegistry().get(path);" + NL + "\t\t}" + NL + "\t\treturn image;" + NL + "\t}" + NL + "\t" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void logError(String error) {" + NL + "\t\tlogError(error, null);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @param throwable actual error or null could be passed" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void logError(String error, Throwable throwable) {" + NL + "\t\tif (error == null && throwable != null) {" + NL + "\t\t\terror = throwable.getMessage();" + NL + "\t\t}" + NL + "\t\tgetLog().log(new Status(IStatus.ERROR, "; + protected final String TEXT_12 = ".ID, IStatus.OK, error, throwable));" + NL + "\t\tdebug(error, throwable);" + NL + "\t}" + NL + "\t" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void logInfo(String message) {" + NL + "\t\tlogInfo(message, null);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @param throwable actual error or null could be passed" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void logInfo(String message, Throwable throwable) {" + NL + "\t\tif (message == null && message != null) {" + NL + "\t\t\tmessage = throwable.getMessage();" + NL + "\t\t}" + NL + "\t\tgetLog().log(new Status(IStatus.INFO, "; + protected final String TEXT_13 = ".ID, IStatus.OK, message, throwable));" + NL + "\t\tdebug(message, throwable);" + NL + "\t}" + NL + "\t" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void debug(String message, Throwable throwable) {" + NL + "\t\tif (!isDebugging()) {" + NL + "\t\t\treturn;" + NL + "\t\t}" + NL + "\t\tif (message != null) {" + NL + "\t\t\tSystem.err.println(message);" + NL + "\t\t}" + NL + "\t\tif (throwable != null) {" + NL + "\t\t\tthrowable.printStackTrace();" + NL + "\t\t}" + NL + "\t}" + NL + "\t" + NL + "}"; + protected final String TEXT_14 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +final GenPlugin genPlugin = (GenPlugin) ((Object[]) argument)[0]; +final EList genPackages = genPlugin.getEditorGen().getAllDomainGenPackages(true); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); + stringBuffer.append(TEXT_1); + importManager.markImportLocation(stringBuffer); + stringBuffer.append(TEXT_2); + stringBuffer.append(genPlugin.getActivatorClassName()); + stringBuffer.append(TEXT_3); + stringBuffer.append(genPlugin.getID()); + stringBuffer.append(TEXT_4); + stringBuffer.append(genPlugin.getActivatorClassName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(genPlugin.getActivatorClassName()); + stringBuffer.append(TEXT_6); + stringBuffer.append(genPlugin.getActivatorClassName()); + stringBuffer.append(TEXT_7); + +for (int i = 0; i < genPackages.size(); i++) { + GenPackage genPackage = (GenPackage) genPackages.get(i); + + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName(genPackage.getQualifiedItemProviderAdapterFactoryClassName())); + stringBuffer.append(TEXT_9); + } + stringBuffer.append(TEXT_10); + + // XXX dependency org.eclipse.emf.edit.ui is for ExtendedImageRegistry only. + // FIXME move image registry to plugin class code + + stringBuffer.append(TEXT_11); + stringBuffer.append(genPlugin.getActivatorClassName()); + stringBuffer.append(TEXT_12); + stringBuffer.append(genPlugin.getActivatorClassName()); + stringBuffer.append(TEXT_13); + importManager.emitSortedImports(); + stringBuffer.append(TEXT_14); + return stringBuffer.toString(); + } +} Index: templates/parts/refreshMethods/font.javajetinc =================================================================== RCS file: templates/parts/refreshMethods/font.javajetinc diff -N templates/parts/refreshMethods/font.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshMethods/font.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,43 @@ + /** + * @generated + */ + protected void refreshFont() { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")%> style = + (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")%>) <%=primaryView%>.getStyle( + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle()); + <%=importManager.getImportedName("org.eclipse.swt.graphics.Font")%> toDispose = createdFont; + if (style != null) { + String fontName = style.getFontName(); + int fontHeight = style.getFontHeight(); + int fontStyle = <%=importManager.getImportedName("org.eclipse.swt.SWT")%>.NORMAL; + if (style.isBold()) { + fontStyle |= <%=importManager.getImportedName("org.eclipse.swt.SWT")%>.BOLD; + } + if (style.isItalic()) { + fontStyle |= <%=importManager.getImportedName("org.eclipse.swt.SWT")%>.ITALIC; + } + <%=importManager.getImportedName("org.eclipse.swt.graphics.Font")%> currentFont = getFigure().getFont(); + if (currentFont != null) { + <%=importManager.getImportedName("org.eclipse.swt.graphics.FontData")%> currentFontData = currentFont.getFontData()[0]; + if (currentFontData.getName().equals(fontName) && currentFontData.getHeight() == fontHeight && currentFontData.getStyle() == fontStyle) { + return; + } + } + createdFont = new <%=importManager.getImportedName("org.eclipse.swt.graphics.Font")%>(null, fontName, fontHeight, fontStyle); + getFigure().setFont(createdFont); + } else { + //revert to the default font + getFigure().setFont(getViewer().getControl().getFont()); + createdFont = null; + } + if (toDispose != null) { + toDispose.dispose(); + } + } + + /** + * The font (created by {@link #refreshFont()}) currently assigned to the label (unless the default font is assigned). + * Whenever another non-default font is assigned to it, it is safe to dispose the previous one. + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.swt.graphics.Font")%> createdFont; Index: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/DomainElementInitializerGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/DomainElementInitializerGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/providers/DomainElementInitializerGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/providers/DomainElementInitializerGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,189 @@ +package org.eclipse.gmf.codegen.templates.lite.providers; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; +import java.util.*; + +public class DomainElementInitializerGenerator +{ + protected static String nl; + public static synchronized DomainElementInitializerGenerator create(String lineSeparator) + { + nl = lineSeparator; + DomainElementInitializerGenerator result = new DomainElementInitializerGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class DomainElementInitializer "; + protected final String TEXT_5 = "{" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static interface IElementInitializer {" + NL + "\t\tpublic void initializeElement("; + protected final String TEXT_6 = " instance);" + NL + "\t}" + NL; + protected final String TEXT_7 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static IElementInitializer NULL_INITIALIZER = new IElementInitializer() {" + NL + "\t\tpublic void initializeElement("; + protected final String TEXT_8 = " instance) {" + NL + "\t\t}" + NL + "\t};" + NL; + protected final String TEXT_9 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static IElementInitializer "; + protected final String TEXT_10 = " = NULL_INITIALIZER;"; + protected final String TEXT_11 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static IElementInitializer "; + protected final String TEXT_12 = " = new ObjectInitializer(new FeatureInitializer[] {"; + protected final String TEXT_13 = NL + "\t\t\tnew FeatureInitializer(\""; + protected final String TEXT_14 = "\", //$NON-NLS-1$" + NL + "\t\t\t\t\t\t"; + protected final String TEXT_15 = ".eINSTANCE.get"; + protected final String TEXT_16 = "()," + NL + "\t\t\t\t\t\t"; + protected final String TEXT_17 = ".eINSTANCE.get"; + protected final String TEXT_18 = "())"; + protected final String TEXT_19 = ", "; + protected final String TEXT_20 = NL; + protected final String TEXT_21 = NL + "\t});"; + protected final String TEXT_22 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static class ObjectInitializer implements IElementInitializer {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate FeatureInitializer[] initExpressions;" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tObjectInitializer(FeatureInitializer[] initExpressions) {" + NL + "\t\t\tthis.initExpressions = initExpressions;" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void initializeElement("; + protected final String TEXT_23 = " instance) {" + NL + "\t\t\tfor (int i = 0; i < initExpressions.length; i++) {" + NL + "\t\t\t\tFeatureInitializer nextExpr = initExpressions[i];" + NL + "\t\t\t\tnextExpr.init(instance);" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tstatic class FeatureInitializer {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate "; + protected final String TEXT_24 = " contextClass;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate "; + protected final String TEXT_25 = " sFeature;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate "; + protected final String TEXT_26 = " expressionBody;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate "; + protected final String TEXT_27 = " query;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tFeatureInitializer("; + protected final String TEXT_28 = " expression, " + NL + "\t\t\t"; + protected final String TEXT_29 = " context, " + NL + "\t\t\t"; + protected final String TEXT_30 = " sFeature) {" + NL + "\t\t\tthis.sFeature = sFeature;" + NL + "\t\t\tthis.expressionBody = expression;" + NL + "\t\t\tthis.contextClass\t= context;" + NL + "\t\t}" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tvoid init("; + protected final String TEXT_31 = " contextInstance) {" + NL + "\t\t\tif(this.query == null) {" + NL + "\t\t\t\tthis.query = "; + protected final String TEXT_32 = ".eINSTANCE.createQuery(expressionBody, contextClass);" + NL + "\t\t\t}" + NL + "\t\t\tObject value = query.evaluate(contextInstance);" + NL + "\t\t\tif(sFeature.getEType() instanceof "; + protected final String TEXT_33 = " && " + NL + "\t\t\t\tvalue instanceof "; + protected final String TEXT_34 = ") {" + NL + "\t\t\t\tvalue = (("; + protected final String TEXT_35 = ")value).getInstance();" + NL + "\t\t\t} else if(value != null && sFeature.isMany()) {" + NL + "\t\t\t\tvalue = new "; + protected final String TEXT_36 = "(("; + protected final String TEXT_37 = ")value);" + NL + "\t\t\t}" + NL + "\t\t\tcontextInstance.eSet(sFeature, value);" + NL + "\t\t}" + NL + "\t}"; + protected final String TEXT_38 = NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + +importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_4); + /*XXX: class name should be customizable!*/ + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); + stringBuffer.append(TEXT_6); + +boolean needsNullInitializer = false; +boolean needsOCLInitializer = false; +for (Iterator it = genDiagram.eAllContents(); it.hasNext(); ) { + Object next = it.next(); + String id = null; + TypeModelFacet modelFacet = null; + if (next instanceof GenNode) { + id = ((GenNode) next).getUniqueIdentifier(); + modelFacet = ((GenNode) next).getModelFacet(); + } else if (next instanceof GenLink && ((GenLink) next).getModelFacet() instanceof TypeLinkModelFacet) { + id = ((GenLink) next).getUniqueIdentifier(); + modelFacet = (TypeLinkModelFacet) ((GenLink) next).getModelFacet(); + } + if (modelFacet == null) { + continue; + } + GenElementInitializer elementInitializer = modelFacet.getModelElementInitializer(); + if (elementInitializer instanceof GenFeatureSeqInitializer == false) { + if (!needsNullInitializer) { + needsNullInitializer = true; + + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); + stringBuffer.append(TEXT_8); + + } + + stringBuffer.append(TEXT_9); + stringBuffer.append(id); + stringBuffer.append(TEXT_10); + + continue; + } + needsOCLInitializer = true; + GenFeatureSeqInitializer ftInitializer = (GenFeatureSeqInitializer) elementInitializer; + + stringBuffer.append(TEXT_11); + stringBuffer.append(id); + stringBuffer.append(TEXT_12); + + for(Iterator featInitIt = ftInitializer.getInitializers().iterator(); featInitIt.hasNext();) { + GenFeatureValueSpec featureValSpec = (GenFeatureValueSpec)featInitIt.next(); + stringBuffer.append(TEXT_13); + stringBuffer.append(featureValSpec.getBody()); + stringBuffer.append(TEXT_14); + stringBuffer.append(importManager.getImportedName(ftInitializer.getElementQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_15); + stringBuffer.append(ftInitializer.getElementClassAccessorName()); + stringBuffer.append(TEXT_16); + stringBuffer.append(importManager.getImportedName(featureValSpec.getFeatureQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_17); + stringBuffer.append(featureValSpec.getFeature().getFeatureAccessorName() + ); + stringBuffer.append(TEXT_18); + if (featInitIt.hasNext()) { + stringBuffer.append(TEXT_19); + } + stringBuffer.append(TEXT_20); + + } // end of GenFeatureValueSpec iteration + + stringBuffer.append(TEXT_21); + +} +if (needsOCLInitializer) { + + stringBuffer.append(TEXT_22); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); + stringBuffer.append(TEXT_23); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EClass")); + stringBuffer.append(TEXT_24); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_25); + stringBuffer.append(importManager.getImportedName("java.lang.String")); + stringBuffer.append(TEXT_26); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ocl.query.Query")); + stringBuffer.append(TEXT_27); + stringBuffer.append(importManager.getImportedName("java.lang.String")); + stringBuffer.append(TEXT_28); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EClass")); + stringBuffer.append(TEXT_29); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_30); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); + stringBuffer.append(TEXT_31); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ocl.query.QueryFactory")); + stringBuffer.append(TEXT_32); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnum")); + stringBuffer.append(TEXT_33); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral")); + stringBuffer.append(TEXT_34); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral")); + stringBuffer.append(TEXT_35); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")); + stringBuffer.append(TEXT_36); + stringBuffer.append(importManager.getImportedName("java.util.Collection")); + stringBuffer.append(TEXT_37); + +} + + stringBuffer.append(TEXT_38); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/DiagramEditorUtilGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/DiagramEditorUtilGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/DiagramEditorUtilGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/DiagramEditorUtilGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,60 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; + +public class DiagramEditorUtilGenerator +{ + protected static String nl; + public static synchronized DiagramEditorUtilGenerator create(String lineSeparator) + { + nl = lineSeparator; + DiagramEditorUtilGenerator result = new DiagramEditorUtilGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_3 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static String openFilePathDialog(Shell shell, String fileExtensionFilter, int style) {" + NL + "\t\tFileDialog fileDialog = new FileDialog(shell, style);" + NL + "\t\tfileDialog.setFilterExtensions(new String[]{fileExtensionFilter});" + NL + "" + NL + "\t\tfileDialog.open();" + NL + "\t\tif (fileDialog.getFileName() != null && fileDialog.getFileName().length() > 0) {" + NL + "\t\t\treturn fileDialog.getFilterPath() + File.separator + fileDialog.getFileName();" + NL + "\t\t}" + NL + "\t\telse" + NL + "\t\t{" + NL + "\t\t\treturn null;" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static boolean openEditor(URI fileURI) {" + NL + "\t\tIWorkbench workbench = PlatformUI.getWorkbench();" + NL + "\t\tIWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();" + NL + "\t\tIWorkbenchPage page = workbenchWindow.getActivePage();" + NL + "" + NL + "\t\tIEditorDescriptor editorDescriptor = workbench.getEditorRegistry().getDefaultEditor(fileURI.toFileString());" + NL + "\t\tif (editorDescriptor == null) {" + NL + "\t\t\tMessageDialog.openError(" + NL + "\t\t\tworkbenchWindow.getShell()," + NL + "\t\t\t\"Error\"," + NL + "\t\t\t\"There is no editor registered for the file \" + fileURI.toFileString());" + NL + "\t\t\treturn false;" + NL + "\t\t} else {" + NL + "\t\t\ttry {" + NL + "\t\t\t\tpage.openEditor(new URIEditorInput(fileURI), editorDescriptor.getId());" + NL + "\t\t\t} catch (PartInitException exception) {" + NL + "\t\t\t\tMessageDialog.openError(" + NL + "\t\t\t\tworkbenchWindow.getShell()," + NL + "\t\t\t\t\"Error Opening Editor\"," + NL + "\t\t\t\texception.getMessage());" + NL + "\t\t\t\treturn false;" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "" + NL + "\t\treturn true;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static URI getDiagramFileURI(URI modelFileURI) {" + NL + "\t\tif (modelFileURI == null || !modelFileURI.isFile()) {" + NL + "\t\t\treturn null;" + NL + "\t\t}" + NL + "\t\treturn modelFileURI.trimFileExtension().appendFileExtension(\""; + protected final String TEXT_4 = "\");" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static URI getModelFileURI(URI diagramFileURI) {" + NL + "\t\tif (diagramFileURI == null || !diagramFileURI.isFile()) {" + NL + "\t\t\treturn null;" + NL + "\t\t}" + NL + "\t\treturn diagramFileURI.trimFileExtension().appendFileExtension(\""; + protected final String TEXT_5 = "\");" + NL + "\t}" + NL + " }"; + protected final String TEXT_6 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final GenEditorGenerator editorGen = genDiagram.getEditorGen(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); + stringBuffer.append(TEXT_1); + importManager.markImportLocation(stringBuffer); +importManager.addImport("java.io.File"); +importManager.addImport("org.eclipse.ui.IWorkbench"); +importManager.addImport("org.eclipse.ui.IWorkbenchPage"); +importManager.addImport("org.eclipse.ui.IWorkbenchWindow"); +importManager.addImport("org.eclipse.ui.PlatformUI"); +importManager.addImport("org.eclipse.ui.PartInitException"); +importManager.addImport("org.eclipse.ui.IEditorDescriptor"); +importManager.addImport("org.eclipse.swt.widgets.Shell"); +importManager.addImport("org.eclipse.swt.widgets.FileDialog"); +importManager.addImport("org.eclipse.jface.dialogs.MessageDialog"); +importManager.addImport("org.eclipse.emf.common.util.URI"); +importManager.addImport("org.eclipse.emf.common.ui.URIEditorInput"); + + stringBuffer.append(TEXT_2); + stringBuffer.append(genDiagram.getDiagramEditorUtilClassName()); + stringBuffer.append(TEXT_3); + stringBuffer.append(editorGen.getDiagramFileExtension()); + stringBuffer.append(TEXT_4); + stringBuffer.append(editorGen.getDomainFileExtension()); + stringBuffer.append(TEXT_5); + importManager.emitSortedImports(); + stringBuffer.append(TEXT_6); + return stringBuffer.toString(); + } +} Index: META-INF/MANIFEST.MF =================================================================== RCS file: META-INF/MANIFEST.MF diff -N META-INF/MANIFEST.MF --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ META-INF/MANIFEST.MF 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,14 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.gmf.codegen.lite +Bundle-Version: 1.0.0 +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)", + org.eclipse.emf.codegen.ecore, + org.eclipse.gmf.common, + org.eclipse.gmf.codegen +Eclipse-LazyStart: true +Bundle-Activator: org.eclipse.gmf.internal.codegen.lite.Activator +Export-Package: org.eclipse.gmf.internal.codegen.lite Index: templates/providers/NodeViewFactory.javajet =================================================================== RCS file: templates/providers/NodeViewFactory.javajet diff -N templates/providers/NodeViewFactory.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/providers/NodeViewFactory.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,78 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers" class="NodeViewFactoryGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* java.util.*"%> +<% +GenNode genElement = (GenNode) ((Object[]) argument)[0]; +GenDiagram genDiagram = genElement.getDiagram(); +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> +<%importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genElement.getNotationViewFactoryClassName()%> { + /** + * @generated + */ + public static void decorateView(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) { +<%@ include file="createVIDAnnotation.jetinc"%> + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.ShapeStyle")%> style = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createShapeStyle(); + view.getStyles().add(style); + //XXX: init styles from attributes!!! +<% +for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) { + GenNodeLabel label = (GenNodeLabel) it.next(); +%> + create<%=label.getVisualID()%>Label(view); +<% +}/*iterate over labels*/ +%> +<% +for (Iterator it = genElement.getCompartments().iterator(); it.hasNext(); ) { + GenCompartment compartment = (GenCompartment) it.next(); +%> + create<%=compartment.getVisualID()%>Compartment(view); +<% +}/*iterate over compartments*/ +%> + } + +<% +for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) { + GenNodeLabel label = (GenNodeLabel) it.next(); +%> + /** + * @generated + */ + private static void create<%=label.getVisualID()%>Label(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> label = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createNode(); + view.getPersistedChildren().add(label); + label.setElement(null); + <%=importManager.getImportedName(label.getNotationViewFactoryQualifiedClassName())%>.decorateView(label); + } +<% +}/*iterate over labels*/ +%> + +<% +for (Iterator it = genElement.getCompartments().iterator(); it.hasNext(); ) { + GenCompartment compartment = (GenCompartment) it.next(); +%> + /** + * @generated + */ + private static void create<%=compartment.getVisualID()%>Compartment(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> compartment = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createNode(); + view.getPersistedChildren().add(compartment); + compartment.setElement(null); + <%=importManager.getImportedName(compartment.getNotationViewFactoryQualifiedClassName())%>.decorateView(compartment); + } +<% +}/*iterate over compartments*/ +%> +} +<%importManager.emitSortedImports();%> Index: templates/parts/CompartmentEditPart.javajet =================================================================== RCS file: templates/parts/CompartmentEditPart.javajet diff -N templates/parts/CompartmentEditPart.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/CompartmentEditPart.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,227 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="CompartmentEditPartGenerator" + imports="java.util.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> +<% +GenCompartment genCompartment = (GenCompartment) ((Object[]) argument)[0]; +GenNode genHost = genCompartment.getNode(); +GenDiagram genDiagram = genCompartment.getDiagram(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> +<%importManager.emitPackageStatement(stringBuffer); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.addImport("org.eclipse.gef.commands.Command"); +importManager.addImport("org.eclipse.gef.commands.CompoundCommand"); +importManager.addImport("org.eclipse.gef.EditPart"); +importManager.addImport("org.eclipse.gef.requests.CreateRequest"); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genCompartment.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")%> implements IUpdatableEditPart { + /** + * @generated + */ + public <%=genCompartment.getEditPartClassName()%>(View view) { + setModel(view); + } + + /** + * @generated + */ + protected <%=importManager.getImportedName("java.util.List")%> getModelChildren() { + return ((View) getModel()).getChildren(); + } + + /** + * @generated + */ + protected void createEditPolicies() { + //XXX: install correct edit policies! +<%if (!genCompartment.isListLayout()) {%> + installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.LAYOUT_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.XYLayoutEditPolicy")%>() { + protected Command createChangeConstraintCommand(final <%=importManager.getImportedName("org.eclipse.gef.requests.ChangeBoundsRequest")%> request, EditPart child, Object constraint) { + final Node node = (Node) child.getModel(); + return new Command("Change node position/size") { + private <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> moveDelta = request.getMoveDelta(); + private <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")%> resizeDelta = request.getSizeDelta(); + + public boolean canUndo() { + return canExecute(); + } + public boolean canExecute() { + return node.getLayoutConstraint() instanceof Bounds; + } + public void undo() { + execute(moveDelta.getNegated(), resizeDelta.getNegated()); + } + public void execute() { + execute(moveDelta, resizeDelta); + } + private void execute(<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> move, <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")%> resize) { + Bounds bounds = (Bounds) node.getLayoutConstraint(); + bounds.setX(bounds.getX() + move.x); + bounds.setY(bounds.getY() + move.y); + bounds.setWidth(bounds.getWidth() + resize.width); + bounds.setHeight(bounds.getHeight() + resize.height); + } + }; + } + protected Command createChangeConstraintCommand(EditPart child, Object constraint) { + assert false; + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } +<%} else {%> + installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.LAYOUT_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ConstrainedLayoutEditPolicy")%>() { + protected Object getConstraintFor(<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%> rect) { + return null; + } + protected Object getConstraintFor(<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> point) { + return null; + } + protected Command createChangeConstraintCommand(EditPart child, Object constraint) { + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } +<%}%> + protected Command getCreateCommand(CreateRequest request) { +<%if (null != genDiagram.getPalette()) { +final Palette palette = genDiagram.getPalette();%> + if (request instanceof <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx) { + <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx requestEx = (<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx) request; + int[] visualIds = requestEx.getVisualIds(); + CompoundCommand result = new CompoundCommand(); + for(int i = 0; i < visualIds.length; i++) { + int nextVisualId = visualIds[i]; + switch (nextVisualId) { +<% +for(Iterator it = genCompartment.getChildNodes().iterator(); it.hasNext(); ) { + GenChildNode next = (GenChildNode)it.next(); +%> + case <%=next.getVisualID()%>: + result.add(new Create<%=next.getDomainMetaClass().getName()%><%=next.getVisualID()%>Command((View) getModel(), requestEx<%if (!genCompartment.isListLayout()) {%>, + (<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%>)getConstraintFor(request)<%}%>)); + break; +<% +} +%> + } + } + return result.unwrap(); + } +<%}/*when there's palette*/%> + return null; + } + }); + } + + /** + * @generated + */ + protected String getTitleName() { + return "<%=genCompartment.getTitle()%>"; + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> createFigure() { + <%=importManager.getImportedName("org.eclipse.draw2d.LabeledContainer")%> result = new <%=importManager.getImportedName("org.eclipse.draw2d.LabeledContainer")%>(); + result.setLabel(getTitleName()); + result.setOpaque(false); + result.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.StackLayout")%>()); + <%=importManager.getImportedName("org.eclipse.draw2d.ScrollPane")%> scrollPane = new <%=importManager.getImportedName("org.eclipse.draw2d.ScrollPane")%>(); + result.add(scrollPane); +<%if (genCompartment.isListLayout()) {%> + <%=importManager.getImportedName("org.eclipse.draw2d.Viewport")%> viewport = new <%=importManager.getImportedName("org.eclipse.draw2d.Viewport")%>(); + contentPane = new <%=importManager.getImportedName("org.eclipse.draw2d.Figure")%>(); + contentPane.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.ToolbarLayout")%>()); +<%} else {%> + <%=importManager.getImportedName("org.eclipse.draw2d.Viewport")%> viewport = new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformViewport")%>(); + contentPane = new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayer")%>(); + contentPane.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayout")%>()); +<%}%> + viewport.setContents(contentPane); + scrollPane.setViewport(viewport); + return result; + } + + /** + * @generated + */ + public IFigure getContentPane() { + return contentPane; + } + + /** + * @generated + */ + private IFigure contentPane; + + /** + * @generated + */ + private <%=importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())%> resolveSemanticElement() { + for(EditPart editPart = this; editPart != null; editPart = editPart.getParent()) { + View view = (View)editPart.getModel(); + if (view != null && view.getElement() != null) { + return (<%=importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())%>) view.getElement(); + } + } + return null; + } + +<%@ include file="refresher.javajetinc"%> + + /** + * @generated + */ + private void createRefreshers() { + structuralFeatures2Refresher = new HashMap(); +<%@ include file="refreshers.javajetinc/children.javajetinc"%> +<%@ include file="refreshers.javajetinc/visibility.javajetinc"%> + } + + /** + * @generated + */ + protected void refreshVisuals() { + super.refreshVisuals(); +//XXX: refreshBackgroundColor(); +//XXX: refreshForegroundColor(); +//XXX: refreshFont(); + refreshVisibility(); + } + + /** + * @generated + */ + protected void refreshVisibility() { + boolean isVisible = ((View)getModel()).isVisible(); + boolean wasVisible = getFigure().isVisible(); + if (isVisible == wasVisible) { + return; + } + if (!isVisible && (getSelected() != SELECTED_NONE)) { + getViewer().deselect(this); + } + + getFigure().setVisible(isVisible); + getFigure().revalidate(); + } + +<% +for(Iterator it = genCompartment.getChildNodes().iterator(); genDiagram.getPalette() != null && it.hasNext(); ) { + GenChildNode next = (GenChildNode)it.next(); + boolean isStatic = false; + boolean isListLayout = genCompartment.isListLayout(); + String resolvedSemanticElement = "resolveSemanticElement()"; +%> +<%@ include file="createNodeCommand.javajetinc"%> +<% +} +%> +} + +<%importManager.emitSortedImports();%> Index: templates/parts/refreshers.javajetinc/externalRefreshers.javajetinc =================================================================== RCS file: templates/parts/refreshers.javajetinc/externalRefreshers.javajetinc diff -N templates/parts/refreshers.javajetinc/externalRefreshers.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshers.javajetinc/externalRefreshers.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,25 @@ + public void addRefresher(<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> feature, Refresher refresher) { + CompositeRefresher compositeRefresher = getCompositeRefresher(feature); + compositeRefresher.addRefresher(refresher); + } + + public void removeRefresher(<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> feature, Refresher refresher) { + CompositeRefresher compositeRefresher = getCompositeRefresher(feature); + compositeRefresher.removeRefresher(refresher); + } + + private CompositeRefresher getCompositeRefresher(<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> feature) { + if (structuralFeatures2Refresher == null) { + createRefreshers(); + } + Refresher refresher = (Refresher) structuralFeatures2Refresher.get(feature); + if (refresher instanceof CompositeRefresher) { + return (CompositeRefresher) refresher; + } + CompositeRefresher result = new CompositeRefresher(); + if (refresher != null) { + result.addRefresher(refresher); + } + structuralFeatures2Refresher.put(feature, result); + return result; + } Index: templates/parts/refreshers.javajetinc/sourceEdges.javajetinc =================================================================== RCS file: templates/parts/refreshers.javajetinc/sourceEdges.javajetinc diff -N templates/parts/refreshers.javajetinc/sourceEdges.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshers.javajetinc/sourceEdges.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,6 @@ + Refresher sourceEdgesRefresher = new Refresher() { + public void refresh() { + refreshSourceConnections(); + } + }; + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getView_SourceEdges(), sourceEdgesRefresher); Index: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/LinkEditPartGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/LinkEditPartGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/parts/LinkEditPartGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/parts/LinkEditPartGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,497 @@ +package org.eclipse.gmf.codegen.templates.lite.parts; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; +import org.eclipse.emf.ecore.*; + +public class LinkEditPartGenerator +{ + protected static String nl; + public static synchronized LinkEditPartGenerator create(String lineSeparator) + { + nl = lineSeparator; + LinkEditPartGenerator result = new LinkEditPartGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_5 = " extends "; + protected final String TEXT_6 = " implements IUpdatableEditPart {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_7 = "("; + protected final String TEXT_8 = " view) {" + NL + "\t\tassert view instanceof "; + protected final String TEXT_9 = ";" + NL + "\t\tsetModel(view);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_10 = " getDiagramEdge() {" + NL + "\t\treturn ("; + protected final String TEXT_11 = ") getModel();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void createEditPolicies() {" + NL + "\t\t//XXX: install correct edit policies!"; + protected final String TEXT_12 = NL; + protected final String TEXT_13 = "\t\tinstallEditPolicy("; + protected final String TEXT_14 = ".COMPONENT_ROLE, new "; + protected final String TEXT_15 = "() {" + NL + "\t\t\tprotected "; + protected final String TEXT_16 = " createDeleteCommand("; + protected final String TEXT_17 = " deleteRequest) {" + NL + "\t\t\t\treturn new "; + protected final String TEXT_18 = "() {" + NL + "\t\t\t\t\tprivate final Edge edgeToRemove = getDiagramEdge();" + NL + "\t\t\t\t\tprivate final View source = edgeToRemove.getSource();" + NL + "\t\t\t\t\tprivate final View target = edgeToRemove.getTarget();" + NL + "\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command domainModelRemoveCommand = createDomainModelRemoveCommand();" + NL + "\t\t\t\t\tprivate org.eclipse.emf.common.command.Command createDomainModelRemoveCommand() {"; + protected final String TEXT_19 = NL + "\t\t\t\t\t\t"; + protected final String TEXT_20 = " result = new "; + protected final String TEXT_21 = "();"; + protected final String TEXT_22 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_23 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_24 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement().eContainer(), edgeToRemove.getElement().eContainmentFeature(), edgeToRemove.getElement()));"; + protected final String TEXT_25 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_26 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_27 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement().eContainer(), edgeToRemove.getElement().eContainmentFeature(), "; + protected final String TEXT_28 = ".UNSET_VALUE));"; + protected final String TEXT_29 = NL + "\t\t\treturn "; + protected final String TEXT_30 = ".INSTANCE;"; + protected final String TEXT_31 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_32 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_33 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement().eContainer(), "; + protected final String TEXT_34 = ".eINSTANCE.get"; + protected final String TEXT_35 = "()," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement()));"; + protected final String TEXT_36 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_37 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_38 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement().eContainer(), "; + protected final String TEXT_39 = ".eINSTANCE.get"; + protected final String TEXT_40 = "()," + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_41 = ".UNSET_VALUE));"; + protected final String TEXT_42 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_43 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_44 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement(), "; + protected final String TEXT_45 = ".eINSTANCE.get"; + protected final String TEXT_46 = "(), source.getElement()));"; + protected final String TEXT_47 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_48 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_49 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement(), "; + protected final String TEXT_50 = ".eINSTANCE.get"; + protected final String TEXT_51 = "(), "; + protected final String TEXT_52 = ".UNSET_VALUE));"; + protected final String TEXT_53 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_54 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_55 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement(), "; + protected final String TEXT_56 = ".eINSTANCE.get"; + protected final String TEXT_57 = "(), target.getElement()));"; + protected final String TEXT_58 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_59 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_60 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement(), "; + protected final String TEXT_61 = ".eINSTANCE.get"; + protected final String TEXT_62 = "(), "; + protected final String TEXT_63 = ".UNSET_VALUE));"; + protected final String TEXT_64 = NL + "\t\t\t\t\t\treturn result;"; + protected final String TEXT_65 = NL + "\t\t\t\t\t\treturn "; + protected final String TEXT_66 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_67 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tsource.getElement(), "; + protected final String TEXT_68 = ".eINSTANCE.get"; + protected final String TEXT_69 = "(), target.getElement());"; + protected final String TEXT_70 = NL + "\t\t\t\t\t\treturn "; + protected final String TEXT_71 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_72 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tsource.getElement(), "; + protected final String TEXT_73 = ".eINSTANCE.get"; + protected final String TEXT_74 = "(), "; + protected final String TEXT_75 = ".UNSET_VALUE);"; + protected final String TEXT_76 = NL + "\t\t\t\t\t}" + NL + "" + NL + "\t\t\t\t\tpublic boolean canExecute() {" + NL + "\t\t\t\t\t\treturn domainModelRemoveCommand != null && domainModelRemoveCommand.canExecute();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic void execute() {" + NL + "\t\t\t\t\t\tdomainModelRemoveCommand.execute();" + NL + "\t\t\t\t\t\tsource.getDiagram().removeEdge(edgeToRemove);" + NL + "\t\t\t\t\t\tedgeToRemove.setSource(null);" + NL + "\t\t\t\t\t\tedgeToRemove.setTarget(null);" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic boolean canUndo() {" + NL + "\t\t\t\t\t\treturn domainModelRemoveCommand != null && domainModelRemoveCommand.canUndo();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic void undo() {" + NL + "\t\t\t\t\t\tdomainModelRemoveCommand.undo();" + NL + "\t\t\t\t\t\tsource.getDiagram().insertEdge(edgeToRemove);" + NL + "\t\t\t\t\t\tedgeToRemove.setSource(source);" + NL + "\t\t\t\t\t\tedgeToRemove.setTarget(target);" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t};" + NL + "\t\t\t}" + NL + "\t\t});" + NL + "\t\tinstallEditPolicy("; + protected final String TEXT_77 = ".CONNECTION_ENDPOINTS_ROLE, new "; + protected final String TEXT_78 = "());" + NL + "\t}" + NL; + protected final String TEXT_79 = NL; + protected final String TEXT_80 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static int getVisualID("; + protected final String TEXT_81 = " containerView) {" + NL + "\t\t"; + protected final String TEXT_82 = " annotation = containerView.getEAnnotation(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "\t\tif (annotation == null) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\tString visualID = (String) annotation.getDetails().get(\"visualID\"); //$NON-NLS-1$" + NL + "\t\tif (visualID == null) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\ttry {" + NL + "\t\t\treturn Integer.parseInt(visualID);" + NL + "\t\t} catch (NumberFormatException e) {" + NL + "\t\t\t"; + protected final String TEXT_83 = ".getInstance().logError(\"Unable to parse \\\"visualID\\\" annotation: \" + visualID, e);" + NL + "\t\t}" + NL + "\t\treturn -1;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * Returns the label which should be direct-edited by default." + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_84 = " getPrimaryLabelEditPart() {" + NL + "\t\tfor("; + protected final String TEXT_85 = " it = getDiagramEdge().getChildren().iterator(); it.hasNext(); ) {" + NL + "\t\t\t"; + protected final String TEXT_86 = " nextChild = ("; + protected final String TEXT_87 = ")it.next();" + NL + "\t\t\tif (getVisualID(nextChild) == "; + protected final String TEXT_88 = ") {" + NL + "\t\t\t\treturn (EditPart) getViewer().getEditPartRegistry().get(nextChild);" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void performRequest("; + protected final String TEXT_89 = " req) {" + NL + "\t\tif ("; + protected final String TEXT_90 = ".REQ_DIRECT_EDIT == req.getType()) {" + NL + "\t\t\t"; + protected final String TEXT_91 = " primaryLabel = getPrimaryLabelEditPart();" + NL + "\t\t\tif (primaryLabel != null) {" + NL + "\t\t\t\tprimaryLabel.performRequest(req);" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t}"; + protected final String TEXT_92 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected List getModelChildren() {" + NL + "\t\treturn ((Edge)getModel()).getChildren();" + NL + "\t}" + NL; + protected final String TEXT_93 = NL; + protected final String TEXT_94 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_95 = " structuralFeatures2Refresher;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Refresher getRefresher("; + protected final String TEXT_96 = " feature, "; + protected final String TEXT_97 = " msg) {" + NL + "\t\tif (structuralFeatures2Refresher == null) {" + NL + "\t\t\tcreateRefreshers();" + NL + "\t\t}" + NL + "\t\treturn (Refresher) structuralFeatures2Refresher.get(feature);" + NL + "\t}" + NL + "" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void activate() {" + NL + "\t\tsuper.activate();" + NL + "\t\tgetDiagramEdge().getElement().eAdapters().add(domainModelRefresher);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void deactivate() {" + NL + "\t\tgetDiagramEdge().getElement().eAdapters().remove(domainModelRefresher);" + NL + "\t\tsuper.deactivate();" + NL + "\t}" + NL; + protected final String TEXT_98 = NL; + protected final String TEXT_99 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate DomainModelRefresher domainModelRefresher = new DomainModelRefresher();" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate class DomainModelRefresher extends "; + protected final String TEXT_100 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void notifyChanged("; + protected final String TEXT_101 = " msg) {" + NL + "\t\t\tsuper.notifyChanged(msg);" + NL + "\t\t\tif (msg.isTouch()) {" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t\tRefresher refresher = getRefresher(("; + protected final String TEXT_102 = ") msg.getFeature(), msg);" + NL + "\t\t\tif (refresher != null) {" + NL + "\t\t\t\trefresher.refresh();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t}" + NL; + protected final String TEXT_103 = NL; + protected final String TEXT_104 = "\tpublic void addRefresher("; + protected final String TEXT_105 = " feature, Refresher refresher) {" + NL + "\t\tCompositeRefresher compositeRefresher = getCompositeRefresher(feature);" + NL + "\t\tcompositeRefresher.addRefresher(refresher);" + NL + "\t}" + NL + "" + NL + "\tpublic void removeRefresher("; + protected final String TEXT_106 = " feature, Refresher refresher) {" + NL + "\t\tCompositeRefresher compositeRefresher = getCompositeRefresher(feature);" + NL + "\t\tcompositeRefresher.removeRefresher(refresher);" + NL + "\t}" + NL + "" + NL + "\tprivate CompositeRefresher getCompositeRefresher("; + protected final String TEXT_107 = " feature) {" + NL + "\t\tif (structuralFeatures2Refresher == null) {" + NL + "\t\t\tcreateRefreshers();" + NL + "\t\t}" + NL + "\t\tRefresher refresher = (Refresher) structuralFeatures2Refresher.get(feature);" + NL + "\t\tif (refresher instanceof CompositeRefresher) {" + NL + "\t\t\treturn (CompositeRefresher) refresher;" + NL + "\t\t}" + NL + "\t\tCompositeRefresher result = new CompositeRefresher();" + NL + "\t\tif (refresher != null) {" + NL + "\t\t\tresult.addRefresher(refresher);" + NL + "\t\t}" + NL + "\t\tstructuralFeatures2Refresher.put(feature, result);" + NL + "\t\treturn result;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void createRefreshers() {" + NL + "\t\tstructuralFeatures2Refresher = new HashMap();"; + protected final String TEXT_108 = NL; + protected final String TEXT_109 = "\t\tRefresher childrenRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshChildren();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_110 = ".eINSTANCE.getView_PersistedChildren(), childrenRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_111 = ".eINSTANCE.getView_TransientChildren(), childrenRefresher);"; + protected final String TEXT_112 = NL; + protected final String TEXT_113 = "\t\tRefresher visibilityRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshVisibility();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_114 = ".eINSTANCE.getView_Visible(), visibilityRefresher);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshVisuals() {" + NL + "\t\tsuper.refreshVisuals();" + NL + "//XXX:\t\trefreshBackgroundColor();" + NL + "//XXX:\t\trefreshForegroundColor();" + NL + "//XXX:\t\trefreshFont();" + NL + "\t\trefreshVisibility();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshVisibility() {" + NL + "\t\tboolean isVisible = ((View)getModel()).isVisible();" + NL + "\t\tboolean wasVisible = getFigure().isVisible();" + NL + "\t\tif (isVisible == wasVisible) {" + NL + "\t\t\treturn;" + NL + "\t\t}" + NL + "\t\tif (!isVisible && (getSelected() != SELECTED_NONE)) {" + NL + "\t\t\tgetViewer().deselect(this);" + NL + "\t\t}" + NL + "" + NL + "\t\tgetFigure().setVisible(isVisible);" + NL + "\t\tgetFigure().revalidate();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * Creates figure for this edit part." + NL + "\t * " + NL + "\t * Body of this method does not depend on settings in generation model" + NL + "\t * so you may safely remove generated tag and modify it." + NL + "\t * " + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_115 = " createFigure() {"; + protected final String TEXT_116 = NL + "\t\treturn new "; + protected final String TEXT_117 = "();"; + protected final String TEXT_118 = NL + "\t\treturn "; + protected final String TEXT_119 = ";"; + protected final String TEXT_120 = NL + " \t\treturn new "; + protected final String TEXT_121 = "();"; + protected final String TEXT_122 = NL + "\t}" + NL; + protected final String TEXT_123 = NL; + protected final String TEXT_124 = NL; + protected final String TEXT_125 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static class MapModeWorkaround {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic int DPtoLP(int dp) {" + NL + "\t\t\treturn dp;" + NL + "\t\t}" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic static MapModeWorkaround INSTANCE = new MapModeWorkaround();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate MapModeWorkaround getMapMode() {" + NL + "\t\treturn MapModeWorkaround.INSTANCE;" + NL + "\t}"; + protected final String TEXT_126 = NL + "}"; + protected final String TEXT_127 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenLink genLink = (GenLink) ((Object[]) argument)[0]; +GenDiagram genDiagram = genLink.getDiagram(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + +importManager.emitPackageStatement(stringBuffer); +importManager.addImport("java.util.List"); +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_4); + stringBuffer.append(genLink.getEditPartClassName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractConnectionEditPart")); + stringBuffer.append(TEXT_6); + stringBuffer.append(genLink.getEditPartClassName()); + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")); + stringBuffer.append(TEXT_9); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")); + stringBuffer.append(TEXT_10); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")); + stringBuffer.append(TEXT_11); + stringBuffer.append(TEXT_12); + stringBuffer.append(TEXT_13); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_14); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ComponentEditPolicy")); + stringBuffer.append(TEXT_15); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_16); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.GroupRequest")); + stringBuffer.append(TEXT_17); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_18); + + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + GenFeature sourceFeature = modelFacet.getSourceMetaFeature(); + GenFeature containmentFeature = modelFacet.getContainmentMetaFeature(); + GenFeature childFeature = modelFacet.getChildMetaFeature(); + GenFeature targetFeature = modelFacet.getTargetMetaFeature(); + //See creation of links in NodeEditPart + + boolean removeSource = sourceFeature != null; + boolean removeTarget = targetFeature != null; + boolean removeChild = childFeature != null && childFeature != containmentFeature && !childFeature.isDerived(); + if (containmentFeature != null) { + if (sourceFeature != null && sourceFeature.getEcoreFeature() instanceof EReference == true) { + EReference sourceEcoreFeature = (EReference)sourceFeature.getEcoreFeature(); + if (sourceEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) { + removeSource = false; + } + } + if (targetFeature != null && targetFeature.getEcoreFeature() instanceof EReference == true) { + EReference targetEcoreFeature = (EReference)targetFeature.getEcoreFeature(); + if (targetEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) { + removeTarget = false; + } + } + + stringBuffer.append(TEXT_19); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_20); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_21); + + if (containmentFeature.getEcoreFeature().isMany()) { + + stringBuffer.append(TEXT_22); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_23); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_24); + + } else { + + stringBuffer.append(TEXT_25); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_26); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_27); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_28); + + } + } else { + + stringBuffer.append(TEXT_29); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")); + stringBuffer.append(TEXT_30); + + } + if (removeChild) { + if (childFeature.getEcoreFeature().isMany()) { + + stringBuffer.append(TEXT_31); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_32); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_33); + stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_34); + stringBuffer.append(childFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_35); + + } else { + + stringBuffer.append(TEXT_36); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_37); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_38); + stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_39); + stringBuffer.append(childFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_40); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_41); + + } + } + if (removeSource) { + if (sourceFeature.getEcoreFeature().isMany()) { + + stringBuffer.append(TEXT_42); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_43); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_44); + stringBuffer.append(importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_45); + stringBuffer.append(sourceFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_46); + + } else { + + stringBuffer.append(TEXT_47); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_48); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_49); + stringBuffer.append(importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_50); + stringBuffer.append(sourceFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_51); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_52); + + } + } + if (removeTarget) { + if (targetFeature.getEcoreFeature().isMany()) { + + stringBuffer.append(TEXT_53); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_54); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_55); + stringBuffer.append(importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_56); + stringBuffer.append(targetFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_57); + + } else { + + stringBuffer.append(TEXT_58); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_59); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_60); + stringBuffer.append(importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_61); + stringBuffer.append(targetFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_62); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_63); + + } + } + + stringBuffer.append(TEXT_64); + + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { + GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature(); + if (metaFeature.getEcoreFeature().isMany()) { + + stringBuffer.append(TEXT_65); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_66); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_67); + stringBuffer.append(importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_68); + stringBuffer.append(metaFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_69); + + } else { + + stringBuffer.append(TEXT_70); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_71); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_72); + stringBuffer.append(importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_73); + stringBuffer.append(metaFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_74); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_75); + + } + + + } + + stringBuffer.append(TEXT_76); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_77); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy")); + stringBuffer.append(TEXT_78); + +if (genLink.getLabels().size() > 0) { + GenLinkLabel primaryLabel = (GenLinkLabel)genLink.getLabels().get(0); + + stringBuffer.append(TEXT_79); + stringBuffer.append(TEXT_80); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_81); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_82); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())); + stringBuffer.append(TEXT_83); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_84); + stringBuffer.append(importManager.getImportedName("java.util.Iterator")); + stringBuffer.append(TEXT_85); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_86); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_87); + stringBuffer.append(primaryLabel.getVisualID()); + stringBuffer.append(TEXT_88); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request")); + stringBuffer.append(TEXT_89); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants")); + stringBuffer.append(TEXT_90); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_91); + +} //if (genLink.getLabels().size() > 0) + + stringBuffer.append(TEXT_92); + stringBuffer.append(TEXT_93); + stringBuffer.append(TEXT_94); + stringBuffer.append(importManager.getImportedName("java.util.HashMap")); + stringBuffer.append(TEXT_95); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_96); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification")); + stringBuffer.append(TEXT_97); + stringBuffer.append(TEXT_98); + stringBuffer.append(TEXT_99); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.impl.AdapterImpl")); + stringBuffer.append(TEXT_100); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification")); + stringBuffer.append(TEXT_101); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_102); + stringBuffer.append(TEXT_103); + stringBuffer.append(TEXT_104); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_105); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_106); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_107); + stringBuffer.append(TEXT_108); + stringBuffer.append(TEXT_109); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_110); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_111); + stringBuffer.append(TEXT_112); + stringBuffer.append(TEXT_113); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_114); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_115); + +Viewmap viewmap = genLink.getViewmap(); +if (viewmap instanceof FigureViewmap) { + String figureQualifiedClassName = null; + figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName(); + if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) { + figureQualifiedClassName = "org.eclipse.gmf.runtime.draw2d.PolylineConnection"; + } + + stringBuffer.append(TEXT_116); + stringBuffer.append(importManager.getImportedName(figureQualifiedClassName)); + stringBuffer.append(TEXT_117); + } // instanceof FigureViewmap + else if (viewmap instanceof SnippetViewmap) { + stringBuffer.append(TEXT_118); + stringBuffer.append(((SnippetViewmap) viewmap).getBody()); + stringBuffer.append(TEXT_119); + } // instanceof SnippetViewmap + else if (viewmap instanceof InnerClassViewmap) { + stringBuffer.append(TEXT_120); + stringBuffer.append(((InnerClassViewmap) viewmap).getClassName()); + stringBuffer.append(TEXT_121); + } + stringBuffer.append(TEXT_122); + +if (genLink.getViewmap() instanceof InnerClassViewmap) { + String classBody = ((InnerClassViewmap) genLink.getViewmap()).getClassBody(); + + stringBuffer.append(TEXT_123); + stringBuffer.append(classBody); + stringBuffer.append(TEXT_124); + +if (classBody.indexOf("DPtoLP") != -1) { + + stringBuffer.append(TEXT_125); + +} + + +} + + stringBuffer.append(TEXT_126); + importManager.emitSortedImports(); + stringBuffer.append(TEXT_127); + return stringBuffer.toString(); + } +} Index: templates/editor/getModelID.jetinc =================================================================== RCS file: templates/editor/getModelID.jetinc diff -N templates/editor/getModelID.jetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/getModelID.jetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,10 @@ + /** + * @generated + */ + private String getModelID(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> containerView) { + <%=importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")%> annotation = containerView.getEAnnotation("ViewIdentifier"); //$NON-NLS-1$ + if (annotation == null) { + return null; + } + return (String) annotation.getDetails().get("modelID"); //$NON-NLS-1$ + } Index: templates/editor/Editor.javajet =================================================================== RCS file: templates/editor/Editor.javajet diff -N templates/editor/Editor.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/Editor.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,760 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="EditorGenerator" + imports="org.eclipse.emf.common.util.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.common.codegen.*"%> +<% +final GenEditorView genEditor = (GenEditorView) ((Object[]) argument)[0]; +final GenDiagram genDiagram = genEditor.getEditorGen().getDiagram(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer);%> + +<% +importManager.addImport("java.io.IOException"); +importManager.addImport("java.util.ArrayList"); +importManager.addImport("java.util.Collections"); +importManager.addImport("java.util.EventObject"); +importManager.addImport("java.util.HashMap"); +importManager.addImport("java.util.Iterator"); +importManager.addImport("java.util.List"); + +importManager.addImport("org.eclipse.core.runtime.CoreException"); +importManager.addImport("org.eclipse.core.runtime.IProgressMonitor"); +importManager.addImport("org.eclipse.core.runtime.IStatus"); +importManager.addImport("org.eclipse.core.runtime.NullProgressMonitor"); +importManager.addImport("org.eclipse.core.runtime.Status"); +importManager.addImport("org.eclipse.draw2d.PositionConstants"); +importManager.addImport("org.eclipse.emf.common.command.BasicCommandStack"); +importManager.addImport("org.eclipse.emf.common.ui.URIEditorInput"); +importManager.addImport("org.eclipse.emf.common.util.URI"); +importManager.addImport("org.eclipse.emf.ecore.resource.Resource"); +importManager.addImport("org.eclipse.emf.ecore.resource.ResourceSet"); +importManager.addImport("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"); +importManager.addImport("org.eclipse.emf.edit.domain.EditingDomain"); +importManager.addImport("org.eclipse.emf.edit.provider.ComposedAdapterFactory"); +importManager.addImport("org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory"); +importManager.addImport("org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory"); +importManager.addImport("org.eclipse.gef.ContextMenuProvider"); +importManager.addImport("org.eclipse.gef.EditPartViewer"); +importManager.addImport("org.eclipse.gef.GraphicalViewer"); +importManager.addImport("org.eclipse.gef.KeyHandler"); +importManager.addImport("org.eclipse.gef.KeyStroke"); +importManager.addImport("org.eclipse.gef.RootEditPart"); +importManager.addImport("org.eclipse.gef.MouseWheelHandler"); +importManager.addImport("org.eclipse.gef.MouseWheelZoomHandler"); +importManager.addImport("org.eclipse.gef.commands.CommandStack"); +importManager.addImport("org.eclipse.gef.commands.CommandStackListener"); +importManager.addImport("org.eclipse.gef.editparts.ScalableFreeformRootEditPart"); +importManager.addImport("org.eclipse.gef.editparts.ScalableRootEditPart"); +importManager.addImport("org.eclipse.gef.editparts.ZoomManager"); +importManager.addImport("org.eclipse.gef.palette.PaletteRoot"); +importManager.addImport("org.eclipse.gef.ui.actions.AlignmentAction"); +importManager.addImport("org.eclipse.gef.ui.actions.DeleteAction"); +importManager.addImport("org.eclipse.gef.ui.actions.DirectEditAction"); +importManager.addImport("org.eclipse.gef.ui.actions.GEFActionConstants"); +importManager.addImport("org.eclipse.gef.ui.actions.PrintAction"); +importManager.addImport("org.eclipse.gef.ui.actions.RedoAction"); +importManager.addImport("org.eclipse.gef.ui.actions.SaveAction"); +importManager.addImport("org.eclipse.gef.ui.actions.SelectionAction"); +importManager.addImport("org.eclipse.gef.ui.actions.StackAction"); +importManager.addImport("org.eclipse.gef.ui.actions.UndoAction"); +importManager.addImport("org.eclipse.gef.ui.actions.UpdateAction"); +importManager.addImport("org.eclipse.gef.ui.actions.WorkbenchPartAction"); +importManager.addImport("org.eclipse.gef.ui.actions.ZoomInAction"); +importManager.addImport("org.eclipse.gef.ui.actions.ZoomOutAction"); +importManager.addImport("org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram"); +importManager.addImport("org.eclipse.gmf.runtime.notation.NotationFactory"); +importManager.addImport("org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory"); +importManager.addImport("org.eclipse.jface.action.IAction"); +importManager.addImport("org.eclipse.jface.action.IMenuManager"); +importManager.addImport("org.eclipse.jface.action.MenuManager"); +importManager.addImport("org.eclipse.jface.action.Separator"); +importManager.addImport("org.eclipse.jface.dialogs.ErrorDialog"); +importManager.addImport("org.eclipse.jface.viewers.ISelection"); +importManager.addImport("org.eclipse.swt.SWT"); +importManager.addImport("org.eclipse.swt.widgets.Composite"); +importManager.addImport("org.eclipse.ui.IEditorPart"); +importManager.addImport("org.eclipse.ui.IEditorInput"); +importManager.addImport("org.eclipse.ui.IEditorSite"); +importManager.addImport("org.eclipse.ui.IPathEditorInput"); +importManager.addImport("org.eclipse.ui.ISelectionListener"); +importManager.addImport("org.eclipse.ui.IWorkbenchPart"); +importManager.addImport("org.eclipse.ui.PartInitException"); +importManager.addImport("org.eclipse.ui.actions.ActionFactory"); +importManager.addImport("org.eclipse.ui.views.contentoutline.IContentOutlinePage"); +importManager.addImport("org.eclipse.ui.views.properties.IPropertySheetPage"); +importManager.addImport("org.eclipse.ui.views.properties.PropertySheetPage"); +importManager.addImport("org.eclipse.emf.common.notify.AdapterFactory"); +importManager.addImport("org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette"); +importManager.addImport("org.eclipse.gef.DefaultEditDomain"); +%> + +/** + * @generated + */ +public class <%=genEditor.getClassName()%> extends GraphicalEditorWithFlyoutPalette { + /** + * @generated + */ + private static class UpdatableActionGroup { + /** + * @generated + */ + public void addAction(UpdateAction action) { + assert action != null; + myActions.add(action); + } + + /** + * @generated + */ + public void removeAction(UpdateAction action) { + myActions.remove(action); + } + + /** + * @generated + */ + public void update() { + for (Iterator it = myActions.iterator(); it.hasNext();) { + UpdateAction next = (UpdateAction) it.next(); + next.update(); + } + } + + /** + * @generated + */ + private ArrayList myActions = new ArrayList(); + } + + /** + * @generated + */ + private EditingDomain editingDomain; + + /** + * @generated + */ + private <%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%> <%=genDiagram.getDomainDiagramElement().getSafeUncapName()%>; + + /** + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%> diagram; + + /** + * @generated + */ + private boolean isDirty = false; + + /** + * @generated + */ + private PaletteRoot paletteRoot; + + /** + * @generated + */ + private PropertySheetPage undoablePropertySheetPage; + + /** + * @generated + */ + private UpdatableActionGroup stackActions = new UpdatableActionGroup(); + + /** + * @generated + */ + private CommandStackListener commandStackListener = new CommandStackListener() { + + public void commandStackChanged(EventObject event) { + stackActions.update(); + setDirty(((CommandStack) event.getSource()).isDirty()); + } + }; + + /** + * @generated + */ + private UpdatableActionGroup editPartActions = new UpdatableActionGroup(); + + /** + * @generated + */ + private ISelectionListener selectionListener = new ISelectionListener() { + + public void selectionChanged(IWorkbenchPart part, ISelection selection) { + editPartActions.update(); + } + }; + + /** + * @generated + */ + private UpdatableActionGroup editorActions = new UpdatableActionGroup(); + + /** + * @generated + */ + private ComposedAdapterFactory domainAdapterFactory; + + /** + * @generated + */ + protected void firePropertyChange(int propertyId) { + super.firePropertyChange(propertyId); + editorActions.update(); + } + + /** + * Adds an action to this editor's ActionRegistry. (This is + * a helper method.) + * + * @generated + * @param action + * the action to add. + */ + protected void addAction(IAction action) { + getActionRegistry().registerAction(action); + } + + /** + * Adds an editor action to this editor. + * + *

+ * Editor actions are actions that depend and work on the editor. + * + * @generated + * @param action + * the editor action + */ + protected void addEditorAction(WorkbenchPartAction action) { + getActionRegistry().registerAction(action); + editorActions.addAction(action); + } + + /** + * Adds an EditPart action to this editor. + * + *

+ * EditPart actions are actions that depend and work on the + * selected EditParts. + * + * @generated + * @param action + * the EditPart action + */ + protected void addEditPartAction(SelectionAction action) { + getActionRegistry().registerAction(action); + editPartActions.addAction(action); + } + + /** + * Adds an CommandStack action to this editor. + * + *

+ * CommandStack actions are actions that depend and work on + * the CommandStack. + * + * @generated + * @param action + * the CommandStack action + */ + protected void addStackAction(StackAction action) { + getActionRegistry().registerAction(action); + stackActions.addAction(action); + } + + /** + * @generated + */ + protected void createActions() { + addStackAction(new UndoAction(this)); + addStackAction(new RedoAction(this)); + + addEditPartAction(new DeleteAction((IWorkbenchPart) this)); + addEditPartAction(new DirectEditAction((IWorkbenchPart) this)); + + addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.LEFT)); + addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.RIGHT)); + addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.TOP)); + addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.BOTTOM)); + addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.CENTER)); + addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.MIDDLE)); + + addEditorAction(new SaveAction(this)); + addEditorAction(new PrintAction(this)); + + IAction zoomIn = new ZoomInAction(getZoomManager()); + IAction zoomOut = new ZoomOutAction(getZoomManager()); + addAction(zoomIn); + addAction(zoomOut); + getSite().getKeyBindingService().registerAction(zoomIn); + getSite().getKeyBindingService().registerAction(zoomOut); + } + + /** + * @generated + */ + public void dispose() { + // remove CommandStackListener + getCommandStack().removeCommandStackListener(getStackActionsListener()); + + // remove selection listener + getSite().getWorkbenchWindow().getSelectionService().removeSelectionListener(getSelectionListener()); + + // dispose the ActionRegistry (will dispose all actions) + getActionRegistry().dispose(); + + // important: always call super implementation of dispose + super.dispose(); + } + + /** + * @generated + */ + public void doSave(IProgressMonitor monitor) { + try { + save(monitor); + getCommandStack().markSaveLocation(); + } catch (CoreException e) { + ErrorDialog.openError(getSite().getShell(), "Error During Save", "The current <%=genDiagram.getEditorGen().getDomainGenModel().getModelName()%> model could not be saved.", e.getStatus()); + } + } + + /** + * @generated + */ + private void save(IProgressMonitor progressMonitor) throws CoreException { + if (progressMonitor == null) { + progressMonitor = new NullProgressMonitor(); + } + progressMonitor.beginTask("Saving", getEditingDomain().getResourceSet().getResources().size()); + try { + for(Iterator it = getEditingDomain().getResourceSet().getResources().iterator(); it.hasNext(); ) { + Resource next = (Resource)it.next(); + next.save(Collections.EMPTY_MAP); + progressMonitor.worked(1); + } + } catch (IOException e) { + IStatus status = new Status(IStatus.ERROR, <%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.ID, 0, "Error writing file.", e); + throw new CoreException(status); + } finally { + progressMonitor.done(); + } + } + + /** + * @generated + */ + public boolean isSaveAsAllowed() { + // TODO: should be allowed. + return false; + } + + /** + * @generated + */ + public void doSaveAs() { + // TODO: Implement. + } + + /** + * @generated + */ + public Object getAdapter(Class type) { + if (type == IPropertySheetPage.class) { + return getPropertySheetPage(); + } else if (type == IContentOutlinePage.class) { + return getOutlinePage(); + } else if (type == ZoomManager.class) { + return getZoomManager(); + } + return super.getAdapter(type); + } + + /** + * @generated + */ + protected ZoomManager getZoomManager() { + return getZoomManager(getGraphicalViewer()); + } + + /** + * @generated + */ + private ZoomManager getZoomManager(GraphicalViewer viewer) { + // get zoom manager from root edit part + RootEditPart rootEditPart = viewer.getRootEditPart(); + ZoomManager zoomManager = null; + if (rootEditPart instanceof ScalableFreeformRootEditPart) { + zoomManager = ((ScalableFreeformRootEditPart) rootEditPart).getZoomManager(); + } else if (rootEditPart instanceof ScalableRootEditPart) { + zoomManager = ((ScalableRootEditPart) rootEditPart).getZoomManager(); + } + return zoomManager; + } + + /** + * @generated + */ + private CommandStackListener getStackActionsListener() { + return commandStackListener; + } + + /** + * @generated + */ + protected IContentOutlinePage getOutlinePage() { + //TODO: outline page missing + return null; + } + + /** + * @generated + */ + protected PaletteRoot getPaletteRoot() { + if (paletteRoot == null) { + paletteRoot = new PaletteRoot(); +<% +{ + final Palette palette = genDiagram.getPalette(); + if (palette != null) { +%> + new <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>(getDomainAdapterFactory()).contributeToPalette(paletteRoot); +<% + } +} +%> + } + return paletteRoot; + } + + /** + * @generated + */ + protected PropertySheetPage getPropertySheetPage() { + if (undoablePropertySheetPage == null) { + undoablePropertySheetPage = new PropertySheetPage(); + <%=importManager.getImportedName("org.eclipse.gef.ui.properties.UndoablePropertySheetEntry")%> rootEntry = new <%=importManager.getImportedName("org.eclipse.gef.ui.properties.UndoablePropertySheetEntry")%>(getCommandStack()); + rootEntry.setPropertySourceProvider(new <%=importManager.getImportedName(genDiagram.getPropertyProviderQualifiedClassName())%>(getDomainAdapterFactory())); + undoablePropertySheetPage.setRootEntry(rootEntry); + } + + return undoablePropertySheetPage; + } + + /** + * @generated + */ + private ISelectionListener getSelectionListener() { + return selectionListener; + } + + /** + * @generated + */ + public <%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%> get<%=genDiagram.getDomainDiagramElement().getClassifierAccessorName()%>() { + return <%=genDiagram.getDomainDiagramElement().getSafeUncapName()%>; + } + + /** + * @generated + */ + public Diagram getDiagram() { + return diagram; + } + + /** + * @generated + */ + public void init(IEditorSite site, IEditorInput input) throws PartInitException { + URI file = getURIFromInput(input); + if (file == null) { + throw new PartInitException("The specified input is not valid."); + } + setSite(site); + setInput(input); + setEditDomain(new DefaultEditDomain(this)); + + // validate + if (get<%=genDiagram.getDomainDiagramElement().getClassifierAccessorName()%>() == null) { + throw new PartInitException("The specified input is not valid."); + } + + // add CommandStackListener + getCommandStack().addCommandStackListener(getStackActionsListener()); + + // add selection change listener + getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(getSelectionListener()); + } + + /** + * @generated + */ + protected void setInput(IEditorInput input) { + URI file = getURIFromInput(input); + load(file); + setPartName(file.lastSegment()); + setContentDescription(file.toFileString()); + super.setInput(input); + } + + /** + * @generated + */ + private URI getURIFromInput(IEditorInput input) { + if (input instanceof URIEditorInput) { + return ((URIEditorInput) input).getURI(); + } + if (input instanceof IPathEditorInput) { + return URI.createFileURI(((IPathEditorInput)input).getPath().toOSString()); + } + return null; + } + + /** + * @generated + */ + public boolean isDirty() { + return isDirty; + } + + /** + * @generated + */ + private void setDirty(boolean dirty) { + if (isDirty != dirty) { + isDirty = dirty; + firePropertyChange(IEditorPart.PROP_DIRTY); + } + } + + /** + * @generated + */ + protected EditingDomain getEditingDomain() { + if (editingDomain == null) { + BasicCommandStack commandStack = new BasicCommandStack(); + editingDomain = new AdapterFactoryEditingDomain(getDomainAdapterFactory(), commandStack, new HashMap()); + editingDomain.getResourceSet().eAdapters().add(new AdapterFactoryEditingDomain.EditingDomainProvider(editingDomain)); + } + return editingDomain; + } + + /** + * @generated + */ + private AdapterFactory getDomainAdapterFactory() { + if (domainAdapterFactory == null) { + List factories = new ArrayList(); + factories.add(new ResourceItemProviderAdapterFactory()); +<% +final EList genPackages = genDiagram.getEditorGen().getAllDomainGenPackages(true); +for (int i = 0; i < genPackages.size(); i++) { + GenPackage genPackage = (GenPackage) genPackages.get(i); +%> + factories.add(new <%=importManager.getImportedName(genPackage.getQualifiedItemProviderAdapterFactoryClassName())%>()); +<%}%> + factories.add(new ReflectiveItemProviderAdapterFactory()); + factories.add(new NotationItemProviderAdapterFactory()); + domainAdapterFactory = new ComposedAdapterFactory(factories); + } + return domainAdapterFactory; + } + + /** + * @generated + */ + private void load(URI diagramFile) { + <%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> = null; + diagram = null; + if (diagramFile == null) { + return; + } + EditingDomain editingDomain = getEditingDomain(); + ResourceSet resourceSet = editingDomain.getResourceSet(); + Resource diagramResource = resourceSet.getResource(diagramFile, true); + if (diagramResource == null) { + diagramResource = resourceSet.createResource(diagramFile); + } + diagram = (Diagram) findInResource(diagramResource, Diagram.class); + if (diagram == null) { + diagram = NotationFactory.eINSTANCE.createDiagram(); + diagramResource.getContents().add(0, diagram); + //Auxiliary creation should not be undoable. + try { + diagramResource.save(Collections.EMPTY_MAP); + } catch (IOException e) { + diagram = null; + <%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> = null; + return; + } + } +<% +{ +%> +<% + boolean sameFile = genDiagram.getEditorGen().isSameFileForDiagramAndModel(); + String resourceToUse; + if (!sameFile) { +%> + URI modelFile = <%=genDiagram.getDiagramEditorUtilClassName()%>.getModelFileURI(diagramFile); + Resource modelResource = resourceSet.getResource(modelFile, true); + if (modelResource == null) { + modelResource = resourceSet.createResource(modelFile); + } +<% + resourceToUse = "modelResource"; + } else { + resourceToUse = "diagramResource"; + } +%> + <%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> = (<%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%>) findInResource(<%=resourceToUse%>, <%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%>.class); + if (<%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> == null) { + <%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> = <%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryClassName())%>.eINSTANCE.create<%=genDiagram.getDomainDiagramElement().getClassifierAccessorName()%>(); + <%=resourceToUse%>.getContents().add(0, <%=genDiagram.getDomainDiagramElement().getSafeUncapName()%>); + //We don't want this auxiliary creation to be undoable. + try { + <%=resourceToUse%>.save(Collections.EMPTY_MAP); + } catch (IOException e) { + diagram = null; + <%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> = null; + return; + } + } + if (!diagram.isSetElement()) { + diagram.setElement(<%=genDiagram.getDomainDiagramElement().getSafeUncapName()%>); + } + } +<% +} +%> + + /** + * @generated + */ + private Object findInResource(Resource resource, Class expectedClass) { + for(Iterator it = resource.getContents().iterator(); it.hasNext(); ) { + Object next = it.next(); + if (expectedClass.isInstance(next)) { + return next; + } + } + return null; + } + + /** + * @generated + */ + public void setFocus() { + getGraphicalViewer().getControl().setFocus(); + } + + /** + * @generated + */ + public final void createPartControl(Composite parent) { + super.createPartControl(parent); + // initialize actions + createActions(); + } + + /** + * @generated + */ + protected void createGraphicalViewer(Composite parent) { + super.createGraphicalViewer(parent); + // initialize the viewer with input + ScalableFreeformRootEditPart root = new ScalableFreeformRootEditPart(); + getGraphicalViewer().setRootEditPart(root); + getGraphicalViewer().setEditPartFactory(new <%=importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName())%>()); + getGraphicalViewer().setContents(getDiagram()); + + <%=importManager.getImportedName("org.eclipse.draw2d.LayeredPane")%> printableLayers = (<%=importManager.getImportedName("org.eclipse.draw2d.LayeredPane")%>) root.getLayer(<%=importManager.getImportedName("org.eclipse.gef.LayerConstants")%>.PRINTABLE_LAYERS); + <%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayer")%> extLabelsLayer = new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayer")%>(); + extLabelsLayer.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.DelegatingLayout")%>()); + printableLayers.addLayerAfter(extLabelsLayer, <%=importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName())%>.EXTERNAL_NODE_LABELS_LAYER, <%=importManager.getImportedName("org.eclipse.gef.LayerConstants")%>.PRIMARY_LAYER); + } + + /** + * @generated + */ + protected void configureGraphicalViewer() { + super.configureGraphicalViewer(); + GraphicalViewer viewer = getGraphicalViewer(); + // configure the context menu + ContextMenuProvider provider = new <%=genEditor.getClassName()%>ContextMenuProvider(viewer); + viewer.setContextMenu(provider); + getSite().registerContextMenu(<%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.ID + ".editor.contextmenu", provider, getSite().getSelectionProvider()); //$NON-NLS-1$ + + KeyHandler keyHandler = new GraphicalViewerKeyHandler(viewer); + keyHandler.put(KeyStroke.getPressed(SWT.DEL, 127, 0), getActionRegistry().getAction(ActionFactory.DELETE.getId())); + keyHandler.put(KeyStroke.getPressed(SWT.F2, 0), getActionRegistry().getAction(GEFActionConstants.DIRECT_EDIT)); + viewer.setKeyHandler(keyHandler); + + viewer.setProperty(MouseWheelHandler.KeyGenerator.getKey(SWT.CTRL), MouseWheelZoomHandler.SINGLETON); + } + + /** + * @generated + */ + private class <%=genEditor.getClassName()%>ContextMenuProvider extends ContextMenuProvider { + /** + * @generated + */ + public <%=genEditor.getClassName()%>ContextMenuProvider(EditPartViewer viewer) { + super(viewer); + } + + /** + * @generated + */ + public void buildContextMenu(IMenuManager menuManager) { + GEFActionConstants.addStandardActionGroups(menuManager); + appendActionToMenu(menuManager, ActionFactory.UNDO.getId(), GEFActionConstants.GROUP_UNDO); + appendActionToMenu(menuManager, ActionFactory.REDO.getId(), GEFActionConstants.GROUP_UNDO); + + appendActionToMenu(menuManager, ActionFactory.COPY.getId(), GEFActionConstants.GROUP_EDIT); + appendActionToMenu(menuManager, ActionFactory.PASTE.getId(), GEFActionConstants.GROUP_EDIT); + appendActionToMenu(menuManager, ActionFactory.DELETE.getId(), GEFActionConstants.GROUP_EDIT); + appendActionToMenu(menuManager, GEFActionConstants.DIRECT_EDIT, GEFActionConstants.GROUP_EDIT); + + appendActionToMenu(menuManager, ActionFactory.SAVE.getId(), GEFActionConstants.GROUP_SAVE); + + appendAlignmentSubmenu(menuManager); + } + + /** + * @generated + */ + private void appendAlignmentSubmenu(IMenuManager menuManager) { + // Alignment Actions + MenuManager submenu = new MenuManager("Align"); + submenu.add(new Separator(GEFActionConstants.MB_ADDITIONS)); + + appendActionToMenu(submenu, GEFActionConstants.ALIGN_LEFT, GEFActionConstants.MB_ADDITIONS); + appendActionToMenu(submenu, GEFActionConstants.ALIGN_CENTER, GEFActionConstants.MB_ADDITIONS); + appendActionToMenu(submenu, GEFActionConstants.ALIGN_RIGHT, GEFActionConstants.MB_ADDITIONS); + appendActionToMenu(submenu, GEFActionConstants.ALIGN_TOP, GEFActionConstants.MB_ADDITIONS); + appendActionToMenu(submenu, GEFActionConstants.ALIGN_MIDDLE, GEFActionConstants.MB_ADDITIONS); + appendActionToMenu(submenu, GEFActionConstants.ALIGN_BOTTOM, GEFActionConstants.MB_ADDITIONS); + + if (!submenu.isEmpty()) { + menuManager.appendToGroup(GEFActionConstants.GROUP_REST, submenu); + } + } + + /** + * @generated + */ + private void appendActionToMenu(IMenuManager menu, String actionId, String menuGroup) { + IAction action = getActionRegistry().getAction(actionId); + if (action != null && action.isEnabled()) { + menu.appendToGroup(menuGroup, action); + } + } + } +} +<%importManager.emitSortedImports();%> Index: templates/parts/refreshers.javajetinc/visibility.javajetinc =================================================================== RCS file: templates/parts/refreshers.javajetinc/visibility.javajetinc diff -N templates/parts/refreshers.javajetinc/visibility.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshers.javajetinc/visibility.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,6 @@ + Refresher visibilityRefresher = new Refresher() { + public void refresh() { + refreshVisibility(); + } + }; + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getView_Visible(), visibilityRefresher); Index: templates/parts/NodeLabelEditPart.javajet =================================================================== RCS file: templates/parts/NodeLabelEditPart.javajet diff -N templates/parts/NodeLabelEditPart.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/NodeLabelEditPart.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,197 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="NodeLabelEditPartGenerator" + imports="java.util.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.emf.ecore.*"%> +<% +GenNodeLabel genLabel = (GenNodeLabel) ((Object[]) argument)[0]; +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +GenNode genHost = genLabel.getNode(); +GenClass underlyingMetaClass = genHost.getDomainMetaClass(); +GenDiagram genDiagram = genLabel.getDiagram(); +LabelModelFacet labelModelFacet = genLabel.getModelFacet(); +%> +<%@ include file="../copyright4java.jetinc"%> +<%importManager.emitPackageStatement(stringBuffer);%> + +<% +importManager.addImport("org.eclipse.gef.EditPart"); +importManager.addImport("org.eclipse.gef.EditPolicy"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genLabel.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")%> { +<%@ include file="textAwareFields.jetinc"%> + + /** + * @generated + */ + public <%=genLabel.getEditPartClassName()%>(View view) { + setModel(view); + } + + /** + * @generated + */ + protected void createEditPolicies() { +<% + final String primaryView = "getUpdatableParent().getDiagramNode()"; + final String resolvedSemanticElement = "resolveSemanticElement()"; +%> +<%@ include file="directEditPolicy.javajetinc"%> + } + +<%@ include file="directEdit.javajetinc"%> + + /** + * @generated + */ + protected void refreshVisuals() { + super.refreshVisuals(); + refreshLabel(); + refreshFont(); + refreshFontColor(); + } + + /** + * @generated + */ + protected void refreshLabel() { + getLabel().setText(getLabelText()); + getLabel().setIcon(getLabelIcon()); + } + +<%@ include file="labelText.javajetinc"%> +<%@ include file="refreshMethods/font.javajetinc"%> +<%@ include file="refreshMethods/fontColor.javajetinc"%> + + /** + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.swt.graphics.Image")%> getLabelIcon() { + <%=importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())%> element = resolveSemanticElement(); + <%=importManager.getImportedName("org.eclipse.jface.resource.ImageDescriptor")%> imageDescriptor = <%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().getItemImageDescriptor(element); + if (imageDescriptor != null) { + return imageDescriptor.createImage(); + } + return <%=importManager.getImportedName("org.eclipse.jface.resource.ImageDescriptor")%>.getMissingImageDescriptor().createImage(); + } + + /** + * @generated + */ + private <%=importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())%> resolveSemanticElement() { + for(EditPart editPart = this; editPart != null; editPart = editPart.getParent()) { + View view = (View)editPart.getModel(); + if (view != null && view.getElement() != null) { + return (<%=importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())%>) view.getElement(); + } + } + return null; + } + + /** + * @generated + */ + private <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> getUpdatableParent() { + for(EditPart editPart = getParent(); editPart != null; editPart = editPart.getParent()) { + if (editPart instanceof <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%>) { + return (<%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%>) editPart; + } + } + return null; + } + + /** + * @generated + */ + public void activate() { + super.activate(); + <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> updatableParent = getUpdatableParent(); + if (updatableParent != null) { + updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontColor(), fontColorRefresher); + updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontHeight(), fontRefresher); + updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontName(), fontRefresher); + updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Bold(), fontRefresher); + updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Italic(), fontRefresher); +<% +if (labelModelFacet instanceof FeatureLabelModelFacet) { + GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); +%> + updatableParent.addRefresher(<%=importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=feature.getFeatureAccessorName()%>(), labelRefresher); +<% +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); +%> + updatableParent.addRefresher(<%=importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getFeatureAccessorName()%>(), labelRefresher); +<% + } +} +%> + } + } + + /** + * @generated + */ + public void deactivate() { + super.deactivate(); + <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> updatableParent = getUpdatableParent(); + if (updatableParent != null) { + updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontColor(), fontColorRefresher); + updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontHeight(), fontRefresher); + updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontName(), fontRefresher); + updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Bold(), fontRefresher); + updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Italic(), fontRefresher); +<% +if (labelModelFacet instanceof FeatureLabelModelFacet) { + GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); +%> + updatableParent.removeRefresher(<%=importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=feature.getFeatureAccessorName()%>(), labelRefresher); +<% +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); +%> + updatableParent.removeRefresher(<%=importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getFeatureAccessorName()%>(), labelRefresher); +<% + } +} +%> + } + } + + /** + * @generated + */ + private IUpdatableEditPart.Refresher labelRefresher = new IUpdatableEditPart.Refresher() { + public void refresh() { + refreshLabel(); + } + }; + + + /** + * @generated + */ + private IUpdatableEditPart.Refresher fontColorRefresher = new IUpdatableEditPart.Refresher() { + public void refresh() { + refreshFontColor(); + } + }; + + /** + * @generated + */ + private IUpdatableEditPart.Refresher fontRefresher = new IUpdatableEditPart.Refresher() { + public void refresh() { + refreshFont(); + } + }; +<%@ include file="labelFigure.jetinc"%> +} +<%importManager.emitSortedImports();%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginXML.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginXML.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginXML.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginXML.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,70 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; + +public class PluginXML +{ + protected static String nl; + public static synchronized PluginXML create(String lineSeparator) + { + nl = lineSeparator; + PluginXML result = new PluginXML(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = "" + NL + "" + NL + "" + NL + " " + NL + " " + NL + " " + NL + " " + NL + "" + NL + " " + NL + " " + NL + " " + NL + " " + NL + "" + NL + " " + NL + " \t " + NL + " \t \t " + NL + " \t \t\tCreates "; + protected final String TEXT_13 = " diagram." + NL + " \t \t " + NL + " " + NL + " " + NL + "" + NL + ""; + protected final String TEXT_14 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +final GenPlugin genPlugin = (GenPlugin) argument; +final GenEditorGenerator editorGen = genPlugin.getEditorGen(); +final GenDiagram genDiagram = editorGen.getDiagram(); +final GenModel genModel = editorGen.getDomainGenModel(); + + stringBuffer.append(TEXT_1); + stringBuffer.append(editorGen.getDiagramFileExtension()); + stringBuffer.append(TEXT_2); + stringBuffer.append(editorGen.getEditor().getID()); + stringBuffer.append(TEXT_3); + stringBuffer.append(genModel.getModelName()); + stringBuffer.append(TEXT_4); + stringBuffer.append(editorGen.getEditor().getIconPath()); + stringBuffer.append(TEXT_5); + stringBuffer.append(editorGen.getDiagramFileExtension()); + stringBuffer.append(TEXT_6); + stringBuffer.append(editorGen.getEditor().getQualifiedClassName()); + stringBuffer.append(TEXT_7); + stringBuffer.append(editorGen.getEditor().getActionBarContributorQualifiedClassName()); + stringBuffer.append(TEXT_8); + stringBuffer.append(genModel.getModelName()); + stringBuffer.append(TEXT_9); + stringBuffer.append(genDiagram.getCreationWizardIconPath()); + stringBuffer.append(TEXT_10); + stringBuffer.append(genDiagram.getCreationWizardQualifiedClassName()); + stringBuffer.append(TEXT_11); + stringBuffer.append(genDiagram.getCreationWizardQualifiedClassName()); + stringBuffer.append(TEXT_12); + stringBuffer.append(genModel.getModelName()); + stringBuffer.append(TEXT_13); + stringBuffer.append(TEXT_14); + return stringBuffer.toString(); + } +} Index: templates/parts/refreshers.javajetinc/fontColor.javajetinc =================================================================== RCS file: templates/parts/refreshers.javajetinc/fontColor.javajetinc diff -N templates/parts/refreshers.javajetinc/fontColor.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshers.javajetinc/fontColor.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,6 @@ + Refresher fontColorRefresher = new Refresher() { + public void refresh() { + refreshFontColor(); + } + }; + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontColor(), fontColorRefresher); Index: templates/parts/mapmodeWorkaround.javajetinc =================================================================== RCS file: templates/parts/mapmodeWorkaround.javajetinc diff -N templates/parts/mapmodeWorkaround.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/mapmodeWorkaround.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,28 @@ +<% +if (classBody.indexOf("DPtoLP") != -1) { +%> + /** + * @generated + */ + private static class MapModeWorkaround { + /** + * @generated + */ + public int DPtoLP(int dp) { + return dp; + } + /** + * @generated + */ + public static MapModeWorkaround INSTANCE = new MapModeWorkaround(); + } + + /** + * @generated + */ + private MapModeWorkaround getMapMode() { + return MapModeWorkaround.INSTANCE; + } +<% +} +%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/EditorGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/EditorGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/EditorGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/EditorGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,296 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +import org.eclipse.emf.common.util.*; +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; +import org.eclipse.gmf.common.codegen.*; + +public class EditorGenerator +{ + protected static String nl; + public static synchronized EditorGenerator create(String lineSeparator) + { + nl = lineSeparator; + EditorGenerator result = new EditorGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_3 = " extends GraphicalEditorWithFlyoutPalette {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static class UpdatableActionGroup {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void addAction(UpdateAction action) {" + NL + "\t\t\tassert action != null;" + NL + "\t\t\tmyActions.add(action);" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void removeAction(UpdateAction action) {" + NL + "\t\t\tmyActions.remove(action);" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void update() {" + NL + "\t\t\tfor (Iterator it = myActions.iterator(); it.hasNext();) {" + NL + "\t\t\t\tUpdateAction next = (UpdateAction) it.next();" + NL + "\t\t\t\tnext.update();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate ArrayList myActions = new ArrayList();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate EditingDomain editingDomain;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_4 = " "; + protected final String TEXT_5 = ";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_6 = " diagram;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate boolean isDirty = false;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate PaletteRoot paletteRoot;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate PropertySheetPage undoablePropertySheetPage;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate UpdatableActionGroup stackActions = new UpdatableActionGroup();" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate CommandStackListener commandStackListener = new CommandStackListener() {" + NL + "" + NL + "\t\tpublic void commandStackChanged(EventObject event) {" + NL + "\t\t\tstackActions.update();" + NL + "\t\t\tsetDirty(((CommandStack) event.getSource()).isDirty());" + NL + "\t\t}" + NL + "\t};" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate UpdatableActionGroup editPartActions = new UpdatableActionGroup();" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ISelectionListener selectionListener = new ISelectionListener() {" + NL + "" + NL + "\t\tpublic void selectionChanged(IWorkbenchPart part, ISelection selection) {" + NL + "\t\t\teditPartActions.update();" + NL + "\t\t}" + NL + "\t};" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate UpdatableActionGroup editorActions = new UpdatableActionGroup();" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ComposedAdapterFactory domainAdapterFactory;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void firePropertyChange(int propertyId) {" + NL + "\t\tsuper.firePropertyChange(propertyId);" + NL + "\t\teditorActions.update();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * Adds an action to this editor's ActionRegistry. (This is" + NL + "\t * a helper method.)" + NL + "\t * " + NL + "\t * @generated" + NL + "\t * @param action" + NL + "\t * the action to add." + NL + "\t */" + NL + "\tprotected void addAction(IAction action) {" + NL + "\t\tgetActionRegistry().registerAction(action);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * Adds an editor action to this editor." + NL + "\t * " + NL + "\t *

" + NL + "\t * Editor actions are actions that depend and work on the editor." + NL + "\t * " + NL + "\t * @generated" + NL + "\t * @param action" + NL + "\t * the editor action" + NL + "\t */" + NL + "\tprotected void addEditorAction(WorkbenchPartAction action) {" + NL + "\t\tgetActionRegistry().registerAction(action);" + NL + "\t\teditorActions.addAction(action);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * Adds an EditPart action to this editor." + NL + "\t * " + NL + "\t *

" + NL + "\t * EditPart actions are actions that depend and work on the" + NL + "\t * selected EditParts." + NL + "\t * " + NL + "\t * @generated" + NL + "\t * @param action" + NL + "\t * the EditPart action" + NL + "\t */" + NL + "\tprotected void addEditPartAction(SelectionAction action) {" + NL + "\t\tgetActionRegistry().registerAction(action);" + NL + "\t\teditPartActions.addAction(action);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * Adds an CommandStack action to this editor." + NL + "\t * " + NL + "\t *

" + NL + "\t * CommandStack actions are actions that depend and work on" + NL + "\t * the CommandStack." + NL + "\t * " + NL + "\t * @generated" + NL + "\t * @param action" + NL + "\t * the CommandStack action" + NL + "\t */" + NL + "\tprotected void addStackAction(StackAction action) {" + NL + "\t\tgetActionRegistry().registerAction(action);" + NL + "\t\tstackActions.addAction(action);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void createActions() {" + NL + "\t\taddStackAction(new UndoAction(this));" + NL + "\t\taddStackAction(new RedoAction(this));" + NL + "" + NL + "\t\taddEditPartAction(new DeleteAction((IWorkbenchPart) this));" + NL + "\t\taddEditPartAction(new DirectEditAction((IWorkbenchPart) this));" + NL + "" + NL + "\t\taddEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.LEFT));" + NL + "\t\taddEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.RIGHT));" + NL + "\t\taddEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.TOP));" + NL + "\t\taddEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.BOTTOM));" + NL + "\t\taddEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.CENTER));" + NL + "\t\taddEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.MIDDLE));" + NL + "" + NL + "\t\taddEditorAction(new SaveAction(this));" + NL + "\t\taddEditorAction(new PrintAction(this));" + NL + "" + NL + "\t\tIAction zoomIn = new ZoomInAction(getZoomManager());" + NL + "\t\tIAction zoomOut = new ZoomOutAction(getZoomManager());" + NL + "\t\taddAction(zoomIn);" + NL + "\t\taddAction(zoomOut);" + NL + "\t\tgetSite().getKeyBindingService().registerAction(zoomIn);" + NL + "\t\tgetSite().getKeyBindingService().registerAction(zoomOut);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void dispose() {" + NL + "\t\t// remove CommandStackListener" + NL + "\t\tgetCommandStack().removeCommandStackListener(getStackActionsListener());" + NL + "" + NL + "\t\t// remove selection listener" + NL + "\t\tgetSite().getWorkbenchWindow().getSelectionService().removeSelectionListener(getSelectionListener());" + NL + "" + NL + "\t\t// dispose the ActionRegistry (will dispose all actions)" + NL + "\t\tgetActionRegistry().dispose();" + NL + "" + NL + "\t\t// important: always call super implementation of dispose" + NL + "\t\tsuper.dispose();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void doSave(IProgressMonitor monitor) {" + NL + "\t\ttry {" + NL + "\t\t\tsave(monitor);" + NL + "\t\t\tgetCommandStack().markSaveLocation();" + NL + "\t\t} catch (CoreException e) {" + NL + "\t\t\tErrorDialog.openError(getSite().getShell(), \"Error During Save\", \"The current "; + protected final String TEXT_7 = " model could not be saved.\", e.getStatus());" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void save(IProgressMonitor progressMonitor) throws CoreException {" + NL + "\t\tif (progressMonitor == null) {" + NL + "\t\t\tprogressMonitor = new NullProgressMonitor();" + NL + "\t\t}" + NL + "\t\tprogressMonitor.beginTask(\"Saving\", getEditingDomain().getResourceSet().getResources().size());" + NL + "\t\ttry {" + NL + "\t\t\tfor(Iterator it = getEditingDomain().getResourceSet().getResources().iterator(); it.hasNext(); ) {" + NL + "\t\t\t\tResource next = (Resource)it.next();" + NL + "\t\t\t\tnext.save(Collections.EMPTY_MAP);" + NL + "\t\t\t\tprogressMonitor.worked(1);" + NL + "\t\t\t}" + NL + "\t\t} catch (IOException e) {" + NL + "\t\t\tIStatus status = new Status(IStatus.ERROR, "; + protected final String TEXT_8 = ".ID, 0, \"Error writing file.\", e);" + NL + "\t\t\tthrow new CoreException(status);" + NL + "\t\t} finally {" + NL + "\t\t\tprogressMonitor.done();" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic boolean isSaveAsAllowed() {" + NL + "\t\t// TODO: should be allowed." + NL + "\t\treturn false;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void doSaveAs() {" + NL + "\t\t// TODO: Implement." + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Object getAdapter(Class type) {" + NL + "\t\tif (type == IPropertySheetPage.class) {" + NL + "\t\t\treturn getPropertySheetPage();" + NL + "\t\t} else if (type == IContentOutlinePage.class) {" + NL + "\t\t\treturn getOutlinePage();" + NL + "\t\t} else if (type == ZoomManager.class) {" + NL + "\t\t\treturn getZoomManager();" + NL + "\t\t}" + NL + "\t\treturn super.getAdapter(type);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ZoomManager getZoomManager() {" + NL + "\t\treturn getZoomManager(getGraphicalViewer());" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ZoomManager getZoomManager(GraphicalViewer viewer) {" + NL + "\t\t// get zoom manager from root edit part" + NL + "\t\tRootEditPart rootEditPart = viewer.getRootEditPart();" + NL + "\t\tZoomManager zoomManager = null;" + NL + "\t\tif (rootEditPart instanceof ScalableFreeformRootEditPart) {" + NL + "\t\t\tzoomManager = ((ScalableFreeformRootEditPart) rootEditPart).getZoomManager();" + NL + "\t\t} else if (rootEditPart instanceof ScalableRootEditPart) {" + NL + "\t\t\tzoomManager = ((ScalableRootEditPart) rootEditPart).getZoomManager();" + NL + "\t\t}" + NL + "\t\treturn zoomManager;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate CommandStackListener getStackActionsListener() {" + NL + "\t\treturn commandStackListener;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected IContentOutlinePage getOutlinePage() {" + NL + "\t\t//TODO: outline page missing" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected PaletteRoot getPaletteRoot() {" + NL + "\t\tif (paletteRoot == null) {" + NL + "\t\t\tpaletteRoot = new PaletteRoot();"; + protected final String TEXT_9 = NL + "\t\t\tnew "; + protected final String TEXT_10 = "(getDomainAdapterFactory()).contributeToPalette(paletteRoot);"; + protected final String TEXT_11 = NL + "\t\t}" + NL + "\t\treturn paletteRoot;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected PropertySheetPage getPropertySheetPage() {" + NL + "\t\tif (undoablePropertySheetPage == null) {" + NL + "\t\t\tundoablePropertySheetPage = new PropertySheetPage();" + NL + "\t\t\t"; + protected final String TEXT_12 = " rootEntry = new "; + protected final String TEXT_13 = "(getCommandStack());" + NL + "\t\t\trootEntry.setPropertySourceProvider(new "; + protected final String TEXT_14 = "(getDomainAdapterFactory()));" + NL + "\t\t\tundoablePropertySheetPage.setRootEntry(rootEntry);" + NL + "\t\t}" + NL + "" + NL + "\t\treturn undoablePropertySheetPage;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ISelectionListener getSelectionListener() {" + NL + "\t\treturn selectionListener;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_15 = " get"; + protected final String TEXT_16 = "() {" + NL + "\t\treturn "; + protected final String TEXT_17 = ";" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Diagram getDiagram() {" + NL + "\t\treturn diagram;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void init(IEditorSite site, IEditorInput input) throws PartInitException {" + NL + "\t\tURI file = getURIFromInput(input);" + NL + "\t\tif (file == null) {" + NL + "\t\t\tthrow new PartInitException(\"The specified input is not valid.\");" + NL + "\t\t}" + NL + "\t\tsetSite(site);" + NL + "\t\tsetInput(input);" + NL + "\t\tsetEditDomain(new DefaultEditDomain(this));" + NL + "" + NL + "\t\t// validate" + NL + "\t\tif (get"; + protected final String TEXT_18 = "() == null) {" + NL + "\t\t\tthrow new PartInitException(\"The specified input is not valid.\");" + NL + "\t\t}" + NL + "" + NL + "\t\t// add CommandStackListener" + NL + "\t\tgetCommandStack().addCommandStackListener(getStackActionsListener());" + NL + "" + NL + "\t\t// add selection change listener" + NL + "\t\tgetSite().getWorkbenchWindow().getSelectionService().addSelectionListener(getSelectionListener());" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void setInput(IEditorInput input) {" + NL + "\t\tURI file = getURIFromInput(input);" + NL + "\t\tload(file);" + NL + "\t\tsetPartName(file.lastSegment());" + NL + "\t\tsetContentDescription(file.toFileString());" + NL + "\t\tsuper.setInput(input);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate URI getURIFromInput(IEditorInput input) {" + NL + "\t\tif (input instanceof URIEditorInput) {" + NL + "\t\t\treturn ((URIEditorInput) input).getURI();" + NL + "\t\t}" + NL + "\t\tif (input instanceof IPathEditorInput) {" + NL + "\t\t\treturn URI.createFileURI(((IPathEditorInput)input).getPath().toOSString());" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic boolean isDirty() {" + NL + "\t\treturn isDirty;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void setDirty(boolean dirty) {" + NL + "\t\tif (isDirty != dirty) {" + NL + "\t\t\tisDirty = dirty;" + NL + "\t\t\tfirePropertyChange(IEditorPart.PROP_DIRTY);" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected EditingDomain getEditingDomain() {" + NL + "\t\tif (editingDomain == null) {" + NL + "\t\t\tBasicCommandStack commandStack = new BasicCommandStack();" + NL + "\t\t\teditingDomain = new AdapterFactoryEditingDomain(getDomainAdapterFactory(), commandStack, new HashMap());" + NL + "\t\t\teditingDomain.getResourceSet().eAdapters().add(new AdapterFactoryEditingDomain.EditingDomainProvider(editingDomain));" + NL + "\t\t}" + NL + "\t\treturn editingDomain;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate AdapterFactory getDomainAdapterFactory() {" + NL + "\t\tif (domainAdapterFactory == null) {" + NL + "\t\t\tList factories = new ArrayList();" + NL + "\t\t\tfactories.add(new ResourceItemProviderAdapterFactory());"; + protected final String TEXT_19 = NL + "\t\t\tfactories.add(new "; + protected final String TEXT_20 = "());"; + protected final String TEXT_21 = NL + "\t\t\tfactories.add(new ReflectiveItemProviderAdapterFactory());" + NL + "\t\t\tfactories.add(new NotationItemProviderAdapterFactory());" + NL + "\t\t\tdomainAdapterFactory = new ComposedAdapterFactory(factories);" + NL + "\t\t}" + NL + "\t\treturn domainAdapterFactory;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void load(URI diagramFile) {" + NL + "\t\t"; + protected final String TEXT_22 = " = null;" + NL + "\t\tdiagram = null;" + NL + "\t\tif (diagramFile == null) {" + NL + "\t\t\treturn;" + NL + "\t\t}" + NL + "\t\tEditingDomain editingDomain = getEditingDomain();" + NL + "\t\tResourceSet resourceSet = editingDomain.getResourceSet();" + NL + "\t\tResource diagramResource = resourceSet.getResource(diagramFile, true);" + NL + "\t\tif (diagramResource == null) {" + NL + "\t\t\tdiagramResource = resourceSet.createResource(diagramFile);" + NL + "\t\t}" + NL + "\t\tdiagram = (Diagram) findInResource(diagramResource, Diagram.class);" + NL + "\t\tif (diagram == null) {" + NL + "\t\t\tdiagram = NotationFactory.eINSTANCE.createDiagram();" + NL + "\t\t\tdiagramResource.getContents().add(0, diagram);" + NL + "\t\t\t//Auxiliary creation should not be undoable." + NL + "\t\t\ttry {" + NL + "\t\t\t\tdiagramResource.save(Collections.EMPTY_MAP);" + NL + "\t\t\t} catch (IOException e) {" + NL + "\t\t\t\tdiagram = null;" + NL + "\t\t\t\t"; + protected final String TEXT_23 = " = null;" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t}"; + protected final String TEXT_24 = NL + "\t\tURI modelFile = "; + protected final String TEXT_25 = ".getModelFileURI(diagramFile);" + NL + "\t\tResource modelResource = resourceSet.getResource(modelFile, true);" + NL + "\t\tif (modelResource == null) {" + NL + "\t\t\tmodelResource = resourceSet.createResource(modelFile);" + NL + "\t\t}"; + protected final String TEXT_26 = NL + "\t\t"; + protected final String TEXT_27 = " = ("; + protected final String TEXT_28 = ") findInResource("; + protected final String TEXT_29 = ", "; + protected final String TEXT_30 = ".class);" + NL + "\t\tif ("; + protected final String TEXT_31 = " == null) {" + NL + "\t\t\t"; + protected final String TEXT_32 = " = "; + protected final String TEXT_33 = ".eINSTANCE.create"; + protected final String TEXT_34 = "();" + NL + "\t\t\t"; + protected final String TEXT_35 = ".getContents().add(0, "; + protected final String TEXT_36 = ");" + NL + "\t\t\t//We don't want this auxiliary creation to be undoable." + NL + "\t\t\ttry {" + NL + "\t\t\t\t"; + protected final String TEXT_37 = ".save(Collections.EMPTY_MAP);" + NL + "\t\t\t} catch (IOException e) {" + NL + "\t\t\t\tdiagram = null;" + NL + "\t\t\t\t"; + protected final String TEXT_38 = " = null;" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\tif (!diagram.isSetElement()) {" + NL + "\t\t\tdiagram.setElement("; + protected final String TEXT_39 = ");" + NL + "\t\t}" + NL + "\t}"; + protected final String TEXT_40 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate Object findInResource(Resource resource, Class expectedClass) {" + NL + "\t\tfor(Iterator it = resource.getContents().iterator(); it.hasNext(); ) {" + NL + "\t\t\tObject next = it.next();" + NL + "\t\t\tif (expectedClass.isInstance(next)) {" + NL + "\t\t\t\treturn next;" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void setFocus() {" + NL + "\t\tgetGraphicalViewer().getControl().setFocus();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic final void createPartControl(Composite parent) {" + NL + "\t\tsuper.createPartControl(parent);" + NL + "\t\t// initialize actions" + NL + "\t\tcreateActions();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void createGraphicalViewer(Composite parent) {" + NL + "\t\tsuper.createGraphicalViewer(parent);" + NL + "\t\t// initialize the viewer with input" + NL + "\t\tScalableFreeformRootEditPart root = new ScalableFreeformRootEditPart();" + NL + "\t\tgetGraphicalViewer().setRootEditPart(root);" + NL + "\t\tgetGraphicalViewer().setEditPartFactory(new "; + protected final String TEXT_41 = "());" + NL + "\t\tgetGraphicalViewer().setContents(getDiagram());" + NL + "" + NL + "\t\t"; + protected final String TEXT_42 = " printableLayers = ("; + protected final String TEXT_43 = ") root.getLayer("; + protected final String TEXT_44 = ".PRINTABLE_LAYERS);" + NL + "\t\t"; + protected final String TEXT_45 = " extLabelsLayer = new "; + protected final String TEXT_46 = "();" + NL + "\t\textLabelsLayer.setLayoutManager(new "; + protected final String TEXT_47 = "());" + NL + "\t\tprintableLayers.addLayerAfter(extLabelsLayer, "; + protected final String TEXT_48 = ".EXTERNAL_NODE_LABELS_LAYER, "; + protected final String TEXT_49 = ".PRIMARY_LAYER);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void configureGraphicalViewer() {" + NL + "\t\tsuper.configureGraphicalViewer();" + NL + "\t\tGraphicalViewer viewer = getGraphicalViewer();" + NL + "\t\t// configure the context menu" + NL + "\t\tContextMenuProvider provider = new "; + protected final String TEXT_50 = "ContextMenuProvider(viewer);" + NL + "\t\tviewer.setContextMenu(provider);" + NL + "\t\tgetSite().registerContextMenu("; + protected final String TEXT_51 = ".ID + \".editor.contextmenu\", provider, getSite().getSelectionProvider()); //$NON-NLS-1$" + NL + "" + NL + "\t\tKeyHandler keyHandler = new GraphicalViewerKeyHandler(viewer);" + NL + "\t\tkeyHandler.put(KeyStroke.getPressed(SWT.DEL, 127, 0), getActionRegistry().getAction(ActionFactory.DELETE.getId()));" + NL + "\t\tkeyHandler.put(KeyStroke.getPressed(SWT.F2, 0), getActionRegistry().getAction(GEFActionConstants.DIRECT_EDIT));" + NL + "\t\tviewer.setKeyHandler(keyHandler);" + NL + "" + NL + "\t\tviewer.setProperty(MouseWheelHandler.KeyGenerator.getKey(SWT.CTRL), MouseWheelZoomHandler.SINGLETON);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate class "; + protected final String TEXT_52 = "ContextMenuProvider extends ContextMenuProvider {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic "; + protected final String TEXT_53 = "ContextMenuProvider(EditPartViewer viewer) {" + NL + "\t\t\tsuper(viewer);" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t public void buildContextMenu(IMenuManager menuManager) {" + NL + "\t GEFActionConstants.addStandardActionGroups(menuManager);" + NL + "\t\t\tappendActionToMenu(menuManager, ActionFactory.UNDO.getId(), GEFActionConstants.GROUP_UNDO);" + NL + "\t\t\tappendActionToMenu(menuManager, ActionFactory.REDO.getId(), GEFActionConstants.GROUP_UNDO);" + NL + "\t" + NL + "\t\t\tappendActionToMenu(menuManager, ActionFactory.COPY.getId(), GEFActionConstants.GROUP_EDIT);" + NL + "\t\t\tappendActionToMenu(menuManager, ActionFactory.PASTE.getId(), GEFActionConstants.GROUP_EDIT);" + NL + "\t\t\tappendActionToMenu(menuManager, ActionFactory.DELETE.getId(), GEFActionConstants.GROUP_EDIT);" + NL + "\t\t\tappendActionToMenu(menuManager, GEFActionConstants.DIRECT_EDIT, GEFActionConstants.GROUP_EDIT);" + NL + "" + NL + "\t\t\tappendActionToMenu(menuManager, ActionFactory.SAVE.getId(), GEFActionConstants.GROUP_SAVE);" + NL + "" + NL + "\t\t\tappendAlignmentSubmenu(menuManager);" + NL + "\t }" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate void appendAlignmentSubmenu(IMenuManager menuManager) {" + NL + "\t\t\t// Alignment Actions" + NL + "\t\t\tMenuManager submenu = new MenuManager(\"Align\");" + NL + "\t\t\tsubmenu.add(new Separator(GEFActionConstants.MB_ADDITIONS));" + NL + "\t" + NL + "\t\t\tappendActionToMenu(submenu, GEFActionConstants.ALIGN_LEFT, GEFActionConstants.MB_ADDITIONS);" + NL + "\t\t\tappendActionToMenu(submenu, GEFActionConstants.ALIGN_CENTER, GEFActionConstants.MB_ADDITIONS);" + NL + "\t\t\tappendActionToMenu(submenu, GEFActionConstants.ALIGN_RIGHT, GEFActionConstants.MB_ADDITIONS);" + NL + "\t\t\tappendActionToMenu(submenu, GEFActionConstants.ALIGN_TOP, GEFActionConstants.MB_ADDITIONS);" + NL + "\t\t\tappendActionToMenu(submenu, GEFActionConstants.ALIGN_MIDDLE, GEFActionConstants.MB_ADDITIONS);" + NL + "\t\t\tappendActionToMenu(submenu, GEFActionConstants.ALIGN_BOTTOM, GEFActionConstants.MB_ADDITIONS);" + NL + "\t" + NL + "\t\t\tif (!submenu.isEmpty()) {" + NL + "\t\t\t\tmenuManager.appendToGroup(GEFActionConstants.GROUP_REST, submenu);" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate void appendActionToMenu(IMenuManager menu, String actionId, String menuGroup) {" + NL + "\t\t\tIAction action = getActionRegistry().getAction(actionId);" + NL + "\t\t\tif (action != null && action.isEnabled()) {" + NL + "\t\t\t\tmenu.appendToGroup(menuGroup, action);" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t}" + NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +final GenEditorView genEditor = (GenEditorView) ((Object[]) argument)[0]; +final GenDiagram genDiagram = genEditor.getEditorGen().getDiagram(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer); + stringBuffer.append(TEXT_1); + +importManager.addImport("java.io.IOException"); +importManager.addImport("java.util.ArrayList"); +importManager.addImport("java.util.Collections"); +importManager.addImport("java.util.EventObject"); +importManager.addImport("java.util.HashMap"); +importManager.addImport("java.util.Iterator"); +importManager.addImport("java.util.List"); + +importManager.addImport("org.eclipse.core.runtime.CoreException"); +importManager.addImport("org.eclipse.core.runtime.IProgressMonitor"); +importManager.addImport("org.eclipse.core.runtime.IStatus"); +importManager.addImport("org.eclipse.core.runtime.NullProgressMonitor"); +importManager.addImport("org.eclipse.core.runtime.Status"); +importManager.addImport("org.eclipse.draw2d.PositionConstants"); +importManager.addImport("org.eclipse.emf.common.command.BasicCommandStack"); +importManager.addImport("org.eclipse.emf.common.ui.URIEditorInput"); +importManager.addImport("org.eclipse.emf.common.util.URI"); +importManager.addImport("org.eclipse.emf.ecore.resource.Resource"); +importManager.addImport("org.eclipse.emf.ecore.resource.ResourceSet"); +importManager.addImport("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"); +importManager.addImport("org.eclipse.emf.edit.domain.EditingDomain"); +importManager.addImport("org.eclipse.emf.edit.provider.ComposedAdapterFactory"); +importManager.addImport("org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory"); +importManager.addImport("org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory"); +importManager.addImport("org.eclipse.gef.ContextMenuProvider"); +importManager.addImport("org.eclipse.gef.EditPartViewer"); +importManager.addImport("org.eclipse.gef.GraphicalViewer"); +importManager.addImport("org.eclipse.gef.KeyHandler"); +importManager.addImport("org.eclipse.gef.KeyStroke"); +importManager.addImport("org.eclipse.gef.RootEditPart"); +importManager.addImport("org.eclipse.gef.MouseWheelHandler"); +importManager.addImport("org.eclipse.gef.MouseWheelZoomHandler"); +importManager.addImport("org.eclipse.gef.commands.CommandStack"); +importManager.addImport("org.eclipse.gef.commands.CommandStackListener"); +importManager.addImport("org.eclipse.gef.editparts.ScalableFreeformRootEditPart"); +importManager.addImport("org.eclipse.gef.editparts.ScalableRootEditPart"); +importManager.addImport("org.eclipse.gef.editparts.ZoomManager"); +importManager.addImport("org.eclipse.gef.palette.PaletteRoot"); +importManager.addImport("org.eclipse.gef.ui.actions.AlignmentAction"); +importManager.addImport("org.eclipse.gef.ui.actions.DeleteAction"); +importManager.addImport("org.eclipse.gef.ui.actions.DirectEditAction"); +importManager.addImport("org.eclipse.gef.ui.actions.GEFActionConstants"); +importManager.addImport("org.eclipse.gef.ui.actions.PrintAction"); +importManager.addImport("org.eclipse.gef.ui.actions.RedoAction"); +importManager.addImport("org.eclipse.gef.ui.actions.SaveAction"); +importManager.addImport("org.eclipse.gef.ui.actions.SelectionAction"); +importManager.addImport("org.eclipse.gef.ui.actions.StackAction"); +importManager.addImport("org.eclipse.gef.ui.actions.UndoAction"); +importManager.addImport("org.eclipse.gef.ui.actions.UpdateAction"); +importManager.addImport("org.eclipse.gef.ui.actions.WorkbenchPartAction"); +importManager.addImport("org.eclipse.gef.ui.actions.ZoomInAction"); +importManager.addImport("org.eclipse.gef.ui.actions.ZoomOutAction"); +importManager.addImport("org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram"); +importManager.addImport("org.eclipse.gmf.runtime.notation.NotationFactory"); +importManager.addImport("org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory"); +importManager.addImport("org.eclipse.jface.action.IAction"); +importManager.addImport("org.eclipse.jface.action.IMenuManager"); +importManager.addImport("org.eclipse.jface.action.MenuManager"); +importManager.addImport("org.eclipse.jface.action.Separator"); +importManager.addImport("org.eclipse.jface.dialogs.ErrorDialog"); +importManager.addImport("org.eclipse.jface.viewers.ISelection"); +importManager.addImport("org.eclipse.swt.SWT"); +importManager.addImport("org.eclipse.swt.widgets.Composite"); +importManager.addImport("org.eclipse.ui.IEditorPart"); +importManager.addImport("org.eclipse.ui.IEditorInput"); +importManager.addImport("org.eclipse.ui.IEditorSite"); +importManager.addImport("org.eclipse.ui.IPathEditorInput"); +importManager.addImport("org.eclipse.ui.ISelectionListener"); +importManager.addImport("org.eclipse.ui.IWorkbenchPart"); +importManager.addImport("org.eclipse.ui.PartInitException"); +importManager.addImport("org.eclipse.ui.actions.ActionFactory"); +importManager.addImport("org.eclipse.ui.views.contentoutline.IContentOutlinePage"); +importManager.addImport("org.eclipse.ui.views.properties.IPropertySheetPage"); +importManager.addImport("org.eclipse.ui.views.properties.PropertySheetPage"); +importManager.addImport("org.eclipse.emf.common.notify.AdapterFactory"); +importManager.addImport("org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette"); +importManager.addImport("org.eclipse.gef.DefaultEditDomain"); + + stringBuffer.append(TEXT_2); + stringBuffer.append(genEditor.getClassName()); + stringBuffer.append(TEXT_3); + stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_4); + stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")); + stringBuffer.append(TEXT_6); + stringBuffer.append(genDiagram.getEditorGen().getDomainGenModel().getModelName()); + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())); + stringBuffer.append(TEXT_8); + +{ + final Palette palette = genDiagram.getPalette(); + if (palette != null) { + + stringBuffer.append(TEXT_9); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_10); + + } +} + + stringBuffer.append(TEXT_11); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.ui.properties.UndoablePropertySheetEntry")); + stringBuffer.append(TEXT_12); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.ui.properties.UndoablePropertySheetEntry")); + stringBuffer.append(TEXT_13); + stringBuffer.append(importManager.getImportedName(genDiagram.getPropertyProviderQualifiedClassName())); + stringBuffer.append(TEXT_14); + stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_15); + stringBuffer.append(genDiagram.getDomainDiagramElement().getClassifierAccessorName()); + stringBuffer.append(TEXT_16); + stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName()); + stringBuffer.append(TEXT_17); + stringBuffer.append(genDiagram.getDomainDiagramElement().getClassifierAccessorName()); + stringBuffer.append(TEXT_18); + +final EList genPackages = genDiagram.getEditorGen().getAllDomainGenPackages(true); +for (int i = 0; i < genPackages.size(); i++) { + GenPackage genPackage = (GenPackage) genPackages.get(i); + + stringBuffer.append(TEXT_19); + stringBuffer.append(importManager.getImportedName(genPackage.getQualifiedItemProviderAdapterFactoryClassName())); + stringBuffer.append(TEXT_20); + } + stringBuffer.append(TEXT_21); + stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName()); + stringBuffer.append(TEXT_22); + stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName()); + stringBuffer.append(TEXT_23); + +{ + + + boolean sameFile = genDiagram.getEditorGen().isSameFileForDiagramAndModel(); + String resourceToUse; + if (!sameFile) { + + stringBuffer.append(TEXT_24); + stringBuffer.append(genDiagram.getDiagramEditorUtilClassName()); + stringBuffer.append(TEXT_25); + + resourceToUse = "modelResource"; + } else { + resourceToUse = "diagramResource"; + } + + stringBuffer.append(TEXT_26); + stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName()); + stringBuffer.append(TEXT_27); + stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_28); + stringBuffer.append(resourceToUse); + stringBuffer.append(TEXT_29); + stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_30); + stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName()); + stringBuffer.append(TEXT_31); + stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName()); + stringBuffer.append(TEXT_32); + stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryClassName())); + stringBuffer.append(TEXT_33); + stringBuffer.append(genDiagram.getDomainDiagramElement().getClassifierAccessorName()); + stringBuffer.append(TEXT_34); + stringBuffer.append(resourceToUse); + stringBuffer.append(TEXT_35); + stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName()); + stringBuffer.append(TEXT_36); + stringBuffer.append(resourceToUse); + stringBuffer.append(TEXT_37); + stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName()); + stringBuffer.append(TEXT_38); + stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName()); + stringBuffer.append(TEXT_39); + +} + + stringBuffer.append(TEXT_40); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName())); + stringBuffer.append(TEXT_41); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.LayeredPane")); + stringBuffer.append(TEXT_42); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.LayeredPane")); + stringBuffer.append(TEXT_43); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.LayerConstants")); + stringBuffer.append(TEXT_44); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformLayer")); + stringBuffer.append(TEXT_45); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformLayer")); + stringBuffer.append(TEXT_46); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.DelegatingLayout")); + stringBuffer.append(TEXT_47); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName())); + stringBuffer.append(TEXT_48); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.LayerConstants")); + stringBuffer.append(TEXT_49); + stringBuffer.append(genEditor.getClassName()); + stringBuffer.append(TEXT_50); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())); + stringBuffer.append(TEXT_51); + stringBuffer.append(genEditor.getClassName()); + stringBuffer.append(TEXT_52); + stringBuffer.append(genEditor.getClassName()); + stringBuffer.append(TEXT_53); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: templates/providers/DiagramViewFactory.javajet =================================================================== RCS file: templates/providers/DiagramViewFactory.javajet diff -N templates/providers/DiagramViewFactory.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/providers/DiagramViewFactory.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,28 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers" class="DiagramViewFactoryGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> +<% +GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +GenDiagram genElement = genDiagram; /*make jetinc happy*/ +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> +<%importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genElement.getNotationViewFactoryClassName()%> { + /** + * @generated + */ + public static void decorateView(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) { +<%@ include file="createVIDAnnotation.jetinc"%> + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.DiagramStyle")%> style = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createDiagramStyle(); + view.getStyles().add(style); + //XXX: init styles from attributes!!! + } +} +<%importManager.emitSortedImports();%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginPropertiesGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginPropertiesGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginPropertiesGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginPropertiesGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,32 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +import org.eclipse.gmf.codegen.gmfgen.*; + +public class PluginPropertiesGenerator +{ + protected static String nl; + public static synchronized PluginPropertiesGenerator create(String lineSeparator) + { + nl = lineSeparator; + PluginPropertiesGenerator result = new PluginPropertiesGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = "pluginName="; + protected final String TEXT_2 = NL + "providerName="; + protected final String TEXT_3 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + GenPlugin genPlugin = (GenPlugin) argument; + stringBuffer.append(TEXT_1); + stringBuffer.append(genPlugin.getName()); + stringBuffer.append(TEXT_2); + stringBuffer.append(genPlugin.getProvider()); + stringBuffer.append(TEXT_3); + return stringBuffer.toString(); + } +} Index: templates/providers/DomainElementInitializer.javajet =================================================================== RCS file: templates/providers/DomainElementInitializer.javajet diff -N templates/providers/DomainElementInitializer.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/providers/DomainElementInitializer.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,167 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers" class="DomainElementInitializerGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* java.util.*"%> +<% +GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> +<% +importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class DomainElementInitializer <%/*XXX: class name should be customizable!*/%>{ + /** + * @generated + */ + public static interface IElementInitializer { + public void initializeElement(<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> instance); + } + +<% +boolean needsNullInitializer = false; +boolean needsOCLInitializer = false; +for (Iterator it = genDiagram.eAllContents(); it.hasNext(); ) { + Object next = it.next(); + String id = null; + TypeModelFacet modelFacet = null; + if (next instanceof GenNode) { + id = ((GenNode) next).getUniqueIdentifier(); + modelFacet = ((GenNode) next).getModelFacet(); + } else if (next instanceof GenLink && ((GenLink) next).getModelFacet() instanceof TypeLinkModelFacet) { + id = ((GenLink) next).getUniqueIdentifier(); + modelFacet = (TypeLinkModelFacet) ((GenLink) next).getModelFacet(); + } + if (modelFacet == null) { + continue; + } + GenElementInitializer elementInitializer = modelFacet.getModelElementInitializer(); + if (elementInitializer instanceof GenFeatureSeqInitializer == false) { + if (!needsNullInitializer) { + needsNullInitializer = true; +%> + /** + * @generated + */ + private static IElementInitializer NULL_INITIALIZER = new IElementInitializer() { + public void initializeElement(<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> instance) { + } + }; + +<% + } +%> + /** + * @generated + */ + public static IElementInitializer <%=id%> = NULL_INITIALIZER; +<% + continue; + } + needsOCLInitializer = true; + GenFeatureSeqInitializer ftInitializer = (GenFeatureSeqInitializer) elementInitializer; +%> + + /** + * @generated + */ + public static IElementInitializer <%=id%> = new ObjectInitializer(new FeatureInitializer[] { +<% + for(Iterator featInitIt = ftInitializer.getInitializers().iterator(); featInitIt.hasNext();) { + GenFeatureValueSpec featureValSpec = (GenFeatureValueSpec)featInitIt.next();%> + new FeatureInitializer("<%=featureValSpec.getBody()%>", //$NON-NLS-1$ + <%=importManager.getImportedName(ftInitializer.getElementQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=ftInitializer.getElementClassAccessorName()%>(), + <%=importManager.getImportedName(featureValSpec.getFeatureQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=featureValSpec.getFeature().getFeatureAccessorName() + %>())<%if (featInitIt.hasNext()) {%>, <%}%> + +<% + } // end of GenFeatureValueSpec iteration +%> + }); +<% +} +if (needsOCLInitializer) { +%> + /** + * @generated + */ + private static class ObjectInitializer implements IElementInitializer { + /** + * @generated + */ + private FeatureInitializer[] initExpressions; + + /** + * @generated + */ + ObjectInitializer(FeatureInitializer[] initExpressions) { + this.initExpressions = initExpressions; + } + + /** + * @generated + */ + public void initializeElement(<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> instance) { + for (int i = 0; i < initExpressions.length; i++) { + FeatureInitializer nextExpr = initExpressions[i]; + nextExpr.init(instance); + } + } + } + + /** + * @generated + */ + static class FeatureInitializer { + /** + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.emf.ecore.EClass")%> contextClass; + /** + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> sFeature; + /** + * @generated + */ + private <%=importManager.getImportedName("java.lang.String")%> expressionBody; + /** + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.emf.ocl.query.Query")%> query; + /** + * @generated + */ + FeatureInitializer(<%=importManager.getImportedName("java.lang.String")%> expression, + <%=importManager.getImportedName("org.eclipse.emf.ecore.EClass")%> context, + <%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> sFeature) { + this.sFeature = sFeature; + this.expressionBody = expression; + this.contextClass = context; + } + /** + * @generated + */ + void init(<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> contextInstance) { + if(this.query == null) { + this.query = <%=importManager.getImportedName("org.eclipse.emf.ocl.query.QueryFactory")%>.eINSTANCE.createQuery(expressionBody, contextClass); + } + Object value = query.evaluate(contextInstance); + if(sFeature.getEType() instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EEnum")%> && + value instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral")%>) { + value = ((<%=importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral")%>)value).getInstance(); + } else if(value != null && sFeature.isMany()) { + value = new <%=importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")%>((<%=importManager.getImportedName("java.util.Collection")%>)value); + } + contextInstance.eSet(sFeature, value); + } + } +<% +} +%> +} +<%importManager.emitSortedImports();%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/AbstractParserGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/AbstractParserGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/providers/AbstractParserGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/providers/AbstractParserGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,65 @@ +package org.eclipse.gmf.codegen.templates.lite.providers; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; + +public class AbstractParserGenerator +{ + protected static String nl; + public static synchronized AbstractParserGenerator create(String lineSeparator) + { + nl = lineSeparator; + AbstractParserGenerator result = new AbstractParserGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL; + protected final String TEXT_5 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public abstract class "; + protected final String TEXT_6 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static Object parseValue("; + protected final String TEXT_7 = " feature, Object value) throws IllegalArgumentException {" + NL + "\t\tif (value == null) {" + NL + "\t\t\tthrow new IllegalArgumentException();" + NL + "\t\t}" + NL + "\t\t"; + protected final String TEXT_8 = " type = feature.getEAttributeType();" + NL + "\t\tClass iClass = type.getInstanceClass();" + NL + "\t\tif (Boolean.TYPE.equals(iClass) || Boolean.class.equals(iClass)) {" + NL + "\t\t\tif (value instanceof Boolean) {" + NL + "\t\t\t\t// ok" + NL + "\t\t\t} else if (value instanceof String) {" + NL + "\t\t\t\tvalue = Boolean.valueOf((String) value);" + NL + "\t\t\t} else {" + NL + "\t\t\t\tthrow new IllegalArgumentException(\"Value of type Boolean is expected\");" + NL + "\t\t\t}" + NL + "\t\t} else if (Character.TYPE.equals(iClass) || Character.class.equals(iClass)) {" + NL + "\t\t\tif (value instanceof Character) {" + NL + "\t\t\t\t// ok" + NL + "\t\t\t} else if (value instanceof String) {" + NL + "\t\t\t\tString s = (String) value;" + NL + "\t\t\t\tif (s.length() == 0) {" + NL + "\t\t\t\t\tthrow new IllegalArgumentException();\t//XXX: ?" + NL + "\t\t\t\t} else {" + NL + "\t\t\t\t\tvalue = new Character(s.charAt(0));" + NL + "\t\t\t\t}" + NL + "\t\t\t} else {" + NL + "\t\t\t\tthrow new IllegalArgumentException(\"Value of type Character is expected\");" + NL + "\t\t\t}" + NL + "\t\t} else if (Byte.TYPE.equals(iClass) || Byte.class.equals(iClass)) {" + NL + "\t\t\tif (value instanceof Byte) {" + NL + "\t\t\t\t// ok" + NL + "\t\t\t} else if (value instanceof Number) {" + NL + "\t\t\t\tvalue = new Byte(((Number) value).byteValue());" + NL + "\t\t\t} else if (value instanceof String) {" + NL + "\t\t\t\tString s = (String) value;" + NL + "\t\t\t\tif (s.length() == 0) {" + NL + "\t\t\t\t\tvalue = null;" + NL + "\t\t\t\t} else {" + NL + "\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\tvalue = Byte.valueOf(s);" + NL + "\t\t\t\t\t} catch (NumberFormatException nfe) {" + NL + "\t\t\t\t\t\tthrow new IllegalArgumentException(\"String value does not convert to Byte value\");" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t}" + NL + "\t\t\t} else {" + NL + "\t\t\t\tthrow new IllegalArgumentException(\"Value of type Byte is expected\");" + NL + "\t\t\t}" + NL + "\t\t} else if (Short.TYPE.equals(iClass) || Short.class.equals(iClass)) {" + NL + "\t\t\tif (value instanceof Short) {" + NL + "\t\t\t\t// ok" + NL + "\t\t\t} else if (value instanceof Number) {" + NL + "\t\t\t\tvalue = new Short(((Number) value).shortValue());" + NL + "\t\t\t} else if (value instanceof String) {" + NL + "\t\t\t\tString s = (String) value;" + NL + "\t\t\t\tif (s.length() == 0) {" + NL + "\t\t\t\t\tvalue = null;" + NL + "\t\t\t\t} else {" + NL + "\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\tvalue = Short.valueOf(s);" + NL + "\t\t\t\t\t} catch (NumberFormatException nfe) {" + NL + "\t\t\t\t\t\tthrow new IllegalArgumentException(\"String value does not convert to Short value\");" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t}" + NL + "\t\t\t} else {" + NL + "\t\t\t\tthrow new IllegalArgumentException(\"Value of type Short is expected\");" + NL + "\t\t\t}" + NL + "\t\t} else if (Integer.TYPE.equals(iClass) || Integer.class.equals(iClass)) {" + NL + "\t\t\tif (value instanceof Integer) {" + NL + "\t\t\t\t// ok" + NL + "\t\t\t} else if (value instanceof Number) {" + NL + "\t\t\t\tvalue = new Integer(((Number) value).intValue());" + NL + "\t\t\t} else if (value instanceof String) {" + NL + "\t\t\t\tString s = (String) value;" + NL + "\t\t\t\tif (s.length() == 0) {" + NL + "\t\t\t\t\tvalue = null;" + NL + "\t\t\t\t} else {" + NL + "\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\tvalue = Integer.valueOf(s);" + NL + "\t\t\t\t\t} catch (NumberFormatException nfe) {" + NL + "\t\t\t\t\t\tthrow new IllegalArgumentException(\"String value does not convert to Integer value\");" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t}" + NL + "\t\t\t} else {" + NL + "\t\t\t\tthrow new IllegalArgumentException(\"Value of type Integer is expected\");" + NL + "\t\t\t}" + NL + "\t\t} else if (Long.TYPE.equals(iClass) || Long.class.equals(iClass)) {" + NL + "\t\t\tif (value instanceof Long) {" + NL + "\t\t\t\t// ok" + NL + "\t\t\t} else if (value instanceof Number) {" + NL + "\t\t\t\tvalue = new Long(((Number) value).longValue());" + NL + "\t\t\t} else if (value instanceof String) {" + NL + "\t\t\t\tString s = (String) value;" + NL + "\t\t\t\tif (s.length() == 0) {" + NL + "\t\t\t\t\tvalue = null;" + NL + "\t\t\t\t} else {" + NL + "\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\tvalue = Long.valueOf(s);" + NL + "\t\t\t\t\t} catch (NumberFormatException nfe) {" + NL + "\t\t\t\t\t\tthrow new IllegalArgumentException(\"String value does not convert to Long value\");" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t}" + NL + "\t\t\t} else {" + NL + "\t\t\t\tthrow new IllegalArgumentException(\"Value of type Long is expected\");" + NL + "\t\t\t}" + NL + "\t\t} else if (Float.TYPE.equals(iClass) || Float.class.equals(iClass)) {" + NL + "\t\t\tif (value instanceof Float) {" + NL + "\t\t\t\t// ok" + NL + "\t\t\t} else if (value instanceof Number) {" + NL + "\t\t\t\tvalue = new Float(((Number) value).floatValue());" + NL + "\t\t\t} else if (value instanceof String) {" + NL + "\t\t\t\tString s = (String) value;" + NL + "\t\t\t\tif (s.length() == 0) {" + NL + "\t\t\t\t\tvalue = null;" + NL + "\t\t\t\t} else {" + NL + "\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\tvalue = Float.valueOf(s);" + NL + "\t\t\t\t\t} catch (NumberFormatException nfe) {" + NL + "\t\t\t\t\t\tthrow new IllegalArgumentException(\"String value does not convert to Float value\");" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t}" + NL + "\t\t\t} else {" + NL + "\t\t\t\tthrow new IllegalArgumentException(\"Value of type Float is expected\");" + NL + "\t\t\t}" + NL + "\t\t} else if (Double.TYPE.equals(iClass) || Double.class.equals(iClass)) {" + NL + "\t\t\tif (value instanceof Double) {" + NL + "\t\t\t\t// ok" + NL + "\t\t\t} else if (value instanceof Number) {" + NL + "\t\t\t\tvalue = new Double(((Number) value).doubleValue());" + NL + "\t\t\t} else if (value instanceof String) {" + NL + "\t\t\t\tString s = (String) value;" + NL + "\t\t\t\tif (s.length() == 0) {" + NL + "\t\t\t\t\tvalue = null;" + NL + "\t\t\t\t} else {" + NL + "\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\tvalue = Double.valueOf(s);" + NL + "\t\t\t\t\t} catch (NumberFormatException nfe) {" + NL + "\t\t\t\t\t\tthrow new IllegalArgumentException(\"String value does not convert to Double value\");" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t}" + NL + "\t\t\t} else {" + NL + "\t\t\t\tthrow new IllegalArgumentException(\"Value of type Double is expected\");" + NL + "\t\t\t}" + NL + "\t\t} else if (String.class.equals(iClass)) {" + NL + "\t\t\tvalue = String.valueOf(value);" + NL + "\t\t} else if (type instanceof "; + protected final String TEXT_9 = ") {" + NL + "\t\t\tif (value instanceof String) {" + NL + "\t\t\t\t"; + protected final String TEXT_10 = " literal = (("; + protected final String TEXT_11 = ") type).getEEnumLiteralByLiteral((String) value);" + NL + "\t\t\t\tif (literal == null) {" + NL + "\t\t\t\t\tthrow new IllegalArgumentException(\"Unknown literal: \" + value);" + NL + "\t\t\t\t} else {" + NL + "\t\t\t\t\tvalue = literal.getInstance();" + NL + "\t\t\t\t}" + NL + "\t\t\t} else {" + NL + "\t\t\t\tthrow new IllegalArgumentException(\"Value of type String is expected\");" + NL + "\t\t\t}" + NL + "\t\t} else {" + NL + "\t\t\tthrow new IllegalArgumentException(\"Unsupported type\");" + NL + "\t\t}" + NL + "\t\treturn value;" + NL + "\t}" + NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; + ImportAssistant importManager = (ImportAssistant) ((Object[])argument)[1]; + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + stringBuffer.append(TEXT_4); + +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_5); + stringBuffer.append(genDiagram.getAbstractParserClassName()); + stringBuffer.append(TEXT_6); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EDataType")); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnum")); + stringBuffer.append(TEXT_9); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral")); + stringBuffer.append(TEXT_10); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnum")); + stringBuffer.append(TEXT_11); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: .jetproperties =================================================================== RCS file: .jetproperties diff -N .jetproperties --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ .jetproperties 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,4 @@ + + + templates src-templates + Index: templates/parts/refreshers.javajetinc/font.javajetinc =================================================================== RCS file: templates/parts/refreshers.javajetinc/font.javajetinc diff -N templates/parts/refreshers.javajetinc/font.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshers.javajetinc/font.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,10 @@ + Refresher fontRefresher = new Refresher() { + public void refresh() { + refreshFont(); + } + }; + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontHeight(), fontRefresher); + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontName(), fontRefresher); + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Bold(), fontRefresher); + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Italic(), fontRefresher); + Index: src/org/eclipse/gmf/internal/codegen/lite/Generator.java =================================================================== RCS file: src/org/eclipse/gmf/internal/codegen/lite/Generator.java diff -N src/org/eclipse/gmf/internal/codegen/lite/Generator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/gmf/internal/codegen/lite/Generator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,191 @@ +/* + * Copyright (c) 2005 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: + * Artem Tikhomirov (Borland) - initial API and implementation + */ +package org.eclipse.gmf.internal.codegen.lite; + +import java.lang.ref.SoftReference; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.runtime.Path; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.codegen.gmfgen.GMFGenPackage; +import org.eclipse.gmf.codegen.gmfgen.GenCompartment; +import org.eclipse.gmf.codegen.gmfgen.GenDiagram; +import org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator; +import org.eclipse.gmf.codegen.gmfgen.GenLink; +import org.eclipse.gmf.codegen.gmfgen.GenLinkLabel; +import org.eclipse.gmf.codegen.gmfgen.GenNode; +import org.eclipse.gmf.codegen.gmfgen.GenNodeLabel; +import org.eclipse.gmf.common.UnexpectedBehaviourException; +import org.eclipse.gmf.common.codegen.GeneratorBase; + +/** + * Invokes JET templates to populate diagram editor project. + * + * @author artem + */ +public class Generator extends GeneratorBase implements Runnable { + + private final GenEditorGenerator myEditorGen; + + private final GenDiagram myDiagram; + + private final CodegenEmitters myEmitters; + + private static Map/**/ myCachedURI2EmitterMap = new HashMap(); + + public Generator(GenEditorGenerator genModel) { + myDiagram = genModel.getDiagram(); + myEditorGen = genModel; + URI resourceURI = myEditorGen.eResource().getURI(); + if (myEditorGen.isDynamicTemplates()) { + myCachedURI2EmitterMap.remove(resourceURI); + } + CodegenEmitters old = myCachedURI2EmitterMap.containsKey(resourceURI) ? (CodegenEmitters) ((SoftReference) myCachedURI2EmitterMap.get(resourceURI)).get() : null; + if (old == null) { + myEmitters = new CodegenEmitters(!myEditorGen.isDynamicTemplates(), myEditorGen.getTemplateDirectory()); + if (!myEditorGen.isDynamicTemplates()) { + myCachedURI2EmitterMap.put(resourceURI, new SoftReference(myEmitters)); + } + } else { + myEmitters = old; + } + } + + protected URL getJMergeControlFile() { + return myEmitters.getJMergeControlFile(); + } + + protected void customRun() throws InterruptedException, UnexpectedBehaviourException { + initializeEditorProject(myDiagram.getEditorGen().getPlugin().getID(), createReferencedProjectsList()); + + doGenerateFile(myEmitters.getManifestGenerator(), new Path("META-INF/MANIFEST.MF"), myEditorGen.getPlugin()); + doGenerateFile(myEmitters.getBuildPropertiesGenerator(), new Path("build.properties"), myEditorGen.getPlugin()); + doGenerateFile(myEmitters.getPluginXML(), new Path("plugin.xml"), myEditorGen.getPlugin()); + doGenerateFile(myEmitters.getPluginPropertiesGenerator(), new Path("plugin.properties"), myEditorGen.getPlugin()); + + doGenerateJavaClass(myEmitters.getCreationWizardGenerator(), myDiagram.getCreationWizardQualifiedClassName(), myDiagram); + doGenerateJavaClass(myEmitters.getCreationWizardPageGenerator(), myDiagram.getCreationWizardPageQualifiedClassName(), myDiagram); + doGenerateJavaClass(myEmitters.getPluginGenerator(), myEditorGen.getPlugin().getActivatorQualifiedClassName(), myEditorGen.getPlugin()); + + doGenerateJavaClass(myEmitters.getActionBarContributorGenerator(), myEditorGen.getEditor().getActionBarContributorQualifiedClassName(), myEditorGen.getEditor()); + doGenerateJavaClass(myEmitters.getDiagramEditorUtilGenerator(), myDiagram.getDiagramEditorUtilQualifiedClassName(), myDiagram); + doGenerateJavaClass(myEmitters.getEditorGenerator(), myEditorGen.getEditor().getQualifiedClassName(), myEditorGen.getEditor()); + doGenerateJavaClass(myEmitters.getPropertySourceProviderGenerator(), myDiagram.getPropertyProviderQualifiedClassName(), myDiagram); + if (myDiagram.getPalette() != null) { + doGenerateJavaClass(myEmitters.getPaletteFactoryGenerator(), myDiagram.getPalette().getFactoryQualifiedClassName(), myDiagram); + } + doGenerateJavaClass(myEmitters.getUpdatableEditPartGenerator(), myDiagram.getEditPartsPackageName(), "IUpdatableEditPart", myDiagram); // XXX: should be customizable + doGenerateJavaClass(myEmitters.getEditPartFactoryGenerator(), myDiagram.getEditPartFactoryQualifiedClassName(), myDiagram); + doGenerateJavaClass(myEmitters.getDiagramEditPartGenerator(), myDiagram.getEditPartQualifiedClassName(), myDiagram); + + for (Iterator it = myDiagram.getAllNodes().iterator(); it.hasNext(); ) { + final GenNode next = (GenNode) it.next(); + if (!next.isListContainerEntry()) { + doGenerateJavaClass(myEmitters.getNodeEditPartGenerator(), next.getEditPartQualifiedClassName(), next); + for (Iterator it2 = next.getLabels().iterator(); it2.hasNext();) { + final GenNodeLabel label = (GenNodeLabel) it2.next(); + doGenerateJavaClass(myEmitters.getNodeLabelEditPartGenerator(), label.getEditPartQualifiedClassName(), label); + doGenerateJavaClass(myEmitters.getLabelViewFactoryGenerator(), label.getNotationViewFactoryQualifiedClassName(), label); + } + doGenerateJavaClass(myEmitters.getNodeViewFactoryGenerator(), next.getNotationViewFactoryQualifiedClassName(), next); + } else { + doGenerateJavaClass(myEmitters.getChildNodeEditPartGenerator(), next.getEditPartQualifiedClassName(), next); + doGenerateJavaClass(myEmitters.getLabelViewFactoryGenerator(), next.getNotationViewFactoryQualifiedClassName(), next); + } + } + doGenerateJavaClass(myEmitters.getAbstractParserGenerator(),myDiagram.getAbstractParserQualifiedClassName(), myDiagram); + for (Iterator it = myDiagram.getLinks().iterator(); it.hasNext();) { + final GenLink next = (GenLink) it.next(); + doGenerateJavaClass(myEmitters.getLinkEditPartGenerator(), next.getEditPartQualifiedClassName(), next); + for (Iterator it2 = next.getLabels().iterator(); it2.hasNext();) { + final GenLinkLabel label = (GenLinkLabel) it2.next(); + doGenerateJavaClass(myEmitters.getLinkLabelEditPartGenerator(), label.getEditPartQualifiedClassName(), label); + doGenerateJavaClass(myEmitters.getLabelViewFactoryGenerator(), label.getNotationViewFactoryQualifiedClassName(), label); + } + doGenerateJavaClass(myEmitters.getLinkViewFactoryGenerator(), next.getNotationViewFactoryQualifiedClassName(), next); + } + for (Iterator it = myDiagram.getCompartments().iterator(); it.hasNext(); ) { + final GenCompartment next = (GenCompartment) it.next(); + doGenerateJavaClass(myEmitters.getCompartmentEditPartGenerator(), next.getEditPartQualifiedClassName(), next); + doGenerateJavaClass(myEmitters.getCompartmentViewFactoryGenerator(), next.getNotationViewFactoryQualifiedClassName(), next); + } + doGenerateJavaClass(myEmitters.getDiagramViewFactoryGenerator(), myDiagram.getNotationViewFactoryQualifiedClassName(), myDiagram); + doGenerateJavaClass(myEmitters.getDomainElementInitializerGenerator(), myDiagram.getNotationViewFactoriesPackageName(), "DomainElementInitializer",myDiagram); // XXX: allow customization! + doGenerateJavaClass(myEmitters.getVisualIDRegistryGenerator(), myDiagram.getVisualIDRegistryQualifiedClassName(), myDiagram); + } + + protected void setupProgressMonitor() { + Counter c = new Counter(); + c.curiousAbout(GMFGenPackage.eINSTANCE.getGenNode()); + c.curiousAbout(GMFGenPackage.eINSTANCE.getGenCompartment()); + c.curiousAbout(GMFGenPackage.eINSTANCE.getGenLink()); + c.curiousAbout(GMFGenPackage.eINSTANCE.getGenNodeLabel()); + c.curiousAbout(GMFGenPackage.eINSTANCE.getGenLinkLabel()); + c.count(myDiagram); + int total = 2 * c.getCount(GMFGenPackage.eINSTANCE.getGenNode()); + total += 2 * c.getCount(GMFGenPackage.eINSTANCE.getGenCompartment()); + total += 2 * c.getCount(GMFGenPackage.eINSTANCE.getGenLink()); + total += 2 * c.getCount(GMFGenPackage.eINSTANCE.getGenNodeLabel()); + total += 2 * c.getCount(GMFGenPackage.eINSTANCE.getGenLinkLabel()); + total++; // init + total += 4; // text files + total += 15; // out-of-cycle doGenerateJava... <- genDiagram + genEditor + setupProgressMonitor("Generation in progress...", total); + } + + protected final List createReferencedProjectsList() { + return Collections.EMPTY_LIST; + } + + private static final class Counter { + private final List/**/ myAttractions = new ArrayList(); + private int[] myHits; + + public void curiousAbout(EClass eClass) { + myAttractions.add(eClass); + } + + public void count(EObject start) { + myHits = new int[myAttractions.size()]; + final EClass[] attractions = (EClass[]) myAttractions.toArray(new EClass[myAttractions.size()]); + doCount(start.eClass(), attractions); + for (Iterator it = start.eAllContents(); it.hasNext(); ) { + EObject next = (EObject) it.next(); + doCount(next.eClass(), attractions); + } + } + + private void doCount(EClass eClass, EClass[] attractions) { + for (int i = 0; i < attractions.length; i++) { + if (attractions[i].isSuperTypeOf(eClass)) { + myHits[i]++; + } + } + } + + public int getCount(EClass eClass) { + int index = myAttractions.indexOf(eClass); + if (index == -1) { + throw new IllegalArgumentException("No class " + eClass + " was previously registered with curiousAbout(EClass)"); + } + return myHits[index]; + } + } +} Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/VisualIDRegistryGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/VisualIDRegistryGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/VisualIDRegistryGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/VisualIDRegistryGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,323 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +import org.eclipse.gmf.codegen.gmfgen.*; +import java.util.*; +import org.eclipse.gmf.common.codegen.*; + +public class VisualIDRegistryGenerator +{ + protected static String nl; + public static synchronized VisualIDRegistryGenerator create(String lineSeparator) + { + nl = lineSeparator; + VisualIDRegistryGenerator result = new VisualIDRegistryGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL + NL + "/**" + NL + " * This registry is used to determine which type of visual object should be" + NL + " * created for the corresponding Diagram, Node, ChildNode or Link represented " + NL + " * by a domain model object. Note that it only returns semantically complete objects (those who must have an element associated with them)." + NL + " *" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_5 = " {" + NL + "" + NL + "\tpublic static final "; + protected final String TEXT_6 = " INSTANCE = new "; + protected final String TEXT_7 = "();" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic int getDiagramVisualID(EObject domainElement) {" + NL + "\t\tif (domainElement == null) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\tEClass domainElementMetaclass = domainElement.eClass();" + NL + "\t\treturn getDiagramVisualID(domainElement, domainElementMetaclass);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic int getDiagramVisualID(EObject domainElement, EClass domainElementMetaclass) {"; + protected final String TEXT_8 = NL + "\t\tif ("; + protected final String TEXT_9 = ".eINSTANCE.get"; + protected final String TEXT_10 = "().equals(domainElementMetaclass) && isDiagram"; + protected final String TEXT_11 = "(("; + protected final String TEXT_12 = ") domainElement)) {" + NL + "\t\t\treturn "; + protected final String TEXT_13 = ";" + NL + "\t\t}"; + protected final String TEXT_14 = NL + "\t\treturn getUnrecognizedDiagramID(domainElement);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic int getNodeVisualID(View containerView, EObject domainElement) {" + NL + "\t\tif (domainElement == null) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\tEClass domainElementMetaclass = domainElement.eClass();" + NL + "\t\treturn getNodeVisualID(containerView, domainElement, domainElementMetaclass);" + NL + "\t}" + NL + "\t" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic int getNodeVisualID(View containerView, EObject domainElement, EClass domainElementMetaclass) {" + NL + "\t\tString containerModelID = getModelID(containerView);" + NL + "\t\tif (!\""; + protected final String TEXT_15 = "\".equals(containerModelID)) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\tint containerVisualID;" + NL + "\t\tif (\""; + protected final String TEXT_16 = "\".equals(containerModelID)) {" + NL + "\t\t\tcontainerVisualID = getVisualID(containerView);" + NL + "\t\t} else {" + NL + "\t\t\tif (containerView instanceof Diagram) {" + NL + "\t\t\t\tcontainerVisualID = "; + protected final String TEXT_17 = ";\t\t" + NL + "\t\t\t} else {" + NL + "\t\t\t\treturn -1;" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\tswitch (containerVisualID) {"; + protected final String TEXT_18 = NL + "\t\tcase "; + protected final String TEXT_19 = ":"; + protected final String TEXT_20 = NL + "\t\t\tif ("; + protected final String TEXT_21 = ".eINSTANCE.get"; + protected final String TEXT_22 = "().isSuperTypeOf(domainElementMetaclass) && isNode"; + protected final String TEXT_23 = "(("; + protected final String TEXT_24 = ") domainElement)) {" + NL + "\t\t\t\treturn "; + protected final String TEXT_25 = ";" + NL + "\t\t\t}"; + protected final String TEXT_26 = NL + "\t\t\treturn getUnrecognized"; + protected final String TEXT_27 = "ChildNodeID(domainElement);"; + protected final String TEXT_28 = NL + "\t\t}" + NL + "\t\treturn -1;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic int getLinkWithClassVisualID(EObject domainElement) {" + NL + "\t\tEClass domainElementMetaclass = domainElement.eClass();" + NL + "\t\treturn getLinkWithClassVisualID(domainElement, domainElementMetaclass);" + NL + "\t}" + NL + "\t\t" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic int getLinkWithClassVisualID(EObject domainElement, EClass domainElementMetaclass) {"; + protected final String TEXT_29 = NL + "\t\tif ("; + protected final String TEXT_30 = ".eINSTANCE.get"; + protected final String TEXT_31 = "().isSuperTypeOf(domainElementMetaclass) && isLinkWithClass"; + protected final String TEXT_32 = "(("; + protected final String TEXT_33 = ") domainElement)) {" + NL + "\t\t\treturn "; + protected final String TEXT_34 = ";" + NL + "\t\t}"; + protected final String TEXT_35 = NL + "\t\treturn getUnrecognizedLinkWithClassID(domainElement);" + NL + "\t}" + NL; + protected final String TEXT_36 = NL + "\t/**" + NL + "\t * User can change implementation of this method to check some additional " + NL + "\t * conditions here." + NL + "\t *" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate boolean isDiagram"; + protected final String TEXT_37 = "("; + protected final String TEXT_38 = " element) {" + NL + "\t\treturn true;" + NL + "\t}"; + protected final String TEXT_39 = NL + NL + "\t/**" + NL + "\t * User can change implementation of this method to handle some specific" + NL + "\t * situations not covered by default logic." + NL + "\t *" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate int getUnrecognizedDiagramID(EObject domainElement) {" + NL + "\t\treturn -1;" + NL + "\t}" + NL; + protected final String TEXT_40 = NL + NL + "\t/**" + NL + "\t * User can change implementation of this method to check some additional " + NL + "\t * conditions here." + NL + "\t *" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate boolean isNode"; + protected final String TEXT_41 = "("; + protected final String TEXT_42 = " element) {" + NL + "\t\treturn ElementSelectors."; + protected final String TEXT_43 = ".matches(element);" + NL + "\t}\t"; + protected final String TEXT_44 = NL + NL + "\t/**" + NL + "\t * User can change implementation of this method to handle some specific" + NL + "\t * situations not covered by default logic." + NL + "\t *" + NL + "\t * @generated" + NL + "\t */\t" + NL + "\tprivate int getUnrecognized"; + protected final String TEXT_45 = "ChildNodeID(EObject domainElement) {" + NL + "\t\treturn -1;" + NL + "\t}"; + protected final String TEXT_46 = NL + NL + "\t/**" + NL + "\t * User can change implementation of this method to handle some specific" + NL + "\t * situations not covered by default logic." + NL + "\t *" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate int getUnrecognizedLinkWithClassID(EObject domainElement) {" + NL + "\t\treturn -1;" + NL + "\t}" + NL; + protected final String TEXT_47 = NL + NL + "\t/**" + NL + "\t * User can change implementation of this method to check some additional " + NL + "\t * conditions here." + NL + "\t *" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate boolean isLinkWithClass"; + protected final String TEXT_48 = "("; + protected final String TEXT_49 = " element) {" + NL + "\t\treturn ElementSelectors."; + protected final String TEXT_50 = ".matches(element);" + NL + "\t}"; + protected final String TEXT_51 = NL; + protected final String TEXT_52 = NL; + protected final String TEXT_53 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate String getModelID("; + protected final String TEXT_54 = " containerView) {" + NL + "\t\t"; + protected final String TEXT_55 = " annotation = containerView.getEAnnotation(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "\t\tif (annotation == null) {" + NL + "\t\t\treturn null;" + NL + "\t\t}" + NL + "\t\treturn (String) annotation.getDetails().get(\"modelID\"); //$NON-NLS-1$" + NL + "\t}" + NL; + protected final String TEXT_56 = NL; + protected final String TEXT_57 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static int getVisualID("; + protected final String TEXT_58 = " containerView) {" + NL + "\t\t"; + protected final String TEXT_59 = " annotation = containerView.getEAnnotation(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "\t\tif (annotation == null) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\tString visualID = (String) annotation.getDetails().get(\"visualID\"); //$NON-NLS-1$" + NL + "\t\tif (visualID == null) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\ttry {" + NL + "\t\t\treturn Integer.parseInt(visualID);" + NL + "\t\t} catch (NumberFormatException e) {" + NL + "\t\t\t"; + protected final String TEXT_60 = ".getInstance().logError(\"Unable to parse \\\"visualID\\\" annotation: \" + visualID, e);" + NL + "\t\t}" + NL + "\t\treturn -1;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static class ElementSelectors {\t"; + protected final String TEXT_61 = NL + NL + "\t\t/**" + NL + "\t\t * Element matching condition for "; + protected final String TEXT_62 = "." + NL + "\t\t *

language: ";
+  protected final String TEXT_63 = "
\t" + NL + "\t\t *
body    : ";
+  protected final String TEXT_64 = "
" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate static final Matcher "; + protected final String TEXT_65 = " = new Matcher(\""; + protected final String TEXT_66 = "\");"; + protected final String TEXT_67 = NL + "\t\t" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate ElementSelectors() {" + NL + "\t\t}"; + protected final String TEXT_68 = "\t\t\t" + NL + "\t\t/**" + NL + "\t\t* @generated\t" + NL + "\t\t*/" + NL + "\t\tstatic class Matcher {" + NL + "\t" + NL + "\t\t\t/**" + NL + "\t\t\t* @generated\t" + NL + "\t\t\t*/\t\t\t\t\t" + NL + "\t\t\tprivate EClass evalContext;" + NL + "\t" + NL + "\t\t\t/**" + NL + "\t\t\t* @generated\t" + NL + "\t\t\t*/\t\t\t\t\t\t" + NL + "\t\t\tprivate "; + protected final String TEXT_69 = " condition;" + NL + "\t" + NL + "\t\t\t/**" + NL + "\t\t\t* @generated\t" + NL + "\t\t\t*/\t\t\t\t\t\t" + NL + "\t\t\tprivate String body;\t\t" + NL + "\t\t\t\t\t" + NL + "\t\t\t/**" + NL + "\t\t\t* @generated\t" + NL + "\t\t\t*/\t\t\t\t" + NL + "\t\t\tMatcher(String expressionBody) {\t\t\t" + NL + "\t\t\t\tbody = expressionBody;" + NL + "\t\t\t}" + NL + "\t" + NL + "\t\t\t/**" + NL + "\t\t\t* @generated\t" + NL + "\t\t\t*/\t\t\t\t\t\t" + NL + "\t\t\tboolean matches(EObject object) {\t\t" + NL + "\t\t\t\ttry {" + NL + "\t\t\t\t\tBoolean result = (object != null) ? evaluate(object) : Boolean.FALSE;" + NL + "\t\t\t\t\treturn result.booleanValue();" + NL + "\t\t\t\t} catch(IllegalArgumentException e) {" + NL + "\t\t\t\t\t"; + protected final String TEXT_70 = ".getInstance().logError(null, e);" + NL + "\t\t\t\t\treturn false;" + NL + "\t\t\t\t}" + NL + "\t\t\t}" + NL + "\t" + NL + "\t\t\t/**" + NL + "\t\t\t* @generated\t" + NL + "\t\t\t*/\t\t" + NL + "\t\t\tprivate Boolean evaluate(EObject context) {" + NL + "\t\t\t\tthis.evalContext = context.eClass();" + NL + "\t\t\t\tif(condition == null) {\t\t\t\t\t" + NL + "\t\t\t\t\tcondition = new "; + protected final String TEXT_71 = "(body, evalContext);" + NL + "\t\t\t\t}" + NL + "\t\t\t\tif(condition != null) {" + NL + "\t\t\t\t\treturn booleanCast(condition.evaluate(context));" + NL + "\t\t\t\t}" + NL + "\t\t\t\treturn Boolean.FALSE;" + NL + "\t\t\t}" + NL + "\t" + NL + "\t\t\t/**" + NL + "\t\t\t* @generated\t" + NL + "\t\t\t*/\t\t\t\t\t" + NL + "\t\t\tprivate static Boolean booleanCast(Object value) {" + NL + "\t\t\t\tif(value == null) {" + NL + "\t\t\t\t\treturn null;" + NL + "\t\t\t\t} else if(value instanceof Boolean) {" + NL + "\t\t\t\t\t return (Boolean)value;\t" + NL + "\t\t\t\t}" + NL + "\t\t\t\treturn Boolean.FALSE;" + NL + "\t\t\t}" + NL + "\t\t} // end of Matcher"; + protected final String TEXT_72 = "\t\t" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tstatic class AcceptAllMatcher {" + NL + "\t\t\t/**" + NL + "\t\t\t * @generated" + NL + "\t\t\t */\t\t" + NL + "\t\t\tstatic final AcceptAllMatcher INSTANCE = new AcceptAllMatcher();" + NL + "\t\t\t/**" + NL + "\t\t\t * @generated" + NL + "\t\t\t */\t\t\t\t\t" + NL + "\t\t\tboolean matches(Object element) {" + NL + "\t\t\t\treturn true;" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\t" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */\t\t" + NL + "\t\tstatic AcceptAllMatcher acceptAllMatcher() {" + NL + "\t\t\treturn AcceptAllMatcher.INSTANCE;" + NL + "\t\t}" + NL + "\t} // end of ElementSelectors" + NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final String modelID = genDiagram.getEditorGen().getModelID(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + importManager.emitPackageStatement(stringBuffer); +importManager.addImport("org.eclipse.emf.ecore.EClass"); +importManager.addImport("org.eclipse.emf.ecore.EObject"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram"); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_4); + stringBuffer.append(genDiagram.getVisualIDRegistryClassName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(genDiagram.getVisualIDRegistryClassName()); + stringBuffer.append(TEXT_6); + stringBuffer.append(genDiagram.getVisualIDRegistryClassName()); + stringBuffer.append(TEXT_7); + +if (genDiagram.getDomainDiagramElement() != null) { /*we do not support diagrams without domain elements in other places, but keep this copy-pasted occurrence*/ + String classifierAccessorName = genDiagram.getDomainDiagramElement().getClassifierAccessorName(); + String interfaceName = importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName()); + + stringBuffer.append(TEXT_8); + stringBuffer.append(genDiagram.getMetaPackageName(importManager)); + stringBuffer.append(TEXT_9); + stringBuffer.append(classifierAccessorName); + stringBuffer.append(TEXT_10); + stringBuffer.append(genDiagram.getUniqueIdentifier()); + stringBuffer.append(TEXT_11); + stringBuffer.append(interfaceName); + stringBuffer.append(TEXT_12); + stringBuffer.append(genDiagram.getVisualID()); + stringBuffer.append(TEXT_13); + } + stringBuffer.append(TEXT_14); + stringBuffer.append(modelID); + stringBuffer.append(TEXT_15); + stringBuffer.append(modelID); + stringBuffer.append(TEXT_16); + stringBuffer.append(genDiagram.getVisualID()); + stringBuffer.append(TEXT_17); + +Collection nodeContainers = new ArrayList(genDiagram.getCompartments()); +nodeContainers.add(genDiagram); +for(Iterator it = nodeContainers.iterator(); it.hasNext(); ) { + GenContainerBase nextContainer = (GenContainerBase) it.next(); + + stringBuffer.append(TEXT_18); + stringBuffer.append(nextContainer.getVisualID()); + stringBuffer.append(TEXT_19); + + for (Iterator childNodes = nextContainer.getContainedNodes().iterator(); childNodes.hasNext(); ) { + GenNode childNode = (GenNode) childNodes.next(); + final String classifierAccessorName = childNode.getDomainMetaClass().getClassifierAccessorName(); + final String interfaceName = importManager.getImportedName(childNode.getDomainMetaClass().getQualifiedInterfaceName()); + final String semanticPackageInterfaceName = importManager.getImportedName(childNode.getDomainMetaClass().getGenPackage().getQualifiedPackageInterfaceName()); + + stringBuffer.append(TEXT_20); + stringBuffer.append(semanticPackageInterfaceName); + stringBuffer.append(TEXT_21); + stringBuffer.append(classifierAccessorName); + stringBuffer.append(TEXT_22); + stringBuffer.append(childNode.getUniqueIdentifier()); + stringBuffer.append(TEXT_23); + stringBuffer.append(interfaceName); + stringBuffer.append(TEXT_24); + stringBuffer.append(childNode.getVisualID()); + stringBuffer.append(TEXT_25); + + } + + stringBuffer.append(TEXT_26); + stringBuffer.append(nextContainer.getUniqueIdentifier()); + stringBuffer.append(TEXT_27); + +} + + stringBuffer.append(TEXT_28); + +for (Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) { + GenLink genLink = (GenLink) it.next(); + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + final TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + final String semanticLinkInterfaceName = modelFacet.getMetaClass().getClassifierAccessorName(); + final String interfaceName = importManager.getImportedName(modelFacet.getMetaClass().getQualifiedInterfaceName()); + final String semanticPackageInterfaceName = importManager.getImportedName(modelFacet.getMetaClass().getGenPackage().getQualifiedPackageInterfaceName()); + + stringBuffer.append(TEXT_29); + stringBuffer.append(semanticPackageInterfaceName); + stringBuffer.append(TEXT_30); + stringBuffer.append(semanticLinkInterfaceName); + stringBuffer.append(TEXT_31); + stringBuffer.append(genLink.getUniqueIdentifier()); + stringBuffer.append(TEXT_32); + stringBuffer.append(interfaceName); + stringBuffer.append(TEXT_33); + stringBuffer.append(genLink.getVisualID()); + stringBuffer.append(TEXT_34); + + } +} + + stringBuffer.append(TEXT_35); + if (genDiagram.getDomainDiagramElement() != null) { + stringBuffer.append(TEXT_36); + stringBuffer.append(genDiagram.getUniqueIdentifier()); + stringBuffer.append(TEXT_37); + stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_38); + } + stringBuffer.append(TEXT_39); + +String acceptAllMatcherAccessor = "acceptAllMatcher()"; //$NON-NLS-1$ +for (Iterator nodes = genDiagram.getAllNodes().iterator(); nodes.hasNext();) { + GenNode nextNode = (GenNode) nodes.next(); + String qualifiedChildNodeInterfaceName = nextNode.getDomainMetaClass().getQualifiedInterfaceName(); + String childNodeSelector = nextNode.getModelFacet() != null && nextNode.getModelFacet().getModelElementSelector() != null ? nextNode.getUniqueIdentifier() : acceptAllMatcherAccessor; + + stringBuffer.append(TEXT_40); + stringBuffer.append(nextNode.getUniqueIdentifier()); + stringBuffer.append(TEXT_41); + stringBuffer.append(importManager.getImportedName(qualifiedChildNodeInterfaceName)); + stringBuffer.append(TEXT_42); + stringBuffer.append(childNodeSelector); + stringBuffer.append(TEXT_43); + +} +for (Iterator containers = nodeContainers.iterator(); containers.hasNext();) { + GenContainerBase nextContainer = (GenContainerBase) containers.next(); + + stringBuffer.append(TEXT_44); + stringBuffer.append(nextContainer.getUniqueIdentifier()); + stringBuffer.append(TEXT_45); + +} + + stringBuffer.append(TEXT_46); + +for (Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) { + GenLink genLink = (GenLink) it.next(); + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + String interfaceName = importManager.getImportedName(modelFacet.getMetaClass().getQualifiedInterfaceName()); + String linkSelector = modelFacet.getModelElementSelector() != null ? genLink.getUniqueIdentifier() : acceptAllMatcherAccessor; + + stringBuffer.append(TEXT_47); + stringBuffer.append(genLink.getUniqueIdentifier()); + stringBuffer.append(TEXT_48); + stringBuffer.append(interfaceName); + stringBuffer.append(TEXT_49); + stringBuffer.append(linkSelector); + stringBuffer.append(TEXT_50); + + } +} + + stringBuffer.append(TEXT_51); + stringBuffer.append(TEXT_52); + stringBuffer.append(TEXT_53); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_54); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_55); + stringBuffer.append(TEXT_56); + stringBuffer.append(TEXT_57); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_58); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_59); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())); + stringBuffer.append(TEXT_60); + +int selectorCounter = 0; +for (Iterator it = genDiagram.eAllContents(); it.hasNext();) { + Object next = it.next(); + String id = null; + TypeModelFacet modelFacet = null; + if (next instanceof GenNode) { + id = ((GenNode) next).getUniqueIdentifier(); + modelFacet = ((GenNode) next).getModelFacet(); + } else if (next instanceof GenLink && ((GenLink) next).getModelFacet() instanceof TypeLinkModelFacet) { + id = ((GenLink) next).getUniqueIdentifier(); + modelFacet = (TypeLinkModelFacet) ((GenLink) next).getModelFacet(); + } + if (modelFacet == null || modelFacet.getModelElementSelector() == null) { + continue; + } + GenConstraint selector = modelFacet.getModelElementSelector(); + selectorCounter++; + + stringBuffer.append(TEXT_61); + stringBuffer.append(id); + stringBuffer.append(TEXT_62); + stringBuffer.append(selector.getLanguage()); + stringBuffer.append(TEXT_63); + stringBuffer.append(selector.getBody()); + stringBuffer.append(TEXT_64); + stringBuffer.append(id); + stringBuffer.append(TEXT_65); + stringBuffer.append(selector.getBody()); + stringBuffer.append(TEXT_66); + } + stringBuffer.append(TEXT_67); + if(selectorCounter > 0) { + stringBuffer.append(TEXT_68); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.query.ocl.conditions.OCLConstraintCondition")); + stringBuffer.append(TEXT_69); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())); + stringBuffer.append(TEXT_70); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.query.ocl.conditions.OCLConstraintCondition")); + stringBuffer.append(TEXT_71); + } + stringBuffer.append(TEXT_72); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: templates/parts/refreshers.javajetinc/bounds.javajetinc =================================================================== RCS file: templates/parts/refreshers.javajetinc/bounds.javajetinc diff -N templates/parts/refreshers.javajetinc/bounds.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshers.javajetinc/bounds.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,10 @@ + Refresher boundsRefresher = new Refresher() { + public void refresh() { + refreshBounds(); + } + }; + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getNode_LayoutConstraint(), boundsRefresher); + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getSize_Width(), boundsRefresher); + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getSize_Height(), boundsRefresher); + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getLocation_X(), boundsRefresher); + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getLocation_Y(), boundsRefresher); Index: templates/providers/LabelViewFactory.javajet =================================================================== RCS file: templates/providers/LabelViewFactory.javajet diff -N templates/providers/LabelViewFactory.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/providers/LabelViewFactory.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,38 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers" class="LabelViewFactoryGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> +<% +GenCommonBase genElement = (GenCommonBase) ((Object[]) argument)[0]; +GenDiagram genDiagram = genElement.getDiagram(); +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> +<%importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genElement.getNotationViewFactoryClassName()%> { + /** + * @generated + */ + public static void decorateView(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) { +<%@ include file="createVIDAnnotation.jetinc"%> +<% +if (genElement instanceof GenLabel) { +%> + view.setType("<%=genElement.getUniqueIdentifier()%>SemanticHint"); +<% +}/*genElement is a pure label*/ +if (genElement instanceof GenLinkLabel) { +%> + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Location")%> location = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createLocation(); + ((<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>)view).setLayoutConstraint(location); +<% +} +%> + } +} +<%importManager.emitSortedImports();%> Index: .cvsignore =================================================================== RCS file: .cvsignore diff -N .cvsignore --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ .cvsignore 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,1 @@ +bin Index: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/NodeLabelEditPartGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/NodeLabelEditPartGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/parts/NodeLabelEditPartGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/parts/NodeLabelEditPartGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,767 @@ +package org.eclipse.gmf.codegen.templates.lite.parts; + +import java.util.*; +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; +import org.eclipse.emf.ecore.*; + +public class NodeLabelEditPartGenerator +{ + protected static String nl; + public static synchronized NodeLabelEditPartGenerator create(String lineSeparator) + { + nl = lineSeparator; + NodeLabelEditPartGenerator result = new NodeLabelEditPartGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL; + protected final String TEXT_5 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_6 = " extends "; + protected final String TEXT_7 = " {"; + protected final String TEXT_8 = NL; + protected final String TEXT_9 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_10 = " manager;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate String defaultText;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_11 = "(View view) {" + NL + "\t\tsetModel(view);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void createEditPolicies() {"; + protected final String TEXT_12 = NL; + protected final String TEXT_13 = "\t\tinstallEditPolicy("; + protected final String TEXT_14 = ".DIRECT_EDIT_ROLE," + NL + "\t\t\t\tnew "; + protected final String TEXT_15 = "() {" + NL + "\t\t\t\t\tprotected void showCurrentEditValue("; + protected final String TEXT_16 = " request) {" + NL + "\t\t\t\t\t\tString value = (String) request.getCellEditor().getValue();" + NL + "\t\t\t\t\t\tgetLabel().setText(value);" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tprotected "; + protected final String TEXT_17 = " getDirectEditCommand("; + protected final String TEXT_18 = " request) {" + NL + "\t\t\t\t\t\tString value = (String) request.getCellEditor().getValue();" + NL + "\t\t\t\t\t\tif (value == null) {" + NL + "\t\t\t\t\t\t\t//Invalid value is transformed into a null by the validator." + NL + "\t\t\t\t\t\t\t//XXX: implement validator" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_19 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\tfinal Object[] parseResult;" + NL + "\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\tparseResult = new "; + protected final String TEXT_20 = "(EDIT_PATTERN).parse(value);" + NL + "\t\t\t\t\t\t} catch (IllegalArgumentException e) {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_21 = ".INSTANCE;" + NL + "\t\t\t\t\t\t} catch ("; + protected final String TEXT_22 = " e) {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_23 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}"; + protected final String TEXT_24 = NL + "\t\t\t\t\t\tif (parseResult.length != 1) {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_25 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new "; + protected final String TEXT_26 = "() {" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_27 = " element = "; + protected final String TEXT_28 = ";" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_29 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_30 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_31 = " domainModelEditDomain = "; + protected final String TEXT_32 = ".getEditingDomainFor("; + protected final String TEXT_33 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_34 = " feature = ("; + protected final String TEXT_35 = ") "; + protected final String TEXT_36 = ".eINSTANCE.get"; + protected final String TEXT_37 = "();" + NL + "\t\t\t\t\t\t\t\tObject valueToSet;" + NL + "\t\t\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\t\t\tvalueToSet = "; + protected final String TEXT_38 = ".parseValue(feature, parseResult[0]);" + NL + "\t\t\t\t\t\t\t\t} catch (IllegalArgumentException e) {" + NL + "\t\t\t\t\t\t\t\t\treturn "; + protected final String TEXT_39 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}"; + protected final String TEXT_40 = NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_41 = " result = new "; + protected final String TEXT_42 = "();" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_43 = " values = new "; + protected final String TEXT_44 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get"; + protected final String TEXT_45 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_46 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_47 = ".create(domainModelEditDomain, element, feature, valueToSet));" + NL + "\t\t\t\t\t\t\t\treturn result;"; + protected final String TEXT_48 = NL + "\t\t\t\t\t\t\t\treturn "; + protected final String TEXT_49 = ".create(domainModelEditDomain, element, feature, valueToSet);"; + protected final String TEXT_50 = NL + "\t\t\t\t\t\t\t}"; + protected final String TEXT_51 = NL + "\t\t\t\t\t\tif (parseResult.length != "; + protected final String TEXT_52 = ") {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_53 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new "; + protected final String TEXT_54 = "() {" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_55 = " element = "; + protected final String TEXT_56 = ";" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_57 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_58 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_59 = " domainModelEditDomain = "; + protected final String TEXT_60 = ".getEditingDomainFor("; + protected final String TEXT_61 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_62 = " result = new "; + protected final String TEXT_63 = "();" + NL + "\t\t\t\t\t\t\t\tObject valueToSet;"; + protected final String TEXT_64 = NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_65 = " "; + protected final String TEXT_66 = "feature = ("; + protected final String TEXT_67 = ") "; + protected final String TEXT_68 = ".eINSTANCE.get"; + protected final String TEXT_69 = "();" + NL + "\t\t\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\t\t\tvalueToSet = "; + protected final String TEXT_70 = ".parseValue(feature, parseResult["; + protected final String TEXT_71 = "]);" + NL + "\t\t\t\t\t\t\t\t} catch (IllegalArgumentException e) {" + NL + "\t\t\t\t\t\t\t\t\treturn "; + protected final String TEXT_72 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}"; + protected final String TEXT_73 = NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_74 = " "; + protected final String TEXT_75 = "values = new "; + protected final String TEXT_76 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get"; + protected final String TEXT_77 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_78 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_79 = ".create(domainModelEditDomain, element, feature, valueToSet));"; + protected final String TEXT_80 = NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_81 = ".create(domainModelEditDomain, element, feature, valueToSet));"; + protected final String TEXT_82 = NL + "\t\t\t\t\t\t\t\treturn result;" + NL + "\t\t\t\t\t\t\t}"; + protected final String TEXT_83 = NL + "\t\t\t\t\t\t\tpublic void undo() {" + NL + "\t\t\t\t\t\t\t\tdomainModelCommand.undo();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t\tpublic void execute() {" + NL + "\t\t\t\t\t\t\t\tdomainModelCommand.execute();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t\tpublic boolean canUndo() {" + NL + "\t\t\t\t\t\t\t\treturn element != null && domainModelCommand != null && domainModelCommand.canUndo();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t\tpublic boolean canExecute() {" + NL + "\t\t\t\t\t\t\t\treturn element != null && domainModelCommand != null && domainModelCommand.canExecute();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t};" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t});" + NL + "\t}" + NL; + protected final String TEXT_84 = NL; + protected final String TEXT_85 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void performRequest("; + protected final String TEXT_86 = " req) {" + NL + "\t\tif ("; + protected final String TEXT_87 = ".REQ_DIRECT_EDIT == req.getType()) {" + NL + "\t\t\tperformDirectEdit();" + NL + "\t\t} else {" + NL + "\t\t\tsuper.performRequest(req);" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_88 = " getManager() {" + NL + "\t\tif (manager == null) {" + NL + "\t\t\tmanager = new "; + protected final String TEXT_89 = "(this, "; + protected final String TEXT_90 = ".class, new "; + protected final String TEXT_91 = "() {" + NL + "\t\t\t\tpublic void relocate("; + protected final String TEXT_92 = " celleditor) {" + NL + "\t\t\t\t\t"; + protected final String TEXT_93 = " rect = getLabel().getTextBounds();" + NL + "\t\t\t\t\tgetLabel().translateToAbsolute(rect);" + NL + "\t\t\t\t\tcelleditor.getControl().setBounds(rect.x, rect.y, rect.width, rect.height);" + NL + "\t\t\t\t}" + NL + "\t\t\t}) {" + NL + "\t\t\t\tprotected void initCellEditor() {" + NL + "\t\t\t\t\tgetCellEditor().setValue(getLabelEditText());" + NL + "\t\t\t\t}" + NL + "\t\t\t};" + NL + "\t\t}" + NL + "\t\treturn manager;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void performDirectEdit() {" + NL + "\t\tgetManager().show();" + NL + "\t}" + NL + "" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshVisuals() {" + NL + "\t\tsuper.refreshVisuals();" + NL + "\t\trefreshLabel();" + NL + "\t\trefreshFont();" + NL + "\t\trefreshFontColor();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshLabel() {" + NL + "\t\tgetLabel().setText(getLabelText());" + NL + "\t\tgetLabel().setIcon(getLabelIcon());" + NL + "\t}" + NL; + protected final String TEXT_94 = NL; + protected final String TEXT_95 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String VIEW_PATTERN = \""; + protected final String TEXT_96 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String EDIT_PATTERN = \""; + protected final String TEXT_97 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String getLabelText() {" + NL + "\t\t"; + protected final String TEXT_98 = " element = "; + protected final String TEXT_99 = ";" + NL + "\t\tif (element == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}" + NL + "\t\treturn buildTextByPattern(element, VIEW_PATTERN);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String getLabelEditText() {" + NL + "\t\t"; + protected final String TEXT_100 = " element = "; + protected final String TEXT_101 = ";" + NL + "\t\tif (element == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}" + NL + "\t\treturn buildTextByPattern(element, EDIT_PATTERN);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String buildTextByPattern("; + protected final String TEXT_102 = " element, String pattern) {"; + protected final String TEXT_103 = NL + "\t\tif (element.get"; + protected final String TEXT_104 = "() == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}"; + protected final String TEXT_105 = NL + "\t\treturn "; + protected final String TEXT_106 = ".format(pattern, new Object[] {"; + protected final String TEXT_107 = NL + "\t\t\t"; + protected final String TEXT_108 = NL + "\t\t});"; + protected final String TEXT_109 = NL + "\t\treturn "; + protected final String TEXT_110 = ".format(pattern, new Object[] {"; + protected final String TEXT_111 = NL + "\t\t"; + protected final String TEXT_112 = ","; + protected final String TEXT_113 = NL + "\t\t});"; + protected final String TEXT_114 = NL + "\t\t//XXX: unexpected model facet." + NL + "\t\treturn defaultText;"; + protected final String TEXT_115 = NL + "\t}"; + protected final String TEXT_116 = NL; + protected final String TEXT_117 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFont() {" + NL + "\t\t"; + protected final String TEXT_118 = " style =" + NL + "\t\t\t("; + protected final String TEXT_119 = ") "; + protected final String TEXT_120 = ".getStyle(" + NL + "\t\t\t\t"; + protected final String TEXT_121 = ".eINSTANCE.getFontStyle());" + NL + "\t\t"; + protected final String TEXT_122 = " toDispose = createdFont;" + NL + "\t\tif (style != null) {" + NL + "\t\t\tString fontName = style.getFontName();" + NL + "\t\t\tint fontHeight = style.getFontHeight();" + NL + "\t\t\tint fontStyle = "; + protected final String TEXT_123 = ".NORMAL;" + NL + "\t\t\tif (style.isBold()) {" + NL + "\t\t\t\tfontStyle |= "; + protected final String TEXT_124 = ".BOLD;" + NL + "\t\t\t}" + NL + "\t\t\tif (style.isItalic()) {" + NL + "\t\t\t\tfontStyle |= "; + protected final String TEXT_125 = ".ITALIC;" + NL + "\t\t\t}" + NL + "\t\t\t"; + protected final String TEXT_126 = " currentFont = getFigure().getFont();" + NL + "\t\t\tif (currentFont != null) {" + NL + "\t\t\t\t"; + protected final String TEXT_127 = " currentFontData = currentFont.getFontData()[0];" + NL + "\t\t\t\tif (currentFontData.getName().equals(fontName) && currentFontData.getHeight() == fontHeight && currentFontData.getStyle() == fontStyle) {" + NL + "\t\t\t\t\treturn;" + NL + "\t\t\t\t}" + NL + "\t\t\t}" + NL + "\t\t\tcreatedFont = new "; + protected final String TEXT_128 = "(null, fontName, fontHeight, fontStyle);" + NL + "\t\t\tgetFigure().setFont(createdFont);" + NL + "\t\t} else {" + NL + "\t\t\t//revert to the default font" + NL + "\t\t\tgetFigure().setFont(getViewer().getControl().getFont());" + NL + "\t\t\tcreatedFont = null;" + NL + "\t\t}" + NL + "\t\tif (toDispose != null) {" + NL + "\t\t\ttoDispose.dispose();" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * The font (created by {@link #refreshFont()}) currently assigned to the label (unless the default font is assigned)." + NL + "\t * Whenever another non-default font is assigned to it, it is safe to dispose the previous one." + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_129 = " createdFont;"; + protected final String TEXT_130 = NL; + protected final String TEXT_131 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFontColor() {" + NL + "\t\t"; + protected final String TEXT_132 = " style = ("; + protected final String TEXT_133 = ") "; + protected final String TEXT_134 = ".getStyle("; + protected final String TEXT_135 = ".eINSTANCE.getFontStyle());" + NL + "\t\t"; + protected final String TEXT_136 = " toDispose = createdFontColor;" + NL + "\t\tif (style != null) {" + NL + "\t\t\tint fontColor = style.getFontColor();" + NL + "\t\t\tint red = fontColor & 0x000000FF;" + NL + "\t\t\tint green = (fontColor & 0x0000FF00) >> 8;" + NL + "\t\t\tint blue = (fontColor & 0x00FF0000) >> 16;" + NL + "\t\t\t"; + protected final String TEXT_137 = " currentColor = getLabel().getForegroundColor();" + NL + "\t\t\tif (currentColor != null && currentColor.getRed() == red && currentColor.getGreen() == green && currentColor.getBlue() == blue) {" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t\tcreatedFontColor = new "; + protected final String TEXT_138 = "(null, red, green, blue);" + NL + "\t\t\tgetFigure().setForegroundColor(createdFontColor);" + NL + "\t\t} else {" + NL + "\t\t\tgetFigure().setForegroundColor(getViewer().getControl().getForeground());" + NL + "\t\t\tcreatedFontColor = null;" + NL + "\t\t}" + NL + "\t\tif (toDispose != null) {" + NL + "\t\t\ttoDispose.dispose();" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * The color (created by {@link #refreshFontColor()}) currently assigned to the label." + NL + "\t * Whenever another color is assigned to it, it is safe to dispose the previous one." + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_139 = " createdFontColor;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_140 = " getLabelIcon() {" + NL + "\t\t"; + protected final String TEXT_141 = " element = resolveSemanticElement();" + NL + "\t\t"; + protected final String TEXT_142 = " imageDescriptor = "; + protected final String TEXT_143 = ".getInstance().getItemImageDescriptor(element);" + NL + "\t\tif (imageDescriptor != null) {" + NL + "\t\t\treturn imageDescriptor.createImage();" + NL + "\t\t}" + NL + "\t\treturn "; + protected final String TEXT_144 = ".getMissingImageDescriptor().createImage();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_145 = " resolveSemanticElement() {" + NL + "\t\tfor(EditPart editPart = this; editPart != null; editPart = editPart.getParent()) {" + NL + "\t\t\tView view = (View)editPart.getModel();" + NL + "\t\t\tif (view != null && view.getElement() != null) {" + NL + "\t\t\t\treturn ("; + protected final String TEXT_146 = ") view.getElement();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_147 = " getUpdatableParent() {" + NL + "\t\tfor(EditPart editPart = getParent(); editPart != null; editPart = editPart.getParent()) {" + NL + "\t\t\tif (editPart instanceof "; + protected final String TEXT_148 = ") {" + NL + "\t\t\t\treturn ("; + protected final String TEXT_149 = ") editPart;" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void activate() {" + NL + "\t\tsuper.activate();" + NL + "\t\t"; + protected final String TEXT_150 = " updatableParent = getUpdatableParent();" + NL + "\t\tif (updatableParent != null) {" + NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_151 = ".eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);" + NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_152 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_153 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_154 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_155 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);"; + protected final String TEXT_156 = NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_157 = ".eINSTANCE.get"; + protected final String TEXT_158 = "(), labelRefresher);"; + protected final String TEXT_159 = NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_160 = ".eINSTANCE.get"; + protected final String TEXT_161 = "(), labelRefresher);"; + protected final String TEXT_162 = NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void deactivate() {" + NL + "\t\tsuper.deactivate();" + NL + "\t\t"; + protected final String TEXT_163 = " updatableParent = getUpdatableParent();" + NL + "\t\tif (updatableParent != null) {" + NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_164 = ".eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_165 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_166 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_167 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_168 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);"; + protected final String TEXT_169 = NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_170 = ".eINSTANCE.get"; + protected final String TEXT_171 = "(), labelRefresher);"; + protected final String TEXT_172 = NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_173 = ".eINSTANCE.get"; + protected final String TEXT_174 = "(), labelRefresher);"; + protected final String TEXT_175 = NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate IUpdatableEditPart.Refresher labelRefresher = new IUpdatableEditPart.Refresher() {" + NL + "\t\tpublic void refresh() {" + NL + "\t\t\trefreshLabel();" + NL + "\t\t}" + NL + "\t};" + NL + "" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate IUpdatableEditPart.Refresher fontColorRefresher = new IUpdatableEditPart.Refresher() {" + NL + "\t\tpublic void refresh() {" + NL + "\t\t\trefreshFontColor();" + NL + "\t\t}" + NL + "\t};" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate IUpdatableEditPart.Refresher fontRefresher = new IUpdatableEditPart.Refresher() {" + NL + "\t\tpublic void refresh() {" + NL + "\t\t\trefreshFont();" + NL + "\t\t}" + NL + "\t};"; + protected final String TEXT_176 = NL; + protected final String TEXT_177 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_178 = " createFigure() {" + NL + "\t\t"; + protected final String TEXT_179 = " label = createLabel();" + NL + "\t\tdefaultText = label.getText();" + NL + "\t\treturn label;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_180 = " createLabel() {"; + protected final String TEXT_181 = NL + "\t\treturn new "; + protected final String TEXT_182 = "();"; + protected final String TEXT_183 = NL + "\t\treturn "; + protected final String TEXT_184 = ";"; + protected final String TEXT_185 = NL + "\t\treturn new "; + protected final String TEXT_186 = "();"; + protected final String TEXT_187 = NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_188 = " getLabel() {" + NL + "\t\treturn ("; + protected final String TEXT_189 = ") getFigure();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void setLabel("; + protected final String TEXT_190 = " figure) {" + NL + "\t\tunregisterVisuals();" + NL + "\t\tsetFigure(figure);" + NL + "\t\tdefaultText = figure.getText();" + NL + "\t\tregisterVisuals();" + NL + "\t\trefreshVisuals();" + NL + "\t}" + NL; + protected final String TEXT_191 = NL; + protected final String TEXT_192 = NL; + protected final String TEXT_193 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static class MapModeWorkaround {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic int DPtoLP(int dp) {" + NL + "\t\t\treturn dp;" + NL + "\t\t}" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic static MapModeWorkaround INSTANCE = new MapModeWorkaround();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate MapModeWorkaround getMapMode() {" + NL + "\t\treturn MapModeWorkaround.INSTANCE;" + NL + "\t}"; + protected final String TEXT_194 = NL + "}"; + protected final String TEXT_195 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenNodeLabel genLabel = (GenNodeLabel) ((Object[]) argument)[0]; +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +GenNode genHost = genLabel.getNode(); +GenClass underlyingMetaClass = genHost.getDomainMetaClass(); +GenDiagram genDiagram = genLabel.getDiagram(); +LabelModelFacet labelModelFacet = genLabel.getModelFacet(); + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + importManager.emitPackageStatement(stringBuffer); + stringBuffer.append(TEXT_4); + +importManager.addImport("org.eclipse.gef.EditPart"); +importManager.addImport("org.eclipse.gef.EditPolicy"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_5); + stringBuffer.append(genLabel.getEditPartClassName()); + stringBuffer.append(TEXT_6); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")); + stringBuffer.append(TEXT_7); + stringBuffer.append(TEXT_8); + stringBuffer.append(TEXT_9); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")); + stringBuffer.append(TEXT_10); + stringBuffer.append(genLabel.getEditPartClassName()); + stringBuffer.append(TEXT_11); + + final String primaryView = "getUpdatableParent().getDiagramNode()"; + final String resolvedSemanticElement = "resolveSemanticElement()"; + + stringBuffer.append(TEXT_12); + stringBuffer.append(TEXT_13); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_14); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.DirectEditPolicy")); + stringBuffer.append(TEXT_15); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest")); + stringBuffer.append(TEXT_16); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_17); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest")); + stringBuffer.append(TEXT_18); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_19); + stringBuffer.append(importManager.getImportedName("java.text.MessageFormat")); + stringBuffer.append(TEXT_20); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_21); + stringBuffer.append(importManager.getImportedName("java.text.ParseException")); + stringBuffer.append(TEXT_22); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_23); + +if (labelModelFacet instanceof FeatureLabelModelFacet && !genLabel.isReadOnly()) { + GenFeature featureToSet = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); + EStructuralFeature ecoreFeature = featureToSet.getEcoreFeature(); + + stringBuffer.append(TEXT_24); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_25); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_26); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_27); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_28); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_29); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_30); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")); + stringBuffer.append(TEXT_31); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_32); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_33); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_34); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_35); + stringBuffer.append(importManager.getImportedName(featureToSet.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_36); + stringBuffer.append(featureToSet.getFeatureAccessorName()); + stringBuffer.append(TEXT_37); + stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName())); + stringBuffer.append(TEXT_38); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")); + stringBuffer.append(TEXT_39); + + if (ecoreFeature.isMany()) { + + stringBuffer.append(TEXT_40); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_41); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_42); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList")); + stringBuffer.append(TEXT_43); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")); + stringBuffer.append(TEXT_44); + stringBuffer.append(featureToSet.getAccessorName()); + stringBuffer.append(TEXT_45); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_46); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand")); + stringBuffer.append(TEXT_47); + + } else { + + stringBuffer.append(TEXT_48); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_49); + + } + + stringBuffer.append(TEXT_50); + +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + List metaFeatures = compositeFeatureLabelModelFacet.getMetaFeatures(); + + stringBuffer.append(TEXT_51); + stringBuffer.append(metaFeatures.size()); + stringBuffer.append(TEXT_52); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_53); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_54); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_55); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_56); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_57); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_58); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")); + stringBuffer.append(TEXT_59); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_60); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_61); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_62); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_63); + + boolean haveDeclaredValues = false; + for(int i = 0; i < metaFeatures.size(); i++) { + GenFeature nextFeatureToSet = (GenFeature) metaFeatures.get(i); + EStructuralFeature nextEcoreFeature = nextFeatureToSet.getEcoreFeature(); + + stringBuffer.append(TEXT_64); + if (i == 0) { + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_65); + } + stringBuffer.append(TEXT_66); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_67); + stringBuffer.append(importManager.getImportedName(nextFeatureToSet.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_68); + stringBuffer.append(nextFeatureToSet.getFeatureAccessorName()); + stringBuffer.append(TEXT_69); + stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName())); + stringBuffer.append(TEXT_70); + stringBuffer.append(i); + stringBuffer.append(TEXT_71); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")); + stringBuffer.append(TEXT_72); + + if (nextEcoreFeature.isMany()) { + + stringBuffer.append(TEXT_73); + if (!haveDeclaredValues) { haveDeclaredValues = true; + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList")); + stringBuffer.append(TEXT_74); + } + stringBuffer.append(TEXT_75); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")); + stringBuffer.append(TEXT_76); + stringBuffer.append(nextFeatureToSet.getAccessorName()); + stringBuffer.append(TEXT_77); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_78); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand")); + stringBuffer.append(TEXT_79); + + } else { + + stringBuffer.append(TEXT_80); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_81); + + } + + + } + + stringBuffer.append(TEXT_82); + +} + + stringBuffer.append(TEXT_83); + stringBuffer.append(TEXT_84); + stringBuffer.append(TEXT_85); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request")); + stringBuffer.append(TEXT_86); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants")); + stringBuffer.append(TEXT_87); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")); + stringBuffer.append(TEXT_88); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")); + stringBuffer.append(TEXT_89); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.TextCellEditor")); + stringBuffer.append(TEXT_90); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.CellEditorLocator")); + stringBuffer.append(TEXT_91); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.CellEditor")); + stringBuffer.append(TEXT_92); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")); + stringBuffer.append(TEXT_93); + stringBuffer.append(TEXT_94); + +/*genFeature.getObjectType() throws NPE on primitive types. This is a workaround. */ +HashMap primitiveTypeToWrapperClassName = new HashMap(); +primitiveTypeToWrapperClassName.put(Boolean.TYPE, "Boolean"); +primitiveTypeToWrapperClassName.put(Byte.TYPE, "Byte"); +primitiveTypeToWrapperClassName.put(Character.TYPE, "Character"); +primitiveTypeToWrapperClassName.put(Double.TYPE, "Double"); +primitiveTypeToWrapperClassName.put(Float.TYPE, "Float"); +primitiveTypeToWrapperClassName.put(Integer.TYPE, "Integer"); +primitiveTypeToWrapperClassName.put(Long.TYPE, "Long"); +primitiveTypeToWrapperClassName.put(Short.TYPE, "Short"); +String viewPattern = null; +String editPattern = null; +if (labelModelFacet instanceof FeatureLabelModelFacet) { + FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet; + viewPattern = featureLabelModelFacet.getViewPattern(); + if (viewPattern == null || viewPattern.length() == 0) { + viewPattern = "{0}"; + } + editPattern = featureLabelModelFacet.getEditPattern(); + if (editPattern == null || editPattern.length() == 0) { + editPattern = "{0}"; + } +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + viewPattern = compositeFeatureLabelModelFacet.getViewPattern(); + if (viewPattern == null || viewPattern.length() == 0) { + StringBuffer patternBuffer = new StringBuffer(); + for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) { + patternBuffer.append("{").append(i).append("} "); + } + viewPattern = patternBuffer.toString().trim(); + } + editPattern = compositeFeatureLabelModelFacet.getEditPattern(); + if (editPattern == null || editPattern.length() == 0) { + StringBuffer patternBuffer = new StringBuffer(); + for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) { + patternBuffer.append("{").append(i).append("} "); + } + editPattern = patternBuffer.toString().trim(); + } +} + + stringBuffer.append(TEXT_95); + stringBuffer.append(viewPattern); + stringBuffer.append(TEXT_96); + stringBuffer.append(editPattern); + stringBuffer.append(TEXT_97); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_98); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_99); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_100); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_101); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_102); + +if (labelModelFacet instanceof FeatureLabelModelFacet) { + FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet; + GenFeature feature = featureLabelModelFacet.getMetaFeature(); + if (!feature.isPrimitiveType()) { + + stringBuffer.append(TEXT_103); + stringBuffer.append(feature.getCapName()); + stringBuffer.append(TEXT_104); + + } + + stringBuffer.append(TEXT_105); + stringBuffer.append(importManager.getImportedName("java.text.MessageFormat")); + stringBuffer.append(TEXT_106); + + String value = "element.get" + feature.getCapName() + "()"; /*XXX: getTypedKey is not a part of public API!*/ + if (feature.isPrimitiveType()) { + value = "new " + primitiveTypeToWrapperClassName.get(feature.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")"; + } + + stringBuffer.append(TEXT_107); + stringBuffer.append(value); + stringBuffer.append(TEXT_108); + +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + + stringBuffer.append(TEXT_109); + stringBuffer.append(importManager.getImportedName("java.text.MessageFormat")); + stringBuffer.append(TEXT_110); + + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); + String value = "element.get" + next.getCapName() + "()"; /*XXX: getTypedKey is not a part of public API!*/ + if (next.isPrimitiveType()) { + value = "new " + primitiveTypeToWrapperClassName.get(next.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")"; + } + + stringBuffer.append(TEXT_111); + stringBuffer.append(value); + if (it.hasNext()) { + stringBuffer.append(TEXT_112); + } + + } + + stringBuffer.append(TEXT_113); + +} else { + + stringBuffer.append(TEXT_114); + +} + + stringBuffer.append(TEXT_115); + stringBuffer.append(TEXT_116); + stringBuffer.append(TEXT_117); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_118); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_119); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_120); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_121); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_122); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_123); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_124); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_125); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_126); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.FontData")); + stringBuffer.append(TEXT_127); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_128); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_129); + stringBuffer.append(TEXT_130); + stringBuffer.append(TEXT_131); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_132); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_133); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_134); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_135); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_136); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_137); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_138); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_139); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Image")); + stringBuffer.append(TEXT_140); + stringBuffer.append(importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_141); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.resource.ImageDescriptor")); + stringBuffer.append(TEXT_142); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())); + stringBuffer.append(TEXT_143); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.resource.ImageDescriptor")); + stringBuffer.append(TEXT_144); + stringBuffer.append(importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_145); + stringBuffer.append(importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_146); + stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_147); + stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_148); + stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_149); + stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_150); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_151); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_152); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_153); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_154); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_155); + +if (labelModelFacet instanceof FeatureLabelModelFacet) { + GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); + + stringBuffer.append(TEXT_156); + stringBuffer.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_157); + stringBuffer.append(feature.getFeatureAccessorName()); + stringBuffer.append(TEXT_158); + +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); + + stringBuffer.append(TEXT_159); + stringBuffer.append(importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_160); + stringBuffer.append(next.getFeatureAccessorName()); + stringBuffer.append(TEXT_161); + + } +} + + stringBuffer.append(TEXT_162); + stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_163); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_164); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_165); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_166); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_167); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_168); + +if (labelModelFacet instanceof FeatureLabelModelFacet) { + GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); + + stringBuffer.append(TEXT_169); + stringBuffer.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_170); + stringBuffer.append(feature.getFeatureAccessorName()); + stringBuffer.append(TEXT_171); + +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); + + stringBuffer.append(TEXT_172); + stringBuffer.append(importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_173); + stringBuffer.append(next.getFeatureAccessorName()); + stringBuffer.append(TEXT_174); + + } +} + + stringBuffer.append(TEXT_175); + stringBuffer.append(TEXT_176); + stringBuffer.append(TEXT_177); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_178); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_179); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_180); + +String figureQualifiedClassName = null; +Viewmap viewmap = genLabel.getViewmap(); +if (viewmap instanceof FigureViewmap) { + figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName(); + if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) { + figureQualifiedClassName = "org.eclipse.draw2d.Label"; + } + + stringBuffer.append(TEXT_181); + stringBuffer.append(importManager.getImportedName(figureQualifiedClassName)); + stringBuffer.append(TEXT_182); + } // instanceof FigureViewmap + else if (viewmap instanceof SnippetViewmap) { + stringBuffer.append(TEXT_183); + stringBuffer.append(((SnippetViewmap) viewmap).getBody()); + stringBuffer.append(TEXT_184); + } // instanceof SnippetViewmap; FIXME : obtain figure class name to generate getter + else if (viewmap instanceof InnerClassViewmap) { + figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName(); + + stringBuffer.append(TEXT_185); + stringBuffer.append(figureQualifiedClassName); + stringBuffer.append(TEXT_186); + } + stringBuffer.append(TEXT_187); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_188); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_189); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_190); + +if (genLabel.getViewmap() instanceof InnerClassViewmap) { + String classBody = ((InnerClassViewmap) genLabel.getViewmap()).getClassBody(); + + stringBuffer.append(TEXT_191); + stringBuffer.append(classBody); + stringBuffer.append(TEXT_192); + +if (classBody.indexOf("DPtoLP") != -1) { + + stringBuffer.append(TEXT_193); + +} + + +} + + stringBuffer.append(TEXT_194); + importManager.emitSortedImports(); + stringBuffer.append(TEXT_195); + return stringBuffer.toString(); + } +} Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/CreationWizardGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/CreationWizardGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/CreationWizardGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/CreationWizardGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,68 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +import org.eclipse.emf.codegen.ecore.genmodel.*; +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; + +public class CreationWizardGenerator +{ + protected static String nl; + public static synchronized CreationWizardGenerator create(String lineSeparator) + { + nl = lineSeparator; + CreationWizardGenerator result = new CreationWizardGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_2 = " extends "; + protected final String TEXT_3 = " implements "; + protected final String TEXT_4 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\t private "; + protected final String TEXT_5 = " diagramFileURI;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\t private "; + protected final String TEXT_6 = " page;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void addPages() {" + NL + "\t\tsuper.addPages();" + NL + "\t\tif (page == null) {" + NL + "\t\t\tpage = new "; + protected final String TEXT_7 = "();" + NL + "\t\t}" + NL + "\t\taddPage(page);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void init(IWorkbench workbench, IStructuredSelection selection) {" + NL + "\t\tsetWindowTitle(\"New "; + protected final String TEXT_8 = " Diagram\"); //$NON-NLS-1$" + NL + "\t\tsetDefaultPageImageDescriptor("; + protected final String TEXT_9 = ".getBundledImageDescriptor(" + NL + "\t\t\t\"icons/full/wizban/New"; + protected final String TEXT_10 = ".gif\")); //$NON-NLS-1$" + NL + "\t\tsetNeedsProgressMonitor(true);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic boolean performFinish() {" + NL + "\t\tboolean retVal = page.finish();" + NL + "\t\tdiagramFileURI = page.getCreatedDiagramFileURI();" + NL + "\t\treturn retVal;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * returns the diagram file " + NL + "\t * @return URI the diagram file" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic final URI getDiagramFileURI() {" + NL + "\t\treturn diagramFileURI;" + NL + "\t}" + NL + "}"; + protected final String TEXT_11 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final GenModel genModel = genDiagram.getEditorGen().getDomainGenModel(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer); +importManager.addImport("org.eclipse.jface.viewers.IStructuredSelection"); +importManager.addImport("org.eclipse.ui.IWorkbench"); + + + stringBuffer.append(TEXT_1); + stringBuffer.append(genDiagram.getCreationWizardClassName()); + stringBuffer.append(TEXT_2); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.wizard.Wizard")); + stringBuffer.append(TEXT_3); + stringBuffer.append(importManager.getImportedName("org.eclipse.ui.INewWizard")); + stringBuffer.append(TEXT_4); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.URI")); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName(genDiagram.getCreationWizardPageQualifiedClassName())); + stringBuffer.append(TEXT_6); + stringBuffer.append(importManager.getImportedName(genDiagram.getCreationWizardPageQualifiedClassName())); + stringBuffer.append(TEXT_7); + stringBuffer.append(genModel.getModelName()); + stringBuffer.append(TEXT_8); + stringBuffer.append(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()); + stringBuffer.append(TEXT_9); + stringBuffer.append(genModel.getModelName()); + stringBuffer.append(TEXT_10); + importManager.emitSortedImports(); + stringBuffer.append(TEXT_11); + return stringBuffer.toString(); + } +} Index: templates/parts/refresher.javajetinc =================================================================== RCS file: templates/parts/refresher.javajetinc diff -N templates/parts/refresher.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refresher.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,15 @@ + /** + * @generated + */ + private <%=importManager.getImportedName("java.util.HashMap")%> structuralFeatures2Refresher; + + /** + * @generated + */ + public Refresher getRefresher(<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> feature, <%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> msg) { + if (structuralFeatures2Refresher == null) { + createRefreshers(); + } + return (Refresher) structuralFeatures2Refresher.get(feature); + } + Index: templates/editor/VisualIDRegistry.javajet =================================================================== RCS file: templates/editor/VisualIDRegistry.javajet diff -N templates/editor/VisualIDRegistry.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/VisualIDRegistry.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,370 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="VisualIDRegistryGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* java.util.* org.eclipse.gmf.common.codegen.*"%> +<% +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final String modelID = genDiagram.getEditorGen().getModelID(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> +<%importManager.emitPackageStatement(stringBuffer); +importManager.addImport("org.eclipse.emf.ecore.EClass"); +importManager.addImport("org.eclipse.emf.ecore.EObject"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram"); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * This registry is used to determine which type of visual object should be + * created for the corresponding Diagram, Node, ChildNode or Link represented + * by a domain model object. Note that it only returns semantically complete objects (those who must have an element associated with them). + * + * @generated + */ +public class <%=genDiagram.getVisualIDRegistryClassName()%> { + + public static final <%=genDiagram.getVisualIDRegistryClassName()%> INSTANCE = new <%=genDiagram.getVisualIDRegistryClassName()%>(); + + /** + * @generated + */ + public int getDiagramVisualID(EObject domainElement) { + if (domainElement == null) { + return -1; + } + EClass domainElementMetaclass = domainElement.eClass(); + return getDiagramVisualID(domainElement, domainElementMetaclass); + } + + /** + * @generated + */ + public int getDiagramVisualID(EObject domainElement, EClass domainElementMetaclass) { +<% +if (genDiagram.getDomainDiagramElement() != null) { /*we do not support diagrams without domain elements in other places, but keep this copy-pasted occurrence*/ + String classifierAccessorName = genDiagram.getDomainDiagramElement().getClassifierAccessorName(); + String interfaceName = importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName()); +%> + if (<%=genDiagram.getMetaPackageName(importManager)%>.eINSTANCE.get<%=classifierAccessorName%>().equals(domainElementMetaclass) && isDiagram<%=genDiagram.getUniqueIdentifier()%>((<%=interfaceName%>) domainElement)) { + return <%=genDiagram.getVisualID()%>; + } +<%}%> + return getUnrecognizedDiagramID(domainElement); + } + + /** + * @generated + */ + public int getNodeVisualID(View containerView, EObject domainElement) { + if (domainElement == null) { + return -1; + } + EClass domainElementMetaclass = domainElement.eClass(); + return getNodeVisualID(containerView, domainElement, domainElementMetaclass); + } + + /** + * @generated + */ + public int getNodeVisualID(View containerView, EObject domainElement, EClass domainElementMetaclass) { + String containerModelID = getModelID(containerView); + if (!"<%=modelID%>".equals(containerModelID)) { + return -1; + } + int containerVisualID; + if ("<%=modelID%>".equals(containerModelID)) { + containerVisualID = getVisualID(containerView); + } else { + if (containerView instanceof Diagram) { + containerVisualID = <%=genDiagram.getVisualID()%>; + } else { + return -1; + } + } + switch (containerVisualID) { +<% +Collection nodeContainers = new ArrayList(genDiagram.getCompartments()); +nodeContainers.add(genDiagram); +for(Iterator it = nodeContainers.iterator(); it.hasNext(); ) { + GenContainerBase nextContainer = (GenContainerBase) it.next(); +%> + case <%=nextContainer.getVisualID()%>: +<% + for (Iterator childNodes = nextContainer.getContainedNodes().iterator(); childNodes.hasNext(); ) { + GenNode childNode = (GenNode) childNodes.next(); + final String classifierAccessorName = childNode.getDomainMetaClass().getClassifierAccessorName(); + final String interfaceName = importManager.getImportedName(childNode.getDomainMetaClass().getQualifiedInterfaceName()); + final String semanticPackageInterfaceName = importManager.getImportedName(childNode.getDomainMetaClass().getGenPackage().getQualifiedPackageInterfaceName()); +%> + if (<%=semanticPackageInterfaceName%>.eINSTANCE.get<%=classifierAccessorName%>().isSuperTypeOf(domainElementMetaclass) && isNode<%=childNode.getUniqueIdentifier()%>((<%=interfaceName%>) domainElement)) { + return <%=childNode.getVisualID()%>; + } +<% + } +%> + return getUnrecognized<%=nextContainer.getUniqueIdentifier()%>ChildNodeID(domainElement); +<% +} +%> + } + return -1; + } + + /** + * @generated + */ + public int getLinkWithClassVisualID(EObject domainElement) { + EClass domainElementMetaclass = domainElement.eClass(); + return getLinkWithClassVisualID(domainElement, domainElementMetaclass); + } + + /** + * @generated + */ + public int getLinkWithClassVisualID(EObject domainElement, EClass domainElementMetaclass) { +<% +for (Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) { + GenLink genLink = (GenLink) it.next(); + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + final TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + final String semanticLinkInterfaceName = modelFacet.getMetaClass().getClassifierAccessorName(); + final String interfaceName = importManager.getImportedName(modelFacet.getMetaClass().getQualifiedInterfaceName()); + final String semanticPackageInterfaceName = importManager.getImportedName(modelFacet.getMetaClass().getGenPackage().getQualifiedPackageInterfaceName()); +%> + if (<%=semanticPackageInterfaceName%>.eINSTANCE.get<%=semanticLinkInterfaceName%>().isSuperTypeOf(domainElementMetaclass) && isLinkWithClass<%=genLink.getUniqueIdentifier()%>((<%=interfaceName%>) domainElement)) { + return <%=genLink.getVisualID()%>; + } +<% + } +} +%> + return getUnrecognizedLinkWithClassID(domainElement); + } + +<%if (genDiagram.getDomainDiagramElement() != null) {%> + /** + * User can change implementation of this method to check some additional + * conditions here. + * + * @generated + */ + private boolean isDiagram<%=genDiagram.getUniqueIdentifier()%>(<%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%> element) { + return true; + } +<%}%> + + /** + * User can change implementation of this method to handle some specific + * situations not covered by default logic. + * + * @generated + */ + private int getUnrecognizedDiagramID(EObject domainElement) { + return -1; + } + +<% +String acceptAllMatcherAccessor = "acceptAllMatcher()"; //$NON-NLS-1$ +for (Iterator nodes = genDiagram.getAllNodes().iterator(); nodes.hasNext();) { + GenNode nextNode = (GenNode) nodes.next(); + String qualifiedChildNodeInterfaceName = nextNode.getDomainMetaClass().getQualifiedInterfaceName(); + String childNodeSelector = nextNode.getModelFacet() != null && nextNode.getModelFacet().getModelElementSelector() != null ? nextNode.getUniqueIdentifier() : acceptAllMatcherAccessor; +%> + + /** + * User can change implementation of this method to check some additional + * conditions here. + * + * @generated + */ + private boolean isNode<%=nextNode.getUniqueIdentifier()%>(<%=importManager.getImportedName(qualifiedChildNodeInterfaceName)%> element) { + return ElementSelectors.<%=childNodeSelector%>.matches(element); + } +<% +} +for (Iterator containers = nodeContainers.iterator(); containers.hasNext();) { + GenContainerBase nextContainer = (GenContainerBase) containers.next(); +%> + + /** + * User can change implementation of this method to handle some specific + * situations not covered by default logic. + * + * @generated + */ + private int getUnrecognized<%=nextContainer.getUniqueIdentifier()%>ChildNodeID(EObject domainElement) { + return -1; + } +<% +} +%> + + /** + * User can change implementation of this method to handle some specific + * situations not covered by default logic. + * + * @generated + */ + private int getUnrecognizedLinkWithClassID(EObject domainElement) { + return -1; + } + +<% +for (Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) { + GenLink genLink = (GenLink) it.next(); + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + String interfaceName = importManager.getImportedName(modelFacet.getMetaClass().getQualifiedInterfaceName()); + String linkSelector = modelFacet.getModelElementSelector() != null ? genLink.getUniqueIdentifier() : acceptAllMatcherAccessor; +%> + + /** + * User can change implementation of this method to check some additional + * conditions here. + * + * @generated + */ + private boolean isLinkWithClass<%=genLink.getUniqueIdentifier()%>(<%=interfaceName%> element) { + return ElementSelectors.<%=linkSelector%>.matches(element); + } +<% + } +} +%> + +<%@ include file="getModelID.jetinc" %> + +<%@ include file="getVisualID.jetinc" %> + + /** + * @generated + */ + private static class ElementSelectors { +<% +int selectorCounter = 0; +for (Iterator it = genDiagram.eAllContents(); it.hasNext();) { + Object next = it.next(); + String id = null; + TypeModelFacet modelFacet = null; + if (next instanceof GenNode) { + id = ((GenNode) next).getUniqueIdentifier(); + modelFacet = ((GenNode) next).getModelFacet(); + } else if (next instanceof GenLink && ((GenLink) next).getModelFacet() instanceof TypeLinkModelFacet) { + id = ((GenLink) next).getUniqueIdentifier(); + modelFacet = (TypeLinkModelFacet) ((GenLink) next).getModelFacet(); + } + if (modelFacet == null || modelFacet.getModelElementSelector() == null) { + continue; + } + GenConstraint selector = modelFacet.getModelElementSelector(); + selectorCounter++; +%> + + /** + * Element matching condition for <%=id%>. + *
language: <%=selector.getLanguage()%>
+ *
body    : <%=selector.getBody()%>
+ * @generated + */ + private static final Matcher <%=id%> = new Matcher("<%=selector.getBody()%>"); +<%}%> + + /** + * @generated + */ + private ElementSelectors() { + } +<%if(selectorCounter > 0) { %> + /** + * @generated + */ + static class Matcher { + + /** + * @generated + */ + private EClass evalContext; + + /** + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.emf.query.ocl.conditions.OCLConstraintCondition")%> condition; + + /** + * @generated + */ + private String body; + + /** + * @generated + */ + Matcher(String expressionBody) { + body = expressionBody; + } + + /** + * @generated + */ + boolean matches(EObject object) { + try { + Boolean result = (object != null) ? evaluate(object) : Boolean.FALSE; + return result.booleanValue(); + } catch(IllegalArgumentException e) { + <%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError(null, e); + return false; + } + } + + /** + * @generated + */ + private Boolean evaluate(EObject context) { + this.evalContext = context.eClass(); + if(condition == null) { + condition = new <%=importManager.getImportedName("org.eclipse.emf.query.ocl.conditions.OCLConstraintCondition")%>(body, evalContext); + } + if(condition != null) { + return booleanCast(condition.evaluate(context)); + } + return Boolean.FALSE; + } + + /** + * @generated + */ + private static Boolean booleanCast(Object value) { + if(value == null) { + return null; + } else if(value instanceof Boolean) { + return (Boolean)value; + } + return Boolean.FALSE; + } + } // end of Matcher +<%}%> + /** + * @generated + */ + static class AcceptAllMatcher { + /** + * @generated + */ + static final AcceptAllMatcher INSTANCE = new AcceptAllMatcher(); + /** + * @generated + */ + boolean matches(Object element) { + return true; + } + } + + /** + * @generated + */ + static AcceptAllMatcher acceptAllMatcher() { + return AcceptAllMatcher.INSTANCE; + } + } // end of ElementSelectors +} +<%importManager.emitSortedImports();%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/NodeViewFactoryGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/NodeViewFactoryGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/providers/NodeViewFactoryGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/providers/NodeViewFactoryGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,153 @@ +package org.eclipse.gmf.codegen.templates.lite.providers; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; +import java.util.*; + +public class NodeViewFactoryGenerator +{ + protected static String nl; + public static synchronized NodeViewFactoryGenerator create(String lineSeparator) + { + nl = lineSeparator; + NodeViewFactoryGenerator result = new NodeViewFactoryGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_5 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static void decorateView("; + protected final String TEXT_6 = " view) {"; + protected final String TEXT_7 = NL; + protected final String TEXT_8 = " annotation = "; + protected final String TEXT_9 = ".eINSTANCE.createEAnnotation();" + NL + "annotation.setSource(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "view.getEAnnotations().add(annotation);" + NL + "annotation.getDetails().put(\"modelID\", \""; + protected final String TEXT_10 = "\"); //$NON-NLS-1$" + NL + "annotation.getDetails().put(\"visualID\", \""; + protected final String TEXT_11 = "\"); //$NON-NLS-1$" + NL + "\t\t"; + protected final String TEXT_12 = " style = "; + protected final String TEXT_13 = ".eINSTANCE.createShapeStyle();" + NL + "\t\tview.getStyles().add(style);" + NL + "\t\t//XXX: init styles from attributes!!!"; + protected final String TEXT_14 = NL + "\t\tcreate"; + protected final String TEXT_15 = "Label(view);"; + protected final String TEXT_16 = NL + "\t\tcreate"; + protected final String TEXT_17 = "Compartment(view);"; + protected final String TEXT_18 = NL + "\t}" + NL; + protected final String TEXT_19 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static void create"; + protected final String TEXT_20 = "Label("; + protected final String TEXT_21 = " view) {" + NL + "\t\t"; + protected final String TEXT_22 = " label = "; + protected final String TEXT_23 = ".eINSTANCE.createNode();" + NL + "\t\tview.getPersistedChildren().add(label);" + NL + "\t\tlabel.setElement(null);" + NL + "\t\t"; + protected final String TEXT_24 = ".decorateView(label);" + NL + "\t}"; + protected final String TEXT_25 = NL; + protected final String TEXT_26 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static void create"; + protected final String TEXT_27 = "Compartment("; + protected final String TEXT_28 = " view) {" + NL + "\t\t"; + protected final String TEXT_29 = " compartment = "; + protected final String TEXT_30 = ".eINSTANCE.createNode();" + NL + "\t\tview.getPersistedChildren().add(compartment);" + NL + "\t\tcompartment.setElement(null);" + NL + "\t\t"; + protected final String TEXT_31 = ".decorateView(compartment);" + NL + "\t}"; + protected final String TEXT_32 = NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenNode genElement = (GenNode) ((Object[]) argument)[0]; +GenDiagram genDiagram = genElement.getDiagram(); +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_4); + stringBuffer.append(genElement.getNotationViewFactoryClassName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_6); + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory")); + stringBuffer.append(TEXT_9); + stringBuffer.append(genDiagram.getEditorGen().getModelID()); + stringBuffer.append(TEXT_10); + stringBuffer.append(genElement.getVisualID()); + stringBuffer.append(TEXT_11); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.ShapeStyle")); + stringBuffer.append(TEXT_12); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_13); + +for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) { + GenNodeLabel label = (GenNodeLabel) it.next(); + + stringBuffer.append(TEXT_14); + stringBuffer.append(label.getVisualID()); + stringBuffer.append(TEXT_15); + +}/*iterate over labels*/ + + +for (Iterator it = genElement.getCompartments().iterator(); it.hasNext(); ) { + GenCompartment compartment = (GenCompartment) it.next(); + + stringBuffer.append(TEXT_16); + stringBuffer.append(compartment.getVisualID()); + stringBuffer.append(TEXT_17); + +}/*iterate over compartments*/ + + stringBuffer.append(TEXT_18); + +for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) { + GenNodeLabel label = (GenNodeLabel) it.next(); + + stringBuffer.append(TEXT_19); + stringBuffer.append(label.getVisualID()); + stringBuffer.append(TEXT_20); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_21); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_22); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_23); + stringBuffer.append(importManager.getImportedName(label.getNotationViewFactoryQualifiedClassName())); + stringBuffer.append(TEXT_24); + +}/*iterate over labels*/ + + stringBuffer.append(TEXT_25); + +for (Iterator it = genElement.getCompartments().iterator(); it.hasNext(); ) { + GenCompartment compartment = (GenCompartment) it.next(); + + stringBuffer.append(TEXT_26); + stringBuffer.append(compartment.getVisualID()); + stringBuffer.append(TEXT_27); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_28); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_29); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_30); + stringBuffer.append(importManager.getImportedName(compartment.getNotationViewFactoryQualifiedClassName())); + stringBuffer.append(TEXT_31); + +}/*iterate over compartments*/ + + stringBuffer.append(TEXT_32); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: templates/parts/EditPartFactory.javajet =================================================================== RCS file: templates/parts/EditPartFactory.javajet diff -N templates/parts/EditPartFactory.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/EditPartFactory.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,90 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="EditPartFactoryGenerator" + imports="java.util.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> +<% +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final String modelID = genDiagram.getEditorGen().getModelID(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> +<%importManager.emitPackageStatement(stringBuffer);%> + +<% +importManager.addImport("org.eclipse.gef.EditPart"); +importManager.addImport("org.eclipse.gef.EditPartFactory"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.markImportLocation(stringBuffer);%> + +/** + * @generated + */ +public class <%=genDiagram.getEditPartFactoryClassName()%> implements EditPartFactory { + + /** + * @generated + */ + public static final String EXTERNAL_NODE_LABELS_LAYER = "External Node Labels"; + +<%@ include file="../editor/getModelID.jetinc" %> + +<%@ include file="../editor/getVisualID.jetinc" %> + + /** + * @generated + */ + public EditPart createEditPart(EditPart context, Object model) { + if (model instanceof View) { + View view = (View) model; + if (!"<%=modelID%>".equals(getModelID(view))) { + return null; + } + + int viewVisualID = getVisualID(view); + switch (viewVisualID) { +<% +for (Iterator containers = genDiagram.getAllContainers().iterator(); containers.hasNext();) { + GenContainerBase container = (GenContainerBase) containers.next(); +%> + case <%=container.getVisualID()%>: + return new <%=container.getEditPartClassName()%>(<%if(container instanceof GenDiagram) {%>(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%>)<%}%>view); +<% + if (container instanceof GenNode && !((GenNode) container).isListContainerEntry()) { + GenNode node = (GenNode) container; + for (Iterator labels = node.getLabels().iterator(); labels.hasNext();) { + GenNodeLabel label = (GenNodeLabel) labels.next(); +%> + case <%=label.getVisualID()%>: + return new <%=label.getEditPartClassName()%>(view); +<% + } + } +} +for (Iterator links = genDiagram.getLinks().iterator(); links.hasNext();) { + GenLink link = (GenLink) links.next(); +%> + case <%=link.getVisualID()%>: + return new <%=link.getEditPartClassName()%>(view); +<% + for (Iterator linkLabels = link.getLabels().iterator(); linkLabels.hasNext();) { + GenLinkLabel linkLabel = (GenLinkLabel) linkLabels.next(); +%> + case <%=linkLabel.getVisualID()%>: + return new <%=linkLabel.getEditPartClassName()%>(view); +<% + } +} +%> + } + } + return createUnrecognizedEditPart(context, model); + } + + /** + * @generated + */ + private EditPart createUnrecognizedEditPart(EditPart context, Object model) { + // Handle creation of unrecognized child node EditParts here + return null; + } + +} +<%importManager.emitSortedImports();%> Index: templates/providers/PropertySourceProvider.javajet =================================================================== RCS file: templates/providers/PropertySourceProvider.javajet diff -N templates/providers/PropertySourceProvider.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/providers/PropertySourceProvider.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,66 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers" class="PropertySourceProviderGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> +<% +GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> +<% +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genDiagram.getPropertyProviderClassName()%> implements <%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySourceProvider")%> { + /** + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider")%> adapterFactoryContentProvider; + + /** + * @generated + */ + public <%=genDiagram.getPropertyProviderClassName()%>(<%=importManager.getImportedName("org.eclipse.emf.common.notify.AdapterFactory")%> domainAdapterFactory) { + adapterFactoryContentProvider = new <%=importManager.getImportedName("org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider")%>(domainAdapterFactory); + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource")%> getPropertySource(Object object) { + if (object instanceof <%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource")%>) { + return (<%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource")%>) object; + } + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view = getNotationElement(object); + if (view == null) { + return adapterFactoryContentProvider.getPropertySource(object); + } + //XXX: compose with view properties + <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> domainElement = view.getElement(); + return adapterFactoryContentProvider.getPropertySource(domainElement); + } + + /** + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> getNotationElement(Object object) { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view = null; + if (object instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) { + view = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) object; + } else if (object instanceof <%=importManager.getImportedName("org.eclipse.gef.EditPart")%>) { + <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> editPart = (<%=importManager.getImportedName("org.eclipse.gef.EditPart")%>) object; + if (editPart.getModel() instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) { + view = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) editPart.getModel(); + } + } + if (view != null && "<%=genDiagram.getEditorGen().getModelID()%>".equals(getModelID(view))) { + return view; + } + return null; + } + +<%@ include file="../editor/getModelID.jetinc" %> +} +<%importManager.emitSortedImports();%> Index: templates/providers/LinkViewFactory.javajet =================================================================== RCS file: templates/providers/LinkViewFactory.javajet diff -N templates/providers/LinkViewFactory.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/providers/LinkViewFactory.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,51 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers" class="LinkViewFactoryGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* java.util.*"%> +<% +GenLink genElement = (GenLink) ((Object[]) argument)[0]; +GenDiagram genDiagram = genElement.getDiagram(); +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> +<%importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genElement.getNotationViewFactoryClassName()%> { + /** + * @generated + */ + public static void decorateView(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) { +<%@ include file="createVIDAnnotation.jetinc"%> + //XXX: init styles from attributes!!! +<% +for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) { + GenLinkLabel label = (GenLinkLabel) it.next(); +%> + create<%=label.getVisualID()%>Label(view); +<% +}/*iterate over labels*/ +%> + } + +<% +for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) { + GenLinkLabel label = (GenLinkLabel) it.next(); +%> + /** + * @generated + */ + private static void create<%=label.getVisualID()%>Label(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> label = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createNode(); + view.getPersistedChildren().add(label); + label.setElement(null); + <%=importManager.getImportedName(label.getNotationViewFactoryQualifiedClassName())%>.decorateView(label); + } +<% +}/*iterate over labels*/ +%> +} +<%importManager.emitSortedImports();%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/EditPartFactoryGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/EditPartFactoryGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/parts/EditPartFactoryGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/parts/EditPartFactoryGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,152 @@ +package org.eclipse.gmf.codegen.templates.lite.parts; + +import java.util.*; +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; + +public class EditPartFactoryGenerator +{ + protected static String nl; + public static synchronized EditPartFactoryGenerator create(String lineSeparator) + { + nl = lineSeparator; + EditPartFactoryGenerator result = new EditPartFactoryGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL; + protected final String TEXT_5 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_6 = " implements EditPartFactory {" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static final String EXTERNAL_NODE_LABELS_LAYER = \"External Node Labels\";" + NL; + protected final String TEXT_7 = NL; + protected final String TEXT_8 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate String getModelID("; + protected final String TEXT_9 = " containerView) {" + NL + "\t\t"; + protected final String TEXT_10 = " annotation = containerView.getEAnnotation(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "\t\tif (annotation == null) {" + NL + "\t\t\treturn null;" + NL + "\t\t}" + NL + "\t\treturn (String) annotation.getDetails().get(\"modelID\"); //$NON-NLS-1$" + NL + "\t}" + NL; + protected final String TEXT_11 = NL; + protected final String TEXT_12 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static int getVisualID("; + protected final String TEXT_13 = " containerView) {" + NL + "\t\t"; + protected final String TEXT_14 = " annotation = containerView.getEAnnotation(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "\t\tif (annotation == null) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\tString visualID = (String) annotation.getDetails().get(\"visualID\"); //$NON-NLS-1$" + NL + "\t\tif (visualID == null) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\ttry {" + NL + "\t\t\treturn Integer.parseInt(visualID);" + NL + "\t\t} catch (NumberFormatException e) {" + NL + "\t\t\t"; + protected final String TEXT_15 = ".getInstance().logError(\"Unable to parse \\\"visualID\\\" annotation: \" + visualID, e);" + NL + "\t\t}" + NL + "\t\treturn -1;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic EditPart createEditPart(EditPart context, Object model) {" + NL + "\t\tif (model instanceof View) {" + NL + "\t\t\tView view = (View) model;" + NL + "\t\t\tif (!\""; + protected final String TEXT_16 = "\".equals(getModelID(view))) {" + NL + "\t\t\t\treturn null;" + NL + "\t\t\t}" + NL + "\t\t\t" + NL + "\t\t\tint viewVisualID = getVisualID(view);" + NL + "\t\t\tswitch (viewVisualID) {"; + protected final String TEXT_17 = NL + "\t\t\tcase "; + protected final String TEXT_18 = ":" + NL + "\t\t\t\t return new "; + protected final String TEXT_19 = "("; + protected final String TEXT_20 = "("; + protected final String TEXT_21 = ")"; + protected final String TEXT_22 = "view);"; + protected final String TEXT_23 = NL + "\t\t\tcase "; + protected final String TEXT_24 = ":" + NL + "\t\t\t\treturn new "; + protected final String TEXT_25 = "(view);"; + protected final String TEXT_26 = "\t\t" + NL + "\t\t\tcase "; + protected final String TEXT_27 = ":" + NL + "\t\t\t\treturn new "; + protected final String TEXT_28 = "(view);"; + protected final String TEXT_29 = NL + "\t\t\tcase "; + protected final String TEXT_30 = ":" + NL + "\t\t\t\t\treturn new "; + protected final String TEXT_31 = "(view);"; + protected final String TEXT_32 = NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\treturn createUnrecognizedEditPart(context, model);" + NL + "\t}" + NL + "\t" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\t private EditPart createUnrecognizedEditPart(EditPart context, Object model) {" + NL + "\t \t// Handle creation of unrecognized child node EditParts here" + NL + "\t \treturn null;" + NL + "\t }" + NL + "" + NL + "}"; + protected final String TEXT_33 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final String modelID = genDiagram.getEditorGen().getModelID(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + importManager.emitPackageStatement(stringBuffer); + stringBuffer.append(TEXT_4); + +importManager.addImport("org.eclipse.gef.EditPart"); +importManager.addImport("org.eclipse.gef.EditPartFactory"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.markImportLocation(stringBuffer); + stringBuffer.append(TEXT_5); + stringBuffer.append(genDiagram.getEditPartFactoryClassName()); + stringBuffer.append(TEXT_6); + stringBuffer.append(TEXT_7); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_9); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_10); + stringBuffer.append(TEXT_11); + stringBuffer.append(TEXT_12); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_13); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_14); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())); + stringBuffer.append(TEXT_15); + stringBuffer.append(modelID); + stringBuffer.append(TEXT_16); + +for (Iterator containers = genDiagram.getAllContainers().iterator(); containers.hasNext();) { + GenContainerBase container = (GenContainerBase) containers.next(); + + stringBuffer.append(TEXT_17); + stringBuffer.append(container.getVisualID()); + stringBuffer.append(TEXT_18); + stringBuffer.append(container.getEditPartClassName()); + stringBuffer.append(TEXT_19); + if(container instanceof GenDiagram) { + stringBuffer.append(TEXT_20); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")); + stringBuffer.append(TEXT_21); + } + stringBuffer.append(TEXT_22); + + if (container instanceof GenNode && !((GenNode) container).isListContainerEntry()) { + GenNode node = (GenNode) container; + for (Iterator labels = node.getLabels().iterator(); labels.hasNext();) { + GenNodeLabel label = (GenNodeLabel) labels.next(); + + stringBuffer.append(TEXT_23); + stringBuffer.append(label.getVisualID()); + stringBuffer.append(TEXT_24); + stringBuffer.append(label.getEditPartClassName()); + stringBuffer.append(TEXT_25); + + } + } +} +for (Iterator links = genDiagram.getLinks().iterator(); links.hasNext();) { + GenLink link = (GenLink) links.next(); + + stringBuffer.append(TEXT_26); + stringBuffer.append(link.getVisualID()); + stringBuffer.append(TEXT_27); + stringBuffer.append(link.getEditPartClassName()); + stringBuffer.append(TEXT_28); + + for (Iterator linkLabels = link.getLabels().iterator(); linkLabels.hasNext();) { + GenLinkLabel linkLabel = (GenLinkLabel) linkLabels.next(); + + stringBuffer.append(TEXT_29); + stringBuffer.append(linkLabel.getVisualID()); + stringBuffer.append(TEXT_30); + stringBuffer.append(linkLabel.getEditPartClassName()); + stringBuffer.append(TEXT_31); + + } +} + + stringBuffer.append(TEXT_32); + importManager.emitSortedImports(); + stringBuffer.append(TEXT_33); + return stringBuffer.toString(); + } +} Index: templates/providers/AbstractParser.javajet =================================================================== RCS file: templates/providers/AbstractParser.javajet diff -N templates/providers/AbstractParser.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/providers/AbstractParser.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,179 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers" class="AbstractParserGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> +<%GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];%> +<%ImportAssistant importManager = (ImportAssistant) ((Object[])argument)[1];%> +<%@ include file="../copyright4java.jetinc"%> + +<% +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public abstract class <%=genDiagram.getAbstractParserClassName()%> { + /** + * @generated + */ + public static Object parseValue(<%=importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")%> feature, Object value) throws IllegalArgumentException { + if (value == null) { + throw new IllegalArgumentException(); + } + <%=importManager.getImportedName("org.eclipse.emf.ecore.EDataType")%> type = feature.getEAttributeType(); + Class iClass = type.getInstanceClass(); + if (Boolean.TYPE.equals(iClass) || Boolean.class.equals(iClass)) { + if (value instanceof Boolean) { + // ok + } else if (value instanceof String) { + value = Boolean.valueOf((String) value); + } else { + throw new IllegalArgumentException("Value of type Boolean is expected"); + } + } else if (Character.TYPE.equals(iClass) || Character.class.equals(iClass)) { + if (value instanceof Character) { + // ok + } else if (value instanceof String) { + String s = (String) value; + if (s.length() == 0) { + throw new IllegalArgumentException(); //XXX: ? + } else { + value = new Character(s.charAt(0)); + } + } else { + throw new IllegalArgumentException("Value of type Character is expected"); + } + } else if (Byte.TYPE.equals(iClass) || Byte.class.equals(iClass)) { + if (value instanceof Byte) { + // ok + } else if (value instanceof Number) { + value = new Byte(((Number) value).byteValue()); + } else if (value instanceof String) { + String s = (String) value; + if (s.length() == 0) { + value = null; + } else { + try { + value = Byte.valueOf(s); + } catch (NumberFormatException nfe) { + throw new IllegalArgumentException("String value does not convert to Byte value"); + } + } + } else { + throw new IllegalArgumentException("Value of type Byte is expected"); + } + } else if (Short.TYPE.equals(iClass) || Short.class.equals(iClass)) { + if (value instanceof Short) { + // ok + } else if (value instanceof Number) { + value = new Short(((Number) value).shortValue()); + } else if (value instanceof String) { + String s = (String) value; + if (s.length() == 0) { + value = null; + } else { + try { + value = Short.valueOf(s); + } catch (NumberFormatException nfe) { + throw new IllegalArgumentException("String value does not convert to Short value"); + } + } + } else { + throw new IllegalArgumentException("Value of type Short is expected"); + } + } else if (Integer.TYPE.equals(iClass) || Integer.class.equals(iClass)) { + if (value instanceof Integer) { + // ok + } else if (value instanceof Number) { + value = new Integer(((Number) value).intValue()); + } else if (value instanceof String) { + String s = (String) value; + if (s.length() == 0) { + value = null; + } else { + try { + value = Integer.valueOf(s); + } catch (NumberFormatException nfe) { + throw new IllegalArgumentException("String value does not convert to Integer value"); + } + } + } else { + throw new IllegalArgumentException("Value of type Integer is expected"); + } + } else if (Long.TYPE.equals(iClass) || Long.class.equals(iClass)) { + if (value instanceof Long) { + // ok + } else if (value instanceof Number) { + value = new Long(((Number) value).longValue()); + } else if (value instanceof String) { + String s = (String) value; + if (s.length() == 0) { + value = null; + } else { + try { + value = Long.valueOf(s); + } catch (NumberFormatException nfe) { + throw new IllegalArgumentException("String value does not convert to Long value"); + } + } + } else { + throw new IllegalArgumentException("Value of type Long is expected"); + } + } else if (Float.TYPE.equals(iClass) || Float.class.equals(iClass)) { + if (value instanceof Float) { + // ok + } else if (value instanceof Number) { + value = new Float(((Number) value).floatValue()); + } else if (value instanceof String) { + String s = (String) value; + if (s.length() == 0) { + value = null; + } else { + try { + value = Float.valueOf(s); + } catch (NumberFormatException nfe) { + throw new IllegalArgumentException("String value does not convert to Float value"); + } + } + } else { + throw new IllegalArgumentException("Value of type Float is expected"); + } + } else if (Double.TYPE.equals(iClass) || Double.class.equals(iClass)) { + if (value instanceof Double) { + // ok + } else if (value instanceof Number) { + value = new Double(((Number) value).doubleValue()); + } else if (value instanceof String) { + String s = (String) value; + if (s.length() == 0) { + value = null; + } else { + try { + value = Double.valueOf(s); + } catch (NumberFormatException nfe) { + throw new IllegalArgumentException("String value does not convert to Double value"); + } + } + } else { + throw new IllegalArgumentException("Value of type Double is expected"); + } + } else if (String.class.equals(iClass)) { + value = String.valueOf(value); + } else if (type instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EEnum")%>) { + if (value instanceof String) { + <%=importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral")%> literal = ((<%=importManager.getImportedName("org.eclipse.emf.ecore.EEnum")%>) type).getEEnumLiteralByLiteral((String) value); + if (literal == null) { + throw new IllegalArgumentException("Unknown literal: " + value); + } else { + value = literal.getInstance(); + } + } else { + throw new IllegalArgumentException("Value of type String is expected"); + } + } else { + throw new IllegalArgumentException("Unsupported type"); + } + return value; + } +} +<%importManager.emitSortedImports();%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PaletteFactoryGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PaletteFactoryGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PaletteFactoryGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PaletteFactoryGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,305 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +import java.util.*; +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; + +public class PaletteFactoryGenerator +{ + protected static String nl; + public static synchronized PaletteFactoryGenerator create(String lineSeparator) + { + nl = lineSeparator; + PaletteFactoryGenerator result = new PaletteFactoryGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_2 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate final AdapterFactory domainAdapterFactory;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_3 = "(AdapterFactory domainAdapterFactory) {" + NL + "\t\tthis.domainAdapterFactory = domainAdapterFactory;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void contributeToPalette(PaletteRoot paletteRoot) {" + NL + " PaletteGroup controls = new PaletteGroup(\"Controls\");" + NL + " paletteRoot.add(controls);" + NL + "" + NL + " ToolEntry tool = new SelectionToolEntry();" + NL + " controls.add(tool);" + NL + " paletteRoot.setDefaultEntry(tool);" + NL + "" + NL + " controls.add(new MarqueeToolEntry());"; + protected final String TEXT_4 = NL + "\t\tpaletteRoot.add("; + protected final String TEXT_5 = "());"; + protected final String TEXT_6 = NL + "\t}" + NL; + protected final String TEXT_7 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate PaletteContainer "; + protected final String TEXT_8 = "() {" + NL + "\t\tPaletteContainer paletteContainer = createContainer(\""; + protected final String TEXT_9 = "\");"; + protected final String TEXT_10 = NL + "\t\tpaletteContainer.add("; + protected final String TEXT_11 = "());"; + protected final String TEXT_12 = NL + "\t\tpaletteContainer.add(new "; + protected final String TEXT_13 = "());"; + protected final String TEXT_14 = NL + "\t\tpaletteContainer.add("; + protected final String TEXT_15 = "());"; + protected final String TEXT_16 = NL + "\t\treturn paletteContainer;" + NL + "\t}"; + protected final String TEXT_17 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ToolEntry "; + protected final String TEXT_18 = "() {" + NL + "\t\t"; + protected final String TEXT_19 = NL + "\t\tImageDescriptor smallImage = ImageDescriptor.createFromFile("; + protected final String TEXT_20 = ".class, \""; + protected final String TEXT_21 = "\");" + NL + "\t\t"; + protected final String TEXT_22 = NL + "\t\tImageDescriptor smallImage = getImage("; + protected final String TEXT_23 = ");" + NL + "\t\t"; + protected final String TEXT_24 = NL + "\t\t"; + protected final String TEXT_25 = NL + "\t\tImageDescriptor largeImage = ImageDescriptor.createFromFile("; + protected final String TEXT_26 = ".class, \""; + protected final String TEXT_27 = "\");" + NL + "\t\t"; + protected final String TEXT_28 = NL + "\t\tImageDescriptor largeImage = smallImage;" + NL + "\t\t"; + protected final String TEXT_29 = NL + "\t\tfinal int[] visualIds = new int[] {"; + protected final String TEXT_30 = NL + "\t\t\t"; + protected final String TEXT_31 = ","; + protected final String TEXT_32 = "\t\t" + NL + "\t\t};" + NL + "\t\treturn new "; + protected final String TEXT_33 = "(\""; + protected final String TEXT_34 = "\", " + NL + "\t\t\t\""; + protected final String TEXT_35 = "\", new ModelCreationFactory("; + protected final String TEXT_36 = ".class), smallImage, largeImage) {" + NL + "\t\t\tpublic Tool createTool() {" + NL + "\t\t\t\tTool result = new CreationTool() {" + NL + "\t\t\t\t\tprotected Request createTargetRequest() {" + NL + "\t\t\t\t\t\tCreateRequestEx request = new CreateRequestEx(visualIds);" + NL + "\t\t\t\t\t\trequest.setFactory(getFactory());" + NL + "\t\t\t\t\t\treturn request;" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tprotected void performCreation(int button) {" + NL + "\t\t\t\t\t\tsuper.performCreation(button);" + NL + "\t\t\t\t\t\tfinal "; + protected final String TEXT_37 = " createdEditPart = ("; + protected final String TEXT_38 = ")getCurrentViewer().getEditPartRegistry().get(getCreateRequest().getNewObject());" + NL + "\t\t\t\t\t\tif (createdEditPart != null) {" + NL + "\t\t\t\t\t\t\tgetCurrentViewer().getControl().getDisplay().asyncExec(new Runnable() {" + NL + "\t\t\t\t\t\t\t\tpublic void run() {" + NL + "\t\t\t\t\t\t\t\t\tif (createdEditPart.isActive()) {" + NL + "\t\t\t\t\t\t\t\t\t\tcreatedEditPart.performRequest(new "; + protected final String TEXT_39 = "("; + protected final String TEXT_40 = ".REQ_DIRECT_EDIT));" + NL + "\t\t\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t\t});" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t};" + NL + "\t\t\t\tresult.setProperties(getToolProperties());" + NL + "\t\t\t\treturn result;" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t}"; + protected final String TEXT_41 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ToolEntry "; + protected final String TEXT_42 = "() {" + NL + "\t\t"; + protected final String TEXT_43 = NL + "\t\tImageDescriptor smallImage = ImageDescriptor.createFromFile("; + protected final String TEXT_44 = ".class, \""; + protected final String TEXT_45 = "\");" + NL + "\t\t"; + protected final String TEXT_46 = NL + "\t\tImageDescriptor smallImage = getImage("; + protected final String TEXT_47 = ");" + NL + "\t\t"; + protected final String TEXT_48 = NL + "\t\t"; + protected final String TEXT_49 = NL + "\t\tImageDescriptor largeImage = ImageDescriptor.createFromFile("; + protected final String TEXT_50 = ".class, \""; + protected final String TEXT_51 = "\");" + NL + "\t\t"; + protected final String TEXT_52 = NL + "\t\tImageDescriptor largeImage = smallImage;" + NL + "\t\t"; + protected final String TEXT_53 = NL + "\t\tfinal int[] visualIds = new int[] {"; + protected final String TEXT_54 = NL + "\t\t\t"; + protected final String TEXT_55 = ","; + protected final String TEXT_56 = "\t\t" + NL + "\t\t};" + NL + "\t\treturn new ConnectionCreationToolEntry(\""; + protected final String TEXT_57 = "\", \""; + protected final String TEXT_58 = "\", " + NL + "\t\t\tnew ModelCreationFactory("; + protected final String TEXT_59 = ".class), smallImage, largeImage) {" + NL + "\t\t\tpublic Tool createTool() {" + NL + "\t\t\t\tTool result = new ConnectionCreationTool() {" + NL + "\t\t\t\t\tprotected Request createTargetRequest() {" + NL + "\t\t\t\t\t\tCreateConnectionRequestEx request = new CreateConnectionRequestEx(visualIds);" + NL + "\t\t\t\t\t\trequest.setFactory(getFactory());" + NL + "\t\t\t\t\t\treturn request;" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t};" + NL + "\t\t\t\tresult.setProperties(getToolProperties());" + NL + "\t\t\t\treturn result;" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t}"; + protected final String TEXT_60 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate PaletteContainer createContainer(String title) {" + NL + "\t\treturn new PaletteDrawer(title);" + NL + "\t}" + NL + "\t" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ImageDescriptor getImage(Object o) {" + NL + "\t\tIItemLabelProvider labelProvider = (IItemLabelProvider) domainAdapterFactory.adapt(o, IItemLabelProvider.class);" + NL + "\t\tif (labelProvider != null) {" + NL + "\t\t\treturn ExtendedImageRegistry.getInstance().getImageDescriptor(labelProvider.getImage(o));" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static class CreateRequestEx extends "; + protected final String TEXT_61 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final int[] visualIds;" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic CreateRequestEx(int[] visualIds) {" + NL + "\t\t\tthis.visualIds = visualIds;" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic int[] getVisualIds() {" + NL + "\t\t\treturn visualIds;" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void setCreatedObject(Object createdObject) {" + NL + "\t\t\t((ModelCreationFactory)getFactory()).setCreatedObject(createdObject);" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static class CreateConnectionRequestEx extends "; + protected final String TEXT_62 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final int[] visualIds;" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic CreateConnectionRequestEx(int[] visualIds) {" + NL + "\t\t\tthis.visualIds = visualIds;" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic int[] getVisualIds() {" + NL + "\t\t\treturn visualIds;" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void setCreatedObject(Object createdObject) {" + NL + "\t\t\t((ModelCreationFactory)getFactory()).setCreatedObject(createdObject);" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static class ModelCreationFactory implements CreationFactory {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate Object createdObject;" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final Class createdObjectType;" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic ModelCreationFactory(Class objectType) {" + NL + "\t\t\tcreatedObjectType = objectType;" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic Object getNewObject() {" + NL + "\t\t\treturn createdObject;" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic Object getObjectType() {" + NL + "\t\t\treturn createdObjectType;" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void setCreatedObject(Object createdObject) {" + NL + "\t\t\tthis.createdObject = createdObject;" + NL + "\t\t}" + NL + "\t}" + NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final Palette palette = genDiagram.getPalette(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); + +importManager.addImport("org.eclipse.gef.Tool"); +importManager.addImport("org.eclipse.gef.Request"); +importManager.addImport("org.eclipse.gef.requests.CreationFactory"); +importManager.addImport("org.eclipse.gef.tools.CreationTool"); +importManager.addImport("org.eclipse.gef.tools.ConnectionCreationTool"); +importManager.addImport("org.eclipse.gef.palette.PaletteContainer"); +importManager.addImport("org.eclipse.gef.palette.PaletteDrawer"); +importManager.addImport("org.eclipse.gef.palette.PaletteGroup"); +importManager.addImport("org.eclipse.gef.palette.PaletteRoot"); +importManager.addImport("org.eclipse.gef.palette.ConnectionCreationToolEntry"); +importManager.addImport("org.eclipse.gef.palette.MarqueeToolEntry"); +importManager.addImport("org.eclipse.gef.palette.SelectionToolEntry"); +importManager.addImport("org.eclipse.gef.palette.ToolEntry"); +importManager.addImport("org.eclipse.jface.resource.ImageDescriptor"); +importManager.addImport("org.eclipse.emf.edit.provider.IItemLabelProvider"); +importManager.addImport("org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry"); +importManager.addImport("org.eclipse.emf.common.notify.AdapterFactory"); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_1); + stringBuffer.append(palette.getFactoryClassName()); + stringBuffer.append(TEXT_2); + stringBuffer.append(palette.getFactoryClassName()); + stringBuffer.append(TEXT_3); + +List toolGroups = palette.getGroups(); +for (int i = 0; i < toolGroups.size(); i++) { + ToolGroup toolGroup = (ToolGroup) toolGroups.get(i); + + stringBuffer.append(TEXT_4); + stringBuffer.append(toolGroup.getCreateMethodName()); + stringBuffer.append(TEXT_5); + } + stringBuffer.append(TEXT_6); + +for (int i = 0; i < toolGroups.size(); i++) { + ToolGroup toolGroup = (ToolGroup) toolGroups.get(i); + + stringBuffer.append(TEXT_7); + stringBuffer.append(toolGroup.getCreateMethodName()); + stringBuffer.append(TEXT_8); + stringBuffer.append(toolGroup.getTitleKey()); + stringBuffer.append(TEXT_9); + + List nodeCreationTools = toolGroup.getNodeTools(); + for (int j = 0; j < nodeCreationTools.size(); j++) { + NodeEntry nodeCreationTool = (NodeEntry) nodeCreationTools.get(j); + + stringBuffer.append(TEXT_10); + stringBuffer.append(nodeCreationTool.getCreateMethodName()); + stringBuffer.append(TEXT_11); + } + List linkCreationTools = toolGroup.getLinkTools(); + for (int j = 0; j < linkCreationTools.size(); j++) { + LinkEntry linkCreationTool = (LinkEntry) linkCreationTools.get(j); + if (j == 0) { + + stringBuffer.append(TEXT_12); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.palette.PaletteSeparator")); + stringBuffer.append(TEXT_13); + } + stringBuffer.append(TEXT_14); + stringBuffer.append(linkCreationTool.getCreateMethodName()); + stringBuffer.append(TEXT_15); + } + stringBuffer.append(TEXT_16); + +} +for (int i = 0; i < toolGroups.size(); i++) { + ToolGroup toolGroup = (ToolGroup) toolGroups.get(i); + List nodeCreationTools = toolGroup.getNodeTools(); + for (int j = 0; j < nodeCreationTools.size(); j++) { + NodeEntry nodeCreationTool = (NodeEntry) nodeCreationTools.get(j); + List genNodes = nodeCreationTool.getGenNode(); + GenNode firstGenNode = (GenNode) genNodes.get(0); + GenClass genClass = firstGenNode.getDomainMetaClass(); + final String domainElementInstanceCreationCode; + if (!genClass.isMapEntry()) { + domainElementInstanceCreationCode = importManager.getImportedName(genClass.getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create" + genClass.getName() + "()"; + } else { + domainElementInstanceCreationCode = importManager.getImportedName(genClass.getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create(" + + importManager.getImportedName(genClass.getGenPackage().getQualifiedPackageInterfaceName()) + ".eINSTANCE.get" + genClass.getClassifierAccessorName() + "())"; + } + + stringBuffer.append(TEXT_17); + stringBuffer.append(nodeCreationTool.getCreateMethodName()); + stringBuffer.append(TEXT_18); + if (nodeCreationTool.getSmallIconPath() != null) { + stringBuffer.append(TEXT_19); + stringBuffer.append(palette.getFactoryClassName()); + stringBuffer.append(TEXT_20); + stringBuffer.append(nodeCreationTool.getSmallIconPath()); + stringBuffer.append(TEXT_21); + } else { + stringBuffer.append(TEXT_22); + stringBuffer.append(domainElementInstanceCreationCode); + stringBuffer.append(TEXT_23); + } + stringBuffer.append(TEXT_24); + if (nodeCreationTool.getLargeIconPath() != null) { + stringBuffer.append(TEXT_25); + stringBuffer.append(palette.getFactoryClassName()); + stringBuffer.append(TEXT_26); + stringBuffer.append(nodeCreationTool.getLargeIconPath()); + stringBuffer.append(TEXT_27); + } else { + stringBuffer.append(TEXT_28); + } + stringBuffer.append(TEXT_29); + + for (Iterator genNodesIterator = genNodes.iterator(); genNodesIterator.hasNext();) { + GenNode nextNode = (GenNode) genNodesIterator.next(); + + stringBuffer.append(TEXT_30); + stringBuffer.append(nextNode.getVisualID()); + if (genNodesIterator.hasNext()) { + stringBuffer.append(TEXT_31); + } + + } + + stringBuffer.append(TEXT_32); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.palette.CombinedTemplateCreationEntry")); + stringBuffer.append(TEXT_33); + stringBuffer.append(nodeCreationTool.getTitleKey()); + stringBuffer.append(TEXT_34); + stringBuffer.append(nodeCreationTool.getDescriptionKey()); + stringBuffer.append(TEXT_35); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_36); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_37); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_38); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request")); + stringBuffer.append(TEXT_39); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants")); + stringBuffer.append(TEXT_40); + + } + List linkCreationTools = toolGroup.getLinkTools(); + for (int j = 0; j < linkCreationTools.size(); j++) { + LinkEntry linkCreationTool = (LinkEntry) linkCreationTools.get(j); + List genLinks = linkCreationTool.getGenLink(); + GenLink firstGenLink = (GenLink) genLinks.get(0); + LinkModelFacet linkModelFacet = firstGenLink.getModelFacet(); + final String domainElementInstanceCreationCode; + if (linkModelFacet instanceof TypeLinkModelFacet) { + TypeLinkModelFacet typeLinkModelFacet = (TypeLinkModelFacet) linkModelFacet; + GenClass genClass = typeLinkModelFacet.getMetaClass(); + domainElementInstanceCreationCode = importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create" + genClass.getName() + "()"; + } else { + domainElementInstanceCreationCode = "null"; + } + + stringBuffer.append(TEXT_41); + stringBuffer.append(linkCreationTool.getCreateMethodName()); + stringBuffer.append(TEXT_42); + if (linkCreationTool.getSmallIconPath() != null) { + stringBuffer.append(TEXT_43); + stringBuffer.append(palette.getFactoryClassName()); + stringBuffer.append(TEXT_44); + stringBuffer.append(linkCreationTool.getSmallIconPath()); + stringBuffer.append(TEXT_45); + } else { + stringBuffer.append(TEXT_46); + stringBuffer.append(domainElementInstanceCreationCode); + stringBuffer.append(TEXT_47); + } + stringBuffer.append(TEXT_48); + if (linkCreationTool.getLargeIconPath() != null) { + stringBuffer.append(TEXT_49); + stringBuffer.append(palette.getFactoryClassName()); + stringBuffer.append(TEXT_50); + stringBuffer.append(linkCreationTool.getLargeIconPath()); + stringBuffer.append(TEXT_51); + } else { + stringBuffer.append(TEXT_52); + } + stringBuffer.append(TEXT_53); + + for (Iterator genLinksIterator = genLinks.iterator(); genLinksIterator.hasNext();) { + GenLink nextLink = (GenLink) genLinksIterator.next(); + + stringBuffer.append(TEXT_54); + stringBuffer.append(nextLink.getVisualID()); + if (genLinksIterator.hasNext()) { + stringBuffer.append(TEXT_55); + } + + } + + stringBuffer.append(TEXT_56); + stringBuffer.append(linkCreationTool.getTitleKey()); + stringBuffer.append(TEXT_57); + stringBuffer.append(linkCreationTool.getDescriptionKey()); + stringBuffer.append(TEXT_58); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")); + stringBuffer.append(TEXT_59); + + } +} + + stringBuffer.append(TEXT_60); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.CreateRequest")); + stringBuffer.append(TEXT_61); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest")); + stringBuffer.append(TEXT_62); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: templates/parts/adapters/propertySource.javajetinc =================================================================== RCS file: templates/parts/adapters/propertySource.javajetinc diff -N templates/parts/adapters/propertySource.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/adapters/propertySource.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,14 @@ +/* + if (<%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource")%>.class == key) { + <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> element = ((View)getModel()).getElement(); + if (element == null) { + return null; + } + <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertySource")%> itemPropertySource = (<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertySource")%>) + <%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().getItemProvidersAdapterFactory().adapt(element, <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertySource")%>.class); + if (itemPropertySource == null) { + return null; + } + return new <%=importManager.getImportedName("org.eclipse.emf.edit.ui.provider.PropertySource")%>(element, itemPropertySource); + } +*/ Index: templates/parts/directEdit.javajetinc =================================================================== RCS file: templates/parts/directEdit.javajetinc diff -N templates/parts/directEdit.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/directEdit.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,38 @@ + /** + * @generated + */ + public void performRequest(<%=importManager.getImportedName("org.eclipse.gef.Request")%> req) { + if (<%=importManager.getImportedName("org.eclipse.gef.RequestConstants")%>.REQ_DIRECT_EDIT == req.getType()) { + performDirectEdit(); + } else { + super.performRequest(req); + } + } + + /** + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")%> getManager() { + if (manager == null) { + manager = new <%=importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")%>(this, <%=importManager.getImportedName("org.eclipse.jface.viewers.TextCellEditor")%>.class, new <%=importManager.getImportedName("org.eclipse.gef.tools.CellEditorLocator")%>() { + public void relocate(<%=importManager.getImportedName("org.eclipse.jface.viewers.CellEditor")%> celleditor) { + <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%> rect = getLabel().getTextBounds(); + getLabel().translateToAbsolute(rect); + celleditor.getControl().setBounds(rect.x, rect.y, rect.width, rect.height); + } + }) { + protected void initCellEditor() { + getCellEditor().setValue(getLabelEditText()); + } + }; + } + return manager; + } + + /** + * @generated + */ + protected void performDirectEdit() { + getManager().show(); + } + Index: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/LabelViewFactoryGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/LabelViewFactoryGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/providers/LabelViewFactoryGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/providers/LabelViewFactoryGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,96 @@ +package org.eclipse.gmf.codegen.templates.lite.providers; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; + +public class LabelViewFactoryGenerator +{ + protected static String nl; + public static synchronized LabelViewFactoryGenerator create(String lineSeparator) + { + nl = lineSeparator; + LabelViewFactoryGenerator result = new LabelViewFactoryGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_5 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static void decorateView("; + protected final String TEXT_6 = " view) {"; + protected final String TEXT_7 = NL; + protected final String TEXT_8 = " annotation = "; + protected final String TEXT_9 = ".eINSTANCE.createEAnnotation();" + NL + "annotation.setSource(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "view.getEAnnotations().add(annotation);" + NL + "annotation.getDetails().put(\"modelID\", \""; + protected final String TEXT_10 = "\"); //$NON-NLS-1$" + NL + "annotation.getDetails().put(\"visualID\", \""; + protected final String TEXT_11 = "\"); //$NON-NLS-1$"; + protected final String TEXT_12 = NL + "\t\tview.setType(\""; + protected final String TEXT_13 = "SemanticHint\");"; + protected final String TEXT_14 = NL + "\t\t"; + protected final String TEXT_15 = " location = "; + protected final String TEXT_16 = ".eINSTANCE.createLocation();" + NL + "\t\t(("; + protected final String TEXT_17 = ")view).setLayoutConstraint(location);"; + protected final String TEXT_18 = NL + "\t}" + NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenCommonBase genElement = (GenCommonBase) ((Object[]) argument)[0]; +GenDiagram genDiagram = genElement.getDiagram(); +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_4); + stringBuffer.append(genElement.getNotationViewFactoryClassName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_6); + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory")); + stringBuffer.append(TEXT_9); + stringBuffer.append(genDiagram.getEditorGen().getModelID()); + stringBuffer.append(TEXT_10); + stringBuffer.append(genElement.getVisualID()); + stringBuffer.append(TEXT_11); + +if (genElement instanceof GenLabel) { + + stringBuffer.append(TEXT_12); + stringBuffer.append(genElement.getUniqueIdentifier()); + stringBuffer.append(TEXT_13); + +}/*genElement is a pure label*/ +if (genElement instanceof GenLinkLabel) { + + stringBuffer.append(TEXT_14); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Location")); + stringBuffer.append(TEXT_15); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_16); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_17); + +} + + stringBuffer.append(TEXT_18); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: src/org/eclipse/gmf/internal/codegen/lite/CodegenEmitters.java =================================================================== RCS file: src/org/eclipse/gmf/internal/codegen/lite/CodegenEmitters.java diff -N src/org/eclipse/gmf/internal/codegen/lite/CodegenEmitters.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/gmf/internal/codegen/lite/CodegenEmitters.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,272 @@ +/* + * Copyright (c) 2005 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: + * Artem Tikhomirov (Borland) - initial API and implementation + */ +package org.eclipse.gmf.internal.codegen.lite; + +import java.net.URL; + +import org.eclipse.emf.codegen.jet.JETCompiler; +import org.eclipse.emf.codegen.jet.JETEmitter; +import org.eclipse.emf.codegen.jet.JETException; +import org.eclipse.emf.common.util.URI; +import org.eclipse.gmf.common.UnexpectedBehaviourException; +import org.eclipse.gmf.common.codegen.GIFEmitter; +import org.eclipse.gmf.internal.codegen.dispatch.EmitterFactory; +import org.eclipse.gmf.internal.codegen.dispatch.NoSuchTemplateException; +import org.eclipse.gmf.internal.codegen.dispatch.StaticTemplateRegistry; + +import org.eclipse.gmf.codegen.templates.lite.editor.ActionBarContributorGenerator; +import org.eclipse.gmf.codegen.templates.lite.editor.BuildPropertiesGenerator; +import org.eclipse.gmf.codegen.templates.lite.editor.CreationWizardGenerator; +import org.eclipse.gmf.codegen.templates.lite.editor.CreationWizardPageGenerator; +import org.eclipse.gmf.codegen.templates.lite.editor.DiagramEditorUtilGenerator; +import org.eclipse.gmf.codegen.templates.lite.editor.EditorGenerator; +import org.eclipse.gmf.codegen.templates.lite.editor.ManifestGenerator; +import org.eclipse.gmf.codegen.templates.lite.editor.PaletteFactoryGenerator; +import org.eclipse.gmf.codegen.templates.lite.editor.PluginGenerator; +import org.eclipse.gmf.codegen.templates.lite.editor.PluginPropertiesGenerator; +import org.eclipse.gmf.codegen.templates.lite.editor.PluginXML; +import org.eclipse.gmf.codegen.templates.lite.editor.VisualIDRegistryGenerator; +import org.eclipse.gmf.codegen.templates.lite.parts.ChildNodeEditPartGenerator; +import org.eclipse.gmf.codegen.templates.lite.parts.CompartmentEditPartGenerator; +import org.eclipse.gmf.codegen.templates.lite.parts.DiagramEditPartGenerator; +import org.eclipse.gmf.codegen.templates.lite.parts.EditPartFactoryGenerator; +import org.eclipse.gmf.codegen.templates.lite.parts.LinkEditPartGenerator; +import org.eclipse.gmf.codegen.templates.lite.parts.LinkLabelEditPartGenerator; +import org.eclipse.gmf.codegen.templates.lite.parts.NodeEditPartGenerator; +import org.eclipse.gmf.codegen.templates.lite.parts.NodeLabelEditPartGenerator; +import org.eclipse.gmf.codegen.templates.lite.parts.UpdatableEditPartGenerator; +import org.eclipse.gmf.codegen.templates.lite.providers.AbstractParserGenerator; +import org.eclipse.gmf.codegen.templates.lite.providers.CompartmentViewFactoryGenerator; +import org.eclipse.gmf.codegen.templates.lite.providers.DiagramViewFactoryGenerator; +import org.eclipse.gmf.codegen.templates.lite.providers.DomainElementInitializerGenerator; +import org.eclipse.gmf.codegen.templates.lite.providers.LabelViewFactoryGenerator; +import org.eclipse.gmf.codegen.templates.lite.providers.LinkViewFactoryGenerator; +import org.eclipse.gmf.codegen.templates.lite.providers.NodeViewFactoryGenerator; +import org.eclipse.gmf.codegen.templates.lite.providers.PropertySourceProviderGenerator; +import org.osgi.framework.Bundle; + +/** + * Provides JET templates. + * FIXME Merge with {@link org.eclipse.gmf.codegen.util.CodegenEmitters} + * + * @author artem + */ +public class CodegenEmitters { + + private final EmitterFactory myFactory; + + private final String[] myTemplatePath; + + private static StaticTemplateRegistry myRegistry; + + public CodegenEmitters(boolean usePrecompiled, String templateDirectory) { + myRegistry = initRegistry(); + String[] variables = new String[] { "org.eclipse.emf.codegen", "org.eclipse.emf.codegen.ecore", "org.eclipse.emf.common", "org.eclipse.emf.ecore", "org.eclipse.gmf.common", + "org.eclipse.gmf.codegen" }; + myTemplatePath = new String[] { + usePrecompiled ? null : templateDirectory != null && templateDirectory.indexOf(":") == -1 ? URI.createPlatformResourceURI(templateDirectory).toString() : templateDirectory, + getTemplatesBundle().getEntry("/templates/").toString() }; + myFactory = new EmitterFactory(getTemplatePath(), myRegistry, usePrecompiled, variables, true); + } + + private static StaticTemplateRegistry initRegistry() { + final StaticTemplateRegistry tr = new StaticTemplateRegistry(CodegenEmitters.class.getClassLoader()); + put(tr, "/providers/CompartmentViewFactory.javajet", CompartmentViewFactoryGenerator.class); + put(tr, "/providers/DiagramViewFactory.javajet", DiagramViewFactoryGenerator.class); + put(tr, "/providers/LabelViewFactory.javajet", LabelViewFactoryGenerator.class); + put(tr, "/providers/LinkViewFactory.javajet", LinkViewFactoryGenerator.class); + put(tr, "/providers/NodeViewFactory.javajet", NodeViewFactoryGenerator.class); + put(tr, "/parts/CompartmentEditPart.javajet", CompartmentEditPartGenerator.class); + put(tr, "/editor/CreationWizard.javajet", CreationWizardGenerator.class); + put(tr, "/editor/CreationWizardPage.javajet", CreationWizardPageGenerator.class); + put(tr, "/editor/DiagramEditorUtil.javajet", DiagramEditorUtilGenerator.class); + // put(tr, "/editor/MatchingStrategy.javajet", + // MatchingStrategyGenerator.class); + put(tr, "/editor/PaletteFactory.javajet", PaletteFactoryGenerator.class); + put(tr, "/editor/VisualIDRegistry.javajet", VisualIDRegistryGenerator.class); + put(tr, "/parts/DiagramEditPart.javajet", DiagramEditPartGenerator.class); + put(tr, "/parts/EditPartFactory.javajet", EditPartFactoryGenerator.class); + put(tr, "/parts/IUpdatableEditPart.javajet", UpdatableEditPartGenerator.class); + put(tr, "/providers/AbstractParser.javajet", AbstractParserGenerator.class); + put(tr, "/providers/DomainElementInitializer.javajet", DomainElementInitializerGenerator.class); + put(tr, "/providers/PropertySourceProvider.javajet", PropertySourceProviderGenerator.class); + put(tr, "/editor/ActionBarContributor.javajet", ActionBarContributorGenerator.class); + put(tr, "/editor/Editor.javajet", EditorGenerator.class); + put(tr, "/parts/LinkEditPart.javajet", LinkEditPartGenerator.class); + put(tr, "/parts/LinkLabelEditPart.javajet", LinkLabelEditPartGenerator.class); + put(tr, "/parts/ChildNodeEditPart.javajet", ChildNodeEditPartGenerator.class); + put(tr, "/parts/NodeEditPart.javajet", NodeEditPartGenerator.class); + put(tr, "/parts/NodeLabelEditPart.javajet", NodeLabelEditPartGenerator.class); + put(tr, "/editor/Plugin.javajet", PluginGenerator.class); + // put(tr, "/editor/ModelCreationFactory.javajet", ModelCreationFactoryGenerator.class); + put(tr, "/editor/manifest.mfjet", ManifestGenerator.class); + put(tr, "/editor/build.propertiesjet", BuildPropertiesGenerator.class); + put(tr, "/editor/plugin.xmljet", PluginXML.class); + put(tr, "/editor/plugin.propertiesjet", PluginPropertiesGenerator.class); + return tr; + } + + public JETEmitter getCompartmentViewFactoryGenerator() throws UnexpectedBehaviourException { + return retrieve(CompartmentViewFactoryGenerator.class); + } + + public JETEmitter getDiagramViewFactoryGenerator() throws UnexpectedBehaviourException { + return retrieve(DiagramViewFactoryGenerator.class); + } + + public JETEmitter getLabelViewFactoryGenerator() throws UnexpectedBehaviourException { + return retrieve(LabelViewFactoryGenerator.class); + } + + public JETEmitter getLinkViewFactoryGenerator() throws UnexpectedBehaviourException { + return retrieve(LinkViewFactoryGenerator.class); + } + + public JETEmitter getNodeViewFactoryGenerator() throws UnexpectedBehaviourException { + return retrieve(NodeViewFactoryGenerator.class); + } + + public JETEmitter getAbstractParserGenerator() throws UnexpectedBehaviourException { + return retrieve(AbstractParserGenerator.class); + } + + public JETEmitter getDomainElementInitializerGenerator() throws UnexpectedBehaviourException { + return retrieve(DomainElementInitializerGenerator.class); + } + + public JETEmitter getPropertySourceProviderGenerator() throws UnexpectedBehaviourException { + return retrieve(PropertySourceProviderGenerator.class); + } + + public JETEmitter getCompartmentEditPartGenerator() throws UnexpectedBehaviourException { + return retrieve(CompartmentEditPartGenerator.class); + } + + public JETEmitter getDiagramEditPartGenerator() throws UnexpectedBehaviourException { + return retrieve(DiagramEditPartGenerator.class); + } + + public JETEmitter getEditPartFactoryGenerator() throws UnexpectedBehaviourException { + return retrieve(EditPartFactoryGenerator.class); + } + + public JETEmitter getUpdatableEditPartGenerator() throws UnexpectedBehaviourException { + return retrieve(UpdatableEditPartGenerator.class); + } + + public JETEmitter getLinkEditPartGenerator() throws UnexpectedBehaviourException { + return retrieve(LinkEditPartGenerator.class); + } + + public JETEmitter getLinkLabelEditPartGenerator() throws UnexpectedBehaviourException { + return retrieve(LinkLabelEditPartGenerator.class); + } + + public JETEmitter getChildNodeEditPartGenerator() throws UnexpectedBehaviourException { + return retrieve(ChildNodeEditPartGenerator.class); + } + + public JETEmitter getNodeEditPartGenerator() throws UnexpectedBehaviourException { + return retrieve(NodeEditPartGenerator.class); + } + + public JETEmitter getNodeLabelEditPartGenerator() throws UnexpectedBehaviourException { + return retrieve(NodeLabelEditPartGenerator.class); + } + + public JETEmitter getPluginGenerator() throws UnexpectedBehaviourException { + return retrieve(PluginGenerator.class); + } + + public JETEmitter getActionBarContributorGenerator() throws UnexpectedBehaviourException { + return retrieve(ActionBarContributorGenerator.class); + } + + public JETEmitter getEditorGenerator() throws UnexpectedBehaviourException { + return retrieve(EditorGenerator.class); + } + + public JETEmitter getCreationWizardGenerator() throws UnexpectedBehaviourException { + return retrieve(CreationWizardGenerator.class); + } + + public JETEmitter getCreationWizardPageGenerator() throws UnexpectedBehaviourException { + return retrieve(CreationWizardPageGenerator.class); + } + + public JETEmitter getDiagramEditorUtilGenerator() throws UnexpectedBehaviourException { + return retrieve(DiagramEditorUtilGenerator.class); + } + + public JETEmitter getPaletteFactoryGenerator() throws UnexpectedBehaviourException { + return retrieve(PaletteFactoryGenerator.class); + } + + public JETEmitter getVisualIDRegistryGenerator() throws UnexpectedBehaviourException { + return retrieve(VisualIDRegistryGenerator.class); + } + + public JETEmitter getManifestGenerator() throws UnexpectedBehaviourException { + return retrieve(ManifestGenerator.class); + } + + public JETEmitter getBuildPropertiesGenerator() throws UnexpectedBehaviourException { + return retrieve(BuildPropertiesGenerator.class); + } + + public JETEmitter getPluginXML() throws UnexpectedBehaviourException { + return retrieve(PluginXML.class); + } + + public JETEmitter getPluginPropertiesGenerator() throws UnexpectedBehaviourException { + return retrieve(PluginPropertiesGenerator.class); + } + + /** + * @see #retrieve(Class) + */ + private static void put(StaticTemplateRegistry tr, String path, Class precompiledTemplate) { + tr.put(precompiledTemplate, path, precompiledTemplate); + } + + /** + * depends on {@link #put(StaticTemplateRegistry, String, Class) } impl - + * class object of precompiled template serves as a key + */ + private JETEmitter retrieve(Class key) throws UnexpectedBehaviourException { + try { + return myFactory.acquireEmitter(key); + } catch (NoSuchTemplateException ex) { + throw new UnexpectedBehaviourException(ex.getMessage(), ex); + } + } + + private String[] getTemplatePath() { + return myTemplatePath; + } + + private static Bundle getTemplatesBundle() { + return Activator.getDefault(); + } + + public URL getJMergeControlFile() { + return getTemplatesBundle().getEntry("/templates/emf-merge.xml"); + } + + public GIFEmitter getShortcutImageEmitter() throws JETException { + String templateLocation = JETCompiler.find(getTemplatePath(), "/editor/shortcut.gif"); + if (templateLocation == null) { + throw new JETException("shortcut image template not found"); + } + return new GIFEmitter(templateLocation); + } +} Index: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/LinkLabelEditPartGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/LinkLabelEditPartGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/parts/LinkLabelEditPartGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/parts/LinkLabelEditPartGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,807 @@ +package org.eclipse.gmf.codegen.templates.lite.parts; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; +import java.util.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; +import org.eclipse.emf.ecore.*; + +public class LinkLabelEditPartGenerator +{ + protected static String nl; + public static synchronized LinkLabelEditPartGenerator create(String lineSeparator) + { + nl = lineSeparator; + LinkLabelEditPartGenerator result = new LinkLabelEditPartGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_5 = " extends "; + protected final String TEXT_6 = " {"; + protected final String TEXT_7 = NL; + protected final String TEXT_8 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_9 = " manager;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate String defaultText;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_10 = "(View view) {" + NL + "\t\tassert view instanceof Node;" + NL + "\t\tsetModel(view);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate Node getDiagramNode() {" + NL + "\t\treturn (Node)getModel();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void createEditPolicies() {"; + protected final String TEXT_11 = NL + "\t\tinstallEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new "; + protected final String TEXT_12 = "() {" + NL + "\t\t\tpublic EditPart getHost() {" + NL + "\t\t\t\treturn getUpdatableParent();" + NL + "\t\t\t}" + NL + "\t\t});"; + protected final String TEXT_13 = NL; + protected final String TEXT_14 = "\t\tinstallEditPolicy("; + protected final String TEXT_15 = ".DIRECT_EDIT_ROLE," + NL + "\t\t\t\tnew "; + protected final String TEXT_16 = "() {" + NL + "\t\t\t\t\tprotected void showCurrentEditValue("; + protected final String TEXT_17 = " request) {" + NL + "\t\t\t\t\t\tString value = (String) request.getCellEditor().getValue();" + NL + "\t\t\t\t\t\tgetLabel().setText(value);" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tprotected "; + protected final String TEXT_18 = " getDirectEditCommand("; + protected final String TEXT_19 = " request) {" + NL + "\t\t\t\t\t\tString value = (String) request.getCellEditor().getValue();" + NL + "\t\t\t\t\t\tif (value == null) {" + NL + "\t\t\t\t\t\t\t//Invalid value is transformed into a null by the validator." + NL + "\t\t\t\t\t\t\t//XXX: implement validator" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_20 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\tfinal Object[] parseResult;" + NL + "\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\tparseResult = new "; + protected final String TEXT_21 = "(EDIT_PATTERN).parse(value);" + NL + "\t\t\t\t\t\t} catch (IllegalArgumentException e) {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_22 = ".INSTANCE;" + NL + "\t\t\t\t\t\t} catch ("; + protected final String TEXT_23 = " e) {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_24 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}"; + protected final String TEXT_25 = NL + "\t\t\t\t\t\tif (parseResult.length != 1) {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_26 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new "; + protected final String TEXT_27 = "() {" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_28 = " element = "; + protected final String TEXT_29 = ";" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_30 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_31 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_32 = " domainModelEditDomain = "; + protected final String TEXT_33 = ".getEditingDomainFor("; + protected final String TEXT_34 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_35 = " feature = ("; + protected final String TEXT_36 = ") "; + protected final String TEXT_37 = ".eINSTANCE.get"; + protected final String TEXT_38 = "();" + NL + "\t\t\t\t\t\t\t\tObject valueToSet;" + NL + "\t\t\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\t\t\tvalueToSet = "; + protected final String TEXT_39 = ".parseValue(feature, parseResult[0]);" + NL + "\t\t\t\t\t\t\t\t} catch (IllegalArgumentException e) {" + NL + "\t\t\t\t\t\t\t\t\treturn "; + protected final String TEXT_40 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}"; + protected final String TEXT_41 = NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_42 = " result = new "; + protected final String TEXT_43 = "();" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_44 = " values = new "; + protected final String TEXT_45 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get"; + protected final String TEXT_46 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_47 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_48 = ".create(domainModelEditDomain, element, feature, valueToSet));" + NL + "\t\t\t\t\t\t\t\treturn result;"; + protected final String TEXT_49 = NL + "\t\t\t\t\t\t\t\treturn "; + protected final String TEXT_50 = ".create(domainModelEditDomain, element, feature, valueToSet);"; + protected final String TEXT_51 = NL + "\t\t\t\t\t\t\t}"; + protected final String TEXT_52 = NL + "\t\t\t\t\t\tif (parseResult.length != "; + protected final String TEXT_53 = ") {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_54 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new "; + protected final String TEXT_55 = "() {" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_56 = " element = "; + protected final String TEXT_57 = ";" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_58 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate "; + protected final String TEXT_59 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_60 = " domainModelEditDomain = "; + protected final String TEXT_61 = ".getEditingDomainFor("; + protected final String TEXT_62 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_63 = " result = new "; + protected final String TEXT_64 = "();" + NL + "\t\t\t\t\t\t\t\tObject valueToSet;"; + protected final String TEXT_65 = NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_66 = " "; + protected final String TEXT_67 = "feature = ("; + protected final String TEXT_68 = ") "; + protected final String TEXT_69 = ".eINSTANCE.get"; + protected final String TEXT_70 = "();" + NL + "\t\t\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\t\t\tvalueToSet = "; + protected final String TEXT_71 = ".parseValue(feature, parseResult["; + protected final String TEXT_72 = "]);" + NL + "\t\t\t\t\t\t\t\t} catch (IllegalArgumentException e) {" + NL + "\t\t\t\t\t\t\t\t\treturn "; + protected final String TEXT_73 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}"; + protected final String TEXT_74 = NL + "\t\t\t\t\t\t\t\t"; + protected final String TEXT_75 = " "; + protected final String TEXT_76 = "values = new "; + protected final String TEXT_77 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get"; + protected final String TEXT_78 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_79 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_80 = ".create(domainModelEditDomain, element, feature, valueToSet));"; + protected final String TEXT_81 = NL + "\t\t\t\t\t\t\t\tresult.append("; + protected final String TEXT_82 = ".create(domainModelEditDomain, element, feature, valueToSet));"; + protected final String TEXT_83 = NL + "\t\t\t\t\t\t\t\treturn result;" + NL + "\t\t\t\t\t\t\t}"; + protected final String TEXT_84 = NL + "\t\t\t\t\t\t\tpublic void undo() {" + NL + "\t\t\t\t\t\t\t\tdomainModelCommand.undo();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t\tpublic void execute() {" + NL + "\t\t\t\t\t\t\t\tdomainModelCommand.execute();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t\tpublic boolean canUndo() {" + NL + "\t\t\t\t\t\t\t\treturn element != null && domainModelCommand != null && domainModelCommand.canUndo();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t\tpublic boolean canExecute() {" + NL + "\t\t\t\t\t\t\t\treturn element != null && domainModelCommand != null && domainModelCommand.canExecute();" + NL + "\t\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\t};" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t});"; + protected final String TEXT_85 = NL + "\t}" + NL; + protected final String TEXT_86 = NL; + protected final String TEXT_87 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void performRequest("; + protected final String TEXT_88 = " req) {" + NL + "\t\tif ("; + protected final String TEXT_89 = ".REQ_DIRECT_EDIT == req.getType()) {" + NL + "\t\t\tperformDirectEdit();" + NL + "\t\t} else {" + NL + "\t\t\tsuper.performRequest(req);" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_90 = " getManager() {" + NL + "\t\tif (manager == null) {" + NL + "\t\t\tmanager = new "; + protected final String TEXT_91 = "(this, "; + protected final String TEXT_92 = ".class, new "; + protected final String TEXT_93 = "() {" + NL + "\t\t\t\tpublic void relocate("; + protected final String TEXT_94 = " celleditor) {" + NL + "\t\t\t\t\t"; + protected final String TEXT_95 = " rect = getLabel().getTextBounds();" + NL + "\t\t\t\t\tgetLabel().translateToAbsolute(rect);" + NL + "\t\t\t\t\tcelleditor.getControl().setBounds(rect.x, rect.y, rect.width, rect.height);" + NL + "\t\t\t\t}" + NL + "\t\t\t}) {" + NL + "\t\t\t\tprotected void initCellEditor() {" + NL + "\t\t\t\t\tgetCellEditor().setValue(getLabelEditText());" + NL + "\t\t\t\t}" + NL + "\t\t\t};" + NL + "\t\t}" + NL + "\t\treturn manager;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void performDirectEdit() {" + NL + "\t\tgetManager().show();" + NL + "\t}" + NL; + protected final String TEXT_96 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshVisuals() {" + NL + "\t\tsuper.refreshVisuals();" + NL + "\t\trefreshLabel();" + NL + "\t\trefreshFont();" + NL + "\t\trefreshFontColor();" + NL + "\t\trefreshBounds();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshBounds() {" + NL + "\t\tNode node = getDiagramNode();" + NL + "\t\tassert node.getLayoutConstraint() instanceof Location;" + NL + "\t\tfinal Location location = (Location) node.getLayoutConstraint();" + NL + "\t\t(("; + protected final String TEXT_97 = ") getParent()).setLayoutConstraint(this," + NL + "\t\t\t\tgetFigure(), new "; + protected final String TEXT_98 = "() {" + NL + "\t\t\t\t\tprotected "; + protected final String TEXT_99 = " getReferencePoint() {" + NL + "\t\t\t\t\t\t"; + protected final String TEXT_100 = " parent = getUpdatableParent();" + NL + "\t\t\t\t\t\t"; + protected final String TEXT_101 = " connection = ("; + protected final String TEXT_102 = ") parent.getFigure();" + NL + "\t\t\t\t\t\t"; + protected final String TEXT_103 = " midPoint = connection.getPoints().getMidpoint().getCopy();" + NL + "\t\t\t\t\t\tconnection.translateToAbsolute(midPoint);" + NL + "\t\t\t\t\t\treturn midPoint.translate(new "; + protected final String TEXT_104 = "(location.getX(), location.getY()));" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t});" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshLabel() {" + NL + "\t\tgetLabel().setText(getLabelText());" + NL + "\t}" + NL; + protected final String TEXT_105 = NL; + protected final String TEXT_106 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String VIEW_PATTERN = \""; + protected final String TEXT_107 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String EDIT_PATTERN = \""; + protected final String TEXT_108 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String getLabelText() {" + NL + "\t\t"; + protected final String TEXT_109 = " element = "; + protected final String TEXT_110 = ";" + NL + "\t\tif (element == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}" + NL + "\t\treturn buildTextByPattern(element, VIEW_PATTERN);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String getLabelEditText() {" + NL + "\t\t"; + protected final String TEXT_111 = " element = "; + protected final String TEXT_112 = ";" + NL + "\t\tif (element == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}" + NL + "\t\treturn buildTextByPattern(element, EDIT_PATTERN);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String buildTextByPattern("; + protected final String TEXT_113 = " element, String pattern) {"; + protected final String TEXT_114 = NL + "\t\tif (element.get"; + protected final String TEXT_115 = "() == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}"; + protected final String TEXT_116 = NL + "\t\treturn "; + protected final String TEXT_117 = ".format(pattern, new Object[] {"; + protected final String TEXT_118 = NL + "\t\t\t"; + protected final String TEXT_119 = NL + "\t\t});"; + protected final String TEXT_120 = NL + "\t\treturn "; + protected final String TEXT_121 = ".format(pattern, new Object[] {"; + protected final String TEXT_122 = NL + "\t\t"; + protected final String TEXT_123 = ","; + protected final String TEXT_124 = NL + "\t\t});"; + protected final String TEXT_125 = NL + "\t\t//XXX: unexpected model facet." + NL + "\t\treturn defaultText;"; + protected final String TEXT_126 = NL + "\t}"; + protected final String TEXT_127 = NL; + protected final String TEXT_128 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFont() {" + NL + "\t\t"; + protected final String TEXT_129 = " style =" + NL + "\t\t\t("; + protected final String TEXT_130 = ") "; + protected final String TEXT_131 = ".getStyle(" + NL + "\t\t\t\t"; + protected final String TEXT_132 = ".eINSTANCE.getFontStyle());" + NL + "\t\t"; + protected final String TEXT_133 = " toDispose = createdFont;" + NL + "\t\tif (style != null) {" + NL + "\t\t\tString fontName = style.getFontName();" + NL + "\t\t\tint fontHeight = style.getFontHeight();" + NL + "\t\t\tint fontStyle = "; + protected final String TEXT_134 = ".NORMAL;" + NL + "\t\t\tif (style.isBold()) {" + NL + "\t\t\t\tfontStyle |= "; + protected final String TEXT_135 = ".BOLD;" + NL + "\t\t\t}" + NL + "\t\t\tif (style.isItalic()) {" + NL + "\t\t\t\tfontStyle |= "; + protected final String TEXT_136 = ".ITALIC;" + NL + "\t\t\t}" + NL + "\t\t\t"; + protected final String TEXT_137 = " currentFont = getFigure().getFont();" + NL + "\t\t\tif (currentFont != null) {" + NL + "\t\t\t\t"; + protected final String TEXT_138 = " currentFontData = currentFont.getFontData()[0];" + NL + "\t\t\t\tif (currentFontData.getName().equals(fontName) && currentFontData.getHeight() == fontHeight && currentFontData.getStyle() == fontStyle) {" + NL + "\t\t\t\t\treturn;" + NL + "\t\t\t\t}" + NL + "\t\t\t}" + NL + "\t\t\tcreatedFont = new "; + protected final String TEXT_139 = "(null, fontName, fontHeight, fontStyle);" + NL + "\t\t\tgetFigure().setFont(createdFont);" + NL + "\t\t} else {" + NL + "\t\t\t//revert to the default font" + NL + "\t\t\tgetFigure().setFont(getViewer().getControl().getFont());" + NL + "\t\t\tcreatedFont = null;" + NL + "\t\t}" + NL + "\t\tif (toDispose != null) {" + NL + "\t\t\ttoDispose.dispose();" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * The font (created by {@link #refreshFont()}) currently assigned to the label (unless the default font is assigned)." + NL + "\t * Whenever another non-default font is assigned to it, it is safe to dispose the previous one." + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_140 = " createdFont;"; + protected final String TEXT_141 = NL; + protected final String TEXT_142 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFontColor() {" + NL + "\t\t"; + protected final String TEXT_143 = " style = ("; + protected final String TEXT_144 = ") "; + protected final String TEXT_145 = ".getStyle("; + protected final String TEXT_146 = ".eINSTANCE.getFontStyle());" + NL + "\t\t"; + protected final String TEXT_147 = " toDispose = createdFontColor;" + NL + "\t\tif (style != null) {" + NL + "\t\t\tint fontColor = style.getFontColor();" + NL + "\t\t\tint red = fontColor & 0x000000FF;" + NL + "\t\t\tint green = (fontColor & 0x0000FF00) >> 8;" + NL + "\t\t\tint blue = (fontColor & 0x00FF0000) >> 16;" + NL + "\t\t\t"; + protected final String TEXT_148 = " currentColor = getLabel().getForegroundColor();" + NL + "\t\t\tif (currentColor != null && currentColor.getRed() == red && currentColor.getGreen() == green && currentColor.getBlue() == blue) {" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t\tcreatedFontColor = new "; + protected final String TEXT_149 = "(null, red, green, blue);" + NL + "\t\t\tgetFigure().setForegroundColor(createdFontColor);" + NL + "\t\t} else {" + NL + "\t\t\tgetFigure().setForegroundColor(getViewer().getControl().getForeground());" + NL + "\t\t\tcreatedFontColor = null;" + NL + "\t\t}" + NL + "\t\tif (toDispose != null) {" + NL + "\t\t\ttoDispose.dispose();" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * The color (created by {@link #refreshFontColor()}) currently assigned to the label." + NL + "\t * Whenever another color is assigned to it, it is safe to dispose the previous one." + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_150 = " createdFontColor;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_151 = " resolveSemanticElement() {" + NL + "\t\tfor(EditPart editPart = this; editPart != null; editPart = editPart.getParent()) {" + NL + "\t\t\tView view = (View)editPart.getModel();" + NL + "\t\t\tif (view != null && view.getElement() != null) {" + NL + "\t\t\t\treturn ("; + protected final String TEXT_152 = ") view.getElement();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_153 = " getUpdatableParent() {" + NL + "\t\tfor(EditPart editPart = getParent(); editPart != null; editPart = editPart.getParent()) {" + NL + "\t\t\tif (editPart instanceof "; + protected final String TEXT_154 = ") {" + NL + "\t\t\t\treturn ("; + protected final String TEXT_155 = ") editPart;" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void activate() {" + NL + "\t\tsuper.activate();" + NL + "\t\t"; + protected final String TEXT_156 = " updatableParent = getUpdatableParent();" + NL + "\t\tif (updatableParent != null) {" + NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_157 = ".eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);" + NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_158 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_159 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_160 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_161 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);"; + protected final String TEXT_162 = NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_163 = ".eINSTANCE.get"; + protected final String TEXT_164 = "(), labelRefresher);"; + protected final String TEXT_165 = NL + "\t\t\tupdatableParent.addRefresher("; + protected final String TEXT_166 = ".eINSTANCE.get"; + protected final String TEXT_167 = "(), labelRefresher);"; + protected final String TEXT_168 = NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void deactivate() {" + NL + "\t\tsuper.deactivate();" + NL + "\t\t"; + protected final String TEXT_169 = " updatableParent = getUpdatableParent();" + NL + "\t\tif (updatableParent != null) {" + NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_170 = ".eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_171 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_172 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_173 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_174 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);"; + protected final String TEXT_175 = NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_176 = ".eINSTANCE.get"; + protected final String TEXT_177 = "(), labelRefresher);"; + protected final String TEXT_178 = NL + "\t\t\tupdatableParent.removeRefresher("; + protected final String TEXT_179 = ".eINSTANCE.get"; + protected final String TEXT_180 = "(), labelRefresher);"; + protected final String TEXT_181 = NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate IUpdatableEditPart.Refresher labelRefresher = new IUpdatableEditPart.Refresher() {" + NL + "\t\tpublic void refresh() {" + NL + "\t\t\trefreshLabel();" + NL + "\t\t}" + NL + "\t};" + NL + "" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate IUpdatableEditPart.Refresher fontColorRefresher = new IUpdatableEditPart.Refresher() {" + NL + "\t\tpublic void refresh() {" + NL + "\t\t\trefreshFontColor();" + NL + "\t\t}" + NL + "\t};" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate IUpdatableEditPart.Refresher fontRefresher = new IUpdatableEditPart.Refresher() {" + NL + "\t\tpublic void refresh() {" + NL + "\t\t\trefreshFont();" + NL + "\t\t}" + NL + "\t};" + NL; + protected final String TEXT_182 = NL; + protected final String TEXT_183 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_184 = " createFigure() {" + NL + "\t\t"; + protected final String TEXT_185 = " label = createLabel();" + NL + "\t\tdefaultText = label.getText();" + NL + "\t\treturn label;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_186 = " createLabel() {"; + protected final String TEXT_187 = NL + "\t\treturn new "; + protected final String TEXT_188 = "();"; + protected final String TEXT_189 = NL + "\t\treturn "; + protected final String TEXT_190 = ";"; + protected final String TEXT_191 = NL + "\t\treturn new "; + protected final String TEXT_192 = "();"; + protected final String TEXT_193 = NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_194 = " getLabel() {" + NL + "\t\treturn ("; + protected final String TEXT_195 = ") getFigure();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void setLabel("; + protected final String TEXT_196 = " figure) {" + NL + "\t\tunregisterVisuals();" + NL + "\t\tsetFigure(figure);" + NL + "\t\tdefaultText = figure.getText();" + NL + "\t\tregisterVisuals();" + NL + "\t\trefreshVisuals();" + NL + "\t}" + NL; + protected final String TEXT_197 = NL; + protected final String TEXT_198 = NL; + protected final String TEXT_199 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static class MapModeWorkaround {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic int DPtoLP(int dp) {" + NL + "\t\t\treturn dp;" + NL + "\t\t}" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic static MapModeWorkaround INSTANCE = new MapModeWorkaround();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate MapModeWorkaround getMapMode() {" + NL + "\t\treturn MapModeWorkaround.INSTANCE;" + NL + "\t}"; + protected final String TEXT_200 = NL + "}"; + protected final String TEXT_201 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenLinkLabel genLabel = (GenLinkLabel) ((Object[]) argument)[0]; +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +GenLink genHost = genLabel.getLink(); +GenDiagram genDiagram = genLabel.getDiagram(); +LabelModelFacet labelModelFacet = genLabel.getModelFacet(); +GenClass underlyingMetaClass; +if (genHost.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet typeLinkModelFacet = (TypeLinkModelFacet) genHost.getModelFacet(); + underlyingMetaClass = typeLinkModelFacet.getMetaClass(); +} else if (genHost.getModelFacet() instanceof FeatureLinkModelFacet) { + FeatureLinkModelFacet featureLinkModelFacet = (FeatureLinkModelFacet) genHost.getModelFacet(); + underlyingMetaClass = featureLinkModelFacet.getMetaFeature().getTypeGenClass(); +} else { + underlyingMetaClass = null; +} + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + importManager.emitPackageStatement(stringBuffer); +importManager.addImport("org.eclipse.draw2d.geometry.Point"); +importManager.addImport("org.eclipse.gef.EditPart"); +importManager.addImport("org.eclipse.gef.EditPolicy"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Location"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Node"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_4); + stringBuffer.append(genLabel.getEditPartClassName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")); + stringBuffer.append(TEXT_6); + stringBuffer.append(TEXT_7); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")); + stringBuffer.append(TEXT_9); + stringBuffer.append(genLabel.getEditPartClassName()); + stringBuffer.append(TEXT_10); + +final String primaryView = "getUpdatableParent().getDiagramEdge()"; +final String resolvedSemanticElement = "resolveSemanticElement()"; + + stringBuffer.append(TEXT_11); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy")); + stringBuffer.append(TEXT_12); + +if (labelModelFacet instanceof FeatureLabelModelFacet == true || labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + + stringBuffer.append(TEXT_13); + stringBuffer.append(TEXT_14); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_15); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.DirectEditPolicy")); + stringBuffer.append(TEXT_16); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest")); + stringBuffer.append(TEXT_17); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_18); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest")); + stringBuffer.append(TEXT_19); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_20); + stringBuffer.append(importManager.getImportedName("java.text.MessageFormat")); + stringBuffer.append(TEXT_21); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_22); + stringBuffer.append(importManager.getImportedName("java.text.ParseException")); + stringBuffer.append(TEXT_23); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_24); + +if (labelModelFacet instanceof FeatureLabelModelFacet && !genLabel.isReadOnly()) { + GenFeature featureToSet = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); + EStructuralFeature ecoreFeature = featureToSet.getEcoreFeature(); + + stringBuffer.append(TEXT_25); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_26); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_27); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_28); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_29); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_30); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_31); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")); + stringBuffer.append(TEXT_32); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_33); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_34); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_35); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_36); + stringBuffer.append(importManager.getImportedName(featureToSet.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_37); + stringBuffer.append(featureToSet.getFeatureAccessorName()); + stringBuffer.append(TEXT_38); + stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName())); + stringBuffer.append(TEXT_39); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")); + stringBuffer.append(TEXT_40); + + if (ecoreFeature.isMany()) { + + stringBuffer.append(TEXT_41); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_42); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_43); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList")); + stringBuffer.append(TEXT_44); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")); + stringBuffer.append(TEXT_45); + stringBuffer.append(featureToSet.getAccessorName()); + stringBuffer.append(TEXT_46); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_47); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand")); + stringBuffer.append(TEXT_48); + + } else { + + stringBuffer.append(TEXT_49); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_50); + + } + + stringBuffer.append(TEXT_51); + +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + List metaFeatures = compositeFeatureLabelModelFacet.getMetaFeatures(); + + stringBuffer.append(TEXT_52); + stringBuffer.append(metaFeatures.size()); + stringBuffer.append(TEXT_53); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_54); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_55); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_56); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_57); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_58); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command")); + stringBuffer.append(TEXT_59); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")); + stringBuffer.append(TEXT_60); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_61); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_62); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_63); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_64); + + boolean haveDeclaredValues = false; + for(int i = 0; i < metaFeatures.size(); i++) { + GenFeature nextFeatureToSet = (GenFeature) metaFeatures.get(i); + EStructuralFeature nextEcoreFeature = nextFeatureToSet.getEcoreFeature(); + + stringBuffer.append(TEXT_65); + if (i == 0) { + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_66); + } + stringBuffer.append(TEXT_67); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")); + stringBuffer.append(TEXT_68); + stringBuffer.append(importManager.getImportedName(nextFeatureToSet.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_69); + stringBuffer.append(nextFeatureToSet.getFeatureAccessorName()); + stringBuffer.append(TEXT_70); + stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName())); + stringBuffer.append(TEXT_71); + stringBuffer.append(i); + stringBuffer.append(TEXT_72); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")); + stringBuffer.append(TEXT_73); + + if (nextEcoreFeature.isMany()) { + + stringBuffer.append(TEXT_74); + if (!haveDeclaredValues) { haveDeclaredValues = true; + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList")); + stringBuffer.append(TEXT_75); + } + stringBuffer.append(TEXT_76); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")); + stringBuffer.append(TEXT_77); + stringBuffer.append(nextFeatureToSet.getAccessorName()); + stringBuffer.append(TEXT_78); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_79); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand")); + stringBuffer.append(TEXT_80); + + } else { + + stringBuffer.append(TEXT_81); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_82); + + } + + + } + + stringBuffer.append(TEXT_83); + +} + + stringBuffer.append(TEXT_84); + +} + + stringBuffer.append(TEXT_85); + +if (labelModelFacet instanceof FeatureLabelModelFacet == true || labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + + stringBuffer.append(TEXT_86); + stringBuffer.append(TEXT_87); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request")); + stringBuffer.append(TEXT_88); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants")); + stringBuffer.append(TEXT_89); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")); + stringBuffer.append(TEXT_90); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")); + stringBuffer.append(TEXT_91); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.TextCellEditor")); + stringBuffer.append(TEXT_92); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.CellEditorLocator")); + stringBuffer.append(TEXT_93); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.CellEditor")); + stringBuffer.append(TEXT_94); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")); + stringBuffer.append(TEXT_95); + +} + + stringBuffer.append(TEXT_96); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")); + stringBuffer.append(TEXT_97); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.AbstractLocator")); + stringBuffer.append(TEXT_98); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point")); + stringBuffer.append(TEXT_99); + stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_100); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Connection")); + stringBuffer.append(TEXT_101); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Connection")); + stringBuffer.append(TEXT_102); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point")); + stringBuffer.append(TEXT_103); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point")); + stringBuffer.append(TEXT_104); + stringBuffer.append(TEXT_105); + +/*genFeature.getObjectType() throws NPE on primitive types. This is a workaround. */ +HashMap primitiveTypeToWrapperClassName = new HashMap(); +primitiveTypeToWrapperClassName.put(Boolean.TYPE, "Boolean"); +primitiveTypeToWrapperClassName.put(Byte.TYPE, "Byte"); +primitiveTypeToWrapperClassName.put(Character.TYPE, "Character"); +primitiveTypeToWrapperClassName.put(Double.TYPE, "Double"); +primitiveTypeToWrapperClassName.put(Float.TYPE, "Float"); +primitiveTypeToWrapperClassName.put(Integer.TYPE, "Integer"); +primitiveTypeToWrapperClassName.put(Long.TYPE, "Long"); +primitiveTypeToWrapperClassName.put(Short.TYPE, "Short"); +String viewPattern = null; +String editPattern = null; +if (labelModelFacet instanceof FeatureLabelModelFacet) { + FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet; + viewPattern = featureLabelModelFacet.getViewPattern(); + if (viewPattern == null || viewPattern.length() == 0) { + viewPattern = "{0}"; + } + editPattern = featureLabelModelFacet.getEditPattern(); + if (editPattern == null || editPattern.length() == 0) { + editPattern = "{0}"; + } +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + viewPattern = compositeFeatureLabelModelFacet.getViewPattern(); + if (viewPattern == null || viewPattern.length() == 0) { + StringBuffer patternBuffer = new StringBuffer(); + for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) { + patternBuffer.append("{").append(i).append("} "); + } + viewPattern = patternBuffer.toString().trim(); + } + editPattern = compositeFeatureLabelModelFacet.getEditPattern(); + if (editPattern == null || editPattern.length() == 0) { + StringBuffer patternBuffer = new StringBuffer(); + for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) { + patternBuffer.append("{").append(i).append("} "); + } + editPattern = patternBuffer.toString().trim(); + } +} + + stringBuffer.append(TEXT_106); + stringBuffer.append(viewPattern); + stringBuffer.append(TEXT_107); + stringBuffer.append(editPattern); + stringBuffer.append(TEXT_108); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_109); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_110); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_111); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_112); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_113); + +if (labelModelFacet instanceof FeatureLabelModelFacet) { + FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet; + GenFeature feature = featureLabelModelFacet.getMetaFeature(); + if (!feature.isPrimitiveType()) { + + stringBuffer.append(TEXT_114); + stringBuffer.append(feature.getCapName()); + stringBuffer.append(TEXT_115); + + } + + stringBuffer.append(TEXT_116); + stringBuffer.append(importManager.getImportedName("java.text.MessageFormat")); + stringBuffer.append(TEXT_117); + + String value = "element.get" + feature.getCapName() + "()"; /*XXX: getTypedKey is not a part of public API!*/ + if (feature.isPrimitiveType()) { + value = "new " + primitiveTypeToWrapperClassName.get(feature.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")"; + } + + stringBuffer.append(TEXT_118); + stringBuffer.append(value); + stringBuffer.append(TEXT_119); + +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + + stringBuffer.append(TEXT_120); + stringBuffer.append(importManager.getImportedName("java.text.MessageFormat")); + stringBuffer.append(TEXT_121); + + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); + String value = "element.get" + next.getCapName() + "()"; /*XXX: getTypedKey is not a part of public API!*/ + if (next.isPrimitiveType()) { + value = "new " + primitiveTypeToWrapperClassName.get(next.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")"; + } + + stringBuffer.append(TEXT_122); + stringBuffer.append(value); + if (it.hasNext()) { + stringBuffer.append(TEXT_123); + } + + } + + stringBuffer.append(TEXT_124); + +} else { + + stringBuffer.append(TEXT_125); + +} + + stringBuffer.append(TEXT_126); + stringBuffer.append(TEXT_127); + stringBuffer.append(TEXT_128); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_129); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_130); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_131); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_132); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_133); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_134); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_135); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_136); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_137); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.FontData")); + stringBuffer.append(TEXT_138); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_139); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_140); + stringBuffer.append(TEXT_141); + stringBuffer.append(TEXT_142); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_143); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_144); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_145); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_146); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_147); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_148); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_149); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_150); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_151); + stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())); + stringBuffer.append(TEXT_152); + stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_153); + stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_154); + stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_155); + stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_156); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_157); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_158); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_159); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_160); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_161); + +if (labelModelFacet instanceof FeatureLabelModelFacet) { + GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); + + stringBuffer.append(TEXT_162); + stringBuffer.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_163); + stringBuffer.append(feature.getFeatureAccessorName()); + stringBuffer.append(TEXT_164); + +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); + + stringBuffer.append(TEXT_165); + stringBuffer.append(importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_166); + stringBuffer.append(next.getFeatureAccessorName()); + stringBuffer.append(TEXT_167); + + } +} + + stringBuffer.append(TEXT_168); + stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_169); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_170); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_171); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_172); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_173); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_174); + +if (labelModelFacet instanceof FeatureLabelModelFacet) { + GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); + + stringBuffer.append(TEXT_175); + stringBuffer.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_176); + stringBuffer.append(feature.getFeatureAccessorName()); + stringBuffer.append(TEXT_177); + +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); + + stringBuffer.append(TEXT_178); + stringBuffer.append(importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_179); + stringBuffer.append(next.getFeatureAccessorName()); + stringBuffer.append(TEXT_180); + + } +} + + stringBuffer.append(TEXT_181); + stringBuffer.append(TEXT_182); + stringBuffer.append(TEXT_183); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_184); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_185); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_186); + +String figureQualifiedClassName = null; +Viewmap viewmap = genLabel.getViewmap(); +if (viewmap instanceof FigureViewmap) { + figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName(); + if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) { + figureQualifiedClassName = "org.eclipse.draw2d.Label"; + } + + stringBuffer.append(TEXT_187); + stringBuffer.append(importManager.getImportedName(figureQualifiedClassName)); + stringBuffer.append(TEXT_188); + } // instanceof FigureViewmap + else if (viewmap instanceof SnippetViewmap) { + stringBuffer.append(TEXT_189); + stringBuffer.append(((SnippetViewmap) viewmap).getBody()); + stringBuffer.append(TEXT_190); + } // instanceof SnippetViewmap; FIXME : obtain figure class name to generate getter + else if (viewmap instanceof InnerClassViewmap) { + figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName(); + + stringBuffer.append(TEXT_191); + stringBuffer.append(figureQualifiedClassName); + stringBuffer.append(TEXT_192); + } + stringBuffer.append(TEXT_193); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_194); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_195); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label")); + stringBuffer.append(TEXT_196); + +if (genLabel.getViewmap() instanceof InnerClassViewmap) { + String classBody = ((InnerClassViewmap) genLabel.getViewmap()).getClassBody(); + + stringBuffer.append(TEXT_197); + stringBuffer.append(classBody); + stringBuffer.append(TEXT_198); + +if (classBody.indexOf("DPtoLP") != -1) { + + stringBuffer.append(TEXT_199); + +} + + +} + + stringBuffer.append(TEXT_200); + importManager.emitSortedImports(); + stringBuffer.append(TEXT_201); + return stringBuffer.toString(); + } +} Index: templates/parts/refreshMethods/fontColor.javajetinc =================================================================== RCS file: templates/parts/refreshMethods/fontColor.javajetinc diff -N templates/parts/refreshMethods/fontColor.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshMethods/fontColor.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,32 @@ + /** + * @generated + */ + protected void refreshFontColor() { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")%> style = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")%>) <%=primaryView%>.getStyle(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle()); + <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> toDispose = createdFontColor; + if (style != null) { + int fontColor = style.getFontColor(); + int red = fontColor & 0x000000FF; + int green = (fontColor & 0x0000FF00) >> 8; + int blue = (fontColor & 0x00FF0000) >> 16; + <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> currentColor = getLabel().getForegroundColor(); + if (currentColor != null && currentColor.getRed() == red && currentColor.getGreen() == green && currentColor.getBlue() == blue) { + return; + } + createdFontColor = new <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%>(null, red, green, blue); + getFigure().setForegroundColor(createdFontColor); + } else { + getFigure().setForegroundColor(getViewer().getControl().getForeground()); + createdFontColor = null; + } + if (toDispose != null) { + toDispose.dispose(); + } + } + + /** + * The color (created by {@link #refreshFontColor()}) currently assigned to the label. + * Whenever another color is assigned to it, it is safe to dispose the previous one. + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> createdFontColor; Index: templates/copyright4java.jetinc =================================================================== RCS file: templates/copyright4java.jetinc diff -N templates/copyright4java.jetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/copyright4java.jetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,8 @@ +<% +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { +%> +/* + * <%=copyrightText.replaceAll("\n", "\n * ")%> + */ +<%}%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/ActionBarContributorGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/ActionBarContributorGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/ActionBarContributorGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/ActionBarContributorGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,43 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; + +public class ActionBarContributorGenerator +{ + protected static String nl; + public static synchronized ActionBarContributorGenerator create(String lineSeparator) + { + nl = lineSeparator; + ActionBarContributorGenerator result = new ActionBarContributorGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = NL + "import org.eclipse.gef.ui.actions.ActionBarContributor;" + NL + "import org.eclipse.gef.ui.actions.DeleteRetargetAction;" + NL + "import org.eclipse.gef.ui.actions.GEFActionConstants;" + NL + "import org.eclipse.gef.ui.actions.RedoRetargetAction;" + NL + "import org.eclipse.gef.ui.actions.UndoRetargetAction;" + NL + "import org.eclipse.gef.ui.actions.ZoomComboContributionItem;" + NL + "import org.eclipse.gef.ui.actions.ZoomInRetargetAction;" + NL + "import org.eclipse.gef.ui.actions.ZoomOutRetargetAction;" + NL + "import org.eclipse.jface.action.IMenuManager;" + NL + "import org.eclipse.jface.action.IToolBarManager;" + NL + "import org.eclipse.jface.action.MenuManager;" + NL + "import org.eclipse.jface.action.Separator;" + NL + "import org.eclipse.ui.IWorkbenchActionConstants;" + NL + "import org.eclipse.ui.actions.ActionFactory;" + NL + "" + NL + "/**" + NL + " * The action bar contributor for the "; + protected final String TEXT_2 = " editor." + NL + " *" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_3 = " extends ActionBarContributor {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + " protected void buildActions() {" + NL + " addRetargetAction(new UndoRetargetAction());" + NL + " addRetargetAction(new RedoRetargetAction());" + NL + " addRetargetAction(new DeleteRetargetAction());" + NL + " " + NL + " addRetargetAction(new ZoomInRetargetAction());" + NL + " addRetargetAction(new ZoomOutRetargetAction());" + NL + " }" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + " protected void declareGlobalActionKeys() {" + NL + " addGlobalActionKey(ActionFactory.PRINT.getId());" + NL + "\t\taddGlobalActionKey(ActionFactory.DELETE.getId());" + NL + " }" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + " public void contributeToMenu(IMenuManager menuManager) {" + NL + " super.contributeToMenu(menuManager);" + NL + "" + NL + " // add a \"View\" menu after \"Edit\"" + NL + " MenuManager viewMenu = new MenuManager(\"View\");" + NL + " viewMenu.add(getAction(GEFActionConstants.ZOOM_IN));" + NL + " viewMenu.add(getAction(GEFActionConstants.ZOOM_OUT));" + NL + " " + NL + " menuManager.insertAfter(IWorkbenchActionConstants.M_EDIT, viewMenu);" + NL + " }" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + " public void contributeToToolBar(IToolBarManager toolBarManager) {" + NL + " super.contributeToToolBar(toolBarManager);" + NL + "" + NL + " toolBarManager.add(getAction(ActionFactory.UNDO.getId()));" + NL + " toolBarManager.add(getAction(ActionFactory.REDO.getId()));" + NL + " " + NL + " toolBarManager.add(new Separator());" + NL + " toolBarManager.add(new ZoomComboContributionItem(getPage()));" + NL + " }" + NL + "}"; + protected final String TEXT_4 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +final GenEditorView editorView = (GenEditorView) ((Object[]) argument)[0]; +final GenModel genModel = editorView.getEditorGen().getDomainGenModel(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_1); + stringBuffer.append(genModel.getModelName()); + stringBuffer.append(TEXT_2); + stringBuffer.append(editorView.getActionBarContributorClassName()); + stringBuffer.append(TEXT_3); + stringBuffer.append(TEXT_4); + return stringBuffer.toString(); + } +} Index: src/org/eclipse/gmf/internal/codegen/lite/Activator.java =================================================================== RCS file: src/org/eclipse/gmf/internal/codegen/lite/Activator.java diff -N src/org/eclipse/gmf/internal/codegen/lite/Activator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/gmf/internal/codegen/lite/Activator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2006 Borland Software Corporation + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Artem Tikhomirov (Borland) - initial API and implementation + */ +package org.eclipse.gmf.internal.codegen.lite; + +import org.eclipse.core.runtime.Plugin; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; + +public class Activator extends Plugin { + private static Activator anInstance; + + public Activator() { + super(); + } + + public void start(BundleContext context) throws Exception { + super.start(context); + anInstance = this; + } + + public void stop(BundleContext context) throws Exception { + anInstance = null; + super.stop(context); + } + + public static String getPluginID() { + return getDefault().getSymbolicName(); + } + + public static Bundle getDefault() { + return anInstance.getBundle(); + } +} Index: build.properties =================================================================== RCS file: build.properties diff -N build.properties --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ build.properties 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,7 @@ +source.. = src/,\ + src-templates/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.properties,\ + templates/ Index: templates/parts/linkComponentEditPolicy.javajetinc =================================================================== RCS file: templates/parts/linkComponentEditPolicy.javajetinc diff -N templates/parts/linkComponentEditPolicy.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/linkComponentEditPolicy.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,146 @@ + installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.COMPONENT_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ComponentEditPolicy")%>() { + protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> createDeleteCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.GroupRequest")%> deleteRequest) { + return new <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%>() { + private final Edge edgeToRemove = getDiagramEdge(); + private final View source = edgeToRemove.getSource(); + private final View target = edgeToRemove.getTarget(); + private final org.eclipse.emf.common.command.Command domainModelRemoveCommand = createDomainModelRemoveCommand(); + private org.eclipse.emf.common.command.Command createDomainModelRemoveCommand() { +<% + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + GenFeature sourceFeature = modelFacet.getSourceMetaFeature(); + GenFeature containmentFeature = modelFacet.getContainmentMetaFeature(); + GenFeature childFeature = modelFacet.getChildMetaFeature(); + GenFeature targetFeature = modelFacet.getTargetMetaFeature(); + //See creation of links in NodeEditPart + + boolean removeSource = sourceFeature != null; + boolean removeTarget = targetFeature != null; + boolean removeChild = childFeature != null && childFeature != containmentFeature && !childFeature.isDerived(); + if (containmentFeature != null) { + if (sourceFeature != null && sourceFeature.getEcoreFeature() instanceof EReference == true) { + EReference sourceEcoreFeature = (EReference)sourceFeature.getEcoreFeature(); + if (sourceEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) { + removeSource = false; + } + } + if (targetFeature != null && targetFeature.getEcoreFeature() instanceof EReference == true) { + EReference targetEcoreFeature = (EReference)targetFeature.getEcoreFeature(); + if (targetEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) { + removeTarget = false; + } + } +%> + <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%> result = new <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%>(); +<% + if (containmentFeature.getEcoreFeature().isMany()) { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()), + edgeToRemove.getElement().eContainer(), edgeToRemove.getElement().eContainmentFeature(), edgeToRemove.getElement())); +<% + } else { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()), + edgeToRemove.getElement().eContainer(), edgeToRemove.getElement().eContainmentFeature(), <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE)); +<% + } + } else { +%> + return <%=importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")%>.INSTANCE; +<% + } + if (removeChild) { + if (childFeature.getEcoreFeature().isMany()) { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()), + edgeToRemove.getElement().eContainer(), <%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(), + edgeToRemove.getElement())); +<% + } else { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()), + edgeToRemove.getElement().eContainer(), <%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(), + <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE)); +<% + } + } + if (removeSource) { + if (sourceFeature.getEcoreFeature().isMany()) { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()), + edgeToRemove.getElement(), <%=importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=sourceFeature.getFeatureAccessorName()%>(), source.getElement())); +<% + } else { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()), + edgeToRemove.getElement(), <%=importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=sourceFeature.getFeatureAccessorName()%>(), <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE)); +<% + } + } + if (removeTarget) { + if (targetFeature.getEcoreFeature().isMany()) { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()), + edgeToRemove.getElement(), <%=importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=targetFeature.getFeatureAccessorName()%>(), target.getElement())); +<% + } else { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()), + edgeToRemove.getElement(), <%=importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=targetFeature.getFeatureAccessorName()%>(), <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE)); +<% + } + } +%> + return result; +<% + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { + GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature(); + if (metaFeature.getEcoreFeature().isMany()) { +%> + return <%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()), + source.getElement(), <%=importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=metaFeature.getFeatureAccessorName()%>(), target.getElement()); +<% + } else { +%> + return <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create( + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()), + source.getElement(), <%=importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=metaFeature.getFeatureAccessorName()%>(), <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE); +<% + } +%> +<% + } +%> + } + + public boolean canExecute() { + return domainModelRemoveCommand != null && domainModelRemoveCommand.canExecute(); + } + public void execute() { + domainModelRemoveCommand.execute(); + source.getDiagram().removeEdge(edgeToRemove); + edgeToRemove.setSource(null); + edgeToRemove.setTarget(null); + } + public boolean canUndo() { + return domainModelRemoveCommand != null && domainModelRemoveCommand.canUndo(); + } + public void undo() { + domainModelRemoveCommand.undo(); + source.getDiagram().insertEdge(edgeToRemove); + edgeToRemove.setSource(source); + edgeToRemove.setTarget(target); + } + }; + } + }); Index: templates/parts/labelText.javajetinc =================================================================== RCS file: templates/parts/labelText.javajetinc diff -N templates/parts/labelText.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/labelText.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,127 @@ +<% +/*genFeature.getObjectType() throws NPE on primitive types. This is a workaround. */ +HashMap primitiveTypeToWrapperClassName = new HashMap(); +primitiveTypeToWrapperClassName.put(Boolean.TYPE, "Boolean"); +primitiveTypeToWrapperClassName.put(Byte.TYPE, "Byte"); +primitiveTypeToWrapperClassName.put(Character.TYPE, "Character"); +primitiveTypeToWrapperClassName.put(Double.TYPE, "Double"); +primitiveTypeToWrapperClassName.put(Float.TYPE, "Float"); +primitiveTypeToWrapperClassName.put(Integer.TYPE, "Integer"); +primitiveTypeToWrapperClassName.put(Long.TYPE, "Long"); +primitiveTypeToWrapperClassName.put(Short.TYPE, "Short"); +String viewPattern = null; +String editPattern = null; +if (labelModelFacet instanceof FeatureLabelModelFacet) { + FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet; + viewPattern = featureLabelModelFacet.getViewPattern(); + if (viewPattern == null || viewPattern.length() == 0) { + viewPattern = "{0}"; + } + editPattern = featureLabelModelFacet.getEditPattern(); + if (editPattern == null || editPattern.length() == 0) { + editPattern = "{0}"; + } +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + viewPattern = compositeFeatureLabelModelFacet.getViewPattern(); + if (viewPattern == null || viewPattern.length() == 0) { + StringBuffer patternBuffer = new StringBuffer(); + for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) { + patternBuffer.append("{").append(i).append("} "); + } + viewPattern = patternBuffer.toString().trim(); + } + editPattern = compositeFeatureLabelModelFacet.getEditPattern(); + if (editPattern == null || editPattern.length() == 0) { + StringBuffer patternBuffer = new StringBuffer(); + for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) { + patternBuffer.append("{").append(i).append("} "); + } + editPattern = patternBuffer.toString().trim(); + } +} +%> + /** + * @generated + */ + private static final String VIEW_PATTERN = "<%=viewPattern%>"; + + /** + * @generated + */ + private static final String EDIT_PATTERN = "<%=editPattern%>"; + + /** + * @generated + */ + protected String getLabelText() { + <%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> element = <%=resolvedSemanticElement%>; + if (element == null) { + return defaultText; + } + return buildTextByPattern(element, VIEW_PATTERN); + } + + /** + * @generated + */ + protected String getLabelEditText() { + <%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> element = <%=resolvedSemanticElement%>; + if (element == null) { + return defaultText; + } + return buildTextByPattern(element, EDIT_PATTERN); + } + + /** + * @generated + */ + protected String buildTextByPattern(<%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> element, String pattern) { +<% +if (labelModelFacet instanceof FeatureLabelModelFacet) { + FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet; + GenFeature feature = featureLabelModelFacet.getMetaFeature(); + if (!feature.isPrimitiveType()) { +%> + if (element.get<%=feature.getCapName()%>() == null) { + return defaultText; + } +<% + } +%> + return <%=importManager.getImportedName("java.text.MessageFormat")%>.format(pattern, new Object[] { +<% + String value = "element.get" + feature.getCapName() + "()"; /*XXX: getTypedKey is not a part of public API!*/ + if (feature.isPrimitiveType()) { + value = "new " + primitiveTypeToWrapperClassName.get(feature.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")"; + } +%> + <%=value%> + }); +<% +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; +%> + return <%=importManager.getImportedName("java.text.MessageFormat")%>.format(pattern, new Object[] { +<% + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); + String value = "element.get" + next.getCapName() + "()"; /*XXX: getTypedKey is not a part of public API!*/ + if (next.isPrimitiveType()) { + value = "new " + primitiveTypeToWrapperClassName.get(next.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")"; + } +%> + <%=value%><%if (it.hasNext()) {%>,<%}%> +<% + } +%> + }); +<% +} else { +%> + //XXX: unexpected model facet. + return defaultText; +<% +} +%> + } Index: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/UpdatableEditPartGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/UpdatableEditPartGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/parts/UpdatableEditPartGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/parts/UpdatableEditPartGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,35 @@ +package org.eclipse.gmf.codegen.templates.lite.parts; + +import org.eclipse.gmf.common.codegen.*; + +public class UpdatableEditPartGenerator +{ + protected static String nl; + public static synchronized UpdatableEditPartGenerator create(String lineSeparator) + { + nl = lineSeparator; + UpdatableEditPartGenerator result = new UpdatableEditPartGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + NL + "import java.util.ArrayList;" + NL + "import java.util.Collection;" + NL + "import java.util.Iterator;" + NL + "" + NL + "import org.eclipse.emf.common.notify.Notification;" + NL + "import org.eclipse.emf.ecore.EStructuralFeature;" + NL + "" + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public interface IUpdatableEditPart {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Refresher getRefresher(EStructuralFeature feature, Notification msg);" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic interface Refresher {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void refresh();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic class CompositeRefresher implements Refresher {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void addRefresher(Refresher refresher) {" + NL + "\t\t\trefreshers.add(refresher);" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void removeRefresher(Refresher refresher) {" + NL + "\t\t\trefreshers.remove(refresher);" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void refresh() {" + NL + "\t\t\tfor(Iterator it = refreshers.iterator(); it.hasNext(); ) {" + NL + "\t\t\t\tRefresher next = (Refresher) it.next();" + NL + "\t\t\t\tnext.refresh();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "" + NL + "\t\tprivate Collection/**/ refreshers = new ArrayList();" + NL + "\t}" + NL + "}"; + protected final String TEXT_3 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +importManager.emitPackageStatement(stringBuffer); + + stringBuffer.append(TEXT_2); + stringBuffer.append(TEXT_3); + return stringBuffer.toString(); + } +} Index: templates/parts/createNodeCommand.javajetinc =================================================================== RCS file: templates/parts/createNodeCommand.javajetinc diff -N templates/parts/createNodeCommand.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/createNodeCommand.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,115 @@ + /** + * @generated + */ + private <%if (isStatic) {%>static <%}%>class Create<%=next.getDomainMetaClass().getName()%><%=next.getVisualID()%>Command extends <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> { + /** + * @generated + */ + private final <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> parent; + + /** + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> createdNode; + /** + * @generated + */ + public Create<%=next.getDomainMetaClass().getName()%><%=next.getVisualID()%>Command(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> parent, <%=importManager.getImportedName(genDiagram.getPalette().getFactoryQualifiedClassName())%>.CreateRequestEx request<%if (!isListLayout) {%>, <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%> constraint<%}%>) { + this.parent = parent; + createdNode = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createNode(); +<% +if (next.getDomainMetaClass().isMapEntry()) { +/*Workaround for Ecore example: map entries cannot be created using factory, only using reflective EFactory.create() method*/ +%> + <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> createdDomainElement = <%=importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName())%>.eINSTANCE.create( + <%=importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getDomainMetaClass().getClassifierAccessorName()%>()); +<% +} else { +%> + <%=importManager.getImportedName(next.getDomainMetaClass().getQualifiedInterfaceName())%> createdDomainElement = <%=importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName())%>.eINSTANCE.create<%=next.getDomainMetaClass().getClassifierAccessorName()%>(); +<% +} +%> createdNode.setElement(createdDomainElement); + <%/*XXX: Class name DomainElementInitializer should be user-customizable*/%> + <%=importManager.getImportedName(genDiagram.getNotationViewFactoriesPackageName() + ".DomainElementInitializer")%>.<%=next.getUniqueIdentifier()%>.initializeElement(createdDomainElement); + <%=importManager.getImportedName(next.getNotationViewFactoryQualifiedClassName())%>.decorateView(createdNode); +<% + if (!isListLayout) { +%> + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%> bounds = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createBounds(); + createdNode.setLayoutConstraint(bounds); + bounds.setX(constraint.x); + bounds.setY(constraint.y); +<% + int defaultWidth = 40; + int defaultHeight = 40; + DefaultSizeAttributes defSizeAttrs = (DefaultSizeAttributes) next.getViewmap().find(DefaultSizeAttributes.class); + if (defSizeAttrs != null) { + defaultWidth = defSizeAttrs.getWidth(); + defaultHeight = defSizeAttrs.getHeight(); + } +%> + bounds.setWidth(Math.max(constraint.width, <%=defaultWidth%>)); + bounds.setHeight(Math.max(constraint.height, <%=defaultHeight%>)); +<% + } +%> + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")%> domainModelEditDomain = <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(parent.getDiagram().getElement()); +<% + TypeModelFacet facet = next.getModelFacet(); + GenFeature childFeature = facet.getChildMetaFeature(); + GenFeature containmentFeature = facet.getContainmentMetaFeature(); + if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) { +%> + <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%> compoundCommand = new <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%>(); + compoundCommand.append(<%=importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, <%=resolvedSemanticElement%>, + <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(), createdNode.getElement())); + compoundCommand.append(<%=importManager.getImportedName(childFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, <%=resolvedSemanticElement%>, + <%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(), createdNode.getElement())); + this.domainModelAddCommand = compoundCommand; +<% + } else { +%> + this.domainModelAddCommand = <%=importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, <%=resolvedSemanticElement%>, + <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(), createdNode.getElement()); +<% + } +%> + request.setCreatedObject(createdNode); + } + + /** + * @generated + */ + private final org.eclipse.emf.common.command.Command domainModelAddCommand; + + /** + * @generated + */ + public boolean canExecute() { + return domainModelAddCommand != null && domainModelAddCommand.canExecute(); + } + + /** + * @generated + */ + public boolean canUndo() { + return domainModelAddCommand != null && domainModelAddCommand.canUndo(); + } + + /** + * @generated + */ + public void execute() { + parent.insertChild(createdNode); + domainModelAddCommand.execute(); + } + + /** + * @generated + */ + public void undo() { + parent.getPersistedChildren().remove(createdNode); + domainModelAddCommand.undo(); + } + } Index: templates/copyright4xml.jetinc =================================================================== RCS file: templates/copyright4xml.jetinc diff -N templates/copyright4xml.jetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/copyright4xml.jetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,8 @@ +<% +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { +%> + +<%}%> Index: templates/parts/refreshers.javajetinc/domainModelRefresher.javajetinc =================================================================== RCS file: templates/parts/refreshers.javajetinc/domainModelRefresher.javajetinc diff -N templates/parts/refreshers.javajetinc/domainModelRefresher.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshers.javajetinc/domainModelRefresher.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,23 @@ + /** + * @generated + */ + private DomainModelRefresher domainModelRefresher = new DomainModelRefresher(); + + /** + * @generated + */ + private class DomainModelRefresher extends <%=importManager.getImportedName("org.eclipse.emf.common.notify.impl.AdapterImpl")%> { + /** + * @generated + */ + public void notifyChanged(<%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> msg) { + super.notifyChanged(msg); + if (msg.isTouch()) { + return; + } + Refresher refresher = getRefresher((<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%>) msg.getFeature(), msg); + if (refresher != null) { + refresher.refresh(); + } + } + } Index: templates/editor/Plugin.javajet =================================================================== RCS file: templates/editor/Plugin.javajet diff -N templates/editor/Plugin.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/Plugin.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,208 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="PluginGenerator" + imports="org.eclipse.emf.common.util.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> +<% +final GenPlugin genPlugin = (GenPlugin) ((Object[]) argument)[0]; +final EList genPackages = genPlugin.getEditorGen().getAllDomainGenPackages(true); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer);%> + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.swt.graphics.Image; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; +<%importManager.markImportLocation(stringBuffer);%> + +/** + * @generated + */ +public class <%=genPlugin.getActivatorClassName()%> extends AbstractUIPlugin { + + /** + * @generated + */ + public static final String ID = "<%=genPlugin.getID()%>"; //$NON-NLS-1$ + + /** + * @generated + */ + private static <%=genPlugin.getActivatorClassName()%> instance; + + /** + * @generated + */ + private ComposedAdapterFactory adapterFactory; + + /** + * @generated + */ + public <%=genPlugin.getActivatorClassName()%>() { + } + + /** + * @generated + */ + public void start(BundleContext context) throws Exception { + super.start(context); + instance = this; + adapterFactory = createAdapterFactory(); + } + + /** + * @generated + */ + public void stop(BundleContext context) throws Exception { + adapterFactory.dispose(); + adapterFactory = null; + instance = null; + super.stop(context); + } + + /** + * @generated + */ + public static <%=genPlugin.getActivatorClassName()%> getInstance() { + return instance; + } + + /** + * @generated + */ + protected ComposedAdapterFactory createAdapterFactory() { + List factories = new ArrayList(); + fillItemProviderFactories(factories); + return new ComposedAdapterFactory(factories); + } + + /** + * @generated + */ + protected void fillItemProviderFactories(List factories) { +<% +for (int i = 0; i < genPackages.size(); i++) { + GenPackage genPackage = (GenPackage) genPackages.get(i); +%> + factories.add(new <%=importManager.getImportedName(genPackage.getQualifiedItemProviderAdapterFactoryClassName())%>()); +<%}%> + factories.add(new ResourceItemProviderAdapterFactory()); + factories.add(new ReflectiveItemProviderAdapterFactory()); + } + + /** + * @generated + */ + public AdapterFactory getItemProvidersAdapterFactory() { + return adapterFactory; + } + + /** + * @generated + */ + public ImageDescriptor getItemImageDescriptor(Object item) { + IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(item, IItemLabelProvider.class); + if (labelProvider != null) { +<% + // XXX dependency org.eclipse.emf.edit.ui is for ExtendedImageRegistry only. + // FIXME move image registry to plugin class code +%> + return ExtendedImageRegistry.getInstance().getImageDescriptor(labelProvider.getImage(item)); + } + return null; + } + + /** + * Returns an image descriptor for the image file at the given + * plug-in relative path. + * + * @generated + * @param path the path + * @return the image descriptor + */ + public static ImageDescriptor getBundledImageDescriptor(String path) { + return AbstractUIPlugin.imageDescriptorFromPlugin(ID, path); + } + + /** + * Returns an image for the image file at the given plug-in relative path. + * Client do not need to dispose this image. Images will be disposed automatically. + * + * @generated + * @param path the path + * @return image instance + */ + public Image getBundledImage(String path) { + Image image = getImageRegistry().get(path); + if (image == null) { + getImageRegistry().put(path, getBundledImageDescriptor(path)); + image = getImageRegistry().get(path); + } + return image; + } + + /** + * @generated + */ + public void logError(String error) { + logError(error, null); + } + + /** + * @param throwable actual error or null could be passed + * @generated + */ + public void logError(String error, Throwable throwable) { + if (error == null && throwable != null) { + error = throwable.getMessage(); + } + getLog().log(new Status(IStatus.ERROR, <%=genPlugin.getActivatorClassName()%>.ID, IStatus.OK, error, throwable)); + debug(error, throwable); + } + + /** + * @generated + */ + public void logInfo(String message) { + logInfo(message, null); + } + + /** + * @param throwable actual error or null could be passed + * @generated + */ + public void logInfo(String message, Throwable throwable) { + if (message == null && message != null) { + message = throwable.getMessage(); + } + getLog().log(new Status(IStatus.INFO, <%=genPlugin.getActivatorClassName()%>.ID, IStatus.OK, message, throwable)); + debug(message, throwable); + } + + /** + * @generated + */ + private void debug(String message, Throwable throwable) { + if (!isDebugging()) { + return; + } + if (message != null) { + System.err.println(message); + } + if (throwable != null) { + throwable.printStackTrace(); + } + } + +} +<%importManager.emitSortedImports();%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/CreationWizardPageGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/CreationWizardPageGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/CreationWizardPageGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/CreationWizardPageGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,192 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; + +public class CreationWizardPageGenerator +{ + protected static String nl; + public static synchronized CreationWizardPageGenerator create(String lineSeparator) + { + nl = lineSeparator; + CreationWizardPageGenerator result = new CreationWizardPageGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_2 = " extends "; + protected final String TEXT_3 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate Text fileField;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate URI createdDiagramFileURI;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_4 = "() {" + NL + "\t\tsuper(\"CreationWizardPage\"); //$NON-NLS-1$" + NL + "\t\tsetTitle(\"Create "; + protected final String TEXT_5 = " Diagram\"); //$NON-NLS-1$" + NL + "\t\tsetDescription(\"Create a new "; + protected final String TEXT_6 = " diagram.\"); //$NON-NLS-1$" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void createControl(Composite parent)" + NL + "\t{" + NL + "\t\tComposite composite = new Composite(parent, SWT.NONE);" + NL + "\t\t{" + NL + "\t\t\tGridLayout layout = new GridLayout();" + NL + "\t\t\tlayout.numColumns = 1;" + NL + "\t\t\tlayout.verticalSpacing = 12;" + NL + "\t\t\tcomposite.setLayout(layout);" + NL + "" + NL + "\t\t\tGridData data = new GridData();" + NL + "\t\t\tdata.verticalAlignment = GridData.FILL;" + NL + "\t\t\tdata.grabExcessVerticalSpace = true;" + NL + "\t\t\tdata.horizontalAlignment = GridData.FILL;" + NL + "\t\t\tcomposite.setLayoutData(data);" + NL + "\t\t}" + NL + "\t\tLabel resourceURILabel = new Label(composite, SWT.LEFT);" + NL + "\t\t{" + NL + "\t\t\tresourceURILabel.setText(\"&File\");" + NL + "" + NL + "\t\t\tGridData data = new GridData();" + NL + "\t\t\tdata.horizontalAlignment = GridData.FILL;" + NL + "\t\t\tresourceURILabel.setLayoutData(data);" + NL + "\t\t}" + NL + "" + NL + "\t\tComposite fileComposite = new Composite(composite, SWT.NONE);" + NL + "\t\t{" + NL + "\t\t\tGridData data = new GridData();" + NL + "\t\t\tdata.horizontalAlignment = GridData.FILL;" + NL + "\t\t\tdata.grabExcessHorizontalSpace = true;" + NL + "\t\t\tfileComposite.setLayoutData(data);" + NL + "" + NL + "\t\t\tGridLayout layout = new GridLayout();" + NL + "\t\t\tlayout.marginHeight = 0;" + NL + "\t\t\tlayout.marginWidth = 0;" + NL + "\t\t\tlayout.numColumns = 2;" + NL + "\t\t\tfileComposite.setLayout(layout);" + NL + "\t\t}" + NL + "" + NL + "\t\tfileField = new "; + protected final String TEXT_7 = "(fileComposite, SWT.BORDER);" + NL + "\t\t{" + NL + "\t\t\tGridData data = new GridData();" + NL + "\t\t\tdata.horizontalAlignment = GridData.FILL;" + NL + "\t\t\tdata.grabExcessHorizontalSpace = true;" + NL + "\t\t\tdata.horizontalSpan = 1;" + NL + "\t\t\tfileField.setLayoutData(data);" + NL + "\t\t}" + NL + "" + NL + "\t\tfileField.addModifyListener(validator);" + NL + "\t\t"; + protected final String TEXT_8 = " resourceURIBrowseFileSystemButton = new "; + protected final String TEXT_9 = "(fileComposite, SWT.PUSH);" + NL + "\t\tresourceURIBrowseFileSystemButton.setText(\"&Browse\");" + NL + " " + NL + "\t\tresourceURIBrowseFileSystemButton.addSelectionListener" + NL + "\t\t\t(new "; + protected final String TEXT_10 = "() {" + NL + "\t\t\t\t public void widgetSelected("; + protected final String TEXT_11 = " event) {" + NL + "\t\t\t\t\t String fileExtension = \""; + protected final String TEXT_12 = "\";" + NL + "\t\t\t\t\t String filePath = "; + protected final String TEXT_13 = ".openFilePathDialog(getShell(), \"*.\" + fileExtension, "; + protected final String TEXT_14 = ".OPEN);" + NL + "\t\t\t\t\t if (filePath != null) {" + NL + "\t\t\t\t\t\t if (!filePath.endsWith(\".\" + fileExtension)) {" + NL + "\t\t\t\t\t\t\t filePath = filePath + \".\" + fileExtension;" + NL + "\t\t\t\t\t\t }" + NL + "\t\t\t\t\t\t fileField.setText(filePath);" + NL + "\t\t\t\t\t }" + NL + "\t\t\t\t }" + NL + "\t\t\t }); " + NL + "\t\tsetPageComplete(validatePage());" + NL + "\t\tsetControl(composite);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ModifyListener validator =" + NL + "\t\tnew ModifyListener() {" + NL + "\t\t\tpublic void modifyText(ModifyEvent e) {" + NL + "\t\t\t\tsetPageComplete(validatePage());" + NL + "\t\t\t}" + NL + "\t\t};" + NL + " " + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\t protected boolean validatePage() {" + NL + "\t\tURI diagramFileURI = getDiagramFileURI();" + NL + "\t\tif (diagramFileURI == null || diagramFileURI.isEmpty()) {" + NL + "\t\t\tsetErrorMessage(null);" + NL + "\t\t\treturn false;" + NL + "\t\t}" + NL + "\t\tString requiredExt = \""; + protected final String TEXT_15 = "\";" + NL + "\t\tString enteredExt = diagramFileURI.fileExtension();" + NL + "\t\tif (enteredExt == null || !enteredExt.equals(requiredExt)) {" + NL + "\t\t\tsetErrorMessage(\"The file name must end in \" + requiredExt); " + NL + "\t\t\treturn false;" + NL + "\t\t}" + NL + "" + NL + "\t\tif (diagramFileURI.isFile()) {" + NL + "\t\t\tFile diagramFile = new File(diagramFileURI.toFileString());" + NL + "\t\t\tif (diagramFile.exists()) {" + NL + "\t\t\t\tsetErrorMessage(\"Diagram File already exists: \" + diagramFile);" + NL + "\t\t\t\treturn false;" + NL + "\t\t\t}"; + protected final String TEXT_16 = NL + "\t\t\tURI modelFileURI = getModelFileURI();" + NL + "\t\t\tFile modelFile = new File(modelFileURI.toFileString());" + NL + "\t\t\tif (modelFile.exists()) {" + NL + "\t\t\t\tsetErrorMessage(\"Model File already exists: \" + modelFile);" + NL + "\t\t\t\treturn false;" + NL + "\t\t\t}"; + protected final String TEXT_17 = NL + "\t\t}" + NL + "\t\tsetErrorMessage(null); " + NL + "\t\treturn true;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic URI getCreatedDiagramFileURI() {" + NL + "\t\treturn createdDiagramFileURI;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate URI getDiagramFileURI() {" + NL + "\t\ttry {" + NL + "\t\t\treturn URI.createFileURI(fileField.getText());" + NL + "\t\t} catch (Exception exception) {" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL; + protected final String TEXT_18 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate URI getModelFileURI() {" + NL + "\t\tURI diagramFileURI = getDiagramFileURI();" + NL + "\t\tif (diagramFileURI == null) {" + NL + "\t\t\treturn null;" + NL + "\t\t}" + NL + "\t\treturn diagramFileURI.trimFileExtension().appendFileExtension(\""; + protected final String TEXT_19 = "\");" + NL + "\t}"; + protected final String TEXT_20 = NL + NL + "\t/**" + NL + "\t * Performs the operations necessary to create and open the diagram" + NL + "\t * @return boolean indicating whether the creation and opening the Diagram was successful " + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic boolean finish() {" + NL + "\t\tfinal boolean[] result = new boolean[1];" + NL + "\t\t"; + protected final String TEXT_21 = " op = new IRunnableWithProgress() {" + NL + "\t\t\tpublic void run(IProgressMonitor monitor) {" + NL + "\t\t\t\tresult[0] = doFinish(monitor);" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "" + NL + "\t\ttry {" + NL + "\t\t\tgetContainer().run(false, true, op);" + NL + "\t\t} catch (InterruptedException e) {" + NL + "\t\t\treturn false;" + NL + "\t\t} catch ("; + protected final String TEXT_22 = " e) {" + NL + "\t\t\tif (e.getTargetException() instanceof CoreException) {" + NL + "\t\t\t\t"; + protected final String TEXT_23 = ".openError(" + NL + "\t\t\t\t\tgetContainer().getShell()," + NL + "\t\t\t\t\t\"Creation Problems\"," + NL + "\t\t\t\t\tnull,\t// no special message" + NL + "\t\t\t\t\t((CoreException) e.getTargetException()).getStatus());" + NL + "\t\t\t}" + NL + "\t\t\telse {" + NL + "\t\t\t\t// CoreExceptions are handled above, but unexpected runtime exceptions and errors may still occur." + NL + "\t\t\t\t"; + protected final String TEXT_24 = ".getInstance().getLog().log(new "; + protected final String TEXT_25 = "("; + protected final String TEXT_26 = ".ERROR, "; + protected final String TEXT_27 = ".ID, 0, \"Creation failed\", e.getTargetException()));" + NL + "\t\t\t}" + NL + "\t\t\treturn false;" + NL + "\t\t}" + NL + "\t\treturn result[0];" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @param monitor the IProgressMonitor to use to indicate progress and check for cancellation" + NL + "\t * @return boolean indicating whether the diagram was created and opened successfully" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic boolean doFinish(IProgressMonitor monitor) {" + NL + "\t\tcreatedDiagramFileURI = createDiagramFile(monitor);" + NL + "\t\treturn createdDiagramFileURI != null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate URI createDiagramFile(IProgressMonitor monitor) {" + NL + "\t\t//TODO: Editing domain!" + NL + "\t\t"; + protected final String TEXT_28 = " resourceSet = new "; + protected final String TEXT_29 = "();" + NL + "\t\tfinal "; + protected final String TEXT_30 = " diagramResource = resourceSet.createResource(getDiagramFileURI());"; + protected final String TEXT_31 = NL + "\t\tfinal Resource modelResource = resourceSet.createResource(getModelFileURI());"; + protected final String TEXT_32 = NL + NL + "\t\tif (diagramResource != null"; + protected final String TEXT_33 = " && modelResource != null"; + protected final String TEXT_34 = ") {" + NL + "\t\t\t//TODO: Editing domain!" + NL + "\t\t\t"; + protected final String TEXT_35 = " model = "; + protected final String TEXT_36 = ".eINSTANCE.create"; + protected final String TEXT_37 = "();"; + protected final String TEXT_38 = NL + "\t\t\tmodelResource.getContents().add(model);" + NL + "\t\t\ttry {" + NL + "\t\t\t\tmodelResource.save("; + protected final String TEXT_39 = ".EMPTY_MAP);" + NL + "\t\t\t} catch (IOException e) {" + NL + "\t\t\t\thandleSaveException(e);" + NL + "\t\t\t}"; + protected final String TEXT_40 = NL + "\t\t\tdiagramResource.getContents().add(model);"; + protected final String TEXT_41 = NL + "\t\t\t"; + protected final String TEXT_42 = " diagram = "; + protected final String TEXT_43 = ".eINSTANCE.createDiagram();" + NL + "\t\t\tdiagram.setElement(model);" + NL + "\t\t\t"; + protected final String TEXT_44 = ".decorateView(diagram);" + NL + "\t\t\tdiagramResource.getContents().add(diagram);" + NL + "\t\t\ttry {" + NL + "\t\t\t\tdiagramResource.save(Collections.EMPTY_MAP);" + NL + "\t\t\t} catch (IOException e) {" + NL + "\t\t\t\thandleSaveException(e);" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\tboolean result = "; + protected final String TEXT_45 = ".openEditor(getDiagramFileURI());" + NL + "\t\tif (!result) {" + NL + "\t\t\treturn null;" + NL + "\t\t}" + NL + "\t\treturn getDiagramFileURI();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void handleSaveException(IOException e) {" + NL + "\t\tthrow new RuntimeException(e);" + NL + "\t}" + NL + "}"; + protected final String TEXT_46 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final GenEditorGenerator editorGen = genDiagram.getEditorGen(); +final GenPlugin genPlugin = editorGen.getPlugin(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer); + +importManager.addImport("java.io.File"); +importManager.addImport("org.eclipse.core.runtime.IProgressMonitor"); +importManager.addImport("org.eclipse.core.runtime.CoreException"); +importManager.addImport("java.io.IOException"); +importManager.addImport("org.eclipse.swt.widgets.Text"); +importManager.addImport("org.eclipse.emf.common.util.URI"); +importManager.addImport("org.eclipse.swt.widgets.Composite"); +importManager.addImport("org.eclipse.swt.widgets.Label"); +importManager.addImport("org.eclipse.swt.events.ModifyListener"); +importManager.addImport("org.eclipse.swt.events.ModifyEvent"); +importManager.addImport("org.eclipse.swt.layout.GridLayout"); +importManager.addImport("org.eclipse.swt.layout.GridData"); + + stringBuffer.append(TEXT_1); + stringBuffer.append(genDiagram.getCreationWizardPageClassName()); + stringBuffer.append(TEXT_2); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.wizard.WizardPage")); + stringBuffer.append(TEXT_3); + stringBuffer.append(genDiagram.getCreationWizardPageClassName()); + stringBuffer.append(TEXT_4); + stringBuffer.append(editorGen.getDomainGenModel().getModelName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(editorGen.getDomainGenModel().getModelName()); + stringBuffer.append(TEXT_6); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.widgets.Text")); + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.widgets.Button")); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.widgets.Button")); + stringBuffer.append(TEXT_9); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.events.SelectionAdapter")); + stringBuffer.append(TEXT_10); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.events.SelectionEvent")); + stringBuffer.append(TEXT_11); + stringBuffer.append(editorGen.getDiagramFileExtension()); + stringBuffer.append(TEXT_12); + stringBuffer.append(genDiagram.getDiagramEditorUtilClassName()); + stringBuffer.append(TEXT_13); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_14); + stringBuffer.append(editorGen.getDiagramFileExtension()); + stringBuffer.append(TEXT_15); + if (!editorGen.isSameFileForDiagramAndModel()) { + stringBuffer.append(TEXT_16); + } + stringBuffer.append(TEXT_17); + if (!editorGen.isSameFileForDiagramAndModel()) { + stringBuffer.append(TEXT_18); + stringBuffer.append(editorGen.getDomainFileExtension()); + stringBuffer.append(TEXT_19); + } + stringBuffer.append(TEXT_20); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.operation.IRunnableWithProgress")); + stringBuffer.append(TEXT_21); + stringBuffer.append(importManager.getImportedName("java.lang.reflect.InvocationTargetException")); + stringBuffer.append(TEXT_22); + stringBuffer.append(importManager.getImportedName("org.eclipse.jface.dialogs.ErrorDialog")); + stringBuffer.append(TEXT_23); + stringBuffer.append(genPlugin.getActivatorClassName()); + stringBuffer.append(TEXT_24); + stringBuffer.append(importManager.getImportedName("org.eclipse.core.runtime.Status")); + stringBuffer.append(TEXT_25); + stringBuffer.append(importManager.getImportedName("org.eclipse.core.runtime.IStatus")); + stringBuffer.append(TEXT_26); + stringBuffer.append(genPlugin.getActivatorClassName()); + stringBuffer.append(TEXT_27); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.resource.ResourceSet")); + stringBuffer.append(TEXT_28); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.resource.impl.ResourceSetImpl")); + stringBuffer.append(TEXT_29); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.resource.Resource")); + stringBuffer.append(TEXT_30); + +final boolean standaloneDomainModel = !editorGen.isSameFileForDiagramAndModel() && genDiagram.getDomainDiagramElement() != null; +if (standaloneDomainModel) { + + stringBuffer.append(TEXT_31); + } + stringBuffer.append(TEXT_32); + if (standaloneDomainModel) { + stringBuffer.append(TEXT_33); + } + stringBuffer.append(TEXT_34); + stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_35); + stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryClassName())); + stringBuffer.append(TEXT_36); + stringBuffer.append(genDiagram.getDomainDiagramElement().getClassifierAccessorName()); + stringBuffer.append(TEXT_37); + +if (standaloneDomainModel) { + + stringBuffer.append(TEXT_38); + stringBuffer.append(importManager.getImportedName("java.util.Collections")); + stringBuffer.append(TEXT_39); + +} else { + + stringBuffer.append(TEXT_40); + +} + + stringBuffer.append(TEXT_41); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")); + stringBuffer.append(TEXT_42); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_43); + stringBuffer.append(importManager.getImportedName(genDiagram.getNotationViewFactoryQualifiedClassName())); + stringBuffer.append(TEXT_44); + stringBuffer.append(genDiagram.getDiagramEditorUtilClassName()); + stringBuffer.append(TEXT_45); + importManager.emitSortedImports(); + stringBuffer.append(TEXT_46); + return stringBuffer.toString(); + } +} Index: templates/parts/refreshMethods/shapeColor.javajetinc =================================================================== RCS file: templates/parts/refreshMethods/shapeColor.javajetinc diff -N templates/parts/refreshMethods/shapeColor.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshMethods/shapeColor.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,64 @@ + /** + * @generated + */ + protected void refreshForegroundColor() { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.LineStyle")%> style = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.LineStyle")%>) <%=primaryView%>.getStyle(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getLineStyle()); + <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> toDispose = createdForegroundColor; + if (style != null) { + int foregroundColor = style.getLineColor(); + int red = foregroundColor & 0x000000FF; + int green = (foregroundColor & 0x0000FF00) >> 8; + int blue = (foregroundColor & 0x00FF0000) >> 16; + <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> currentColor = getFigure().getForegroundColor(); + if (currentColor != null && currentColor.getRed() == red && currentColor.getGreen() == green && currentColor.getBlue() == blue) { + return; + } + createdForegroundColor = new <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%>(null, red, green, blue); + getFigure().setForegroundColor(createdForegroundColor); + } else { + getFigure().setForegroundColor(getViewer().getControl().getForeground()); + createdForegroundColor = null; + } + if (toDispose != null) { + toDispose.dispose(); + } + } + + /** + * The color (created by {@link #refreshForegroundColor()}) currently assigned to the figure. + * Whenever another color is assigned to it, it is safe to dispose the previous one. + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> createdForegroundColor; + + /** + * @generated + */ + protected void refreshBackgroundColor() { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.FillStyle")%> style = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.FillStyle")%>) <%=primaryView%>.getStyle(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFillStyle()); + <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> toDispose = createdBackgroundColor; + if (style != null) { + int backgroundColor = style.getFillColor(); + int red = backgroundColor & 0x000000FF; + int green = (backgroundColor & 0x0000FF00) >> 8; + int blue = (backgroundColor & 0x00FF0000) >> 16; + <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> currentColor = getFigure().getBackgroundColor(); + if (currentColor != null && currentColor.getRed() == red && currentColor.getGreen() == green && currentColor.getBlue() == blue) { + return; + } + createdBackgroundColor = new <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%>(null, red, green, blue); + getFigure().setBackgroundColor(createdBackgroundColor); + } else { + getFigure().setBackgroundColor(getViewer().getControl().getBackground()); + } + if (toDispose != null) { + toDispose.dispose(); + } + } + + /** + * The color (created by {@link #refreshBackgroundColor()}) currently assigned to the figure. + * Whenever another color is assigned to it, it is safe to dispose the previous one. + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> createdBackgroundColor; Index: templates/parts/ChildNodeEditPart.javajet =================================================================== RCS file: templates/parts/ChildNodeEditPart.javajet diff -N templates/parts/ChildNodeEditPart.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/ChildNodeEditPart.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,190 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="ChildNodeEditPartGenerator" + imports="java.util.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.emf.ecore.*"%> +<% +GenNode genChildNode = (GenNode) ((Object[]) argument)[0]; +GenNodeLabel genLabel = (GenNodeLabel) genChildNode.getLabels().get(0); +GenNode genHost = genChildNode; +GenNode genNode = genChildNode; /*var used by componentEditPolicy.javajetinc*/ +GenClass underlyingMetaClass = genHost.getDomainMetaClass(); +GenDiagram genDiagram = genChildNode.getDiagram(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +LabelModelFacet labelModelFacet = genLabel.getModelFacet(); +%> +<%@ include file="../copyright4java.jetinc"%> + +<%importManager.emitPackageStatement(stringBuffer); + +importManager.addImport("org.eclipse.gef.EditPolicy"); +importManager.addImport("org.eclipse.gef.Request"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.addImport("org.eclipse.gmf.runtime.notation.NotationPackage"); +importManager.addImport("java.util.List"); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genChildNode.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")%> implements IUpdatableEditPart { +<%@ include file="textAwareFields.jetinc"%> + + /** + * @generated + */ + public <%=genChildNode.getEditPartClassName()%>(View view) { + setModel(view); + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> getDiagramNode() { + return (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>) getModel(); + } + + /** + * @generated + */ + protected void createEditPolicies() { + //XXX: install correct edit policies! +<% + String resolvedSemanticElement = "(" + importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName()) + ") getDiagramNode().getElement()"; + final String primaryView = "getDiagramNode()"; +%> +<%@ include file="directEditPolicy.javajetinc"%> +<%@ include file="componentEditPolicy.javajetinc"%> + } + +<%@ include file="directEdit.javajetinc"%> + + /** + * @generated + */ + protected List getModelChildren() { + return ((View)getModel()).getVisibleChildren(); + } + + /** + * @generated + */ + protected List getModelSourceConnections() { + return ((View)getModel()).getSourceEdges(); + } + + /** + * @generated + */ + protected List getModelTargetConnections() { + return ((View)getModel()).getTargetEdges(); + } + + /** + * @generated + */ + protected void refreshVisuals() { + super.refreshVisuals(); + refreshLabel(); + refreshFont(); + refreshFontColor(); + refreshVisibility(); + } + + /** + * @generated + */ + protected void refreshLabel() { + getLabel().setText(getLabelText()); + getLabel().setIcon(getLabelIcon()); + } +<%@ include file="labelText.javajetinc"%> +<%@ include file="refreshMethods/font.javajetinc"%> +<%@ include file="refreshMethods/fontColor.javajetinc"%> + + /** + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.swt.graphics.Image")%> getLabelIcon() { + return null; + } + + /** + * @generated + */ + protected void refreshVisibility() { + boolean isVisible = getDiagramNode().isVisible(); + boolean wasVisible = getFigure().isVisible(); + if (isVisible == wasVisible) { + return; + } + if (!isVisible && (getSelected() != SELECTED_NONE)) { + getViewer().deselect(this); + } + + getFigure().setVisible(isVisible); + getFigure().revalidate(); + } + + /** + * @generated + */ + public Object getAdapter(Class key) { +<%/*@ include file="adapters/propertySource.javajetinc"*/%> + return super.getAdapter(key); + } + + /** + * @generated + */ + public void activate() { + super.activate(); + getDiagramNode().getElement().eAdapters().add(domainModelRefresher); + } + + /** + * @generated + */ + public void deactivate() { + getDiagramNode().getElement().eAdapters().remove(domainModelRefresher); + super.deactivate(); + } + +<%@ include file="refreshers.javajetinc/domainModelRefresher.javajetinc"%> + +<%@ include file="refresher.javajetinc"%> + + /** + * @generated + */ + private void createRefreshers() { + structuralFeatures2Refresher = new HashMap(); +<%@ include file="refreshers.javajetinc/children.javajetinc"%> +<%@ include file="refreshers.javajetinc/visibility.javajetinc"%> + Refresher labelRefresher = new Refresher() { + public void refresh() { + refreshLabel(); + } + }; +<% +if (labelModelFacet instanceof FeatureLabelModelFacet) { + GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); +%> + structuralFeatures2Refresher.put(<%=importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=feature.getFeatureAccessorName()%>(), labelRefresher); +<% +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); +%> + structuralFeatures2Refresher.put(<%=importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getFeatureAccessorName()%>(), labelRefresher); +<% + } +} +%> +<%@ include file="refreshers.javajetinc/font.javajetinc"%> +<%@ include file="refreshers.javajetinc/fontColor.javajetinc"%> + } + +<%@ include file="labelFigure.jetinc"%> +} +<%importManager.emitSortedImports();%> Index: templates/editor/CreationWizardPage.javajet =================================================================== RCS file: templates/editor/CreationWizardPage.javajet diff -N templates/editor/CreationWizardPage.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/CreationWizardPage.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,297 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="CreationWizardPageGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> +<% +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final GenEditorGenerator editorGen = genDiagram.getEditorGen(); +final GenPlugin genPlugin = editorGen.getPlugin(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer); + +importManager.addImport("java.io.File"); +importManager.addImport("org.eclipse.core.runtime.IProgressMonitor"); +importManager.addImport("org.eclipse.core.runtime.CoreException"); +importManager.addImport("java.io.IOException"); +importManager.addImport("org.eclipse.swt.widgets.Text"); +importManager.addImport("org.eclipse.emf.common.util.URI"); +importManager.addImport("org.eclipse.swt.widgets.Composite"); +importManager.addImport("org.eclipse.swt.widgets.Label"); +importManager.addImport("org.eclipse.swt.events.ModifyListener"); +importManager.addImport("org.eclipse.swt.events.ModifyEvent"); +importManager.addImport("org.eclipse.swt.layout.GridLayout"); +importManager.addImport("org.eclipse.swt.layout.GridData"); +%> + +/** + * @generated + */ +public class <%=genDiagram.getCreationWizardPageClassName()%> extends <%=importManager.getImportedName("org.eclipse.jface.wizard.WizardPage")%> { + /** + * @generated + */ + private Text fileField; + + /** + * @generated + */ + private URI createdDiagramFileURI; + + /** + * @generated + */ + public <%=genDiagram.getCreationWizardPageClassName()%>() { + super("CreationWizardPage"); //$NON-NLS-1$ + setTitle("Create <%=editorGen.getDomainGenModel().getModelName()%> Diagram"); //$NON-NLS-1$ + setDescription("Create a new <%=editorGen.getDomainGenModel().getModelName()%> diagram."); //$NON-NLS-1$ + } + + /** + * @generated + */ + public void createControl(Composite parent) + { + Composite composite = new Composite(parent, SWT.NONE); + { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + Label resourceURILabel = new Label(composite, SWT.LEFT); + { + resourceURILabel.setText("&File"); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + resourceURILabel.setLayoutData(data); + } + + Composite fileComposite = new Composite(composite, SWT.NONE); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + fileComposite.setLayoutData(data); + + GridLayout layout = new GridLayout(); + layout.marginHeight = 0; + layout.marginWidth = 0; + layout.numColumns = 2; + fileComposite.setLayout(layout); + } + + fileField = new <%=importManager.getImportedName("org.eclipse.swt.widgets.Text")%>(fileComposite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + data.horizontalSpan = 1; + fileField.setLayoutData(data); + } + + fileField.addModifyListener(validator); + <%=importManager.getImportedName("org.eclipse.swt.widgets.Button")%> resourceURIBrowseFileSystemButton = new <%=importManager.getImportedName("org.eclipse.swt.widgets.Button")%>(fileComposite, SWT.PUSH); + resourceURIBrowseFileSystemButton.setText("&Browse"); + + resourceURIBrowseFileSystemButton.addSelectionListener + (new <%=importManager.getImportedName("org.eclipse.swt.events.SelectionAdapter")%>() { + public void widgetSelected(<%=importManager.getImportedName("org.eclipse.swt.events.SelectionEvent")%> event) { + String fileExtension = "<%=editorGen.getDiagramFileExtension()%>"; + String filePath = <%=genDiagram.getDiagramEditorUtilClassName()%>.openFilePathDialog(getShell(), "*." + fileExtension, <%=importManager.getImportedName("org.eclipse.swt.SWT")%>.OPEN); + if (filePath != null) { + if (!filePath.endsWith("." + fileExtension)) { + filePath = filePath + "." + fileExtension; + } + fileField.setText(filePath); + } + } + }); + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * @generated + */ + protected ModifyListener validator = + new ModifyListener() { + public void modifyText(ModifyEvent e) { + setPageComplete(validatePage()); + } + }; + + /** + * @generated + */ + protected boolean validatePage() { + URI diagramFileURI = getDiagramFileURI(); + if (diagramFileURI == null || diagramFileURI.isEmpty()) { + setErrorMessage(null); + return false; + } + String requiredExt = "<%=editorGen.getDiagramFileExtension()%>"; + String enteredExt = diagramFileURI.fileExtension(); + if (enteredExt == null || !enteredExt.equals(requiredExt)) { + setErrorMessage("The file name must end in " + requiredExt); + return false; + } + + if (diagramFileURI.isFile()) { + File diagramFile = new File(diagramFileURI.toFileString()); + if (diagramFile.exists()) { + setErrorMessage("Diagram File already exists: " + diagramFile); + return false; + } +<%if (!editorGen.isSameFileForDiagramAndModel()) {%> + URI modelFileURI = getModelFileURI(); + File modelFile = new File(modelFileURI.toFileString()); + if (modelFile.exists()) { + setErrorMessage("Model File already exists: " + modelFile); + return false; + } +<%}%> + } + setErrorMessage(null); + return true; + } + + /** + * @generated + */ + public URI getCreatedDiagramFileURI() { + return createdDiagramFileURI; + } + + /** + * @generated + */ + private URI getDiagramFileURI() { + try { + return URI.createFileURI(fileField.getText()); + } catch (Exception exception) { + } + return null; + } + +<%if (!editorGen.isSameFileForDiagramAndModel()) {%> + /** + * @generated + */ + private URI getModelFileURI() { + URI diagramFileURI = getDiagramFileURI(); + if (diagramFileURI == null) { + return null; + } + return diagramFileURI.trimFileExtension().appendFileExtension("<%=editorGen.getDomainFileExtension()%>"); + } +<%}%> + + /** + * Performs the operations necessary to create and open the diagram + * @return boolean indicating whether the creation and opening the Diagram was successful + * @generated + */ + public boolean finish() { + final boolean[] result = new boolean[1]; + <%=importManager.getImportedName("org.eclipse.jface.operation.IRunnableWithProgress")%> op = new IRunnableWithProgress() { + public void run(IProgressMonitor monitor) { + result[0] = doFinish(monitor); + } + }; + + try { + getContainer().run(false, true, op); + } catch (InterruptedException e) { + return false; + } catch (<%=importManager.getImportedName("java.lang.reflect.InvocationTargetException")%> e) { + if (e.getTargetException() instanceof CoreException) { + <%=importManager.getImportedName("org.eclipse.jface.dialogs.ErrorDialog")%>.openError( + getContainer().getShell(), + "Creation Problems", + null, // no special message + ((CoreException) e.getTargetException()).getStatus()); + } + else { + // CoreExceptions are handled above, but unexpected runtime exceptions and errors may still occur. + <%=genPlugin.getActivatorClassName()%>.getInstance().getLog().log(new <%=importManager.getImportedName("org.eclipse.core.runtime.Status")%>(<%=importManager.getImportedName("org.eclipse.core.runtime.IStatus")%>.ERROR, <%=genPlugin.getActivatorClassName()%>.ID, 0, "Creation failed", e.getTargetException())); + } + return false; + } + return result[0]; + } + + /** + * @param monitor the IProgressMonitor to use to indicate progress and check for cancellation + * @return boolean indicating whether the diagram was created and opened successfully + * @generated + */ + public boolean doFinish(IProgressMonitor monitor) { + createdDiagramFileURI = createDiagramFile(monitor); + return createdDiagramFileURI != null; + } + + /** + * @generated + */ + private URI createDiagramFile(IProgressMonitor monitor) { + //TODO: Editing domain! + <%=importManager.getImportedName("org.eclipse.emf.ecore.resource.ResourceSet")%> resourceSet = new <%=importManager.getImportedName("org.eclipse.emf.ecore.resource.impl.ResourceSetImpl")%>(); + final <%=importManager.getImportedName("org.eclipse.emf.ecore.resource.Resource")%> diagramResource = resourceSet.createResource(getDiagramFileURI()); +<% +final boolean standaloneDomainModel = !editorGen.isSameFileForDiagramAndModel() && genDiagram.getDomainDiagramElement() != null; +if (standaloneDomainModel) { +%> + final Resource modelResource = resourceSet.createResource(getModelFileURI()); +<%}%> + + if (diagramResource != null<%if (standaloneDomainModel) {%> && modelResource != null<%}%>) { + //TODO: Editing domain! + <%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%> model = <%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryClassName())%>.eINSTANCE.create<%=genDiagram.getDomainDiagramElement().getClassifierAccessorName()%>(); +<% +if (standaloneDomainModel) { +%> + modelResource.getContents().add(model); + try { + modelResource.save(<%=importManager.getImportedName("java.util.Collections")%>.EMPTY_MAP); + } catch (IOException e) { + handleSaveException(e); + } +<% +} else { +%> + diagramResource.getContents().add(model); +<% +} +%> + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%> diagram = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createDiagram(); + diagram.setElement(model); + <%=importManager.getImportedName(genDiagram.getNotationViewFactoryQualifiedClassName())%>.decorateView(diagram); + diagramResource.getContents().add(diagram); + try { + diagramResource.save(Collections.EMPTY_MAP); + } catch (IOException e) { + handleSaveException(e); + } + } + boolean result = <%=genDiagram.getDiagramEditorUtilClassName()%>.openEditor(getDiagramFileURI()); + if (!result) { + return null; + } + return getDiagramFileURI(); + } + + /** + * @generated + */ + private void handleSaveException(IOException e) { + throw new RuntimeException(e); + } +} +<%importManager.emitSortedImports();%> Index: templates/parts/LinkLabelEditPart.javajet =================================================================== RCS file: templates/parts/LinkLabelEditPart.javajet diff -N templates/parts/LinkLabelEditPart.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/LinkLabelEditPart.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,241 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="LinkLabelEditPartGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* java.util.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.emf.ecore.*"%> +<% +GenLinkLabel genLabel = (GenLinkLabel) ((Object[]) argument)[0]; +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +GenLink genHost = genLabel.getLink(); +GenDiagram genDiagram = genLabel.getDiagram(); +LabelModelFacet labelModelFacet = genLabel.getModelFacet(); +GenClass underlyingMetaClass; +if (genHost.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet typeLinkModelFacet = (TypeLinkModelFacet) genHost.getModelFacet(); + underlyingMetaClass = typeLinkModelFacet.getMetaClass(); +} else if (genHost.getModelFacet() instanceof FeatureLinkModelFacet) { + FeatureLinkModelFacet featureLinkModelFacet = (FeatureLinkModelFacet) genHost.getModelFacet(); + underlyingMetaClass = featureLinkModelFacet.getMetaFeature().getTypeGenClass(); +} else { + underlyingMetaClass = null; +} +%> +<%@ include file="../copyright4java.jetinc"%> +<%importManager.emitPackageStatement(stringBuffer); +importManager.addImport("org.eclipse.draw2d.geometry.Point"); +importManager.addImport("org.eclipse.gef.EditPart"); +importManager.addImport("org.eclipse.gef.EditPolicy"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Location"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Node"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genLabel.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")%> { +<%@ include file="textAwareFields.jetinc"%> + + /** + * @generated + */ + public <%=genLabel.getEditPartClassName()%>(View view) { + assert view instanceof Node; + setModel(view); + } + + /** + * @generated + */ + private Node getDiagramNode() { + return (Node)getModel(); + } + + /** + * @generated + */ + protected void createEditPolicies() { +<% +final String primaryView = "getUpdatableParent().getDiagramEdge()"; +final String resolvedSemanticElement = "resolveSemanticElement()"; +%> + installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy")%>() { + public EditPart getHost() { + return getUpdatableParent(); + } + }); +<% +if (labelModelFacet instanceof FeatureLabelModelFacet == true || labelModelFacet instanceof CompositeFeatureLabelModelFacet) { +%> +<%@ include file="directEditPolicy.javajetinc"%> +<% +} +%> + } + +<% +if (labelModelFacet instanceof FeatureLabelModelFacet == true || labelModelFacet instanceof CompositeFeatureLabelModelFacet) { +%> +<%@ include file="directEdit.javajetinc"%> +<% +} +%> + + /** + * @generated + */ + protected void refreshVisuals() { + super.refreshVisuals(); + refreshLabel(); + refreshFont(); + refreshFontColor(); + refreshBounds(); + } + + /** + * @generated + */ + protected void refreshBounds() { + Node node = getDiagramNode(); + assert node.getLayoutConstraint() instanceof Location; + final Location location = (Location) node.getLayoutConstraint(); + ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) getParent()).setLayoutConstraint(this, + getFigure(), new <%=importManager.getImportedName("org.eclipse.draw2d.AbstractLocator")%>() { + protected <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> getReferencePoint() { + <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> parent = getUpdatableParent(); + <%=importManager.getImportedName("org.eclipse.draw2d.Connection")%> connection = (<%=importManager.getImportedName("org.eclipse.draw2d.Connection")%>) parent.getFigure(); + <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> midPoint = connection.getPoints().getMidpoint().getCopy(); + connection.translateToAbsolute(midPoint); + return midPoint.translate(new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%>(location.getX(), location.getY())); + } + }); + } + + /** + * @generated + */ + protected void refreshLabel() { + getLabel().setText(getLabelText()); + } + +<%@ include file="labelText.javajetinc"%> +<%@ include file="refreshMethods/font.javajetinc"%> +<%@ include file="refreshMethods/fontColor.javajetinc"%> + + /** + * @generated + */ + private <%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> resolveSemanticElement() { + for(EditPart editPart = this; editPart != null; editPart = editPart.getParent()) { + View view = (View)editPart.getModel(); + if (view != null && view.getElement() != null) { + return (<%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%>) view.getElement(); + } + } + return null; + } + + /** + * @generated + */ + private <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> getUpdatableParent() { + for(EditPart editPart = getParent(); editPart != null; editPart = editPart.getParent()) { + if (editPart instanceof <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%>) { + return (<%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%>) editPart; + } + } + return null; + } + + /** + * @generated + */ + public void activate() { + super.activate(); + <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> updatableParent = getUpdatableParent(); + if (updatableParent != null) { + updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontColor(), fontColorRefresher); + updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontHeight(), fontRefresher); + updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontName(), fontRefresher); + updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Bold(), fontRefresher); + updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Italic(), fontRefresher); +<% +if (labelModelFacet instanceof FeatureLabelModelFacet) { + GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); +%> + updatableParent.addRefresher(<%=importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=feature.getFeatureAccessorName()%>(), labelRefresher); +<% +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); +%> + updatableParent.addRefresher(<%=importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getFeatureAccessorName()%>(), labelRefresher); +<% + } +} +%> + } + } + + /** + * @generated + */ + public void deactivate() { + super.deactivate(); + <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> updatableParent = getUpdatableParent(); + if (updatableParent != null) { + updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontColor(), fontColorRefresher); + updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontHeight(), fontRefresher); + updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontName(), fontRefresher); + updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Bold(), fontRefresher); + updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Italic(), fontRefresher); +<% +if (labelModelFacet instanceof FeatureLabelModelFacet) { + GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); +%> + updatableParent.removeRefresher(<%=importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=feature.getFeatureAccessorName()%>(), labelRefresher); +<% +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) { + GenFeature next = (GenFeature) it.next(); +%> + updatableParent.removeRefresher(<%=importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getFeatureAccessorName()%>(), labelRefresher); +<% + } +} +%> + } + } + + /** + * @generated + */ + private IUpdatableEditPart.Refresher labelRefresher = new IUpdatableEditPart.Refresher() { + public void refresh() { + refreshLabel(); + } + }; + + + /** + * @generated + */ + private IUpdatableEditPart.Refresher fontColorRefresher = new IUpdatableEditPart.Refresher() { + public void refresh() { + refreshFontColor(); + } + }; + + /** + * @generated + */ + private IUpdatableEditPart.Refresher fontRefresher = new IUpdatableEditPart.Refresher() { + public void refresh() { + refreshFont(); + } + }; + +<%@ include file="labelFigure.jetinc"%> +} +<%importManager.emitSortedImports();%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/ManifestGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/ManifestGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/ManifestGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/ManifestGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,70 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; +import java.util.*; + +public class ManifestGenerator +{ + protected static String nl; + public static synchronized ManifestGenerator create(String lineSeparator) + { + nl = lineSeparator; + ManifestGenerator result = new ManifestGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = "Manifest-Version: 1.0" + NL + "Bundle-ManifestVersion: 2" + NL + "Bundle-Name: %pluginName" + NL + "Bundle-SymbolicName: "; + protected final String TEXT_2 = "; singleton:=true" + NL + "Bundle-Version: "; + protected final String TEXT_3 = NL + "Bundle-ClassPath: ." + NL + "Bundle-Activator: "; + protected final String TEXT_4 = NL + "Bundle-Vendor: %providerName" + NL + "Bundle-Localization: plugin" + NL + "Export-Package: "; + protected final String TEXT_5 = NL + "Require-Bundle: org.eclipse.core.runtime," + NL + " org.eclipse.jface," + NL + " org.eclipse.ui.views," + NL + " org.eclipse.ui.workbench," + NL + " org.eclipse.emf.ecore," + NL + " org.eclipse.emf.edit.ui," + NL + " org.eclipse.gef;visibility:=reexport," + NL + " org.eclipse.gmf.runtime.notation," + NL + " org.eclipse.gmf.runtime.notation.edit"; + protected final String TEXT_6 = ","; + protected final String TEXT_7 = NL + " "; + protected final String TEXT_8 = ";visibility:=reexport"; + protected final String TEXT_9 = NL + "Eclipse-LazyStart: true"; + protected final String TEXT_10 = NL; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +final GenPlugin genPlugin = (GenPlugin) argument; +final GenModel genModel = genPlugin.getEditorGen().getDomainGenModel(); +final Set requiredPluginIDs = new LinkedHashSet(); +requiredPluginIDs.add(genModel.getModelPluginID()); +requiredPluginIDs.add(genModel.getEditPluginID()); + +for (Iterator it = genModel.getAllUsedGenPackagesWithClassifiers().iterator(); it.hasNext();) { + GenModel nextGenModel = ((GenPackage) it.next()).getGenModel(); + if (nextGenModel.hasEditSupport()) { + requiredPluginIDs.add(nextGenModel.getModelPluginID()); + requiredPluginIDs.add(nextGenModel.getEditPluginID()); + } +} + +requiredPluginIDs.addAll(genPlugin.getRequiredPluginIDs()); +Iterator requiredBundleIterator = requiredPluginIDs.iterator(); + + stringBuffer.append(TEXT_1); + stringBuffer.append(genPlugin.getID()); + stringBuffer.append(TEXT_2); + stringBuffer.append(genPlugin.getVersion()); + stringBuffer.append(TEXT_3); + stringBuffer.append(genPlugin.getActivatorQualifiedClassName()); + stringBuffer.append(TEXT_4); + stringBuffer.append(genPlugin.getEditorGen().getEditor().getPackageName()); + stringBuffer.append(TEXT_5); + while(requiredBundleIterator.hasNext()) { + stringBuffer.append(TEXT_6); + stringBuffer.append(TEXT_7); + stringBuffer.append(requiredBundleIterator.next()); + stringBuffer.append(TEXT_8); + } + stringBuffer.append(TEXT_9); + stringBuffer.append(TEXT_10); + return stringBuffer.toString(); + } +} Index: templates/editor/plugin.xmljet =================================================================== RCS file: templates/editor/plugin.xmljet diff -N templates/editor/plugin.xmljet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/plugin.xmljet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,44 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="PluginXML" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.emf.codegen.ecore.genmodel.*"%> +<% +final GenPlugin genPlugin = (GenPlugin) argument; +final GenEditorGenerator editorGen = genPlugin.getEditorGen(); +final GenDiagram genDiagram = editorGen.getDiagram(); +final GenModel genModel = editorGen.getDomainGenModel(); +%> + + + + + + + + + + + + + + + + + Creates <%=genModel.getModelName()%> diagram. + + + + + Index: .classpath =================================================================== RCS file: .classpath diff -N .classpath --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ .classpath 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,8 @@ + + + + + + + + Index: templates/parts/labelFigure.jetinc =================================================================== RCS file: templates/parts/labelFigure.jetinc diff -N templates/parts/labelFigure.jetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/labelFigure.jetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,62 @@ + + /** + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> createFigure() { + <%=importManager.getImportedName("org.eclipse.draw2d.Label")%> label = createLabel(); + defaultText = label.getText(); + return label; + } + + /** + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.draw2d.Label")%> createLabel() { +<% +String figureQualifiedClassName = null; +Viewmap viewmap = genLabel.getViewmap(); +if (viewmap instanceof FigureViewmap) { + figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName(); + if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) { + figureQualifiedClassName = "org.eclipse.draw2d.Label"; + } +%> + return new <%=importManager.getImportedName(figureQualifiedClassName)%>(); +<%} // 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(); +%> + return new <%=figureQualifiedClassName%>(); +<%}%> + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.draw2d.Label")%> getLabel() { + return (<%=importManager.getImportedName("org.eclipse.draw2d.Label")%>) getFigure(); + } + + /** + * @generated + */ + public void setLabel(<%=importManager.getImportedName("org.eclipse.draw2d.Label")%> figure) { + unregisterVisuals(); + setFigure(figure); + defaultText = figure.getText(); + registerVisuals(); + refreshVisuals(); + } + +<% +if (genLabel.getViewmap() instanceof InnerClassViewmap) { + String classBody = ((InnerClassViewmap) genLabel.getViewmap()).getClassBody(); +%> +<%=classBody%> +<%@ include file="mapmodeWorkaround.javajetinc"%> +<% +} +%> Index: plugin.properties =================================================================== RCS file: plugin.properties diff -N plugin.properties --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ plugin.properties 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,2 @@ +pluginName=GMF Pure-GEF Code Generation Plug-in +providerName=Eclipse.org Index: templates/parts/refreshers.javajetinc/targetEdges.javajetinc =================================================================== RCS file: templates/parts/refreshers.javajetinc/targetEdges.javajetinc diff -N templates/parts/refreshers.javajetinc/targetEdges.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshers.javajetinc/targetEdges.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,6 @@ + Refresher targetEdgesRefresher = new Refresher() { + public void refresh() { + refreshTargetConnections(); + } + }; + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getView_TargetEdges(), targetEdgesRefresher); Index: templates/parts/directEditPolicy.javajetinc =================================================================== RCS file: templates/parts/directEditPolicy.javajetinc diff -N templates/parts/directEditPolicy.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/directEditPolicy.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,122 @@ + installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.DIRECT_EDIT_ROLE, + new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.DirectEditPolicy")%>() { + protected void showCurrentEditValue(<%=importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest")%> request) { + String value = (String) request.getCellEditor().getValue(); + getLabel().setText(value); + } + protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getDirectEditCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest")%> request) { + String value = (String) request.getCellEditor().getValue(); + if (value == null) { + //Invalid value is transformed into a null by the validator. + //XXX: implement validator + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + final Object[] parseResult; + try { + parseResult = new <%=importManager.getImportedName("java.text.MessageFormat")%>(EDIT_PATTERN).parse(value); + } catch (IllegalArgumentException e) { + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } catch (<%=importManager.getImportedName("java.text.ParseException")%> e) { + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } +<% +if (labelModelFacet instanceof FeatureLabelModelFacet && !genLabel.isReadOnly()) { + GenFeature featureToSet = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature(); + EStructuralFeature ecoreFeature = featureToSet.getEcoreFeature(); +%> + if (parseResult.length != 1) { + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + return new <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%>() { + private <%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> element = <%=resolvedSemanticElement%>; + private <%=importManager.getImportedName("org.eclipse.emf.common.command.Command")%> domainModelCommand = createDomainModelCommand(); + private <%=importManager.getImportedName("org.eclipse.emf.common.command.Command")%> createDomainModelCommand() { + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")%> domainModelEditDomain = <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(<%=primaryView%>.getDiagram().getElement()); + <%=importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")%> feature = (<%=importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")%>) <%=importManager.getImportedName(featureToSet.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=featureToSet.getFeatureAccessorName()%>(); + Object valueToSet; + try { + valueToSet = <%=importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName())%>.parseValue(feature, parseResult[0]); + } catch (IllegalArgumentException e) { + return <%=importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")%>.INSTANCE; + } +<% + if (ecoreFeature.isMany()) { +%> + <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%> result = new <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%>(); + <%=importManager.getImportedName("org.eclipse.emf.common.util.EList")%> values = new <%=importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")%>(); + values.addAll(element.get<%=featureToSet.getAccessorName()%>()); + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(domainModelEditDomain, element, feature, values)); + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand")%>.create(domainModelEditDomain, element, feature, valueToSet)); + return result; +<% + } else { +%> + return <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, element, feature, valueToSet); +<% + } +%> + } +<% +} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) { + CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet; + List metaFeatures = compositeFeatureLabelModelFacet.getMetaFeatures(); +%> + if (parseResult.length != <%=metaFeatures.size()%>) { + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + return new <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%>() { + private <%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> element = <%=resolvedSemanticElement%>; + private <%=importManager.getImportedName("org.eclipse.emf.common.command.Command")%> domainModelCommand = createDomainModelCommand(); + private <%=importManager.getImportedName("org.eclipse.emf.common.command.Command")%> createDomainModelCommand() { + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")%> domainModelEditDomain = <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(<%=primaryView%>.getDiagram().getElement()); + <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%> result = new <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%>(); + Object valueToSet; +<% + boolean haveDeclaredValues = false; + for(int i = 0; i < metaFeatures.size(); i++) { + GenFeature nextFeatureToSet = (GenFeature) metaFeatures.get(i); + EStructuralFeature nextEcoreFeature = nextFeatureToSet.getEcoreFeature(); +%> + <%if (i == 0) {%><%=importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")%> <%}%>feature = (<%=importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")%>) <%=importManager.getImportedName(nextFeatureToSet.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=nextFeatureToSet.getFeatureAccessorName()%>(); + try { + valueToSet = <%=importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName())%>.parseValue(feature, parseResult[<%=i%>]); + } catch (IllegalArgumentException e) { + return <%=importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")%>.INSTANCE; + } +<% + if (nextEcoreFeature.isMany()) { +%> + <%if (!haveDeclaredValues) { haveDeclaredValues = true;%><%=importManager.getImportedName("org.eclipse.emf.common.util.EList")%> <%}%>values = new <%=importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")%>(); + values.addAll(element.get<%=nextFeatureToSet.getAccessorName()%>()); + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(domainModelEditDomain, element, feature, values)); + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand")%>.create(domainModelEditDomain, element, feature, valueToSet)); +<% + } else { +%> + result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, element, feature, valueToSet)); +<% + } +%> +<% + } +%> + return result; + } +<% +} +%> + public void undo() { + domainModelCommand.undo(); + } + public void execute() { + domainModelCommand.execute(); + } + public boolean canUndo() { + return element != null && domainModelCommand != null && domainModelCommand.canUndo(); + } + public boolean canExecute() { + return element != null && domainModelCommand != null && domainModelCommand.canExecute(); + } + }; + } + }); Index: templates/emf-merge.xml =================================================================== RCS file: templates/emf-merge.xml diff -N templates/emf-merge.xml --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/emf-merge.xml 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/CompartmentViewFactoryGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/CompartmentViewFactoryGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/providers/CompartmentViewFactoryGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/providers/CompartmentViewFactoryGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,80 @@ +package org.eclipse.gmf.codegen.templates.lite.providers; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; + +public class CompartmentViewFactoryGenerator +{ + protected static String nl; + public static synchronized CompartmentViewFactoryGenerator create(String lineSeparator) + { + nl = lineSeparator; + CompartmentViewFactoryGenerator result = new CompartmentViewFactoryGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_5 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static void decorateView("; + protected final String TEXT_6 = " view) {"; + protected final String TEXT_7 = NL; + protected final String TEXT_8 = " annotation = "; + protected final String TEXT_9 = ".eINSTANCE.createEAnnotation();" + NL + "annotation.setSource(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "view.getEAnnotations().add(annotation);" + NL + "annotation.getDetails().put(\"modelID\", \""; + protected final String TEXT_10 = "\"); //$NON-NLS-1$" + NL + "annotation.getDetails().put(\"visualID\", \""; + protected final String TEXT_11 = "\"); //$NON-NLS-1$" + NL + "\t\t"; + protected final String TEXT_12 = " drawerStyle = "; + protected final String TEXT_13 = ".eINSTANCE.createDrawerStyle();" + NL + "\t\tview.getStyles().add(drawerStyle);" + NL + "\t\t//XXX: init styles from attributes!!!" + NL + "\t\t"; + protected final String TEXT_14 = " titleStyle = "; + protected final String TEXT_15 = ".eINSTANCE.createTitleStyle();" + NL + "\t\tview.getStyles().add(titleStyle);" + NL + "\t}" + NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenCompartment genElement = (GenCompartment) ((Object[]) argument)[0]; +GenDiagram genDiagram = genElement.getDiagram(); +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_4); + stringBuffer.append(genElement.getNotationViewFactoryClassName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_6); + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory")); + stringBuffer.append(TEXT_9); + stringBuffer.append(genDiagram.getEditorGen().getModelID()); + stringBuffer.append(TEXT_10); + stringBuffer.append(genElement.getVisualID()); + stringBuffer.append(TEXT_11); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.DrawerStyle")); + stringBuffer.append(TEXT_12); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_13); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.TitleStyle")); + stringBuffer.append(TEXT_14); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_15); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: templates/parts/refreshers.javajetinc/shapeColor.javajetinc =================================================================== RCS file: templates/parts/refreshers.javajetinc/shapeColor.javajetinc diff -N templates/parts/refreshers.javajetinc/shapeColor.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshers.javajetinc/shapeColor.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,12 @@ + Refresher backgroundColorRefresher = new Refresher() { + public void refresh() { + refreshBackgroundColor(); + } + }; + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFillStyle_FillColor(), backgroundColorRefresher); + Refresher foregroundColorRefresher = new Refresher() { + public void refresh() { + refreshForegroundColor(); + } + }; + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getLineStyle_LineColor(), foregroundColorRefresher); Index: templates/providers/CompartmentViewFactory.javajet =================================================================== RCS file: templates/providers/CompartmentViewFactory.javajet diff -N templates/providers/CompartmentViewFactory.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/providers/CompartmentViewFactory.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,30 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers" class="CompartmentViewFactoryGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> +<% +GenCompartment genElement = (GenCompartment) ((Object[]) argument)[0]; +GenDiagram genDiagram = genElement.getDiagram(); +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> +<%importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genElement.getNotationViewFactoryClassName()%> { + /** + * @generated + */ + public static void decorateView(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) { +<%@ include file="createVIDAnnotation.jetinc"%> + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.DrawerStyle")%> drawerStyle = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createDrawerStyle(); + view.getStyles().add(drawerStyle); + //XXX: init styles from attributes!!! + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.TitleStyle")%> titleStyle = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createTitleStyle(); + view.getStyles().add(titleStyle); + } +} +<%importManager.emitSortedImports();%> Index: templates/editor/CreationWizard.javajet =================================================================== RCS file: templates/editor/CreationWizard.javajet diff -N templates/editor/CreationWizard.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/CreationWizard.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,68 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="CreationWizardGenerator" + imports="org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> +<% +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final GenModel genModel = genDiagram.getEditorGen().getDomainGenModel(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer); +importManager.addImport("org.eclipse.jface.viewers.IStructuredSelection"); +importManager.addImport("org.eclipse.ui.IWorkbench"); + +%> + +/** + * @generated + */ +public class <%=genDiagram.getCreationWizardClassName()%> extends <%=importManager.getImportedName("org.eclipse.jface.wizard.Wizard")%> implements <%=importManager.getImportedName("org.eclipse.ui.INewWizard")%> { + /** + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.emf.common.util.URI")%> diagramFileURI; + + /** + * @generated + */ + private <%=importManager.getImportedName(genDiagram.getCreationWizardPageQualifiedClassName())%> page; + + /** + * @generated + */ + public void addPages() { + super.addPages(); + if (page == null) { + page = new <%=importManager.getImportedName(genDiagram.getCreationWizardPageQualifiedClassName())%>(); + } + addPage(page); + } + + /** + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + setWindowTitle("New <%=genModel.getModelName()%> Diagram"); //$NON-NLS-1$ + setDefaultPageImageDescriptor(<%=genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()%>.getBundledImageDescriptor( + "icons/full/wizban/New<%=genModel.getModelName()%>.gif")); //$NON-NLS-1$ + setNeedsProgressMonitor(true); + } + + /** + * @generated + */ + public boolean performFinish() { + boolean retVal = page.finish(); + diagramFileURI = page.getCreatedDiagramFileURI(); + return retVal; + } + + /** + * returns the diagram file + * @return URI the diagram file + * @generated + */ + public final URI getDiagramFileURI() { + return diagramFileURI; + } +} +<%importManager.emitSortedImports();%> Index: .project =================================================================== RCS file: .project diff -N .project --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ .project 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,34 @@ + + + org.eclipse.gmf.codegen.lite + + + + + + org.eclipse.emf.codegen.JETBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.emf.codegen.jet.IJETNature + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + Index: templates/parts/IUpdatableEditPart.javajet =================================================================== RCS file: templates/parts/IUpdatableEditPart.javajet diff -N templates/parts/IUpdatableEditPart.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/IUpdatableEditPart.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,66 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="UpdatableEditPartGenerator" + imports="org.eclipse.gmf.common.codegen.* "%> +<% +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> + +<% +importManager.emitPackageStatement(stringBuffer); +%> + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EStructuralFeature; + +/** + * @generated + */ +public interface IUpdatableEditPart { + /** + * @generated + */ + public Refresher getRefresher(EStructuralFeature feature, Notification msg); + /** + * @generated + */ + public interface Refresher { + /** + * @generated + */ + public void refresh(); + } + + /** + * @generated + */ + public class CompositeRefresher implements Refresher { + /** + * @generated + */ + public void addRefresher(Refresher refresher) { + refreshers.add(refresher); + } + + /** + * @generated + */ + public void removeRefresher(Refresher refresher) { + refreshers.remove(refresher); + } + + /** + * @generated + */ + public void refresh() { + for(Iterator it = refreshers.iterator(); it.hasNext(); ) { + Refresher next = (Refresher) it.next(); + next.refresh(); + } + } + + private Collection/**/ refreshers = new ArrayList(); + } +} Index: templates/editor/DiagramEditorUtil.javajet =================================================================== RCS file: templates/editor/DiagramEditorUtil.javajet diff -N templates/editor/DiagramEditorUtil.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/DiagramEditorUtil.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,96 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="DiagramEditorUtilGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%> +<% +final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +final GenEditorGenerator editorGen = genDiagram.getEditorGen(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer);%> + +<%importManager.markImportLocation(stringBuffer); +importManager.addImport("java.io.File"); +importManager.addImport("org.eclipse.ui.IWorkbench"); +importManager.addImport("org.eclipse.ui.IWorkbenchPage"); +importManager.addImport("org.eclipse.ui.IWorkbenchWindow"); +importManager.addImport("org.eclipse.ui.PlatformUI"); +importManager.addImport("org.eclipse.ui.PartInitException"); +importManager.addImport("org.eclipse.ui.IEditorDescriptor"); +importManager.addImport("org.eclipse.swt.widgets.Shell"); +importManager.addImport("org.eclipse.swt.widgets.FileDialog"); +importManager.addImport("org.eclipse.jface.dialogs.MessageDialog"); +importManager.addImport("org.eclipse.emf.common.util.URI"); +importManager.addImport("org.eclipse.emf.common.ui.URIEditorInput"); +%> + +/** + * @generated + */ +public class <%=genDiagram.getDiagramEditorUtilClassName()%> { + /** + * @generated + */ + public static String openFilePathDialog(Shell shell, String fileExtensionFilter, int style) { + FileDialog fileDialog = new FileDialog(shell, style); + fileDialog.setFilterExtensions(new String[]{fileExtensionFilter}); + + fileDialog.open(); + if (fileDialog.getFileName() != null && fileDialog.getFileName().length() > 0) { + return fileDialog.getFilterPath() + File.separator + fileDialog.getFileName(); + } + else + { + return null; + } + } + + /** + * @generated + */ + public static boolean openEditor(URI fileURI) { + IWorkbench workbench = PlatformUI.getWorkbench(); + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + + IEditorDescriptor editorDescriptor = workbench.getEditorRegistry().getDefaultEditor(fileURI.toFileString()); + if (editorDescriptor == null) { + MessageDialog.openError( + workbenchWindow.getShell(), + "Error", + "There is no editor registered for the file " + fileURI.toFileString()); + return false; + } else { + try { + page.openEditor(new URIEditorInput(fileURI), editorDescriptor.getId()); + } catch (PartInitException exception) { + MessageDialog.openError( + workbenchWindow.getShell(), + "Error Opening Editor", + exception.getMessage()); + return false; + } + } + + return true; + } + + /** + * @generated + */ + public static URI getDiagramFileURI(URI modelFileURI) { + if (modelFileURI == null || !modelFileURI.isFile()) { + return null; + } + return modelFileURI.trimFileExtension().appendFileExtension("<%=editorGen.getDiagramFileExtension()%>"); + } + + /** + * @generated + */ + public static URI getModelFileURI(URI diagramFileURI) { + if (diagramFileURI == null || !diagramFileURI.isFile()) { + return null; + } + return diagramFileURI.trimFileExtension().appendFileExtension("<%=editorGen.getDomainFileExtension()%>"); + } + } +<%importManager.emitSortedImports();%> Index: templates/editor/ActionBarContributor.javajet =================================================================== RCS file: templates/editor/ActionBarContributor.javajet diff -N templates/editor/ActionBarContributor.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/ActionBarContributor.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,79 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="ActionBarContributorGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.codegen.ecore.genmodel.*"%> +<% +final GenEditorView editorView = (GenEditorView) ((Object[]) argument)[0]; +final GenModel genModel = editorView.getEditorGen().getDomainGenModel(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + +importManager.emitPackageStatement(stringBuffer); +importManager.markImportLocation(stringBuffer); +%> + +import org.eclipse.gef.ui.actions.ActionBarContributor; +import org.eclipse.gef.ui.actions.DeleteRetargetAction; +import org.eclipse.gef.ui.actions.GEFActionConstants; +import org.eclipse.gef.ui.actions.RedoRetargetAction; +import org.eclipse.gef.ui.actions.UndoRetargetAction; +import org.eclipse.gef.ui.actions.ZoomComboContributionItem; +import org.eclipse.gef.ui.actions.ZoomInRetargetAction; +import org.eclipse.gef.ui.actions.ZoomOutRetargetAction; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.actions.ActionFactory; + +/** + * The action bar contributor for the <%=genModel.getModelName()%> editor. + * + * @generated + */ +public class <%=editorView.getActionBarContributorClassName()%> extends ActionBarContributor { + /** + * @generated + */ + protected void buildActions() { + addRetargetAction(new UndoRetargetAction()); + addRetargetAction(new RedoRetargetAction()); + addRetargetAction(new DeleteRetargetAction()); + + addRetargetAction(new ZoomInRetargetAction()); + addRetargetAction(new ZoomOutRetargetAction()); + } + + /** + * @generated + */ + protected void declareGlobalActionKeys() { + addGlobalActionKey(ActionFactory.PRINT.getId()); + addGlobalActionKey(ActionFactory.DELETE.getId()); + } + + /** + * @generated + */ + public void contributeToMenu(IMenuManager menuManager) { + super.contributeToMenu(menuManager); + + // add a "View" menu after "Edit" + MenuManager viewMenu = new MenuManager("View"); + viewMenu.add(getAction(GEFActionConstants.ZOOM_IN)); + viewMenu.add(getAction(GEFActionConstants.ZOOM_OUT)); + + menuManager.insertAfter(IWorkbenchActionConstants.M_EDIT, viewMenu); + } + + /** + * @generated + */ + public void contributeToToolBar(IToolBarManager toolBarManager) { + super.contributeToToolBar(toolBarManager); + + toolBarManager.add(getAction(ActionFactory.UNDO.getId())); + toolBarManager.add(getAction(ActionFactory.REDO.getId())); + + toolBarManager.add(new Separator()); + toolBarManager.add(new ZoomComboContributionItem(getPage())); + } +} Index: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/DiagramEditPartGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/DiagramEditPartGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/parts/DiagramEditPartGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/parts/DiagramEditPartGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,406 @@ +package org.eclipse.gmf.codegen.templates.lite.parts; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; +import java.util.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; + +public class DiagramEditPartGenerator +{ + protected static String nl; + public static synchronized DiagramEditPartGenerator create(String lineSeparator) + { + nl = lineSeparator; + DiagramEditPartGenerator result = new DiagramEditPartGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_3 = " extends AbstractGraphicalEditPart implements IUpdatableEditPart {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_4 = "("; + protected final String TEXT_5 = " model) {" + NL + "\t\tsetModel(model);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_6 = " getDiagram() {" + NL + "\t\treturn ("; + protected final String TEXT_7 = ") getModel();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void createEditPolicies() {" + NL + "\t\tinstallEditPolicy(EditPolicy.COMPONENT_ROLE, new RootComponentEditPolicy());" + NL + "\t\tinstallEditPolicy(EditPolicy.LAYOUT_ROLE, new XYLayoutEditPolicy() {" + NL + "\t\t\tprotected Command getCreateCommand(CreateRequest request) {"; + protected final String TEXT_8 = NL + "\t\t\t\tif (request instanceof "; + protected final String TEXT_9 = ".CreateRequestEx) {" + NL + "\t\t\t\t\t"; + protected final String TEXT_10 = ".CreateRequestEx requestEx = ("; + protected final String TEXT_11 = ".CreateRequestEx) request;" + NL + "\t\t\t\t\tint[] visualIds = requestEx.getVisualIds();" + NL + "\t\t\t\t\tCompoundCommand result = new CompoundCommand();" + NL + "\t\t\t\t\tfor(int i = 0; i < visualIds.length; i++) {" + NL + "\t\t\t\t\t\tint nextVisualId = visualIds[i];" + NL + "\t\t\t\t\t\tswitch (nextVisualId) {"; + protected final String TEXT_12 = NL + "\t\t\t\t\t\tcase "; + protected final String TEXT_13 = ":" + NL + "\t\t\t\t\t\t\tresult.add(new Create"; + protected final String TEXT_14 = "Command(getDiagram(), requestEx, ("; + protected final String TEXT_15 = ")getConstraintFor(request)));" + NL + "\t\t\t\t\t\t\tbreak;"; + protected final String TEXT_16 = NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\treturn result.unwrap();" + NL + "\t\t\t\t}"; + protected final String TEXT_17 = NL + "\t\t\t\treturn null;" + NL + "\t\t\t}" + NL + "\t\t\tprotected Command createChangeConstraintCommand(final ChangeBoundsRequest request, EditPart child, Object constraint) {" + NL + "\t\t\t\tfinal Node node = (Node) child.getModel();" + NL + "\t\t\t\treturn new Command(\"Change node position/size\") {" + NL + "\t\t\t\t\tprivate Point moveDelta = request.getMoveDelta();" + NL + "\t\t\t\t\tprivate Dimension resizeDelta = request.getSizeDelta();" + NL + "" + NL + "\t\t\t\t\tpublic boolean canUndo() {" + NL + "\t\t\t\t\t\treturn canExecute();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic boolean canExecute() {" + NL + "\t\t\t\t\t\treturn node.getLayoutConstraint() instanceof Bounds;" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic void undo() {" + NL + "\t\t\t\t\t\texecute(moveDelta.getNegated(), resizeDelta.getNegated());" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic void execute() {" + NL + "\t\t\t\t\t\texecute(moveDelta, resizeDelta);" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tprivate void execute(Point move, Dimension resize) {" + NL + "\t\t\t\t\t\tBounds bounds = (Bounds) node.getLayoutConstraint();" + NL + "\t\t\t\t\t\tbounds.setX(bounds.getX() + move.x);" + NL + "\t\t\t\t\t\tbounds.setY(bounds.getY() + move.y);" + NL + "\t\t\t\t\t\tbounds.setWidth(bounds.getWidth() + resize.width);" + NL + "\t\t\t\t\t\tbounds.setHeight(bounds.getHeight() + resize.height);" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t};" + NL + "\t\t\t}" + NL + "\t\t\tprotected Command createChangeConstraintCommand(EditPart child, Object constraint) {" + NL + "\t\t\t\tassert false;" + NL + "\t\t\t\treturn UnexecutableCommand.INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t});" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected IFigure createFigure() {" + NL + "\t\tIFigure f = new FreeformLayer();" + NL + "\t\tf.setBorder(new MarginBorder(5));" + NL + "\t\tf.setLayoutManager(new FreeformLayout());" + NL + "\t\treturn f;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Object getAdapter(Class key) {" + NL + "\t\tif ("; + protected final String TEXT_18 = ".class == key) {" + NL + "\t\t\treturn new "; + protected final String TEXT_19 = "(this);" + NL + "\t\t}"; + protected final String TEXT_20 = NL + "\t\treturn super.getAdapter(key);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected List getModelChildren() {" + NL + "\t\treturn getDiagram().getVisibleChildren();" + NL + "\t}" + NL; + protected final String TEXT_21 = NL; + protected final String TEXT_22 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_23 = "static "; + protected final String TEXT_24 = "class Create"; + protected final String TEXT_25 = "Command extends "; + protected final String TEXT_26 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final "; + protected final String TEXT_27 = " parent;" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate "; + protected final String TEXT_28 = " createdNode;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic Create"; + protected final String TEXT_29 = "Command("; + protected final String TEXT_30 = " parent, "; + protected final String TEXT_31 = ".CreateRequestEx request"; + protected final String TEXT_32 = ", "; + protected final String TEXT_33 = " constraint"; + protected final String TEXT_34 = ") {" + NL + "\t\t\tthis.parent = parent;" + NL + "\t\t\tcreatedNode = "; + protected final String TEXT_35 = ".eINSTANCE.createNode();"; + protected final String TEXT_36 = NL + "\t\t\t"; + protected final String TEXT_37 = " createdDomainElement = "; + protected final String TEXT_38 = ".eINSTANCE.create(" + NL + "\t\t\t\t"; + protected final String TEXT_39 = ".eINSTANCE.get"; + protected final String TEXT_40 = "());"; + protected final String TEXT_41 = NL + "\t\t\t"; + protected final String TEXT_42 = " createdDomainElement = "; + protected final String TEXT_43 = ".eINSTANCE.create"; + protected final String TEXT_44 = "();"; + protected final String TEXT_45 = "\t\t\tcreatedNode.setElement(createdDomainElement);" + NL + "\t\t\t"; + protected final String TEXT_46 = NL + "\t\t\t"; + protected final String TEXT_47 = "."; + protected final String TEXT_48 = ".initializeElement(createdDomainElement);" + NL + "\t\t\t"; + protected final String TEXT_49 = ".decorateView(createdNode);"; + protected final String TEXT_50 = NL + "\t\t\t"; + protected final String TEXT_51 = " bounds = "; + protected final String TEXT_52 = ".eINSTANCE.createBounds();" + NL + "\t\t\tcreatedNode.setLayoutConstraint(bounds);" + NL + "\t\t\tbounds.setX(constraint.x);" + NL + "\t\t\tbounds.setY(constraint.y);"; + protected final String TEXT_53 = NL + "\t\t\tbounds.setWidth(Math.max(constraint.width, "; + protected final String TEXT_54 = "));" + NL + "\t\t\tbounds.setHeight(Math.max(constraint.height, "; + protected final String TEXT_55 = "));"; + protected final String TEXT_56 = NL + "\t\t\t"; + protected final String TEXT_57 = " domainModelEditDomain = "; + protected final String TEXT_58 = ".getEditingDomainFor(parent.getDiagram().getElement());"; + protected final String TEXT_59 = NL + "\t\t\t"; + protected final String TEXT_60 = " compoundCommand = new "; + protected final String TEXT_61 = "();" + NL + "\t\t\tcompoundCommand.append("; + protected final String TEXT_62 = ".create(domainModelEditDomain, "; + protected final String TEXT_63 = ", " + NL + "\t\t\t\t"; + protected final String TEXT_64 = ".eINSTANCE.get"; + protected final String TEXT_65 = "(), createdNode.getElement()));" + NL + "\t\t\tcompoundCommand.append("; + protected final String TEXT_66 = ".create(domainModelEditDomain, "; + protected final String TEXT_67 = ", " + NL + "\t\t\t\t"; + protected final String TEXT_68 = ".eINSTANCE.get"; + protected final String TEXT_69 = "(), createdNode.getElement()));" + NL + "\t\t\tthis.domainModelAddCommand = compoundCommand;"; + protected final String TEXT_70 = NL + "\t\t\tthis.domainModelAddCommand = "; + protected final String TEXT_71 = ".create(domainModelEditDomain, "; + protected final String TEXT_72 = ", " + NL + "\t\t\t\t"; + protected final String TEXT_73 = ".eINSTANCE.get"; + protected final String TEXT_74 = "(), createdNode.getElement());"; + protected final String TEXT_75 = NL + "\t\t\trequest.setCreatedObject(createdNode);" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final org.eclipse.emf.common.command.Command domainModelAddCommand;" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic boolean canExecute() {" + NL + "\t\t\treturn domainModelAddCommand != null && domainModelAddCommand.canExecute();" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic boolean canUndo() {" + NL + "\t\t\treturn domainModelAddCommand != null && domainModelAddCommand.canUndo();" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void execute() {" + NL + "\t\t\tparent.insertChild(createdNode);" + NL + "\t\t\tdomainModelAddCommand.execute();" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void undo() {" + NL + "\t\t\tparent.getPersistedChildren().remove(createdNode);" + NL + "\t\t\tdomainModelAddCommand.undo();" + NL + "\t\t}" + NL + "\t}"; + protected final String TEXT_76 = NL; + protected final String TEXT_77 = NL; + protected final String TEXT_78 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_79 = " structuralFeatures2Refresher;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Refresher getRefresher("; + protected final String TEXT_80 = " feature, "; + protected final String TEXT_81 = " msg) {" + NL + "\t\tif (structuralFeatures2Refresher == null) {" + NL + "\t\t\tcreateRefreshers();" + NL + "\t\t}" + NL + "\t\treturn (Refresher) structuralFeatures2Refresher.get(feature);" + NL + "\t}" + NL + "" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void createRefreshers() {" + NL + "\t\tstructuralFeatures2Refresher = new HashMap();"; + protected final String TEXT_82 = NL; + protected final String TEXT_83 = "\t\tRefresher childrenRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshChildren();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_84 = ".eINSTANCE.getView_PersistedChildren(), childrenRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_85 = ".eINSTANCE.getView_TransientChildren(), childrenRefresher);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate class UpdateManager extends "; + protected final String TEXT_86 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void notifyChanged("; + protected final String TEXT_87 = " msg) {" + NL + "\t\t\tsuper.notifyChanged(msg);" + NL + "\t\t\tif (msg.isTouch()) {" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t\t"; + protected final String TEXT_88 = " affectedEditParts = findAffectedParts(msg);" + NL + "\t\t\tfor("; + protected final String TEXT_89 = " it = affectedEditParts.iterator(); it.hasNext(); ) {" + NL + "\t\t\t\tIUpdatableEditPart next = (IUpdatableEditPart) it.next();" + NL + "\t\t\t\tIUpdatableEditPart.Refresher refresher = next.getRefresher(("; + protected final String TEXT_90 = ")msg.getFeature(), msg);" + NL + "\t\t\t\tif (refresher != null) {" + NL + "\t\t\t\t\trefresher.refresh();" + NL + "\t\t\t\t}" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate "; + protected final String TEXT_91 = "/**/ findAffectedParts("; + protected final String TEXT_92 = " msg) {" + NL + "\t\t\tObject notifier = msg.getNotifier();" + NL + "\t\t\tif (notifier instanceof "; + protected final String TEXT_93 = ") {" + NL + "\t\t\t\t"; + protected final String TEXT_94 = " view = getView((EObject) notifier);" + NL + "\t\t\t\tif (view != null) {" + NL + "\t\t\t\t\tEditPart affectedEditPart = (EditPart) getViewer().getEditPartRegistry().get(view);" + NL + "\t\t\t\t\tif (affectedEditPart != null) {" + NL + "\t\t\t\t\t\treturn "; + protected final String TEXT_95 = ".singleton(affectedEditPart);" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t}" + NL + "\t\t\t}" + NL + "\t\t\treturn "; + protected final String TEXT_96 = ".EMPTY_LIST;" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate "; + protected final String TEXT_97 = " getView(EObject offspring) {" + NL + "\t\t\twhile (offspring != null && offspring instanceof View == false) {" + NL + "\t\t\t\toffspring = offspring.eContainer();" + NL + "\t\t\t}" + NL + "\t\t\treturn ("; + protected final String TEXT_98 = ") offspring;" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void activate() {" + NL + "\t\tsuper.activate();" + NL + "\t\tgetDiagram().eAdapters().add(updateManager);" + NL + "\t\tgetDiagram().getElement().eAdapters().add(domainModelRefresher);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void deactivate() {" + NL + "\t\tgetDiagram().getElement().eAdapters().remove(domainModelRefresher);" + NL + "\t\tgetDiagram().eAdapters().remove(updateManager);" + NL + "\t\tsuper.deactivate();" + NL + "\t}" + NL; + protected final String TEXT_99 = NL; + protected final String TEXT_100 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate DomainModelRefresher domainModelRefresher = new DomainModelRefresher();" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate class DomainModelRefresher extends "; + protected final String TEXT_101 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void notifyChanged("; + protected final String TEXT_102 = " msg) {" + NL + "\t\t\tsuper.notifyChanged(msg);" + NL + "\t\t\tif (msg.isTouch()) {" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t\tRefresher refresher = getRefresher(("; + protected final String TEXT_103 = ") msg.getFeature(), msg);" + NL + "\t\t\tif (refresher != null) {" + NL + "\t\t\t\trefresher.refresh();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate UpdateManager updateManager = new UpdateManager();" + NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +importManager.emitPackageStatement(stringBuffer); +importManager.addImport("org.eclipse.gef.editparts.AbstractGraphicalEditPart"); +importManager.addImport("org.eclipse.draw2d.IFigure"); +importManager.addImport("org.eclipse.draw2d.FreeformLayer"); +importManager.addImport("org.eclipse.draw2d.FreeformLayout"); +importManager.addImport("org.eclipse.draw2d.MarginBorder"); +importManager.addImport("org.eclipse.gef.commands.Command"); +importManager.addImport("org.eclipse.gef.commands.CompoundCommand"); +importManager.addImport("org.eclipse.gef.EditPolicy"); +importManager.addImport("org.eclipse.draw2d.geometry.Dimension"); +importManager.addImport("org.eclipse.draw2d.geometry.Point"); +importManager.addImport("org.eclipse.gef.EditPart"); +importManager.addImport("org.eclipse.gef.SnapToGrid"); +importManager.addImport("org.eclipse.gef.SnapToHelper"); +importManager.addImport("org.eclipse.gef.editpolicies.RootComponentEditPolicy"); +importManager.addImport("org.eclipse.gef.commands.UnexecutableCommand"); +importManager.addImport("org.eclipse.gef.editpolicies.RootComponentEditPolicy"); +importManager.addImport("org.eclipse.gef.editpolicies.XYLayoutEditPolicy"); +importManager.addImport("org.eclipse.gef.requests.ChangeBoundsRequest"); +importManager.addImport("org.eclipse.gef.requests.CreateRequest"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Bounds"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram"); +importManager.addImport("org.eclipse.gmf.runtime.notation.Node"); +importManager.addImport("org.eclipse.gmf.runtime.notation.NotationPackage"); +importManager.addImport("org.eclipse.gmf.runtime.notation.View"); +importManager.addImport("java.util.List"); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_2); + stringBuffer.append(genDiagram.getEditPartClassName()); + stringBuffer.append(TEXT_3); + stringBuffer.append(genDiagram.getEditPartClassName()); + stringBuffer.append(TEXT_4); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")); + stringBuffer.append(TEXT_6); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")); + stringBuffer.append(TEXT_7); + if (null != genDiagram.getPalette()) { +final Palette palette = genDiagram.getPalette(); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_9); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_10); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_11); + +for(Iterator it = genDiagram.getTopLevelNodes().iterator(); it.hasNext(); ) { + GenTopLevelNode next = (GenTopLevelNode)it.next(); + + stringBuffer.append(TEXT_12); + stringBuffer.append(next.getVisualID()); + stringBuffer.append(TEXT_13); + stringBuffer.append(next.getDomainMetaClass().getName()); + stringBuffer.append(next.getVisualID()); + stringBuffer.append(TEXT_14); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")); + stringBuffer.append(TEXT_15); + +} + + stringBuffer.append(TEXT_16); + }/*when there's palette*/ + stringBuffer.append(TEXT_17); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.SnapToHelper")); + stringBuffer.append(TEXT_18); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.SnapToGrid")); + stringBuffer.append(TEXT_19); + /*@ include file="adapters/propertySource.javajetinc"*/ + stringBuffer.append(TEXT_20); + +for(Iterator it = genDiagram.getTopLevelNodes().iterator(); genDiagram.getPalette() != null && it.hasNext(); ) { + GenTopLevelNode next = (GenTopLevelNode)it.next(); + boolean isStatic = true; + boolean isListLayout = false; + String resolvedSemanticElement = "parent.getElement()"; + + stringBuffer.append(TEXT_21); + stringBuffer.append(TEXT_22); + if (isStatic) { + stringBuffer.append(TEXT_23); + } + stringBuffer.append(TEXT_24); + stringBuffer.append(next.getDomainMetaClass().getName()); + stringBuffer.append(next.getVisualID()); + stringBuffer.append(TEXT_25); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_26); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_27); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_28); + stringBuffer.append(next.getDomainMetaClass().getName()); + stringBuffer.append(next.getVisualID()); + stringBuffer.append(TEXT_29); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_30); + stringBuffer.append(importManager.getImportedName(genDiagram.getPalette().getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_31); + if (!isListLayout) { + stringBuffer.append(TEXT_32); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")); + stringBuffer.append(TEXT_33); + } + stringBuffer.append(TEXT_34); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_35); + +if (next.getDomainMetaClass().isMapEntry()) { +/*Workaround for Ecore example: map entries cannot be created using factory, only using reflective EFactory.create() method*/ + + stringBuffer.append(TEXT_36); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); + stringBuffer.append(TEXT_37); + stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName())); + stringBuffer.append(TEXT_38); + stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_39); + stringBuffer.append(next.getDomainMetaClass().getClassifierAccessorName()); + stringBuffer.append(TEXT_40); + +} else { + + stringBuffer.append(TEXT_41); + stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getQualifiedInterfaceName())); + stringBuffer.append(TEXT_42); + stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName())); + stringBuffer.append(TEXT_43); + stringBuffer.append(next.getDomainMetaClass().getClassifierAccessorName()); + stringBuffer.append(TEXT_44); + +} + + stringBuffer.append(TEXT_45); + /*XXX: Class name DomainElementInitializer should be user-customizable*/ + stringBuffer.append(TEXT_46); + stringBuffer.append(importManager.getImportedName(genDiagram.getNotationViewFactoriesPackageName() + ".DomainElementInitializer")); + stringBuffer.append(TEXT_47); + stringBuffer.append(next.getUniqueIdentifier()); + stringBuffer.append(TEXT_48); + stringBuffer.append(importManager.getImportedName(next.getNotationViewFactoryQualifiedClassName())); + stringBuffer.append(TEXT_49); + + if (!isListLayout) { + + stringBuffer.append(TEXT_50); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")); + stringBuffer.append(TEXT_51); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_52); + + int defaultWidth = 40; + int defaultHeight = 40; + DefaultSizeAttributes defSizeAttrs = (DefaultSizeAttributes) next.getViewmap().find(DefaultSizeAttributes.class); + if (defSizeAttrs != null) { + defaultWidth = defSizeAttrs.getWidth(); + defaultHeight = defSizeAttrs.getHeight(); + } + + stringBuffer.append(TEXT_53); + stringBuffer.append(defaultWidth); + stringBuffer.append(TEXT_54); + stringBuffer.append(defaultHeight); + stringBuffer.append(TEXT_55); + + } + + stringBuffer.append(TEXT_56); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")); + stringBuffer.append(TEXT_57); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_58); + + TypeModelFacet facet = next.getModelFacet(); + GenFeature childFeature = facet.getChildMetaFeature(); + GenFeature containmentFeature = facet.getContainmentMetaFeature(); + if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) { + + stringBuffer.append(TEXT_59); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_60); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_61); + stringBuffer.append(importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_62); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_63); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_64); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_65); + stringBuffer.append(importManager.getImportedName(childFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_66); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_67); + stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_68); + stringBuffer.append(childFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_69); + + } else { + + stringBuffer.append(TEXT_70); + stringBuffer.append(importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_71); + stringBuffer.append(resolvedSemanticElement); + stringBuffer.append(TEXT_72); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_73); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_74); + + } + + stringBuffer.append(TEXT_75); + +} + + stringBuffer.append(TEXT_76); + stringBuffer.append(TEXT_77); + stringBuffer.append(TEXT_78); + stringBuffer.append(importManager.getImportedName("java.util.HashMap")); + stringBuffer.append(TEXT_79); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_80); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification")); + stringBuffer.append(TEXT_81); + stringBuffer.append(TEXT_82); + stringBuffer.append(TEXT_83); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_84); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_85); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.util.EContentAdapter")); + stringBuffer.append(TEXT_86); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification")); + stringBuffer.append(TEXT_87); + stringBuffer.append(importManager.getImportedName("java.util.Collection")); + stringBuffer.append(TEXT_88); + stringBuffer.append(importManager.getImportedName("java.util.Iterator")); + stringBuffer.append(TEXT_89); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_90); + stringBuffer.append(importManager.getImportedName("java.util.Collection")); + stringBuffer.append(TEXT_91); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification")); + stringBuffer.append(TEXT_92); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); + stringBuffer.append(TEXT_93); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_94); + stringBuffer.append(importManager.getImportedName("java.util.Collections")); + stringBuffer.append(TEXT_95); + stringBuffer.append(importManager.getImportedName("java.util.Collections")); + stringBuffer.append(TEXT_96); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_97); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_98); + stringBuffer.append(TEXT_99); + stringBuffer.append(TEXT_100); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.impl.AdapterImpl")); + stringBuffer.append(TEXT_101); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification")); + stringBuffer.append(TEXT_102); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_103); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: templates/editor/getVisualID.jetinc =================================================================== RCS file: templates/editor/getVisualID.jetinc diff -N templates/editor/getVisualID.jetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/getVisualID.jetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,19 @@ + /** + * @generated + */ + private static int getVisualID(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> containerView) { + <%=importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")%> annotation = containerView.getEAnnotation("ViewIdentifier"); //$NON-NLS-1$ + if (annotation == null) { + return -1; + } + String visualID = (String) annotation.getDetails().get("visualID"); //$NON-NLS-1$ + if (visualID == null) { + return -1; + } + try { + return Integer.parseInt(visualID); + } catch (NumberFormatException e) { + <%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError("Unable to parse \"visualID\" annotation: " + visualID, e); + } + return -1; + } Index: templates/parts/refreshers.javajetinc/children.javajetinc =================================================================== RCS file: templates/parts/refreshers.javajetinc/children.javajetinc diff -N templates/parts/refreshers.javajetinc/children.javajetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/refreshers.javajetinc/children.javajetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,7 @@ + Refresher childrenRefresher = new Refresher() { + public void refresh() { + refreshChildren(); + } + }; + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getView_PersistedChildren(), childrenRefresher); + structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getView_TransientChildren(), childrenRefresher); Index: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/LinkViewFactoryGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/providers/LinkViewFactoryGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/providers/LinkViewFactoryGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/providers/LinkViewFactoryGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,109 @@ +package org.eclipse.gmf.codegen.templates.lite.providers; + +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; +import java.util.*; + +public class LinkViewFactoryGenerator +{ + protected static String nl; + public static synchronized LinkViewFactoryGenerator create(String lineSeparator) + { + nl = lineSeparator; + LinkViewFactoryGenerator result = new LinkViewFactoryGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_5 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static void decorateView("; + protected final String TEXT_6 = " view) {"; + protected final String TEXT_7 = NL; + protected final String TEXT_8 = " annotation = "; + protected final String TEXT_9 = ".eINSTANCE.createEAnnotation();" + NL + "annotation.setSource(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "view.getEAnnotations().add(annotation);" + NL + "annotation.getDetails().put(\"modelID\", \""; + protected final String TEXT_10 = "\"); //$NON-NLS-1$" + NL + "annotation.getDetails().put(\"visualID\", \""; + protected final String TEXT_11 = "\"); //$NON-NLS-1$" + NL + "\t\t//XXX: init styles from attributes!!!"; + protected final String TEXT_12 = NL + "\t\tcreate"; + protected final String TEXT_13 = "Label(view);"; + protected final String TEXT_14 = NL + "\t}" + NL; + protected final String TEXT_15 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static void create"; + protected final String TEXT_16 = "Label("; + protected final String TEXT_17 = " view) {" + NL + "\t\t"; + protected final String TEXT_18 = " label = "; + protected final String TEXT_19 = ".eINSTANCE.createNode();" + NL + "\t\tview.getPersistedChildren().add(label);" + NL + "\t\tlabel.setElement(null);" + NL + "\t\t"; + protected final String TEXT_20 = ".decorateView(label);" + NL + "\t}"; + protected final String TEXT_21 = NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenLink genElement = (GenLink) ((Object[]) argument)[0]; +GenDiagram genDiagram = genElement.getDiagram(); +ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + importManager.emitPackageStatement(stringBuffer); + +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_4); + stringBuffer.append(genElement.getNotationViewFactoryClassName()); + stringBuffer.append(TEXT_5); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_6); + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory")); + stringBuffer.append(TEXT_9); + stringBuffer.append(genDiagram.getEditorGen().getModelID()); + stringBuffer.append(TEXT_10); + stringBuffer.append(genElement.getVisualID()); + stringBuffer.append(TEXT_11); + +for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) { + GenLinkLabel label = (GenLinkLabel) it.next(); + + stringBuffer.append(TEXT_12); + stringBuffer.append(label.getVisualID()); + stringBuffer.append(TEXT_13); + +}/*iterate over labels*/ + + stringBuffer.append(TEXT_14); + +for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) { + GenLinkLabel label = (GenLinkLabel) it.next(); + + stringBuffer.append(TEXT_15); + stringBuffer.append(label.getVisualID()); + stringBuffer.append(TEXT_16); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_17); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_18); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_19); + stringBuffer.append(importManager.getImportedName(label.getNotationViewFactoryQualifiedClassName())); + stringBuffer.append(TEXT_20); + +}/*iterate over labels*/ + + stringBuffer.append(TEXT_21); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +} Index: templates/parts/LinkEditPart.javajet =================================================================== RCS file: templates/parts/LinkEditPart.javajet diff -N templates/parts/LinkEditPart.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/LinkEditPart.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,181 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="LinkEditPartGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.emf.ecore.*"%> +<% +GenLink genLink = (GenLink) ((Object[]) argument)[0]; +GenDiagram genDiagram = genLink.getDiagram(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> +<% +importManager.emitPackageStatement(stringBuffer); +importManager.addImport("java.util.List"); +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genLink.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractConnectionEditPart")%> implements IUpdatableEditPart { + /** + * @generated + */ + public <%=genLink.getEditPartClassName()%>(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) { + assert view instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")%>; + setModel(view); + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")%> getDiagramEdge() { + return (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")%>) getModel(); + } + + /** + * @generated + */ + protected void createEditPolicies() { + //XXX: install correct edit policies! +<%@ include file="linkComponentEditPolicy.javajetinc"%> + installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.CONNECTION_ENDPOINTS_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy")%>()); + } + +<% +if (genLink.getLabels().size() > 0) { + GenLinkLabel primaryLabel = (GenLinkLabel)genLink.getLabels().get(0); +%> +<%@ include file="../editor/getVisualID.jetinc" %> + + /** + * Returns the label which should be direct-edited by default. + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> getPrimaryLabelEditPart() { + for(<%=importManager.getImportedName("java.util.Iterator")%> it = getDiagramEdge().getChildren().iterator(); it.hasNext(); ) { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> nextChild = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>)it.next(); + if (getVisualID(nextChild) == <%=primaryLabel.getVisualID()%>) { + return (EditPart) getViewer().getEditPartRegistry().get(nextChild); + } + } + return null; + } + + /** + * @generated + */ + public void performRequest(<%=importManager.getImportedName("org.eclipse.gef.Request")%> req) { + if (<%=importManager.getImportedName("org.eclipse.gef.RequestConstants")%>.REQ_DIRECT_EDIT == req.getType()) { + <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> primaryLabel = getPrimaryLabelEditPart(); + if (primaryLabel != null) { + primaryLabel.performRequest(req); + } + } + } +<% +} //if (genLink.getLabels().size() > 0) +%> + + /** + * @generated + */ + protected List getModelChildren() { + return ((Edge)getModel()).getChildren(); + } + +<%@ include file="refresher.javajetinc"%> + + /** + * @generated + */ + public void activate() { + super.activate(); + getDiagramEdge().getElement().eAdapters().add(domainModelRefresher); + } + + /** + * @generated + */ + public void deactivate() { + getDiagramEdge().getElement().eAdapters().remove(domainModelRefresher); + super.deactivate(); + } + +<%@ include file="refreshers.javajetinc/domainModelRefresher.javajetinc"%> + +<%@ include file="refreshers.javajetinc/externalRefreshers.javajetinc"%> + + /** + * @generated + */ + private void createRefreshers() { + structuralFeatures2Refresher = new HashMap(); +<%@ include file="refreshers.javajetinc/children.javajetinc"%> +<%@ include file="refreshers.javajetinc/visibility.javajetinc"%> + } + + /** + * @generated + */ + protected void refreshVisuals() { + super.refreshVisuals(); +//XXX: refreshBackgroundColor(); +//XXX: refreshForegroundColor(); +//XXX: refreshFont(); + refreshVisibility(); + } + + /** + * @generated + */ + protected void refreshVisibility() { + boolean isVisible = ((View)getModel()).isVisible(); + boolean wasVisible = getFigure().isVisible(); + if (isVisible == wasVisible) { + return; + } + if (!isVisible && (getSelected() != SELECTED_NONE)) { + getViewer().deselect(this); + } + + getFigure().setVisible(isVisible); + getFigure().revalidate(); + } + + /** + * 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.draw2d.IFigure")%> createFigure() {<% +Viewmap viewmap = genLink.getViewmap(); +if (viewmap instanceof FigureViewmap) { + String figureQualifiedClassName = null; + figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName(); + if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) { + figureQualifiedClassName = "org.eclipse.gmf.runtime.draw2d.PolylineConnection"; + } +%> + return new <%=importManager.getImportedName(figureQualifiedClassName)%>(); +<%} // instanceof FigureViewmap + else if (viewmap instanceof SnippetViewmap) {%> + return <%=((SnippetViewmap) viewmap).getBody()%>; +<%} // instanceof SnippetViewmap + else if (viewmap instanceof InnerClassViewmap) {%> + return new <%=((InnerClassViewmap) viewmap).getClassName()%>(); +<%}%> + } + +<% +if (genLink.getViewmap() instanceof InnerClassViewmap) { + String classBody = ((InnerClassViewmap) genLink.getViewmap()).getClassBody(); +%> +<%=classBody%> +<%@ include file="mapmodeWorkaround.javajetinc"%> +<% +} +%> +} +<%importManager.emitSortedImports();%> Index: templates/providers/createVIDAnnotation.jetinc =================================================================== RCS file: templates/providers/createVIDAnnotation.jetinc diff -N templates/providers/createVIDAnnotation.jetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/providers/createVIDAnnotation.jetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,5 @@ +<%=importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")%> annotation = <%=importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory")%>.eINSTANCE.createEAnnotation(); +annotation.setSource("ViewIdentifier"); //$NON-NLS-1$ +view.getEAnnotations().add(annotation); +annotation.getDetails().put("modelID", "<%=genDiagram.getEditorGen().getModelID()%>"); //$NON-NLS-1$ +annotation.getDetails().put("visualID", "<%=genElement.getVisualID()%>"); //$NON-NLS-1$ Index: templates/parts/NodeEditPart.javajet =================================================================== RCS file: templates/parts/NodeEditPart.javajet diff -N templates/parts/NodeEditPart.javajet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/NodeEditPart.javajet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,819 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="NodeEditPartGenerator" + imports="java.util.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.ecore.*" +%> +<% +GenNode genNode = (GenNode) ((Object[]) argument)[0]; +GenDiagram genDiagram = genNode.getDiagram(); +Palette palette = genDiagram.getPalette(); +boolean useFlowLayout = !genNode.isListLayout(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; +%> +<%@ include file="../copyright4java.jetinc"%> + +<%importManager.emitPackageStatement(stringBuffer);%> +<% +/*XXX: temporary hack to generate compilable code in tests (where class NodeEditPart extends NodeEditPart is generated otherwise)*/ +importManager.registerInnerClass(genNode.getEditPartClassName()); +importManager.markImportLocation(stringBuffer); +%> + +/** + * @generated + */ +public class <%=genNode.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")%> implements <%=importManager.getImportedName("org.eclipse.gef.NodeEditPart")%>, IUpdatableEditPart { + /** + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> contentPane; + + /** + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> primaryShape; + + /** + * @generated + */ + public <%=genNode.getEditPartClassName()%>(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> model) { + assert model instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>; + setModel(model); + } + + /** + * @generated + */ + protected void createEditPolicies() { +<%@ include file="componentEditPolicy.javajetinc"%> + installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.LAYOUT_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ConstrainedLayoutEditPolicy")%>() { + protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getCreateCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.CreateRequest")%> request) { + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + protected Object getConstraintFor(<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%> rect) { + return null; + } + protected Object getConstraintFor(<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> point) { + return null; + } + protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> createChangeConstraintCommand(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> child, Object constraint) { + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + protected <%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%> createChildEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> child) { + return new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ResizableEditPolicy")%>() { + public <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> getTargetEditPart(<%=importManager.getImportedName("org.eclipse.gef.Request")%> request) { + if (<%=importManager.getImportedName("org.eclipse.gef.RequestConstants")%>.REQ_SELECTION.equals(request.getType())) { + return <%=genNode.getEditPartClassName()%>.this; + } + return super.getTargetEditPart(request); + } + }; + } + }); + installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.GRAPHICAL_NODE_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy")%>() { + protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getReconnectTargetCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.ReconnectRequest")%> request) { + //XXX: reconnect command + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getReconnectSourceCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.ReconnectRequest")%> request) { + //XXX: reconnect command + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getConnectionCreateCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest")%> request) { +<%if (palette != null) {%> + if (request instanceof <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx) { + <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx requestEx = (<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx) request; + int[] visualIds = requestEx.getVisualIds(); + int matchingVisualIdsCount = 0; + for (int i = 0; i < visualIds.length; i++) { + int nextVisualId = visualIds[i]; + switch (nextVisualId) { +<% +for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) { + GenLink genLink = (GenLink)it.next(); + if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) { + continue; + } + GenClass outgoingClass; + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + outgoingClass = modelFacet.getSourceMetaFeature() == null + ? modelFacet.getContainmentMetaFeature().getGenClass() + : modelFacet.getSourceMetaFeature().getTypeGenClass(); + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { + GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature(); + outgoingClass = metaFeature.getGenClass(); + } else { + continue; + } + if (!outgoingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) { + continue; + } +%> + case <%=genLink.getVisualID()%>: + matchingVisualIdsCount++; + break; +<% +} +%> + } + } + if (matchingVisualIdsCount != 1) { + //Cannot create several connections at once. + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> result = new <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%>() { + //XXX: check multiplicity requirements etc. + }; + request.setStartCommand(result); + return result; + } +<%}/*when there's palette*/%> + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getConnectionCompleteCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest")%> request) { +<%if (palette != null) {%> + if (request.getStartCommand() == null || !request.getStartCommand().canExecute()) { + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + if (request instanceof <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx) { + <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx requestEx = (<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx) request; + int[] visualIds = requestEx.getVisualIds(); + <%=importManager.getImportedName("org.eclipse.gef.commands.CompoundCommand")%> result = new <%=importManager.getImportedName("org.eclipse.gef.commands.CompoundCommand")%>(); + for (int i = 0; i < visualIds.length; i++) { + int nextVisualId = visualIds[i]; + switch (nextVisualId) { +<% +for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) { + GenLink genLink = (GenLink)it.next(); + if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) { + continue; + } + GenClass incomingClass; + String createCommandNameInfix; + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + incomingClass = modelFacet.getTargetMetaFeature().getTypeGenClass(); + createCommandNameInfix = modelFacet.getMetaClass().getName(); + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { + GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature(); + incomingClass = metaFeature.getTypeGenClass(); + createCommandNameInfix = metaFeature.getFeatureAccessorName(); + } else { + continue; + } + if (!incomingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) { + continue; + } +%> + case <%=genLink.getVisualID()%>: + result.add(new Create<%=createCommandNameInfix%><%=genLink.getVisualID()%>Command(requestEx)); + break; +<% +} +%> + } + } + if (result.getChildren().length != 1) { + //Cannot create several connections at once. + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + return result.unwrap(); + } +<%}/*when there's palette*/%> + return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE; + } + }); + } + + /** + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> createFigure() { + <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> invisibleRectangle = new <%=importManager.getImportedName("org.eclipse.draw2d.Figure")%>(); + invisibleRectangle.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.StackLayout")%>()); + <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> shape = createNodeShape(); + invisibleRectangle.add(shape); + contentPane = setupContentPane(shape); + + <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> decorationShape = createDecorationPane(); + if (decorationShape != null) { + invisibleRectangle.add(decorationShape); + } + + return invisibleRectangle; + } + + /** + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.draw2d.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"; + } +%> + primaryShape = new <%=importManager.getImportedName(figureQualifiedClassName)%>()<%if (useFlowLayout) {%> { + protected boolean useLocalCoordinates() { + return true; + } + }<%} /* use flow layout*/ %>; +<%} else if (viewmap instanceof SnippetViewmap) {%> + primaryShape = <%=((SnippetViewmap) viewmap).getBody()%>; +<%} else if (viewmap instanceof InnerClassViewmap) { + figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName(); +%> + <%=figureQualifiedClassName%> figure = new <%=figureQualifiedClassName%>(); + figure.setUseLocalCoordinates(<%=useFlowLayout ? "true" : "false"%>); + primaryShape = figure; +<%}%> + return primaryShape; + } + + /** + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> createDecorationPane() { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) getModel(); + <%=importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")%> annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ + if (annotation == null) { + return null; + } + + <%=importManager.getImportedName("org.eclipse.draw2d.Figure")%> decorationPane = new <%=importManager.getImportedName("org.eclipse.draw2d.Figure")%>(); + decorationPane.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.BorderLayout")%>()); + + <%=importManager.getImportedName("org.eclipse.draw2d.ImageFigure")%> imageFigure = new <%=importManager.getImportedName("org.eclipse.draw2d.ImageFigure")%>(<%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().getBundledImage("icons/shortcut.gif"), <%=importManager.getImportedName("org.eclipse.draw2d.PositionConstants")%>.EAST); + decorationPane.add(imageFigure, <%=importManager.getImportedName("org.eclipse.draw2d.BorderLayout")%>.BOTTOM); + return decorationPane; + } + + /** + * 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 <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> setupContentPane(<%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> nodeShape) { + if (nodeShape.getLayoutManager() == null) { +<% +if (!useFlowLayout) { + String layoutClassName = importManager.getImportedName("org.eclipse.draw2d.ToolbarLayout"); +%> + <%=layoutClassName%> layout = new <%=layoutClassName%>(); + layout.setSpacing(5); + nodeShape.setLayoutManager(layout); +<%} else {%> + nodeShape.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayout")%>() { + + public Object getConstraint(<%=importManager.getImportedName("org.eclipse.draw2d.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; + } + }); +<%}%> + } + return nodeShape; // use nodeShape itself as contentPane + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> getContentPane() { + if (contentPane == null) { + return super.getContentPane(); + } + return contentPane; + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> getDiagramNode() { + return (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>) getModel(); + } + +<% + boolean hasFixedChildren = false; + List innerLabels = new ArrayList(genNode.getLabels().size()); + for (Iterator it = genNode.getLabels().iterator(); it.hasNext(); ) { + GenNodeLabel genLabel = (GenNodeLabel) it.next(); + if (!(genLabel instanceof GenExternalNodeLabel)) { + innerLabels.add(genLabel); + } + } + if (!innerLabels.isEmpty()) { + hasFixedChildren = true; +%> + /** + * @generated + */ + protected boolean addFixedChild(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart) { +<% + for (Iterator it = innerLabels.iterator(); it.hasNext(); ) { + GenNodeLabel genLabel = (GenNodeLabel) it.next(); + String labelEditPart = importManager.getImportedName(genLabel.getEditPartQualifiedClassName()); + String labelFigureClassName = null; + boolean isAccessor; + if (genLabel.getViewmap() instanceof InnerClassViewmap) { + labelFigureClassName = ((InnerClassViewmap) genLabel.getViewmap()).getClassName(); + isAccessor = true; + } else if (genLabel.getViewmap() instanceof FigureViewmap) { + labelFigureClassName = ((FigureViewmap) genLabel.getViewmap()).getFigureQualifiedClassName(); + isAccessor = false; + } else { + // temp hack to make tests pass + labelFigureClassName = "org.eclipse.draw2d.Label"; + isAccessor = false; + } +%> + if (childEditPart instanceof <%=labelEditPart%>) { +<% if (isAccessor) {%> + ((<%=labelEditPart%>) childEditPart).setLabel(((<%=figureQualifiedClassName%>) primaryShape).getFigure<%=labelFigureClassName%>()); +<% } else {%> + ((<%=labelEditPart%>) childEditPart).setLabel(new <%=labelFigureClassName%>()); +<% }%> + return true; + } +<% }%> + return false; + } + +<%@ include file="../editor/getVisualID.jetinc" %> + + /** + * Returns the label which should be direct-edited by default. + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> getPrimaryLabelEditPart() { + for(<%=importManager.getImportedName("java.util.Iterator")%> it = getDiagramNode().getChildren().iterator(); it.hasNext(); ) { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> nextChild = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>)it.next(); + if (getVisualID(nextChild) == <%=((GenNodeLabel)innerLabels.get(0)).getVisualID()%>) { + return (<%=importManager.getImportedName("org.eclipse.gef.EditPart")%>) getViewer().getEditPartRegistry().get(nextChild); + } + } + return null; + } + + /** + * @generated + */ + public void performRequest(<%=importManager.getImportedName("org.eclipse.gef.Request")%> req) { + if (<%=importManager.getImportedName("org.eclipse.gef.RequestConstants")%>.REQ_DIRECT_EDIT == req.getType()) { + <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> primaryLabel = getPrimaryLabelEditPart(); + if (primaryLabel != null) { + primaryLabel.performRequest(req); + } + } + } + +<% + } +%> +<% +boolean hasExternalLabels = false; +for (Iterator labels = genNode.getLabels().iterator(); labels.hasNext();) { + GenNodeLabel label = (GenNodeLabel) labels.next(); + if (label instanceof GenExternalNodeLabel) { + hasExternalLabels = true; + break; + } +} +if (hasExternalLabels) { +%> + /** + * @generated + */ + protected void addChildVisual(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart, int index) { + if (isExternalLabel(childEditPart)) { + <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> labelFigure = ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) childEditPart).getFigure(); + getExternalLabelsContainer().add(labelFigure); + } else { +<% if (hasFixedChildren) {%> + if (!addFixedChild(childEditPart)) { + super.addChildVisual(childEditPart, -1); + } +<% } else {%> + super.addChildVisual(childEditPart, -1); +<% }%> + } + } + + /** + * @generated + */ + protected void removeChildVisual(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart) { + if (isExternalLabel(childEditPart)) { + <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> labelFigure = ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) childEditPart).getFigure(); + getExternalLabelsContainer().remove(labelFigure); + } else { + super.removeChildVisual(childEditPart); + } + } + + /** + * @generated + */ + protected boolean isExternalLabel(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart) { +<% + for (Iterator labels = genNode.getLabels().iterator(); labels.hasNext();) { + GenNodeLabel label = (GenNodeLabel) labels.next(); + if (label instanceof GenExternalNodeLabel) { +%> + if (childEditPart instanceof <%=importManager.getImportedName(label.getEditPartQualifiedClassName())%>) { + return true; + } +<% + } + } +%> + return false; + } + + /** + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> getExternalLabelsContainer() { + <%=importManager.getImportedName("org.eclipse.gef.editparts.ScalableFreeformRootEditPart")%> root = (<%=importManager.getImportedName("org.eclipse.gef.editparts.ScalableFreeformRootEditPart")%>) getRoot(); + return root.getLayer(<%=importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName())%>.EXTERNAL_NODE_LABELS_LAYER); + } + +<% +} else { + if (hasFixedChildren) {%> + + /** + * @generated + */ + protected void addChildVisual(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart, int index) { + if (!addFixedChild(childEditPart)) { + super.addChildVisual(childEditPart, -1); + } + } +<% + } +} +%> + + /** + * @generated + */ + protected void refreshVisuals() { + super.refreshVisuals(); + refreshBounds(); + refreshBackgroundColor(); + refreshForegroundColor(); + refreshFont(); + refreshVisibility(); + } + + /** + * @generated + */ + protected void refreshVisibility() { + boolean isVisible = getDiagramNode().isVisible(); + boolean wasVisible = getFigure().isVisible(); + if (isVisible == wasVisible) { + return; + } + if (!isVisible && (getSelected() != SELECTED_NONE)) { + getViewer().deselect(this); + } + + getFigure().setVisible(isVisible); + getFigure().revalidate(); + } + + /** + * @generated + */ + protected void refreshBounds() { + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> node = getDiagramNode(); + assert node.getLayoutConstraint() instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%>; + <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%> bounds = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%>) node.getLayoutConstraint(); + ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) getParent()).setLayoutConstraint(this, getFigure(), + new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%>(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight())); + } + + /** + * @generated + */ + protected <%=importManager.getImportedName("java.util.List")%> getModelChildren() { + return getDiagramNode().getVisibleChildren(); + } + + /** + * @generated + */ + protected <%=importManager.getImportedName("java.util.List")%> getModelSourceConnections() { + return getDiagramNode().getSourceEdges(); + } + + /** + * @generated + */ + protected <%=importManager.getImportedName("java.util.List")%> getModelTargetConnections() { + return getDiagramNode().getTargetEdges(); + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")%> getSourceConnectionAnchor(<%=importManager.getImportedName("org.eclipse.gef.ConnectionEditPart")%> connection) { + return new <%=importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")%>(getFigure()); + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")%> getSourceConnectionAnchor(<%=importManager.getImportedName("org.eclipse.gef.Request")%> request) { + return new <%=importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")%>(getFigure()); + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")%> getTargetConnectionAnchor(<%=importManager.getImportedName("org.eclipse.gef.ConnectionEditPart")%> connection) { + return new <%=importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")%>(getFigure()); + } + + /** + * @generated + */ + public <%=importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")%> getTargetConnectionAnchor(<%=importManager.getImportedName("org.eclipse.gef.Request")%> request) { + return new <%=importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")%>(getFigure()); + } + + /** + * @generated + */ + public Object getAdapter(Class key) { +<%/*@ include file="adapters/propertySource.javajetinc"*/%> + return super.getAdapter(key); + } + + /** + * @generated + */ + public void activate() { + super.activate(); + getDiagramNode().getElement().eAdapters().add(domainModelRefresher); + } + + /** + * @generated + */ + public void deactivate() { + getDiagramNode().getElement().eAdapters().remove(domainModelRefresher); + super.deactivate(); + } + +<%@ include file="refreshers.javajetinc/domainModelRefresher.javajetinc"%> + +<%@ include file="refreshers.javajetinc/externalRefreshers.javajetinc"%> + +<% + final String primaryView = "getDiagramNode()"; +%> +<%@ include file="refreshMethods/font.javajetinc"%> + +<%@ include file="refreshMethods/shapeColor.javajetinc"%> + +<%@ include file="refresher.javajetinc"%> + + /** + * @generated + */ + private void createRefreshers() { + structuralFeatures2Refresher = new <%=importManager.getImportedName("java.util.HashMap")%>(); +<%@ include file="refreshers.javajetinc/children.javajetinc"%> +<%@ include file="refreshers.javajetinc/bounds.javajetinc"%> +<%@ include file="refreshers.javajetinc/visibility.javajetinc"%> +<%@ include file="refreshers.javajetinc/sourceEdges.javajetinc"%> +<%@ include file="refreshers.javajetinc/targetEdges.javajetinc"%> +<%@ include file="refreshers.javajetinc/font.javajetinc"%> +<%@ include file="refreshers.javajetinc/shapeColor.javajetinc"%> + } + +<%/*XXX: probably, this should go to a separate jet-template along with GraphicalNodeEditPolicy*/%> +<% +for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) { + GenLink genLink = (GenLink)it.next(); + if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) { + continue; + } + GenClass incomingClass; + String createCommandNameInfix; + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + incomingClass = modelFacet.getTargetMetaFeature().getTypeGenClass(); + createCommandNameInfix = modelFacet.getMetaClass().getName(); + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { + GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature(); + incomingClass = metaFeature.getTypeGenClass(); + createCommandNameInfix = metaFeature.getFeatureAccessorName(); + } else { + continue; + } + if (!incomingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) { + continue; + } +%> +<%if (palette != null) {%> + /** + * @generated + */ + private static class Create<%=createCommandNameInfix%><%=genLink.getVisualID()%>Command extends <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> { + /** + * @generated + */ + private final <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> source; + /** + * @generated + */ + private final <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> target; + /** + * @generated + */ + private final <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")%> createdEdge; + /** + * @generated + */ + private final org.eclipse.emf.common.command.Command domainModelAddCommand; + /** + * @generated + */ + public Create<%=createCommandNameInfix%><%=genLink.getVisualID()%>Command(<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx requestEx) { + if (requestEx.getSourceEditPart().getModel() instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) { + source = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>)requestEx.getSourceEditPart().getModel(); + } else { + source = null; + } + if (requestEx.getTargetEditPart().getModel() instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) { + target = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>)requestEx.getTargetEditPart().getModel(); + } else { + target = null; + } + createdEdge = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createEdge(); +<% + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + GenClass linkClass = modelFacet.getMetaClass(); +%> + <%=importManager.getImportedName(importManager.getImportedName(linkClass.getQualifiedInterfaceName()))%> createdDomainElement = <%=importManager.getImportedName(linkClass.getGenPackage().getQualifiedFactoryInterfaceName())%>.eINSTANCE.create<%=linkClass.getClassifierAccessorName()%>(); + createdEdge.setElement(createdDomainElement); + <%/*XXX: Class name DomainElementInitializer should be user-customizable*/%> + <%=importManager.getImportedName(genDiagram.getNotationViewFactoriesPackageName() + ".DomainElementInitializer")%>.<%=genLink.getUniqueIdentifier()%>.initializeElement(createdDomainElement); +<% + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { +%> + createdEdge.setElement(target.getElement()); //XXX: is this correct? +<% + } +%> + <%=importManager.getImportedName(genLink.getNotationViewFactoryQualifiedClassName())%>.decorateView(createdEdge); + <%=importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")%> domainModelEditDomain = <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(source.getDiagram().getElement()); +<% + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { +%> + org.eclipse.emf.common.command.CompoundCommand addLinkEndsCommand = new org.eclipse.emf.common.command.CompoundCommand(); +<% + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + GenFeature sourceFeature = modelFacet.getSourceMetaFeature(); + GenFeature containmentFeature = modelFacet.getContainmentMetaFeature(); + GenFeature childFeature = modelFacet.getChildMetaFeature(); + GenFeature targetFeature = modelFacet.getTargetMetaFeature(); + //source/link features seem to be pointing from link to its ends, not vice versa. + //Anyway, if there is containment feature and it is not opposite to either the source/target, we should add containment, + //otherwise we will have problems with saving uncontained EObjects. + boolean addSource = sourceFeature != null; + boolean addTarget = targetFeature != null; + boolean addChild = childFeature != null && childFeature != containmentFeature && !childFeature.isDerived(); + if (containmentFeature != null) { + if (sourceFeature != null && sourceFeature.getEcoreFeature() instanceof EReference == true) { + EReference sourceEcoreFeature = (EReference)sourceFeature.getEcoreFeature(); + if (sourceEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) { + addSource = false; + } + } + if (targetFeature != null && targetFeature.getEcoreFeature() instanceof EReference == true) { + EReference targetEcoreFeature = (EReference)targetFeature.getEcoreFeature(); + if (targetEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) { + addTarget = false; + } + } +%> + <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> container = getRelationshipContainer(source.getElement(), <%=importManager.getImportedName(containmentFeature.getGenClass().getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getGenClass().getClassifierAccessorName()%>()); + if (container == null) { + domainModelAddCommand = null; + return; + } + addLinkEndsCommand.append(<%=importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, + container, <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(), createdDomainElement)); +<% + } + if (addChild) { +%> + addLinkEndsCommand.append(<%=importManager.getImportedName(childFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, + container, <%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(), createdDomainElement)); +<% + } + if (addSource) { +%> + addLinkEndsCommand.append(<%=importManager.getImportedName(sourceFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, + createdDomainElement, <%=importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=sourceFeature.getFeatureAccessorName()%>(), source.getElement())); +<% + } + if (addTarget) { +%> + addLinkEndsCommand.append(<%=importManager.getImportedName(targetFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, + createdDomainElement, <%=importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=targetFeature.getFeatureAccessorName()%>(), target.getElement())); +<% + } +%> + domainModelAddCommand = addLinkEndsCommand; +<% + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { + GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature(); +%> + domainModelAddCommand = <%=importManager.getImportedName(metaFeature.getEcoreFeature().isMany()? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, source.getElement(), + <%=importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=metaFeature.getFeatureAccessorName()%>(), target.getElement()); +<% + } +%> + } + +<% + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { +%> + /** + * Finds container element for the new relationship of the specified type. + * Default implementation goes up by containment hierarchy starting from + * the specified element and returns the first element that is instance of + * the specified container class. + * + * @generated + */ + protected <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> getRelationshipContainer(<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> element, <%=importManager.getImportedName("org.eclipse.emf.ecore.EClass")%> containerClass) { + for (; element != null; element = element.eContainer()) { + if (containerClass.isSuperTypeOf(element.eClass())) { + return element; + } + } + return null; + } +<% + } +%> + + /** + * @generated + */ + public boolean canExecute() { + return source != null && target != null && createdEdge != null && domainModelAddCommand != null && domainModelAddCommand.canExecute(); + } + /** + * @generated + */ + public boolean canUndo() { + return source != null && target != null && createdEdge != null && domainModelAddCommand != null && domainModelAddCommand.canUndo(); + } + /** + * @generated + */ + public void execute() { + domainModelAddCommand.execute(); + source.getDiagram().insertEdge(createdEdge); + createdEdge.setSource(source); + createdEdge.setTarget(target); + } + /** + * @generated + */ + public void undo() { + domainModelAddCommand.undo(); + source.getDiagram().removeEdge(createdEdge); + createdEdge.setSource(null); + createdEdge.setTarget(null); + } + } +<% +} +%> +<%}/*when there's palette*/%> +<% +if (genNode.getViewmap() instanceof InnerClassViewmap) { + String classBody = ((InnerClassViewmap) genNode.getViewmap()).getClassBody(); +%> +<%=classBody%> +<%@ include file="mapmodeWorkaround.javajetinc"%> +<% +} +%> +} +<%importManager.emitSortedImports();%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/BuildPropertiesGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/editor/BuildPropertiesGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/editor/BuildPropertiesGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/editor/BuildPropertiesGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,23 @@ +package org.eclipse.gmf.codegen.templates.lite.editor; + +public class BuildPropertiesGenerator +{ + protected static String nl; + public static synchronized BuildPropertiesGenerator create(String lineSeparator) + { + nl = lineSeparator; + BuildPropertiesGenerator result = new BuildPropertiesGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = "bin.includes = .,\\" + NL + " META-INF/,\\" + NL + " plugin.xml,\\" + NL + " plugin.properties" + NL + "jars.compile.order = ." + NL + "source.. = src/" + NL + "output.. = bin/"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append(TEXT_1); + return stringBuffer.toString(); + } +} Index: templates/parts/textAwareFields.jetinc =================================================================== RCS file: templates/parts/textAwareFields.jetinc diff -N templates/parts/textAwareFields.jetinc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/parts/textAwareFields.jetinc 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,10 @@ + + /** + * @generated + */ + private <%=importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")%> manager; + + /** + * @generated + */ + private String defaultText; Index: templates/editor/manifest.mfjet =================================================================== RCS file: templates/editor/manifest.mfjet diff -N templates/editor/manifest.mfjet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/manifest.mfjet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,41 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="ManifestGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.emf.codegen.ecore.genmodel.* java.util.*"%> +<% +final GenPlugin genPlugin = (GenPlugin) argument; +final GenModel genModel = genPlugin.getEditorGen().getDomainGenModel(); +final Set requiredPluginIDs = new LinkedHashSet(); +requiredPluginIDs.add(genModel.getModelPluginID()); +requiredPluginIDs.add(genModel.getEditPluginID()); + +for (Iterator it = genModel.getAllUsedGenPackagesWithClassifiers().iterator(); it.hasNext();) { + GenModel nextGenModel = ((GenPackage) it.next()).getGenModel(); + if (nextGenModel.hasEditSupport()) { + requiredPluginIDs.add(nextGenModel.getModelPluginID()); + requiredPluginIDs.add(nextGenModel.getEditPluginID()); + } +} + +requiredPluginIDs.addAll(genPlugin.getRequiredPluginIDs()); +Iterator requiredBundleIterator = requiredPluginIDs.iterator(); +%> +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: <%=genPlugin.getID()%>; singleton:=true +Bundle-Version: <%=genPlugin.getVersion()%> +Bundle-ClassPath: . +Bundle-Activator: <%=genPlugin.getActivatorQualifiedClassName()%> +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Export-Package: <%=genPlugin.getEditorGen().getEditor().getPackageName()%> +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.jface, + org.eclipse.ui.views, + org.eclipse.ui.workbench, + org.eclipse.emf.ecore, + org.eclipse.emf.edit.ui, + org.eclipse.gef;visibility:=reexport, + org.eclipse.gmf.runtime.notation, + org.eclipse.gmf.runtime.notation.edit<%while(requiredBundleIterator.hasNext()) {%>, + <%=requiredBundleIterator.next()%>;visibility:=reexport<%}%> +Eclipse-LazyStart: true Index: templates/editor/build.propertiesjet =================================================================== RCS file: templates/editor/build.propertiesjet diff -N templates/editor/build.propertiesjet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/build.propertiesjet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,8 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="BuildPropertiesGenerator"%> +bin.includes = .,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ Index: templates/editor/plugin.propertiesjet =================================================================== RCS file: templates/editor/plugin.propertiesjet diff -N templates/editor/plugin.propertiesjet --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ templates/editor/plugin.propertiesjet 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,5 @@ +<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="PluginPropertiesGenerator" + imports="org.eclipse.gmf.codegen.gmfgen.*"%> +<%GenPlugin genPlugin = (GenPlugin) argument;%> +pluginName=<%=genPlugin.getName()%> +providerName=<%=genPlugin.getProvider()%> Index: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/NodeEditPartGenerator.java =================================================================== RCS file: src-templates/org/eclipse/gmf/codegen/templates/lite/parts/NodeEditPartGenerator.java diff -N src-templates/org/eclipse/gmf/codegen/templates/lite/parts/NodeEditPartGenerator.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src-templates/org/eclipse/gmf/codegen/templates/lite/parts/NodeEditPartGenerator.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,1356 @@ +package org.eclipse.gmf.codegen.templates.lite.parts; + +import java.util.*; +import org.eclipse.emf.codegen.ecore.genmodel.*; +import org.eclipse.gmf.codegen.gmfgen.*; +import org.eclipse.gmf.common.codegen.*; +import org.eclipse.emf.ecore.*; + +public class NodeEditPartGenerator +{ + protected static String nl; + public static synchronized NodeEditPartGenerator create(String lineSeparator) + { + nl = lineSeparator; + NodeEditPartGenerator result = new NodeEditPartGenerator(); + nl = null; + return result; + } + + protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl; + protected final String TEXT_1 = ""; + protected final String TEXT_2 = NL + "/*" + NL + " * "; + protected final String TEXT_3 = NL + " */"; + protected final String TEXT_4 = NL; + protected final String TEXT_5 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class "; + protected final String TEXT_6 = " extends "; + protected final String TEXT_7 = " implements "; + protected final String TEXT_8 = ", IUpdatableEditPart {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_9 = " contentPane;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_10 = " primaryShape;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_11 = "("; + protected final String TEXT_12 = " model) {" + NL + "\t\tassert model instanceof "; + protected final String TEXT_13 = ";" + NL + "\t\tsetModel(model);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void createEditPolicies() {"; + protected final String TEXT_14 = NL; + protected final String TEXT_15 = "\t\tinstallEditPolicy("; + protected final String TEXT_16 = ".COMPONENT_ROLE, new "; + protected final String TEXT_17 = "() {" + NL + "\t\t\tprotected "; + protected final String TEXT_18 = " createDeleteCommand("; + protected final String TEXT_19 = " deleteRequest) {" + NL + "\t\t\t\treturn new "; + protected final String TEXT_20 = "() {"; + protected final String TEXT_21 = NL + "\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command domainModelRemoveCommand = getDomainModelRemoveCommand();" + NL + "\t\t\t\t\tprivate org.eclipse.emf.common.command.Command getDomainModelRemoveCommand() {" + NL + "\t\t\t\t\t\t"; + protected final String TEXT_22 = " result = new "; + protected final String TEXT_23 = "();"; + protected final String TEXT_24 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_25 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_26 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_27 = ".eINSTANCE.get"; + protected final String TEXT_28 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement()));"; + protected final String TEXT_29 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_30 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_31 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_32 = ".eINSTANCE.get"; + protected final String TEXT_33 = "()," + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_34 = ".UNSET_VALUE));"; + protected final String TEXT_35 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_36 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_37 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_38 = ".eINSTANCE.get"; + protected final String TEXT_39 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement()));"; + protected final String TEXT_40 = NL + "\t\t\t\t\t\tresult.append("; + protected final String TEXT_41 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_42 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_43 = ".eINSTANCE.get"; + protected final String TEXT_44 = "()," + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_45 = ".UNSET_VALUE));"; + protected final String TEXT_46 = NL + "\t\t\t\t\t\treturn result;" + NL + "\t\t\t\t\t}"; + protected final String TEXT_47 = NL + "\t\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command domainModelRemoveCommand = "; + protected final String TEXT_48 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_49 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_50 = ".eINSTANCE.get"; + protected final String TEXT_51 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement());"; + protected final String TEXT_52 = NL + "\t\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command domainModelRemoveCommand = "; + protected final String TEXT_53 = ".create(" + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_54 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), "; + protected final String TEXT_55 = ".eINSTANCE.get"; + protected final String TEXT_56 = "()," + NL + "\t\t\t\t\t\t\t"; + protected final String TEXT_57 = ".UNSET_VALUE);"; + protected final String TEXT_58 = NL + "\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command viewRemoveCommand = "; + protected final String TEXT_59 = ".create(" + NL + "\t\t\t\t\t\t"; + protected final String TEXT_60 = ".getEditingDomainFor(getDiagramNode().getDiagram()), " + NL + "\t\t\t\t\t\tgetDiagramNode());" + NL + "\t\t\t\t\tpublic boolean canExecute() {" + NL + "\t\t\t\t\t\treturn domainModelRemoveCommand != null && domainModelRemoveCommand.canExecute() && viewRemoveCommand != null && viewRemoveCommand.canExecute();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic void execute() {" + NL + "\t\t\t\t\t\tdomainModelRemoveCommand.execute();" + NL + "\t\t\t\t\t\tviewRemoveCommand.execute();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic boolean canUndo() {" + NL + "\t\t\t\t\t\treturn domainModelRemoveCommand != null && domainModelRemoveCommand.canUndo() && viewRemoveCommand != null && viewRemoveCommand.canUndo();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tpublic void undo() {" + NL + "\t\t\t\t\t\tdomainModelRemoveCommand.undo();" + NL + "\t\t\t\t\t\tviewRemoveCommand.undo();" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t};" + NL + "\t\t\t}" + NL + "\t\t});"; + protected final String TEXT_61 = NL + "\t\tinstallEditPolicy("; + protected final String TEXT_62 = ".LAYOUT_ROLE, new "; + protected final String TEXT_63 = "() {" + NL + "\t\t\tprotected "; + protected final String TEXT_64 = " getCreateCommand("; + protected final String TEXT_65 = " request) {" + NL + "\t\t\t\treturn "; + protected final String TEXT_66 = ".INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t\tprotected Object getConstraintFor("; + protected final String TEXT_67 = " rect) {" + NL + "\t\t\t\treturn null;" + NL + "\t\t\t}" + NL + "\t\t\tprotected Object getConstraintFor("; + protected final String TEXT_68 = " point) {" + NL + "\t\t\t\treturn null;" + NL + "\t\t\t}" + NL + "\t\t\tprotected "; + protected final String TEXT_69 = " createChangeConstraintCommand("; + protected final String TEXT_70 = " child, Object constraint) {" + NL + "\t\t\t\treturn "; + protected final String TEXT_71 = ".INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t\tprotected "; + protected final String TEXT_72 = " createChildEditPolicy("; + protected final String TEXT_73 = " child) {" + NL + "\t\t\t\treturn new "; + protected final String TEXT_74 = "() {" + NL + "\t\t\t\t\tpublic "; + protected final String TEXT_75 = " getTargetEditPart("; + protected final String TEXT_76 = " request) {" + NL + "\t\t\t\t\t\tif ("; + protected final String TEXT_77 = ".REQ_SELECTION.equals(request.getType())) {" + NL + "\t\t\t\t\t\t\treturn "; + protected final String TEXT_78 = ".this;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn super.getTargetEditPart(request);" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t};" + NL + "\t\t\t}" + NL + "\t\t});" + NL + "\t\tinstallEditPolicy("; + protected final String TEXT_79 = ".GRAPHICAL_NODE_ROLE, new "; + protected final String TEXT_80 = "() {" + NL + "\t\t\tprotected "; + protected final String TEXT_81 = " getReconnectTargetCommand("; + protected final String TEXT_82 = " request) {" + NL + "\t\t\t\t//XXX: reconnect command" + NL + "\t\t\t\treturn "; + protected final String TEXT_83 = ".INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t\tprotected "; + protected final String TEXT_84 = " getReconnectSourceCommand("; + protected final String TEXT_85 = " request) {" + NL + "\t\t\t\t//XXX: reconnect command" + NL + "\t\t\t\treturn "; + protected final String TEXT_86 = ".INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t\tprotected "; + protected final String TEXT_87 = " getConnectionCreateCommand("; + protected final String TEXT_88 = " request) {"; + protected final String TEXT_89 = NL + "\t\t\t\tif (request instanceof "; + protected final String TEXT_90 = ".CreateConnectionRequestEx) {" + NL + "\t\t\t\t\t"; + protected final String TEXT_91 = ".CreateConnectionRequestEx requestEx = ("; + protected final String TEXT_92 = ".CreateConnectionRequestEx) request;" + NL + "\t\t\t\t\tint[] visualIds = requestEx.getVisualIds();" + NL + "\t\t\t\t\tint matchingVisualIdsCount = 0;" + NL + "\t\t\t\t\tfor (int i = 0; i < visualIds.length; i++) {" + NL + "\t\t\t\t\t\tint nextVisualId = visualIds[i];" + NL + "\t\t\t\t\t\tswitch (nextVisualId) {"; + protected final String TEXT_93 = NL + "\t\t\t\t\t\tcase "; + protected final String TEXT_94 = ":" + NL + "\t\t\t\t\t\t\tmatchingVisualIdsCount++;" + NL + "\t\t\t\t\t\t\tbreak;"; + protected final String TEXT_95 = NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tif (matchingVisualIdsCount != 1) {" + NL + "\t\t\t\t\t\t//Cannot create several connections at once." + NL + "\t\t\t\t\t\treturn "; + protected final String TEXT_96 = ".INSTANCE;" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\t"; + protected final String TEXT_97 = " result = new "; + protected final String TEXT_98 = "() {" + NL + "\t\t\t\t\t\t//XXX: check multiplicity requirements etc." + NL + "\t\t\t\t\t};" + NL + "\t\t\t\t\trequest.setStartCommand(result);" + NL + "\t\t\t\t\treturn result;" + NL + "\t\t\t\t}"; + protected final String TEXT_99 = NL + "\t\t\t\treturn "; + protected final String TEXT_100 = ".INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t\tprotected "; + protected final String TEXT_101 = " getConnectionCompleteCommand("; + protected final String TEXT_102 = " request) {"; + protected final String TEXT_103 = NL + "\t\t\t\tif (request.getStartCommand() == null || !request.getStartCommand().canExecute()) {" + NL + "\t\t\t\t\treturn "; + protected final String TEXT_104 = ".INSTANCE;" + NL + "\t\t\t\t}" + NL + "\t\t\t\tif (request instanceof "; + protected final String TEXT_105 = ".CreateConnectionRequestEx) {" + NL + "\t\t\t\t\t"; + protected final String TEXT_106 = ".CreateConnectionRequestEx requestEx = ("; + protected final String TEXT_107 = ".CreateConnectionRequestEx) request;" + NL + "\t\t\t\t\tint[] visualIds = requestEx.getVisualIds();" + NL + "\t\t\t\t\t"; + protected final String TEXT_108 = " result = new "; + protected final String TEXT_109 = "();" + NL + "\t\t\t\t\tfor (int i = 0; i < visualIds.length; i++) {" + NL + "\t\t\t\t\t\tint nextVisualId = visualIds[i];" + NL + "\t\t\t\t\t\tswitch (nextVisualId) {"; + protected final String TEXT_110 = NL + "\t\t\t\t\t\tcase "; + protected final String TEXT_111 = ":" + NL + "\t\t\t\t\t\t\tresult.add(new Create"; + protected final String TEXT_112 = "Command(requestEx));" + NL + "\t\t\t\t\t\t\tbreak;"; + protected final String TEXT_113 = NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\tif (result.getChildren().length != 1) {" + NL + "\t\t\t\t\t\t//Cannot create several connections at once." + NL + "\t\t\t\t\t\treturn "; + protected final String TEXT_114 = ".INSTANCE;" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\treturn result.unwrap();" + NL + "\t\t\t\t}"; + protected final String TEXT_115 = NL + "\t\t\t\treturn "; + protected final String TEXT_116 = ".INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t});" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_117 = " createFigure() {" + NL + "\t\t"; + protected final String TEXT_118 = " invisibleRectangle = new "; + protected final String TEXT_119 = "();" + NL + "\t\tinvisibleRectangle.setLayoutManager(new "; + protected final String TEXT_120 = "());" + NL + "\t\t"; + protected final String TEXT_121 = " shape = createNodeShape();" + NL + "\t\tinvisibleRectangle.add(shape);" + NL + "\t\tcontentPane = setupContentPane(shape);" + NL + "\t\t" + NL + "\t\t"; + protected final String TEXT_122 = " decorationShape = createDecorationPane();" + NL + "\t\tif (decorationShape != null) {" + NL + "\t\t\tinvisibleRectangle.add(decorationShape);" + NL + "\t\t}" + NL + "" + NL + "\t\treturn invisibleRectangle;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_123 = " createNodeShape() {"; + protected final String TEXT_124 = NL + "\t\tprimaryShape = new "; + protected final String TEXT_125 = "()"; + protected final String TEXT_126 = " {" + NL + "\t\t\tprotected boolean useLocalCoordinates() {" + NL + "\t\t\t\treturn true;" + NL + "\t\t\t}" + NL + "\t\t}"; + protected final String TEXT_127 = ";"; + protected final String TEXT_128 = NL + "\t\tprimaryShape = "; + protected final String TEXT_129 = ";"; + protected final String TEXT_130 = NL + "\t\t"; + protected final String TEXT_131 = " figure = new "; + protected final String TEXT_132 = "();" + NL + " \t\tfigure.setUseLocalCoordinates("; + protected final String TEXT_133 = ");" + NL + " \t\tprimaryShape = figure;"; + protected final String TEXT_134 = NL + "\t\treturn primaryShape;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_135 = " createDecorationPane() {" + NL + "\t\t"; + protected final String TEXT_136 = " view = ("; + protected final String TEXT_137 = ") getModel();" + NL + "\t\t"; + protected final String TEXT_138 = " annotation = view.getEAnnotation(\"Shortcut\"); //$NON-NLS-1$" + NL + "\t\tif (annotation == null) {" + NL + "\t\t\treturn null;" + NL + "\t\t}" + NL + "\t\t" + NL + "\t\t"; + protected final String TEXT_139 = " decorationPane = new "; + protected final String TEXT_140 = "();" + NL + "\t\tdecorationPane.setLayoutManager(new "; + protected final String TEXT_141 = "());" + NL + "" + NL + "\t\t"; + protected final String TEXT_142 = " imageFigure = new "; + protected final String TEXT_143 = "("; + protected final String TEXT_144 = ".getInstance().getBundledImage(\"icons/shortcut.gif\"), "; + protected final String TEXT_145 = ".EAST);" + NL + "\t\tdecorationPane.add(imageFigure, "; + protected final String TEXT_146 = ".BOTTOM);" + NL + " \t\treturn decorationPane;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * Default implementation treats passed figure as content pane." + NL + "\t * Respects layout one may have set for generated figure." + NL + "\t * @param nodeShape instance of generated figure class" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_147 = " setupContentPane("; + protected final String TEXT_148 = " nodeShape) {" + NL + "\t\tif (nodeShape.getLayoutManager() == null) {"; + protected final String TEXT_149 = NL + "\t\t\t"; + protected final String TEXT_150 = " layout = new "; + protected final String TEXT_151 = "();" + NL + "\t\t\tlayout.setSpacing(5);" + NL + "\t\t\tnodeShape.setLayoutManager(layout);"; + protected final String TEXT_152 = NL + "\t\tnodeShape.setLayoutManager(new "; + protected final String TEXT_153 = "() {" + NL + "" + NL + "\t\t\tpublic Object getConstraint("; + protected final String TEXT_154 = " figure) {" + NL + "\t\t\t\tObject result = constraints.get(figure);" + NL + "\t\t\t\tif (result == null) {" + NL + "\t\t\t\t\tresult = new "; + protected final String TEXT_155 = "(0, 0, -1, -1);" + NL + "\t\t\t\t}" + NL + "\t\t\t\treturn result;" + NL + "\t\t\t}" + NL + "\t\t});"; + protected final String TEXT_156 = NL + "\t\t}" + NL + "\t\treturn nodeShape; // use nodeShape itself as contentPane" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_157 = " getContentPane() {" + NL + "\t\tif (contentPane == null) {" + NL + "\t\t\treturn super.getContentPane();" + NL + "\t\t}" + NL + "\t\treturn contentPane;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_158 = " getDiagramNode() {" + NL + "\t\treturn ("; + protected final String TEXT_159 = ") getModel();" + NL + "\t}" + NL; + protected final String TEXT_160 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected boolean addFixedChild("; + protected final String TEXT_161 = " childEditPart) {"; + protected final String TEXT_162 = NL + "\t\tif (childEditPart instanceof "; + protected final String TEXT_163 = ") {"; + protected final String TEXT_164 = NL + "\t\t\t(("; + protected final String TEXT_165 = ") childEditPart).setLabel((("; + protected final String TEXT_166 = ") primaryShape).getFigure"; + protected final String TEXT_167 = "());"; + protected final String TEXT_168 = NL + "\t\t\t(("; + protected final String TEXT_169 = ") childEditPart).setLabel(new "; + protected final String TEXT_170 = "());"; + protected final String TEXT_171 = NL + "\t\t\treturn true;" + NL + "\t\t}"; + protected final String TEXT_172 = NL + "\t\treturn false;" + NL + "\t}" + NL; + protected final String TEXT_173 = NL; + protected final String TEXT_174 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static int getVisualID("; + protected final String TEXT_175 = " containerView) {" + NL + "\t\t"; + protected final String TEXT_176 = " annotation = containerView.getEAnnotation(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "\t\tif (annotation == null) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\tString visualID = (String) annotation.getDetails().get(\"visualID\"); //$NON-NLS-1$" + NL + "\t\tif (visualID == null) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\ttry {" + NL + "\t\t\treturn Integer.parseInt(visualID);" + NL + "\t\t} catch (NumberFormatException e) {" + NL + "\t\t\t"; + protected final String TEXT_177 = ".getInstance().logError(\"Unable to parse \\\"visualID\\\" annotation: \" + visualID, e);" + NL + "\t\t}" + NL + "\t\treturn -1;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * Returns the label which should be direct-edited by default." + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_178 = " getPrimaryLabelEditPart() {" + NL + "\t\tfor("; + protected final String TEXT_179 = " it = getDiagramNode().getChildren().iterator(); it.hasNext(); ) {" + NL + "\t\t\t"; + protected final String TEXT_180 = " nextChild = ("; + protected final String TEXT_181 = ")it.next();" + NL + "\t\t\tif (getVisualID(nextChild) == "; + protected final String TEXT_182 = ") {" + NL + "\t\t\t\treturn ("; + protected final String TEXT_183 = ") getViewer().getEditPartRegistry().get(nextChild);" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void performRequest("; + protected final String TEXT_184 = " req) {" + NL + "\t\tif ("; + protected final String TEXT_185 = ".REQ_DIRECT_EDIT == req.getType()) {" + NL + "\t\t\t"; + protected final String TEXT_186 = " primaryLabel = getPrimaryLabelEditPart();" + NL + "\t\t\tif (primaryLabel != null) {" + NL + "\t\t\t\tprimaryLabel.performRequest(req);" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t}" + NL; + protected final String TEXT_187 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void addChildVisual("; + protected final String TEXT_188 = " childEditPart, int index) {" + NL + "\t\tif (isExternalLabel(childEditPart)) {" + NL + "\t\t\t"; + protected final String TEXT_189 = " labelFigure = (("; + protected final String TEXT_190 = ") childEditPart).getFigure();" + NL + "\t\t\tgetExternalLabelsContainer().add(labelFigure);" + NL + "\t\t} else {"; + protected final String TEXT_191 = NL + "\t\t\tif (!addFixedChild(childEditPart)) {" + NL + "\t\t\t\tsuper.addChildVisual(childEditPart, -1);" + NL + "\t\t\t}"; + protected final String TEXT_192 = NL + "\t\t\tsuper.addChildVisual(childEditPart, -1);"; + protected final String TEXT_193 = NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void removeChildVisual("; + protected final String TEXT_194 = " childEditPart) {" + NL + "\t\tif (isExternalLabel(childEditPart)) {" + NL + "\t\t\t"; + protected final String TEXT_195 = " labelFigure = (("; + protected final String TEXT_196 = ") childEditPart).getFigure();" + NL + "\t\t\tgetExternalLabelsContainer().remove(labelFigure);" + NL + "\t\t} else {" + NL + "\t\t\tsuper.removeChildVisual(childEditPart);" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected boolean isExternalLabel("; + protected final String TEXT_197 = " childEditPart) {"; + protected final String TEXT_198 = NL + "\t\tif (childEditPart instanceof "; + protected final String TEXT_199 = ") {" + NL + "\t\t\treturn true;" + NL + "\t\t}"; + protected final String TEXT_200 = NL + "\t\treturn false;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_201 = " getExternalLabelsContainer() {" + NL + "\t\t"; + protected final String TEXT_202 = " root = ("; + protected final String TEXT_203 = ") getRoot();" + NL + "\t\treturn root.getLayer("; + protected final String TEXT_204 = ".EXTERNAL_NODE_LABELS_LAYER);" + NL + "\t}" + NL; + protected final String TEXT_205 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void addChildVisual("; + protected final String TEXT_206 = " childEditPart, int index) {" + NL + "\t\tif (!addFixedChild(childEditPart)) {" + NL + "\t\t\tsuper.addChildVisual(childEditPart, -1);" + NL + "\t\t}" + NL + "\t}"; + protected final String TEXT_207 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshVisuals() {" + NL + "\t\tsuper.refreshVisuals();" + NL + "\t\trefreshBounds();" + NL + "\t\trefreshBackgroundColor();" + NL + "\t\trefreshForegroundColor();" + NL + "\t\trefreshFont();" + NL + "\t\trefreshVisibility();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshVisibility() {" + NL + "\t\tboolean isVisible = getDiagramNode().isVisible();" + NL + "\t\tboolean wasVisible = getFigure().isVisible();" + NL + "\t\tif (isVisible == wasVisible) {" + NL + "\t\t\treturn;" + NL + "\t\t}" + NL + "\t\tif (!isVisible && (getSelected() != SELECTED_NONE)) {" + NL + "\t\t\tgetViewer().deselect(this);" + NL + "\t\t}" + NL + "" + NL + "\t\tgetFigure().setVisible(isVisible);" + NL + "\t\tgetFigure().revalidate();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshBounds() {" + NL + "\t\t"; + protected final String TEXT_208 = " node = getDiagramNode();" + NL + "\t\tassert node.getLayoutConstraint() instanceof "; + protected final String TEXT_209 = ";" + NL + "\t\t"; + protected final String TEXT_210 = " bounds = ("; + protected final String TEXT_211 = ") node.getLayoutConstraint();" + NL + "\t\t(("; + protected final String TEXT_212 = ") getParent()).setLayoutConstraint(this, getFigure(), " + NL + "\t\t\tnew "; + protected final String TEXT_213 = "(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight()));" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_214 = " getModelChildren() {" + NL + "\t\treturn getDiagramNode().getVisibleChildren();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_215 = " getModelSourceConnections() {" + NL + "\t\treturn getDiagramNode().getSourceEdges();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected "; + protected final String TEXT_216 = " getModelTargetConnections() {" + NL + "\t\treturn getDiagramNode().getTargetEdges();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_217 = " getSourceConnectionAnchor("; + protected final String TEXT_218 = " connection) {" + NL + "\t\treturn new "; + protected final String TEXT_219 = "(getFigure());" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_220 = " getSourceConnectionAnchor("; + protected final String TEXT_221 = " request) {" + NL + "\t\treturn new "; + protected final String TEXT_222 = "(getFigure());" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_223 = " getTargetConnectionAnchor("; + protected final String TEXT_224 = " connection) {" + NL + "\t\treturn new "; + protected final String TEXT_225 = "(getFigure());" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic "; + protected final String TEXT_226 = " getTargetConnectionAnchor("; + protected final String TEXT_227 = " request) {" + NL + "\t\treturn new "; + protected final String TEXT_228 = "(getFigure());" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Object getAdapter(Class key) {"; + protected final String TEXT_229 = NL + "\t\treturn super.getAdapter(key);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void activate() {" + NL + "\t\tsuper.activate();" + NL + "\t\tgetDiagramNode().getElement().eAdapters().add(domainModelRefresher);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void deactivate() {" + NL + "\t\tgetDiagramNode().getElement().eAdapters().remove(domainModelRefresher);" + NL + "\t\tsuper.deactivate();" + NL + "\t}" + NL; + protected final String TEXT_230 = NL; + protected final String TEXT_231 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate DomainModelRefresher domainModelRefresher = new DomainModelRefresher();" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate class DomainModelRefresher extends "; + protected final String TEXT_232 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void notifyChanged("; + protected final String TEXT_233 = " msg) {" + NL + "\t\t\tsuper.notifyChanged(msg);" + NL + "\t\t\tif (msg.isTouch()) {" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t\tRefresher refresher = getRefresher(("; + protected final String TEXT_234 = ") msg.getFeature(), msg);" + NL + "\t\t\tif (refresher != null) {" + NL + "\t\t\t\trefresher.refresh();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t}" + NL; + protected final String TEXT_235 = NL; + protected final String TEXT_236 = "\tpublic void addRefresher("; + protected final String TEXT_237 = " feature, Refresher refresher) {" + NL + "\t\tCompositeRefresher compositeRefresher = getCompositeRefresher(feature);" + NL + "\t\tcompositeRefresher.addRefresher(refresher);" + NL + "\t}" + NL + "" + NL + "\tpublic void removeRefresher("; + protected final String TEXT_238 = " feature, Refresher refresher) {" + NL + "\t\tCompositeRefresher compositeRefresher = getCompositeRefresher(feature);" + NL + "\t\tcompositeRefresher.removeRefresher(refresher);" + NL + "\t}" + NL + "" + NL + "\tprivate CompositeRefresher getCompositeRefresher("; + protected final String TEXT_239 = " feature) {" + NL + "\t\tif (structuralFeatures2Refresher == null) {" + NL + "\t\t\tcreateRefreshers();" + NL + "\t\t}" + NL + "\t\tRefresher refresher = (Refresher) structuralFeatures2Refresher.get(feature);" + NL + "\t\tif (refresher instanceof CompositeRefresher) {" + NL + "\t\t\treturn (CompositeRefresher) refresher;" + NL + "\t\t}" + NL + "\t\tCompositeRefresher result = new CompositeRefresher();" + NL + "\t\tif (refresher != null) {" + NL + "\t\t\tresult.addRefresher(refresher);" + NL + "\t\t}" + NL + "\t\tstructuralFeatures2Refresher.put(feature, result);" + NL + "\t\treturn result;" + NL + "\t}" + NL; + protected final String TEXT_240 = NL; + protected final String TEXT_241 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFont() {" + NL + "\t\t"; + protected final String TEXT_242 = " style =" + NL + "\t\t\t("; + protected final String TEXT_243 = ") "; + protected final String TEXT_244 = ".getStyle(" + NL + "\t\t\t\t"; + protected final String TEXT_245 = ".eINSTANCE.getFontStyle());" + NL + "\t\t"; + protected final String TEXT_246 = " toDispose = createdFont;" + NL + "\t\tif (style != null) {" + NL + "\t\t\tString fontName = style.getFontName();" + NL + "\t\t\tint fontHeight = style.getFontHeight();" + NL + "\t\t\tint fontStyle = "; + protected final String TEXT_247 = ".NORMAL;" + NL + "\t\t\tif (style.isBold()) {" + NL + "\t\t\t\tfontStyle |= "; + protected final String TEXT_248 = ".BOLD;" + NL + "\t\t\t}" + NL + "\t\t\tif (style.isItalic()) {" + NL + "\t\t\t\tfontStyle |= "; + protected final String TEXT_249 = ".ITALIC;" + NL + "\t\t\t}" + NL + "\t\t\t"; + protected final String TEXT_250 = " currentFont = getFigure().getFont();" + NL + "\t\t\tif (currentFont != null) {" + NL + "\t\t\t\t"; + protected final String TEXT_251 = " currentFontData = currentFont.getFontData()[0];" + NL + "\t\t\t\tif (currentFontData.getName().equals(fontName) && currentFontData.getHeight() == fontHeight && currentFontData.getStyle() == fontStyle) {" + NL + "\t\t\t\t\treturn;" + NL + "\t\t\t\t}" + NL + "\t\t\t}" + NL + "\t\t\tcreatedFont = new "; + protected final String TEXT_252 = "(null, fontName, fontHeight, fontStyle);" + NL + "\t\t\tgetFigure().setFont(createdFont);" + NL + "\t\t} else {" + NL + "\t\t\t//revert to the default font" + NL + "\t\t\tgetFigure().setFont(getViewer().getControl().getFont());" + NL + "\t\t\tcreatedFont = null;" + NL + "\t\t}" + NL + "\t\tif (toDispose != null) {" + NL + "\t\t\ttoDispose.dispose();" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * The font (created by {@link #refreshFont()}) currently assigned to the label (unless the default font is assigned)." + NL + "\t * Whenever another non-default font is assigned to it, it is safe to dispose the previous one." + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_253 = " createdFont;" + NL; + protected final String TEXT_254 = NL; + protected final String TEXT_255 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshForegroundColor() {" + NL + "\t\t"; + protected final String TEXT_256 = " style = ("; + protected final String TEXT_257 = ") "; + protected final String TEXT_258 = ".getStyle("; + protected final String TEXT_259 = ".eINSTANCE.getLineStyle());" + NL + "\t\t"; + protected final String TEXT_260 = " toDispose = createdForegroundColor;" + NL + "\t\tif (style != null) {" + NL + "\t\t\tint foregroundColor = style.getLineColor();" + NL + "\t\t\tint red = foregroundColor & 0x000000FF;" + NL + "\t\t\tint green = (foregroundColor & 0x0000FF00) >> 8;" + NL + "\t\t\tint blue = (foregroundColor & 0x00FF0000) >> 16;" + NL + "\t\t\t"; + protected final String TEXT_261 = " currentColor = getFigure().getForegroundColor();" + NL + "\t\t\tif (currentColor != null && currentColor.getRed() == red && currentColor.getGreen() == green && currentColor.getBlue() == blue) {" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t\tcreatedForegroundColor = new "; + protected final String TEXT_262 = "(null, red, green, blue);" + NL + "\t\t\tgetFigure().setForegroundColor(createdForegroundColor);" + NL + "\t\t} else {" + NL + "\t\t\tgetFigure().setForegroundColor(getViewer().getControl().getForeground());" + NL + "\t\t\tcreatedForegroundColor = null;" + NL + "\t\t}" + NL + "\t\tif (toDispose != null) {" + NL + "\t\t\ttoDispose.dispose();" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * The color (created by {@link #refreshForegroundColor()}) currently assigned to the figure." + NL + "\t * Whenever another color is assigned to it, it is safe to dispose the previous one." + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_263 = " createdForegroundColor;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshBackgroundColor() {" + NL + "\t\t"; + protected final String TEXT_264 = " style = ("; + protected final String TEXT_265 = ") "; + protected final String TEXT_266 = ".getStyle("; + protected final String TEXT_267 = ".eINSTANCE.getFillStyle());" + NL + "\t\t"; + protected final String TEXT_268 = " toDispose = createdBackgroundColor;" + NL + "\t\tif (style != null) {" + NL + "\t\t\tint backgroundColor = style.getFillColor();" + NL + "\t\t\tint red = backgroundColor & 0x000000FF;" + NL + "\t\t\tint green = (backgroundColor & 0x0000FF00) >> 8;" + NL + "\t\t\tint blue = (backgroundColor & 0x00FF0000) >> 16;" + NL + "\t\t\t"; + protected final String TEXT_269 = " currentColor = getFigure().getBackgroundColor();" + NL + "\t\t\tif (currentColor != null && currentColor.getRed() == red && currentColor.getGreen() == green && currentColor.getBlue() == blue) {" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t\tcreatedBackgroundColor = new "; + protected final String TEXT_270 = "(null, red, green, blue);" + NL + "\t\t\tgetFigure().setBackgroundColor(createdBackgroundColor);" + NL + "\t\t} else {" + NL + "\t\t\tgetFigure().setBackgroundColor(getViewer().getControl().getBackground());" + NL + "\t\t}" + NL + "\t\tif (toDispose != null) {" + NL + "\t\t\ttoDispose.dispose();" + NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * The color (created by {@link #refreshBackgroundColor()}) currently assigned to the figure." + NL + "\t * Whenever another color is assigned to it, it is safe to dispose the previous one." + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_271 = " createdBackgroundColor;" + NL; + protected final String TEXT_272 = NL; + protected final String TEXT_273 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate "; + protected final String TEXT_274 = " structuralFeatures2Refresher;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Refresher getRefresher("; + protected final String TEXT_275 = " feature, "; + protected final String TEXT_276 = " msg) {" + NL + "\t\tif (structuralFeatures2Refresher == null) {" + NL + "\t\t\tcreateRefreshers();" + NL + "\t\t}" + NL + "\t\treturn (Refresher) structuralFeatures2Refresher.get(feature);" + NL + "\t}" + NL + "" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate void createRefreshers() {" + NL + "\t\tstructuralFeatures2Refresher = new "; + protected final String TEXT_277 = "();"; + protected final String TEXT_278 = NL; + protected final String TEXT_279 = "\t\tRefresher childrenRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshChildren();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_280 = ".eINSTANCE.getView_PersistedChildren(), childrenRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_281 = ".eINSTANCE.getView_TransientChildren(), childrenRefresher);"; + protected final String TEXT_282 = NL; + protected final String TEXT_283 = "\t\tRefresher boundsRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshBounds();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_284 = ".eINSTANCE.getNode_LayoutConstraint(), boundsRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_285 = ".eINSTANCE.getSize_Width(), boundsRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_286 = ".eINSTANCE.getSize_Height(), boundsRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_287 = ".eINSTANCE.getLocation_X(), boundsRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_288 = ".eINSTANCE.getLocation_Y(), boundsRefresher);"; + protected final String TEXT_289 = NL; + protected final String TEXT_290 = "\t\tRefresher visibilityRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshVisibility();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_291 = ".eINSTANCE.getView_Visible(), visibilityRefresher);"; + protected final String TEXT_292 = NL; + protected final String TEXT_293 = "\t\tRefresher sourceEdgesRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshSourceConnections();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_294 = ".eINSTANCE.getView_SourceEdges(), sourceEdgesRefresher);"; + protected final String TEXT_295 = NL; + protected final String TEXT_296 = "\t\tRefresher targetEdgesRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshTargetConnections();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_297 = ".eINSTANCE.getView_TargetEdges(), targetEdgesRefresher);"; + protected final String TEXT_298 = NL; + protected final String TEXT_299 = "\t\tRefresher fontRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshFont();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_300 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_301 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_302 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_303 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);" + NL + "\t\t"; + protected final String TEXT_304 = NL; + protected final String TEXT_305 = "\t\tRefresher backgroundColorRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshBackgroundColor();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_306 = ".eINSTANCE.getFillStyle_FillColor(), backgroundColorRefresher);" + NL + "\t\tRefresher foregroundColorRefresher = new Refresher() {" + NL + "\t\t\tpublic void refresh() {" + NL + "\t\t\t\trefreshForegroundColor();" + NL + "\t\t\t}" + NL + "\t\t};" + NL + "\t\tstructuralFeatures2Refresher.put("; + protected final String TEXT_307 = ".eINSTANCE.getLineStyle_LineColor(), foregroundColorRefresher);" + NL + "\t}" + NL; + protected final String TEXT_308 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static class Create"; + protected final String TEXT_309 = "Command extends "; + protected final String TEXT_310 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final "; + protected final String TEXT_311 = " source;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final "; + protected final String TEXT_312 = " target;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final "; + protected final String TEXT_313 = " createdEdge;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final org.eclipse.emf.common.command.Command domainModelAddCommand;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic Create"; + protected final String TEXT_314 = "Command("; + protected final String TEXT_315 = ".CreateConnectionRequestEx requestEx) {" + NL + "\t\t\tif (requestEx.getSourceEditPart().getModel() instanceof "; + protected final String TEXT_316 = ") {" + NL + "\t\t\t\tsource = ("; + protected final String TEXT_317 = ")requestEx.getSourceEditPart().getModel();" + NL + "\t\t\t} else {" + NL + "\t\t\t\tsource = null;" + NL + "\t\t\t}" + NL + "\t\t\tif (requestEx.getTargetEditPart().getModel() instanceof "; + protected final String TEXT_318 = ") {" + NL + "\t\t\t\ttarget = ("; + protected final String TEXT_319 = ")requestEx.getTargetEditPart().getModel();" + NL + "\t\t\t} else {" + NL + "\t\t\t\ttarget = null;" + NL + "\t\t\t}" + NL + "\t\t\tcreatedEdge = "; + protected final String TEXT_320 = ".eINSTANCE.createEdge();"; + protected final String TEXT_321 = NL + "\t\t\t"; + protected final String TEXT_322 = " createdDomainElement = "; + protected final String TEXT_323 = ".eINSTANCE.create"; + protected final String TEXT_324 = "();" + NL + "\t\t\tcreatedEdge.setElement(createdDomainElement);" + NL + "\t\t\t"; + protected final String TEXT_325 = NL + "\t\t\t"; + protected final String TEXT_326 = "."; + protected final String TEXT_327 = ".initializeElement(createdDomainElement);"; + protected final String TEXT_328 = NL + "\t\t\tcreatedEdge.setElement(target.getElement());\t\t//XXX: is this correct?"; + protected final String TEXT_329 = NL + "\t\t\t"; + protected final String TEXT_330 = ".decorateView(createdEdge);" + NL + "\t\t\t"; + protected final String TEXT_331 = " domainModelEditDomain = "; + protected final String TEXT_332 = ".getEditingDomainFor(source.getDiagram().getElement());"; + protected final String TEXT_333 = NL + "\t\t\torg.eclipse.emf.common.command.CompoundCommand addLinkEndsCommand = new org.eclipse.emf.common.command.CompoundCommand();"; + protected final String TEXT_334 = NL + "\t\t\t"; + protected final String TEXT_335 = " container = getRelationshipContainer(source.getElement(), "; + protected final String TEXT_336 = ".eINSTANCE.get"; + protected final String TEXT_337 = "());" + NL + "\t\t\tif (container == null) {" + NL + "\t\t\t\tdomainModelAddCommand = null;" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t\taddLinkEndsCommand.append("; + protected final String TEXT_338 = ".create(domainModelEditDomain, " + NL + "\t\t\t\tcontainer, "; + protected final String TEXT_339 = ".eINSTANCE.get"; + protected final String TEXT_340 = "(), createdDomainElement));"; + protected final String TEXT_341 = NL + "\t\t\taddLinkEndsCommand.append("; + protected final String TEXT_342 = ".create(domainModelEditDomain," + NL + "\t\t\t\tcontainer, "; + protected final String TEXT_343 = ".eINSTANCE.get"; + protected final String TEXT_344 = "(), createdDomainElement));"; + protected final String TEXT_345 = NL + "\t\t\taddLinkEndsCommand.append("; + protected final String TEXT_346 = ".create(domainModelEditDomain, " + NL + "\t\t\t\tcreatedDomainElement, "; + protected final String TEXT_347 = ".eINSTANCE.get"; + protected final String TEXT_348 = "(), source.getElement()));"; + protected final String TEXT_349 = NL + "\t\t\taddLinkEndsCommand.append("; + protected final String TEXT_350 = ".create(domainModelEditDomain, " + NL + "\t\t\t\tcreatedDomainElement, "; + protected final String TEXT_351 = ".eINSTANCE.get"; + protected final String TEXT_352 = "(), target.getElement()));"; + protected final String TEXT_353 = NL + "\t\tdomainModelAddCommand = addLinkEndsCommand;"; + protected final String TEXT_354 = NL + "\t\t\tdomainModelAddCommand = "; + protected final String TEXT_355 = ".create(domainModelEditDomain, source.getElement(), " + NL + "\t\t\t\t"; + protected final String TEXT_356 = ".eINSTANCE.get"; + protected final String TEXT_357 = "(), target.getElement());"; + protected final String TEXT_358 = NL + "\t\t}" + NL; + protected final String TEXT_359 = NL + "\t\t/**" + NL + "\t\t * Finds container element for the new relationship of the specified type." + NL + "\t\t * Default implementation goes up by containment hierarchy starting from" + NL + "\t\t * the specified element and returns the first element that is instance of" + NL + "\t\t * the specified container class." + NL + "\t\t * " + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprotected "; + protected final String TEXT_360 = " getRelationshipContainer("; + protected final String TEXT_361 = " element, "; + protected final String TEXT_362 = " containerClass) {" + NL + "\t\t\tfor (; element != null; element = element.eContainer()) {" + NL + "\t\t\t\tif (containerClass.isSuperTypeOf(element.eClass())) {" + NL + "\t\t\t\t\treturn element;" + NL + "\t\t\t\t}" + NL + "\t\t\t}" + NL + "\t\t\treturn null;" + NL + "\t\t}"; + protected final String TEXT_363 = NL + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic boolean canExecute() {" + NL + "\t\t\treturn source != null && target != null && createdEdge != null && domainModelAddCommand != null && domainModelAddCommand.canExecute();" + NL + "\t\t}" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic boolean canUndo() {" + NL + "\t\t\treturn source != null && target != null && createdEdge != null && domainModelAddCommand != null && domainModelAddCommand.canUndo();" + NL + "\t\t}" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void execute() {" + NL + "\t\t\tdomainModelAddCommand.execute();" + NL + "\t\t\tsource.getDiagram().insertEdge(createdEdge);" + NL + "\t\t\tcreatedEdge.setSource(source);" + NL + "\t\t\tcreatedEdge.setTarget(target);" + NL + "\t\t}" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void undo() {" + NL + "\t\t\tdomainModelAddCommand.undo();" + NL + "\t\t\tsource.getDiagram().removeEdge(createdEdge);" + NL + "\t\t\tcreatedEdge.setSource(null);" + NL + "\t\t\tcreatedEdge.setTarget(null);" + NL + "\t\t}" + NL + "\t}"; + protected final String TEXT_364 = NL; + protected final String TEXT_365 = NL; + protected final String TEXT_366 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static class MapModeWorkaround {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic int DPtoLP(int dp) {" + NL + "\t\t\treturn dp;" + NL + "\t\t}" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic static MapModeWorkaround INSTANCE = new MapModeWorkaround();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate MapModeWorkaround getMapMode() {" + NL + "\t\treturn MapModeWorkaround.INSTANCE;" + NL + "\t}"; + protected final String TEXT_367 = NL + "}"; + + public String generate(Object argument) + { + final StringBuffer stringBuffer = new StringBuffer(); + +GenNode genNode = (GenNode) ((Object[]) argument)[0]; +GenDiagram genDiagram = genNode.getDiagram(); +Palette palette = genDiagram.getPalette(); +boolean useFlowLayout = !genNode.isListLayout(); +final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1]; + + stringBuffer.append(TEXT_1); + +String copyrightText = genDiagram.getEditorGen().getCopyrightText(); +if (copyrightText != null && copyrightText.trim().length() > 0) { + + stringBuffer.append(TEXT_2); + stringBuffer.append(copyrightText.replaceAll("\n", "\n * ")); + stringBuffer.append(TEXT_3); + } + stringBuffer.append(TEXT_4); + importManager.emitPackageStatement(stringBuffer); + +/*XXX: temporary hack to generate compilable code in tests (where class NodeEditPart extends NodeEditPart is generated otherwise)*/ +importManager.registerInnerClass(genNode.getEditPartClassName()); +importManager.markImportLocation(stringBuffer); + + stringBuffer.append(TEXT_5); + stringBuffer.append(genNode.getEditPartClassName()); + stringBuffer.append(TEXT_6); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")); + stringBuffer.append(TEXT_7); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.NodeEditPart")); + stringBuffer.append(TEXT_8); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_9); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_10); + stringBuffer.append(genNode.getEditPartClassName()); + stringBuffer.append(TEXT_11); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_12); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_13); + stringBuffer.append(TEXT_14); + stringBuffer.append(TEXT_15); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_16); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ComponentEditPolicy")); + stringBuffer.append(TEXT_17); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_18); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.GroupRequest")); + stringBuffer.append(TEXT_19); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_20); + +{ +TypeModelFacet facet = genNode.getModelFacet(); +GenFeature childFeature = facet.getChildMetaFeature(); +GenFeature containmentFeature = facet.getContainmentMetaFeature(); +if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) { + + stringBuffer.append(TEXT_21); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_22); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")); + stringBuffer.append(TEXT_23); + + if (containmentFeature.getEcoreFeature().isMany()) { + + stringBuffer.append(TEXT_24); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_25); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_26); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_27); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_28); + + } else { + + stringBuffer.append(TEXT_29); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_30); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_31); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_32); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_33); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_34); + + } + + + if (childFeature.getEcoreFeature().isMany()) { + + stringBuffer.append(TEXT_35); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_36); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_37); + stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_38); + stringBuffer.append(childFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_39); + + } else { + + stringBuffer.append(TEXT_40); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_41); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_42); + stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_43); + stringBuffer.append(childFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_44); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_45); + + } + + stringBuffer.append(TEXT_46); + +} else { + if (containmentFeature.getEcoreFeature().isMany()) { + + stringBuffer.append(TEXT_47); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_48); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_49); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_50); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_51); + + } else { + + stringBuffer.append(TEXT_52); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_53); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_54); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_55); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_56); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_57); + + } +} + + stringBuffer.append(TEXT_58); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")); + stringBuffer.append(TEXT_59); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_60); + +} /*restrict local vars used in component edit policy*/ + + stringBuffer.append(TEXT_61); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_62); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ConstrainedLayoutEditPolicy")); + stringBuffer.append(TEXT_63); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_64); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.CreateRequest")); + stringBuffer.append(TEXT_65); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_66); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")); + stringBuffer.append(TEXT_67); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point")); + stringBuffer.append(TEXT_68); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_69); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_70); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_71); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_72); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_73); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ResizableEditPolicy")); + stringBuffer.append(TEXT_74); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_75); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request")); + stringBuffer.append(TEXT_76); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants")); + stringBuffer.append(TEXT_77); + stringBuffer.append(genNode.getEditPartClassName()); + stringBuffer.append(TEXT_78); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy")); + stringBuffer.append(TEXT_79); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy")); + stringBuffer.append(TEXT_80); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_81); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.ReconnectRequest")); + stringBuffer.append(TEXT_82); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_83); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_84); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.ReconnectRequest")); + stringBuffer.append(TEXT_85); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_86); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_87); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest")); + stringBuffer.append(TEXT_88); + if (palette != null) { + stringBuffer.append(TEXT_89); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_90); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_91); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_92); + +for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) { + GenLink genLink = (GenLink)it.next(); + if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) { + continue; + } + GenClass outgoingClass; + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + outgoingClass = modelFacet.getSourceMetaFeature() == null + ? modelFacet.getContainmentMetaFeature().getGenClass() + : modelFacet.getSourceMetaFeature().getTypeGenClass(); + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { + GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature(); + outgoingClass = metaFeature.getGenClass(); + } else { + continue; + } + if (!outgoingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) { + continue; + } + + stringBuffer.append(TEXT_93); + stringBuffer.append(genLink.getVisualID()); + stringBuffer.append(TEXT_94); + +} + + stringBuffer.append(TEXT_95); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_96); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_97); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_98); + }/*when there's palette*/ + stringBuffer.append(TEXT_99); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_100); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_101); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest")); + stringBuffer.append(TEXT_102); + if (palette != null) { + stringBuffer.append(TEXT_103); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_104); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_105); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_106); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_107); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.CompoundCommand")); + stringBuffer.append(TEXT_108); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.CompoundCommand")); + stringBuffer.append(TEXT_109); + +for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) { + GenLink genLink = (GenLink)it.next(); + if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) { + continue; + } + GenClass incomingClass; + String createCommandNameInfix; + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + incomingClass = modelFacet.getTargetMetaFeature().getTypeGenClass(); + createCommandNameInfix = modelFacet.getMetaClass().getName(); + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { + GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature(); + incomingClass = metaFeature.getTypeGenClass(); + createCommandNameInfix = metaFeature.getFeatureAccessorName(); + } else { + continue; + } + if (!incomingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) { + continue; + } + + stringBuffer.append(TEXT_110); + stringBuffer.append(genLink.getVisualID()); + stringBuffer.append(TEXT_111); + stringBuffer.append(createCommandNameInfix); + stringBuffer.append(genLink.getVisualID()); + stringBuffer.append(TEXT_112); + +} + + stringBuffer.append(TEXT_113); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_114); + }/*when there's palette*/ + stringBuffer.append(TEXT_115); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")); + stringBuffer.append(TEXT_116); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_117); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_118); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Figure")); + stringBuffer.append(TEXT_119); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.StackLayout")); + stringBuffer.append(TEXT_120); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_121); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_122); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_123); + +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"; + } + + stringBuffer.append(TEXT_124); + stringBuffer.append(importManager.getImportedName(figureQualifiedClassName)); + stringBuffer.append(TEXT_125); + if (useFlowLayout) { + stringBuffer.append(TEXT_126); + } /* use flow layout*/ + stringBuffer.append(TEXT_127); + } else if (viewmap instanceof SnippetViewmap) { + stringBuffer.append(TEXT_128); + stringBuffer.append(((SnippetViewmap) viewmap).getBody()); + stringBuffer.append(TEXT_129); + } else if (viewmap instanceof InnerClassViewmap) { + figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName(); + + stringBuffer.append(TEXT_130); + stringBuffer.append(figureQualifiedClassName); + stringBuffer.append(TEXT_131); + stringBuffer.append(figureQualifiedClassName); + stringBuffer.append(TEXT_132); + stringBuffer.append(useFlowLayout ? "true" : "false"); + stringBuffer.append(TEXT_133); + } + stringBuffer.append(TEXT_134); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_135); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_136); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_137); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_138); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Figure")); + stringBuffer.append(TEXT_139); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Figure")); + stringBuffer.append(TEXT_140); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.BorderLayout")); + stringBuffer.append(TEXT_141); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ImageFigure")); + stringBuffer.append(TEXT_142); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ImageFigure")); + stringBuffer.append(TEXT_143); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())); + stringBuffer.append(TEXT_144); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.PositionConstants")); + stringBuffer.append(TEXT_145); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.BorderLayout")); + stringBuffer.append(TEXT_146); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_147); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_148); + +if (!useFlowLayout) { + String layoutClassName = importManager.getImportedName("org.eclipse.draw2d.ToolbarLayout"); + + stringBuffer.append(TEXT_149); + stringBuffer.append(layoutClassName); + stringBuffer.append(TEXT_150); + stringBuffer.append(layoutClassName); + stringBuffer.append(TEXT_151); + } else { + stringBuffer.append(TEXT_152); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformLayout")); + stringBuffer.append(TEXT_153); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_154); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")); + stringBuffer.append(TEXT_155); + } + stringBuffer.append(TEXT_156); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_157); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_158); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_159); + + boolean hasFixedChildren = false; + List innerLabels = new ArrayList(genNode.getLabels().size()); + for (Iterator it = genNode.getLabels().iterator(); it.hasNext(); ) { + GenNodeLabel genLabel = (GenNodeLabel) it.next(); + if (!(genLabel instanceof GenExternalNodeLabel)) { + innerLabels.add(genLabel); + } + } + if (!innerLabels.isEmpty()) { + hasFixedChildren = true; + + stringBuffer.append(TEXT_160); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_161); + + for (Iterator it = innerLabels.iterator(); it.hasNext(); ) { + GenNodeLabel genLabel = (GenNodeLabel) it.next(); + String labelEditPart = importManager.getImportedName(genLabel.getEditPartQualifiedClassName()); + String labelFigureClassName = null; + boolean isAccessor; + if (genLabel.getViewmap() instanceof InnerClassViewmap) { + labelFigureClassName = ((InnerClassViewmap) genLabel.getViewmap()).getClassName(); + isAccessor = true; + } else if (genLabel.getViewmap() instanceof FigureViewmap) { + labelFigureClassName = ((FigureViewmap) genLabel.getViewmap()).getFigureQualifiedClassName(); + isAccessor = false; + } else { + // temp hack to make tests pass + labelFigureClassName = "org.eclipse.draw2d.Label"; + isAccessor = false; + } + + stringBuffer.append(TEXT_162); + stringBuffer.append(labelEditPart); + stringBuffer.append(TEXT_163); + if (isAccessor) { + stringBuffer.append(TEXT_164); + stringBuffer.append(labelEditPart); + stringBuffer.append(TEXT_165); + stringBuffer.append(figureQualifiedClassName); + stringBuffer.append(TEXT_166); + stringBuffer.append(labelFigureClassName); + stringBuffer.append(TEXT_167); + } else { + stringBuffer.append(TEXT_168); + stringBuffer.append(labelEditPart); + stringBuffer.append(TEXT_169); + stringBuffer.append(labelFigureClassName); + stringBuffer.append(TEXT_170); + } + stringBuffer.append(TEXT_171); + } + stringBuffer.append(TEXT_172); + stringBuffer.append(TEXT_173); + stringBuffer.append(TEXT_174); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_175); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")); + stringBuffer.append(TEXT_176); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())); + stringBuffer.append(TEXT_177); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_178); + stringBuffer.append(importManager.getImportedName("java.util.Iterator")); + stringBuffer.append(TEXT_179); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_180); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_181); + stringBuffer.append(((GenNodeLabel)innerLabels.get(0)).getVisualID()); + stringBuffer.append(TEXT_182); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_183); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request")); + stringBuffer.append(TEXT_184); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants")); + stringBuffer.append(TEXT_185); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_186); + + } + + +boolean hasExternalLabels = false; +for (Iterator labels = genNode.getLabels().iterator(); labels.hasNext();) { + GenNodeLabel label = (GenNodeLabel) labels.next(); + if (label instanceof GenExternalNodeLabel) { + hasExternalLabels = true; + break; + } +} +if (hasExternalLabels) { + + stringBuffer.append(TEXT_187); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_188); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_189); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")); + stringBuffer.append(TEXT_190); + if (hasFixedChildren) { + stringBuffer.append(TEXT_191); + } else { + stringBuffer.append(TEXT_192); + } + stringBuffer.append(TEXT_193); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_194); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_195); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")); + stringBuffer.append(TEXT_196); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_197); + + for (Iterator labels = genNode.getLabels().iterator(); labels.hasNext();) { + GenNodeLabel label = (GenNodeLabel) labels.next(); + if (label instanceof GenExternalNodeLabel) { + + stringBuffer.append(TEXT_198); + stringBuffer.append(importManager.getImportedName(label.getEditPartQualifiedClassName())); + stringBuffer.append(TEXT_199); + + } + } + + stringBuffer.append(TEXT_200); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure")); + stringBuffer.append(TEXT_201); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.ScalableFreeformRootEditPart")); + stringBuffer.append(TEXT_202); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.ScalableFreeformRootEditPart")); + stringBuffer.append(TEXT_203); + stringBuffer.append(importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName())); + stringBuffer.append(TEXT_204); + +} else { + if (hasFixedChildren) { + stringBuffer.append(TEXT_205); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart")); + stringBuffer.append(TEXT_206); + + } +} + + stringBuffer.append(TEXT_207); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")); + stringBuffer.append(TEXT_208); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")); + stringBuffer.append(TEXT_209); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")); + stringBuffer.append(TEXT_210); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")); + stringBuffer.append(TEXT_211); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")); + stringBuffer.append(TEXT_212); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")); + stringBuffer.append(TEXT_213); + stringBuffer.append(importManager.getImportedName("java.util.List")); + stringBuffer.append(TEXT_214); + stringBuffer.append(importManager.getImportedName("java.util.List")); + stringBuffer.append(TEXT_215); + stringBuffer.append(importManager.getImportedName("java.util.List")); + stringBuffer.append(TEXT_216); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")); + stringBuffer.append(TEXT_217); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.ConnectionEditPart")); + stringBuffer.append(TEXT_218); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")); + stringBuffer.append(TEXT_219); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")); + stringBuffer.append(TEXT_220); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request")); + stringBuffer.append(TEXT_221); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")); + stringBuffer.append(TEXT_222); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")); + stringBuffer.append(TEXT_223); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.ConnectionEditPart")); + stringBuffer.append(TEXT_224); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")); + stringBuffer.append(TEXT_225); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")); + stringBuffer.append(TEXT_226); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request")); + stringBuffer.append(TEXT_227); + stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")); + stringBuffer.append(TEXT_228); + /*@ include file="adapters/propertySource.javajetinc"*/ + stringBuffer.append(TEXT_229); + stringBuffer.append(TEXT_230); + stringBuffer.append(TEXT_231); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.impl.AdapterImpl")); + stringBuffer.append(TEXT_232); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification")); + stringBuffer.append(TEXT_233); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_234); + stringBuffer.append(TEXT_235); + stringBuffer.append(TEXT_236); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_237); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_238); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_239); + + final String primaryView = "getDiagramNode()"; + + stringBuffer.append(TEXT_240); + stringBuffer.append(TEXT_241); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_242); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")); + stringBuffer.append(TEXT_243); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_244); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_245); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_246); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_247); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_248); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT")); + stringBuffer.append(TEXT_249); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_250); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.FontData")); + stringBuffer.append(TEXT_251); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_252); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font")); + stringBuffer.append(TEXT_253); + stringBuffer.append(TEXT_254); + stringBuffer.append(TEXT_255); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.LineStyle")); + stringBuffer.append(TEXT_256); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.LineStyle")); + stringBuffer.append(TEXT_257); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_258); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_259); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_260); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_261); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_262); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_263); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FillStyle")); + stringBuffer.append(TEXT_264); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FillStyle")); + stringBuffer.append(TEXT_265); + stringBuffer.append(primaryView); + stringBuffer.append(TEXT_266); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_267); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_268); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_269); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_270); + stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color")); + stringBuffer.append(TEXT_271); + stringBuffer.append(TEXT_272); + stringBuffer.append(TEXT_273); + stringBuffer.append(importManager.getImportedName("java.util.HashMap")); + stringBuffer.append(TEXT_274); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")); + stringBuffer.append(TEXT_275); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification")); + stringBuffer.append(TEXT_276); + stringBuffer.append(importManager.getImportedName("java.util.HashMap")); + stringBuffer.append(TEXT_277); + stringBuffer.append(TEXT_278); + stringBuffer.append(TEXT_279); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_280); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_281); + stringBuffer.append(TEXT_282); + stringBuffer.append(TEXT_283); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_284); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_285); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_286); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_287); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_288); + stringBuffer.append(TEXT_289); + stringBuffer.append(TEXT_290); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_291); + stringBuffer.append(TEXT_292); + stringBuffer.append(TEXT_293); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_294); + stringBuffer.append(TEXT_295); + stringBuffer.append(TEXT_296); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_297); + stringBuffer.append(TEXT_298); + stringBuffer.append(TEXT_299); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_300); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_301); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_302); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_303); + stringBuffer.append(TEXT_304); + stringBuffer.append(TEXT_305); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_306); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")); + stringBuffer.append(TEXT_307); + /*XXX: probably, this should go to a separate jet-template along with GraphicalNodeEditPolicy*/ + +for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) { + GenLink genLink = (GenLink)it.next(); + if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) { + continue; + } + GenClass incomingClass; + String createCommandNameInfix; + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + incomingClass = modelFacet.getTargetMetaFeature().getTypeGenClass(); + createCommandNameInfix = modelFacet.getMetaClass().getName(); + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { + GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature(); + incomingClass = metaFeature.getTypeGenClass(); + createCommandNameInfix = metaFeature.getFeatureAccessorName(); + } else { + continue; + } + if (!incomingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) { + continue; + } + + if (palette != null) { + stringBuffer.append(TEXT_308); + stringBuffer.append(createCommandNameInfix); + stringBuffer.append(genLink.getVisualID()); + stringBuffer.append(TEXT_309); + stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command")); + stringBuffer.append(TEXT_310); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_311); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_312); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")); + stringBuffer.append(TEXT_313); + stringBuffer.append(createCommandNameInfix); + stringBuffer.append(genLink.getVisualID()); + stringBuffer.append(TEXT_314); + stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName())); + stringBuffer.append(TEXT_315); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_316); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_317); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_318); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")); + stringBuffer.append(TEXT_319); + stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")); + stringBuffer.append(TEXT_320); + + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + GenClass linkClass = modelFacet.getMetaClass(); + + stringBuffer.append(TEXT_321); + stringBuffer.append(importManager.getImportedName(importManager.getImportedName(linkClass.getQualifiedInterfaceName()))); + stringBuffer.append(TEXT_322); + stringBuffer.append(importManager.getImportedName(linkClass.getGenPackage().getQualifiedFactoryInterfaceName())); + stringBuffer.append(TEXT_323); + stringBuffer.append(linkClass.getClassifierAccessorName()); + stringBuffer.append(TEXT_324); + /*XXX: Class name DomainElementInitializer should be user-customizable*/ + stringBuffer.append(TEXT_325); + stringBuffer.append(importManager.getImportedName(genDiagram.getNotationViewFactoriesPackageName() + ".DomainElementInitializer")); + stringBuffer.append(TEXT_326); + stringBuffer.append(genLink.getUniqueIdentifier()); + stringBuffer.append(TEXT_327); + + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { + + stringBuffer.append(TEXT_328); + + } + + stringBuffer.append(TEXT_329); + stringBuffer.append(importManager.getImportedName(genLink.getNotationViewFactoryQualifiedClassName())); + stringBuffer.append(TEXT_330); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")); + stringBuffer.append(TEXT_331); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")); + stringBuffer.append(TEXT_332); + + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + + stringBuffer.append(TEXT_333); + + TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet(); + GenFeature sourceFeature = modelFacet.getSourceMetaFeature(); + GenFeature containmentFeature = modelFacet.getContainmentMetaFeature(); + GenFeature childFeature = modelFacet.getChildMetaFeature(); + GenFeature targetFeature = modelFacet.getTargetMetaFeature(); + //source/link features seem to be pointing from link to its ends, not vice versa. + //Anyway, if there is containment feature and it is not opposite to either the source/target, we should add containment, + //otherwise we will have problems with saving uncontained EObjects. + boolean addSource = sourceFeature != null; + boolean addTarget = targetFeature != null; + boolean addChild = childFeature != null && childFeature != containmentFeature && !childFeature.isDerived(); + if (containmentFeature != null) { + if (sourceFeature != null && sourceFeature.getEcoreFeature() instanceof EReference == true) { + EReference sourceEcoreFeature = (EReference)sourceFeature.getEcoreFeature(); + if (sourceEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) { + addSource = false; + } + } + if (targetFeature != null && targetFeature.getEcoreFeature() instanceof EReference == true) { + EReference targetEcoreFeature = (EReference)targetFeature.getEcoreFeature(); + if (targetEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) { + addTarget = false; + } + } + + stringBuffer.append(TEXT_334); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); + stringBuffer.append(TEXT_335); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenClass().getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_336); + stringBuffer.append(containmentFeature.getGenClass().getClassifierAccessorName()); + stringBuffer.append(TEXT_337); + stringBuffer.append(importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_338); + stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_339); + stringBuffer.append(containmentFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_340); + + } + if (addChild) { + + stringBuffer.append(TEXT_341); + stringBuffer.append(importManager.getImportedName(childFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_342); + stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_343); + stringBuffer.append(childFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_344); + + } + if (addSource) { + + stringBuffer.append(TEXT_345); + stringBuffer.append(importManager.getImportedName(sourceFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_346); + stringBuffer.append(importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_347); + stringBuffer.append(sourceFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_348); + + } + if (addTarget) { + + stringBuffer.append(TEXT_349); + stringBuffer.append(importManager.getImportedName(targetFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_350); + stringBuffer.append(importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_351); + stringBuffer.append(targetFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_352); + + } + + stringBuffer.append(TEXT_353); + + } else if (genLink.getModelFacet() instanceof FeatureModelFacet) { + GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature(); + + stringBuffer.append(TEXT_354); + stringBuffer.append(importManager.getImportedName(metaFeature.getEcoreFeature().isMany()? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")); + stringBuffer.append(TEXT_355); + stringBuffer.append(importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName())); + stringBuffer.append(TEXT_356); + stringBuffer.append(metaFeature.getFeatureAccessorName()); + stringBuffer.append(TEXT_357); + + } + + stringBuffer.append(TEXT_358); + + if (genLink.getModelFacet() instanceof TypeLinkModelFacet) { + + stringBuffer.append(TEXT_359); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); + stringBuffer.append(TEXT_360); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); + stringBuffer.append(TEXT_361); + stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EClass")); + stringBuffer.append(TEXT_362); + + } + + stringBuffer.append(TEXT_363); + +} + + }/*when there's palette*/ + +if (genNode.getViewmap() instanceof InnerClassViewmap) { + String classBody = ((InnerClassViewmap) genNode.getViewmap()).getClassBody(); + + stringBuffer.append(TEXT_364); + stringBuffer.append(classBody); + stringBuffer.append(TEXT_365); + +if (classBody.indexOf("DPtoLP") != -1) { + + stringBuffer.append(TEXT_366); + +} + + +} + + stringBuffer.append(TEXT_367); + importManager.emitSortedImports(); + return stringBuffer.toString(); + } +}