View | Details | Raw Unified | Return to bug 136702 | Differences between
and this patch

Collapse All | Expand All

(-)src-templates/org/eclipse/gmf/codegen/templates/lite/parts/CompartmentEditPartGenerator.java (+456 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.parts;
2
3
import java.util.*;
4
import org.eclipse.emf.codegen.ecore.genmodel.*;
5
import org.eclipse.gmf.codegen.gmfgen.*;
6
import org.eclipse.gmf.common.codegen.*;
7
8
public class CompartmentEditPartGenerator
9
{
10
  protected static String nl;
11
  public static synchronized CompartmentEditPartGenerator create(String lineSeparator)
12
  {
13
    nl = lineSeparator;
14
    CompartmentEditPartGenerator result = new CompartmentEditPartGenerator();
15
    nl = null;
16
    return result;
17
  }
18
19
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
20
  protected final String TEXT_1 = "";
21
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
22
  protected final String TEXT_3 = NL + " */";
23
  protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
24
  protected final String TEXT_5 = " extends ";
25
  protected final String TEXT_6 = " implements IUpdatableEditPart {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
26
  protected final String TEXT_7 = "(View view) {" + NL + "\t\tsetModel(view);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
27
  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!";
28
  protected final String TEXT_9 = NL + "\t\tinstallEditPolicy(";
29
  protected final String TEXT_10 = ".LAYOUT_ROLE, new ";
30
  protected final String TEXT_11 = "() {" + NL + "\t\t\tprotected Command createChangeConstraintCommand(final ";
31
  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 ";
32
  protected final String TEXT_13 = " moveDelta = request.getMoveDelta();" + NL + "\t\t\t\t\tprivate ";
33
  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(";
34
  protected final String TEXT_15 = " move, ";
35
  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 ";
36
  protected final String TEXT_17 = ".INSTANCE;" + NL + "\t\t\t}";
37
  protected final String TEXT_18 = NL + "\t\tinstallEditPolicy(";
38
  protected final String TEXT_19 = ".LAYOUT_ROLE, new ";
39
  protected final String TEXT_20 = "() {" + NL + "\t\t\tprotected Object getConstraintFor(";
40
  protected final String TEXT_21 = " rect) {" + NL + "\t\t\t\treturn null;" + NL + "\t\t\t}" + NL + "\t\t\tprotected Object getConstraintFor(";
41
  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 ";
42
  protected final String TEXT_23 = ".INSTANCE;" + NL + "\t\t\t}";
43
  protected final String TEXT_24 = NL + "\t\t\tprotected Command getCreateCommand(CreateRequest request) {";
44
  protected final String TEXT_25 = NL + "\t\t\t\tif (request instanceof ";
45
  protected final String TEXT_26 = ".CreateRequestEx) {" + NL + "\t\t\t\t\t";
46
  protected final String TEXT_27 = ".CreateRequestEx requestEx = (";
47
  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) {";
48
  protected final String TEXT_29 = NL + "\t\t\t\t\t\tcase ";
49
  protected final String TEXT_30 = ":" + NL + "\t\t\t\t\t\t\tresult.add(new Create";
50
  protected final String TEXT_31 = "Command((View) getModel(), requestEx";
51
  protected final String TEXT_32 = ", " + NL + "\t\t\t\t\t\t\t\t(";
52
  protected final String TEXT_33 = ")getConstraintFor(request)";
53
  protected final String TEXT_34 = "));" + NL + "\t\t\t\t\t\t\tbreak;";
54
  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}";
55
  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 \"";
56
  protected final String TEXT_37 = "\";" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
57
  protected final String TEXT_38 = " createFigure() {" + NL + "\t\t";
58
  protected final String TEXT_39 = " result = new ";
59
  protected final String TEXT_40 = "();" + NL + "\t\tresult.setLabel(getTitleName());" + NL + "\t\tresult.setOpaque(false);" + NL + "\t\tresult.setLayoutManager(new ";
60
  protected final String TEXT_41 = "());" + NL + "\t\t";
61
  protected final String TEXT_42 = " scrollPane = new ";
62
  protected final String TEXT_43 = "();" + NL + "\t\tresult.add(scrollPane);";
63
  protected final String TEXT_44 = NL + "\t\t";
64
  protected final String TEXT_45 = " viewport = new ";
65
  protected final String TEXT_46 = "();" + NL + "\t\tcontentPane = new ";
66
  protected final String TEXT_47 = "();" + NL + "\t\tcontentPane.setLayoutManager(new ";
67
  protected final String TEXT_48 = "());";
68
  protected final String TEXT_49 = NL + "\t\t";
69
  protected final String TEXT_50 = " viewport = new ";
70
  protected final String TEXT_51 = "();" + NL + "\t\tcontentPane = new ";
71
  protected final String TEXT_52 = "();" + NL + "\t\tcontentPane.setLayoutManager(new ";
72
  protected final String TEXT_53 = "());";
73
  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 ";
74
  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 (";
75
  protected final String TEXT_56 = ") view.getElement();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL;
76
  protected final String TEXT_57 = NL;
77
  protected final String TEXT_58 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
78
  protected final String TEXT_59 = " structuralFeatures2Refresher;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Refresher getRefresher(";
79
  protected final String TEXT_60 = " feature, ";
80
  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();";
81
  protected final String TEXT_62 = NL;
82
  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(";
83
  protected final String TEXT_64 = ".eINSTANCE.getView_PersistedChildren(), childrenRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
84
  protected final String TEXT_65 = ".eINSTANCE.getView_TransientChildren(), childrenRefresher);";
85
  protected final String TEXT_66 = NL;
86
  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(";
87
  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;
88
  protected final String TEXT_69 = NL;
89
  protected final String TEXT_70 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
90
  protected final String TEXT_71 = "static ";
91
  protected final String TEXT_72 = "class Create";
92
  protected final String TEXT_73 = "Command extends ";
93
  protected final String TEXT_74 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final ";
94
  protected final String TEXT_75 = " parent;" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate ";
95
  protected final String TEXT_76 = " createdNode;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic Create";
96
  protected final String TEXT_77 = "Command(";
97
  protected final String TEXT_78 = " parent, ";
98
  protected final String TEXT_79 = ".CreateRequestEx request";
99
  protected final String TEXT_80 = ", ";
100
  protected final String TEXT_81 = " constraint";
101
  protected final String TEXT_82 = ") {" + NL + "\t\t\tthis.parent = parent;" + NL + "\t\t\tcreatedNode = ";
102
  protected final String TEXT_83 = ".eINSTANCE.createNode();";
103
  protected final String TEXT_84 = NL + "\t\t\t";
104
  protected final String TEXT_85 = " createdDomainElement = ";
105
  protected final String TEXT_86 = ".eINSTANCE.create(" + NL + "\t\t\t\t";
106
  protected final String TEXT_87 = ".eINSTANCE.get";
107
  protected final String TEXT_88 = "());";
108
  protected final String TEXT_89 = NL + "\t\t\t";
109
  protected final String TEXT_90 = " createdDomainElement = ";
110
  protected final String TEXT_91 = ".eINSTANCE.create";
111
  protected final String TEXT_92 = "();";
112
  protected final String TEXT_93 = "\t\t\tcreatedNode.setElement(createdDomainElement);" + NL + "\t\t\t";
113
  protected final String TEXT_94 = NL + "\t\t\t";
114
  protected final String TEXT_95 = ".";
115
  protected final String TEXT_96 = ".initializeElement(createdDomainElement);" + NL + "\t\t\t";
116
  protected final String TEXT_97 = ".decorateView(createdNode);";
117
  protected final String TEXT_98 = NL + "\t\t\t";
118
  protected final String TEXT_99 = " bounds = ";
119
  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);";
120
  protected final String TEXT_101 = NL + "\t\t\tbounds.setWidth(Math.max(constraint.width, ";
121
  protected final String TEXT_102 = "));" + NL + "\t\t\tbounds.setHeight(Math.max(constraint.height, ";
122
  protected final String TEXT_103 = "));";
123
  protected final String TEXT_104 = NL + "\t\t\t";
124
  protected final String TEXT_105 = " domainModelEditDomain = ";
125
  protected final String TEXT_106 = ".getEditingDomainFor(parent.getDiagram().getElement());";
126
  protected final String TEXT_107 = NL + "\t\t\t";
127
  protected final String TEXT_108 = " compoundCommand = new ";
128
  protected final String TEXT_109 = "();" + NL + "\t\t\tcompoundCommand.append(";
129
  protected final String TEXT_110 = ".create(domainModelEditDomain, ";
130
  protected final String TEXT_111 = ", " + NL + "\t\t\t\t";
131
  protected final String TEXT_112 = ".eINSTANCE.get";
132
  protected final String TEXT_113 = "(), createdNode.getElement()));" + NL + "\t\t\tcompoundCommand.append(";
133
  protected final String TEXT_114 = ".create(domainModelEditDomain, ";
134
  protected final String TEXT_115 = ", " + NL + "\t\t\t\t";
135
  protected final String TEXT_116 = ".eINSTANCE.get";
136
  protected final String TEXT_117 = "(), createdNode.getElement()));" + NL + "\t\t\tthis.domainModelAddCommand = compoundCommand;";
137
  protected final String TEXT_118 = NL + "\t\t\tthis.domainModelAddCommand = ";
138
  protected final String TEXT_119 = ".create(domainModelEditDomain, ";
139
  protected final String TEXT_120 = ", " + NL + "\t\t\t\t";
140
  protected final String TEXT_121 = ".eINSTANCE.get";
141
  protected final String TEXT_122 = "(), createdNode.getElement());";
142
  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}";
143
  protected final String TEXT_124 = NL + "}" + NL;
144
  protected final String TEXT_125 = NL;
145
146
  public String generate(Object argument)
147
  {
148
    final StringBuffer stringBuffer = new StringBuffer();
149
    
150
GenCompartment genCompartment = (GenCompartment) ((Object[]) argument)[0];
151
GenNode genHost = genCompartment.getNode();
152
GenDiagram genDiagram = genCompartment.getDiagram();
153
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
154
155
    stringBuffer.append(TEXT_1);
156
    
157
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
158
if (copyrightText != null && copyrightText.trim().length() > 0) {
159
160
    stringBuffer.append(TEXT_2);
161
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
162
    stringBuffer.append(TEXT_3);
163
    }
164
    importManager.emitPackageStatement(stringBuffer);
165
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
166
importManager.addImport("org.eclipse.gef.commands.Command");
167
importManager.addImport("org.eclipse.gef.commands.CompoundCommand");
168
importManager.addImport("org.eclipse.gef.EditPart");
169
importManager.addImport("org.eclipse.gef.requests.CreateRequest");
170
171
importManager.markImportLocation(stringBuffer);
172
173
    stringBuffer.append(TEXT_4);
174
    stringBuffer.append(genCompartment.getEditPartClassName());
175
    stringBuffer.append(TEXT_5);
176
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart"));
177
    stringBuffer.append(TEXT_6);
178
    stringBuffer.append(genCompartment.getEditPartClassName());
179
    stringBuffer.append(TEXT_7);
180
    stringBuffer.append(importManager.getImportedName("java.util.List"));
181
    stringBuffer.append(TEXT_8);
182
    if (!genCompartment.isListLayout()) {
183
    stringBuffer.append(TEXT_9);
184
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
185
    stringBuffer.append(TEXT_10);
186
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.XYLayoutEditPolicy"));
187
    stringBuffer.append(TEXT_11);
188
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.ChangeBoundsRequest"));
189
    stringBuffer.append(TEXT_12);
190
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point"));
191
    stringBuffer.append(TEXT_13);
192
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension"));
193
    stringBuffer.append(TEXT_14);
194
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point"));
195
    stringBuffer.append(TEXT_15);
196
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension"));
197
    stringBuffer.append(TEXT_16);
198
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
199
    stringBuffer.append(TEXT_17);
200
    } else {
201
    stringBuffer.append(TEXT_18);
202
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
203
    stringBuffer.append(TEXT_19);
204
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ConstrainedLayoutEditPolicy"));
205
    stringBuffer.append(TEXT_20);
206
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle"));
207
    stringBuffer.append(TEXT_21);
208
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point"));
209
    stringBuffer.append(TEXT_22);
210
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
211
    stringBuffer.append(TEXT_23);
212
    }
213
    stringBuffer.append(TEXT_24);
214
    if (null != genDiagram.getPalette()) {
215
final Palette palette = genDiagram.getPalette();
216
    stringBuffer.append(TEXT_25);
217
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
218
    stringBuffer.append(TEXT_26);
219
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
220
    stringBuffer.append(TEXT_27);
221
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
222
    stringBuffer.append(TEXT_28);
223
    
224
for(Iterator it = genCompartment.getChildNodes().iterator(); it.hasNext(); ) {
225
	GenChildNode next = (GenChildNode)it.next();
226
227
    stringBuffer.append(TEXT_29);
228
    stringBuffer.append(next.getVisualID());
229
    stringBuffer.append(TEXT_30);
230
    stringBuffer.append(next.getDomainMetaClass().getName());
231
    stringBuffer.append(next.getVisualID());
232
    stringBuffer.append(TEXT_31);
233
    if (!genCompartment.isListLayout()) {
234
    stringBuffer.append(TEXT_32);
235
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle"));
236
    stringBuffer.append(TEXT_33);
237
    }
238
    stringBuffer.append(TEXT_34);
239
    
240
}
241
242
    stringBuffer.append(TEXT_35);
243
    }/*when there's palette*/
244
    stringBuffer.append(TEXT_36);
245
    stringBuffer.append(genCompartment.getTitle());
246
    stringBuffer.append(TEXT_37);
247
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
248
    stringBuffer.append(TEXT_38);
249
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.LabeledContainer"));
250
    stringBuffer.append(TEXT_39);
251
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.LabeledContainer"));
252
    stringBuffer.append(TEXT_40);
253
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.StackLayout"));
254
    stringBuffer.append(TEXT_41);
255
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ScrollPane"));
256
    stringBuffer.append(TEXT_42);
257
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ScrollPane"));
258
    stringBuffer.append(TEXT_43);
259
    if (genCompartment.isListLayout()) {
260
    stringBuffer.append(TEXT_44);
261
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Viewport"));
262
    stringBuffer.append(TEXT_45);
263
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Viewport"));
264
    stringBuffer.append(TEXT_46);
265
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Figure"));
266
    stringBuffer.append(TEXT_47);
267
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ToolbarLayout"));
268
    stringBuffer.append(TEXT_48);
269
    } else {
270
    stringBuffer.append(TEXT_49);
271
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Viewport"));
272
    stringBuffer.append(TEXT_50);
273
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformViewport"));
274
    stringBuffer.append(TEXT_51);
275
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformLayer"));
276
    stringBuffer.append(TEXT_52);
277
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformLayout"));
278
    stringBuffer.append(TEXT_53);
279
    }
280
    stringBuffer.append(TEXT_54);
281
    stringBuffer.append(importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName()));
282
    stringBuffer.append(TEXT_55);
283
    stringBuffer.append(importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName()));
284
    stringBuffer.append(TEXT_56);
285
    stringBuffer.append(TEXT_57);
286
    stringBuffer.append(TEXT_58);
287
    stringBuffer.append(importManager.getImportedName("java.util.HashMap"));
288
    stringBuffer.append(TEXT_59);
289
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
290
    stringBuffer.append(TEXT_60);
291
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification"));
292
    stringBuffer.append(TEXT_61);
293
    stringBuffer.append(TEXT_62);
294
    stringBuffer.append(TEXT_63);
295
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
296
    stringBuffer.append(TEXT_64);
297
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
298
    stringBuffer.append(TEXT_65);
299
    stringBuffer.append(TEXT_66);
300
    stringBuffer.append(TEXT_67);
301
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
302
    stringBuffer.append(TEXT_68);
303
    
304
for(Iterator it = genCompartment.getChildNodes().iterator(); genDiagram.getPalette() != null && it.hasNext(); ) {
305
	GenChildNode next = (GenChildNode)it.next();
306
	boolean isStatic = false;
307
	boolean isListLayout = genCompartment.isListLayout();
308
	String resolvedSemanticElement = "resolveSemanticElement()";
309
310
    stringBuffer.append(TEXT_69);
311
    stringBuffer.append(TEXT_70);
312
    if (isStatic) {
313
    stringBuffer.append(TEXT_71);
314
    }
315
    stringBuffer.append(TEXT_72);
316
    stringBuffer.append(next.getDomainMetaClass().getName());
317
    stringBuffer.append(next.getVisualID());
318
    stringBuffer.append(TEXT_73);
319
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
320
    stringBuffer.append(TEXT_74);
321
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
322
    stringBuffer.append(TEXT_75);
323
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
324
    stringBuffer.append(TEXT_76);
325
    stringBuffer.append(next.getDomainMetaClass().getName());
326
    stringBuffer.append(next.getVisualID());
327
    stringBuffer.append(TEXT_77);
328
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
329
    stringBuffer.append(TEXT_78);
330
    stringBuffer.append(importManager.getImportedName(genDiagram.getPalette().getFactoryQualifiedClassName()));
331
    stringBuffer.append(TEXT_79);
332
    if (!isListLayout) {
333
    stringBuffer.append(TEXT_80);
334
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle"));
335
    stringBuffer.append(TEXT_81);
336
    }
337
    stringBuffer.append(TEXT_82);
338
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
339
    stringBuffer.append(TEXT_83);
340
    
341
if (next.getDomainMetaClass().isMapEntry()) {
342
/*Workaround for Ecore example: map entries cannot be created using factory, only using reflective EFactory.create() method*/
343
344
    stringBuffer.append(TEXT_84);
345
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
346
    stringBuffer.append(TEXT_85);
347
    stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName()));
348
    stringBuffer.append(TEXT_86);
349
    stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedPackageInterfaceName()));
350
    stringBuffer.append(TEXT_87);
351
    stringBuffer.append(next.getDomainMetaClass().getClassifierAccessorName());
352
    stringBuffer.append(TEXT_88);
353
    
354
} else {
355
356
    stringBuffer.append(TEXT_89);
357
    stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getQualifiedInterfaceName()));
358
    stringBuffer.append(TEXT_90);
359
    stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName()));
360
    stringBuffer.append(TEXT_91);
361
    stringBuffer.append(next.getDomainMetaClass().getClassifierAccessorName());
362
    stringBuffer.append(TEXT_92);
363
    
364
}
365
366
    stringBuffer.append(TEXT_93);
367
    /*XXX: Class name DomainElementInitializer should be user-customizable*/
368
    stringBuffer.append(TEXT_94);
369
    stringBuffer.append(importManager.getImportedName(genDiagram.getNotationViewFactoriesPackageName() + ".DomainElementInitializer"));
370
    stringBuffer.append(TEXT_95);
371
    stringBuffer.append(next.getUniqueIdentifier());
372
    stringBuffer.append(TEXT_96);
373
    stringBuffer.append(importManager.getImportedName(next.getNotationViewFactoryQualifiedClassName()));
374
    stringBuffer.append(TEXT_97);
375
    
376
	if (!isListLayout) {
377
378
    stringBuffer.append(TEXT_98);
379
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds"));
380
    stringBuffer.append(TEXT_99);
381
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
382
    stringBuffer.append(TEXT_100);
383
    
384
		int defaultWidth = 40;
385
		int defaultHeight = 40;
386
		DefaultSizeAttributes defSizeAttrs = (DefaultSizeAttributes) next.getViewmap().find(DefaultSizeAttributes.class);
387
		if (defSizeAttrs != null) {
388
			defaultWidth = defSizeAttrs.getWidth();
389
			defaultHeight = defSizeAttrs.getHeight();
390
		}
391
392
    stringBuffer.append(TEXT_101);
393
    stringBuffer.append(defaultWidth);
394
    stringBuffer.append(TEXT_102);
395
    stringBuffer.append(defaultHeight);
396
    stringBuffer.append(TEXT_103);
397
    
398
	}
399
400
    stringBuffer.append(TEXT_104);
401
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain"));
402
    stringBuffer.append(TEXT_105);
403
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
404
    stringBuffer.append(TEXT_106);
405
    
406
	TypeModelFacet facet = next.getModelFacet();
407
	GenFeature childFeature = facet.getChildMetaFeature();
408
	GenFeature containmentFeature = facet.getContainmentMetaFeature();
409
	if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) {
410
411
    stringBuffer.append(TEXT_107);
412
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
413
    stringBuffer.append(TEXT_108);
414
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
415
    stringBuffer.append(TEXT_109);
416
    stringBuffer.append(importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand"));
417
    stringBuffer.append(TEXT_110);
418
    stringBuffer.append(resolvedSemanticElement);
419
    stringBuffer.append(TEXT_111);
420
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
421
    stringBuffer.append(TEXT_112);
422
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
423
    stringBuffer.append(TEXT_113);
424
    stringBuffer.append(importManager.getImportedName(childFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand"));
425
    stringBuffer.append(TEXT_114);
426
    stringBuffer.append(resolvedSemanticElement);
427
    stringBuffer.append(TEXT_115);
428
    stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName()));
429
    stringBuffer.append(TEXT_116);
430
    stringBuffer.append(childFeature.getFeatureAccessorName());
431
    stringBuffer.append(TEXT_117);
432
    
433
	} else {
434
435
    stringBuffer.append(TEXT_118);
436
    stringBuffer.append(importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand"));
437
    stringBuffer.append(TEXT_119);
438
    stringBuffer.append(resolvedSemanticElement);
439
    stringBuffer.append(TEXT_120);
440
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
441
    stringBuffer.append(TEXT_121);
442
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
443
    stringBuffer.append(TEXT_122);
444
    
445
	}
446
447
    stringBuffer.append(TEXT_123);
448
    
449
}
450
451
    stringBuffer.append(TEXT_124);
452
    importManager.emitSortedImports();
453
    stringBuffer.append(TEXT_125);
454
    return stringBuffer.toString();
455
  }
456
}
(-)templates/parts/DiagramEditPart.javajet (+249 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="DiagramEditPartGenerator"
2
	imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* java.util.* org.eclipse.emf.codegen.ecore.genmodel.*"%>
3
<%
4
GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
5
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
6
%>
7
8
<%
9
importManager.emitPackageStatement(stringBuffer);
10
importManager.addImport("org.eclipse.gef.editparts.AbstractGraphicalEditPart");
11
importManager.addImport("org.eclipse.draw2d.IFigure");
12
importManager.addImport("org.eclipse.draw2d.FreeformLayer");
13
importManager.addImport("org.eclipse.draw2d.FreeformLayout");
14
importManager.addImport("org.eclipse.draw2d.MarginBorder");
15
importManager.addImport("org.eclipse.gef.commands.Command");
16
importManager.addImport("org.eclipse.gef.commands.CompoundCommand");
17
importManager.addImport("org.eclipse.gef.EditPolicy");
18
importManager.addImport("org.eclipse.draw2d.geometry.Dimension");
19
importManager.addImport("org.eclipse.draw2d.geometry.Point");
20
importManager.addImport("org.eclipse.gef.EditPart");
21
importManager.addImport("org.eclipse.gef.SnapToGrid");
22
importManager.addImport("org.eclipse.gef.SnapToHelper");
23
importManager.addImport("org.eclipse.gef.editpolicies.RootComponentEditPolicy");
24
importManager.addImport("org.eclipse.gef.commands.UnexecutableCommand");
25
importManager.addImport("org.eclipse.gef.editpolicies.RootComponentEditPolicy");
26
importManager.addImport("org.eclipse.gef.editpolicies.XYLayoutEditPolicy");
27
importManager.addImport("org.eclipse.gef.requests.ChangeBoundsRequest");
28
importManager.addImport("org.eclipse.gef.requests.CreateRequest");
29
importManager.addImport("org.eclipse.gmf.runtime.notation.Bounds");
30
importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram");
31
importManager.addImport("org.eclipse.gmf.runtime.notation.Node");
32
importManager.addImport("org.eclipse.gmf.runtime.notation.NotationPackage");
33
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
34
importManager.addImport("java.util.List");
35
36
importManager.markImportLocation(stringBuffer);
37
%>
38
39
/**
40
 * @generated
41
 */
42
public class <%=genDiagram.getEditPartClassName()%> extends AbstractGraphicalEditPart implements IUpdatableEditPart {
43
	/**
44
	 * @generated
45
	 */
46
	public <%=genDiagram.getEditPartClassName()%>(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%> model) {
47
		setModel(model);
48
	}
49
50
	/**
51
	 * @generated
52
	 */
53
	public <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%> getDiagram() {
54
		return (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%>) getModel();
55
	}
56
57
	/**
58
	 * @generated
59
	 */
60
	protected void createEditPolicies() {
61
		installEditPolicy(EditPolicy.COMPONENT_ROLE, new RootComponentEditPolicy());
62
		installEditPolicy(EditPolicy.LAYOUT_ROLE, new XYLayoutEditPolicy() {
63
			protected Command getCreateCommand(CreateRequest request) {
64
<%if (null != genDiagram.getPalette()) {
65
final Palette palette = genDiagram.getPalette();%>
66
				if (request instanceof <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx) {
67
					<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx requestEx = (<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx) request;
68
					int[] visualIds = requestEx.getVisualIds();
69
					CompoundCommand result = new CompoundCommand();
70
					for(int i = 0; i < visualIds.length; i++) {
71
						int nextVisualId = visualIds[i];
72
						switch (nextVisualId) {
73
<%
74
for(Iterator it = genDiagram.getTopLevelNodes().iterator(); it.hasNext(); ) {
75
	GenTopLevelNode next = (GenTopLevelNode)it.next();
76
%>
77
						case <%=next.getVisualID()%>:
78
							result.add(new Create<%=next.getDomainMetaClass().getName()%><%=next.getVisualID()%>Command(getDiagram(), requestEx, (<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%>)getConstraintFor(request)));
79
							break;
80
<%
81
}
82
%>
83
						}
84
					}
85
					return result.unwrap();
86
				}
87
<%}/*when there's palette*/%>
88
				return null;
89
			}
90
			protected Command createChangeConstraintCommand(final ChangeBoundsRequest request, EditPart child, Object constraint) {
91
				final Node node = (Node) child.getModel();
92
				return new Command("Change node position/size") {
93
					private Point moveDelta = request.getMoveDelta();
94
					private Dimension resizeDelta = request.getSizeDelta();
95
96
					public boolean canUndo() {
97
						return canExecute();
98
					}
99
					public boolean canExecute() {
100
						return node.getLayoutConstraint() instanceof Bounds;
101
					}
102
					public void undo() {
103
						execute(moveDelta.getNegated(), resizeDelta.getNegated());
104
					}
105
					public void execute() {
106
						execute(moveDelta, resizeDelta);
107
					}
108
					private void execute(Point move, Dimension resize) {
109
						Bounds bounds = (Bounds) node.getLayoutConstraint();
110
						bounds.setX(bounds.getX() + move.x);
111
						bounds.setY(bounds.getY() + move.y);
112
						bounds.setWidth(bounds.getWidth() + resize.width);
113
						bounds.setHeight(bounds.getHeight() + resize.height);
114
					}
115
				};
116
			}
117
			protected Command createChangeConstraintCommand(EditPart child, Object constraint) {
118
				assert false;
119
				return UnexecutableCommand.INSTANCE;
120
			}
121
		});
122
	}
123
124
	/**
125
	 * @generated
126
	 */
127
	protected IFigure createFigure() {
128
		IFigure f = new FreeformLayer();
129
		f.setBorder(new MarginBorder(5));
130
		f.setLayoutManager(new FreeformLayout());
131
		return f;
132
	}
133
134
	/**
135
	 * @generated
136
	 */
137
	public Object getAdapter(Class key) {
138
		if (<%=importManager.getImportedName("org.eclipse.gef.SnapToHelper")%>.class == key) {
139
			return new <%=importManager.getImportedName("org.eclipse.gef.SnapToGrid")%>(this);
140
		}
141
<%/*@ include file="adapters/propertySource.javajetinc"*/%>
142
		return super.getAdapter(key);
143
	}
144
145
	/**
146
	 * @generated
147
	 */
148
	protected List getModelChildren() {
149
		return getDiagram().getVisibleChildren();
150
	}
151
152
<%
153
for(Iterator it = genDiagram.getTopLevelNodes().iterator(); genDiagram.getPalette() != null && it.hasNext(); ) {
154
	GenTopLevelNode next = (GenTopLevelNode)it.next();
155
	boolean isStatic = true;
156
	boolean isListLayout = false;
157
	String resolvedSemanticElement = "parent.getElement()";
158
%>
159
<%@ include file="createNodeCommand.javajetinc"%>
160
<%
161
}
162
%>
163
164
<%@ include file="refresher.javajetinc"%>
165
166
	/**
167
	 * @generated
168
	 */
169
	private void createRefreshers() {
170
		structuralFeatures2Refresher = new HashMap();
171
<%@ include file="refreshers.javajetinc/children.javajetinc"%>
172
	}
173
174
	/**
175
	 * @generated
176
	 */
177
	private class UpdateManager extends <%=importManager.getImportedName("org.eclipse.emf.ecore.util.EContentAdapter")%> {
178
		/**
179
		 * @generated
180
		 */
181
		public void notifyChanged(<%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> msg) {
182
			super.notifyChanged(msg);
183
			if (msg.isTouch()) {
184
				return;
185
			}
186
			<%=importManager.getImportedName("java.util.Collection")%> affectedEditParts = findAffectedParts(msg);
187
			for(<%=importManager.getImportedName("java.util.Iterator")%> it = affectedEditParts.iterator(); it.hasNext(); ) {
188
				IUpdatableEditPart next = (IUpdatableEditPart) it.next();
189
				IUpdatableEditPart.Refresher refresher = next.getRefresher((<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%>)msg.getFeature(), msg);
190
				if (refresher != null) {
191
					refresher.refresh();
192
				}
193
			}
194
		}
195
196
		/**
197
		 * @generated
198
		 */
199
		private <%=importManager.getImportedName("java.util.Collection")%>/*<IUpdatableEditPart>*/ findAffectedParts(<%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> msg) {
200
			Object notifier = msg.getNotifier();
201
			if (notifier instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%>) {
202
				<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view = getView((EObject) notifier);
203
				if (view != null) {
204
					EditPart affectedEditPart = (EditPart) getViewer().getEditPartRegistry().get(view);
205
					if (affectedEditPart != null) {
206
						return <%=importManager.getImportedName("java.util.Collections")%>.singleton(affectedEditPart);
207
					}
208
				}
209
			}
210
			return <%=importManager.getImportedName("java.util.Collections")%>.EMPTY_LIST;
211
		}
212
213
		/**
214
		 * @generated
215
		 */
216
		private <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> getView(EObject offspring) {
217
			while (offspring != null && offspring instanceof View == false) {
218
				offspring = offspring.eContainer();
219
			}
220
			return (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) offspring;
221
		}
222
	}
223
224
	/**
225
	 * @generated
226
	 */
227
	public void activate() {
228
		super.activate();
229
		getDiagram().eAdapters().add(updateManager);
230
		getDiagram().getElement().eAdapters().add(domainModelRefresher);
231
	}
232
233
	/**
234
	 * @generated
235
	 */
236
	public void deactivate() {
237
		getDiagram().getElement().eAdapters().remove(domainModelRefresher);
238
		getDiagram().eAdapters().remove(updateManager);
239
		super.deactivate();
240
	}
241
242
<%@ include file="refreshers.javajetinc/domainModelRefresher.javajetinc"%>
243
244
	/**
245
	 * @generated
246
	 */
247
	private UpdateManager updateManager = new UpdateManager();
248
}
249
<%importManager.emitSortedImports();%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/providers/PropertySourceProviderGenerator.java (+120 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.providers;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
6
public class PropertySourceProviderGenerator
7
{
8
  protected static String nl;
9
  public static synchronized PropertySourceProviderGenerator create(String lineSeparator)
10
  {
11
    nl = lineSeparator;
12
    PropertySourceProviderGenerator result = new PropertySourceProviderGenerator();
13
    nl = null;
14
    return result;
15
  }
16
17
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
18
  protected final String TEXT_1 = "";
19
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
20
  protected final String TEXT_3 = NL + " */";
21
  protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
22
  protected final String TEXT_5 = " implements ";
23
  protected final String TEXT_6 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
24
  protected final String TEXT_7 = " adapterFactoryContentProvider;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
25
  protected final String TEXT_8 = "(";
26
  protected final String TEXT_9 = " domainAdapterFactory) {" + NL + "\t\tadapterFactoryContentProvider = new ";
27
  protected final String TEXT_10 = "(domainAdapterFactory);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
28
  protected final String TEXT_11 = " getPropertySource(Object object) {" + NL + "\t\tif (object instanceof ";
29
  protected final String TEXT_12 = ") {" + NL + "\t\t\treturn (";
30
  protected final String TEXT_13 = ") object;" + NL + "\t\t}" + NL + "\t\t";
31
  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";
32
  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 ";
33
  protected final String TEXT_16 = " getNotationElement(Object object) {" + NL + "\t\t";
34
  protected final String TEXT_17 = " view = null;" + NL + "\t\tif (object instanceof ";
35
  protected final String TEXT_18 = ") {" + NL + "\t\t\tview = (";
36
  protected final String TEXT_19 = ") object;" + NL + "\t\t} else if (object instanceof ";
37
  protected final String TEXT_20 = ") {" + NL + "\t\t\t";
38
  protected final String TEXT_21 = " editPart = (";
39
  protected final String TEXT_22 = ") object;" + NL + "\t\t\tif (editPart.getModel() instanceof ";
40
  protected final String TEXT_23 = ") {" + NL + "\t\t\t\tview = (";
41
  protected final String TEXT_24 = ") editPart.getModel();" + NL + "\t\t\t}" + NL + "\t\t}" + NL + "\t\tif (view != null && \"";
42
  protected final String TEXT_25 = "\".equals(getModelID(view))) {" + NL + "\t\t\treturn view;" + NL + "\t\t}" + NL + "\t\treturn null;" + NL + "\t}" + NL;
43
  protected final String TEXT_26 = NL;
44
  protected final String TEXT_27 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate String getModelID(";
45
  protected final String TEXT_28 = " containerView) {" + NL + "\t\t";
46
  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 + "}";
47
48
  public String generate(Object argument)
49
  {
50
    final StringBuffer stringBuffer = new StringBuffer();
51
    
52
GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
53
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
54
55
    stringBuffer.append(TEXT_1);
56
    
57
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
58
if (copyrightText != null && copyrightText.trim().length() > 0) {
59
60
    stringBuffer.append(TEXT_2);
61
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
62
    stringBuffer.append(TEXT_3);
63
    }
64
    
65
importManager.emitPackageStatement(stringBuffer);
66
importManager.markImportLocation(stringBuffer);
67
68
    stringBuffer.append(TEXT_4);
69
    stringBuffer.append(genDiagram.getPropertyProviderClassName());
70
    stringBuffer.append(TEXT_5);
71
    stringBuffer.append(importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySourceProvider"));
72
    stringBuffer.append(TEXT_6);
73
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider"));
74
    stringBuffer.append(TEXT_7);
75
    stringBuffer.append(genDiagram.getPropertyProviderClassName());
76
    stringBuffer.append(TEXT_8);
77
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.AdapterFactory"));
78
    stringBuffer.append(TEXT_9);
79
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider"));
80
    stringBuffer.append(TEXT_10);
81
    stringBuffer.append(importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource"));
82
    stringBuffer.append(TEXT_11);
83
    stringBuffer.append(importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource"));
84
    stringBuffer.append(TEXT_12);
85
    stringBuffer.append(importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource"));
86
    stringBuffer.append(TEXT_13);
87
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
88
    stringBuffer.append(TEXT_14);
89
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
90
    stringBuffer.append(TEXT_15);
91
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
92
    stringBuffer.append(TEXT_16);
93
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
94
    stringBuffer.append(TEXT_17);
95
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
96
    stringBuffer.append(TEXT_18);
97
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
98
    stringBuffer.append(TEXT_19);
99
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
100
    stringBuffer.append(TEXT_20);
101
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
102
    stringBuffer.append(TEXT_21);
103
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
104
    stringBuffer.append(TEXT_22);
105
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
106
    stringBuffer.append(TEXT_23);
107
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
108
    stringBuffer.append(TEXT_24);
109
    stringBuffer.append(genDiagram.getEditorGen().getModelID());
110
    stringBuffer.append(TEXT_25);
111
    stringBuffer.append(TEXT_26);
112
    stringBuffer.append(TEXT_27);
113
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
114
    stringBuffer.append(TEXT_28);
115
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
116
    stringBuffer.append(TEXT_29);
117
    importManager.emitSortedImports();
118
    return stringBuffer.toString();
119
  }
120
}
(-)templates/parts/componentEditPolicy.javajetinc (+91 lines)
Added Link Here
1
		installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.COMPONENT_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ComponentEditPolicy")%>() {
2
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> createDeleteCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.GroupRequest")%> deleteRequest) {
3
				return new <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%>() {
4
<%
5
{
6
TypeModelFacet facet = genNode.getModelFacet();
7
GenFeature childFeature = facet.getChildMetaFeature();
8
GenFeature containmentFeature = facet.getContainmentMetaFeature();
9
if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) {
10
%>
11
					private final org.eclipse.emf.common.command.Command domainModelRemoveCommand = getDomainModelRemoveCommand();
12
					private org.eclipse.emf.common.command.Command getDomainModelRemoveCommand() {
13
						<%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%> result = new <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%>();
14
<%
15
	if (containmentFeature.getEcoreFeature().isMany()) {
16
%>
17
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(
18
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), 
19
							getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(),
20
							getDiagramNode().getElement()));
21
<%
22
	} else {
23
%>
24
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(
25
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), 
26
							getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(),
27
							<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE));
28
<%
29
	}
30
%>
31
<%
32
	if (childFeature.getEcoreFeature().isMany()) {
33
%>
34
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(
35
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), 
36
							getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(),
37
							getDiagramNode().getElement()));
38
<%
39
	} else {
40
%>
41
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(
42
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), 
43
							getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(),
44
							<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE));
45
<%
46
	}
47
%>
48
						return result;
49
					}
50
<%
51
} else {
52
	if (containmentFeature.getEcoreFeature().isMany()) {
53
%>
54
						private final org.eclipse.emf.common.command.Command domainModelRemoveCommand = <%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(
55
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), 
56
							getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(),
57
							getDiagramNode().getElement());
58
<%
59
	} else {
60
%>
61
						private final org.eclipse.emf.common.command.Command domainModelRemoveCommand = <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(
62
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram().getElement()), 
63
							getDiagramNode().getElement().eContainer(), <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(),
64
							<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE);
65
<%
66
	}
67
}
68
%>
69
					private final org.eclipse.emf.common.command.Command viewRemoveCommand = <%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(
70
						<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(getDiagramNode().getDiagram()), 
71
						getDiagramNode());
72
					public boolean canExecute() {
73
						return domainModelRemoveCommand != null && domainModelRemoveCommand.canExecute() && viewRemoveCommand != null && viewRemoveCommand.canExecute();
74
					}
75
					public void execute() {
76
						domainModelRemoveCommand.execute();
77
						viewRemoveCommand.execute();
78
					}
79
					public boolean canUndo() {
80
						return domainModelRemoveCommand != null && domainModelRemoveCommand.canUndo() && viewRemoveCommand != null && viewRemoveCommand.canUndo();
81
					}
82
					public void undo() {
83
						domainModelRemoveCommand.undo();
84
						viewRemoveCommand.undo();
85
					}
86
				};
87
			}
88
		});
89
<%
90
}	/*restrict local vars used in component edit policy*/
91
%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/providers/DiagramViewFactoryGenerator.java (+74 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.providers;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
6
public class DiagramViewFactoryGenerator
7
{
8
  protected static String nl;
9
  public static synchronized DiagramViewFactoryGenerator create(String lineSeparator)
10
  {
11
    nl = lineSeparator;
12
    DiagramViewFactoryGenerator result = new DiagramViewFactoryGenerator();
13
    nl = null;
14
    return result;
15
  }
16
17
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
18
  protected final String TEXT_1 = "";
19
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
20
  protected final String TEXT_3 = NL + " */";
21
  protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
22
  protected final String TEXT_5 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static void decorateView(";
23
  protected final String TEXT_6 = " view) {";
24
  protected final String TEXT_7 = NL;
25
  protected final String TEXT_8 = " annotation = ";
26
  protected final String TEXT_9 = ".eINSTANCE.createEAnnotation();" + NL + "annotation.setSource(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "view.getEAnnotations().add(annotation);" + NL + "annotation.getDetails().put(\"modelID\", \"";
27
  protected final String TEXT_10 = "\"); //$NON-NLS-1$" + NL + "annotation.getDetails().put(\"visualID\", \"";
28
  protected final String TEXT_11 = "\"); //$NON-NLS-1$" + NL + "\t\t";
29
  protected final String TEXT_12 = " style = ";
30
  protected final String TEXT_13 = ".eINSTANCE.createDiagramStyle();" + NL + "\t\tview.getStyles().add(style);" + NL + "\t\t//XXX: init styles from attributes!!!" + NL + "\t}" + NL + "}";
31
32
  public String generate(Object argument)
33
  {
34
    final StringBuffer stringBuffer = new StringBuffer();
35
    
36
GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
37
GenDiagram genElement = genDiagram;		/*make jetinc happy*/
38
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
39
40
    stringBuffer.append(TEXT_1);
41
    
42
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
43
if (copyrightText != null && copyrightText.trim().length() > 0) {
44
45
    stringBuffer.append(TEXT_2);
46
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
47
    stringBuffer.append(TEXT_3);
48
    }
49
    importManager.emitPackageStatement(stringBuffer);
50
51
importManager.markImportLocation(stringBuffer);
52
53
    stringBuffer.append(TEXT_4);
54
    stringBuffer.append(genElement.getNotationViewFactoryClassName());
55
    stringBuffer.append(TEXT_5);
56
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
57
    stringBuffer.append(TEXT_6);
58
    stringBuffer.append(TEXT_7);
59
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
60
    stringBuffer.append(TEXT_8);
61
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory"));
62
    stringBuffer.append(TEXT_9);
63
    stringBuffer.append(genDiagram.getEditorGen().getModelID());
64
    stringBuffer.append(TEXT_10);
65
    stringBuffer.append(genElement.getVisualID());
66
    stringBuffer.append(TEXT_11);
67
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.DiagramStyle"));
68
    stringBuffer.append(TEXT_12);
69
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
70
    stringBuffer.append(TEXT_13);
71
    importManager.emitSortedImports();
72
    return stringBuffer.toString();
73
  }
74
}
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/parts/ChildNodeEditPartGenerator.java (+921 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.parts;
2
3
import java.util.*;
4
import org.eclipse.gmf.codegen.gmfgen.*;
5
import org.eclipse.gmf.common.codegen.*;
6
import org.eclipse.emf.codegen.ecore.genmodel.*;
7
import org.eclipse.emf.ecore.*;
8
9
public class ChildNodeEditPartGenerator
10
{
11
  protected static String nl;
12
  public static synchronized ChildNodeEditPartGenerator create(String lineSeparator)
13
  {
14
    nl = lineSeparator;
15
    ChildNodeEditPartGenerator result = new ChildNodeEditPartGenerator();
16
    nl = null;
17
    return result;
18
  }
19
20
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
21
  protected final String TEXT_1 = "";
22
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
23
  protected final String TEXT_3 = NL + " */";
24
  protected final String TEXT_4 = NL;
25
  protected final String TEXT_5 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
26
  protected final String TEXT_6 = " extends ";
27
  protected final String TEXT_7 = " implements IUpdatableEditPart {";
28
  protected final String TEXT_8 = NL;
29
  protected final String TEXT_9 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
30
  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 ";
31
  protected final String TEXT_11 = "(View view) {" + NL + "\t\tsetModel(view);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
32
  protected final String TEXT_12 = " getDiagramNode() {" + NL + "\t\treturn (";
33
  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!";
34
  protected final String TEXT_14 = NL;
35
  protected final String TEXT_15 = "\t\tinstallEditPolicy(";
36
  protected final String TEXT_16 = ".DIRECT_EDIT_ROLE," + NL + "\t\t\t\tnew ";
37
  protected final String TEXT_17 = "() {" + NL + "\t\t\t\t\tprotected void showCurrentEditValue(";
38
  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 ";
39
  protected final String TEXT_19 = " getDirectEditCommand(";
40
  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 ";
41
  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 ";
42
  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 ";
43
  protected final String TEXT_23 = ".INSTANCE;" + NL + "\t\t\t\t\t\t} catch (";
44
  protected final String TEXT_24 = " e) {" + NL + "\t\t\t\t\t\t\treturn ";
45
  protected final String TEXT_25 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}";
46
  protected final String TEXT_26 = NL + "\t\t\t\t\t\tif (parseResult.length != 1) {" + NL + "\t\t\t\t\t\t\treturn ";
47
  protected final String TEXT_27 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new ";
48
  protected final String TEXT_28 = "() {" + NL + "\t\t\t\t\t\t\tprivate ";
49
  protected final String TEXT_29 = " element = ";
50
  protected final String TEXT_30 = ";" + NL + "\t\t\t\t\t\t\tprivate ";
51
  protected final String TEXT_31 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate ";
52
  protected final String TEXT_32 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t";
53
  protected final String TEXT_33 = " domainModelEditDomain = ";
54
  protected final String TEXT_34 = ".getEditingDomainFor(";
55
  protected final String TEXT_35 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t";
56
  protected final String TEXT_36 = " feature = (";
57
  protected final String TEXT_37 = ") ";
58
  protected final String TEXT_38 = ".eINSTANCE.get";
59
  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 = ";
60
  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 ";
61
  protected final String TEXT_41 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}";
62
  protected final String TEXT_42 = NL + "\t\t\t\t\t\t\t\t";
63
  protected final String TEXT_43 = " result = new ";
64
  protected final String TEXT_44 = "();" + NL + "\t\t\t\t\t\t\t\t";
65
  protected final String TEXT_45 = " values = new ";
66
  protected final String TEXT_46 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get";
67
  protected final String TEXT_47 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append(";
68
  protected final String TEXT_48 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append(";
69
  protected final String TEXT_49 = ".create(domainModelEditDomain, element, feature, valueToSet));" + NL + "\t\t\t\t\t\t\t\treturn result;";
70
  protected final String TEXT_50 = NL + "\t\t\t\t\t\t\t\treturn ";
71
  protected final String TEXT_51 = ".create(domainModelEditDomain, element, feature, valueToSet);";
72
  protected final String TEXT_52 = NL + "\t\t\t\t\t\t\t}";
73
  protected final String TEXT_53 = NL + "\t\t\t\t\t\tif (parseResult.length != ";
74
  protected final String TEXT_54 = ") {" + NL + "\t\t\t\t\t\t\treturn ";
75
  protected final String TEXT_55 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new ";
76
  protected final String TEXT_56 = "() {" + NL + "\t\t\t\t\t\t\tprivate ";
77
  protected final String TEXT_57 = " element = ";
78
  protected final String TEXT_58 = ";" + NL + "\t\t\t\t\t\t\tprivate ";
79
  protected final String TEXT_59 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate ";
80
  protected final String TEXT_60 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t";
81
  protected final String TEXT_61 = " domainModelEditDomain = ";
82
  protected final String TEXT_62 = ".getEditingDomainFor(";
83
  protected final String TEXT_63 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t";
84
  protected final String TEXT_64 = " result = new ";
85
  protected final String TEXT_65 = "();" + NL + "\t\t\t\t\t\t\t\tObject valueToSet;";
86
  protected final String TEXT_66 = NL + "\t\t\t\t\t\t\t\t";
87
  protected final String TEXT_67 = " ";
88
  protected final String TEXT_68 = "feature = (";
89
  protected final String TEXT_69 = ") ";
90
  protected final String TEXT_70 = ".eINSTANCE.get";
91
  protected final String TEXT_71 = "();" + NL + "\t\t\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\t\t\tvalueToSet = ";
92
  protected final String TEXT_72 = ".parseValue(feature, parseResult[";
93
  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 ";
94
  protected final String TEXT_74 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}";
95
  protected final String TEXT_75 = NL + "\t\t\t\t\t\t\t\t";
96
  protected final String TEXT_76 = " ";
97
  protected final String TEXT_77 = "values = new ";
98
  protected final String TEXT_78 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get";
99
  protected final String TEXT_79 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append(";
100
  protected final String TEXT_80 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append(";
101
  protected final String TEXT_81 = ".create(domainModelEditDomain, element, feature, valueToSet));";
102
  protected final String TEXT_82 = NL + "\t\t\t\t\t\t\t\tresult.append(";
103
  protected final String TEXT_83 = ".create(domainModelEditDomain, element, feature, valueToSet));";
104
  protected final String TEXT_84 = NL + "\t\t\t\t\t\t\t\treturn result;" + NL + "\t\t\t\t\t\t\t}";
105
  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});";
106
  protected final String TEXT_86 = NL;
107
  protected final String TEXT_87 = "\t\tinstallEditPolicy(";
108
  protected final String TEXT_88 = ".COMPONENT_ROLE, new ";
109
  protected final String TEXT_89 = "() {" + NL + "\t\t\tprotected ";
110
  protected final String TEXT_90 = " createDeleteCommand(";
111
  protected final String TEXT_91 = " deleteRequest) {" + NL + "\t\t\t\treturn new ";
112
  protected final String TEXT_92 = "() {";
113
  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";
114
  protected final String TEXT_94 = " result = new ";
115
  protected final String TEXT_95 = "();";
116
  protected final String TEXT_96 = NL + "\t\t\t\t\t\tresult.append(";
117
  protected final String TEXT_97 = ".create(" + NL + "\t\t\t\t\t\t\t";
118
  protected final String TEXT_98 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
119
  protected final String TEXT_99 = ".eINSTANCE.get";
120
  protected final String TEXT_100 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement()));";
121
  protected final String TEXT_101 = NL + "\t\t\t\t\t\tresult.append(";
122
  protected final String TEXT_102 = ".create(" + NL + "\t\t\t\t\t\t\t";
123
  protected final String TEXT_103 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
124
  protected final String TEXT_104 = ".eINSTANCE.get";
125
  protected final String TEXT_105 = "()," + NL + "\t\t\t\t\t\t\t";
126
  protected final String TEXT_106 = ".UNSET_VALUE));";
127
  protected final String TEXT_107 = NL + "\t\t\t\t\t\tresult.append(";
128
  protected final String TEXT_108 = ".create(" + NL + "\t\t\t\t\t\t\t";
129
  protected final String TEXT_109 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
130
  protected final String TEXT_110 = ".eINSTANCE.get";
131
  protected final String TEXT_111 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement()));";
132
  protected final String TEXT_112 = NL + "\t\t\t\t\t\tresult.append(";
133
  protected final String TEXT_113 = ".create(" + NL + "\t\t\t\t\t\t\t";
134
  protected final String TEXT_114 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
135
  protected final String TEXT_115 = ".eINSTANCE.get";
136
  protected final String TEXT_116 = "()," + NL + "\t\t\t\t\t\t\t";
137
  protected final String TEXT_117 = ".UNSET_VALUE));";
138
  protected final String TEXT_118 = NL + "\t\t\t\t\t\treturn result;" + NL + "\t\t\t\t\t}";
139
  protected final String TEXT_119 = NL + "\t\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command domainModelRemoveCommand = ";
140
  protected final String TEXT_120 = ".create(" + NL + "\t\t\t\t\t\t\t";
141
  protected final String TEXT_121 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
142
  protected final String TEXT_122 = ".eINSTANCE.get";
143
  protected final String TEXT_123 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement());";
144
  protected final String TEXT_124 = NL + "\t\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command domainModelRemoveCommand = ";
145
  protected final String TEXT_125 = ".create(" + NL + "\t\t\t\t\t\t\t";
146
  protected final String TEXT_126 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
147
  protected final String TEXT_127 = ".eINSTANCE.get";
148
  protected final String TEXT_128 = "()," + NL + "\t\t\t\t\t\t\t";
149
  protected final String TEXT_129 = ".UNSET_VALUE);";
150
  protected final String TEXT_130 = NL + "\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command viewRemoveCommand = ";
151
  protected final String TEXT_131 = ".create(" + NL + "\t\t\t\t\t\t";
152
  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});";
153
  protected final String TEXT_133 = NL + "\t}" + NL;
154
  protected final String TEXT_134 = NL;
155
  protected final String TEXT_135 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void performRequest(";
156
  protected final String TEXT_136 = " req) {" + NL + "\t\tif (";
157
  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 ";
158
  protected final String TEXT_138 = " getManager() {" + NL + "\t\tif (manager == null) {" + NL + "\t\t\tmanager = new ";
159
  protected final String TEXT_139 = "(this, ";
160
  protected final String TEXT_140 = ".class, new ";
161
  protected final String TEXT_141 = "() {" + NL + "\t\t\t\tpublic void relocate(";
162
  protected final String TEXT_142 = " celleditor) {" + NL + "\t\t\t\t\t";
163
  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}";
164
  protected final String TEXT_144 = NL;
165
  protected final String TEXT_145 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String VIEW_PATTERN = \"";
166
  protected final String TEXT_146 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String EDIT_PATTERN = \"";
167
  protected final String TEXT_147 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String getLabelText() {" + NL + "\t\t";
168
  protected final String TEXT_148 = " element = ";
169
  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";
170
  protected final String TEXT_150 = " element = ";
171
  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(";
172
  protected final String TEXT_152 = " element, String pattern) {";
173
  protected final String TEXT_153 = NL + "\t\tif (element.get";
174
  protected final String TEXT_154 = "() == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}";
175
  protected final String TEXT_155 = NL + "\t\treturn ";
176
  protected final String TEXT_156 = ".format(pattern, new Object[] {";
177
  protected final String TEXT_157 = NL + "\t\t\t";
178
  protected final String TEXT_158 = NL + "\t\t});";
179
  protected final String TEXT_159 = NL + "\t\treturn ";
180
  protected final String TEXT_160 = ".format(pattern, new Object[] {";
181
  protected final String TEXT_161 = NL + "\t\t";
182
  protected final String TEXT_162 = ",";
183
  protected final String TEXT_163 = NL + "\t\t});";
184
  protected final String TEXT_164 = NL + "\t\t//XXX: unexpected model facet." + NL + "\t\treturn defaultText;";
185
  protected final String TEXT_165 = NL + "\t}";
186
  protected final String TEXT_166 = NL;
187
  protected final String TEXT_167 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFont() {" + NL + "\t\t";
188
  protected final String TEXT_168 = " style =" + NL + "\t\t\t(";
189
  protected final String TEXT_169 = ") ";
190
  protected final String TEXT_170 = ".getStyle(" + NL + "\t\t\t\t";
191
  protected final String TEXT_171 = ".eINSTANCE.getFontStyle());" + NL + "\t\t";
192
  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 = ";
193
  protected final String TEXT_173 = ".NORMAL;" + NL + "\t\t\tif (style.isBold()) {" + NL + "\t\t\t\tfontStyle |= ";
194
  protected final String TEXT_174 = ".BOLD;" + NL + "\t\t\t}" + NL + "\t\t\tif (style.isItalic()) {" + NL + "\t\t\t\tfontStyle |= ";
195
  protected final String TEXT_175 = ".ITALIC;" + NL + "\t\t\t}" + NL + "\t\t\t";
196
  protected final String TEXT_176 = " currentFont = getFigure().getFont();" + NL + "\t\t\tif (currentFont != null) {" + NL + "\t\t\t\t";
197
  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 ";
198
  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 ";
199
  protected final String TEXT_179 = " createdFont;";
200
  protected final String TEXT_180 = NL;
201
  protected final String TEXT_181 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFontColor() {" + NL + "\t\t";
202
  protected final String TEXT_182 = " style = (";
203
  protected final String TEXT_183 = ")  ";
204
  protected final String TEXT_184 = ".getStyle(";
205
  protected final String TEXT_185 = ".eINSTANCE.getFontStyle());" + NL + "\t\t";
206
  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";
207
  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 ";
208
  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 ";
209
  protected final String TEXT_189 = " createdFontColor;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
210
  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) {";
211
  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;
212
  protected final String TEXT_192 = NL;
213
  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 ";
214
  protected final String TEXT_194 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void notifyChanged(";
215
  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((";
216
  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;
217
  protected final String TEXT_197 = NL;
218
  protected final String TEXT_198 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
219
  protected final String TEXT_199 = " structuralFeatures2Refresher;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Refresher getRefresher(";
220
  protected final String TEXT_200 = " feature, ";
221
  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();";
222
  protected final String TEXT_202 = NL;
223
  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(";
224
  protected final String TEXT_204 = ".eINSTANCE.getView_PersistedChildren(), childrenRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
225
  protected final String TEXT_205 = ".eINSTANCE.getView_TransientChildren(), childrenRefresher);";
226
  protected final String TEXT_206 = NL;
227
  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(";
228
  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};";
229
  protected final String TEXT_209 = NL + "\t\t\tstructuralFeatures2Refresher.put(";
230
  protected final String TEXT_210 = ".eINSTANCE.get";
231
  protected final String TEXT_211 = "(), labelRefresher);";
232
  protected final String TEXT_212 = NL + "\t\t\tstructuralFeatures2Refresher.put(";
233
  protected final String TEXT_213 = ".eINSTANCE.get";
234
  protected final String TEXT_214 = "(), labelRefresher);";
235
  protected final String TEXT_215 = NL;
236
  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(";
237
  protected final String TEXT_217 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
238
  protected final String TEXT_218 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
239
  protected final String TEXT_219 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
240
  protected final String TEXT_220 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);" + NL + "\t\t";
241
  protected final String TEXT_221 = NL;
242
  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(";
243
  protected final String TEXT_223 = ".eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);" + NL + "\t}" + NL;
244
  protected final String TEXT_224 = NL;
245
  protected final String TEXT_225 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
246
  protected final String TEXT_226 = " createFigure() {" + NL + "\t\t";
247
  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 ";
248
  protected final String TEXT_228 = " createLabel() {";
249
  protected final String TEXT_229 = NL + "\t\treturn new ";
250
  protected final String TEXT_230 = "();";
251
  protected final String TEXT_231 = NL + "\t\treturn ";
252
  protected final String TEXT_232 = ";";
253
  protected final String TEXT_233 = NL + "\t\treturn new ";
254
  protected final String TEXT_234 = "();";
255
  protected final String TEXT_235 = NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
256
  protected final String TEXT_236 = " getLabel() {" + NL + "\t\treturn (";
257
  protected final String TEXT_237 = ") getFigure();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void setLabel(";
258
  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;
259
  protected final String TEXT_239 = NL;
260
  protected final String TEXT_240 = NL;
261
  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}";
262
  protected final String TEXT_242 = NL + "}";
263
  protected final String TEXT_243 = NL;
264
265
  public String generate(Object argument)
266
  {
267
    final StringBuffer stringBuffer = new StringBuffer();
268
    
269
GenNode genChildNode = (GenNode) ((Object[]) argument)[0];
270
GenNodeLabel genLabel = (GenNodeLabel) genChildNode.getLabels().get(0);
271
GenNode genHost = genChildNode;
272
GenNode genNode = genChildNode;	/*var used by componentEditPolicy.javajetinc*/
273
GenClass underlyingMetaClass = genHost.getDomainMetaClass();
274
GenDiagram genDiagram = genChildNode.getDiagram();
275
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
276
LabelModelFacet labelModelFacet = genLabel.getModelFacet();
277
278
    stringBuffer.append(TEXT_1);
279
    
280
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
281
if (copyrightText != null && copyrightText.trim().length() > 0) {
282
283
    stringBuffer.append(TEXT_2);
284
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
285
    stringBuffer.append(TEXT_3);
286
    }
287
    stringBuffer.append(TEXT_4);
288
    importManager.emitPackageStatement(stringBuffer);
289
290
importManager.addImport("org.eclipse.gef.EditPolicy");
291
importManager.addImport("org.eclipse.gef.Request");
292
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
293
importManager.addImport("org.eclipse.gmf.runtime.notation.NotationPackage");
294
importManager.addImport("java.util.List");
295
296
importManager.markImportLocation(stringBuffer);
297
298
    stringBuffer.append(TEXT_5);
299
    stringBuffer.append(genChildNode.getEditPartClassName());
300
    stringBuffer.append(TEXT_6);
301
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart"));
302
    stringBuffer.append(TEXT_7);
303
    stringBuffer.append(TEXT_8);
304
    stringBuffer.append(TEXT_9);
305
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager"));
306
    stringBuffer.append(TEXT_10);
307
    stringBuffer.append(genChildNode.getEditPartClassName());
308
    stringBuffer.append(TEXT_11);
309
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
310
    stringBuffer.append(TEXT_12);
311
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
312
    stringBuffer.append(TEXT_13);
313
    
314
	String resolvedSemanticElement = "(" + importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName()) + ") getDiagramNode().getElement()";
315
	final String primaryView = "getDiagramNode()";
316
317
    stringBuffer.append(TEXT_14);
318
    stringBuffer.append(TEXT_15);
319
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
320
    stringBuffer.append(TEXT_16);
321
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.DirectEditPolicy"));
322
    stringBuffer.append(TEXT_17);
323
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest"));
324
    stringBuffer.append(TEXT_18);
325
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
326
    stringBuffer.append(TEXT_19);
327
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest"));
328
    stringBuffer.append(TEXT_20);
329
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
330
    stringBuffer.append(TEXT_21);
331
    stringBuffer.append(importManager.getImportedName("java.text.MessageFormat"));
332
    stringBuffer.append(TEXT_22);
333
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
334
    stringBuffer.append(TEXT_23);
335
    stringBuffer.append(importManager.getImportedName("java.text.ParseException"));
336
    stringBuffer.append(TEXT_24);
337
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
338
    stringBuffer.append(TEXT_25);
339
    
340
if (labelModelFacet instanceof FeatureLabelModelFacet && !genLabel.isReadOnly()) {
341
	GenFeature featureToSet = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
342
	EStructuralFeature ecoreFeature = featureToSet.getEcoreFeature();
343
344
    stringBuffer.append(TEXT_26);
345
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
346
    stringBuffer.append(TEXT_27);
347
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
348
    stringBuffer.append(TEXT_28);
349
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
350
    stringBuffer.append(TEXT_29);
351
    stringBuffer.append(resolvedSemanticElement);
352
    stringBuffer.append(TEXT_30);
353
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
354
    stringBuffer.append(TEXT_31);
355
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
356
    stringBuffer.append(TEXT_32);
357
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain"));
358
    stringBuffer.append(TEXT_33);
359
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
360
    stringBuffer.append(TEXT_34);
361
    stringBuffer.append(primaryView);
362
    stringBuffer.append(TEXT_35);
363
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
364
    stringBuffer.append(TEXT_36);
365
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
366
    stringBuffer.append(TEXT_37);
367
    stringBuffer.append(importManager.getImportedName(featureToSet.getGenPackage().getQualifiedPackageInterfaceName()));
368
    stringBuffer.append(TEXT_38);
369
    stringBuffer.append(featureToSet.getFeatureAccessorName());
370
    stringBuffer.append(TEXT_39);
371
    stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName()));
372
    stringBuffer.append(TEXT_40);
373
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand"));
374
    stringBuffer.append(TEXT_41);
375
    
376
	if (ecoreFeature.isMany()) {
377
378
    stringBuffer.append(TEXT_42);
379
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
380
    stringBuffer.append(TEXT_43);
381
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
382
    stringBuffer.append(TEXT_44);
383
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList"));
384
    stringBuffer.append(TEXT_45);
385
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList"));
386
    stringBuffer.append(TEXT_46);
387
    stringBuffer.append(featureToSet.getAccessorName());
388
    stringBuffer.append(TEXT_47);
389
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
390
    stringBuffer.append(TEXT_48);
391
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand"));
392
    stringBuffer.append(TEXT_49);
393
    
394
	} else {
395
396
    stringBuffer.append(TEXT_50);
397
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
398
    stringBuffer.append(TEXT_51);
399
    
400
	}
401
402
    stringBuffer.append(TEXT_52);
403
    
404
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
405
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
406
	List metaFeatures = compositeFeatureLabelModelFacet.getMetaFeatures();
407
408
    stringBuffer.append(TEXT_53);
409
    stringBuffer.append(metaFeatures.size());
410
    stringBuffer.append(TEXT_54);
411
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
412
    stringBuffer.append(TEXT_55);
413
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
414
    stringBuffer.append(TEXT_56);
415
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
416
    stringBuffer.append(TEXT_57);
417
    stringBuffer.append(resolvedSemanticElement);
418
    stringBuffer.append(TEXT_58);
419
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
420
    stringBuffer.append(TEXT_59);
421
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
422
    stringBuffer.append(TEXT_60);
423
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain"));
424
    stringBuffer.append(TEXT_61);
425
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
426
    stringBuffer.append(TEXT_62);
427
    stringBuffer.append(primaryView);
428
    stringBuffer.append(TEXT_63);
429
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
430
    stringBuffer.append(TEXT_64);
431
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
432
    stringBuffer.append(TEXT_65);
433
    
434
	boolean haveDeclaredValues = false;
435
	for(int i = 0; i < metaFeatures.size(); i++) {
436
		GenFeature nextFeatureToSet = (GenFeature) metaFeatures.get(i);
437
		EStructuralFeature nextEcoreFeature = nextFeatureToSet.getEcoreFeature();
438
439
    stringBuffer.append(TEXT_66);
440
    if (i == 0) {
441
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
442
    stringBuffer.append(TEXT_67);
443
    }
444
    stringBuffer.append(TEXT_68);
445
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
446
    stringBuffer.append(TEXT_69);
447
    stringBuffer.append(importManager.getImportedName(nextFeatureToSet.getGenPackage().getQualifiedPackageInterfaceName()));
448
    stringBuffer.append(TEXT_70);
449
    stringBuffer.append(nextFeatureToSet.getFeatureAccessorName());
450
    stringBuffer.append(TEXT_71);
451
    stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName()));
452
    stringBuffer.append(TEXT_72);
453
    stringBuffer.append(i);
454
    stringBuffer.append(TEXT_73);
455
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand"));
456
    stringBuffer.append(TEXT_74);
457
    
458
		if (nextEcoreFeature.isMany()) {
459
460
    stringBuffer.append(TEXT_75);
461
    if (!haveDeclaredValues) { haveDeclaredValues = true;
462
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList"));
463
    stringBuffer.append(TEXT_76);
464
    }
465
    stringBuffer.append(TEXT_77);
466
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList"));
467
    stringBuffer.append(TEXT_78);
468
    stringBuffer.append(nextFeatureToSet.getAccessorName());
469
    stringBuffer.append(TEXT_79);
470
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
471
    stringBuffer.append(TEXT_80);
472
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand"));
473
    stringBuffer.append(TEXT_81);
474
    
475
		} else {
476
477
    stringBuffer.append(TEXT_82);
478
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
479
    stringBuffer.append(TEXT_83);
480
    
481
		}
482
483
    
484
	}
485
486
    stringBuffer.append(TEXT_84);
487
    
488
}
489
490
    stringBuffer.append(TEXT_85);
491
    stringBuffer.append(TEXT_86);
492
    stringBuffer.append(TEXT_87);
493
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
494
    stringBuffer.append(TEXT_88);
495
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ComponentEditPolicy"));
496
    stringBuffer.append(TEXT_89);
497
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
498
    stringBuffer.append(TEXT_90);
499
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.GroupRequest"));
500
    stringBuffer.append(TEXT_91);
501
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
502
    stringBuffer.append(TEXT_92);
503
    
504
{
505
TypeModelFacet facet = genNode.getModelFacet();
506
GenFeature childFeature = facet.getChildMetaFeature();
507
GenFeature containmentFeature = facet.getContainmentMetaFeature();
508
if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) {
509
510
    stringBuffer.append(TEXT_93);
511
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
512
    stringBuffer.append(TEXT_94);
513
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
514
    stringBuffer.append(TEXT_95);
515
    
516
	if (containmentFeature.getEcoreFeature().isMany()) {
517
518
    stringBuffer.append(TEXT_96);
519
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
520
    stringBuffer.append(TEXT_97);
521
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
522
    stringBuffer.append(TEXT_98);
523
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
524
    stringBuffer.append(TEXT_99);
525
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
526
    stringBuffer.append(TEXT_100);
527
    
528
	} else {
529
530
    stringBuffer.append(TEXT_101);
531
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
532
    stringBuffer.append(TEXT_102);
533
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
534
    stringBuffer.append(TEXT_103);
535
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
536
    stringBuffer.append(TEXT_104);
537
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
538
    stringBuffer.append(TEXT_105);
539
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
540
    stringBuffer.append(TEXT_106);
541
    
542
	}
543
544
    
545
	if (childFeature.getEcoreFeature().isMany()) {
546
547
    stringBuffer.append(TEXT_107);
548
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
549
    stringBuffer.append(TEXT_108);
550
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
551
    stringBuffer.append(TEXT_109);
552
    stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName()));
553
    stringBuffer.append(TEXT_110);
554
    stringBuffer.append(childFeature.getFeatureAccessorName());
555
    stringBuffer.append(TEXT_111);
556
    
557
	} else {
558
559
    stringBuffer.append(TEXT_112);
560
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
561
    stringBuffer.append(TEXT_113);
562
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
563
    stringBuffer.append(TEXT_114);
564
    stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName()));
565
    stringBuffer.append(TEXT_115);
566
    stringBuffer.append(childFeature.getFeatureAccessorName());
567
    stringBuffer.append(TEXT_116);
568
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
569
    stringBuffer.append(TEXT_117);
570
    
571
	}
572
573
    stringBuffer.append(TEXT_118);
574
    
575
} else {
576
	if (containmentFeature.getEcoreFeature().isMany()) {
577
578
    stringBuffer.append(TEXT_119);
579
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
580
    stringBuffer.append(TEXT_120);
581
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
582
    stringBuffer.append(TEXT_121);
583
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
584
    stringBuffer.append(TEXT_122);
585
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
586
    stringBuffer.append(TEXT_123);
587
    
588
	} else {
589
590
    stringBuffer.append(TEXT_124);
591
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
592
    stringBuffer.append(TEXT_125);
593
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
594
    stringBuffer.append(TEXT_126);
595
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
596
    stringBuffer.append(TEXT_127);
597
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
598
    stringBuffer.append(TEXT_128);
599
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
600
    stringBuffer.append(TEXT_129);
601
    
602
	}
603
}
604
605
    stringBuffer.append(TEXT_130);
606
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
607
    stringBuffer.append(TEXT_131);
608
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
609
    stringBuffer.append(TEXT_132);
610
    
611
}	/*restrict local vars used in component edit policy*/
612
613
    stringBuffer.append(TEXT_133);
614
    stringBuffer.append(TEXT_134);
615
    stringBuffer.append(TEXT_135);
616
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request"));
617
    stringBuffer.append(TEXT_136);
618
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants"));
619
    stringBuffer.append(TEXT_137);
620
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager"));
621
    stringBuffer.append(TEXT_138);
622
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager"));
623
    stringBuffer.append(TEXT_139);
624
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.TextCellEditor"));
625
    stringBuffer.append(TEXT_140);
626
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.CellEditorLocator"));
627
    stringBuffer.append(TEXT_141);
628
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.CellEditor"));
629
    stringBuffer.append(TEXT_142);
630
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle"));
631
    stringBuffer.append(TEXT_143);
632
    stringBuffer.append(TEXT_144);
633
    
634
/*genFeature.getObjectType() throws NPE on primitive types. This is a workaround. */
635
HashMap primitiveTypeToWrapperClassName = new HashMap();
636
primitiveTypeToWrapperClassName.put(Boolean.TYPE, "Boolean");
637
primitiveTypeToWrapperClassName.put(Byte.TYPE, "Byte");
638
primitiveTypeToWrapperClassName.put(Character.TYPE, "Character");
639
primitiveTypeToWrapperClassName.put(Double.TYPE, "Double");
640
primitiveTypeToWrapperClassName.put(Float.TYPE, "Float");
641
primitiveTypeToWrapperClassName.put(Integer.TYPE, "Integer");
642
primitiveTypeToWrapperClassName.put(Long.TYPE, "Long");
643
primitiveTypeToWrapperClassName.put(Short.TYPE, "Short");
644
String viewPattern = null;
645
String editPattern = null;
646
if (labelModelFacet instanceof FeatureLabelModelFacet) {
647
	FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet;
648
	viewPattern = featureLabelModelFacet.getViewPattern();
649
	if (viewPattern == null || viewPattern.length() == 0) {
650
		viewPattern = "{0}";
651
	}
652
	editPattern = featureLabelModelFacet.getEditPattern();
653
	if (editPattern == null || editPattern.length() == 0) {
654
		editPattern = "{0}";
655
	}
656
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
657
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
658
	viewPattern = compositeFeatureLabelModelFacet.getViewPattern();
659
	if (viewPattern == null || viewPattern.length() == 0) {
660
		StringBuffer patternBuffer = new StringBuffer();
661
		for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) {
662
			patternBuffer.append("{").append(i).append("} ");
663
		}
664
		viewPattern = patternBuffer.toString().trim();
665
	}
666
	editPattern = compositeFeatureLabelModelFacet.getEditPattern();
667
	if (editPattern == null || editPattern.length() == 0) {
668
		StringBuffer patternBuffer = new StringBuffer();
669
		for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) {
670
			patternBuffer.append("{").append(i).append("} ");
671
		}
672
		editPattern = patternBuffer.toString().trim();
673
	}
674
}
675
676
    stringBuffer.append(TEXT_145);
677
    stringBuffer.append(viewPattern);
678
    stringBuffer.append(TEXT_146);
679
    stringBuffer.append(editPattern);
680
    stringBuffer.append(TEXT_147);
681
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
682
    stringBuffer.append(TEXT_148);
683
    stringBuffer.append(resolvedSemanticElement);
684
    stringBuffer.append(TEXT_149);
685
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
686
    stringBuffer.append(TEXT_150);
687
    stringBuffer.append(resolvedSemanticElement);
688
    stringBuffer.append(TEXT_151);
689
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
690
    stringBuffer.append(TEXT_152);
691
    
692
if (labelModelFacet instanceof FeatureLabelModelFacet) {
693
	FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet;
694
	GenFeature feature = featureLabelModelFacet.getMetaFeature();
695
	if (!feature.isPrimitiveType()) {
696
697
    stringBuffer.append(TEXT_153);
698
    stringBuffer.append(feature.getCapName());
699
    stringBuffer.append(TEXT_154);
700
    
701
	}
702
703
    stringBuffer.append(TEXT_155);
704
    stringBuffer.append(importManager.getImportedName("java.text.MessageFormat"));
705
    stringBuffer.append(TEXT_156);
706
    
707
		String value = "element.get" + feature.getCapName() + "()";	/*XXX: getTypedKey is not a part of public API!*/
708
		if (feature.isPrimitiveType()) {
709
			value = "new " + primitiveTypeToWrapperClassName.get(feature.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")";
710
		}
711
712
    stringBuffer.append(TEXT_157);
713
    stringBuffer.append(value);
714
    stringBuffer.append(TEXT_158);
715
    
716
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
717
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
718
719
    stringBuffer.append(TEXT_159);
720
    stringBuffer.append(importManager.getImportedName("java.text.MessageFormat"));
721
    stringBuffer.append(TEXT_160);
722
    
723
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
724
		GenFeature next = (GenFeature) it.next();
725
		String value = "element.get" + next.getCapName() + "()";	/*XXX: getTypedKey is not a part of public API!*/
726
		if (next.isPrimitiveType()) {
727
			value = "new " + primitiveTypeToWrapperClassName.get(next.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")";
728
		}
729
730
    stringBuffer.append(TEXT_161);
731
    stringBuffer.append(value);
732
    if (it.hasNext()) {
733
    stringBuffer.append(TEXT_162);
734
    }
735
    
736
	}
737
738
    stringBuffer.append(TEXT_163);
739
    
740
} else {
741
742
    stringBuffer.append(TEXT_164);
743
    
744
}
745
746
    stringBuffer.append(TEXT_165);
747
    stringBuffer.append(TEXT_166);
748
    stringBuffer.append(TEXT_167);
749
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
750
    stringBuffer.append(TEXT_168);
751
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
752
    stringBuffer.append(TEXT_169);
753
    stringBuffer.append(primaryView);
754
    stringBuffer.append(TEXT_170);
755
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
756
    stringBuffer.append(TEXT_171);
757
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
758
    stringBuffer.append(TEXT_172);
759
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
760
    stringBuffer.append(TEXT_173);
761
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
762
    stringBuffer.append(TEXT_174);
763
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
764
    stringBuffer.append(TEXT_175);
765
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
766
    stringBuffer.append(TEXT_176);
767
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.FontData"));
768
    stringBuffer.append(TEXT_177);
769
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
770
    stringBuffer.append(TEXT_178);
771
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
772
    stringBuffer.append(TEXT_179);
773
    stringBuffer.append(TEXT_180);
774
    stringBuffer.append(TEXT_181);
775
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
776
    stringBuffer.append(TEXT_182);
777
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
778
    stringBuffer.append(TEXT_183);
779
    stringBuffer.append(primaryView);
780
    stringBuffer.append(TEXT_184);
781
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
782
    stringBuffer.append(TEXT_185);
783
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
784
    stringBuffer.append(TEXT_186);
785
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
786
    stringBuffer.append(TEXT_187);
787
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
788
    stringBuffer.append(TEXT_188);
789
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
790
    stringBuffer.append(TEXT_189);
791
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Image"));
792
    stringBuffer.append(TEXT_190);
793
    /*@ include file="adapters/propertySource.javajetinc"*/
794
    stringBuffer.append(TEXT_191);
795
    stringBuffer.append(TEXT_192);
796
    stringBuffer.append(TEXT_193);
797
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.impl.AdapterImpl"));
798
    stringBuffer.append(TEXT_194);
799
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification"));
800
    stringBuffer.append(TEXT_195);
801
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
802
    stringBuffer.append(TEXT_196);
803
    stringBuffer.append(TEXT_197);
804
    stringBuffer.append(TEXT_198);
805
    stringBuffer.append(importManager.getImportedName("java.util.HashMap"));
806
    stringBuffer.append(TEXT_199);
807
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
808
    stringBuffer.append(TEXT_200);
809
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification"));
810
    stringBuffer.append(TEXT_201);
811
    stringBuffer.append(TEXT_202);
812
    stringBuffer.append(TEXT_203);
813
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
814
    stringBuffer.append(TEXT_204);
815
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
816
    stringBuffer.append(TEXT_205);
817
    stringBuffer.append(TEXT_206);
818
    stringBuffer.append(TEXT_207);
819
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
820
    stringBuffer.append(TEXT_208);
821
    
822
if (labelModelFacet instanceof FeatureLabelModelFacet) {
823
	GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
824
825
    stringBuffer.append(TEXT_209);
826
    stringBuffer.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName()));
827
    stringBuffer.append(TEXT_210);
828
    stringBuffer.append(feature.getFeatureAccessorName());
829
    stringBuffer.append(TEXT_211);
830
    
831
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
832
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
833
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
834
		GenFeature next = (GenFeature) it.next();
835
836
    stringBuffer.append(TEXT_212);
837
    stringBuffer.append(importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName()));
838
    stringBuffer.append(TEXT_213);
839
    stringBuffer.append(next.getFeatureAccessorName());
840
    stringBuffer.append(TEXT_214);
841
    
842
	}
843
}
844
845
    stringBuffer.append(TEXT_215);
846
    stringBuffer.append(TEXT_216);
847
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
848
    stringBuffer.append(TEXT_217);
849
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
850
    stringBuffer.append(TEXT_218);
851
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
852
    stringBuffer.append(TEXT_219);
853
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
854
    stringBuffer.append(TEXT_220);
855
    stringBuffer.append(TEXT_221);
856
    stringBuffer.append(TEXT_222);
857
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
858
    stringBuffer.append(TEXT_223);
859
    stringBuffer.append(TEXT_224);
860
    stringBuffer.append(TEXT_225);
861
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
862
    stringBuffer.append(TEXT_226);
863
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
864
    stringBuffer.append(TEXT_227);
865
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
866
    stringBuffer.append(TEXT_228);
867
    
868
String figureQualifiedClassName = null;
869
Viewmap viewmap = genLabel.getViewmap();
870
if (viewmap instanceof FigureViewmap) {
871
	figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName();
872
	if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) {
873
		figureQualifiedClassName = "org.eclipse.draw2d.Label";
874
	}
875
876
    stringBuffer.append(TEXT_229);
877
    stringBuffer.append(importManager.getImportedName(figureQualifiedClassName));
878
    stringBuffer.append(TEXT_230);
879
    } // instanceof FigureViewmap
880
 else if (viewmap instanceof SnippetViewmap) {
881
    stringBuffer.append(TEXT_231);
882
    stringBuffer.append(((SnippetViewmap) viewmap).getBody());
883
    stringBuffer.append(TEXT_232);
884
    } // instanceof SnippetViewmap; FIXME : obtain figure class name to generate getter
885
 else if (viewmap instanceof InnerClassViewmap) {
886
 	figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName();
887
888
    stringBuffer.append(TEXT_233);
889
    stringBuffer.append(figureQualifiedClassName);
890
    stringBuffer.append(TEXT_234);
891
    }
892
    stringBuffer.append(TEXT_235);
893
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
894
    stringBuffer.append(TEXT_236);
895
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
896
    stringBuffer.append(TEXT_237);
897
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
898
    stringBuffer.append(TEXT_238);
899
    
900
if (genLabel.getViewmap() instanceof InnerClassViewmap) {
901
	String classBody = ((InnerClassViewmap) genLabel.getViewmap()).getClassBody();
902
903
    stringBuffer.append(TEXT_239);
904
    stringBuffer.append(classBody);
905
    stringBuffer.append(TEXT_240);
906
    
907
if (classBody.indexOf("DPtoLP") != -1) {
908
909
    stringBuffer.append(TEXT_241);
910
    
911
}
912
913
    
914
}
915
916
    stringBuffer.append(TEXT_242);
917
    importManager.emitSortedImports();
918
    stringBuffer.append(TEXT_243);
919
    return stringBuffer.toString();
920
  }
921
}
(-)templates/editor/PaletteFactory.javajet (+352 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="PaletteFactoryGenerator"
2
    imports="java.util.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.codegen.ecore.genmodel.*"%>
3
<%
4
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; 
5
final Palette palette = genDiagram.getPalette();
6
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
8
importManager.emitPackageStatement(stringBuffer);
9
10
importManager.addImport("org.eclipse.gef.Tool");
11
importManager.addImport("org.eclipse.gef.Request");
12
importManager.addImport("org.eclipse.gef.requests.CreationFactory");
13
importManager.addImport("org.eclipse.gef.tools.CreationTool");
14
importManager.addImport("org.eclipse.gef.tools.ConnectionCreationTool");
15
importManager.addImport("org.eclipse.gef.palette.PaletteContainer");
16
importManager.addImport("org.eclipse.gef.palette.PaletteDrawer");
17
importManager.addImport("org.eclipse.gef.palette.PaletteGroup");
18
importManager.addImport("org.eclipse.gef.palette.PaletteRoot");
19
importManager.addImport("org.eclipse.gef.palette.ConnectionCreationToolEntry");
20
importManager.addImport("org.eclipse.gef.palette.MarqueeToolEntry");
21
importManager.addImport("org.eclipse.gef.palette.SelectionToolEntry");
22
importManager.addImport("org.eclipse.gef.palette.ToolEntry");
23
importManager.addImport("org.eclipse.jface.resource.ImageDescriptor");
24
importManager.addImport("org.eclipse.emf.edit.provider.IItemLabelProvider");
25
importManager.addImport("org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry");
26
importManager.addImport("org.eclipse.emf.common.notify.AdapterFactory");
27
28
importManager.markImportLocation(stringBuffer);
29
%>
30
31
/**
32
 * @generated
33
 */
34
public class <%=palette.getFactoryClassName()%> {
35
	/**
36
	 * @generated
37
	 */
38
	private final AdapterFactory domainAdapterFactory;
39
40
	/**
41
	 * @generated
42
	 */
43
	public <%=palette.getFactoryClassName()%>(AdapterFactory domainAdapterFactory) {
44
		this.domainAdapterFactory = domainAdapterFactory;
45
	}
46
47
	/**
48
	 * @generated
49
	 */
50
	public void contributeToPalette(PaletteRoot paletteRoot) {
51
        PaletteGroup controls = new PaletteGroup("Controls");
52
        paletteRoot.add(controls);
53
54
        ToolEntry tool = new SelectionToolEntry();
55
        controls.add(tool);
56
        paletteRoot.setDefaultEntry(tool);
57
58
        controls.add(new MarqueeToolEntry());
59
<%
60
List toolGroups = palette.getGroups();
61
for (int i = 0; i < toolGroups.size(); i++) {
62
	ToolGroup toolGroup = (ToolGroup) toolGroups.get(i);
63
%>
64
		paletteRoot.add(<%=toolGroup.getCreateMethodName()%>());
65
<%}%>
66
	}
67
68
<%
69
for (int i = 0; i < toolGroups.size(); i++) {
70
	ToolGroup toolGroup = (ToolGroup) toolGroups.get(i);
71
%>
72
73
	/**
74
	 * @generated
75
	 */
76
	private PaletteContainer <%=toolGroup.getCreateMethodName()%>() {
77
		PaletteContainer paletteContainer = createContainer("<%=toolGroup.getTitleKey()%>");
78
<%
79
	List nodeCreationTools = toolGroup.getNodeTools();
80
	for (int j = 0; j < nodeCreationTools.size(); j++) {
81
		NodeEntry nodeCreationTool = (NodeEntry) nodeCreationTools.get(j);
82
%>
83
		paletteContainer.add(<%=nodeCreationTool.getCreateMethodName()%>());
84
<%	}
85
	List linkCreationTools = toolGroup.getLinkTools();
86
	for (int j = 0; j < linkCreationTools.size(); j++) {
87
		LinkEntry linkCreationTool = (LinkEntry) linkCreationTools.get(j);
88
		if (j == 0) {
89
%>
90
		paletteContainer.add(new <%=importManager.getImportedName("org.eclipse.gef.palette.PaletteSeparator")%>());
91
<%		}%>
92
		paletteContainer.add(<%=linkCreationTool.getCreateMethodName()%>());
93
<%	}%>
94
		return paletteContainer;
95
	}
96
<%
97
}
98
for (int i = 0; i < toolGroups.size(); i++) {
99
	ToolGroup toolGroup = (ToolGroup) toolGroups.get(i);
100
	List nodeCreationTools = toolGroup.getNodeTools();
101
	for (int j = 0; j < nodeCreationTools.size(); j++) {
102
		NodeEntry nodeCreationTool = (NodeEntry) nodeCreationTools.get(j);
103
		List genNodes = nodeCreationTool.getGenNode();
104
		GenNode firstGenNode = (GenNode) genNodes.get(0);
105
		GenClass genClass = firstGenNode.getDomainMetaClass();
106
		final String domainElementInstanceCreationCode;
107
		if (!genClass.isMapEntry()) {
108
			domainElementInstanceCreationCode = importManager.getImportedName(genClass.getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create" + genClass.getName() + "()";
109
		} else {
110
			domainElementInstanceCreationCode = importManager.getImportedName(genClass.getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create(" + 
111
				importManager.getImportedName(genClass.getGenPackage().getQualifiedPackageInterfaceName()) + ".eINSTANCE.get" + genClass.getClassifierAccessorName() + "())";
112
		}
113
%>
114
115
	/**
116
	 * @generated
117
	 */
118
	private ToolEntry <%=nodeCreationTool.getCreateMethodName()%>() {
119
		<%if (nodeCreationTool.getSmallIconPath() != null) {%>
120
		ImageDescriptor smallImage = ImageDescriptor.createFromFile(<%=palette.getFactoryClassName()%>.class, "<%=nodeCreationTool.getSmallIconPath()%>");
121
		<%} else {%>
122
		ImageDescriptor smallImage = getImage(<%=domainElementInstanceCreationCode%>);
123
		<%}%>
124
		<%if (nodeCreationTool.getLargeIconPath() != null) {%>
125
		ImageDescriptor largeImage = ImageDescriptor.createFromFile(<%=palette.getFactoryClassName()%>.class, "<%=nodeCreationTool.getLargeIconPath()%>");
126
		<%} else {%>
127
		ImageDescriptor largeImage = smallImage;
128
		<%}%>
129
		final int[] visualIds = new int[] {
130
<%
131
		for (Iterator genNodesIterator = genNodes.iterator(); genNodesIterator.hasNext();) {
132
			GenNode nextNode = (GenNode) genNodesIterator.next();
133
%>
134
			<%=nextNode.getVisualID()%><%if (genNodesIterator.hasNext()) {%>,<%}%>
135
<%
136
		}
137
%>		
138
		};
139
		return new <%=importManager.getImportedName("org.eclipse.gef.palette.CombinedTemplateCreationEntry")%>("<%=nodeCreationTool.getTitleKey()%>", 
140
			"<%=nodeCreationTool.getDescriptionKey()%>", new ModelCreationFactory(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>.class), smallImage, largeImage) {
141
			public Tool createTool() {
142
				Tool result = new CreationTool() {
143
					protected Request createTargetRequest() {
144
						CreateRequestEx request = new CreateRequestEx(visualIds);
145
						request.setFactory(getFactory());
146
						return request;
147
					}
148
					protected void performCreation(int button) {
149
						super.performCreation(button);
150
						final <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> createdEditPart = (<%=importManager.getImportedName("org.eclipse.gef.EditPart")%>)getCurrentViewer().getEditPartRegistry().get(getCreateRequest().getNewObject());
151
						if (createdEditPart != null) {
152
							getCurrentViewer().getControl().getDisplay().asyncExec(new Runnable() {
153
								public void run() {
154
									if (createdEditPart.isActive()) {
155
										createdEditPart.performRequest(new <%=importManager.getImportedName("org.eclipse.gef.Request")%>(<%=importManager.getImportedName("org.eclipse.gef.RequestConstants")%>.REQ_DIRECT_EDIT));
156
									}
157
								}
158
							});
159
						}
160
					}
161
				};
162
				result.setProperties(getToolProperties());
163
				return result;
164
			}
165
		};
166
	}
167
<%
168
	}
169
	List linkCreationTools = toolGroup.getLinkTools();
170
	for (int j = 0; j < linkCreationTools.size(); j++) {
171
		LinkEntry linkCreationTool = (LinkEntry) linkCreationTools.get(j);
172
		List genLinks = linkCreationTool.getGenLink();
173
		GenLink firstGenLink = (GenLink) genLinks.get(0);
174
		LinkModelFacet linkModelFacet = firstGenLink.getModelFacet();
175
		final String domainElementInstanceCreationCode;
176
		if (linkModelFacet instanceof TypeLinkModelFacet) {
177
			TypeLinkModelFacet typeLinkModelFacet = (TypeLinkModelFacet) linkModelFacet;
178
			GenClass genClass = typeLinkModelFacet.getMetaClass();
179
			domainElementInstanceCreationCode = importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create" + genClass.getName() + "()";
180
		} else {
181
			domainElementInstanceCreationCode = "null";
182
		}
183
%>
184
185
	/**
186
	 * @generated
187
	 */
188
	private ToolEntry <%=linkCreationTool.getCreateMethodName()%>() {
189
		<%if (linkCreationTool.getSmallIconPath() != null) {%>
190
		ImageDescriptor smallImage = ImageDescriptor.createFromFile(<%=palette.getFactoryClassName()%>.class, "<%=linkCreationTool.getSmallIconPath()%>");
191
		<%} else {%>
192
		ImageDescriptor smallImage = getImage(<%=domainElementInstanceCreationCode%>);
193
		<%}%>
194
		<%if (linkCreationTool.getLargeIconPath() != null) {%>
195
		ImageDescriptor largeImage = ImageDescriptor.createFromFile(<%=palette.getFactoryClassName()%>.class, "<%=linkCreationTool.getLargeIconPath()%>");
196
		<%} else {%>
197
		ImageDescriptor largeImage = smallImage;
198
		<%}%>
199
		final int[] visualIds = new int[] {
200
<%
201
		for (Iterator genLinksIterator = genLinks.iterator(); genLinksIterator.hasNext();) {
202
			GenLink nextLink = (GenLink) genLinksIterator.next();
203
%>
204
			<%=nextLink.getVisualID()%><%if (genLinksIterator.hasNext()) {%>,<%}%>
205
<%
206
		}
207
%>		
208
		};
209
		return new ConnectionCreationToolEntry("<%=linkCreationTool.getTitleKey()%>", "<%=linkCreationTool.getDescriptionKey()%>", 
210
			new ModelCreationFactory(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")%>.class), smallImage, largeImage) {
211
			public Tool createTool() {
212
				Tool result = new ConnectionCreationTool() {
213
					protected Request createTargetRequest() {
214
						CreateConnectionRequestEx request = new CreateConnectionRequestEx(visualIds);
215
						request.setFactory(getFactory());
216
						return request;
217
					}
218
				};
219
				result.setProperties(getToolProperties());
220
				return result;
221
			}
222
		};
223
	}
224
<%
225
	}
226
}
227
%>
228
229
	/**
230
	 * @generated
231
	 */
232
	private PaletteContainer createContainer(String title) {
233
		return new PaletteDrawer(title);
234
	}
235
	
236
	/**
237
	 * @generated
238
	 */
239
	private ImageDescriptor getImage(Object o) {
240
		IItemLabelProvider labelProvider = (IItemLabelProvider) domainAdapterFactory.adapt(o, IItemLabelProvider.class);
241
		if (labelProvider != null) {
242
			return ExtendedImageRegistry.getInstance().getImageDescriptor(labelProvider.getImage(o));
243
		}
244
		return null;
245
	}
246
247
	/**
248
	 * @generated
249
	 */
250
	public static class CreateRequestEx extends <%=importManager.getImportedName("org.eclipse.gef.requests.CreateRequest")%> {
251
		/**
252
		 * @generated
253
		 */
254
		private final int[] visualIds;
255
256
		/**
257
		 * @generated
258
		 */
259
		public CreateRequestEx(int[] visualIds) {
260
			this.visualIds = visualIds;
261
		}
262
263
		/**
264
		 * @generated
265
		 */
266
		public int[] getVisualIds() {
267
			return visualIds;
268
		}
269
270
		/**
271
		 * @generated
272
		 */
273
		public void setCreatedObject(Object createdObject) {
274
			((ModelCreationFactory)getFactory()).setCreatedObject(createdObject);
275
		}
276
	}
277
278
	/**
279
	 * @generated
280
	 */
281
	public static class CreateConnectionRequestEx extends <%=importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest")%> {
282
		/**
283
		 * @generated
284
		 */
285
		private final int[] visualIds;
286
287
		/**
288
		 * @generated
289
		 */
290
		public CreateConnectionRequestEx(int[] visualIds) {
291
			this.visualIds = visualIds;
292
		}
293
294
		/**
295
		 * @generated
296
		 */
297
		public int[] getVisualIds() {
298
			return visualIds;
299
		}
300
301
		/**
302
		 * @generated
303
		 */
304
		public void setCreatedObject(Object createdObject) {
305
			((ModelCreationFactory)getFactory()).setCreatedObject(createdObject);
306
		}
307
	}
308
309
	/**
310
	 * @generated
311
	 */
312
	private static class ModelCreationFactory implements CreationFactory {
313
		/**
314
		 * @generated
315
		 */
316
		private Object createdObject;
317
318
		/**
319
		 * @generated
320
		 */
321
		private final Class createdObjectType;
322
323
		/**
324
		 * @generated
325
		 */
326
		public ModelCreationFactory(Class objectType) {
327
			createdObjectType = objectType;
328
		}
329
330
		/**
331
		 * @generated
332
		 */
333
		public Object getNewObject() {
334
			return createdObject;
335
		}
336
337
		/**
338
		 * @generated
339
		 */
340
		public Object getObjectType() {
341
			return createdObjectType;
342
		}
343
344
		/**
345
		 * @generated
346
		 */
347
		public void setCreatedObject(Object createdObject) {
348
			this.createdObject = createdObject;
349
		}
350
	}
351
}
352
<%importManager.emitSortedImports();%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginGenerator.java (+79 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
import org.eclipse.emf.common.util.*;
4
import org.eclipse.emf.codegen.ecore.genmodel.*;
5
import org.eclipse.gmf.codegen.gmfgen.*;
6
import org.eclipse.gmf.common.codegen.*;
7
8
public class PluginGenerator
9
{
10
  protected static String nl;
11
  public static synchronized PluginGenerator create(String lineSeparator)
12
  {
13
    nl = lineSeparator;
14
    PluginGenerator result = new PluginGenerator();
15
    nl = null;
16
    return result;
17
  }
18
19
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
20
  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;";
21
  protected final String TEXT_2 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
22
  protected final String TEXT_3 = " extends AbstractUIPlugin {" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static final String ID = \"";
23
  protected final String TEXT_4 = "\"; //$NON-NLS-1$" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static ";
24
  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 ";
25
  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 ";
26
  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) {";
27
  protected final String TEXT_8 = NL + "\t\tfactories.add(new ";
28
  protected final String TEXT_9 = "());";
29
  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) {";
30
  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, ";
31
  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, ";
32
  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 + "}";
33
  protected final String TEXT_14 = NL;
34
35
  public String generate(Object argument)
36
  {
37
    final StringBuffer stringBuffer = new StringBuffer();
38
    
39
final GenPlugin genPlugin = (GenPlugin) ((Object[]) argument)[0];
40
final EList genPackages = genPlugin.getEditorGen().getAllDomainGenPackages(true);
41
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
42
43
importManager.emitPackageStatement(stringBuffer);
44
    stringBuffer.append(TEXT_1);
45
    importManager.markImportLocation(stringBuffer);
46
    stringBuffer.append(TEXT_2);
47
    stringBuffer.append(genPlugin.getActivatorClassName());
48
    stringBuffer.append(TEXT_3);
49
    stringBuffer.append(genPlugin.getID());
50
    stringBuffer.append(TEXT_4);
51
    stringBuffer.append(genPlugin.getActivatorClassName());
52
    stringBuffer.append(TEXT_5);
53
    stringBuffer.append(genPlugin.getActivatorClassName());
54
    stringBuffer.append(TEXT_6);
55
    stringBuffer.append(genPlugin.getActivatorClassName());
56
    stringBuffer.append(TEXT_7);
57
    
58
for (int i = 0; i < genPackages.size(); i++) {
59
	GenPackage genPackage = (GenPackage) genPackages.get(i);
60
61
    stringBuffer.append(TEXT_8);
62
    stringBuffer.append(importManager.getImportedName(genPackage.getQualifiedItemProviderAdapterFactoryClassName()));
63
    stringBuffer.append(TEXT_9);
64
    }
65
    stringBuffer.append(TEXT_10);
66
    
67
			// XXX dependency org.eclipse.emf.edit.ui is for ExtendedImageRegistry only. 
68
			// FIXME move image registry to plugin class code
69
70
    stringBuffer.append(TEXT_11);
71
    stringBuffer.append(genPlugin.getActivatorClassName());
72
    stringBuffer.append(TEXT_12);
73
    stringBuffer.append(genPlugin.getActivatorClassName());
74
    stringBuffer.append(TEXT_13);
75
    importManager.emitSortedImports();
76
    stringBuffer.append(TEXT_14);
77
    return stringBuffer.toString();
78
  }
79
}
(-)templates/parts/refreshMethods/font.javajetinc (+43 lines)
Added Link Here
1
	/**
2
	 * @generated
3
	 */
4
	protected void refreshFont() {
5
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")%> style =
6
			(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle")%>) <%=primaryView%>.getStyle(
7
				<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle());
8
		<%=importManager.getImportedName("org.eclipse.swt.graphics.Font")%> toDispose = createdFont;
9
		if (style != null) {
10
			String fontName = style.getFontName();
11
			int fontHeight = style.getFontHeight();
12
			int fontStyle = <%=importManager.getImportedName("org.eclipse.swt.SWT")%>.NORMAL;
13
			if (style.isBold()) {
14
				fontStyle |= <%=importManager.getImportedName("org.eclipse.swt.SWT")%>.BOLD;
15
			}
16
			if (style.isItalic()) {
17
				fontStyle |= <%=importManager.getImportedName("org.eclipse.swt.SWT")%>.ITALIC;
18
			}
19
			<%=importManager.getImportedName("org.eclipse.swt.graphics.Font")%> currentFont = getFigure().getFont();
20
			if (currentFont != null) {
21
				<%=importManager.getImportedName("org.eclipse.swt.graphics.FontData")%> currentFontData = currentFont.getFontData()[0];
22
				if (currentFontData.getName().equals(fontName) && currentFontData.getHeight() == fontHeight && currentFontData.getStyle() == fontStyle) {
23
					return;
24
				}
25
			}
26
			createdFont = new <%=importManager.getImportedName("org.eclipse.swt.graphics.Font")%>(null, fontName, fontHeight, fontStyle);
27
			getFigure().setFont(createdFont);
28
		} else {
29
			//revert to the default font
30
			getFigure().setFont(getViewer().getControl().getFont());
31
			createdFont = null;
32
		}
33
		if (toDispose != null) {
34
			toDispose.dispose();
35
		}
36
	}
37
38
	/**
39
	 * The font (created by {@link #refreshFont()}) currently assigned to the label (unless the default font is assigned).
40
	 * Whenever another non-default font is assigned to it, it is safe to dispose the previous one.
41
	 * @generated
42
	 */
43
	private <%=importManager.getImportedName("org.eclipse.swt.graphics.Font")%> createdFont;
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/providers/DomainElementInitializerGenerator.java (+189 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.providers;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
import java.util.*;
6
7
public class DomainElementInitializerGenerator
8
{
9
  protected static String nl;
10
  public static synchronized DomainElementInitializerGenerator create(String lineSeparator)
11
  {
12
    nl = lineSeparator;
13
    DomainElementInitializerGenerator result = new DomainElementInitializerGenerator();
14
    nl = null;
15
    return result;
16
  }
17
18
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
19
  protected final String TEXT_1 = "";
20
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
21
  protected final String TEXT_3 = NL + " */";
22
  protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class DomainElementInitializer ";
23
  protected final String TEXT_5 = "{" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static interface IElementInitializer {" + NL + "\t\tpublic void initializeElement(";
24
  protected final String TEXT_6 = " instance);" + NL + "\t}" + NL;
25
  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(";
26
  protected final String TEXT_8 = " instance) {" + NL + "\t\t}" + NL + "\t};" + NL;
27
  protected final String TEXT_9 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static IElementInitializer ";
28
  protected final String TEXT_10 = " = NULL_INITIALIZER;";
29
  protected final String TEXT_11 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static IElementInitializer ";
30
  protected final String TEXT_12 = " = new ObjectInitializer(new FeatureInitializer[] {";
31
  protected final String TEXT_13 = NL + "\t\t\tnew FeatureInitializer(\"";
32
  protected final String TEXT_14 = "\", //$NON-NLS-1$" + NL + "\t\t\t\t\t\t";
33
  protected final String TEXT_15 = ".eINSTANCE.get";
34
  protected final String TEXT_16 = "()," + NL + "\t\t\t\t\t\t";
35
  protected final String TEXT_17 = ".eINSTANCE.get";
36
  protected final String TEXT_18 = "())";
37
  protected final String TEXT_19 = ", ";
38
  protected final String TEXT_20 = NL;
39
  protected final String TEXT_21 = NL + "\t});";
40
  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(";
41
  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 ";
42
  protected final String TEXT_24 = " contextClass;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate ";
43
  protected final String TEXT_25 = " sFeature;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate ";
44
  protected final String TEXT_26 = " expressionBody;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate ";
45
  protected final String TEXT_27 = " query;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tFeatureInitializer(";
46
  protected final String TEXT_28 = " expression, " + NL + "\t\t\t";
47
  protected final String TEXT_29 = " context, " + NL + "\t\t\t";
48
  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(";
49
  protected final String TEXT_31 = " contextInstance) {" + NL + "\t\t\tif(this.query == null) {" + NL + "\t\t\t\tthis.query = ";
50
  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 ";
51
  protected final String TEXT_33 = " && " + NL + "\t\t\t\tvalue instanceof ";
52
  protected final String TEXT_34 = ") {" + NL + "\t\t\t\tvalue = ((";
53
  protected final String TEXT_35 = ")value).getInstance();" + NL + "\t\t\t} else if(value != null && sFeature.isMany()) {" + NL + "\t\t\t\tvalue = new ";
54
  protected final String TEXT_36 = "((";
55
  protected final String TEXT_37 = ")value);" + NL + "\t\t\t}" + NL + "\t\t\tcontextInstance.eSet(sFeature, value);" + NL + "\t\t}" + NL + "\t}";
56
  protected final String TEXT_38 = NL + "}";
57
58
  public String generate(Object argument)
59
  {
60
    final StringBuffer stringBuffer = new StringBuffer();
61
    
62
GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
63
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
64
65
    stringBuffer.append(TEXT_1);
66
    
67
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
68
if (copyrightText != null && copyrightText.trim().length() > 0) {
69
70
    stringBuffer.append(TEXT_2);
71
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
72
    stringBuffer.append(TEXT_3);
73
    }
74
    
75
importManager.emitPackageStatement(stringBuffer);
76
77
importManager.markImportLocation(stringBuffer);
78
79
    stringBuffer.append(TEXT_4);
80
    /*XXX: class name should be customizable!*/
81
    stringBuffer.append(TEXT_5);
82
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
83
    stringBuffer.append(TEXT_6);
84
    
85
boolean needsNullInitializer = false;
86
boolean needsOCLInitializer = false;
87
for (Iterator it = genDiagram.eAllContents(); it.hasNext(); ) {
88
	Object next = it.next();
89
	String id = null;
90
	TypeModelFacet modelFacet = null;
91
	if (next instanceof GenNode) {
92
		id = ((GenNode) next).getUniqueIdentifier();
93
		modelFacet = ((GenNode) next).getModelFacet();
94
	} else if (next instanceof GenLink && ((GenLink) next).getModelFacet() instanceof TypeLinkModelFacet) {
95
		id = ((GenLink) next).getUniqueIdentifier();
96
		modelFacet = (TypeLinkModelFacet) ((GenLink) next).getModelFacet();
97
	}
98
	if (modelFacet == null) {
99
		continue;
100
	}
101
	GenElementInitializer elementInitializer = modelFacet.getModelElementInitializer();
102
	if (elementInitializer instanceof GenFeatureSeqInitializer == false) {
103
		if (!needsNullInitializer) {
104
			needsNullInitializer = true;
105
106
    stringBuffer.append(TEXT_7);
107
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
108
    stringBuffer.append(TEXT_8);
109
    
110
		}
111
112
    stringBuffer.append(TEXT_9);
113
    stringBuffer.append(id);
114
    stringBuffer.append(TEXT_10);
115
    
116
		continue;
117
	}
118
	needsOCLInitializer = true;
119
	GenFeatureSeqInitializer ftInitializer = (GenFeatureSeqInitializer) elementInitializer;
120
121
    stringBuffer.append(TEXT_11);
122
    stringBuffer.append(id);
123
    stringBuffer.append(TEXT_12);
124
    
125
		for(Iterator featInitIt = ftInitializer.getInitializers().iterator(); featInitIt.hasNext();) { 
126
			GenFeatureValueSpec featureValSpec = (GenFeatureValueSpec)featInitIt.next();
127
    stringBuffer.append(TEXT_13);
128
    stringBuffer.append(featureValSpec.getBody());
129
    stringBuffer.append(TEXT_14);
130
    stringBuffer.append(importManager.getImportedName(ftInitializer.getElementQualifiedPackageInterfaceName()));
131
    stringBuffer.append(TEXT_15);
132
    stringBuffer.append(ftInitializer.getElementClassAccessorName());
133
    stringBuffer.append(TEXT_16);
134
    stringBuffer.append(importManager.getImportedName(featureValSpec.getFeatureQualifiedPackageInterfaceName()));
135
    stringBuffer.append(TEXT_17);
136
    stringBuffer.append(featureValSpec.getFeature().getFeatureAccessorName()
137
						);
138
    stringBuffer.append(TEXT_18);
139
    if (featInitIt.hasNext()) {
140
    stringBuffer.append(TEXT_19);
141
    }
142
    stringBuffer.append(TEXT_20);
143
    
144
		} // end of GenFeatureValueSpec iteration
145
146
    stringBuffer.append(TEXT_21);
147
    
148
}
149
if (needsOCLInitializer) {
150
151
    stringBuffer.append(TEXT_22);
152
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
153
    stringBuffer.append(TEXT_23);
154
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EClass"));
155
    stringBuffer.append(TEXT_24);
156
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
157
    stringBuffer.append(TEXT_25);
158
    stringBuffer.append(importManager.getImportedName("java.lang.String"));
159
    stringBuffer.append(TEXT_26);
160
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ocl.query.Query"));
161
    stringBuffer.append(TEXT_27);
162
    stringBuffer.append(importManager.getImportedName("java.lang.String"));
163
    stringBuffer.append(TEXT_28);
164
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EClass"));
165
    stringBuffer.append(TEXT_29);
166
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
167
    stringBuffer.append(TEXT_30);
168
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
169
    stringBuffer.append(TEXT_31);
170
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ocl.query.QueryFactory"));
171
    stringBuffer.append(TEXT_32);
172
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnum"));
173
    stringBuffer.append(TEXT_33);
174
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral"));
175
    stringBuffer.append(TEXT_34);
176
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral"));
177
    stringBuffer.append(TEXT_35);
178
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList"));
179
    stringBuffer.append(TEXT_36);
180
    stringBuffer.append(importManager.getImportedName("java.util.Collection"));
181
    stringBuffer.append(TEXT_37);
182
    
183
}
184
185
    stringBuffer.append(TEXT_38);
186
    importManager.emitSortedImports();
187
    return stringBuffer.toString();
188
  }
189
}
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/DiagramEditorUtilGenerator.java (+60 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
6
public class DiagramEditorUtilGenerator
7
{
8
  protected static String nl;
9
  public static synchronized DiagramEditorUtilGenerator create(String lineSeparator)
10
  {
11
    nl = lineSeparator;
12
    DiagramEditorUtilGenerator result = new DiagramEditorUtilGenerator();
13
    nl = null;
14
    return result;
15
  }
16
17
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
18
  protected final String TEXT_1 = "";
19
  protected final String TEXT_2 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
20
  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(\"";
21
  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(\"";
22
  protected final String TEXT_5 = "\");" + NL + "\t}" + NL + " }";
23
  protected final String TEXT_6 = NL;
24
25
  public String generate(Object argument)
26
  {
27
    final StringBuffer stringBuffer = new StringBuffer();
28
    
29
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
30
final GenEditorGenerator editorGen = genDiagram.getEditorGen();
31
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
32
33
importManager.emitPackageStatement(stringBuffer);
34
    stringBuffer.append(TEXT_1);
35
    importManager.markImportLocation(stringBuffer);
36
importManager.addImport("java.io.File");
37
importManager.addImport("org.eclipse.ui.IWorkbench");
38
importManager.addImport("org.eclipse.ui.IWorkbenchPage");
39
importManager.addImport("org.eclipse.ui.IWorkbenchWindow");
40
importManager.addImport("org.eclipse.ui.PlatformUI");
41
importManager.addImport("org.eclipse.ui.PartInitException");
42
importManager.addImport("org.eclipse.ui.IEditorDescriptor");
43
importManager.addImport("org.eclipse.swt.widgets.Shell");
44
importManager.addImport("org.eclipse.swt.widgets.FileDialog"); 
45
importManager.addImport("org.eclipse.jface.dialogs.MessageDialog");
46
importManager.addImport("org.eclipse.emf.common.util.URI");
47
importManager.addImport("org.eclipse.emf.common.ui.URIEditorInput");
48
49
    stringBuffer.append(TEXT_2);
50
    stringBuffer.append(genDiagram.getDiagramEditorUtilClassName());
51
    stringBuffer.append(TEXT_3);
52
    stringBuffer.append(editorGen.getDiagramFileExtension());
53
    stringBuffer.append(TEXT_4);
54
    stringBuffer.append(editorGen.getDomainFileExtension());
55
    stringBuffer.append(TEXT_5);
56
    importManager.emitSortedImports();
57
    stringBuffer.append(TEXT_6);
58
    return stringBuffer.toString();
59
  }
60
}
(-)META-INF/MANIFEST.MF (+14 lines)
Added Link Here
1
Manifest-Version: 1.0
2
Bundle-ManifestVersion: 2
3
Bundle-Name: %pluginName
4
Bundle-SymbolicName: org.eclipse.gmf.codegen.lite
5
Bundle-Version: 1.0.0
6
Bundle-Vendor: %providerName
7
Bundle-Localization: plugin
8
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
9
 org.eclipse.emf.codegen.ecore,
10
 org.eclipse.gmf.common,
11
 org.eclipse.gmf.codegen
12
Eclipse-LazyStart: true
13
Bundle-Activator: org.eclipse.gmf.internal.codegen.lite.Activator
14
Export-Package: org.eclipse.gmf.internal.codegen.lite
(-)templates/providers/NodeViewFactory.javajet (+78 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers"  class="NodeViewFactoryGenerator"
2
	imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* java.util.*"%>
3
<%
4
GenNode genElement = (GenNode) ((Object[]) argument)[0];
5
GenDiagram genDiagram = genElement.getDiagram();
6
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
%>
8
<%@ include file="../copyright4java.jetinc"%>
9
<%importManager.emitPackageStatement(stringBuffer);
10
11
importManager.markImportLocation(stringBuffer);
12
%>
13
14
/**
15
 * @generated
16
 */
17
public class <%=genElement.getNotationViewFactoryClassName()%> {
18
	/**
19
	 * @generated
20
	 */
21
	public static void decorateView(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) {
22
<%@ include file="createVIDAnnotation.jetinc"%>
23
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.ShapeStyle")%> style = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createShapeStyle();
24
		view.getStyles().add(style);
25
		//XXX: init styles from attributes!!!
26
<%
27
for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) {
28
	GenNodeLabel label = (GenNodeLabel) it.next();
29
%>
30
		create<%=label.getVisualID()%>Label(view);
31
<%
32
}/*iterate over labels*/
33
%>
34
<%
35
for (Iterator it = genElement.getCompartments().iterator(); it.hasNext(); ) {
36
	GenCompartment compartment = (GenCompartment) it.next();
37
%>
38
		create<%=compartment.getVisualID()%>Compartment(view);
39
<%
40
}/*iterate over compartments*/
41
%>
42
	}
43
44
<%
45
for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) {
46
	GenNodeLabel label = (GenNodeLabel) it.next();
47
%>
48
	/**
49
	 * @generated
50
	 */
51
	private static void create<%=label.getVisualID()%>Label(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) {
52
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> label = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createNode();
53
		view.getPersistedChildren().add(label);
54
		label.setElement(null);
55
		<%=importManager.getImportedName(label.getNotationViewFactoryQualifiedClassName())%>.decorateView(label);
56
	}
57
<%
58
}/*iterate over labels*/
59
%>
60
61
<%
62
for (Iterator it = genElement.getCompartments().iterator(); it.hasNext(); ) {
63
	GenCompartment compartment = (GenCompartment) it.next();
64
%>
65
	/**
66
	 * @generated
67
	 */
68
	private static void create<%=compartment.getVisualID()%>Compartment(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) {
69
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> compartment = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createNode();
70
		view.getPersistedChildren().add(compartment);
71
		compartment.setElement(null);
72
		<%=importManager.getImportedName(compartment.getNotationViewFactoryQualifiedClassName())%>.decorateView(compartment);
73
	}
74
<%
75
}/*iterate over compartments*/
76
%>
77
}
78
<%importManager.emitSortedImports();%>
(-)templates/parts/CompartmentEditPart.javajet (+227 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="CompartmentEditPartGenerator"
2
	imports="java.util.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
GenCompartment genCompartment = (GenCompartment) ((Object[]) argument)[0];
5
GenNode genHost = genCompartment.getNode();
6
GenDiagram genDiagram = genCompartment.getDiagram();
7
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
8
%>
9
<%@ include file="../copyright4java.jetinc"%>
10
<%importManager.emitPackageStatement(stringBuffer);
11
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
12
importManager.addImport("org.eclipse.gef.commands.Command");
13
importManager.addImport("org.eclipse.gef.commands.CompoundCommand");
14
importManager.addImport("org.eclipse.gef.EditPart");
15
importManager.addImport("org.eclipse.gef.requests.CreateRequest");
16
17
importManager.markImportLocation(stringBuffer);
18
%>
19
20
/**
21
 * @generated
22
 */
23
public class <%=genCompartment.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")%> implements IUpdatableEditPart {
24
	/**
25
	 * @generated
26
	 */
27
	public <%=genCompartment.getEditPartClassName()%>(View view) {
28
		setModel(view);
29
	}
30
31
	/**
32
	 * @generated
33
	 */
34
	protected <%=importManager.getImportedName("java.util.List")%> getModelChildren() {
35
		return ((View) getModel()).getChildren();
36
	}
37
38
	/**
39
	 * @generated
40
	 */
41
	protected void createEditPolicies() {
42
		//XXX: install correct edit policies!
43
<%if (!genCompartment.isListLayout()) {%>
44
		installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.LAYOUT_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.XYLayoutEditPolicy")%>() {
45
			protected Command createChangeConstraintCommand(final <%=importManager.getImportedName("org.eclipse.gef.requests.ChangeBoundsRequest")%> request, EditPart child, Object constraint) {
46
				final Node node = (Node) child.getModel();
47
				return new Command("Change node position/size") {
48
					private <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> moveDelta = request.getMoveDelta();
49
					private <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")%> resizeDelta = request.getSizeDelta();
50
51
					public boolean canUndo() {
52
						return canExecute();
53
					}
54
					public boolean canExecute() {
55
						return node.getLayoutConstraint() instanceof Bounds;
56
					}
57
					public void undo() {
58
						execute(moveDelta.getNegated(), resizeDelta.getNegated());
59
					}
60
					public void execute() {
61
						execute(moveDelta, resizeDelta);
62
					}
63
					private void execute(<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> move, <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Dimension")%> resize) {
64
						Bounds bounds = (Bounds) node.getLayoutConstraint();
65
						bounds.setX(bounds.getX() + move.x);
66
						bounds.setY(bounds.getY() + move.y);
67
						bounds.setWidth(bounds.getWidth() + resize.width);
68
						bounds.setHeight(bounds.getHeight() + resize.height);
69
					}
70
				};
71
			}
72
			protected Command createChangeConstraintCommand(EditPart child, Object constraint) {
73
				assert false;
74
				return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
75
			}
76
<%} else {%>
77
		installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.LAYOUT_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ConstrainedLayoutEditPolicy")%>() {
78
			protected Object getConstraintFor(<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%> rect) {
79
				return null;
80
			}
81
			protected Object getConstraintFor(<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> point) {
82
				return null;
83
			}
84
			protected Command createChangeConstraintCommand(EditPart child, Object constraint) {
85
				return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
86
			}
87
<%}%>
88
			protected Command getCreateCommand(CreateRequest request) {
89
<%if (null != genDiagram.getPalette()) {
90
final Palette palette = genDiagram.getPalette();%>
91
				if (request instanceof <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx) {
92
					<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx requestEx = (<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateRequestEx) request;
93
					int[] visualIds = requestEx.getVisualIds();
94
					CompoundCommand result = new CompoundCommand();
95
					for(int i = 0; i < visualIds.length; i++) {
96
						int nextVisualId = visualIds[i];
97
						switch (nextVisualId) {
98
<%
99
for(Iterator it = genCompartment.getChildNodes().iterator(); it.hasNext(); ) {
100
	GenChildNode next = (GenChildNode)it.next();
101
%>
102
						case <%=next.getVisualID()%>:
103
							result.add(new Create<%=next.getDomainMetaClass().getName()%><%=next.getVisualID()%>Command((View) getModel(), requestEx<%if (!genCompartment.isListLayout()) {%>, 
104
								(<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%>)getConstraintFor(request)<%}%>));
105
							break;
106
<%
107
}
108
%>
109
						}
110
					}
111
					return result.unwrap();
112
				}
113
<%}/*when there's palette*/%>
114
				return null;
115
			}
116
		});
117
	}
118
119
	/**
120
	 * @generated
121
	 */
122
	protected String getTitleName() {
123
		return "<%=genCompartment.getTitle()%>";
124
	}
125
126
	/**
127
	 * @generated
128
	 */
129
	public <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> createFigure() {
130
		<%=importManager.getImportedName("org.eclipse.draw2d.LabeledContainer")%> result = new <%=importManager.getImportedName("org.eclipse.draw2d.LabeledContainer")%>();
131
		result.setLabel(getTitleName());
132
		result.setOpaque(false);
133
		result.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.StackLayout")%>());
134
		<%=importManager.getImportedName("org.eclipse.draw2d.ScrollPane")%> scrollPane = new <%=importManager.getImportedName("org.eclipse.draw2d.ScrollPane")%>();
135
		result.add(scrollPane);
136
<%if (genCompartment.isListLayout()) {%>
137
		<%=importManager.getImportedName("org.eclipse.draw2d.Viewport")%> viewport = new <%=importManager.getImportedName("org.eclipse.draw2d.Viewport")%>();
138
		contentPane = new <%=importManager.getImportedName("org.eclipse.draw2d.Figure")%>();
139
		contentPane.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.ToolbarLayout")%>());
140
<%} else {%>
141
		<%=importManager.getImportedName("org.eclipse.draw2d.Viewport")%> viewport = new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformViewport")%>();
142
		contentPane = new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayer")%>();
143
		contentPane.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayout")%>());
144
<%}%>
145
		viewport.setContents(contentPane);
146
		scrollPane.setViewport(viewport);
147
		return result;
148
	}
149
150
	/**
151
	 * @generated
152
	 */
153
	public IFigure getContentPane() {
154
		return contentPane;
155
	}
156
157
	/**
158
	 * @generated
159
	 */
160
	private IFigure contentPane;
161
162
	/**
163
	 * @generated
164
	 */
165
	private <%=importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())%> resolveSemanticElement() {
166
		for(EditPart editPart = this; editPart != null; editPart = editPart.getParent()) {
167
			View view = (View)editPart.getModel();
168
			if (view != null && view.getElement() != null) {
169
				return (<%=importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())%>) view.getElement();
170
			}
171
		}
172
		return null;
173
	}
174
175
<%@ include file="refresher.javajetinc"%>
176
177
	/**
178
	 * @generated
179
	 */
180
	private void createRefreshers() {
181
		structuralFeatures2Refresher = new HashMap();
182
<%@ include file="refreshers.javajetinc/children.javajetinc"%>
183
<%@ include file="refreshers.javajetinc/visibility.javajetinc"%>
184
	}
185
186
	/**
187
	 * @generated
188
	 */
189
	protected void refreshVisuals() {
190
		super.refreshVisuals();
191
//XXX:		refreshBackgroundColor();
192
//XXX:		refreshForegroundColor();
193
//XXX:		refreshFont();
194
		refreshVisibility();
195
	}
196
197
	/**
198
	 * @generated
199
	 */
200
	protected void refreshVisibility() {
201
		boolean isVisible = ((View)getModel()).isVisible();
202
		boolean wasVisible = getFigure().isVisible();
203
		if (isVisible == wasVisible) {
204
			return;
205
		}
206
		if (!isVisible && (getSelected() != SELECTED_NONE)) {
207
			getViewer().deselect(this);
208
		}
209
210
		getFigure().setVisible(isVisible);
211
		getFigure().revalidate();
212
	}
213
214
<%
215
for(Iterator it = genCompartment.getChildNodes().iterator(); genDiagram.getPalette() != null && it.hasNext(); ) {
216
	GenChildNode next = (GenChildNode)it.next();
217
	boolean isStatic = false;
218
	boolean isListLayout = genCompartment.isListLayout();
219
	String resolvedSemanticElement = "resolveSemanticElement()";
220
%>
221
<%@ include file="createNodeCommand.javajetinc"%>
222
<%
223
}
224
%>
225
}
226
227
<%importManager.emitSortedImports();%>
(-)templates/parts/refreshers.javajetinc/externalRefreshers.javajetinc (+25 lines)
Added Link Here
1
	public void addRefresher(<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> feature, Refresher refresher) {
2
		CompositeRefresher compositeRefresher = getCompositeRefresher(feature);
3
		compositeRefresher.addRefresher(refresher);
4
	}
5
6
	public void removeRefresher(<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> feature, Refresher refresher) {
7
		CompositeRefresher compositeRefresher = getCompositeRefresher(feature);
8
		compositeRefresher.removeRefresher(refresher);
9
	}
10
11
	private CompositeRefresher getCompositeRefresher(<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> feature) {
12
		if (structuralFeatures2Refresher == null) {
13
			createRefreshers();
14
		}
15
		Refresher refresher = (Refresher) structuralFeatures2Refresher.get(feature);
16
		if (refresher instanceof CompositeRefresher) {
17
			return (CompositeRefresher) refresher;
18
		}
19
		CompositeRefresher result = new CompositeRefresher();
20
		if (refresher != null) {
21
			result.addRefresher(refresher);
22
		}
23
		structuralFeatures2Refresher.put(feature, result);
24
		return result;
25
	}
(-)templates/parts/refreshers.javajetinc/sourceEdges.javajetinc (+6 lines)
Added Link Here
1
		Refresher sourceEdgesRefresher = new Refresher() {
2
			public void refresh() {
3
				refreshSourceConnections();
4
			}
5
		};
6
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getView_SourceEdges(), sourceEdgesRefresher);
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/parts/LinkEditPartGenerator.java (+497 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.parts;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
import org.eclipse.emf.codegen.ecore.genmodel.*;
6
import org.eclipse.emf.ecore.*;
7
8
public class LinkEditPartGenerator
9
{
10
  protected static String nl;
11
  public static synchronized LinkEditPartGenerator create(String lineSeparator)
12
  {
13
    nl = lineSeparator;
14
    LinkEditPartGenerator result = new LinkEditPartGenerator();
15
    nl = null;
16
    return result;
17
  }
18
19
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
20
  protected final String TEXT_1 = "";
21
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
22
  protected final String TEXT_3 = NL + " */";
23
  protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
24
  protected final String TEXT_5 = " extends ";
25
  protected final String TEXT_6 = " implements IUpdatableEditPart {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
26
  protected final String TEXT_7 = "(";
27
  protected final String TEXT_8 = " view) {" + NL + "\t\tassert view instanceof ";
28
  protected final String TEXT_9 = ";" + NL + "\t\tsetModel(view);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
29
  protected final String TEXT_10 = " getDiagramEdge() {" + NL + "\t\treturn (";
30
  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!";
31
  protected final String TEXT_12 = NL;
32
  protected final String TEXT_13 = "\t\tinstallEditPolicy(";
33
  protected final String TEXT_14 = ".COMPONENT_ROLE, new ";
34
  protected final String TEXT_15 = "() {" + NL + "\t\t\tprotected ";
35
  protected final String TEXT_16 = " createDeleteCommand(";
36
  protected final String TEXT_17 = " deleteRequest) {" + NL + "\t\t\t\treturn new ";
37
  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() {";
38
  protected final String TEXT_19 = NL + "\t\t\t\t\t\t";
39
  protected final String TEXT_20 = " result = new ";
40
  protected final String TEXT_21 = "();";
41
  protected final String TEXT_22 = NL + "\t\t\t\t\t\tresult.append(";
42
  protected final String TEXT_23 = ".create(" + NL + "\t\t\t\t\t\t\t";
43
  protected final String TEXT_24 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement().eContainer(), edgeToRemove.getElement().eContainmentFeature(), edgeToRemove.getElement()));";
44
  protected final String TEXT_25 = NL + "\t\t\t\t\t\tresult.append(";
45
  protected final String TEXT_26 = ".create(" + NL + "\t\t\t\t\t\t\t";
46
  protected final String TEXT_27 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement().eContainer(), edgeToRemove.getElement().eContainmentFeature(), ";
47
  protected final String TEXT_28 = ".UNSET_VALUE));";
48
  protected final String TEXT_29 = NL + "\t\t\treturn ";
49
  protected final String TEXT_30 = ".INSTANCE;";
50
  protected final String TEXT_31 = NL + "\t\t\t\t\t\tresult.append(";
51
  protected final String TEXT_32 = ".create(" + NL + "\t\t\t\t\t\t\t";
52
  protected final String TEXT_33 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement().eContainer(), ";
53
  protected final String TEXT_34 = ".eINSTANCE.get";
54
  protected final String TEXT_35 = "()," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement()));";
55
  protected final String TEXT_36 = NL + "\t\t\t\t\t\tresult.append(";
56
  protected final String TEXT_37 = ".create(" + NL + "\t\t\t\t\t\t\t";
57
  protected final String TEXT_38 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement().eContainer(), ";
58
  protected final String TEXT_39 = ".eINSTANCE.get";
59
  protected final String TEXT_40 = "()," + NL + "\t\t\t\t\t\t\t";
60
  protected final String TEXT_41 = ".UNSET_VALUE));";
61
  protected final String TEXT_42 = NL + "\t\t\t\t\t\tresult.append(";
62
  protected final String TEXT_43 = ".create(" + NL + "\t\t\t\t\t\t\t";
63
  protected final String TEXT_44 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement(), ";
64
  protected final String TEXT_45 = ".eINSTANCE.get";
65
  protected final String TEXT_46 = "(), source.getElement()));";
66
  protected final String TEXT_47 = NL + "\t\t\t\t\t\tresult.append(";
67
  protected final String TEXT_48 = ".create(" + NL + "\t\t\t\t\t\t\t";
68
  protected final String TEXT_49 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement(), ";
69
  protected final String TEXT_50 = ".eINSTANCE.get";
70
  protected final String TEXT_51 = "(), ";
71
  protected final String TEXT_52 = ".UNSET_VALUE));";
72
  protected final String TEXT_53 = NL + "\t\t\t\t\t\tresult.append(";
73
  protected final String TEXT_54 = ".create(" + NL + "\t\t\t\t\t\t\t";
74
  protected final String TEXT_55 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement(), ";
75
  protected final String TEXT_56 = ".eINSTANCE.get";
76
  protected final String TEXT_57 = "(), target.getElement()));";
77
  protected final String TEXT_58 = NL + "\t\t\t\t\t\tresult.append(";
78
  protected final String TEXT_59 = ".create(" + NL + "\t\t\t\t\t\t\t";
79
  protected final String TEXT_60 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tedgeToRemove.getElement(), ";
80
  protected final String TEXT_61 = ".eINSTANCE.get";
81
  protected final String TEXT_62 = "(), ";
82
  protected final String TEXT_63 = ".UNSET_VALUE));";
83
  protected final String TEXT_64 = NL + "\t\t\t\t\t\treturn result;";
84
  protected final String TEXT_65 = NL + "\t\t\t\t\t\treturn ";
85
  protected final String TEXT_66 = ".create(" + NL + "\t\t\t\t\t\t\t";
86
  protected final String TEXT_67 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tsource.getElement(), ";
87
  protected final String TEXT_68 = ".eINSTANCE.get";
88
  protected final String TEXT_69 = "(), target.getElement());";
89
  protected final String TEXT_70 = NL + "\t\t\t\t\t\treturn ";
90
  protected final String TEXT_71 = ".create(" + NL + "\t\t\t\t\t\t\t";
91
  protected final String TEXT_72 = ".getEditingDomainFor(edgeToRemove.getDiagram().getElement())," + NL + "\t\t\t\t\t\t\tsource.getElement(), ";
92
  protected final String TEXT_73 = ".eINSTANCE.get";
93
  protected final String TEXT_74 = "(), ";
94
  protected final String TEXT_75 = ".UNSET_VALUE);";
95
  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(";
96
  protected final String TEXT_77 = ".CONNECTION_ENDPOINTS_ROLE, new ";
97
  protected final String TEXT_78 = "());" + NL + "\t}" + NL;
98
  protected final String TEXT_79 = NL;
99
  protected final String TEXT_80 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static int getVisualID(";
100
  protected final String TEXT_81 = " containerView) {" + NL + "\t\t";
101
  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";
102
  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 ";
103
  protected final String TEXT_84 = " getPrimaryLabelEditPart() {" + NL + "\t\tfor(";
104
  protected final String TEXT_85 = " it = getDiagramEdge().getChildren().iterator(); it.hasNext(); ) {" + NL + "\t\t\t";
105
  protected final String TEXT_86 = " nextChild = (";
106
  protected final String TEXT_87 = ")it.next();" + NL + "\t\t\tif (getVisualID(nextChild) == ";
107
  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(";
108
  protected final String TEXT_89 = " req) {" + NL + "\t\tif (";
109
  protected final String TEXT_90 = ".REQ_DIRECT_EDIT == req.getType()) {" + NL + "\t\t\t";
110
  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}";
111
  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;
112
  protected final String TEXT_93 = NL;
113
  protected final String TEXT_94 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
114
  protected final String TEXT_95 = " structuralFeatures2Refresher;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Refresher getRefresher(";
115
  protected final String TEXT_96 = " feature, ";
116
  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;
117
  protected final String TEXT_98 = NL;
118
  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 ";
119
  protected final String TEXT_100 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void notifyChanged(";
120
  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((";
121
  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;
122
  protected final String TEXT_103 = NL;
123
  protected final String TEXT_104 = "\tpublic void addRefresher(";
124
  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(";
125
  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(";
126
  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();";
127
  protected final String TEXT_108 = NL;
128
  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(";
129
  protected final String TEXT_110 = ".eINSTANCE.getView_PersistedChildren(), childrenRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
130
  protected final String TEXT_111 = ".eINSTANCE.getView_TransientChildren(), childrenRefresher);";
131
  protected final String TEXT_112 = NL;
132
  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(";
133
  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 <i>generated</i> tag and modify it." + NL + "\t * " + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
134
  protected final String TEXT_115 = " createFigure() {";
135
  protected final String TEXT_116 = NL + "\t\treturn new ";
136
  protected final String TEXT_117 = "();";
137
  protected final String TEXT_118 = NL + "\t\treturn ";
138
  protected final String TEXT_119 = ";";
139
  protected final String TEXT_120 = NL + " \t\treturn new ";
140
  protected final String TEXT_121 = "();";
141
  protected final String TEXT_122 = NL + "\t}" + NL;
142
  protected final String TEXT_123 = NL;
143
  protected final String TEXT_124 = NL;
144
  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}";
145
  protected final String TEXT_126 = NL + "}";
146
  protected final String TEXT_127 = NL;
147
148
  public String generate(Object argument)
149
  {
150
    final StringBuffer stringBuffer = new StringBuffer();
151
    
152
GenLink genLink = (GenLink) ((Object[]) argument)[0];
153
GenDiagram genDiagram = genLink.getDiagram();
154
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
155
156
    stringBuffer.append(TEXT_1);
157
    
158
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
159
if (copyrightText != null && copyrightText.trim().length() > 0) {
160
161
    stringBuffer.append(TEXT_2);
162
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
163
    stringBuffer.append(TEXT_3);
164
    }
165
    
166
importManager.emitPackageStatement(stringBuffer);
167
importManager.addImport("java.util.List");
168
importManager.markImportLocation(stringBuffer);
169
170
    stringBuffer.append(TEXT_4);
171
    stringBuffer.append(genLink.getEditPartClassName());
172
    stringBuffer.append(TEXT_5);
173
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractConnectionEditPart"));
174
    stringBuffer.append(TEXT_6);
175
    stringBuffer.append(genLink.getEditPartClassName());
176
    stringBuffer.append(TEXT_7);
177
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
178
    stringBuffer.append(TEXT_8);
179
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge"));
180
    stringBuffer.append(TEXT_9);
181
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge"));
182
    stringBuffer.append(TEXT_10);
183
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge"));
184
    stringBuffer.append(TEXT_11);
185
    stringBuffer.append(TEXT_12);
186
    stringBuffer.append(TEXT_13);
187
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
188
    stringBuffer.append(TEXT_14);
189
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ComponentEditPolicy"));
190
    stringBuffer.append(TEXT_15);
191
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
192
    stringBuffer.append(TEXT_16);
193
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.GroupRequest"));
194
    stringBuffer.append(TEXT_17);
195
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
196
    stringBuffer.append(TEXT_18);
197
    
198
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
199
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
200
		GenFeature sourceFeature = modelFacet.getSourceMetaFeature();
201
		GenFeature containmentFeature = modelFacet.getContainmentMetaFeature();
202
		GenFeature childFeature = modelFacet.getChildMetaFeature();
203
		GenFeature targetFeature = modelFacet.getTargetMetaFeature();
204
		//See creation of links in NodeEditPart
205
206
		boolean removeSource = sourceFeature != null;
207
		boolean removeTarget = targetFeature != null;
208
		boolean removeChild = childFeature != null && childFeature != containmentFeature && !childFeature.isDerived();
209
		if (containmentFeature != null) {
210
			if (sourceFeature != null && sourceFeature.getEcoreFeature() instanceof EReference == true) {
211
				EReference sourceEcoreFeature = (EReference)sourceFeature.getEcoreFeature();
212
				if (sourceEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) {
213
					removeSource = false;
214
				}
215
			}
216
			if (targetFeature != null && targetFeature.getEcoreFeature() instanceof EReference == true) {
217
				EReference targetEcoreFeature = (EReference)targetFeature.getEcoreFeature();
218
				if (targetEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) {
219
					removeTarget = false;
220
				}
221
			}
222
223
    stringBuffer.append(TEXT_19);
224
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
225
    stringBuffer.append(TEXT_20);
226
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
227
    stringBuffer.append(TEXT_21);
228
    
229
			if (containmentFeature.getEcoreFeature().isMany()) {
230
231
    stringBuffer.append(TEXT_22);
232
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
233
    stringBuffer.append(TEXT_23);
234
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
235
    stringBuffer.append(TEXT_24);
236
    
237
			} else {
238
239
    stringBuffer.append(TEXT_25);
240
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
241
    stringBuffer.append(TEXT_26);
242
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
243
    stringBuffer.append(TEXT_27);
244
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
245
    stringBuffer.append(TEXT_28);
246
    
247
			}
248
		} else {
249
250
    stringBuffer.append(TEXT_29);
251
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand"));
252
    stringBuffer.append(TEXT_30);
253
    
254
		}
255
		if (removeChild) {
256
			if (childFeature.getEcoreFeature().isMany()) {
257
258
    stringBuffer.append(TEXT_31);
259
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
260
    stringBuffer.append(TEXT_32);
261
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
262
    stringBuffer.append(TEXT_33);
263
    stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName()));
264
    stringBuffer.append(TEXT_34);
265
    stringBuffer.append(childFeature.getFeatureAccessorName());
266
    stringBuffer.append(TEXT_35);
267
    
268
			} else {
269
270
    stringBuffer.append(TEXT_36);
271
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
272
    stringBuffer.append(TEXT_37);
273
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
274
    stringBuffer.append(TEXT_38);
275
    stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName()));
276
    stringBuffer.append(TEXT_39);
277
    stringBuffer.append(childFeature.getFeatureAccessorName());
278
    stringBuffer.append(TEXT_40);
279
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
280
    stringBuffer.append(TEXT_41);
281
    
282
			}
283
		}
284
		if (removeSource) {
285
			if (sourceFeature.getEcoreFeature().isMany()) {
286
287
    stringBuffer.append(TEXT_42);
288
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
289
    stringBuffer.append(TEXT_43);
290
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
291
    stringBuffer.append(TEXT_44);
292
    stringBuffer.append(importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName()));
293
    stringBuffer.append(TEXT_45);
294
    stringBuffer.append(sourceFeature.getFeatureAccessorName());
295
    stringBuffer.append(TEXT_46);
296
    
297
			} else {
298
299
    stringBuffer.append(TEXT_47);
300
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
301
    stringBuffer.append(TEXT_48);
302
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
303
    stringBuffer.append(TEXT_49);
304
    stringBuffer.append(importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName()));
305
    stringBuffer.append(TEXT_50);
306
    stringBuffer.append(sourceFeature.getFeatureAccessorName());
307
    stringBuffer.append(TEXT_51);
308
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
309
    stringBuffer.append(TEXT_52);
310
    
311
			}
312
		}
313
		if (removeTarget) {
314
			if (targetFeature.getEcoreFeature().isMany()) {
315
316
    stringBuffer.append(TEXT_53);
317
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
318
    stringBuffer.append(TEXT_54);
319
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
320
    stringBuffer.append(TEXT_55);
321
    stringBuffer.append(importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName()));
322
    stringBuffer.append(TEXT_56);
323
    stringBuffer.append(targetFeature.getFeatureAccessorName());
324
    stringBuffer.append(TEXT_57);
325
    
326
			} else {
327
328
    stringBuffer.append(TEXT_58);
329
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
330
    stringBuffer.append(TEXT_59);
331
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
332
    stringBuffer.append(TEXT_60);
333
    stringBuffer.append(importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName()));
334
    stringBuffer.append(TEXT_61);
335
    stringBuffer.append(targetFeature.getFeatureAccessorName());
336
    stringBuffer.append(TEXT_62);
337
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
338
    stringBuffer.append(TEXT_63);
339
    
340
			}
341
		}
342
343
    stringBuffer.append(TEXT_64);
344
    
345
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
346
		GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature();
347
		if (metaFeature.getEcoreFeature().isMany()) {
348
349
    stringBuffer.append(TEXT_65);
350
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
351
    stringBuffer.append(TEXT_66);
352
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
353
    stringBuffer.append(TEXT_67);
354
    stringBuffer.append(importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName()));
355
    stringBuffer.append(TEXT_68);
356
    stringBuffer.append(metaFeature.getFeatureAccessorName());
357
    stringBuffer.append(TEXT_69);
358
    
359
		} else {
360
361
    stringBuffer.append(TEXT_70);
362
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
363
    stringBuffer.append(TEXT_71);
364
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
365
    stringBuffer.append(TEXT_72);
366
    stringBuffer.append(importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName()));
367
    stringBuffer.append(TEXT_73);
368
    stringBuffer.append(metaFeature.getFeatureAccessorName());
369
    stringBuffer.append(TEXT_74);
370
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
371
    stringBuffer.append(TEXT_75);
372
    
373
		}
374
375
    
376
	}
377
378
    stringBuffer.append(TEXT_76);
379
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
380
    stringBuffer.append(TEXT_77);
381
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy"));
382
    stringBuffer.append(TEXT_78);
383
    
384
if (genLink.getLabels().size() > 0) {
385
	GenLinkLabel primaryLabel = (GenLinkLabel)genLink.getLabels().get(0);
386
387
    stringBuffer.append(TEXT_79);
388
    stringBuffer.append(TEXT_80);
389
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
390
    stringBuffer.append(TEXT_81);
391
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
392
    stringBuffer.append(TEXT_82);
393
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()));
394
    stringBuffer.append(TEXT_83);
395
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
396
    stringBuffer.append(TEXT_84);
397
    stringBuffer.append(importManager.getImportedName("java.util.Iterator"));
398
    stringBuffer.append(TEXT_85);
399
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
400
    stringBuffer.append(TEXT_86);
401
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
402
    stringBuffer.append(TEXT_87);
403
    stringBuffer.append(primaryLabel.getVisualID());
404
    stringBuffer.append(TEXT_88);
405
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request"));
406
    stringBuffer.append(TEXT_89);
407
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants"));
408
    stringBuffer.append(TEXT_90);
409
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
410
    stringBuffer.append(TEXT_91);
411
    
412
}	//if (genLink.getLabels().size() > 0)
413
414
    stringBuffer.append(TEXT_92);
415
    stringBuffer.append(TEXT_93);
416
    stringBuffer.append(TEXT_94);
417
    stringBuffer.append(importManager.getImportedName("java.util.HashMap"));
418
    stringBuffer.append(TEXT_95);
419
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
420
    stringBuffer.append(TEXT_96);
421
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification"));
422
    stringBuffer.append(TEXT_97);
423
    stringBuffer.append(TEXT_98);
424
    stringBuffer.append(TEXT_99);
425
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.impl.AdapterImpl"));
426
    stringBuffer.append(TEXT_100);
427
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification"));
428
    stringBuffer.append(TEXT_101);
429
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
430
    stringBuffer.append(TEXT_102);
431
    stringBuffer.append(TEXT_103);
432
    stringBuffer.append(TEXT_104);
433
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
434
    stringBuffer.append(TEXT_105);
435
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
436
    stringBuffer.append(TEXT_106);
437
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
438
    stringBuffer.append(TEXT_107);
439
    stringBuffer.append(TEXT_108);
440
    stringBuffer.append(TEXT_109);
441
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
442
    stringBuffer.append(TEXT_110);
443
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
444
    stringBuffer.append(TEXT_111);
445
    stringBuffer.append(TEXT_112);
446
    stringBuffer.append(TEXT_113);
447
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
448
    stringBuffer.append(TEXT_114);
449
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
450
    stringBuffer.append(TEXT_115);
451
    
452
Viewmap viewmap = genLink.getViewmap();
453
if (viewmap instanceof FigureViewmap) {
454
	String figureQualifiedClassName = null;
455
	figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName();
456
	if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) {
457
		figureQualifiedClassName = "org.eclipse.gmf.runtime.draw2d.PolylineConnection";
458
	}
459
460
    stringBuffer.append(TEXT_116);
461
    stringBuffer.append(importManager.getImportedName(figureQualifiedClassName));
462
    stringBuffer.append(TEXT_117);
463
    } // instanceof FigureViewmap
464
	else if (viewmap instanceof SnippetViewmap) {
465
    stringBuffer.append(TEXT_118);
466
    stringBuffer.append(((SnippetViewmap) viewmap).getBody());
467
    stringBuffer.append(TEXT_119);
468
    } // instanceof SnippetViewmap 
469
	else if (viewmap instanceof InnerClassViewmap) {
470
    stringBuffer.append(TEXT_120);
471
    stringBuffer.append(((InnerClassViewmap) viewmap).getClassName());
472
    stringBuffer.append(TEXT_121);
473
    }
474
    stringBuffer.append(TEXT_122);
475
    
476
if (genLink.getViewmap() instanceof InnerClassViewmap) {
477
	String classBody = ((InnerClassViewmap) genLink.getViewmap()).getClassBody();
478
479
    stringBuffer.append(TEXT_123);
480
    stringBuffer.append(classBody);
481
    stringBuffer.append(TEXT_124);
482
    
483
if (classBody.indexOf("DPtoLP") != -1) {
484
485
    stringBuffer.append(TEXT_125);
486
    
487
}
488
489
    
490
}
491
492
    stringBuffer.append(TEXT_126);
493
    importManager.emitSortedImports();
494
    stringBuffer.append(TEXT_127);
495
    return stringBuffer.toString();
496
  }
497
}
(-)templates/editor/getModelID.jetinc (+10 lines)
Added Link Here
1
	/**
2
	 * @generated
3
	 */
4
	private String getModelID(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> containerView) {
5
		<%=importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")%> annotation = containerView.getEAnnotation("ViewIdentifier"); //$NON-NLS-1$
6
		if (annotation == null) {
7
			return null;
8
		}
9
		return (String) annotation.getDetails().get("modelID"); //$NON-NLS-1$
10
	}
(-)templates/editor/Editor.javajet (+760 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="EditorGenerator"
2
    imports="org.eclipse.emf.common.util.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
final GenEditorView genEditor = (GenEditorView) ((Object[]) argument)[0];
5
final GenDiagram genDiagram = genEditor.getEditorGen().getDiagram();
6
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
8
importManager.emitPackageStatement(stringBuffer);
9
importManager.markImportLocation(stringBuffer);%>
10
11
<%
12
importManager.addImport("java.io.IOException");
13
importManager.addImport("java.util.ArrayList");
14
importManager.addImport("java.util.Collections");
15
importManager.addImport("java.util.EventObject");
16
importManager.addImport("java.util.HashMap");
17
importManager.addImport("java.util.Iterator");
18
importManager.addImport("java.util.List");
19
20
importManager.addImport("org.eclipse.core.runtime.CoreException");
21
importManager.addImport("org.eclipse.core.runtime.IProgressMonitor");
22
importManager.addImport("org.eclipse.core.runtime.IStatus");
23
importManager.addImport("org.eclipse.core.runtime.NullProgressMonitor");
24
importManager.addImport("org.eclipse.core.runtime.Status");
25
importManager.addImport("org.eclipse.draw2d.PositionConstants");
26
importManager.addImport("org.eclipse.emf.common.command.BasicCommandStack");
27
importManager.addImport("org.eclipse.emf.common.ui.URIEditorInput");
28
importManager.addImport("org.eclipse.emf.common.util.URI");
29
importManager.addImport("org.eclipse.emf.ecore.resource.Resource");
30
importManager.addImport("org.eclipse.emf.ecore.resource.ResourceSet");
31
importManager.addImport("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain");
32
importManager.addImport("org.eclipse.emf.edit.domain.EditingDomain");
33
importManager.addImport("org.eclipse.emf.edit.provider.ComposedAdapterFactory");
34
importManager.addImport("org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory");
35
importManager.addImport("org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory");
36
importManager.addImport("org.eclipse.gef.ContextMenuProvider");
37
importManager.addImport("org.eclipse.gef.EditPartViewer");
38
importManager.addImport("org.eclipse.gef.GraphicalViewer");
39
importManager.addImport("org.eclipse.gef.KeyHandler");
40
importManager.addImport("org.eclipse.gef.KeyStroke");
41
importManager.addImport("org.eclipse.gef.RootEditPart");
42
importManager.addImport("org.eclipse.gef.MouseWheelHandler");
43
importManager.addImport("org.eclipse.gef.MouseWheelZoomHandler");
44
importManager.addImport("org.eclipse.gef.commands.CommandStack");
45
importManager.addImport("org.eclipse.gef.commands.CommandStackListener");
46
importManager.addImport("org.eclipse.gef.editparts.ScalableFreeformRootEditPart");
47
importManager.addImport("org.eclipse.gef.editparts.ScalableRootEditPart");
48
importManager.addImport("org.eclipse.gef.editparts.ZoomManager");
49
importManager.addImport("org.eclipse.gef.palette.PaletteRoot");
50
importManager.addImport("org.eclipse.gef.ui.actions.AlignmentAction");
51
importManager.addImport("org.eclipse.gef.ui.actions.DeleteAction");
52
importManager.addImport("org.eclipse.gef.ui.actions.DirectEditAction");
53
importManager.addImport("org.eclipse.gef.ui.actions.GEFActionConstants");
54
importManager.addImport("org.eclipse.gef.ui.actions.PrintAction");
55
importManager.addImport("org.eclipse.gef.ui.actions.RedoAction");
56
importManager.addImport("org.eclipse.gef.ui.actions.SaveAction");
57
importManager.addImport("org.eclipse.gef.ui.actions.SelectionAction");
58
importManager.addImport("org.eclipse.gef.ui.actions.StackAction");
59
importManager.addImport("org.eclipse.gef.ui.actions.UndoAction");
60
importManager.addImport("org.eclipse.gef.ui.actions.UpdateAction");
61
importManager.addImport("org.eclipse.gef.ui.actions.WorkbenchPartAction");
62
importManager.addImport("org.eclipse.gef.ui.actions.ZoomInAction");
63
importManager.addImport("org.eclipse.gef.ui.actions.ZoomOutAction");
64
importManager.addImport("org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler");
65
importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram");
66
importManager.addImport("org.eclipse.gmf.runtime.notation.NotationFactory");
67
importManager.addImport("org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory");
68
importManager.addImport("org.eclipse.jface.action.IAction");
69
importManager.addImport("org.eclipse.jface.action.IMenuManager");
70
importManager.addImport("org.eclipse.jface.action.MenuManager");
71
importManager.addImport("org.eclipse.jface.action.Separator");
72
importManager.addImport("org.eclipse.jface.dialogs.ErrorDialog");
73
importManager.addImport("org.eclipse.jface.viewers.ISelection");
74
importManager.addImport("org.eclipse.swt.SWT");
75
importManager.addImport("org.eclipse.swt.widgets.Composite");
76
importManager.addImport("org.eclipse.ui.IEditorPart");
77
importManager.addImport("org.eclipse.ui.IEditorInput");
78
importManager.addImport("org.eclipse.ui.IEditorSite");
79
importManager.addImport("org.eclipse.ui.IPathEditorInput");
80
importManager.addImport("org.eclipse.ui.ISelectionListener");
81
importManager.addImport("org.eclipse.ui.IWorkbenchPart");
82
importManager.addImport("org.eclipse.ui.PartInitException");
83
importManager.addImport("org.eclipse.ui.actions.ActionFactory");
84
importManager.addImport("org.eclipse.ui.views.contentoutline.IContentOutlinePage");
85
importManager.addImport("org.eclipse.ui.views.properties.IPropertySheetPage");
86
importManager.addImport("org.eclipse.ui.views.properties.PropertySheetPage");
87
importManager.addImport("org.eclipse.emf.common.notify.AdapterFactory");
88
importManager.addImport("org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette");
89
importManager.addImport("org.eclipse.gef.DefaultEditDomain");
90
%>
91
92
/**
93
 * @generated
94
 */
95
public class <%=genEditor.getClassName()%> extends GraphicalEditorWithFlyoutPalette {
96
	/**
97
	 * @generated
98
	 */
99
	private static class UpdatableActionGroup {
100
		/**
101
		 * @generated
102
		 */
103
		public void addAction(UpdateAction action) {
104
			assert action != null;
105
			myActions.add(action);
106
		}
107
108
		/**
109
		 * @generated
110
		 */
111
		public void removeAction(UpdateAction action) {
112
			myActions.remove(action);
113
		}
114
115
		/**
116
		 * @generated
117
		 */
118
		public void update() {
119
			for (Iterator it = myActions.iterator(); it.hasNext();) {
120
				UpdateAction next = (UpdateAction) it.next();
121
				next.update();
122
			}
123
		}
124
125
		/**
126
		 * @generated
127
		 */
128
		private ArrayList myActions = new ArrayList();
129
	}
130
131
	/**
132
	 * @generated
133
	 */
134
	private EditingDomain editingDomain;
135
136
	/**
137
	 * @generated
138
	 */
139
	private <%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%> <%=genDiagram.getDomainDiagramElement().getSafeUncapName()%>;
140
141
	/**
142
	 * @generated
143
	 */
144
	private <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%> diagram;
145
146
	/**
147
	 * @generated
148
	 */
149
	private boolean isDirty = false;
150
151
	/**
152
	 * @generated
153
	 */
154
	private PaletteRoot paletteRoot;
155
156
	/**
157
	 * @generated
158
	 */
159
	private PropertySheetPage undoablePropertySheetPage;
160
161
	/**
162
	 * @generated
163
	 */
164
	private UpdatableActionGroup stackActions = new UpdatableActionGroup();
165
166
	/**
167
	 * @generated
168
	 */
169
	private CommandStackListener commandStackListener = new CommandStackListener() {
170
171
		public void commandStackChanged(EventObject event) {
172
			stackActions.update();
173
			setDirty(((CommandStack) event.getSource()).isDirty());
174
		}
175
	};
176
177
	/**
178
	 * @generated
179
	 */
180
	private UpdatableActionGroup editPartActions = new UpdatableActionGroup();
181
182
	/**
183
	 * @generated
184
	 */
185
	private ISelectionListener selectionListener = new ISelectionListener() {
186
187
		public void selectionChanged(IWorkbenchPart part, ISelection selection) {
188
			editPartActions.update();
189
		}
190
	};
191
192
	/**
193
	 * @generated
194
	 */
195
	private UpdatableActionGroup editorActions = new UpdatableActionGroup();
196
197
	/**
198
	 * @generated
199
	 */
200
	private ComposedAdapterFactory domainAdapterFactory;
201
202
	/**
203
	 * @generated
204
	 */
205
	protected void firePropertyChange(int propertyId) {
206
		super.firePropertyChange(propertyId);
207
		editorActions.update();
208
	}
209
210
	/**
211
	 * Adds an action to this editor's <code>ActionRegistry</code>. (This is
212
	 * a helper method.)
213
	 * 
214
	 * @generated
215
	 * @param action
216
	 *            the action to add.
217
	 */
218
	protected void addAction(IAction action) {
219
		getActionRegistry().registerAction(action);
220
	}
221
222
	/**
223
	 * Adds an editor action to this editor.
224
	 * 
225
	 * <p>
226
	 * Editor actions are actions that depend and work on the editor.
227
	 * 
228
	 * @generated
229
	 * @param action
230
	 *            the editor action
231
	 */
232
	protected void addEditorAction(WorkbenchPartAction action) {
233
		getActionRegistry().registerAction(action);
234
		editorActions.addAction(action);
235
	}
236
237
	/**
238
	 * Adds an <code>EditPart</code> action to this editor.
239
	 * 
240
	 * <p>
241
	 * <code>EditPart</code> actions are actions that depend and work on the
242
	 * selected <code>EditPart</code>s.
243
	 * 
244
	 * @generated
245
	 * @param action
246
	 *            the <code>EditPart</code> action
247
	 */
248
	protected void addEditPartAction(SelectionAction action) {
249
		getActionRegistry().registerAction(action);
250
		editPartActions.addAction(action);
251
	}
252
253
	/**
254
	 * Adds an <code>CommandStack</code> action to this editor.
255
	 * 
256
	 * <p>
257
	 * <code>CommandStack</code> actions are actions that depend and work on
258
	 * the <code>CommandStack</code>.
259
	 * 
260
	 * @generated
261
	 * @param action
262
	 *            the <code>CommandStack</code> action
263
	 */
264
	protected void addStackAction(StackAction action) {
265
		getActionRegistry().registerAction(action);
266
		stackActions.addAction(action);
267
	}
268
269
	/**
270
	 * @generated
271
	 */
272
	protected void createActions() {
273
		addStackAction(new UndoAction(this));
274
		addStackAction(new RedoAction(this));
275
276
		addEditPartAction(new DeleteAction((IWorkbenchPart) this));
277
		addEditPartAction(new DirectEditAction((IWorkbenchPart) this));
278
279
		addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.LEFT));
280
		addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.RIGHT));
281
		addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.TOP));
282
		addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.BOTTOM));
283
		addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.CENTER));
284
		addEditPartAction(new AlignmentAction((IWorkbenchPart) this, PositionConstants.MIDDLE));
285
286
		addEditorAction(new SaveAction(this));
287
		addEditorAction(new PrintAction(this));
288
289
		IAction zoomIn = new ZoomInAction(getZoomManager());
290
		IAction zoomOut = new ZoomOutAction(getZoomManager());
291
		addAction(zoomIn);
292
		addAction(zoomOut);
293
		getSite().getKeyBindingService().registerAction(zoomIn);
294
		getSite().getKeyBindingService().registerAction(zoomOut);
295
	}
296
297
	/**
298
	 * @generated
299
	 */
300
	public void dispose() {
301
		// remove CommandStackListener
302
		getCommandStack().removeCommandStackListener(getStackActionsListener());
303
304
		// remove selection listener
305
		getSite().getWorkbenchWindow().getSelectionService().removeSelectionListener(getSelectionListener());
306
307
		// dispose the ActionRegistry (will dispose all actions)
308
		getActionRegistry().dispose();
309
310
		// important: always call super implementation of dispose
311
		super.dispose();
312
	}
313
314
	/**
315
	 * @generated
316
	 */
317
	public void doSave(IProgressMonitor monitor) {
318
		try {
319
			save(monitor);
320
			getCommandStack().markSaveLocation();
321
		} catch (CoreException e) {
322
			ErrorDialog.openError(getSite().getShell(), "Error During Save", "The current <%=genDiagram.getEditorGen().getDomainGenModel().getModelName()%> model could not be saved.", e.getStatus());
323
		}
324
	}
325
326
	/**
327
	 * @generated
328
	 */
329
	private void save(IProgressMonitor progressMonitor) throws CoreException {
330
		if (progressMonitor == null) {
331
			progressMonitor = new NullProgressMonitor();
332
		}
333
		progressMonitor.beginTask("Saving", getEditingDomain().getResourceSet().getResources().size());
334
		try {
335
			for(Iterator it = getEditingDomain().getResourceSet().getResources().iterator(); it.hasNext(); ) {
336
				Resource next = (Resource)it.next();
337
				next.save(Collections.EMPTY_MAP);
338
				progressMonitor.worked(1);
339
			}
340
		} catch (IOException e) {
341
			IStatus status = new Status(IStatus.ERROR, <%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.ID, 0, "Error writing file.", e);
342
			throw new CoreException(status);
343
		} finally {
344
			progressMonitor.done();
345
		}
346
	}
347
348
	/**
349
	 * @generated
350
	 */
351
	public boolean isSaveAsAllowed() {
352
		// TODO: should be allowed.
353
		return false;
354
	}
355
356
	/**
357
	 * @generated
358
	 */
359
	public void doSaveAs() {
360
		// TODO: Implement.
361
	}
362
363
	/**
364
	 * @generated
365
	 */
366
	public Object getAdapter(Class type) {
367
		if (type == IPropertySheetPage.class) {
368
			return getPropertySheetPage();
369
		} else if (type == IContentOutlinePage.class) {
370
			return getOutlinePage();
371
		} else if (type == ZoomManager.class) {
372
			return getZoomManager();
373
		}
374
		return super.getAdapter(type);
375
	}
376
377
	/**
378
	 * @generated
379
	 */
380
	protected ZoomManager getZoomManager() {
381
		return getZoomManager(getGraphicalViewer());
382
	}
383
384
	/**
385
	 * @generated
386
	 */
387
	private ZoomManager getZoomManager(GraphicalViewer viewer) {
388
		// get zoom manager from root edit part
389
		RootEditPart rootEditPart = viewer.getRootEditPart();
390
		ZoomManager zoomManager = null;
391
		if (rootEditPart instanceof ScalableFreeformRootEditPart) {
392
			zoomManager = ((ScalableFreeformRootEditPart) rootEditPart).getZoomManager();
393
		} else if (rootEditPart instanceof ScalableRootEditPart) {
394
			zoomManager = ((ScalableRootEditPart) rootEditPart).getZoomManager();
395
		}
396
		return zoomManager;
397
	}
398
399
	/**
400
	 * @generated
401
	 */
402
	private CommandStackListener getStackActionsListener() {
403
		return commandStackListener;
404
	}
405
406
	/**
407
	 * @generated
408
	 */
409
	protected IContentOutlinePage getOutlinePage() {
410
		//TODO: outline page missing
411
		return null;
412
	}
413
414
	/**
415
	 * @generated
416
	 */
417
	protected PaletteRoot getPaletteRoot() {
418
		if (paletteRoot == null) {
419
			paletteRoot = new PaletteRoot();
420
<%
421
{
422
	final Palette palette = genDiagram.getPalette();
423
	if (palette != null) {
424
%>
425
			new <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>(getDomainAdapterFactory()).contributeToPalette(paletteRoot);
426
<%
427
	}
428
}
429
%>
430
		}
431
		return paletteRoot;
432
	}
433
434
	/**
435
	 * @generated
436
	 */
437
	protected PropertySheetPage getPropertySheetPage() {
438
		if (undoablePropertySheetPage == null) {
439
			undoablePropertySheetPage = new PropertySheetPage();
440
			<%=importManager.getImportedName("org.eclipse.gef.ui.properties.UndoablePropertySheetEntry")%> rootEntry = new <%=importManager.getImportedName("org.eclipse.gef.ui.properties.UndoablePropertySheetEntry")%>(getCommandStack());
441
			rootEntry.setPropertySourceProvider(new <%=importManager.getImportedName(genDiagram.getPropertyProviderQualifiedClassName())%>(getDomainAdapterFactory()));
442
			undoablePropertySheetPage.setRootEntry(rootEntry);
443
		}
444
445
		return undoablePropertySheetPage;
446
	}
447
448
	/**
449
	 * @generated
450
	 */
451
	private ISelectionListener getSelectionListener() {
452
		return selectionListener;
453
	}
454
455
	/**
456
	 * @generated
457
	 */
458
	public <%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%> get<%=genDiagram.getDomainDiagramElement().getClassifierAccessorName()%>() {
459
		return <%=genDiagram.getDomainDiagramElement().getSafeUncapName()%>;
460
	}
461
462
	/**
463
	 * @generated
464
	 */
465
	public Diagram getDiagram() {
466
		return diagram;
467
	}
468
469
	/**
470
	 * @generated
471
	 */
472
	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
473
		URI file = getURIFromInput(input);
474
		if (file == null) {
475
			throw new PartInitException("The specified input is not valid.");
476
		}
477
		setSite(site);
478
		setInput(input);
479
		setEditDomain(new DefaultEditDomain(this));
480
481
		// validate
482
		if (get<%=genDiagram.getDomainDiagramElement().getClassifierAccessorName()%>() == null) {
483
			throw new PartInitException("The specified input is not valid.");
484
		}
485
486
		// add CommandStackListener
487
		getCommandStack().addCommandStackListener(getStackActionsListener());
488
489
		// add selection change listener
490
		getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(getSelectionListener());
491
	}
492
493
	/**
494
	 * @generated
495
	 */
496
	protected void setInput(IEditorInput input)  {
497
		URI file = getURIFromInput(input);
498
		load(file);
499
		setPartName(file.lastSegment());
500
		setContentDescription(file.toFileString());
501
		super.setInput(input);
502
	}
503
504
	/**
505
	 * @generated
506
	 */
507
	private URI getURIFromInput(IEditorInput input) {
508
		if (input instanceof URIEditorInput) {
509
			return ((URIEditorInput) input).getURI();
510
		}
511
		if (input instanceof IPathEditorInput) {
512
			return URI.createFileURI(((IPathEditorInput)input).getPath().toOSString());
513
		}
514
		return null;
515
	}
516
517
	/**
518
	 * @generated
519
	 */
520
	public boolean isDirty() {
521
		return isDirty;
522
	}
523
524
	/**
525
	 * @generated
526
	 */
527
	private void setDirty(boolean dirty) {
528
		if (isDirty != dirty) {
529
			isDirty = dirty;
530
			firePropertyChange(IEditorPart.PROP_DIRTY);
531
		}
532
	}
533
534
	/**
535
	 * @generated
536
	 */
537
	protected EditingDomain getEditingDomain() {
538
		if (editingDomain == null) {
539
			BasicCommandStack commandStack = new BasicCommandStack();
540
			editingDomain = new AdapterFactoryEditingDomain(getDomainAdapterFactory(), commandStack, new HashMap());
541
			editingDomain.getResourceSet().eAdapters().add(new AdapterFactoryEditingDomain.EditingDomainProvider(editingDomain));
542
		}
543
		return editingDomain;
544
	}
545
546
	/**
547
	 * @generated
548
	 */
549
	private AdapterFactory getDomainAdapterFactory() {
550
		if (domainAdapterFactory == null) {
551
			List factories = new ArrayList();
552
			factories.add(new ResourceItemProviderAdapterFactory());
553
<%
554
final EList genPackages = genDiagram.getEditorGen().getAllDomainGenPackages(true);
555
for (int i = 0; i < genPackages.size(); i++) {
556
	GenPackage genPackage = (GenPackage) genPackages.get(i);
557
%>
558
			factories.add(new <%=importManager.getImportedName(genPackage.getQualifiedItemProviderAdapterFactoryClassName())%>());
559
<%}%>
560
			factories.add(new ReflectiveItemProviderAdapterFactory());
561
			factories.add(new NotationItemProviderAdapterFactory());
562
			domainAdapterFactory = new ComposedAdapterFactory(factories);
563
		}
564
		return domainAdapterFactory;
565
	}
566
567
	/**
568
	 * @generated
569
	 */
570
	private void load(URI diagramFile) {
571
		<%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> = null;
572
		diagram = null;
573
		if (diagramFile == null) {
574
			return;
575
		}
576
		EditingDomain editingDomain = getEditingDomain();
577
		ResourceSet resourceSet = editingDomain.getResourceSet();
578
		Resource diagramResource = resourceSet.getResource(diagramFile, true);
579
		if (diagramResource == null) {
580
			diagramResource = resourceSet.createResource(diagramFile);
581
		}
582
		diagram = (Diagram) findInResource(diagramResource, Diagram.class);
583
		if (diagram == null) {
584
			diagram = NotationFactory.eINSTANCE.createDiagram();
585
			diagramResource.getContents().add(0, diagram);
586
			//Auxiliary creation should not be undoable.
587
			try {
588
				diagramResource.save(Collections.EMPTY_MAP);
589
			} catch (IOException e) {
590
				diagram = null;
591
				<%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> = null;
592
				return;
593
			}
594
		}
595
<%
596
{
597
%>
598
<%
599
	boolean sameFile = genDiagram.getEditorGen().isSameFileForDiagramAndModel();
600
	String resourceToUse;
601
	if (!sameFile) {
602
%>
603
		URI modelFile = <%=genDiagram.getDiagramEditorUtilClassName()%>.getModelFileURI(diagramFile);
604
		Resource modelResource = resourceSet.getResource(modelFile, true);
605
		if (modelResource == null) {
606
			modelResource = resourceSet.createResource(modelFile);
607
		}
608
<%
609
		resourceToUse = "modelResource";
610
	} else {
611
		resourceToUse = "diagramResource";
612
	}
613
%>
614
		<%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> = (<%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%>) findInResource(<%=resourceToUse%>, <%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%>.class);
615
		if (<%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> == null) {
616
			<%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> = <%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryClassName())%>.eINSTANCE.create<%=genDiagram.getDomainDiagramElement().getClassifierAccessorName()%>();
617
			<%=resourceToUse%>.getContents().add(0, <%=genDiagram.getDomainDiagramElement().getSafeUncapName()%>);
618
			//We don't want this auxiliary creation to be undoable.
619
			try {
620
				<%=resourceToUse%>.save(Collections.EMPTY_MAP);
621
			} catch (IOException e) {
622
				diagram = null;
623
				<%=genDiagram.getDomainDiagramElement().getSafeUncapName()%> = null;
624
				return;
625
			}
626
		}
627
		if (!diagram.isSetElement()) {
628
			diagram.setElement(<%=genDiagram.getDomainDiagramElement().getSafeUncapName()%>);
629
		}
630
	}
631
<%
632
}
633
%>
634
635
	/**
636
	 * @generated
637
	 */
638
	private Object findInResource(Resource resource, Class expectedClass) {
639
		for(Iterator it = resource.getContents().iterator(); it.hasNext(); ) {
640
			Object next = it.next();
641
			if (expectedClass.isInstance(next)) {
642
				return next;
643
			}
644
		}
645
		return null;
646
	}
647
648
	/**
649
	 * @generated
650
	 */
651
	public void setFocus() {
652
		getGraphicalViewer().getControl().setFocus();
653
	}
654
655
	/**
656
	 * @generated
657
	 */
658
	public final void createPartControl(Composite parent) {
659
		super.createPartControl(parent);
660
		// initialize actions
661
		createActions();
662
	}
663
664
	/**
665
	 * @generated
666
	 */
667
	protected void createGraphicalViewer(Composite parent) {
668
		super.createGraphicalViewer(parent);
669
		// initialize the viewer with input
670
		ScalableFreeformRootEditPart root = new ScalableFreeformRootEditPart();
671
		getGraphicalViewer().setRootEditPart(root);
672
		getGraphicalViewer().setEditPartFactory(new <%=importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName())%>());
673
		getGraphicalViewer().setContents(getDiagram());
674
675
		<%=importManager.getImportedName("org.eclipse.draw2d.LayeredPane")%> printableLayers = (<%=importManager.getImportedName("org.eclipse.draw2d.LayeredPane")%>) root.getLayer(<%=importManager.getImportedName("org.eclipse.gef.LayerConstants")%>.PRINTABLE_LAYERS);
676
		<%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayer")%> extLabelsLayer = new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayer")%>();
677
		extLabelsLayer.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.DelegatingLayout")%>());
678
		printableLayers.addLayerAfter(extLabelsLayer, <%=importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName())%>.EXTERNAL_NODE_LABELS_LAYER, <%=importManager.getImportedName("org.eclipse.gef.LayerConstants")%>.PRIMARY_LAYER);
679
	}
680
681
	/**
682
	 * @generated
683
	 */
684
	protected void configureGraphicalViewer() {
685
		super.configureGraphicalViewer();
686
		GraphicalViewer viewer = getGraphicalViewer();
687
		// configure the context menu
688
		ContextMenuProvider provider = new <%=genEditor.getClassName()%>ContextMenuProvider(viewer);
689
		viewer.setContextMenu(provider);
690
		getSite().registerContextMenu(<%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.ID + ".editor.contextmenu", provider, getSite().getSelectionProvider()); //$NON-NLS-1$
691
692
		KeyHandler keyHandler = new GraphicalViewerKeyHandler(viewer);
693
		keyHandler.put(KeyStroke.getPressed(SWT.DEL, 127, 0), getActionRegistry().getAction(ActionFactory.DELETE.getId()));
694
		keyHandler.put(KeyStroke.getPressed(SWT.F2, 0), getActionRegistry().getAction(GEFActionConstants.DIRECT_EDIT));
695
		viewer.setKeyHandler(keyHandler);
696
697
		viewer.setProperty(MouseWheelHandler.KeyGenerator.getKey(SWT.CTRL), MouseWheelZoomHandler.SINGLETON);
698
	}
699
700
	/**
701
	 * @generated
702
	 */
703
	private class <%=genEditor.getClassName()%>ContextMenuProvider extends ContextMenuProvider {
704
		/**
705
		 * @generated
706
		 */
707
		public <%=genEditor.getClassName()%>ContextMenuProvider(EditPartViewer viewer) {
708
			super(viewer);
709
		}
710
711
		/**
712
		 * @generated
713
		 */
714
	    public void buildContextMenu(IMenuManager menuManager) {
715
	        GEFActionConstants.addStandardActionGroups(menuManager);
716
			appendActionToMenu(menuManager, ActionFactory.UNDO.getId(), GEFActionConstants.GROUP_UNDO);
717
			appendActionToMenu(menuManager, ActionFactory.REDO.getId(), GEFActionConstants.GROUP_UNDO);
718
	
719
			appendActionToMenu(menuManager, ActionFactory.COPY.getId(), GEFActionConstants.GROUP_EDIT);
720
			appendActionToMenu(menuManager, ActionFactory.PASTE.getId(), GEFActionConstants.GROUP_EDIT);
721
			appendActionToMenu(menuManager, ActionFactory.DELETE.getId(), GEFActionConstants.GROUP_EDIT);
722
			appendActionToMenu(menuManager, GEFActionConstants.DIRECT_EDIT, GEFActionConstants.GROUP_EDIT);
723
724
			appendActionToMenu(menuManager, ActionFactory.SAVE.getId(), GEFActionConstants.GROUP_SAVE);
725
726
			appendAlignmentSubmenu(menuManager);
727
	    }
728
729
		/**
730
		 * @generated
731
		 */
732
		private void appendAlignmentSubmenu(IMenuManager menuManager) {
733
			// Alignment Actions
734
			MenuManager submenu = new MenuManager("Align");
735
			submenu.add(new Separator(GEFActionConstants.MB_ADDITIONS));
736
	
737
			appendActionToMenu(submenu, GEFActionConstants.ALIGN_LEFT, GEFActionConstants.MB_ADDITIONS);
738
			appendActionToMenu(submenu, GEFActionConstants.ALIGN_CENTER, GEFActionConstants.MB_ADDITIONS);
739
			appendActionToMenu(submenu, GEFActionConstants.ALIGN_RIGHT, GEFActionConstants.MB_ADDITIONS);
740
			appendActionToMenu(submenu, GEFActionConstants.ALIGN_TOP, GEFActionConstants.MB_ADDITIONS);
741
			appendActionToMenu(submenu, GEFActionConstants.ALIGN_MIDDLE, GEFActionConstants.MB_ADDITIONS);
742
			appendActionToMenu(submenu, GEFActionConstants.ALIGN_BOTTOM, GEFActionConstants.MB_ADDITIONS);
743
	
744
			if (!submenu.isEmpty()) {
745
				menuManager.appendToGroup(GEFActionConstants.GROUP_REST, submenu);
746
			}
747
		}
748
749
		/**
750
		 * @generated
751
		 */
752
		private void appendActionToMenu(IMenuManager menu, String actionId, String menuGroup) {
753
			IAction action = getActionRegistry().getAction(actionId);
754
			if (action != null && action.isEnabled()) {
755
				menu.appendToGroup(menuGroup, action);
756
			}
757
		}
758
	}
759
}
760
<%importManager.emitSortedImports();%>
(-)templates/parts/refreshers.javajetinc/visibility.javajetinc (+6 lines)
Added Link Here
1
		Refresher visibilityRefresher = new Refresher() {
2
			public void refresh() {
3
				refreshVisibility();
4
			}
5
		};
6
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getView_Visible(), visibilityRefresher);
(-)templates/parts/NodeLabelEditPart.javajet (+197 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="NodeLabelEditPartGenerator"
2
	imports="java.util.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.emf.ecore.*"%>
3
<%
4
GenNodeLabel genLabel = (GenNodeLabel) ((Object[]) argument)[0];
5
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
6
GenNode genHost = genLabel.getNode();
7
GenClass underlyingMetaClass = genHost.getDomainMetaClass();
8
GenDiagram genDiagram = genLabel.getDiagram();
9
LabelModelFacet labelModelFacet = genLabel.getModelFacet();
10
%>
11
<%@ include file="../copyright4java.jetinc"%>
12
<%importManager.emitPackageStatement(stringBuffer);%>
13
14
<%
15
importManager.addImport("org.eclipse.gef.EditPart");
16
importManager.addImport("org.eclipse.gef.EditPolicy");
17
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
18
importManager.markImportLocation(stringBuffer);
19
%>
20
21
/**
22
 * @generated
23
 */
24
public class <%=genLabel.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")%> {
25
<%@ include file="textAwareFields.jetinc"%>
26
27
	/**
28
	 * @generated
29
	 */
30
	public <%=genLabel.getEditPartClassName()%>(View view) {
31
		setModel(view);
32
	}
33
34
	/**
35
	 * @generated
36
	 */
37
	protected void createEditPolicies() {
38
<%
39
	final String primaryView = "getUpdatableParent().getDiagramNode()";
40
	final String resolvedSemanticElement = "resolveSemanticElement()";
41
%>
42
<%@ include file="directEditPolicy.javajetinc"%>
43
	}
44
45
<%@ include file="directEdit.javajetinc"%>
46
47
	/**
48
	 * @generated
49
	 */
50
	protected void refreshVisuals() {
51
		super.refreshVisuals();
52
		refreshLabel();
53
		refreshFont();
54
		refreshFontColor();
55
	}
56
57
	/**
58
	 * @generated
59
	 */
60
	protected void refreshLabel() {
61
		getLabel().setText(getLabelText());
62
		getLabel().setIcon(getLabelIcon());
63
	}
64
65
<%@ include file="labelText.javajetinc"%>
66
<%@ include file="refreshMethods/font.javajetinc"%>
67
<%@ include file="refreshMethods/fontColor.javajetinc"%>
68
69
	/**
70
	 * @generated
71
	 */
72
	protected <%=importManager.getImportedName("org.eclipse.swt.graphics.Image")%> getLabelIcon() {
73
		<%=importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())%> element = resolveSemanticElement();
74
		<%=importManager.getImportedName("org.eclipse.jface.resource.ImageDescriptor")%> imageDescriptor = <%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().getItemImageDescriptor(element);
75
		if (imageDescriptor != null) {
76
			return imageDescriptor.createImage();
77
		}
78
		return <%=importManager.getImportedName("org.eclipse.jface.resource.ImageDescriptor")%>.getMissingImageDescriptor().createImage();
79
	}
80
81
	/**
82
	 * @generated
83
	 */
84
	private <%=importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())%> resolveSemanticElement() {
85
		for(EditPart editPart = this; editPart != null; editPart = editPart.getParent()) {
86
			View view = (View)editPart.getModel();
87
			if (view != null && view.getElement() != null) {
88
				return (<%=importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName())%>) view.getElement();
89
			}
90
		}
91
		return null;
92
	}
93
94
	/**
95
	 * @generated
96
	 */
97
	private <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> getUpdatableParent() {
98
		for(EditPart editPart = getParent(); editPart != null; editPart = editPart.getParent()) {
99
			if (editPart instanceof <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%>) {
100
				return (<%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%>) editPart;
101
			}
102
		}
103
		return null;
104
	}
105
106
	/**
107
	 * @generated
108
	 */
109
	public void activate() {
110
		super.activate();
111
		<%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> updatableParent = getUpdatableParent();
112
		if (updatableParent != null) {
113
			updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);
114
			updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontHeight(), fontRefresher);
115
			updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontName(), fontRefresher);
116
			updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Bold(), fontRefresher);
117
			updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Italic(), fontRefresher);
118
<%
119
if (labelModelFacet instanceof FeatureLabelModelFacet) {
120
	GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
121
%>
122
			updatableParent.addRefresher(<%=importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=feature.getFeatureAccessorName()%>(), labelRefresher);
123
<%
124
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
125
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
126
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
127
		GenFeature next = (GenFeature) it.next();
128
%>
129
			updatableParent.addRefresher(<%=importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getFeatureAccessorName()%>(), labelRefresher);
130
<%
131
	}
132
}
133
%>
134
		}
135
	}
136
137
	/**
138
	 * @generated
139
	 */
140
	public void deactivate() {
141
		super.deactivate();
142
		<%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> updatableParent = getUpdatableParent();
143
		if (updatableParent != null) {
144
			updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);
145
			updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontHeight(), fontRefresher);
146
			updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontName(), fontRefresher);
147
			updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Bold(), fontRefresher);
148
			updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Italic(), fontRefresher);
149
<%
150
if (labelModelFacet instanceof FeatureLabelModelFacet) {
151
	GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
152
%>
153
			updatableParent.removeRefresher(<%=importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=feature.getFeatureAccessorName()%>(), labelRefresher);
154
<%
155
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
156
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
157
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
158
		GenFeature next = (GenFeature) it.next();
159
%>
160
			updatableParent.removeRefresher(<%=importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getFeatureAccessorName()%>(), labelRefresher);
161
<%
162
	}
163
}
164
%>
165
		}
166
	}
167
168
	/**
169
	 * @generated
170
	 */
171
	private IUpdatableEditPart.Refresher labelRefresher = new IUpdatableEditPart.Refresher() {
172
		public void refresh() {
173
			refreshLabel();
174
		}
175
	};
176
177
178
	/**
179
	 * @generated
180
	 */
181
	private IUpdatableEditPart.Refresher fontColorRefresher = new IUpdatableEditPart.Refresher() {
182
		public void refresh() {
183
			refreshFontColor();
184
		}
185
	};
186
187
	/**
188
	 * @generated
189
	 */
190
	private IUpdatableEditPart.Refresher fontRefresher = new IUpdatableEditPart.Refresher() {
191
		public void refresh() {
192
			refreshFont();
193
		}
194
	};
195
<%@ include file="labelFigure.jetinc"%>
196
}
197
<%importManager.emitSortedImports();%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginXML.java (+70 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.emf.codegen.ecore.genmodel.*;
5
6
public class PluginXML
7
{
8
  protected static String nl;
9
  public static synchronized PluginXML create(String lineSeparator)
10
  {
11
    nl = lineSeparator;
12
    PluginXML result = new PluginXML();
13
    nl = null;
14
    return result;
15
  }
16
17
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
18
  protected final String TEXT_1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + NL + "<?eclipse version=\"3.0\"?>" + NL + "<plugin>" + NL + "  <extension point=\"org.eclipse.team.core.fileTypes\">" + NL + "      <fileTypes" + NL + "         type=\"text\"" + NL + "         extension=\"";
19
  protected final String TEXT_2 = "\">" + NL + "      </fileTypes>" + NL + "  </extension>" + NL + "" + NL + "   <extension point=\"org.eclipse.ui.editors\">" + NL + "     <editor" + NL + "        id=\"";
20
  protected final String TEXT_3 = "\"" + NL + "        name=\"";
21
  protected final String TEXT_4 = " Diagram Editor\"" + NL + "        icon=\"";
22
  protected final String TEXT_5 = "\"" + NL + "        extensions=\"";
23
  protected final String TEXT_6 = "\"" + NL + "        default=\"true\"" + NL + "        class=\"";
24
  protected final String TEXT_7 = "\"" + NL + "        contributorClass=\"";
25
  protected final String TEXT_8 = "\">" + NL + "     </editor>" + NL + "   </extension>" + NL + "" + NL + "   <extension point=\"org.eclipse.ui.newWizards\">" + NL + "  \t  <wizard" + NL + "  \t     name=\"";
26
  protected final String TEXT_9 = " Diagram\"" + NL + "  \t     icon=\"";
27
  protected final String TEXT_10 = "\"" + NL + "  \t     category=\"org.eclipse.ui.Examples\"" + NL + "  \t     class=\"";
28
  protected final String TEXT_11 = "\"" + NL + "  \t     id=\"";
29
  protected final String TEXT_12 = "ID\">" + NL + "  \t  \t <description>" + NL + "  \t  \t\tCreates ";
30
  protected final String TEXT_13 = " diagram." + NL + "  \t  \t </description>  " + NL + "      </wizard>" + NL + "   </extension>" + NL + "" + NL + "</plugin>";
31
  protected final String TEXT_14 = NL;
32
33
  public String generate(Object argument)
34
  {
35
    final StringBuffer stringBuffer = new StringBuffer();
36
    
37
final GenPlugin genPlugin = (GenPlugin) argument;
38
final GenEditorGenerator editorGen = genPlugin.getEditorGen();
39
final GenDiagram genDiagram = editorGen.getDiagram();
40
final GenModel genModel = editorGen.getDomainGenModel();
41
42
    stringBuffer.append(TEXT_1);
43
    stringBuffer.append(editorGen.getDiagramFileExtension());
44
    stringBuffer.append(TEXT_2);
45
    stringBuffer.append(editorGen.getEditor().getID());
46
    stringBuffer.append(TEXT_3);
47
    stringBuffer.append(genModel.getModelName());
48
    stringBuffer.append(TEXT_4);
49
    stringBuffer.append(editorGen.getEditor().getIconPath());
50
    stringBuffer.append(TEXT_5);
51
    stringBuffer.append(editorGen.getDiagramFileExtension());
52
    stringBuffer.append(TEXT_6);
53
    stringBuffer.append(editorGen.getEditor().getQualifiedClassName());
54
    stringBuffer.append(TEXT_7);
55
    stringBuffer.append(editorGen.getEditor().getActionBarContributorQualifiedClassName());
56
    stringBuffer.append(TEXT_8);
57
    stringBuffer.append(genModel.getModelName());
58
    stringBuffer.append(TEXT_9);
59
    stringBuffer.append(genDiagram.getCreationWizardIconPath());
60
    stringBuffer.append(TEXT_10);
61
    stringBuffer.append(genDiagram.getCreationWizardQualifiedClassName());
62
    stringBuffer.append(TEXT_11);
63
    stringBuffer.append(genDiagram.getCreationWizardQualifiedClassName());
64
    stringBuffer.append(TEXT_12);
65
    stringBuffer.append(genModel.getModelName());
66
    stringBuffer.append(TEXT_13);
67
    stringBuffer.append(TEXT_14);
68
    return stringBuffer.toString();
69
  }
70
}
(-)templates/parts/refreshers.javajetinc/fontColor.javajetinc (+6 lines)
Added Link Here
1
		Refresher fontColorRefresher = new Refresher() {
2
			public void refresh() {
3
				refreshFontColor();
4
			}
5
		};
6
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);
(-)templates/parts/mapmodeWorkaround.javajetinc (+28 lines)
Added Link Here
1
<%
2
if (classBody.indexOf("DPtoLP") != -1) {
3
%>
4
	/**
5
	 * @generated
6
	 */
7
	private static class MapModeWorkaround {
8
		/**
9
		 * @generated
10
		 */
11
		public int DPtoLP(int dp) {
12
			return dp;
13
		}
14
		/**
15
		 * @generated
16
		 */
17
		public static MapModeWorkaround INSTANCE = new MapModeWorkaround();
18
	}
19
20
	/**
21
	 * @generated
22
	 */
23
	private MapModeWorkaround getMapMode() {
24
		return MapModeWorkaround.INSTANCE;
25
	}
26
<%
27
}
28
%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/EditorGenerator.java (+296 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
import org.eclipse.emf.common.util.*;
4
import org.eclipse.gmf.codegen.gmfgen.*;
5
import org.eclipse.emf.codegen.ecore.genmodel.*;
6
import org.eclipse.gmf.common.codegen.*;
7
8
public class EditorGenerator
9
{
10
  protected static String nl;
11
  public static synchronized EditorGenerator create(String lineSeparator)
12
  {
13
    nl = lineSeparator;
14
    EditorGenerator result = new EditorGenerator();
15
    nl = null;
16
    return result;
17
  }
18
19
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
20
  protected final String TEXT_1 = "";
21
  protected final String TEXT_2 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
22
  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 ";
23
  protected final String TEXT_4 = " ";
24
  protected final String TEXT_5 = ";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
25
  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 <code>ActionRegistry</code>. (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 * <p>" + 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 <code>EditPart</code> action to this editor." + NL + "\t * " + NL + "\t * <p>" + NL + "\t * <code>EditPart</code> actions are actions that depend and work on the" + NL + "\t * selected <code>EditPart</code>s." + NL + "\t * " + NL + "\t * @generated" + NL + "\t * @param action" + NL + "\t *            the <code>EditPart</code> 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 <code>CommandStack</code> action to this editor." + NL + "\t * " + NL + "\t * <p>" + NL + "\t * <code>CommandStack</code> actions are actions that depend and work on" + NL + "\t * the <code>CommandStack</code>." + NL + "\t * " + NL + "\t * @generated" + NL + "\t * @param action" + NL + "\t *            the <code>CommandStack</code> 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 ";
26
  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, ";
27
  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();";
28
  protected final String TEXT_9 = NL + "\t\t\tnew ";
29
  protected final String TEXT_10 = "(getDomainAdapterFactory()).contributeToPalette(paletteRoot);";
30
  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";
31
  protected final String TEXT_12 = " rootEntry = new ";
32
  protected final String TEXT_13 = "(getCommandStack());" + NL + "\t\t\trootEntry.setPropertySourceProvider(new ";
33
  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 ";
34
  protected final String TEXT_15 = " get";
35
  protected final String TEXT_16 = "() {" + NL + "\t\treturn ";
36
  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";
37
  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());";
38
  protected final String TEXT_19 = NL + "\t\t\tfactories.add(new ";
39
  protected final String TEXT_20 = "());";
40
  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";
41
  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";
42
  protected final String TEXT_23 = " = null;" + NL + "\t\t\t\treturn;" + NL + "\t\t\t}" + NL + "\t\t}";
43
  protected final String TEXT_24 = NL + "\t\tURI modelFile = ";
44
  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}";
45
  protected final String TEXT_26 = NL + "\t\t";
46
  protected final String TEXT_27 = " = (";
47
  protected final String TEXT_28 = ") findInResource(";
48
  protected final String TEXT_29 = ", ";
49
  protected final String TEXT_30 = ".class);" + NL + "\t\tif (";
50
  protected final String TEXT_31 = " == null) {" + NL + "\t\t\t";
51
  protected final String TEXT_32 = " = ";
52
  protected final String TEXT_33 = ".eINSTANCE.create";
53
  protected final String TEXT_34 = "();" + NL + "\t\t\t";
54
  protected final String TEXT_35 = ".getContents().add(0, ";
55
  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";
56
  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";
57
  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(";
58
  protected final String TEXT_39 = ");" + NL + "\t\t}" + NL + "\t}";
59
  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 ";
60
  protected final String TEXT_41 = "());" + NL + "\t\tgetGraphicalViewer().setContents(getDiagram());" + NL + "" + NL + "\t\t";
61
  protected final String TEXT_42 = " printableLayers = (";
62
  protected final String TEXT_43 = ") root.getLayer(";
63
  protected final String TEXT_44 = ".PRINTABLE_LAYERS);" + NL + "\t\t";
64
  protected final String TEXT_45 = " extLabelsLayer = new ";
65
  protected final String TEXT_46 = "();" + NL + "\t\textLabelsLayer.setLayoutManager(new ";
66
  protected final String TEXT_47 = "());" + NL + "\t\tprintableLayers.addLayerAfter(extLabelsLayer, ";
67
  protected final String TEXT_48 = ".EXTERNAL_NODE_LABELS_LAYER, ";
68
  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 ";
69
  protected final String TEXT_50 = "ContextMenuProvider(viewer);" + NL + "\t\tviewer.setContextMenu(provider);" + NL + "\t\tgetSite().registerContextMenu(";
70
  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 ";
71
  protected final String TEXT_52 = "ContextMenuProvider extends ContextMenuProvider {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic ";
72
  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 + "}";
73
74
  public String generate(Object argument)
75
  {
76
    final StringBuffer stringBuffer = new StringBuffer();
77
    
78
final GenEditorView genEditor = (GenEditorView) ((Object[]) argument)[0];
79
final GenDiagram genDiagram = genEditor.getEditorGen().getDiagram();
80
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
81
82
importManager.emitPackageStatement(stringBuffer);
83
importManager.markImportLocation(stringBuffer);
84
    stringBuffer.append(TEXT_1);
85
    
86
importManager.addImport("java.io.IOException");
87
importManager.addImport("java.util.ArrayList");
88
importManager.addImport("java.util.Collections");
89
importManager.addImport("java.util.EventObject");
90
importManager.addImport("java.util.HashMap");
91
importManager.addImport("java.util.Iterator");
92
importManager.addImport("java.util.List");
93
94
importManager.addImport("org.eclipse.core.runtime.CoreException");
95
importManager.addImport("org.eclipse.core.runtime.IProgressMonitor");
96
importManager.addImport("org.eclipse.core.runtime.IStatus");
97
importManager.addImport("org.eclipse.core.runtime.NullProgressMonitor");
98
importManager.addImport("org.eclipse.core.runtime.Status");
99
importManager.addImport("org.eclipse.draw2d.PositionConstants");
100
importManager.addImport("org.eclipse.emf.common.command.BasicCommandStack");
101
importManager.addImport("org.eclipse.emf.common.ui.URIEditorInput");
102
importManager.addImport("org.eclipse.emf.common.util.URI");
103
importManager.addImport("org.eclipse.emf.ecore.resource.Resource");
104
importManager.addImport("org.eclipse.emf.ecore.resource.ResourceSet");
105
importManager.addImport("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain");
106
importManager.addImport("org.eclipse.emf.edit.domain.EditingDomain");
107
importManager.addImport("org.eclipse.emf.edit.provider.ComposedAdapterFactory");
108
importManager.addImport("org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory");
109
importManager.addImport("org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory");
110
importManager.addImport("org.eclipse.gef.ContextMenuProvider");
111
importManager.addImport("org.eclipse.gef.EditPartViewer");
112
importManager.addImport("org.eclipse.gef.GraphicalViewer");
113
importManager.addImport("org.eclipse.gef.KeyHandler");
114
importManager.addImport("org.eclipse.gef.KeyStroke");
115
importManager.addImport("org.eclipse.gef.RootEditPart");
116
importManager.addImport("org.eclipse.gef.MouseWheelHandler");
117
importManager.addImport("org.eclipse.gef.MouseWheelZoomHandler");
118
importManager.addImport("org.eclipse.gef.commands.CommandStack");
119
importManager.addImport("org.eclipse.gef.commands.CommandStackListener");
120
importManager.addImport("org.eclipse.gef.editparts.ScalableFreeformRootEditPart");
121
importManager.addImport("org.eclipse.gef.editparts.ScalableRootEditPart");
122
importManager.addImport("org.eclipse.gef.editparts.ZoomManager");
123
importManager.addImport("org.eclipse.gef.palette.PaletteRoot");
124
importManager.addImport("org.eclipse.gef.ui.actions.AlignmentAction");
125
importManager.addImport("org.eclipse.gef.ui.actions.DeleteAction");
126
importManager.addImport("org.eclipse.gef.ui.actions.DirectEditAction");
127
importManager.addImport("org.eclipse.gef.ui.actions.GEFActionConstants");
128
importManager.addImport("org.eclipse.gef.ui.actions.PrintAction");
129
importManager.addImport("org.eclipse.gef.ui.actions.RedoAction");
130
importManager.addImport("org.eclipse.gef.ui.actions.SaveAction");
131
importManager.addImport("org.eclipse.gef.ui.actions.SelectionAction");
132
importManager.addImport("org.eclipse.gef.ui.actions.StackAction");
133
importManager.addImport("org.eclipse.gef.ui.actions.UndoAction");
134
importManager.addImport("org.eclipse.gef.ui.actions.UpdateAction");
135
importManager.addImport("org.eclipse.gef.ui.actions.WorkbenchPartAction");
136
importManager.addImport("org.eclipse.gef.ui.actions.ZoomInAction");
137
importManager.addImport("org.eclipse.gef.ui.actions.ZoomOutAction");
138
importManager.addImport("org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler");
139
importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram");
140
importManager.addImport("org.eclipse.gmf.runtime.notation.NotationFactory");
141
importManager.addImport("org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory");
142
importManager.addImport("org.eclipse.jface.action.IAction");
143
importManager.addImport("org.eclipse.jface.action.IMenuManager");
144
importManager.addImport("org.eclipse.jface.action.MenuManager");
145
importManager.addImport("org.eclipse.jface.action.Separator");
146
importManager.addImport("org.eclipse.jface.dialogs.ErrorDialog");
147
importManager.addImport("org.eclipse.jface.viewers.ISelection");
148
importManager.addImport("org.eclipse.swt.SWT");
149
importManager.addImport("org.eclipse.swt.widgets.Composite");
150
importManager.addImport("org.eclipse.ui.IEditorPart");
151
importManager.addImport("org.eclipse.ui.IEditorInput");
152
importManager.addImport("org.eclipse.ui.IEditorSite");
153
importManager.addImport("org.eclipse.ui.IPathEditorInput");
154
importManager.addImport("org.eclipse.ui.ISelectionListener");
155
importManager.addImport("org.eclipse.ui.IWorkbenchPart");
156
importManager.addImport("org.eclipse.ui.PartInitException");
157
importManager.addImport("org.eclipse.ui.actions.ActionFactory");
158
importManager.addImport("org.eclipse.ui.views.contentoutline.IContentOutlinePage");
159
importManager.addImport("org.eclipse.ui.views.properties.IPropertySheetPage");
160
importManager.addImport("org.eclipse.ui.views.properties.PropertySheetPage");
161
importManager.addImport("org.eclipse.emf.common.notify.AdapterFactory");
162
importManager.addImport("org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette");
163
importManager.addImport("org.eclipse.gef.DefaultEditDomain");
164
165
    stringBuffer.append(TEXT_2);
166
    stringBuffer.append(genEditor.getClassName());
167
    stringBuffer.append(TEXT_3);
168
    stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName()));
169
    stringBuffer.append(TEXT_4);
170
    stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName());
171
    stringBuffer.append(TEXT_5);
172
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram"));
173
    stringBuffer.append(TEXT_6);
174
    stringBuffer.append(genDiagram.getEditorGen().getDomainGenModel().getModelName());
175
    stringBuffer.append(TEXT_7);
176
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()));
177
    stringBuffer.append(TEXT_8);
178
    
179
{
180
	final Palette palette = genDiagram.getPalette();
181
	if (palette != null) {
182
183
    stringBuffer.append(TEXT_9);
184
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
185
    stringBuffer.append(TEXT_10);
186
    
187
	}
188
}
189
190
    stringBuffer.append(TEXT_11);
191
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.ui.properties.UndoablePropertySheetEntry"));
192
    stringBuffer.append(TEXT_12);
193
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.ui.properties.UndoablePropertySheetEntry"));
194
    stringBuffer.append(TEXT_13);
195
    stringBuffer.append(importManager.getImportedName(genDiagram.getPropertyProviderQualifiedClassName()));
196
    stringBuffer.append(TEXT_14);
197
    stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName()));
198
    stringBuffer.append(TEXT_15);
199
    stringBuffer.append(genDiagram.getDomainDiagramElement().getClassifierAccessorName());
200
    stringBuffer.append(TEXT_16);
201
    stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName());
202
    stringBuffer.append(TEXT_17);
203
    stringBuffer.append(genDiagram.getDomainDiagramElement().getClassifierAccessorName());
204
    stringBuffer.append(TEXT_18);
205
    
206
final EList genPackages = genDiagram.getEditorGen().getAllDomainGenPackages(true);
207
for (int i = 0; i < genPackages.size(); i++) {
208
	GenPackage genPackage = (GenPackage) genPackages.get(i);
209
210
    stringBuffer.append(TEXT_19);
211
    stringBuffer.append(importManager.getImportedName(genPackage.getQualifiedItemProviderAdapterFactoryClassName()));
212
    stringBuffer.append(TEXT_20);
213
    }
214
    stringBuffer.append(TEXT_21);
215
    stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName());
216
    stringBuffer.append(TEXT_22);
217
    stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName());
218
    stringBuffer.append(TEXT_23);
219
    
220
{
221
222
    
223
	boolean sameFile = genDiagram.getEditorGen().isSameFileForDiagramAndModel();
224
	String resourceToUse;
225
	if (!sameFile) {
226
227
    stringBuffer.append(TEXT_24);
228
    stringBuffer.append(genDiagram.getDiagramEditorUtilClassName());
229
    stringBuffer.append(TEXT_25);
230
    
231
		resourceToUse = "modelResource";
232
	} else {
233
		resourceToUse = "diagramResource";
234
	}
235
236
    stringBuffer.append(TEXT_26);
237
    stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName());
238
    stringBuffer.append(TEXT_27);
239
    stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName()));
240
    stringBuffer.append(TEXT_28);
241
    stringBuffer.append(resourceToUse);
242
    stringBuffer.append(TEXT_29);
243
    stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName()));
244
    stringBuffer.append(TEXT_30);
245
    stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName());
246
    stringBuffer.append(TEXT_31);
247
    stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName());
248
    stringBuffer.append(TEXT_32);
249
    stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryClassName()));
250
    stringBuffer.append(TEXT_33);
251
    stringBuffer.append(genDiagram.getDomainDiagramElement().getClassifierAccessorName());
252
    stringBuffer.append(TEXT_34);
253
    stringBuffer.append(resourceToUse);
254
    stringBuffer.append(TEXT_35);
255
    stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName());
256
    stringBuffer.append(TEXT_36);
257
    stringBuffer.append(resourceToUse);
258
    stringBuffer.append(TEXT_37);
259
    stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName());
260
    stringBuffer.append(TEXT_38);
261
    stringBuffer.append(genDiagram.getDomainDiagramElement().getSafeUncapName());
262
    stringBuffer.append(TEXT_39);
263
    
264
}
265
266
    stringBuffer.append(TEXT_40);
267
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName()));
268
    stringBuffer.append(TEXT_41);
269
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.LayeredPane"));
270
    stringBuffer.append(TEXT_42);
271
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.LayeredPane"));
272
    stringBuffer.append(TEXT_43);
273
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.LayerConstants"));
274
    stringBuffer.append(TEXT_44);
275
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformLayer"));
276
    stringBuffer.append(TEXT_45);
277
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformLayer"));
278
    stringBuffer.append(TEXT_46);
279
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.DelegatingLayout"));
280
    stringBuffer.append(TEXT_47);
281
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName()));
282
    stringBuffer.append(TEXT_48);
283
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.LayerConstants"));
284
    stringBuffer.append(TEXT_49);
285
    stringBuffer.append(genEditor.getClassName());
286
    stringBuffer.append(TEXT_50);
287
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()));
288
    stringBuffer.append(TEXT_51);
289
    stringBuffer.append(genEditor.getClassName());
290
    stringBuffer.append(TEXT_52);
291
    stringBuffer.append(genEditor.getClassName());
292
    stringBuffer.append(TEXT_53);
293
    importManager.emitSortedImports();
294
    return stringBuffer.toString();
295
  }
296
}
(-)templates/providers/DiagramViewFactory.javajet (+28 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers"  class="DiagramViewFactoryGenerator"
2
	imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
5
GenDiagram genElement = genDiagram;		/*make jetinc happy*/
6
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
%>
8
<%@ include file="../copyright4java.jetinc"%>
9
<%importManager.emitPackageStatement(stringBuffer);
10
11
importManager.markImportLocation(stringBuffer);
12
%>
13
14
/**
15
 * @generated
16
 */
17
public class <%=genElement.getNotationViewFactoryClassName()%> {
18
	/**
19
	 * @generated
20
	 */
21
	public static void decorateView(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) {
22
<%@ include file="createVIDAnnotation.jetinc"%>
23
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.DiagramStyle")%> style = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createDiagramStyle();
24
		view.getStyles().add(style);
25
		//XXX: init styles from attributes!!!
26
	}
27
}
28
<%importManager.emitSortedImports();%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PluginPropertiesGenerator.java (+32 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
5
public class PluginPropertiesGenerator
6
{
7
  protected static String nl;
8
  public static synchronized PluginPropertiesGenerator create(String lineSeparator)
9
  {
10
    nl = lineSeparator;
11
    PluginPropertiesGenerator result = new PluginPropertiesGenerator();
12
    nl = null;
13
    return result;
14
  }
15
16
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
17
  protected final String TEXT_1 = "pluginName=";
18
  protected final String TEXT_2 = NL + "providerName=";
19
  protected final String TEXT_3 = NL;
20
21
  public String generate(Object argument)
22
  {
23
    final StringBuffer stringBuffer = new StringBuffer();
24
    GenPlugin genPlugin = (GenPlugin) argument;
25
    stringBuffer.append(TEXT_1);
26
    stringBuffer.append(genPlugin.getName());
27
    stringBuffer.append(TEXT_2);
28
    stringBuffer.append(genPlugin.getProvider());
29
    stringBuffer.append(TEXT_3);
30
    return stringBuffer.toString();
31
  }
32
}
(-)templates/providers/DomainElementInitializer.javajet (+167 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers"  class="DomainElementInitializerGenerator"
2
	imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* java.util.*"%>
3
<%
4
GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
5
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
6
%>
7
<%@ include file="../copyright4java.jetinc"%>
8
<%
9
importManager.emitPackageStatement(stringBuffer);
10
11
importManager.markImportLocation(stringBuffer);
12
%>
13
14
/**
15
 * @generated
16
 */
17
public class DomainElementInitializer <%/*XXX: class name should be customizable!*/%>{
18
	/**
19
	 * @generated
20
	 */
21
	public static interface IElementInitializer {
22
		public void initializeElement(<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> instance);
23
	}
24
25
<%
26
boolean needsNullInitializer = false;
27
boolean needsOCLInitializer = false;
28
for (Iterator it = genDiagram.eAllContents(); it.hasNext(); ) {
29
	Object next = it.next();
30
	String id = null;
31
	TypeModelFacet modelFacet = null;
32
	if (next instanceof GenNode) {
33
		id = ((GenNode) next).getUniqueIdentifier();
34
		modelFacet = ((GenNode) next).getModelFacet();
35
	} else if (next instanceof GenLink && ((GenLink) next).getModelFacet() instanceof TypeLinkModelFacet) {
36
		id = ((GenLink) next).getUniqueIdentifier();
37
		modelFacet = (TypeLinkModelFacet) ((GenLink) next).getModelFacet();
38
	}
39
	if (modelFacet == null) {
40
		continue;
41
	}
42
	GenElementInitializer elementInitializer = modelFacet.getModelElementInitializer();
43
	if (elementInitializer instanceof GenFeatureSeqInitializer == false) {
44
		if (!needsNullInitializer) {
45
			needsNullInitializer = true;
46
%>
47
	/**
48
	 * @generated
49
	 */
50
	private static IElementInitializer NULL_INITIALIZER = new IElementInitializer() {
51
		public void initializeElement(<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> instance) {
52
		}
53
	};
54
55
<%
56
		}
57
%>
58
	/**
59
	 * @generated
60
	 */
61
	public static IElementInitializer <%=id%> = NULL_INITIALIZER;
62
<%
63
		continue;
64
	}
65
	needsOCLInitializer = true;
66
	GenFeatureSeqInitializer ftInitializer = (GenFeatureSeqInitializer) elementInitializer;
67
%>
68
69
	/**
70
	 * @generated
71
	 */
72
	public static IElementInitializer <%=id%> = new ObjectInitializer(new FeatureInitializer[] {
73
<%
74
		for(Iterator featInitIt = ftInitializer.getInitializers().iterator(); featInitIt.hasNext();) { 
75
			GenFeatureValueSpec featureValSpec = (GenFeatureValueSpec)featInitIt.next();%>
76
			new FeatureInitializer("<%=featureValSpec.getBody()%>", //$NON-NLS-1$
77
						<%=importManager.getImportedName(ftInitializer.getElementQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=ftInitializer.getElementClassAccessorName()%>(),
78
						<%=importManager.getImportedName(featureValSpec.getFeatureQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=featureValSpec.getFeature().getFeatureAccessorName()
79
						%>())<%if (featInitIt.hasNext()) {%>, <%}%>
80
81
<%
82
		} // end of GenFeatureValueSpec iteration
83
%>
84
	});
85
<%
86
}
87
if (needsOCLInitializer) {
88
%>
89
	/**
90
	 * @generated
91
	 */
92
	private static class ObjectInitializer implements IElementInitializer {
93
		/**
94
		 * @generated
95
		 */
96
		private FeatureInitializer[] initExpressions;
97
98
		/**
99
		 * @generated
100
		 */
101
		ObjectInitializer(FeatureInitializer[] initExpressions) {
102
			this.initExpressions = initExpressions;
103
		}
104
105
		/**
106
		 * @generated
107
		 */
108
		public void initializeElement(<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> instance) {
109
			for (int i = 0; i < initExpressions.length; i++) {
110
				FeatureInitializer nextExpr = initExpressions[i];
111
				nextExpr.init(instance);
112
			}
113
		}
114
	}
115
116
	/**
117
	 * @generated
118
	 */
119
	static class FeatureInitializer {
120
		/**
121
		 * @generated
122
		 */
123
		private <%=importManager.getImportedName("org.eclipse.emf.ecore.EClass")%> contextClass;
124
		/**
125
		 * @generated
126
		 */
127
		private <%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> sFeature;
128
		/**
129
		 * @generated
130
		 */
131
		private <%=importManager.getImportedName("java.lang.String")%> expressionBody;
132
		/**
133
		 * @generated
134
		 */
135
		private <%=importManager.getImportedName("org.eclipse.emf.ocl.query.Query")%> query;
136
		/**
137
		 * @generated
138
		 */
139
		FeatureInitializer(<%=importManager.getImportedName("java.lang.String")%> expression, 
140
			<%=importManager.getImportedName("org.eclipse.emf.ecore.EClass")%> context, 
141
			<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> sFeature) {
142
			this.sFeature = sFeature;
143
			this.expressionBody = expression;
144
			this.contextClass	= context;
145
		}
146
		/**
147
		 * @generated
148
		 */
149
		void init(<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> contextInstance) {
150
			if(this.query == null) {
151
				this.query = <%=importManager.getImportedName("org.eclipse.emf.ocl.query.QueryFactory")%>.eINSTANCE.createQuery(expressionBody, contextClass);
152
			}
153
			Object value = query.evaluate(contextInstance);
154
			if(sFeature.getEType() instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EEnum")%> && 
155
				value instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral")%>) {
156
				value = ((<%=importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral")%>)value).getInstance();
157
			} else if(value != null && sFeature.isMany()) {
158
				value = new <%=importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")%>((<%=importManager.getImportedName("java.util.Collection")%>)value);
159
			}
160
			contextInstance.eSet(sFeature, value);
161
		}
162
	}
163
<%
164
}
165
%>
166
}
167
<%importManager.emitSortedImports();%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/providers/AbstractParserGenerator.java (+65 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.providers;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
6
public class AbstractParserGenerator
7
{
8
  protected static String nl;
9
  public static synchronized AbstractParserGenerator create(String lineSeparator)
10
  {
11
    nl = lineSeparator;
12
    AbstractParserGenerator result = new AbstractParserGenerator();
13
    nl = null;
14
    return result;
15
  }
16
17
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
18
  protected final String TEXT_1 = "";
19
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
20
  protected final String TEXT_3 = NL + " */";
21
  protected final String TEXT_4 = NL;
22
  protected final String TEXT_5 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public abstract class ";
23
  protected final String TEXT_6 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static Object parseValue(";
24
  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";
25
  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 ";
26
  protected final String TEXT_9 = ") {" + NL + "\t\t\tif (value instanceof String) {" + NL + "\t\t\t\t";
27
  protected final String TEXT_10 = " literal = ((";
28
  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 + "}";
29
30
  public String generate(Object argument)
31
  {
32
    final StringBuffer stringBuffer = new StringBuffer();
33
    GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
34
    ImportAssistant importManager = (ImportAssistant) ((Object[])argument)[1];
35
    stringBuffer.append(TEXT_1);
36
    
37
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
38
if (copyrightText != null && copyrightText.trim().length() > 0) {
39
40
    stringBuffer.append(TEXT_2);
41
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
42
    stringBuffer.append(TEXT_3);
43
    }
44
    stringBuffer.append(TEXT_4);
45
    
46
importManager.emitPackageStatement(stringBuffer);
47
importManager.markImportLocation(stringBuffer);
48
49
    stringBuffer.append(TEXT_5);
50
    stringBuffer.append(genDiagram.getAbstractParserClassName());
51
    stringBuffer.append(TEXT_6);
52
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
53
    stringBuffer.append(TEXT_7);
54
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EDataType"));
55
    stringBuffer.append(TEXT_8);
56
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnum"));
57
    stringBuffer.append(TEXT_9);
58
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral"));
59
    stringBuffer.append(TEXT_10);
60
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EEnum"));
61
    stringBuffer.append(TEXT_11);
62
    importManager.emitSortedImports();
63
    return stringBuffer.toString();
64
  }
65
}
(-).jetproperties (+4 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<jet-settings>
3
	<template-container>templates</template-container>	<source-container>src-templates</source-container>
4
</jet-settings>
(-)templates/parts/refreshers.javajetinc/font.javajetinc (+10 lines)
Added Link Here
1
		Refresher fontRefresher = new Refresher() {
2
			public void refresh() {
3
				refreshFont();
4
			}
5
		};
6
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontHeight(), fontRefresher);
7
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontName(), fontRefresher);
8
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Bold(), fontRefresher);
9
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Italic(), fontRefresher);
10
		
(-)src/org/eclipse/gmf/internal/codegen/lite/Generator.java (+191 lines)
Added Link Here
1
/*
2
 * Copyright (c) 2005 Borland Software Corporation
3
 * 
4
 * All rights reserved. This program and the accompanying materials
5
 * are made available under the terms of the Eclipse Public License v1.0
6
 * which accompanies this distribution, and is available at
7
 * http://www.eclipse.org/legal/epl-v10.html
8
 *
9
 * Contributors:
10
 *    Artem Tikhomirov (Borland) - initial API and implementation
11
 */
12
package org.eclipse.gmf.internal.codegen.lite;
13
14
import java.lang.ref.SoftReference;
15
import java.net.URL;
16
import java.util.ArrayList;
17
import java.util.Collections;
18
import java.util.HashMap;
19
import java.util.Iterator;
20
import java.util.List;
21
import java.util.Map;
22
23
import org.eclipse.core.runtime.Path;
24
import org.eclipse.emf.common.util.URI;
25
import org.eclipse.emf.ecore.EClass;
26
import org.eclipse.emf.ecore.EObject;
27
import org.eclipse.gmf.codegen.gmfgen.GMFGenPackage;
28
import org.eclipse.gmf.codegen.gmfgen.GenCompartment;
29
import org.eclipse.gmf.codegen.gmfgen.GenDiagram;
30
import org.eclipse.gmf.codegen.gmfgen.GenEditorGenerator;
31
import org.eclipse.gmf.codegen.gmfgen.GenLink;
32
import org.eclipse.gmf.codegen.gmfgen.GenLinkLabel;
33
import org.eclipse.gmf.codegen.gmfgen.GenNode;
34
import org.eclipse.gmf.codegen.gmfgen.GenNodeLabel;
35
import org.eclipse.gmf.common.UnexpectedBehaviourException;
36
import org.eclipse.gmf.common.codegen.GeneratorBase;
37
38
/**
39
 * Invokes JET templates to populate diagram editor project.
40
 * 
41
 * @author artem
42
 */
43
public class Generator extends GeneratorBase implements Runnable {
44
45
	private final GenEditorGenerator myEditorGen; 
46
47
	private final GenDiagram myDiagram;
48
49
	private final CodegenEmitters myEmitters;
50
51
	private static Map/*<URI, SoftReference>*/ myCachedURI2EmitterMap = new HashMap();
52
53
	public Generator(GenEditorGenerator genModel) {
54
		myDiagram = genModel.getDiagram();
55
		myEditorGen = genModel;
56
		URI resourceURI = myEditorGen.eResource().getURI();
57
		if (myEditorGen.isDynamicTemplates()) {
58
			myCachedURI2EmitterMap.remove(resourceURI);
59
		}
60
		CodegenEmitters old = myCachedURI2EmitterMap.containsKey(resourceURI) ? (CodegenEmitters) ((SoftReference) myCachedURI2EmitterMap.get(resourceURI)).get() : null;
61
		if (old == null) {
62
			myEmitters = new CodegenEmitters(!myEditorGen.isDynamicTemplates(), myEditorGen.getTemplateDirectory());
63
			if (!myEditorGen.isDynamicTemplates()) {
64
				myCachedURI2EmitterMap.put(resourceURI, new SoftReference(myEmitters));
65
			}
66
		} else {
67
			myEmitters = old;
68
		}
69
	}
70
71
	protected URL getJMergeControlFile() {
72
		return myEmitters.getJMergeControlFile();
73
	}
74
	
75
	protected void customRun() throws InterruptedException, UnexpectedBehaviourException {
76
		initializeEditorProject(myDiagram.getEditorGen().getPlugin().getID(), createReferencedProjectsList());
77
78
		doGenerateFile(myEmitters.getManifestGenerator(), new Path("META-INF/MANIFEST.MF"), myEditorGen.getPlugin());
79
		doGenerateFile(myEmitters.getBuildPropertiesGenerator(), new Path("build.properties"), myEditorGen.getPlugin());
80
		doGenerateFile(myEmitters.getPluginXML(), new Path("plugin.xml"), myEditorGen.getPlugin());
81
		doGenerateFile(myEmitters.getPluginPropertiesGenerator(), new Path("plugin.properties"), myEditorGen.getPlugin());
82
83
		doGenerateJavaClass(myEmitters.getCreationWizardGenerator(), myDiagram.getCreationWizardQualifiedClassName(), myDiagram);
84
		doGenerateJavaClass(myEmitters.getCreationWizardPageGenerator(), myDiagram.getCreationWizardPageQualifiedClassName(), myDiagram);
85
		doGenerateJavaClass(myEmitters.getPluginGenerator(), myEditorGen.getPlugin().getActivatorQualifiedClassName(), myEditorGen.getPlugin());
86
87
		doGenerateJavaClass(myEmitters.getActionBarContributorGenerator(), myEditorGen.getEditor().getActionBarContributorQualifiedClassName(), myEditorGen.getEditor());
88
		doGenerateJavaClass(myEmitters.getDiagramEditorUtilGenerator(), myDiagram.getDiagramEditorUtilQualifiedClassName(), myDiagram);
89
		doGenerateJavaClass(myEmitters.getEditorGenerator(), myEditorGen.getEditor().getQualifiedClassName(), myEditorGen.getEditor());
90
		doGenerateJavaClass(myEmitters.getPropertySourceProviderGenerator(), myDiagram.getPropertyProviderQualifiedClassName(), myDiagram);
91
		if (myDiagram.getPalette() != null) {
92
			doGenerateJavaClass(myEmitters.getPaletteFactoryGenerator(), myDiagram.getPalette().getFactoryQualifiedClassName(), myDiagram);
93
		}
94
		doGenerateJavaClass(myEmitters.getUpdatableEditPartGenerator(), myDiagram.getEditPartsPackageName(), "IUpdatableEditPart", myDiagram); // XXX: should be customizable
95
		doGenerateJavaClass(myEmitters.getEditPartFactoryGenerator(), myDiagram.getEditPartFactoryQualifiedClassName(), myDiagram);
96
		doGenerateJavaClass(myEmitters.getDiagramEditPartGenerator(), myDiagram.getEditPartQualifiedClassName(), myDiagram);
97
98
		for (Iterator it = myDiagram.getAllNodes().iterator(); it.hasNext(); ) {
99
			final GenNode next = (GenNode) it.next();
100
			if (!next.isListContainerEntry()) {
101
				doGenerateJavaClass(myEmitters.getNodeEditPartGenerator(), next.getEditPartQualifiedClassName(), next);
102
				for (Iterator it2 = next.getLabels().iterator(); it2.hasNext();) {
103
					final GenNodeLabel label = (GenNodeLabel) it2.next();
104
					doGenerateJavaClass(myEmitters.getNodeLabelEditPartGenerator(), label.getEditPartQualifiedClassName(), label);
105
					doGenerateJavaClass(myEmitters.getLabelViewFactoryGenerator(), label.getNotationViewFactoryQualifiedClassName(), label);
106
				}
107
				doGenerateJavaClass(myEmitters.getNodeViewFactoryGenerator(), next.getNotationViewFactoryQualifiedClassName(), next);
108
			} else {
109
				doGenerateJavaClass(myEmitters.getChildNodeEditPartGenerator(), next.getEditPartQualifiedClassName(), next);
110
				doGenerateJavaClass(myEmitters.getLabelViewFactoryGenerator(), next.getNotationViewFactoryQualifiedClassName(), next);
111
			}
112
		}
113
		doGenerateJavaClass(myEmitters.getAbstractParserGenerator(),myDiagram.getAbstractParserQualifiedClassName(), myDiagram);
114
		for (Iterator it = myDiagram.getLinks().iterator(); it.hasNext();) {
115
			final GenLink next = (GenLink) it.next();
116
			doGenerateJavaClass(myEmitters.getLinkEditPartGenerator(), next.getEditPartQualifiedClassName(), next);
117
			for (Iterator it2 = next.getLabels().iterator(); it2.hasNext();) {
118
				final GenLinkLabel label = (GenLinkLabel) it2.next();
119
				doGenerateJavaClass(myEmitters.getLinkLabelEditPartGenerator(), label.getEditPartQualifiedClassName(), label);
120
				doGenerateJavaClass(myEmitters.getLabelViewFactoryGenerator(), label.getNotationViewFactoryQualifiedClassName(), label);
121
			}
122
			doGenerateJavaClass(myEmitters.getLinkViewFactoryGenerator(), next.getNotationViewFactoryQualifiedClassName(), next);
123
		}
124
		for (Iterator it = myDiagram.getCompartments().iterator(); it.hasNext(); ) {
125
			final GenCompartment next = (GenCompartment) it.next();
126
			doGenerateJavaClass(myEmitters.getCompartmentEditPartGenerator(), next.getEditPartQualifiedClassName(), next);
127
			doGenerateJavaClass(myEmitters.getCompartmentViewFactoryGenerator(), next.getNotationViewFactoryQualifiedClassName(), next);
128
		}
129
		doGenerateJavaClass(myEmitters.getDiagramViewFactoryGenerator(), myDiagram.getNotationViewFactoryQualifiedClassName(), myDiagram);
130
		doGenerateJavaClass(myEmitters.getDomainElementInitializerGenerator(), myDiagram.getNotationViewFactoriesPackageName(), "DomainElementInitializer",myDiagram); // XXX: allow customization!
131
		doGenerateJavaClass(myEmitters.getVisualIDRegistryGenerator(), myDiagram.getVisualIDRegistryQualifiedClassName(), myDiagram);
132
	}
133
134
	protected void setupProgressMonitor() {
135
		Counter c = new Counter();
136
		c.curiousAbout(GMFGenPackage.eINSTANCE.getGenNode());
137
		c.curiousAbout(GMFGenPackage.eINSTANCE.getGenCompartment());
138
		c.curiousAbout(GMFGenPackage.eINSTANCE.getGenLink());
139
		c.curiousAbout(GMFGenPackage.eINSTANCE.getGenNodeLabel());
140
		c.curiousAbout(GMFGenPackage.eINSTANCE.getGenLinkLabel());
141
		c.count(myDiagram);
142
		int total = 2 * c.getCount(GMFGenPackage.eINSTANCE.getGenNode());
143
		total += 2 * c.getCount(GMFGenPackage.eINSTANCE.getGenCompartment());
144
		total += 2 * c.getCount(GMFGenPackage.eINSTANCE.getGenLink());
145
		total += 2 * c.getCount(GMFGenPackage.eINSTANCE.getGenNodeLabel());
146
		total += 2 * c.getCount(GMFGenPackage.eINSTANCE.getGenLinkLabel());
147
		total++; // init
148
		total += 4; // text files
149
		total += 15; // out-of-cycle doGenerateJava... <- genDiagram + genEditor
150
		setupProgressMonitor("Generation in progress...", total);
151
	}
152
153
	protected final List createReferencedProjectsList() {
154
		return Collections.EMPTY_LIST;
155
	}
156
157
	private static final class Counter {
158
		private final List/*<EClass>*/ myAttractions = new ArrayList();
159
		private int[] myHits;
160
		
161
		public void curiousAbout(EClass eClass) {
162
			myAttractions.add(eClass);
163
		}
164
165
		public void count(EObject start) {
166
			myHits = new int[myAttractions.size()];
167
			final EClass[] attractions = (EClass[]) myAttractions.toArray(new EClass[myAttractions.size()]);
168
			doCount(start.eClass(), attractions);
169
			for (Iterator it = start.eAllContents(); it.hasNext(); ) {
170
				EObject next = (EObject) it.next();
171
				doCount(next.eClass(), attractions);
172
			}
173
		}
174
175
		private void doCount(EClass eClass, EClass[] attractions) {
176
			for (int i = 0; i < attractions.length; i++) {
177
				if (attractions[i].isSuperTypeOf(eClass)) {
178
					myHits[i]++;
179
				}
180
			}
181
		}
182
183
		public int getCount(EClass eClass) {
184
			int index = myAttractions.indexOf(eClass);
185
			if (index == -1) {
186
				throw new IllegalArgumentException("No class " + eClass + " was previously registered with curiousAbout(EClass)");
187
			}
188
			return myHits[index];
189
		}
190
	}
191
}
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/VisualIDRegistryGenerator.java (+323 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import java.util.*;
5
import org.eclipse.gmf.common.codegen.*;
6
7
public class VisualIDRegistryGenerator
8
{
9
  protected static String nl;
10
  public static synchronized VisualIDRegistryGenerator create(String lineSeparator)
11
  {
12
    nl = lineSeparator;
13
    VisualIDRegistryGenerator result = new VisualIDRegistryGenerator();
14
    nl = null;
15
    return result;
16
  }
17
18
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
19
  protected final String TEXT_1 = "";
20
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
21
  protected final String TEXT_3 = NL + " */";
22
  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 ";
23
  protected final String TEXT_5 = " {" + NL + "" + NL + "\tpublic static final ";
24
  protected final String TEXT_6 = " INSTANCE = new ";
25
  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) {";
26
  protected final String TEXT_8 = NL + "\t\tif (";
27
  protected final String TEXT_9 = ".eINSTANCE.get";
28
  protected final String TEXT_10 = "().equals(domainElementMetaclass) && isDiagram";
29
  protected final String TEXT_11 = "((";
30
  protected final String TEXT_12 = ") domainElement)) {" + NL + "\t\t\treturn ";
31
  protected final String TEXT_13 = ";" + NL + "\t\t}";
32
  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 (!\"";
33
  protected final String TEXT_15 = "\".equals(containerModelID)) {" + NL + "\t\t\treturn -1;" + NL + "\t\t}" + NL + "\t\tint containerVisualID;" + NL + "\t\tif (\"";
34
  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 = ";
35
  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) {";
36
  protected final String TEXT_18 = NL + "\t\tcase ";
37
  protected final String TEXT_19 = ":";
38
  protected final String TEXT_20 = NL + "\t\t\tif (";
39
  protected final String TEXT_21 = ".eINSTANCE.get";
40
  protected final String TEXT_22 = "().isSuperTypeOf(domainElementMetaclass) && isNode";
41
  protected final String TEXT_23 = "((";
42
  protected final String TEXT_24 = ") domainElement)) {" + NL + "\t\t\t\treturn ";
43
  protected final String TEXT_25 = ";" + NL + "\t\t\t}";
44
  protected final String TEXT_26 = NL + "\t\t\treturn getUnrecognized";
45
  protected final String TEXT_27 = "ChildNodeID(domainElement);";
46
  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) {";
47
  protected final String TEXT_29 = NL + "\t\tif (";
48
  protected final String TEXT_30 = ".eINSTANCE.get";
49
  protected final String TEXT_31 = "().isSuperTypeOf(domainElementMetaclass) && isLinkWithClass";
50
  protected final String TEXT_32 = "((";
51
  protected final String TEXT_33 = ") domainElement)) {" + NL + "\t\t\treturn ";
52
  protected final String TEXT_34 = ";" + NL + "\t\t}";
53
  protected final String TEXT_35 = NL + "\t\treturn getUnrecognizedLinkWithClassID(domainElement);" + NL + "\t}" + NL;
54
  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";
55
  protected final String TEXT_37 = "(";
56
  protected final String TEXT_38 = " element) {" + NL + "\t\treturn true;" + NL + "\t}";
57
  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;
58
  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";
59
  protected final String TEXT_41 = "(";
60
  protected final String TEXT_42 = " element) {" + NL + "\t\treturn ElementSelectors.";
61
  protected final String TEXT_43 = ".matches(element);" + NL + "\t}\t";
62
  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";
63
  protected final String TEXT_45 = "ChildNodeID(EObject domainElement) {" + NL + "\t\treturn -1;" + NL + "\t}";
64
  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;
65
  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";
66
  protected final String TEXT_48 = "(";
67
  protected final String TEXT_49 = " element) {" + NL + "\t\treturn ElementSelectors.";
68
  protected final String TEXT_50 = ".matches(element);" + NL + "\t}";
69
  protected final String TEXT_51 = NL;
70
  protected final String TEXT_52 = NL;
71
  protected final String TEXT_53 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate String getModelID(";
72
  protected final String TEXT_54 = " containerView) {" + NL + "\t\t";
73
  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;
74
  protected final String TEXT_56 = NL;
75
  protected final String TEXT_57 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static int getVisualID(";
76
  protected final String TEXT_58 = " containerView) {" + NL + "\t\t";
77
  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";
78
  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";
79
  protected final String TEXT_61 = NL + NL + "\t\t/**" + NL + "\t\t * Element matching condition for ";
80
  protected final String TEXT_62 = "." + NL + "\t\t * <pre>language: ";
81
  protected final String TEXT_63 = "</pre>\t" + NL + "\t\t * <pre>body    : ";
82
  protected final String TEXT_64 = "</pre>" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate static final Matcher ";
83
  protected final String TEXT_65 = " = new Matcher(\"";
84
  protected final String TEXT_66 = "\");";
85
  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}";
86
  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 ";
87
  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";
88
  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 ";
89
  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";
90
  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 + "}";
91
92
  public String generate(Object argument)
93
  {
94
    final StringBuffer stringBuffer = new StringBuffer();
95
    
96
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
97
final String modelID = genDiagram.getEditorGen().getModelID();
98
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
99
100
    stringBuffer.append(TEXT_1);
101
    
102
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
103
if (copyrightText != null && copyrightText.trim().length() > 0) {
104
105
    stringBuffer.append(TEXT_2);
106
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
107
    stringBuffer.append(TEXT_3);
108
    }
109
    importManager.emitPackageStatement(stringBuffer);
110
importManager.addImport("org.eclipse.emf.ecore.EClass");
111
importManager.addImport("org.eclipse.emf.ecore.EObject");
112
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
113
importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram");
114
115
importManager.markImportLocation(stringBuffer);
116
117
    stringBuffer.append(TEXT_4);
118
    stringBuffer.append(genDiagram.getVisualIDRegistryClassName());
119
    stringBuffer.append(TEXT_5);
120
    stringBuffer.append(genDiagram.getVisualIDRegistryClassName());
121
    stringBuffer.append(TEXT_6);
122
    stringBuffer.append(genDiagram.getVisualIDRegistryClassName());
123
    stringBuffer.append(TEXT_7);
124
    
125
if (genDiagram.getDomainDiagramElement() != null) {	/*we do not support diagrams without domain elements in other places, but keep this copy-pasted occurrence*/
126
	String classifierAccessorName = genDiagram.getDomainDiagramElement().getClassifierAccessorName();
127
	String interfaceName = importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName());
128
129
    stringBuffer.append(TEXT_8);
130
    stringBuffer.append(genDiagram.getMetaPackageName(importManager));
131
    stringBuffer.append(TEXT_9);
132
    stringBuffer.append(classifierAccessorName);
133
    stringBuffer.append(TEXT_10);
134
    stringBuffer.append(genDiagram.getUniqueIdentifier());
135
    stringBuffer.append(TEXT_11);
136
    stringBuffer.append(interfaceName);
137
    stringBuffer.append(TEXT_12);
138
    stringBuffer.append(genDiagram.getVisualID());
139
    stringBuffer.append(TEXT_13);
140
    }
141
    stringBuffer.append(TEXT_14);
142
    stringBuffer.append(modelID);
143
    stringBuffer.append(TEXT_15);
144
    stringBuffer.append(modelID);
145
    stringBuffer.append(TEXT_16);
146
    stringBuffer.append(genDiagram.getVisualID());
147
    stringBuffer.append(TEXT_17);
148
    
149
Collection nodeContainers = new ArrayList(genDiagram.getCompartments());
150
nodeContainers.add(genDiagram);
151
for(Iterator it = nodeContainers.iterator(); it.hasNext(); ) {
152
	GenContainerBase nextContainer = (GenContainerBase) it.next();
153
154
    stringBuffer.append(TEXT_18);
155
    stringBuffer.append(nextContainer.getVisualID());
156
    stringBuffer.append(TEXT_19);
157
    
158
	for (Iterator childNodes = nextContainer.getContainedNodes().iterator(); childNodes.hasNext(); ) {
159
		GenNode childNode = (GenNode) childNodes.next();
160
		final String classifierAccessorName = childNode.getDomainMetaClass().getClassifierAccessorName();
161
		final String interfaceName = importManager.getImportedName(childNode.getDomainMetaClass().getQualifiedInterfaceName());
162
		final String semanticPackageInterfaceName = importManager.getImportedName(childNode.getDomainMetaClass().getGenPackage().getQualifiedPackageInterfaceName()); 
163
164
    stringBuffer.append(TEXT_20);
165
    stringBuffer.append(semanticPackageInterfaceName);
166
    stringBuffer.append(TEXT_21);
167
    stringBuffer.append(classifierAccessorName);
168
    stringBuffer.append(TEXT_22);
169
    stringBuffer.append(childNode.getUniqueIdentifier());
170
    stringBuffer.append(TEXT_23);
171
    stringBuffer.append(interfaceName);
172
    stringBuffer.append(TEXT_24);
173
    stringBuffer.append(childNode.getVisualID());
174
    stringBuffer.append(TEXT_25);
175
    
176
	}
177
178
    stringBuffer.append(TEXT_26);
179
    stringBuffer.append(nextContainer.getUniqueIdentifier());
180
    stringBuffer.append(TEXT_27);
181
    
182
}
183
184
    stringBuffer.append(TEXT_28);
185
    
186
for (Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) {
187
	GenLink genLink = (GenLink) it.next();
188
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
189
		final TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
190
		final String semanticLinkInterfaceName = modelFacet.getMetaClass().getClassifierAccessorName();
191
		final String interfaceName = importManager.getImportedName(modelFacet.getMetaClass().getQualifiedInterfaceName());
192
		final String semanticPackageInterfaceName = importManager.getImportedName(modelFacet.getMetaClass().getGenPackage().getQualifiedPackageInterfaceName());
193
194
    stringBuffer.append(TEXT_29);
195
    stringBuffer.append(semanticPackageInterfaceName);
196
    stringBuffer.append(TEXT_30);
197
    stringBuffer.append(semanticLinkInterfaceName);
198
    stringBuffer.append(TEXT_31);
199
    stringBuffer.append(genLink.getUniqueIdentifier());
200
    stringBuffer.append(TEXT_32);
201
    stringBuffer.append(interfaceName);
202
    stringBuffer.append(TEXT_33);
203
    stringBuffer.append(genLink.getVisualID());
204
    stringBuffer.append(TEXT_34);
205
    
206
	}
207
}
208
209
    stringBuffer.append(TEXT_35);
210
    if (genDiagram.getDomainDiagramElement() != null) {
211
    stringBuffer.append(TEXT_36);
212
    stringBuffer.append(genDiagram.getUniqueIdentifier());
213
    stringBuffer.append(TEXT_37);
214
    stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName()));
215
    stringBuffer.append(TEXT_38);
216
    }
217
    stringBuffer.append(TEXT_39);
218
    
219
String acceptAllMatcherAccessor = "acceptAllMatcher()"; //$NON-NLS-1$
220
for (Iterator nodes = genDiagram.getAllNodes().iterator(); nodes.hasNext();) {
221
	GenNode nextNode = (GenNode) nodes.next();
222
	String qualifiedChildNodeInterfaceName = nextNode.getDomainMetaClass().getQualifiedInterfaceName();
223
	String childNodeSelector = nextNode.getModelFacet() != null && nextNode.getModelFacet().getModelElementSelector() != null ? nextNode.getUniqueIdentifier() : acceptAllMatcherAccessor;
224
225
    stringBuffer.append(TEXT_40);
226
    stringBuffer.append(nextNode.getUniqueIdentifier());
227
    stringBuffer.append(TEXT_41);
228
    stringBuffer.append(importManager.getImportedName(qualifiedChildNodeInterfaceName));
229
    stringBuffer.append(TEXT_42);
230
    stringBuffer.append(childNodeSelector);
231
    stringBuffer.append(TEXT_43);
232
    
233
}
234
for (Iterator containers = nodeContainers.iterator(); containers.hasNext();) {
235
	GenContainerBase nextContainer = (GenContainerBase) containers.next();
236
237
    stringBuffer.append(TEXT_44);
238
    stringBuffer.append(nextContainer.getUniqueIdentifier());
239
    stringBuffer.append(TEXT_45);
240
    
241
}
242
243
    stringBuffer.append(TEXT_46);
244
    
245
for (Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) {
246
	GenLink genLink = (GenLink) it.next();
247
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
248
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
249
		String interfaceName = importManager.getImportedName(modelFacet.getMetaClass().getQualifiedInterfaceName());
250
		String linkSelector = modelFacet.getModelElementSelector() != null ? genLink.getUniqueIdentifier() : acceptAllMatcherAccessor;		
251
252
    stringBuffer.append(TEXT_47);
253
    stringBuffer.append(genLink.getUniqueIdentifier());
254
    stringBuffer.append(TEXT_48);
255
    stringBuffer.append(interfaceName);
256
    stringBuffer.append(TEXT_49);
257
    stringBuffer.append(linkSelector);
258
    stringBuffer.append(TEXT_50);
259
    
260
	}
261
}
262
263
    stringBuffer.append(TEXT_51);
264
    stringBuffer.append(TEXT_52);
265
    stringBuffer.append(TEXT_53);
266
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
267
    stringBuffer.append(TEXT_54);
268
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
269
    stringBuffer.append(TEXT_55);
270
    stringBuffer.append(TEXT_56);
271
    stringBuffer.append(TEXT_57);
272
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
273
    stringBuffer.append(TEXT_58);
274
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
275
    stringBuffer.append(TEXT_59);
276
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()));
277
    stringBuffer.append(TEXT_60);
278
    
279
int selectorCounter = 0;
280
for (Iterator it = genDiagram.eAllContents(); it.hasNext();) {
281
	Object next = it.next();
282
	String id = null;
283
	TypeModelFacet modelFacet = null;
284
	if (next instanceof GenNode) {
285
		id = ((GenNode) next).getUniqueIdentifier();
286
		modelFacet = ((GenNode) next).getModelFacet();
287
	} else if (next instanceof GenLink && ((GenLink) next).getModelFacet() instanceof TypeLinkModelFacet) {
288
		id = ((GenLink) next).getUniqueIdentifier();
289
		modelFacet = (TypeLinkModelFacet) ((GenLink) next).getModelFacet();
290
	}
291
	if (modelFacet == null || modelFacet.getModelElementSelector() == null) {
292
		continue;
293
	}
294
	GenConstraint selector = modelFacet.getModelElementSelector();
295
	selectorCounter++;
296
297
    stringBuffer.append(TEXT_61);
298
    stringBuffer.append(id);
299
    stringBuffer.append(TEXT_62);
300
    stringBuffer.append(selector.getLanguage());
301
    stringBuffer.append(TEXT_63);
302
    stringBuffer.append(selector.getBody());
303
    stringBuffer.append(TEXT_64);
304
    stringBuffer.append(id);
305
    stringBuffer.append(TEXT_65);
306
    stringBuffer.append(selector.getBody());
307
    stringBuffer.append(TEXT_66);
308
    }
309
    stringBuffer.append(TEXT_67);
310
    if(selectorCounter > 0) { 
311
    stringBuffer.append(TEXT_68);
312
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.query.ocl.conditions.OCLConstraintCondition"));
313
    stringBuffer.append(TEXT_69);
314
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()));
315
    stringBuffer.append(TEXT_70);
316
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.query.ocl.conditions.OCLConstraintCondition"));
317
    stringBuffer.append(TEXT_71);
318
    }
319
    stringBuffer.append(TEXT_72);
320
    importManager.emitSortedImports();
321
    return stringBuffer.toString();
322
  }
323
}
(-)templates/parts/refreshers.javajetinc/bounds.javajetinc (+10 lines)
Added Link Here
1
		Refresher boundsRefresher = new Refresher() {
2
			public void refresh() {
3
				refreshBounds();
4
			}
5
		};
6
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getNode_LayoutConstraint(), boundsRefresher);
7
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getSize_Width(), boundsRefresher);
8
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getSize_Height(), boundsRefresher);
9
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getLocation_X(), boundsRefresher);
10
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getLocation_Y(), boundsRefresher);
(-)templates/providers/LabelViewFactory.javajet (+38 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers"  class="LabelViewFactoryGenerator"
2
	imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
GenCommonBase genElement = (GenCommonBase) ((Object[]) argument)[0];
5
GenDiagram genDiagram = genElement.getDiagram();
6
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
%>
8
<%@ include file="../copyright4java.jetinc"%>
9
<%importManager.emitPackageStatement(stringBuffer);
10
11
importManager.markImportLocation(stringBuffer);
12
%>
13
14
/**
15
 * @generated
16
 */
17
public class <%=genElement.getNotationViewFactoryClassName()%> {
18
	/**
19
	 * @generated
20
	 */
21
	public static void decorateView(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) {
22
<%@ include file="createVIDAnnotation.jetinc"%>
23
<%
24
if (genElement instanceof GenLabel) {
25
%>
26
		view.setType("<%=genElement.getUniqueIdentifier()%>SemanticHint");
27
<%
28
}/*genElement is a pure label*/
29
if (genElement instanceof GenLinkLabel) {
30
%>
31
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Location")%> location = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createLocation();
32
		((<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>)view).setLayoutConstraint(location);
33
<%
34
}
35
%>
36
	}
37
}
38
<%importManager.emitSortedImports();%>
(-).cvsignore (+1 lines)
Added Link Here
1
bin
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/parts/NodeLabelEditPartGenerator.java (+767 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.parts;
2
3
import java.util.*;
4
import org.eclipse.gmf.codegen.gmfgen.*;
5
import org.eclipse.gmf.common.codegen.*;
6
import org.eclipse.emf.codegen.ecore.genmodel.*;
7
import org.eclipse.emf.ecore.*;
8
9
public class NodeLabelEditPartGenerator
10
{
11
  protected static String nl;
12
  public static synchronized NodeLabelEditPartGenerator create(String lineSeparator)
13
  {
14
    nl = lineSeparator;
15
    NodeLabelEditPartGenerator result = new NodeLabelEditPartGenerator();
16
    nl = null;
17
    return result;
18
  }
19
20
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
21
  protected final String TEXT_1 = "";
22
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
23
  protected final String TEXT_3 = NL + " */";
24
  protected final String TEXT_4 = NL;
25
  protected final String TEXT_5 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
26
  protected final String TEXT_6 = " extends ";
27
  protected final String TEXT_7 = " {";
28
  protected final String TEXT_8 = NL;
29
  protected final String TEXT_9 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
30
  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 ";
31
  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() {";
32
  protected final String TEXT_12 = NL;
33
  protected final String TEXT_13 = "\t\tinstallEditPolicy(";
34
  protected final String TEXT_14 = ".DIRECT_EDIT_ROLE," + NL + "\t\t\t\tnew ";
35
  protected final String TEXT_15 = "() {" + NL + "\t\t\t\t\tprotected void showCurrentEditValue(";
36
  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 ";
37
  protected final String TEXT_17 = " getDirectEditCommand(";
38
  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 ";
39
  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 ";
40
  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 ";
41
  protected final String TEXT_21 = ".INSTANCE;" + NL + "\t\t\t\t\t\t} catch (";
42
  protected final String TEXT_22 = " e) {" + NL + "\t\t\t\t\t\t\treturn ";
43
  protected final String TEXT_23 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}";
44
  protected final String TEXT_24 = NL + "\t\t\t\t\t\tif (parseResult.length != 1) {" + NL + "\t\t\t\t\t\t\treturn ";
45
  protected final String TEXT_25 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new ";
46
  protected final String TEXT_26 = "() {" + NL + "\t\t\t\t\t\t\tprivate ";
47
  protected final String TEXT_27 = " element = ";
48
  protected final String TEXT_28 = ";" + NL + "\t\t\t\t\t\t\tprivate ";
49
  protected final String TEXT_29 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate ";
50
  protected final String TEXT_30 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t";
51
  protected final String TEXT_31 = " domainModelEditDomain = ";
52
  protected final String TEXT_32 = ".getEditingDomainFor(";
53
  protected final String TEXT_33 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t";
54
  protected final String TEXT_34 = " feature = (";
55
  protected final String TEXT_35 = ") ";
56
  protected final String TEXT_36 = ".eINSTANCE.get";
57
  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 = ";
58
  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 ";
59
  protected final String TEXT_39 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}";
60
  protected final String TEXT_40 = NL + "\t\t\t\t\t\t\t\t";
61
  protected final String TEXT_41 = " result = new ";
62
  protected final String TEXT_42 = "();" + NL + "\t\t\t\t\t\t\t\t";
63
  protected final String TEXT_43 = " values = new ";
64
  protected final String TEXT_44 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get";
65
  protected final String TEXT_45 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append(";
66
  protected final String TEXT_46 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append(";
67
  protected final String TEXT_47 = ".create(domainModelEditDomain, element, feature, valueToSet));" + NL + "\t\t\t\t\t\t\t\treturn result;";
68
  protected final String TEXT_48 = NL + "\t\t\t\t\t\t\t\treturn ";
69
  protected final String TEXT_49 = ".create(domainModelEditDomain, element, feature, valueToSet);";
70
  protected final String TEXT_50 = NL + "\t\t\t\t\t\t\t}";
71
  protected final String TEXT_51 = NL + "\t\t\t\t\t\tif (parseResult.length != ";
72
  protected final String TEXT_52 = ") {" + NL + "\t\t\t\t\t\t\treturn ";
73
  protected final String TEXT_53 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new ";
74
  protected final String TEXT_54 = "() {" + NL + "\t\t\t\t\t\t\tprivate ";
75
  protected final String TEXT_55 = " element = ";
76
  protected final String TEXT_56 = ";" + NL + "\t\t\t\t\t\t\tprivate ";
77
  protected final String TEXT_57 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate ";
78
  protected final String TEXT_58 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t";
79
  protected final String TEXT_59 = " domainModelEditDomain = ";
80
  protected final String TEXT_60 = ".getEditingDomainFor(";
81
  protected final String TEXT_61 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t";
82
  protected final String TEXT_62 = " result = new ";
83
  protected final String TEXT_63 = "();" + NL + "\t\t\t\t\t\t\t\tObject valueToSet;";
84
  protected final String TEXT_64 = NL + "\t\t\t\t\t\t\t\t";
85
  protected final String TEXT_65 = " ";
86
  protected final String TEXT_66 = "feature = (";
87
  protected final String TEXT_67 = ") ";
88
  protected final String TEXT_68 = ".eINSTANCE.get";
89
  protected final String TEXT_69 = "();" + NL + "\t\t\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\t\t\tvalueToSet = ";
90
  protected final String TEXT_70 = ".parseValue(feature, parseResult[";
91
  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 ";
92
  protected final String TEXT_72 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}";
93
  protected final String TEXT_73 = NL + "\t\t\t\t\t\t\t\t";
94
  protected final String TEXT_74 = " ";
95
  protected final String TEXT_75 = "values = new ";
96
  protected final String TEXT_76 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get";
97
  protected final String TEXT_77 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append(";
98
  protected final String TEXT_78 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append(";
99
  protected final String TEXT_79 = ".create(domainModelEditDomain, element, feature, valueToSet));";
100
  protected final String TEXT_80 = NL + "\t\t\t\t\t\t\t\tresult.append(";
101
  protected final String TEXT_81 = ".create(domainModelEditDomain, element, feature, valueToSet));";
102
  protected final String TEXT_82 = NL + "\t\t\t\t\t\t\t\treturn result;" + NL + "\t\t\t\t\t\t\t}";
103
  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;
104
  protected final String TEXT_84 = NL;
105
  protected final String TEXT_85 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void performRequest(";
106
  protected final String TEXT_86 = " req) {" + NL + "\t\tif (";
107
  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 ";
108
  protected final String TEXT_88 = " getManager() {" + NL + "\t\tif (manager == null) {" + NL + "\t\t\tmanager = new ";
109
  protected final String TEXT_89 = "(this, ";
110
  protected final String TEXT_90 = ".class, new ";
111
  protected final String TEXT_91 = "() {" + NL + "\t\t\t\tpublic void relocate(";
112
  protected final String TEXT_92 = " celleditor) {" + NL + "\t\t\t\t\t";
113
  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;
114
  protected final String TEXT_94 = NL;
115
  protected final String TEXT_95 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String VIEW_PATTERN = \"";
116
  protected final String TEXT_96 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String EDIT_PATTERN = \"";
117
  protected final String TEXT_97 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String getLabelText() {" + NL + "\t\t";
118
  protected final String TEXT_98 = " element = ";
119
  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";
120
  protected final String TEXT_100 = " element = ";
121
  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(";
122
  protected final String TEXT_102 = " element, String pattern) {";
123
  protected final String TEXT_103 = NL + "\t\tif (element.get";
124
  protected final String TEXT_104 = "() == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}";
125
  protected final String TEXT_105 = NL + "\t\treturn ";
126
  protected final String TEXT_106 = ".format(pattern, new Object[] {";
127
  protected final String TEXT_107 = NL + "\t\t\t";
128
  protected final String TEXT_108 = NL + "\t\t});";
129
  protected final String TEXT_109 = NL + "\t\treturn ";
130
  protected final String TEXT_110 = ".format(pattern, new Object[] {";
131
  protected final String TEXT_111 = NL + "\t\t";
132
  protected final String TEXT_112 = ",";
133
  protected final String TEXT_113 = NL + "\t\t});";
134
  protected final String TEXT_114 = NL + "\t\t//XXX: unexpected model facet." + NL + "\t\treturn defaultText;";
135
  protected final String TEXT_115 = NL + "\t}";
136
  protected final String TEXT_116 = NL;
137
  protected final String TEXT_117 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFont() {" + NL + "\t\t";
138
  protected final String TEXT_118 = " style =" + NL + "\t\t\t(";
139
  protected final String TEXT_119 = ") ";
140
  protected final String TEXT_120 = ".getStyle(" + NL + "\t\t\t\t";
141
  protected final String TEXT_121 = ".eINSTANCE.getFontStyle());" + NL + "\t\t";
142
  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 = ";
143
  protected final String TEXT_123 = ".NORMAL;" + NL + "\t\t\tif (style.isBold()) {" + NL + "\t\t\t\tfontStyle |= ";
144
  protected final String TEXT_124 = ".BOLD;" + NL + "\t\t\t}" + NL + "\t\t\tif (style.isItalic()) {" + NL + "\t\t\t\tfontStyle |= ";
145
  protected final String TEXT_125 = ".ITALIC;" + NL + "\t\t\t}" + NL + "\t\t\t";
146
  protected final String TEXT_126 = " currentFont = getFigure().getFont();" + NL + "\t\t\tif (currentFont != null) {" + NL + "\t\t\t\t";
147
  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 ";
148
  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 ";
149
  protected final String TEXT_129 = " createdFont;";
150
  protected final String TEXT_130 = NL;
151
  protected final String TEXT_131 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFontColor() {" + NL + "\t\t";
152
  protected final String TEXT_132 = " style = (";
153
  protected final String TEXT_133 = ")  ";
154
  protected final String TEXT_134 = ".getStyle(";
155
  protected final String TEXT_135 = ".eINSTANCE.getFontStyle());" + NL + "\t\t";
156
  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";
157
  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 ";
158
  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 ";
159
  protected final String TEXT_139 = " createdFontColor;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
160
  protected final String TEXT_140 = " getLabelIcon() {" + NL + "\t\t";
161
  protected final String TEXT_141 = " element = resolveSemanticElement();" + NL + "\t\t";
162
  protected final String TEXT_142 = " imageDescriptor = ";
163
  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 ";
164
  protected final String TEXT_144 = ".getMissingImageDescriptor().createImage();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
165
  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 (";
166
  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 ";
167
  protected final String TEXT_147 = " getUpdatableParent() {" + NL + "\t\tfor(EditPart editPart = getParent(); editPart != null; editPart = editPart.getParent()) {" + NL + "\t\t\tif (editPart instanceof ";
168
  protected final String TEXT_148 = ") {" + NL + "\t\t\t\treturn (";
169
  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";
170
  protected final String TEXT_150 = " updatableParent = getUpdatableParent();" + NL + "\t\tif (updatableParent != null) {" + NL + "\t\t\tupdatableParent.addRefresher(";
171
  protected final String TEXT_151 = ".eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);" + NL + "\t\t\tupdatableParent.addRefresher(";
172
  protected final String TEXT_152 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher(";
173
  protected final String TEXT_153 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher(";
174
  protected final String TEXT_154 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher(";
175
  protected final String TEXT_155 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);";
176
  protected final String TEXT_156 = NL + "\t\t\tupdatableParent.addRefresher(";
177
  protected final String TEXT_157 = ".eINSTANCE.get";
178
  protected final String TEXT_158 = "(), labelRefresher);";
179
  protected final String TEXT_159 = NL + "\t\t\tupdatableParent.addRefresher(";
180
  protected final String TEXT_160 = ".eINSTANCE.get";
181
  protected final String TEXT_161 = "(), labelRefresher);";
182
  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";
183
  protected final String TEXT_163 = " updatableParent = getUpdatableParent();" + NL + "\t\tif (updatableParent != null) {" + NL + "\t\t\tupdatableParent.removeRefresher(";
184
  protected final String TEXT_164 = ".eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher(";
185
  protected final String TEXT_165 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher(";
186
  protected final String TEXT_166 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher(";
187
  protected final String TEXT_167 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher(";
188
  protected final String TEXT_168 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);";
189
  protected final String TEXT_169 = NL + "\t\t\tupdatableParent.removeRefresher(";
190
  protected final String TEXT_170 = ".eINSTANCE.get";
191
  protected final String TEXT_171 = "(), labelRefresher);";
192
  protected final String TEXT_172 = NL + "\t\t\tupdatableParent.removeRefresher(";
193
  protected final String TEXT_173 = ".eINSTANCE.get";
194
  protected final String TEXT_174 = "(), labelRefresher);";
195
  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};";
196
  protected final String TEXT_176 = NL;
197
  protected final String TEXT_177 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
198
  protected final String TEXT_178 = " createFigure() {" + NL + "\t\t";
199
  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 ";
200
  protected final String TEXT_180 = " createLabel() {";
201
  protected final String TEXT_181 = NL + "\t\treturn new ";
202
  protected final String TEXT_182 = "();";
203
  protected final String TEXT_183 = NL + "\t\treturn ";
204
  protected final String TEXT_184 = ";";
205
  protected final String TEXT_185 = NL + "\t\treturn new ";
206
  protected final String TEXT_186 = "();";
207
  protected final String TEXT_187 = NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
208
  protected final String TEXT_188 = " getLabel() {" + NL + "\t\treturn (";
209
  protected final String TEXT_189 = ") getFigure();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void setLabel(";
210
  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;
211
  protected final String TEXT_191 = NL;
212
  protected final String TEXT_192 = NL;
213
  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}";
214
  protected final String TEXT_194 = NL + "}";
215
  protected final String TEXT_195 = NL;
216
217
  public String generate(Object argument)
218
  {
219
    final StringBuffer stringBuffer = new StringBuffer();
220
    
221
GenNodeLabel genLabel = (GenNodeLabel) ((Object[]) argument)[0];
222
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
223
GenNode genHost = genLabel.getNode();
224
GenClass underlyingMetaClass = genHost.getDomainMetaClass();
225
GenDiagram genDiagram = genLabel.getDiagram();
226
LabelModelFacet labelModelFacet = genLabel.getModelFacet();
227
228
    stringBuffer.append(TEXT_1);
229
    
230
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
231
if (copyrightText != null && copyrightText.trim().length() > 0) {
232
233
    stringBuffer.append(TEXT_2);
234
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
235
    stringBuffer.append(TEXT_3);
236
    }
237
    importManager.emitPackageStatement(stringBuffer);
238
    stringBuffer.append(TEXT_4);
239
    
240
importManager.addImport("org.eclipse.gef.EditPart");
241
importManager.addImport("org.eclipse.gef.EditPolicy");
242
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
243
importManager.markImportLocation(stringBuffer);
244
245
    stringBuffer.append(TEXT_5);
246
    stringBuffer.append(genLabel.getEditPartClassName());
247
    stringBuffer.append(TEXT_6);
248
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart"));
249
    stringBuffer.append(TEXT_7);
250
    stringBuffer.append(TEXT_8);
251
    stringBuffer.append(TEXT_9);
252
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager"));
253
    stringBuffer.append(TEXT_10);
254
    stringBuffer.append(genLabel.getEditPartClassName());
255
    stringBuffer.append(TEXT_11);
256
    
257
	final String primaryView = "getUpdatableParent().getDiagramNode()";
258
	final String resolvedSemanticElement = "resolveSemanticElement()";
259
260
    stringBuffer.append(TEXT_12);
261
    stringBuffer.append(TEXT_13);
262
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
263
    stringBuffer.append(TEXT_14);
264
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.DirectEditPolicy"));
265
    stringBuffer.append(TEXT_15);
266
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest"));
267
    stringBuffer.append(TEXT_16);
268
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
269
    stringBuffer.append(TEXT_17);
270
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest"));
271
    stringBuffer.append(TEXT_18);
272
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
273
    stringBuffer.append(TEXT_19);
274
    stringBuffer.append(importManager.getImportedName("java.text.MessageFormat"));
275
    stringBuffer.append(TEXT_20);
276
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
277
    stringBuffer.append(TEXT_21);
278
    stringBuffer.append(importManager.getImportedName("java.text.ParseException"));
279
    stringBuffer.append(TEXT_22);
280
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
281
    stringBuffer.append(TEXT_23);
282
    
283
if (labelModelFacet instanceof FeatureLabelModelFacet && !genLabel.isReadOnly()) {
284
	GenFeature featureToSet = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
285
	EStructuralFeature ecoreFeature = featureToSet.getEcoreFeature();
286
287
    stringBuffer.append(TEXT_24);
288
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
289
    stringBuffer.append(TEXT_25);
290
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
291
    stringBuffer.append(TEXT_26);
292
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
293
    stringBuffer.append(TEXT_27);
294
    stringBuffer.append(resolvedSemanticElement);
295
    stringBuffer.append(TEXT_28);
296
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
297
    stringBuffer.append(TEXT_29);
298
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
299
    stringBuffer.append(TEXT_30);
300
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain"));
301
    stringBuffer.append(TEXT_31);
302
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
303
    stringBuffer.append(TEXT_32);
304
    stringBuffer.append(primaryView);
305
    stringBuffer.append(TEXT_33);
306
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
307
    stringBuffer.append(TEXT_34);
308
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
309
    stringBuffer.append(TEXT_35);
310
    stringBuffer.append(importManager.getImportedName(featureToSet.getGenPackage().getQualifiedPackageInterfaceName()));
311
    stringBuffer.append(TEXT_36);
312
    stringBuffer.append(featureToSet.getFeatureAccessorName());
313
    stringBuffer.append(TEXT_37);
314
    stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName()));
315
    stringBuffer.append(TEXT_38);
316
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand"));
317
    stringBuffer.append(TEXT_39);
318
    
319
	if (ecoreFeature.isMany()) {
320
321
    stringBuffer.append(TEXT_40);
322
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
323
    stringBuffer.append(TEXT_41);
324
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
325
    stringBuffer.append(TEXT_42);
326
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList"));
327
    stringBuffer.append(TEXT_43);
328
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList"));
329
    stringBuffer.append(TEXT_44);
330
    stringBuffer.append(featureToSet.getAccessorName());
331
    stringBuffer.append(TEXT_45);
332
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
333
    stringBuffer.append(TEXT_46);
334
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand"));
335
    stringBuffer.append(TEXT_47);
336
    
337
	} else {
338
339
    stringBuffer.append(TEXT_48);
340
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
341
    stringBuffer.append(TEXT_49);
342
    
343
	}
344
345
    stringBuffer.append(TEXT_50);
346
    
347
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
348
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
349
	List metaFeatures = compositeFeatureLabelModelFacet.getMetaFeatures();
350
351
    stringBuffer.append(TEXT_51);
352
    stringBuffer.append(metaFeatures.size());
353
    stringBuffer.append(TEXT_52);
354
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
355
    stringBuffer.append(TEXT_53);
356
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
357
    stringBuffer.append(TEXT_54);
358
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
359
    stringBuffer.append(TEXT_55);
360
    stringBuffer.append(resolvedSemanticElement);
361
    stringBuffer.append(TEXT_56);
362
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
363
    stringBuffer.append(TEXT_57);
364
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
365
    stringBuffer.append(TEXT_58);
366
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain"));
367
    stringBuffer.append(TEXT_59);
368
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
369
    stringBuffer.append(TEXT_60);
370
    stringBuffer.append(primaryView);
371
    stringBuffer.append(TEXT_61);
372
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
373
    stringBuffer.append(TEXT_62);
374
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
375
    stringBuffer.append(TEXT_63);
376
    
377
	boolean haveDeclaredValues = false;
378
	for(int i = 0; i < metaFeatures.size(); i++) {
379
		GenFeature nextFeatureToSet = (GenFeature) metaFeatures.get(i);
380
		EStructuralFeature nextEcoreFeature = nextFeatureToSet.getEcoreFeature();
381
382
    stringBuffer.append(TEXT_64);
383
    if (i == 0) {
384
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
385
    stringBuffer.append(TEXT_65);
386
    }
387
    stringBuffer.append(TEXT_66);
388
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
389
    stringBuffer.append(TEXT_67);
390
    stringBuffer.append(importManager.getImportedName(nextFeatureToSet.getGenPackage().getQualifiedPackageInterfaceName()));
391
    stringBuffer.append(TEXT_68);
392
    stringBuffer.append(nextFeatureToSet.getFeatureAccessorName());
393
    stringBuffer.append(TEXT_69);
394
    stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName()));
395
    stringBuffer.append(TEXT_70);
396
    stringBuffer.append(i);
397
    stringBuffer.append(TEXT_71);
398
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand"));
399
    stringBuffer.append(TEXT_72);
400
    
401
		if (nextEcoreFeature.isMany()) {
402
403
    stringBuffer.append(TEXT_73);
404
    if (!haveDeclaredValues) { haveDeclaredValues = true;
405
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList"));
406
    stringBuffer.append(TEXT_74);
407
    }
408
    stringBuffer.append(TEXT_75);
409
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList"));
410
    stringBuffer.append(TEXT_76);
411
    stringBuffer.append(nextFeatureToSet.getAccessorName());
412
    stringBuffer.append(TEXT_77);
413
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
414
    stringBuffer.append(TEXT_78);
415
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand"));
416
    stringBuffer.append(TEXT_79);
417
    
418
		} else {
419
420
    stringBuffer.append(TEXT_80);
421
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
422
    stringBuffer.append(TEXT_81);
423
    
424
		}
425
426
    
427
	}
428
429
    stringBuffer.append(TEXT_82);
430
    
431
}
432
433
    stringBuffer.append(TEXT_83);
434
    stringBuffer.append(TEXT_84);
435
    stringBuffer.append(TEXT_85);
436
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request"));
437
    stringBuffer.append(TEXT_86);
438
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants"));
439
    stringBuffer.append(TEXT_87);
440
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager"));
441
    stringBuffer.append(TEXT_88);
442
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager"));
443
    stringBuffer.append(TEXT_89);
444
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.TextCellEditor"));
445
    stringBuffer.append(TEXT_90);
446
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.CellEditorLocator"));
447
    stringBuffer.append(TEXT_91);
448
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.CellEditor"));
449
    stringBuffer.append(TEXT_92);
450
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle"));
451
    stringBuffer.append(TEXT_93);
452
    stringBuffer.append(TEXT_94);
453
    
454
/*genFeature.getObjectType() throws NPE on primitive types. This is a workaround. */
455
HashMap primitiveTypeToWrapperClassName = new HashMap();
456
primitiveTypeToWrapperClassName.put(Boolean.TYPE, "Boolean");
457
primitiveTypeToWrapperClassName.put(Byte.TYPE, "Byte");
458
primitiveTypeToWrapperClassName.put(Character.TYPE, "Character");
459
primitiveTypeToWrapperClassName.put(Double.TYPE, "Double");
460
primitiveTypeToWrapperClassName.put(Float.TYPE, "Float");
461
primitiveTypeToWrapperClassName.put(Integer.TYPE, "Integer");
462
primitiveTypeToWrapperClassName.put(Long.TYPE, "Long");
463
primitiveTypeToWrapperClassName.put(Short.TYPE, "Short");
464
String viewPattern = null;
465
String editPattern = null;
466
if (labelModelFacet instanceof FeatureLabelModelFacet) {
467
	FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet;
468
	viewPattern = featureLabelModelFacet.getViewPattern();
469
	if (viewPattern == null || viewPattern.length() == 0) {
470
		viewPattern = "{0}";
471
	}
472
	editPattern = featureLabelModelFacet.getEditPattern();
473
	if (editPattern == null || editPattern.length() == 0) {
474
		editPattern = "{0}";
475
	}
476
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
477
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
478
	viewPattern = compositeFeatureLabelModelFacet.getViewPattern();
479
	if (viewPattern == null || viewPattern.length() == 0) {
480
		StringBuffer patternBuffer = new StringBuffer();
481
		for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) {
482
			patternBuffer.append("{").append(i).append("} ");
483
		}
484
		viewPattern = patternBuffer.toString().trim();
485
	}
486
	editPattern = compositeFeatureLabelModelFacet.getEditPattern();
487
	if (editPattern == null || editPattern.length() == 0) {
488
		StringBuffer patternBuffer = new StringBuffer();
489
		for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) {
490
			patternBuffer.append("{").append(i).append("} ");
491
		}
492
		editPattern = patternBuffer.toString().trim();
493
	}
494
}
495
496
    stringBuffer.append(TEXT_95);
497
    stringBuffer.append(viewPattern);
498
    stringBuffer.append(TEXT_96);
499
    stringBuffer.append(editPattern);
500
    stringBuffer.append(TEXT_97);
501
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
502
    stringBuffer.append(TEXT_98);
503
    stringBuffer.append(resolvedSemanticElement);
504
    stringBuffer.append(TEXT_99);
505
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
506
    stringBuffer.append(TEXT_100);
507
    stringBuffer.append(resolvedSemanticElement);
508
    stringBuffer.append(TEXT_101);
509
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
510
    stringBuffer.append(TEXT_102);
511
    
512
if (labelModelFacet instanceof FeatureLabelModelFacet) {
513
	FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet;
514
	GenFeature feature = featureLabelModelFacet.getMetaFeature();
515
	if (!feature.isPrimitiveType()) {
516
517
    stringBuffer.append(TEXT_103);
518
    stringBuffer.append(feature.getCapName());
519
    stringBuffer.append(TEXT_104);
520
    
521
	}
522
523
    stringBuffer.append(TEXT_105);
524
    stringBuffer.append(importManager.getImportedName("java.text.MessageFormat"));
525
    stringBuffer.append(TEXT_106);
526
    
527
		String value = "element.get" + feature.getCapName() + "()";	/*XXX: getTypedKey is not a part of public API!*/
528
		if (feature.isPrimitiveType()) {
529
			value = "new " + primitiveTypeToWrapperClassName.get(feature.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")";
530
		}
531
532
    stringBuffer.append(TEXT_107);
533
    stringBuffer.append(value);
534
    stringBuffer.append(TEXT_108);
535
    
536
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
537
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
538
539
    stringBuffer.append(TEXT_109);
540
    stringBuffer.append(importManager.getImportedName("java.text.MessageFormat"));
541
    stringBuffer.append(TEXT_110);
542
    
543
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
544
		GenFeature next = (GenFeature) it.next();
545
		String value = "element.get" + next.getCapName() + "()";	/*XXX: getTypedKey is not a part of public API!*/
546
		if (next.isPrimitiveType()) {
547
			value = "new " + primitiveTypeToWrapperClassName.get(next.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")";
548
		}
549
550
    stringBuffer.append(TEXT_111);
551
    stringBuffer.append(value);
552
    if (it.hasNext()) {
553
    stringBuffer.append(TEXT_112);
554
    }
555
    
556
	}
557
558
    stringBuffer.append(TEXT_113);
559
    
560
} else {
561
562
    stringBuffer.append(TEXT_114);
563
    
564
}
565
566
    stringBuffer.append(TEXT_115);
567
    stringBuffer.append(TEXT_116);
568
    stringBuffer.append(TEXT_117);
569
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
570
    stringBuffer.append(TEXT_118);
571
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
572
    stringBuffer.append(TEXT_119);
573
    stringBuffer.append(primaryView);
574
    stringBuffer.append(TEXT_120);
575
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
576
    stringBuffer.append(TEXT_121);
577
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
578
    stringBuffer.append(TEXT_122);
579
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
580
    stringBuffer.append(TEXT_123);
581
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
582
    stringBuffer.append(TEXT_124);
583
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
584
    stringBuffer.append(TEXT_125);
585
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
586
    stringBuffer.append(TEXT_126);
587
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.FontData"));
588
    stringBuffer.append(TEXT_127);
589
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
590
    stringBuffer.append(TEXT_128);
591
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
592
    stringBuffer.append(TEXT_129);
593
    stringBuffer.append(TEXT_130);
594
    stringBuffer.append(TEXT_131);
595
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
596
    stringBuffer.append(TEXT_132);
597
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
598
    stringBuffer.append(TEXT_133);
599
    stringBuffer.append(primaryView);
600
    stringBuffer.append(TEXT_134);
601
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
602
    stringBuffer.append(TEXT_135);
603
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
604
    stringBuffer.append(TEXT_136);
605
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
606
    stringBuffer.append(TEXT_137);
607
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
608
    stringBuffer.append(TEXT_138);
609
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
610
    stringBuffer.append(TEXT_139);
611
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Image"));
612
    stringBuffer.append(TEXT_140);
613
    stringBuffer.append(importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName()));
614
    stringBuffer.append(TEXT_141);
615
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.resource.ImageDescriptor"));
616
    stringBuffer.append(TEXT_142);
617
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()));
618
    stringBuffer.append(TEXT_143);
619
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.resource.ImageDescriptor"));
620
    stringBuffer.append(TEXT_144);
621
    stringBuffer.append(importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName()));
622
    stringBuffer.append(TEXT_145);
623
    stringBuffer.append(importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName()));
624
    stringBuffer.append(TEXT_146);
625
    stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName()));
626
    stringBuffer.append(TEXT_147);
627
    stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName()));
628
    stringBuffer.append(TEXT_148);
629
    stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName()));
630
    stringBuffer.append(TEXT_149);
631
    stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName()));
632
    stringBuffer.append(TEXT_150);
633
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
634
    stringBuffer.append(TEXT_151);
635
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
636
    stringBuffer.append(TEXT_152);
637
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
638
    stringBuffer.append(TEXT_153);
639
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
640
    stringBuffer.append(TEXT_154);
641
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
642
    stringBuffer.append(TEXT_155);
643
    
644
if (labelModelFacet instanceof FeatureLabelModelFacet) {
645
	GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
646
647
    stringBuffer.append(TEXT_156);
648
    stringBuffer.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName()));
649
    stringBuffer.append(TEXT_157);
650
    stringBuffer.append(feature.getFeatureAccessorName());
651
    stringBuffer.append(TEXT_158);
652
    
653
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
654
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
655
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
656
		GenFeature next = (GenFeature) it.next();
657
658
    stringBuffer.append(TEXT_159);
659
    stringBuffer.append(importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName()));
660
    stringBuffer.append(TEXT_160);
661
    stringBuffer.append(next.getFeatureAccessorName());
662
    stringBuffer.append(TEXT_161);
663
    
664
	}
665
}
666
667
    stringBuffer.append(TEXT_162);
668
    stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName()));
669
    stringBuffer.append(TEXT_163);
670
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
671
    stringBuffer.append(TEXT_164);
672
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
673
    stringBuffer.append(TEXT_165);
674
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
675
    stringBuffer.append(TEXT_166);
676
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
677
    stringBuffer.append(TEXT_167);
678
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
679
    stringBuffer.append(TEXT_168);
680
    
681
if (labelModelFacet instanceof FeatureLabelModelFacet) {
682
	GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
683
684
    stringBuffer.append(TEXT_169);
685
    stringBuffer.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName()));
686
    stringBuffer.append(TEXT_170);
687
    stringBuffer.append(feature.getFeatureAccessorName());
688
    stringBuffer.append(TEXT_171);
689
    
690
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
691
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
692
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
693
		GenFeature next = (GenFeature) it.next();
694
695
    stringBuffer.append(TEXT_172);
696
    stringBuffer.append(importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName()));
697
    stringBuffer.append(TEXT_173);
698
    stringBuffer.append(next.getFeatureAccessorName());
699
    stringBuffer.append(TEXT_174);
700
    
701
	}
702
}
703
704
    stringBuffer.append(TEXT_175);
705
    stringBuffer.append(TEXT_176);
706
    stringBuffer.append(TEXT_177);
707
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
708
    stringBuffer.append(TEXT_178);
709
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
710
    stringBuffer.append(TEXT_179);
711
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
712
    stringBuffer.append(TEXT_180);
713
    
714
String figureQualifiedClassName = null;
715
Viewmap viewmap = genLabel.getViewmap();
716
if (viewmap instanceof FigureViewmap) {
717
	figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName();
718
	if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) {
719
		figureQualifiedClassName = "org.eclipse.draw2d.Label";
720
	}
721
722
    stringBuffer.append(TEXT_181);
723
    stringBuffer.append(importManager.getImportedName(figureQualifiedClassName));
724
    stringBuffer.append(TEXT_182);
725
    } // instanceof FigureViewmap
726
 else if (viewmap instanceof SnippetViewmap) {
727
    stringBuffer.append(TEXT_183);
728
    stringBuffer.append(((SnippetViewmap) viewmap).getBody());
729
    stringBuffer.append(TEXT_184);
730
    } // instanceof SnippetViewmap; FIXME : obtain figure class name to generate getter
731
 else if (viewmap instanceof InnerClassViewmap) {
732
 	figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName();
733
734
    stringBuffer.append(TEXT_185);
735
    stringBuffer.append(figureQualifiedClassName);
736
    stringBuffer.append(TEXT_186);
737
    }
738
    stringBuffer.append(TEXT_187);
739
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
740
    stringBuffer.append(TEXT_188);
741
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
742
    stringBuffer.append(TEXT_189);
743
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
744
    stringBuffer.append(TEXT_190);
745
    
746
if (genLabel.getViewmap() instanceof InnerClassViewmap) {
747
	String classBody = ((InnerClassViewmap) genLabel.getViewmap()).getClassBody();
748
749
    stringBuffer.append(TEXT_191);
750
    stringBuffer.append(classBody);
751
    stringBuffer.append(TEXT_192);
752
    
753
if (classBody.indexOf("DPtoLP") != -1) {
754
755
    stringBuffer.append(TEXT_193);
756
    
757
}
758
759
    
760
}
761
762
    stringBuffer.append(TEXT_194);
763
    importManager.emitSortedImports();
764
    stringBuffer.append(TEXT_195);
765
    return stringBuffer.toString();
766
  }
767
}
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/CreationWizardGenerator.java (+68 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
import org.eclipse.emf.codegen.ecore.genmodel.*;
4
import org.eclipse.gmf.codegen.gmfgen.*;
5
import org.eclipse.gmf.common.codegen.*;
6
7
public class CreationWizardGenerator
8
{
9
  protected static String nl;
10
  public static synchronized CreationWizardGenerator create(String lineSeparator)
11
  {
12
    nl = lineSeparator;
13
    CreationWizardGenerator result = new CreationWizardGenerator();
14
    nl = null;
15
    return result;
16
  }
17
18
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
19
  protected final String TEXT_1 = NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
20
  protected final String TEXT_2 = " extends ";
21
  protected final String TEXT_3 = " implements ";
22
  protected final String TEXT_4 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\t private ";
23
  protected final String TEXT_5 = " diagramFileURI;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\t private ";
24
  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 ";
25
  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 ";
26
  protected final String TEXT_8 = " Diagram\"); //$NON-NLS-1$" + NL + "\t\tsetDefaultPageImageDescriptor(";
27
  protected final String TEXT_9 = ".getBundledImageDescriptor(" + NL + "\t\t\t\"icons/full/wizban/New";
28
  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 + "}";
29
  protected final String TEXT_11 = NL;
30
31
  public String generate(Object argument)
32
  {
33
    final StringBuffer stringBuffer = new StringBuffer();
34
    
35
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
36
final GenModel genModel = genDiagram.getEditorGen().getDomainGenModel();
37
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
38
39
importManager.emitPackageStatement(stringBuffer);
40
importManager.markImportLocation(stringBuffer);
41
importManager.addImport("org.eclipse.jface.viewers.IStructuredSelection");
42
importManager.addImport("org.eclipse.ui.IWorkbench");
43
44
45
    stringBuffer.append(TEXT_1);
46
    stringBuffer.append(genDiagram.getCreationWizardClassName());
47
    stringBuffer.append(TEXT_2);
48
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.wizard.Wizard"));
49
    stringBuffer.append(TEXT_3);
50
    stringBuffer.append(importManager.getImportedName("org.eclipse.ui.INewWizard"));
51
    stringBuffer.append(TEXT_4);
52
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.URI"));
53
    stringBuffer.append(TEXT_5);
54
    stringBuffer.append(importManager.getImportedName(genDiagram.getCreationWizardPageQualifiedClassName()));
55
    stringBuffer.append(TEXT_6);
56
    stringBuffer.append(importManager.getImportedName(genDiagram.getCreationWizardPageQualifiedClassName()));
57
    stringBuffer.append(TEXT_7);
58
    stringBuffer.append(genModel.getModelName());
59
    stringBuffer.append(TEXT_8);
60
    stringBuffer.append(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName());
61
    stringBuffer.append(TEXT_9);
62
    stringBuffer.append(genModel.getModelName());
63
    stringBuffer.append(TEXT_10);
64
    importManager.emitSortedImports();
65
    stringBuffer.append(TEXT_11);
66
    return stringBuffer.toString();
67
  }
68
}
(-)templates/parts/refresher.javajetinc (+15 lines)
Added Link Here
1
	/**
2
	 * @generated
3
	 */
4
	private <%=importManager.getImportedName("java.util.HashMap")%> structuralFeatures2Refresher;
5
6
	/**
7
	 * @generated
8
	 */
9
	public Refresher getRefresher(<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%> feature, <%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> msg) {
10
		if (structuralFeatures2Refresher == null) {
11
			createRefreshers();
12
		}
13
		return (Refresher) structuralFeatures2Refresher.get(feature);
14
	}
15
(-)templates/editor/VisualIDRegistry.javajet (+370 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="VisualIDRegistryGenerator"
2
	imports="org.eclipse.gmf.codegen.gmfgen.* java.util.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
5
final String modelID = genDiagram.getEditorGen().getModelID();
6
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
%>
8
<%@ include file="../copyright4java.jetinc"%>
9
<%importManager.emitPackageStatement(stringBuffer);
10
importManager.addImport("org.eclipse.emf.ecore.EClass");
11
importManager.addImport("org.eclipse.emf.ecore.EObject");
12
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
13
importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram");
14
15
importManager.markImportLocation(stringBuffer);
16
%>
17
18
/**
19
 * This registry is used to determine which type of visual object should be
20
 * created for the corresponding Diagram, Node, ChildNode or Link represented 
21
 * by a domain model object. Note that it only returns semantically complete objects (those who must have an element associated with them).
22
 *
23
 * @generated
24
 */
25
public class <%=genDiagram.getVisualIDRegistryClassName()%> {
26
27
	public static final <%=genDiagram.getVisualIDRegistryClassName()%> INSTANCE = new <%=genDiagram.getVisualIDRegistryClassName()%>();
28
29
	/**
30
	 * @generated
31
	 */
32
	public int getDiagramVisualID(EObject domainElement) {
33
		if (domainElement == null) {
34
			return -1;
35
		}
36
		EClass domainElementMetaclass = domainElement.eClass();
37
		return getDiagramVisualID(domainElement, domainElementMetaclass);
38
	}
39
40
	/**
41
	 * @generated
42
	 */
43
	public int getDiagramVisualID(EObject domainElement, EClass domainElementMetaclass) {
44
<%
45
if (genDiagram.getDomainDiagramElement() != null) {	/*we do not support diagrams without domain elements in other places, but keep this copy-pasted occurrence*/
46
	String classifierAccessorName = genDiagram.getDomainDiagramElement().getClassifierAccessorName();
47
	String interfaceName = importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName());
48
%>
49
		if (<%=genDiagram.getMetaPackageName(importManager)%>.eINSTANCE.get<%=classifierAccessorName%>().equals(domainElementMetaclass) && isDiagram<%=genDiagram.getUniqueIdentifier()%>((<%=interfaceName%>) domainElement)) {
50
			return <%=genDiagram.getVisualID()%>;
51
		}
52
<%}%>
53
		return getUnrecognizedDiagramID(domainElement);
54
	}
55
56
	/**
57
	 * @generated
58
	 */
59
	public int getNodeVisualID(View containerView, EObject domainElement) {
60
		if (domainElement == null) {
61
			return -1;
62
		}
63
		EClass domainElementMetaclass = domainElement.eClass();
64
		return getNodeVisualID(containerView, domainElement, domainElementMetaclass);
65
	}
66
	
67
	/**
68
	 * @generated
69
	 */
70
	public int getNodeVisualID(View containerView, EObject domainElement, EClass domainElementMetaclass) {
71
		String containerModelID = getModelID(containerView);
72
		if (!"<%=modelID%>".equals(containerModelID)) {
73
			return -1;
74
		}
75
		int containerVisualID;
76
		if ("<%=modelID%>".equals(containerModelID)) {
77
			containerVisualID = getVisualID(containerView);
78
		} else {
79
			if (containerView instanceof Diagram) {
80
				containerVisualID = <%=genDiagram.getVisualID()%>;		
81
			} else {
82
				return -1;
83
			}
84
		}
85
		switch (containerVisualID) {
86
<%
87
Collection nodeContainers = new ArrayList(genDiagram.getCompartments());
88
nodeContainers.add(genDiagram);
89
for(Iterator it = nodeContainers.iterator(); it.hasNext(); ) {
90
	GenContainerBase nextContainer = (GenContainerBase) it.next();
91
%>
92
		case <%=nextContainer.getVisualID()%>:
93
<%
94
	for (Iterator childNodes = nextContainer.getContainedNodes().iterator(); childNodes.hasNext(); ) {
95
		GenNode childNode = (GenNode) childNodes.next();
96
		final String classifierAccessorName = childNode.getDomainMetaClass().getClassifierAccessorName();
97
		final String interfaceName = importManager.getImportedName(childNode.getDomainMetaClass().getQualifiedInterfaceName());
98
		final String semanticPackageInterfaceName = importManager.getImportedName(childNode.getDomainMetaClass().getGenPackage().getQualifiedPackageInterfaceName()); 
99
%>
100
			if (<%=semanticPackageInterfaceName%>.eINSTANCE.get<%=classifierAccessorName%>().isSuperTypeOf(domainElementMetaclass) && isNode<%=childNode.getUniqueIdentifier()%>((<%=interfaceName%>) domainElement)) {
101
				return <%=childNode.getVisualID()%>;
102
			}
103
<%
104
	}
105
%>
106
			return getUnrecognized<%=nextContainer.getUniqueIdentifier()%>ChildNodeID(domainElement);
107
<%
108
}
109
%>
110
		}
111
		return -1;
112
	}
113
114
	/**
115
	 * @generated
116
	 */
117
	public int getLinkWithClassVisualID(EObject domainElement) {
118
		EClass domainElementMetaclass = domainElement.eClass();
119
		return getLinkWithClassVisualID(domainElement, domainElementMetaclass);
120
	}
121
		
122
	/**
123
	 * @generated
124
	 */
125
	public int getLinkWithClassVisualID(EObject domainElement, EClass domainElementMetaclass) {
126
<%
127
for (Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) {
128
	GenLink genLink = (GenLink) it.next();
129
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
130
		final TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
131
		final String semanticLinkInterfaceName = modelFacet.getMetaClass().getClassifierAccessorName();
132
		final String interfaceName = importManager.getImportedName(modelFacet.getMetaClass().getQualifiedInterfaceName());
133
		final String semanticPackageInterfaceName = importManager.getImportedName(modelFacet.getMetaClass().getGenPackage().getQualifiedPackageInterfaceName());
134
%>
135
		if (<%=semanticPackageInterfaceName%>.eINSTANCE.get<%=semanticLinkInterfaceName%>().isSuperTypeOf(domainElementMetaclass) && isLinkWithClass<%=genLink.getUniqueIdentifier()%>((<%=interfaceName%>) domainElement)) {
136
			return <%=genLink.getVisualID()%>;
137
		}
138
<%
139
	}
140
}
141
%>
142
		return getUnrecognizedLinkWithClassID(domainElement);
143
	}
144
145
<%if (genDiagram.getDomainDiagramElement() != null) {%>
146
	/**
147
	 * User can change implementation of this method to check some additional 
148
	 * conditions here.
149
	 *
150
	 * @generated
151
	 */
152
	private boolean isDiagram<%=genDiagram.getUniqueIdentifier()%>(<%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%> element) {
153
		return true;
154
	}
155
<%}%>
156
157
	/**
158
	 * User can change implementation of this method to handle some specific
159
	 * situations not covered by default logic.
160
	 *
161
	 * @generated
162
	 */
163
	private int getUnrecognizedDiagramID(EObject domainElement) {
164
		return -1;
165
	}
166
167
<%
168
String acceptAllMatcherAccessor = "acceptAllMatcher()"; //$NON-NLS-1$
169
for (Iterator nodes = genDiagram.getAllNodes().iterator(); nodes.hasNext();) {
170
	GenNode nextNode = (GenNode) nodes.next();
171
	String qualifiedChildNodeInterfaceName = nextNode.getDomainMetaClass().getQualifiedInterfaceName();
172
	String childNodeSelector = nextNode.getModelFacet() != null && nextNode.getModelFacet().getModelElementSelector() != null ? nextNode.getUniqueIdentifier() : acceptAllMatcherAccessor;
173
%>
174
175
	/**
176
	 * User can change implementation of this method to check some additional 
177
	 * conditions here.
178
	 *
179
	 * @generated
180
	 */
181
	private boolean isNode<%=nextNode.getUniqueIdentifier()%>(<%=importManager.getImportedName(qualifiedChildNodeInterfaceName)%> element) {
182
		return ElementSelectors.<%=childNodeSelector%>.matches(element);
183
	}	
184
<%
185
}
186
for (Iterator containers = nodeContainers.iterator(); containers.hasNext();) {
187
	GenContainerBase nextContainer = (GenContainerBase) containers.next();
188
%>
189
190
	/**
191
	 * User can change implementation of this method to handle some specific
192
	 * situations not covered by default logic.
193
	 *
194
	 * @generated
195
	 */	
196
	private int getUnrecognized<%=nextContainer.getUniqueIdentifier()%>ChildNodeID(EObject domainElement) {
197
		return -1;
198
	}
199
<%
200
}
201
%>
202
203
	/**
204
	 * User can change implementation of this method to handle some specific
205
	 * situations not covered by default logic.
206
	 *
207
	 * @generated
208
	 */
209
	private int getUnrecognizedLinkWithClassID(EObject domainElement) {
210
		return -1;
211
	}
212
213
<%
214
for (Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) {
215
	GenLink genLink = (GenLink) it.next();
216
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
217
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
218
		String interfaceName = importManager.getImportedName(modelFacet.getMetaClass().getQualifiedInterfaceName());
219
		String linkSelector = modelFacet.getModelElementSelector() != null ? genLink.getUniqueIdentifier() : acceptAllMatcherAccessor;		
220
%>
221
222
	/**
223
	 * User can change implementation of this method to check some additional 
224
	 * conditions here.
225
	 *
226
	 * @generated
227
	 */
228
	private boolean isLinkWithClass<%=genLink.getUniqueIdentifier()%>(<%=interfaceName%> element) {
229
		return ElementSelectors.<%=linkSelector%>.matches(element);
230
	}
231
<%
232
	}
233
}
234
%>
235
236
<%@ include file="getModelID.jetinc" %>
237
238
<%@ include file="getVisualID.jetinc" %>
239
240
	/**
241
	 * @generated
242
	 */
243
	private static class ElementSelectors {	
244
<%
245
int selectorCounter = 0;
246
for (Iterator it = genDiagram.eAllContents(); it.hasNext();) {
247
	Object next = it.next();
248
	String id = null;
249
	TypeModelFacet modelFacet = null;
250
	if (next instanceof GenNode) {
251
		id = ((GenNode) next).getUniqueIdentifier();
252
		modelFacet = ((GenNode) next).getModelFacet();
253
	} else if (next instanceof GenLink && ((GenLink) next).getModelFacet() instanceof TypeLinkModelFacet) {
254
		id = ((GenLink) next).getUniqueIdentifier();
255
		modelFacet = (TypeLinkModelFacet) ((GenLink) next).getModelFacet();
256
	}
257
	if (modelFacet == null || modelFacet.getModelElementSelector() == null) {
258
		continue;
259
	}
260
	GenConstraint selector = modelFacet.getModelElementSelector();
261
	selectorCounter++;
262
%>
263
264
		/**
265
		 * Element matching condition for <%=id%>.
266
		 * <pre>language: <%=selector.getLanguage()%></pre>	
267
		 * <pre>body    : <%=selector.getBody()%></pre>
268
		 * @generated
269
		 */
270
		private static final Matcher <%=id%> = new Matcher("<%=selector.getBody()%>");
271
<%}%>
272
		
273
		/**
274
		 * @generated
275
		 */
276
		private ElementSelectors() {
277
		}
278
<%if(selectorCounter > 0) { %>			
279
		/**
280
		* @generated	
281
		*/
282
		static class Matcher {
283
	
284
			/**
285
			* @generated	
286
			*/					
287
			private EClass evalContext;
288
	
289
			/**
290
			* @generated	
291
			*/						
292
			private <%=importManager.getImportedName("org.eclipse.emf.query.ocl.conditions.OCLConstraintCondition")%> condition;
293
	
294
			/**
295
			* @generated	
296
			*/						
297
			private String body;		
298
					
299
			/**
300
			* @generated	
301
			*/				
302
			Matcher(String expressionBody) {			
303
				body = expressionBody;
304
			}
305
	
306
			/**
307
			* @generated	
308
			*/						
309
			boolean matches(EObject object) {		
310
				try {
311
					Boolean result = (object != null) ? evaluate(object) : Boolean.FALSE;
312
					return result.booleanValue();
313
				} catch(IllegalArgumentException e) {
314
					<%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError(null, e);
315
					return false;
316
				}
317
			}
318
	
319
			/**
320
			* @generated	
321
			*/		
322
			private Boolean evaluate(EObject context) {
323
				this.evalContext = context.eClass();
324
				if(condition == null) {					
325
					condition = new <%=importManager.getImportedName("org.eclipse.emf.query.ocl.conditions.OCLConstraintCondition")%>(body, evalContext);
326
				}
327
				if(condition != null) {
328
					return booleanCast(condition.evaluate(context));
329
				}
330
				return Boolean.FALSE;
331
			}
332
	
333
			/**
334
			* @generated	
335
			*/					
336
			private static Boolean booleanCast(Object value) {
337
				if(value == null) {
338
					return null;
339
				} else if(value instanceof Boolean) {
340
					 return (Boolean)value;	
341
				}
342
				return Boolean.FALSE;
343
			}
344
		} // end of Matcher
345
<%}%>		
346
		/**
347
		 * @generated
348
		 */
349
		static class AcceptAllMatcher {
350
			/**
351
			 * @generated
352
			 */		
353
			static final AcceptAllMatcher INSTANCE = new AcceptAllMatcher();
354
			/**
355
			 * @generated
356
			 */					
357
			boolean matches(Object element) {
358
				return true;
359
			}
360
		}
361
		
362
		/**
363
		 * @generated
364
		 */		
365
		static AcceptAllMatcher acceptAllMatcher() {
366
			return AcceptAllMatcher.INSTANCE;
367
		}
368
	} // end of ElementSelectors
369
}
370
<%importManager.emitSortedImports();%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/providers/NodeViewFactoryGenerator.java (+153 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.providers;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
import java.util.*;
6
7
public class NodeViewFactoryGenerator
8
{
9
  protected static String nl;
10
  public static synchronized NodeViewFactoryGenerator create(String lineSeparator)
11
  {
12
    nl = lineSeparator;
13
    NodeViewFactoryGenerator result = new NodeViewFactoryGenerator();
14
    nl = null;
15
    return result;
16
  }
17
18
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
19
  protected final String TEXT_1 = "";
20
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
21
  protected final String TEXT_3 = NL + " */";
22
  protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
23
  protected final String TEXT_5 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static void decorateView(";
24
  protected final String TEXT_6 = " view) {";
25
  protected final String TEXT_7 = NL;
26
  protected final String TEXT_8 = " annotation = ";
27
  protected final String TEXT_9 = ".eINSTANCE.createEAnnotation();" + NL + "annotation.setSource(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "view.getEAnnotations().add(annotation);" + NL + "annotation.getDetails().put(\"modelID\", \"";
28
  protected final String TEXT_10 = "\"); //$NON-NLS-1$" + NL + "annotation.getDetails().put(\"visualID\", \"";
29
  protected final String TEXT_11 = "\"); //$NON-NLS-1$" + NL + "\t\t";
30
  protected final String TEXT_12 = " style = ";
31
  protected final String TEXT_13 = ".eINSTANCE.createShapeStyle();" + NL + "\t\tview.getStyles().add(style);" + NL + "\t\t//XXX: init styles from attributes!!!";
32
  protected final String TEXT_14 = NL + "\t\tcreate";
33
  protected final String TEXT_15 = "Label(view);";
34
  protected final String TEXT_16 = NL + "\t\tcreate";
35
  protected final String TEXT_17 = "Compartment(view);";
36
  protected final String TEXT_18 = NL + "\t}" + NL;
37
  protected final String TEXT_19 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static void create";
38
  protected final String TEXT_20 = "Label(";
39
  protected final String TEXT_21 = " view) {" + NL + "\t\t";
40
  protected final String TEXT_22 = " label = ";
41
  protected final String TEXT_23 = ".eINSTANCE.createNode();" + NL + "\t\tview.getPersistedChildren().add(label);" + NL + "\t\tlabel.setElement(null);" + NL + "\t\t";
42
  protected final String TEXT_24 = ".decorateView(label);" + NL + "\t}";
43
  protected final String TEXT_25 = NL;
44
  protected final String TEXT_26 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static void create";
45
  protected final String TEXT_27 = "Compartment(";
46
  protected final String TEXT_28 = " view) {" + NL + "\t\t";
47
  protected final String TEXT_29 = " compartment = ";
48
  protected final String TEXT_30 = ".eINSTANCE.createNode();" + NL + "\t\tview.getPersistedChildren().add(compartment);" + NL + "\t\tcompartment.setElement(null);" + NL + "\t\t";
49
  protected final String TEXT_31 = ".decorateView(compartment);" + NL + "\t}";
50
  protected final String TEXT_32 = NL + "}";
51
52
  public String generate(Object argument)
53
  {
54
    final StringBuffer stringBuffer = new StringBuffer();
55
    
56
GenNode genElement = (GenNode) ((Object[]) argument)[0];
57
GenDiagram genDiagram = genElement.getDiagram();
58
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
59
60
    stringBuffer.append(TEXT_1);
61
    
62
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
63
if (copyrightText != null && copyrightText.trim().length() > 0) {
64
65
    stringBuffer.append(TEXT_2);
66
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
67
    stringBuffer.append(TEXT_3);
68
    }
69
    importManager.emitPackageStatement(stringBuffer);
70
71
importManager.markImportLocation(stringBuffer);
72
73
    stringBuffer.append(TEXT_4);
74
    stringBuffer.append(genElement.getNotationViewFactoryClassName());
75
    stringBuffer.append(TEXT_5);
76
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
77
    stringBuffer.append(TEXT_6);
78
    stringBuffer.append(TEXT_7);
79
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
80
    stringBuffer.append(TEXT_8);
81
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory"));
82
    stringBuffer.append(TEXT_9);
83
    stringBuffer.append(genDiagram.getEditorGen().getModelID());
84
    stringBuffer.append(TEXT_10);
85
    stringBuffer.append(genElement.getVisualID());
86
    stringBuffer.append(TEXT_11);
87
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.ShapeStyle"));
88
    stringBuffer.append(TEXT_12);
89
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
90
    stringBuffer.append(TEXT_13);
91
    
92
for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) {
93
	GenNodeLabel label = (GenNodeLabel) it.next();
94
95
    stringBuffer.append(TEXT_14);
96
    stringBuffer.append(label.getVisualID());
97
    stringBuffer.append(TEXT_15);
98
    
99
}/*iterate over labels*/
100
101
    
102
for (Iterator it = genElement.getCompartments().iterator(); it.hasNext(); ) {
103
	GenCompartment compartment = (GenCompartment) it.next();
104
105
    stringBuffer.append(TEXT_16);
106
    stringBuffer.append(compartment.getVisualID());
107
    stringBuffer.append(TEXT_17);
108
    
109
}/*iterate over compartments*/
110
111
    stringBuffer.append(TEXT_18);
112
    
113
for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) {
114
	GenNodeLabel label = (GenNodeLabel) it.next();
115
116
    stringBuffer.append(TEXT_19);
117
    stringBuffer.append(label.getVisualID());
118
    stringBuffer.append(TEXT_20);
119
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
120
    stringBuffer.append(TEXT_21);
121
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
122
    stringBuffer.append(TEXT_22);
123
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
124
    stringBuffer.append(TEXT_23);
125
    stringBuffer.append(importManager.getImportedName(label.getNotationViewFactoryQualifiedClassName()));
126
    stringBuffer.append(TEXT_24);
127
    
128
}/*iterate over labels*/
129
130
    stringBuffer.append(TEXT_25);
131
    
132
for (Iterator it = genElement.getCompartments().iterator(); it.hasNext(); ) {
133
	GenCompartment compartment = (GenCompartment) it.next();
134
135
    stringBuffer.append(TEXT_26);
136
    stringBuffer.append(compartment.getVisualID());
137
    stringBuffer.append(TEXT_27);
138
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
139
    stringBuffer.append(TEXT_28);
140
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
141
    stringBuffer.append(TEXT_29);
142
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
143
    stringBuffer.append(TEXT_30);
144
    stringBuffer.append(importManager.getImportedName(compartment.getNotationViewFactoryQualifiedClassName()));
145
    stringBuffer.append(TEXT_31);
146
    
147
}/*iterate over compartments*/
148
149
    stringBuffer.append(TEXT_32);
150
    importManager.emitSortedImports();
151
    return stringBuffer.toString();
152
  }
153
}
(-)templates/parts/EditPartFactory.javajet (+90 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="EditPartFactoryGenerator" 
2
	imports="java.util.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
5
final String modelID = genDiagram.getEditorGen().getModelID();
6
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
%>
8
<%@ include file="../copyright4java.jetinc"%>
9
<%importManager.emitPackageStatement(stringBuffer);%>
10
11
<%
12
importManager.addImport("org.eclipse.gef.EditPart");
13
importManager.addImport("org.eclipse.gef.EditPartFactory");
14
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
15
importManager.markImportLocation(stringBuffer);%>
16
17
/**
18
 * @generated
19
 */
20
public class <%=genDiagram.getEditPartFactoryClassName()%> implements EditPartFactory {
21
22
	/**
23
	 * @generated
24
	 */
25
	public static final String EXTERNAL_NODE_LABELS_LAYER = "External Node Labels";
26
27
<%@ include file="../editor/getModelID.jetinc" %>
28
29
<%@ include file="../editor/getVisualID.jetinc" %>
30
31
	/**
32
	 * @generated
33
	 */
34
	public EditPart createEditPart(EditPart context, Object model) {
35
		if (model instanceof View) {
36
			View view = (View) model;
37
			if (!"<%=modelID%>".equals(getModelID(view))) {
38
				return null;
39
			}
40
			
41
			int viewVisualID = getVisualID(view);
42
			switch (viewVisualID) {
43
<%
44
for (Iterator containers = genDiagram.getAllContainers().iterator(); containers.hasNext();) {
45
	GenContainerBase container = (GenContainerBase) containers.next();
46
%>
47
			case <%=container.getVisualID()%>:
48
				 return new <%=container.getEditPartClassName()%>(<%if(container instanceof GenDiagram) {%>(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%>)<%}%>view);
49
<%
50
	if (container instanceof GenNode && !((GenNode) container).isListContainerEntry()) {
51
		GenNode node = (GenNode) container;
52
		for (Iterator labels = node.getLabels().iterator(); labels.hasNext();) {
53
			GenNodeLabel label = (GenNodeLabel) labels.next();
54
%>
55
			case <%=label.getVisualID()%>:
56
				return new <%=label.getEditPartClassName()%>(view);
57
<%
58
		}
59
	}
60
}
61
for (Iterator links = genDiagram.getLinks().iterator(); links.hasNext();) {
62
	GenLink link = (GenLink) links.next();
63
%>		
64
			case <%=link.getVisualID()%>:
65
				return new <%=link.getEditPartClassName()%>(view);
66
<%
67
	for (Iterator linkLabels = link.getLabels().iterator(); linkLabels.hasNext();) {
68
		GenLinkLabel linkLabel = (GenLinkLabel) linkLabels.next();
69
%>
70
			case <%=linkLabel.getVisualID()%>:
71
					return new <%=linkLabel.getEditPartClassName()%>(view);
72
<%
73
	}
74
}
75
%>
76
			}
77
		}
78
		return createUnrecognizedEditPart(context, model);
79
	}
80
	
81
	/**
82
	 * @generated
83
	 */
84
	 private EditPart createUnrecognizedEditPart(EditPart context, Object model) {
85
	 	// Handle creation of unrecognized child node EditParts here
86
	 	return null;
87
	 }
88
89
}
90
<%importManager.emitSortedImports();%>
(-)templates/providers/PropertySourceProvider.javajet (+66 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers"  class="PropertySourceProviderGenerator"
2
    imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
5
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
6
%>
7
<%@ include file="../copyright4java.jetinc"%>
8
<%
9
importManager.emitPackageStatement(stringBuffer);
10
importManager.markImportLocation(stringBuffer);
11
%>
12
13
/**
14
 * @generated
15
 */
16
public class <%=genDiagram.getPropertyProviderClassName()%> implements <%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySourceProvider")%> {
17
	/**
18
	 * @generated
19
	 */
20
	private <%=importManager.getImportedName("org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider")%> adapterFactoryContentProvider;
21
22
	/**
23
	 * @generated
24
	 */
25
	public <%=genDiagram.getPropertyProviderClassName()%>(<%=importManager.getImportedName("org.eclipse.emf.common.notify.AdapterFactory")%> domainAdapterFactory) {
26
		adapterFactoryContentProvider = new <%=importManager.getImportedName("org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider")%>(domainAdapterFactory);
27
	}
28
29
	/**
30
	 * @generated
31
	 */
32
	public <%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource")%> getPropertySource(Object object) {
33
		if (object instanceof <%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource")%>) {
34
			return (<%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource")%>) object;
35
		}
36
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view = getNotationElement(object);
37
		if (view == null) {
38
			return adapterFactoryContentProvider.getPropertySource(object);
39
		}
40
		//XXX: compose with view properties
41
		<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> domainElement = view.getElement();
42
		return adapterFactoryContentProvider.getPropertySource(domainElement);
43
	}
44
45
	/**
46
	 * @generated
47
	 */
48
	protected <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> getNotationElement(Object object) {
49
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view = null;
50
		if (object instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) {
51
			view = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) object;
52
		} else if (object instanceof <%=importManager.getImportedName("org.eclipse.gef.EditPart")%>) {
53
			<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> editPart = (<%=importManager.getImportedName("org.eclipse.gef.EditPart")%>) object;
54
			if (editPart.getModel() instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) {
55
				view = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) editPart.getModel();
56
			}
57
		}
58
		if (view != null && "<%=genDiagram.getEditorGen().getModelID()%>".equals(getModelID(view))) {
59
			return view;
60
		}
61
		return null;
62
	}
63
64
<%@ include file="../editor/getModelID.jetinc" %>
65
}
66
<%importManager.emitSortedImports();%>
(-)templates/providers/LinkViewFactory.javajet (+51 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers"  class="LinkViewFactoryGenerator"
2
	imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* java.util.*"%>
3
<%
4
GenLink genElement = (GenLink) ((Object[]) argument)[0];
5
GenDiagram genDiagram = genElement.getDiagram();
6
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
%>
8
<%@ include file="../copyright4java.jetinc"%>
9
<%importManager.emitPackageStatement(stringBuffer);
10
11
importManager.markImportLocation(stringBuffer);
12
%>
13
14
/**
15
 * @generated
16
 */
17
public class <%=genElement.getNotationViewFactoryClassName()%> {
18
	/**
19
	 * @generated
20
	 */
21
	public static void decorateView(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) {
22
<%@ include file="createVIDAnnotation.jetinc"%>
23
		//XXX: init styles from attributes!!!
24
<%
25
for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) {
26
	GenLinkLabel label = (GenLinkLabel) it.next();
27
%>
28
		create<%=label.getVisualID()%>Label(view);
29
<%
30
}/*iterate over labels*/
31
%>
32
	}
33
34
<%
35
for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) {
36
	GenLinkLabel label = (GenLinkLabel) it.next();
37
%>
38
	/**
39
	 * @generated
40
	 */
41
	private static void create<%=label.getVisualID()%>Label(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) {
42
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> label = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createNode();
43
		view.getPersistedChildren().add(label);
44
		label.setElement(null);
45
		<%=importManager.getImportedName(label.getNotationViewFactoryQualifiedClassName())%>.decorateView(label);
46
	}
47
<%
48
}/*iterate over labels*/
49
%>
50
}
51
<%importManager.emitSortedImports();%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/parts/EditPartFactoryGenerator.java (+152 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.parts;
2
3
import java.util.*;
4
import org.eclipse.gmf.codegen.gmfgen.*;
5
import org.eclipse.gmf.common.codegen.*;
6
7
public class EditPartFactoryGenerator
8
{
9
  protected static String nl;
10
  public static synchronized EditPartFactoryGenerator create(String lineSeparator)
11
  {
12
    nl = lineSeparator;
13
    EditPartFactoryGenerator result = new EditPartFactoryGenerator();
14
    nl = null;
15
    return result;
16
  }
17
18
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
19
  protected final String TEXT_1 = "";
20
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
21
  protected final String TEXT_3 = NL + " */";
22
  protected final String TEXT_4 = NL;
23
  protected final String TEXT_5 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
24
  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;
25
  protected final String TEXT_7 = NL;
26
  protected final String TEXT_8 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate String getModelID(";
27
  protected final String TEXT_9 = " containerView) {" + NL + "\t\t";
28
  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;
29
  protected final String TEXT_11 = NL;
30
  protected final String TEXT_12 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static int getVisualID(";
31
  protected final String TEXT_13 = " containerView) {" + NL + "\t\t";
32
  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";
33
  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 (!\"";
34
  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) {";
35
  protected final String TEXT_17 = NL + "\t\t\tcase ";
36
  protected final String TEXT_18 = ":" + NL + "\t\t\t\t return new ";
37
  protected final String TEXT_19 = "(";
38
  protected final String TEXT_20 = "(";
39
  protected final String TEXT_21 = ")";
40
  protected final String TEXT_22 = "view);";
41
  protected final String TEXT_23 = NL + "\t\t\tcase ";
42
  protected final String TEXT_24 = ":" + NL + "\t\t\t\treturn new ";
43
  protected final String TEXT_25 = "(view);";
44
  protected final String TEXT_26 = "\t\t" + NL + "\t\t\tcase ";
45
  protected final String TEXT_27 = ":" + NL + "\t\t\t\treturn new ";
46
  protected final String TEXT_28 = "(view);";
47
  protected final String TEXT_29 = NL + "\t\t\tcase ";
48
  protected final String TEXT_30 = ":" + NL + "\t\t\t\t\treturn new ";
49
  protected final String TEXT_31 = "(view);";
50
  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 + "}";
51
  protected final String TEXT_33 = NL;
52
53
  public String generate(Object argument)
54
  {
55
    final StringBuffer stringBuffer = new StringBuffer();
56
    
57
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
58
final String modelID = genDiagram.getEditorGen().getModelID();
59
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
60
61
    stringBuffer.append(TEXT_1);
62
    
63
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
64
if (copyrightText != null && copyrightText.trim().length() > 0) {
65
66
    stringBuffer.append(TEXT_2);
67
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
68
    stringBuffer.append(TEXT_3);
69
    }
70
    importManager.emitPackageStatement(stringBuffer);
71
    stringBuffer.append(TEXT_4);
72
    
73
importManager.addImport("org.eclipse.gef.EditPart");
74
importManager.addImport("org.eclipse.gef.EditPartFactory");
75
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
76
importManager.markImportLocation(stringBuffer);
77
    stringBuffer.append(TEXT_5);
78
    stringBuffer.append(genDiagram.getEditPartFactoryClassName());
79
    stringBuffer.append(TEXT_6);
80
    stringBuffer.append(TEXT_7);
81
    stringBuffer.append(TEXT_8);
82
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
83
    stringBuffer.append(TEXT_9);
84
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
85
    stringBuffer.append(TEXT_10);
86
    stringBuffer.append(TEXT_11);
87
    stringBuffer.append(TEXT_12);
88
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
89
    stringBuffer.append(TEXT_13);
90
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
91
    stringBuffer.append(TEXT_14);
92
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()));
93
    stringBuffer.append(TEXT_15);
94
    stringBuffer.append(modelID);
95
    stringBuffer.append(TEXT_16);
96
    
97
for (Iterator containers = genDiagram.getAllContainers().iterator(); containers.hasNext();) {
98
	GenContainerBase container = (GenContainerBase) containers.next();
99
100
    stringBuffer.append(TEXT_17);
101
    stringBuffer.append(container.getVisualID());
102
    stringBuffer.append(TEXT_18);
103
    stringBuffer.append(container.getEditPartClassName());
104
    stringBuffer.append(TEXT_19);
105
    if(container instanceof GenDiagram) {
106
    stringBuffer.append(TEXT_20);
107
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram"));
108
    stringBuffer.append(TEXT_21);
109
    }
110
    stringBuffer.append(TEXT_22);
111
    
112
	if (container instanceof GenNode && !((GenNode) container).isListContainerEntry()) {
113
		GenNode node = (GenNode) container;
114
		for (Iterator labels = node.getLabels().iterator(); labels.hasNext();) {
115
			GenNodeLabel label = (GenNodeLabel) labels.next();
116
117
    stringBuffer.append(TEXT_23);
118
    stringBuffer.append(label.getVisualID());
119
    stringBuffer.append(TEXT_24);
120
    stringBuffer.append(label.getEditPartClassName());
121
    stringBuffer.append(TEXT_25);
122
    
123
		}
124
	}
125
}
126
for (Iterator links = genDiagram.getLinks().iterator(); links.hasNext();) {
127
	GenLink link = (GenLink) links.next();
128
129
    stringBuffer.append(TEXT_26);
130
    stringBuffer.append(link.getVisualID());
131
    stringBuffer.append(TEXT_27);
132
    stringBuffer.append(link.getEditPartClassName());
133
    stringBuffer.append(TEXT_28);
134
    
135
	for (Iterator linkLabels = link.getLabels().iterator(); linkLabels.hasNext();) {
136
		GenLinkLabel linkLabel = (GenLinkLabel) linkLabels.next();
137
138
    stringBuffer.append(TEXT_29);
139
    stringBuffer.append(linkLabel.getVisualID());
140
    stringBuffer.append(TEXT_30);
141
    stringBuffer.append(linkLabel.getEditPartClassName());
142
    stringBuffer.append(TEXT_31);
143
    
144
	}
145
}
146
147
    stringBuffer.append(TEXT_32);
148
    importManager.emitSortedImports();
149
    stringBuffer.append(TEXT_33);
150
    return stringBuffer.toString();
151
  }
152
}
(-)templates/providers/AbstractParser.javajet (+179 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers" class="AbstractParserGenerator"
2
  imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];%>
4
<%ImportAssistant importManager = (ImportAssistant) ((Object[])argument)[1];%>
5
<%@ include file="../copyright4java.jetinc"%>
6
7
<%
8
importManager.emitPackageStatement(stringBuffer);
9
importManager.markImportLocation(stringBuffer);
10
%>
11
12
/**
13
 * @generated
14
 */
15
public abstract class <%=genDiagram.getAbstractParserClassName()%> {
16
	/**
17
	 * @generated
18
	 */
19
	public static Object parseValue(<%=importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")%> feature, Object value) throws IllegalArgumentException {
20
		if (value == null) {
21
			throw new IllegalArgumentException();
22
		}
23
		<%=importManager.getImportedName("org.eclipse.emf.ecore.EDataType")%> type = feature.getEAttributeType();
24
		Class iClass = type.getInstanceClass();
25
		if (Boolean.TYPE.equals(iClass) || Boolean.class.equals(iClass)) {
26
			if (value instanceof Boolean) {
27
				// ok
28
			} else if (value instanceof String) {
29
				value = Boolean.valueOf((String) value);
30
			} else {
31
				throw new IllegalArgumentException("Value of type Boolean is expected");
32
			}
33
		} else if (Character.TYPE.equals(iClass) || Character.class.equals(iClass)) {
34
			if (value instanceof Character) {
35
				// ok
36
			} else if (value instanceof String) {
37
				String s = (String) value;
38
				if (s.length() == 0) {
39
					throw new IllegalArgumentException();	//XXX: ?
40
				} else {
41
					value = new Character(s.charAt(0));
42
				}
43
			} else {
44
				throw new IllegalArgumentException("Value of type Character is expected");
45
			}
46
		} else if (Byte.TYPE.equals(iClass) || Byte.class.equals(iClass)) {
47
			if (value instanceof Byte) {
48
				// ok
49
			} else if (value instanceof Number) {
50
				value = new Byte(((Number) value).byteValue());
51
			} else if (value instanceof String) {
52
				String s = (String) value;
53
				if (s.length() == 0) {
54
					value = null;
55
				} else {
56
					try {
57
						value = Byte.valueOf(s);
58
					} catch (NumberFormatException nfe) {
59
						throw new IllegalArgumentException("String value does not convert to Byte value");
60
					}
61
				}
62
			} else {
63
				throw new IllegalArgumentException("Value of type Byte is expected");
64
			}
65
		} else if (Short.TYPE.equals(iClass) || Short.class.equals(iClass)) {
66
			if (value instanceof Short) {
67
				// ok
68
			} else if (value instanceof Number) {
69
				value = new Short(((Number) value).shortValue());
70
			} else if (value instanceof String) {
71
				String s = (String) value;
72
				if (s.length() == 0) {
73
					value = null;
74
				} else {
75
					try {
76
						value = Short.valueOf(s);
77
					} catch (NumberFormatException nfe) {
78
						throw new IllegalArgumentException("String value does not convert to Short value");
79
					}
80
				}
81
			} else {
82
				throw new IllegalArgumentException("Value of type Short is expected");
83
			}
84
		} else if (Integer.TYPE.equals(iClass) || Integer.class.equals(iClass)) {
85
			if (value instanceof Integer) {
86
				// ok
87
			} else if (value instanceof Number) {
88
				value = new Integer(((Number) value).intValue());
89
			} else if (value instanceof String) {
90
				String s = (String) value;
91
				if (s.length() == 0) {
92
					value = null;
93
				} else {
94
					try {
95
						value = Integer.valueOf(s);
96
					} catch (NumberFormatException nfe) {
97
						throw new IllegalArgumentException("String value does not convert to Integer value");
98
					}
99
				}
100
			} else {
101
				throw new IllegalArgumentException("Value of type Integer is expected");
102
			}
103
		} else if (Long.TYPE.equals(iClass) || Long.class.equals(iClass)) {
104
			if (value instanceof Long) {
105
				// ok
106
			} else if (value instanceof Number) {
107
				value = new Long(((Number) value).longValue());
108
			} else if (value instanceof String) {
109
				String s = (String) value;
110
				if (s.length() == 0) {
111
					value = null;
112
				} else {
113
					try {
114
						value = Long.valueOf(s);
115
					} catch (NumberFormatException nfe) {
116
						throw new IllegalArgumentException("String value does not convert to Long value");
117
					}
118
				}
119
			} else {
120
				throw new IllegalArgumentException("Value of type Long is expected");
121
			}
122
		} else if (Float.TYPE.equals(iClass) || Float.class.equals(iClass)) {
123
			if (value instanceof Float) {
124
				// ok
125
			} else if (value instanceof Number) {
126
				value = new Float(((Number) value).floatValue());
127
			} else if (value instanceof String) {
128
				String s = (String) value;
129
				if (s.length() == 0) {
130
					value = null;
131
				} else {
132
					try {
133
						value = Float.valueOf(s);
134
					} catch (NumberFormatException nfe) {
135
						throw new IllegalArgumentException("String value does not convert to Float value");
136
					}
137
				}
138
			} else {
139
				throw new IllegalArgumentException("Value of type Float is expected");
140
			}
141
		} else if (Double.TYPE.equals(iClass) || Double.class.equals(iClass)) {
142
			if (value instanceof Double) {
143
				// ok
144
			} else if (value instanceof Number) {
145
				value = new Double(((Number) value).doubleValue());
146
			} else if (value instanceof String) {
147
				String s = (String) value;
148
				if (s.length() == 0) {
149
					value = null;
150
				} else {
151
					try {
152
						value = Double.valueOf(s);
153
					} catch (NumberFormatException nfe) {
154
						throw new IllegalArgumentException("String value does not convert to Double value");
155
					}
156
				}
157
			} else {
158
				throw new IllegalArgumentException("Value of type Double is expected");
159
			}
160
		} else if (String.class.equals(iClass)) {
161
			value = String.valueOf(value);
162
		} else if (type instanceof <%=importManager.getImportedName("org.eclipse.emf.ecore.EEnum")%>) {
163
			if (value instanceof String) {
164
				<%=importManager.getImportedName("org.eclipse.emf.ecore.EEnumLiteral")%> literal = ((<%=importManager.getImportedName("org.eclipse.emf.ecore.EEnum")%>) type).getEEnumLiteralByLiteral((String) value);
165
				if (literal == null) {
166
					throw new IllegalArgumentException("Unknown literal: " + value);
167
				} else {
168
					value = literal.getInstance();
169
				}
170
			} else {
171
				throw new IllegalArgumentException("Value of type String is expected");
172
			}
173
		} else {
174
			throw new IllegalArgumentException("Unsupported type");
175
		}
176
		return value;
177
	}
178
}
179
<%importManager.emitSortedImports();%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/PaletteFactoryGenerator.java (+305 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
import java.util.*;
4
import org.eclipse.gmf.codegen.gmfgen.*;
5
import org.eclipse.gmf.common.codegen.*;
6
import org.eclipse.emf.codegen.ecore.genmodel.*;
7
8
public class PaletteFactoryGenerator
9
{
10
  protected static String nl;
11
  public static synchronized PaletteFactoryGenerator create(String lineSeparator)
12
  {
13
    nl = lineSeparator;
14
    PaletteFactoryGenerator result = new PaletteFactoryGenerator();
15
    nl = null;
16
    return result;
17
  }
18
19
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
20
  protected final String TEXT_1 = NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
21
  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 ";
22
  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());";
23
  protected final String TEXT_4 = NL + "\t\tpaletteRoot.add(";
24
  protected final String TEXT_5 = "());";
25
  protected final String TEXT_6 = NL + "\t}" + NL;
26
  protected final String TEXT_7 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate PaletteContainer ";
27
  protected final String TEXT_8 = "() {" + NL + "\t\tPaletteContainer paletteContainer = createContainer(\"";
28
  protected final String TEXT_9 = "\");";
29
  protected final String TEXT_10 = NL + "\t\tpaletteContainer.add(";
30
  protected final String TEXT_11 = "());";
31
  protected final String TEXT_12 = NL + "\t\tpaletteContainer.add(new ";
32
  protected final String TEXT_13 = "());";
33
  protected final String TEXT_14 = NL + "\t\tpaletteContainer.add(";
34
  protected final String TEXT_15 = "());";
35
  protected final String TEXT_16 = NL + "\t\treturn paletteContainer;" + NL + "\t}";
36
  protected final String TEXT_17 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ToolEntry ";
37
  protected final String TEXT_18 = "() {" + NL + "\t\t";
38
  protected final String TEXT_19 = NL + "\t\tImageDescriptor smallImage = ImageDescriptor.createFromFile(";
39
  protected final String TEXT_20 = ".class, \"";
40
  protected final String TEXT_21 = "\");" + NL + "\t\t";
41
  protected final String TEXT_22 = NL + "\t\tImageDescriptor smallImage = getImage(";
42
  protected final String TEXT_23 = ");" + NL + "\t\t";
43
  protected final String TEXT_24 = NL + "\t\t";
44
  protected final String TEXT_25 = NL + "\t\tImageDescriptor largeImage = ImageDescriptor.createFromFile(";
45
  protected final String TEXT_26 = ".class, \"";
46
  protected final String TEXT_27 = "\");" + NL + "\t\t";
47
  protected final String TEXT_28 = NL + "\t\tImageDescriptor largeImage = smallImage;" + NL + "\t\t";
48
  protected final String TEXT_29 = NL + "\t\tfinal int[] visualIds = new int[] {";
49
  protected final String TEXT_30 = NL + "\t\t\t";
50
  protected final String TEXT_31 = ",";
51
  protected final String TEXT_32 = "\t\t" + NL + "\t\t};" + NL + "\t\treturn new ";
52
  protected final String TEXT_33 = "(\"";
53
  protected final String TEXT_34 = "\", " + NL + "\t\t\t\"";
54
  protected final String TEXT_35 = "\", new ModelCreationFactory(";
55
  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 ";
56
  protected final String TEXT_37 = " createdEditPart = (";
57
  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 ";
58
  protected final String TEXT_39 = "(";
59
  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}";
60
  protected final String TEXT_41 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ToolEntry ";
61
  protected final String TEXT_42 = "() {" + NL + "\t\t";
62
  protected final String TEXT_43 = NL + "\t\tImageDescriptor smallImage = ImageDescriptor.createFromFile(";
63
  protected final String TEXT_44 = ".class, \"";
64
  protected final String TEXT_45 = "\");" + NL + "\t\t";
65
  protected final String TEXT_46 = NL + "\t\tImageDescriptor smallImage = getImage(";
66
  protected final String TEXT_47 = ");" + NL + "\t\t";
67
  protected final String TEXT_48 = NL + "\t\t";
68
  protected final String TEXT_49 = NL + "\t\tImageDescriptor largeImage = ImageDescriptor.createFromFile(";
69
  protected final String TEXT_50 = ".class, \"";
70
  protected final String TEXT_51 = "\");" + NL + "\t\t";
71
  protected final String TEXT_52 = NL + "\t\tImageDescriptor largeImage = smallImage;" + NL + "\t\t";
72
  protected final String TEXT_53 = NL + "\t\tfinal int[] visualIds = new int[] {";
73
  protected final String TEXT_54 = NL + "\t\t\t";
74
  protected final String TEXT_55 = ",";
75
  protected final String TEXT_56 = "\t\t" + NL + "\t\t};" + NL + "\t\treturn new ConnectionCreationToolEntry(\"";
76
  protected final String TEXT_57 = "\", \"";
77
  protected final String TEXT_58 = "\", " + NL + "\t\t\tnew ModelCreationFactory(";
78
  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}";
79
  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 ";
80
  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 ";
81
  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 + "}";
82
83
  public String generate(Object argument)
84
  {
85
    final StringBuffer stringBuffer = new StringBuffer();
86
    
87
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0]; 
88
final Palette palette = genDiagram.getPalette();
89
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
90
91
importManager.emitPackageStatement(stringBuffer);
92
93
importManager.addImport("org.eclipse.gef.Tool");
94
importManager.addImport("org.eclipse.gef.Request");
95
importManager.addImport("org.eclipse.gef.requests.CreationFactory");
96
importManager.addImport("org.eclipse.gef.tools.CreationTool");
97
importManager.addImport("org.eclipse.gef.tools.ConnectionCreationTool");
98
importManager.addImport("org.eclipse.gef.palette.PaletteContainer");
99
importManager.addImport("org.eclipse.gef.palette.PaletteDrawer");
100
importManager.addImport("org.eclipse.gef.palette.PaletteGroup");
101
importManager.addImport("org.eclipse.gef.palette.PaletteRoot");
102
importManager.addImport("org.eclipse.gef.palette.ConnectionCreationToolEntry");
103
importManager.addImport("org.eclipse.gef.palette.MarqueeToolEntry");
104
importManager.addImport("org.eclipse.gef.palette.SelectionToolEntry");
105
importManager.addImport("org.eclipse.gef.palette.ToolEntry");
106
importManager.addImport("org.eclipse.jface.resource.ImageDescriptor");
107
importManager.addImport("org.eclipse.emf.edit.provider.IItemLabelProvider");
108
importManager.addImport("org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry");
109
importManager.addImport("org.eclipse.emf.common.notify.AdapterFactory");
110
111
importManager.markImportLocation(stringBuffer);
112
113
    stringBuffer.append(TEXT_1);
114
    stringBuffer.append(palette.getFactoryClassName());
115
    stringBuffer.append(TEXT_2);
116
    stringBuffer.append(palette.getFactoryClassName());
117
    stringBuffer.append(TEXT_3);
118
    
119
List toolGroups = palette.getGroups();
120
for (int i = 0; i < toolGroups.size(); i++) {
121
	ToolGroup toolGroup = (ToolGroup) toolGroups.get(i);
122
123
    stringBuffer.append(TEXT_4);
124
    stringBuffer.append(toolGroup.getCreateMethodName());
125
    stringBuffer.append(TEXT_5);
126
    }
127
    stringBuffer.append(TEXT_6);
128
    
129
for (int i = 0; i < toolGroups.size(); i++) {
130
	ToolGroup toolGroup = (ToolGroup) toolGroups.get(i);
131
132
    stringBuffer.append(TEXT_7);
133
    stringBuffer.append(toolGroup.getCreateMethodName());
134
    stringBuffer.append(TEXT_8);
135
    stringBuffer.append(toolGroup.getTitleKey());
136
    stringBuffer.append(TEXT_9);
137
    
138
	List nodeCreationTools = toolGroup.getNodeTools();
139
	for (int j = 0; j < nodeCreationTools.size(); j++) {
140
		NodeEntry nodeCreationTool = (NodeEntry) nodeCreationTools.get(j);
141
142
    stringBuffer.append(TEXT_10);
143
    stringBuffer.append(nodeCreationTool.getCreateMethodName());
144
    stringBuffer.append(TEXT_11);
145
    	}
146
	List linkCreationTools = toolGroup.getLinkTools();
147
	for (int j = 0; j < linkCreationTools.size(); j++) {
148
		LinkEntry linkCreationTool = (LinkEntry) linkCreationTools.get(j);
149
		if (j == 0) {
150
151
    stringBuffer.append(TEXT_12);
152
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.palette.PaletteSeparator"));
153
    stringBuffer.append(TEXT_13);
154
    		}
155
    stringBuffer.append(TEXT_14);
156
    stringBuffer.append(linkCreationTool.getCreateMethodName());
157
    stringBuffer.append(TEXT_15);
158
    	}
159
    stringBuffer.append(TEXT_16);
160
    
161
}
162
for (int i = 0; i < toolGroups.size(); i++) {
163
	ToolGroup toolGroup = (ToolGroup) toolGroups.get(i);
164
	List nodeCreationTools = toolGroup.getNodeTools();
165
	for (int j = 0; j < nodeCreationTools.size(); j++) {
166
		NodeEntry nodeCreationTool = (NodeEntry) nodeCreationTools.get(j);
167
		List genNodes = nodeCreationTool.getGenNode();
168
		GenNode firstGenNode = (GenNode) genNodes.get(0);
169
		GenClass genClass = firstGenNode.getDomainMetaClass();
170
		final String domainElementInstanceCreationCode;
171
		if (!genClass.isMapEntry()) {
172
			domainElementInstanceCreationCode = importManager.getImportedName(genClass.getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create" + genClass.getName() + "()";
173
		} else {
174
			domainElementInstanceCreationCode = importManager.getImportedName(genClass.getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create(" + 
175
				importManager.getImportedName(genClass.getGenPackage().getQualifiedPackageInterfaceName()) + ".eINSTANCE.get" + genClass.getClassifierAccessorName() + "())";
176
		}
177
178
    stringBuffer.append(TEXT_17);
179
    stringBuffer.append(nodeCreationTool.getCreateMethodName());
180
    stringBuffer.append(TEXT_18);
181
    if (nodeCreationTool.getSmallIconPath() != null) {
182
    stringBuffer.append(TEXT_19);
183
    stringBuffer.append(palette.getFactoryClassName());
184
    stringBuffer.append(TEXT_20);
185
    stringBuffer.append(nodeCreationTool.getSmallIconPath());
186
    stringBuffer.append(TEXT_21);
187
    } else {
188
    stringBuffer.append(TEXT_22);
189
    stringBuffer.append(domainElementInstanceCreationCode);
190
    stringBuffer.append(TEXT_23);
191
    }
192
    stringBuffer.append(TEXT_24);
193
    if (nodeCreationTool.getLargeIconPath() != null) {
194
    stringBuffer.append(TEXT_25);
195
    stringBuffer.append(palette.getFactoryClassName());
196
    stringBuffer.append(TEXT_26);
197
    stringBuffer.append(nodeCreationTool.getLargeIconPath());
198
    stringBuffer.append(TEXT_27);
199
    } else {
200
    stringBuffer.append(TEXT_28);
201
    }
202
    stringBuffer.append(TEXT_29);
203
    
204
		for (Iterator genNodesIterator = genNodes.iterator(); genNodesIterator.hasNext();) {
205
			GenNode nextNode = (GenNode) genNodesIterator.next();
206
207
    stringBuffer.append(TEXT_30);
208
    stringBuffer.append(nextNode.getVisualID());
209
    if (genNodesIterator.hasNext()) {
210
    stringBuffer.append(TEXT_31);
211
    }
212
    
213
		}
214
215
    stringBuffer.append(TEXT_32);
216
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.palette.CombinedTemplateCreationEntry"));
217
    stringBuffer.append(TEXT_33);
218
    stringBuffer.append(nodeCreationTool.getTitleKey());
219
    stringBuffer.append(TEXT_34);
220
    stringBuffer.append(nodeCreationTool.getDescriptionKey());
221
    stringBuffer.append(TEXT_35);
222
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
223
    stringBuffer.append(TEXT_36);
224
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
225
    stringBuffer.append(TEXT_37);
226
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
227
    stringBuffer.append(TEXT_38);
228
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request"));
229
    stringBuffer.append(TEXT_39);
230
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants"));
231
    stringBuffer.append(TEXT_40);
232
    
233
	}
234
	List linkCreationTools = toolGroup.getLinkTools();
235
	for (int j = 0; j < linkCreationTools.size(); j++) {
236
		LinkEntry linkCreationTool = (LinkEntry) linkCreationTools.get(j);
237
		List genLinks = linkCreationTool.getGenLink();
238
		GenLink firstGenLink = (GenLink) genLinks.get(0);
239
		LinkModelFacet linkModelFacet = firstGenLink.getModelFacet();
240
		final String domainElementInstanceCreationCode;
241
		if (linkModelFacet instanceof TypeLinkModelFacet) {
242
			TypeLinkModelFacet typeLinkModelFacet = (TypeLinkModelFacet) linkModelFacet;
243
			GenClass genClass = typeLinkModelFacet.getMetaClass();
244
			domainElementInstanceCreationCode = importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryInterfaceName()) + ".eINSTANCE.create" + genClass.getName() + "()";
245
		} else {
246
			domainElementInstanceCreationCode = "null";
247
		}
248
249
    stringBuffer.append(TEXT_41);
250
    stringBuffer.append(linkCreationTool.getCreateMethodName());
251
    stringBuffer.append(TEXT_42);
252
    if (linkCreationTool.getSmallIconPath() != null) {
253
    stringBuffer.append(TEXT_43);
254
    stringBuffer.append(palette.getFactoryClassName());
255
    stringBuffer.append(TEXT_44);
256
    stringBuffer.append(linkCreationTool.getSmallIconPath());
257
    stringBuffer.append(TEXT_45);
258
    } else {
259
    stringBuffer.append(TEXT_46);
260
    stringBuffer.append(domainElementInstanceCreationCode);
261
    stringBuffer.append(TEXT_47);
262
    }
263
    stringBuffer.append(TEXT_48);
264
    if (linkCreationTool.getLargeIconPath() != null) {
265
    stringBuffer.append(TEXT_49);
266
    stringBuffer.append(palette.getFactoryClassName());
267
    stringBuffer.append(TEXT_50);
268
    stringBuffer.append(linkCreationTool.getLargeIconPath());
269
    stringBuffer.append(TEXT_51);
270
    } else {
271
    stringBuffer.append(TEXT_52);
272
    }
273
    stringBuffer.append(TEXT_53);
274
    
275
		for (Iterator genLinksIterator = genLinks.iterator(); genLinksIterator.hasNext();) {
276
			GenLink nextLink = (GenLink) genLinksIterator.next();
277
278
    stringBuffer.append(TEXT_54);
279
    stringBuffer.append(nextLink.getVisualID());
280
    if (genLinksIterator.hasNext()) {
281
    stringBuffer.append(TEXT_55);
282
    }
283
    
284
		}
285
286
    stringBuffer.append(TEXT_56);
287
    stringBuffer.append(linkCreationTool.getTitleKey());
288
    stringBuffer.append(TEXT_57);
289
    stringBuffer.append(linkCreationTool.getDescriptionKey());
290
    stringBuffer.append(TEXT_58);
291
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge"));
292
    stringBuffer.append(TEXT_59);
293
    
294
	}
295
}
296
297
    stringBuffer.append(TEXT_60);
298
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.CreateRequest"));
299
    stringBuffer.append(TEXT_61);
300
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest"));
301
    stringBuffer.append(TEXT_62);
302
    importManager.emitSortedImports();
303
    return stringBuffer.toString();
304
  }
305
}
(-)templates/parts/adapters/propertySource.javajetinc (+14 lines)
Added Link Here
1
/*
2
		if (<%=importManager.getImportedName("org.eclipse.ui.views.properties.IPropertySource")%>.class == key) {
3
			<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> element = ((View)getModel()).getElement();
4
			if (element == null) {
5
				return null;
6
			}
7
			<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertySource")%> itemPropertySource = (<%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertySource")%>) 
8
				<%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().getItemProvidersAdapterFactory().adapt(element, <%=importManager.getImportedName("org.eclipse.emf.edit.provider.IItemPropertySource")%>.class);
9
			if (itemPropertySource == null) {
10
				return null;
11
			}
12
			return new <%=importManager.getImportedName("org.eclipse.emf.edit.ui.provider.PropertySource")%>(element, itemPropertySource);
13
		}
14
*/
(-)templates/parts/directEdit.javajetinc (+38 lines)
Added Link Here
1
	/**
2
	 * @generated
3
	 */
4
	public void performRequest(<%=importManager.getImportedName("org.eclipse.gef.Request")%> req) {
5
		if (<%=importManager.getImportedName("org.eclipse.gef.RequestConstants")%>.REQ_DIRECT_EDIT == req.getType()) {
6
			performDirectEdit();
7
		} else {
8
			super.performRequest(req);
9
		}
10
	}
11
12
	/**
13
	 * @generated
14
	 */
15
	protected <%=importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")%> getManager() {
16
		if (manager == null) {
17
			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")%>() {
18
				public void relocate(<%=importManager.getImportedName("org.eclipse.jface.viewers.CellEditor")%> celleditor) {
19
					<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%> rect = getLabel().getTextBounds();
20
					getLabel().translateToAbsolute(rect);
21
					celleditor.getControl().setBounds(rect.x, rect.y, rect.width, rect.height);
22
				}
23
			}) {
24
				protected void initCellEditor() {
25
					getCellEditor().setValue(getLabelEditText());
26
				}
27
			};
28
		}
29
		return manager;
30
	}
31
32
	/**
33
	 * @generated
34
	 */
35
	protected void performDirectEdit() {
36
		getManager().show();
37
	}
38
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/providers/LabelViewFactoryGenerator.java (+96 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.providers;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
6
public class LabelViewFactoryGenerator
7
{
8
  protected static String nl;
9
  public static synchronized LabelViewFactoryGenerator create(String lineSeparator)
10
  {
11
    nl = lineSeparator;
12
    LabelViewFactoryGenerator result = new LabelViewFactoryGenerator();
13
    nl = null;
14
    return result;
15
  }
16
17
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
18
  protected final String TEXT_1 = "";
19
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
20
  protected final String TEXT_3 = NL + " */";
21
  protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
22
  protected final String TEXT_5 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static void decorateView(";
23
  protected final String TEXT_6 = " view) {";
24
  protected final String TEXT_7 = NL;
25
  protected final String TEXT_8 = " annotation = ";
26
  protected final String TEXT_9 = ".eINSTANCE.createEAnnotation();" + NL + "annotation.setSource(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "view.getEAnnotations().add(annotation);" + NL + "annotation.getDetails().put(\"modelID\", \"";
27
  protected final String TEXT_10 = "\"); //$NON-NLS-1$" + NL + "annotation.getDetails().put(\"visualID\", \"";
28
  protected final String TEXT_11 = "\"); //$NON-NLS-1$";
29
  protected final String TEXT_12 = NL + "\t\tview.setType(\"";
30
  protected final String TEXT_13 = "SemanticHint\");";
31
  protected final String TEXT_14 = NL + "\t\t";
32
  protected final String TEXT_15 = " location = ";
33
  protected final String TEXT_16 = ".eINSTANCE.createLocation();" + NL + "\t\t((";
34
  protected final String TEXT_17 = ")view).setLayoutConstraint(location);";
35
  protected final String TEXT_18 = NL + "\t}" + NL + "}";
36
37
  public String generate(Object argument)
38
  {
39
    final StringBuffer stringBuffer = new StringBuffer();
40
    
41
GenCommonBase genElement = (GenCommonBase) ((Object[]) argument)[0];
42
GenDiagram genDiagram = genElement.getDiagram();
43
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
44
45
    stringBuffer.append(TEXT_1);
46
    
47
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
48
if (copyrightText != null && copyrightText.trim().length() > 0) {
49
50
    stringBuffer.append(TEXT_2);
51
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
52
    stringBuffer.append(TEXT_3);
53
    }
54
    importManager.emitPackageStatement(stringBuffer);
55
56
importManager.markImportLocation(stringBuffer);
57
58
    stringBuffer.append(TEXT_4);
59
    stringBuffer.append(genElement.getNotationViewFactoryClassName());
60
    stringBuffer.append(TEXT_5);
61
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
62
    stringBuffer.append(TEXT_6);
63
    stringBuffer.append(TEXT_7);
64
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
65
    stringBuffer.append(TEXT_8);
66
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory"));
67
    stringBuffer.append(TEXT_9);
68
    stringBuffer.append(genDiagram.getEditorGen().getModelID());
69
    stringBuffer.append(TEXT_10);
70
    stringBuffer.append(genElement.getVisualID());
71
    stringBuffer.append(TEXT_11);
72
    
73
if (genElement instanceof GenLabel) {
74
75
    stringBuffer.append(TEXT_12);
76
    stringBuffer.append(genElement.getUniqueIdentifier());
77
    stringBuffer.append(TEXT_13);
78
    
79
}/*genElement is a pure label*/
80
if (genElement instanceof GenLinkLabel) {
81
82
    stringBuffer.append(TEXT_14);
83
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Location"));
84
    stringBuffer.append(TEXT_15);
85
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
86
    stringBuffer.append(TEXT_16);
87
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
88
    stringBuffer.append(TEXT_17);
89
    
90
}
91
92
    stringBuffer.append(TEXT_18);
93
    importManager.emitSortedImports();
94
    return stringBuffer.toString();
95
  }
96
}
(-)src/org/eclipse/gmf/internal/codegen/lite/CodegenEmitters.java (+272 lines)
Added Link Here
1
/*
2
 * Copyright (c) 2005 Borland Software Corporation
3
 * 
4
 * All rights reserved. This program and the accompanying materials
5
 * are made available under the terms of the Eclipse Public License v1.0
6
 * which accompanies this distribution, and is available at
7
 * http://www.eclipse.org/legal/epl-v10.html
8
 *
9
 * Contributors:
10
 *    Artem Tikhomirov (Borland) - initial API and implementation
11
 */
12
package org.eclipse.gmf.internal.codegen.lite;
13
14
import java.net.URL;
15
16
import org.eclipse.emf.codegen.jet.JETCompiler;
17
import org.eclipse.emf.codegen.jet.JETEmitter;
18
import org.eclipse.emf.codegen.jet.JETException;
19
import org.eclipse.emf.common.util.URI;
20
import org.eclipse.gmf.common.UnexpectedBehaviourException;
21
import org.eclipse.gmf.common.codegen.GIFEmitter;
22
import org.eclipse.gmf.internal.codegen.dispatch.EmitterFactory;
23
import org.eclipse.gmf.internal.codegen.dispatch.NoSuchTemplateException;
24
import org.eclipse.gmf.internal.codegen.dispatch.StaticTemplateRegistry;
25
26
import org.eclipse.gmf.codegen.templates.lite.editor.ActionBarContributorGenerator;
27
import org.eclipse.gmf.codegen.templates.lite.editor.BuildPropertiesGenerator;
28
import org.eclipse.gmf.codegen.templates.lite.editor.CreationWizardGenerator;
29
import org.eclipse.gmf.codegen.templates.lite.editor.CreationWizardPageGenerator;
30
import org.eclipse.gmf.codegen.templates.lite.editor.DiagramEditorUtilGenerator;
31
import org.eclipse.gmf.codegen.templates.lite.editor.EditorGenerator;
32
import org.eclipse.gmf.codegen.templates.lite.editor.ManifestGenerator;
33
import org.eclipse.gmf.codegen.templates.lite.editor.PaletteFactoryGenerator;
34
import org.eclipse.gmf.codegen.templates.lite.editor.PluginGenerator;
35
import org.eclipse.gmf.codegen.templates.lite.editor.PluginPropertiesGenerator;
36
import org.eclipse.gmf.codegen.templates.lite.editor.PluginXML;
37
import org.eclipse.gmf.codegen.templates.lite.editor.VisualIDRegistryGenerator;
38
import org.eclipse.gmf.codegen.templates.lite.parts.ChildNodeEditPartGenerator;
39
import org.eclipse.gmf.codegen.templates.lite.parts.CompartmentEditPartGenerator;
40
import org.eclipse.gmf.codegen.templates.lite.parts.DiagramEditPartGenerator;
41
import org.eclipse.gmf.codegen.templates.lite.parts.EditPartFactoryGenerator;
42
import org.eclipse.gmf.codegen.templates.lite.parts.LinkEditPartGenerator;
43
import org.eclipse.gmf.codegen.templates.lite.parts.LinkLabelEditPartGenerator;
44
import org.eclipse.gmf.codegen.templates.lite.parts.NodeEditPartGenerator;
45
import org.eclipse.gmf.codegen.templates.lite.parts.NodeLabelEditPartGenerator;
46
import org.eclipse.gmf.codegen.templates.lite.parts.UpdatableEditPartGenerator;
47
import org.eclipse.gmf.codegen.templates.lite.providers.AbstractParserGenerator;
48
import org.eclipse.gmf.codegen.templates.lite.providers.CompartmentViewFactoryGenerator;
49
import org.eclipse.gmf.codegen.templates.lite.providers.DiagramViewFactoryGenerator;
50
import org.eclipse.gmf.codegen.templates.lite.providers.DomainElementInitializerGenerator;
51
import org.eclipse.gmf.codegen.templates.lite.providers.LabelViewFactoryGenerator;
52
import org.eclipse.gmf.codegen.templates.lite.providers.LinkViewFactoryGenerator;
53
import org.eclipse.gmf.codegen.templates.lite.providers.NodeViewFactoryGenerator;
54
import org.eclipse.gmf.codegen.templates.lite.providers.PropertySourceProviderGenerator;
55
import org.osgi.framework.Bundle;
56
57
/**
58
 * Provides JET templates.
59
 * FIXME Merge with {@link org.eclipse.gmf.codegen.util.CodegenEmitters}
60
 * 
61
 * @author artem
62
 */
63
public class CodegenEmitters {
64
65
	private final EmitterFactory myFactory;
66
67
	private final String[] myTemplatePath;
68
69
	private static StaticTemplateRegistry myRegistry;
70
71
	public CodegenEmitters(boolean usePrecompiled, String templateDirectory) {
72
		myRegistry = initRegistry();
73
		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",
74
				"org.eclipse.gmf.codegen" };
75
		myTemplatePath = new String[] {
76
				usePrecompiled ? null : templateDirectory != null && templateDirectory.indexOf(":") == -1 ? URI.createPlatformResourceURI(templateDirectory).toString() : templateDirectory,
77
				getTemplatesBundle().getEntry("/templates/").toString() };
78
		myFactory = new EmitterFactory(getTemplatePath(), myRegistry, usePrecompiled, variables, true);
79
	}
80
81
	private static StaticTemplateRegistry initRegistry() {
82
		final StaticTemplateRegistry tr = new StaticTemplateRegistry(CodegenEmitters.class.getClassLoader());
83
		put(tr, "/providers/CompartmentViewFactory.javajet", CompartmentViewFactoryGenerator.class);
84
		put(tr, "/providers/DiagramViewFactory.javajet", DiagramViewFactoryGenerator.class);
85
		put(tr, "/providers/LabelViewFactory.javajet", LabelViewFactoryGenerator.class);
86
		put(tr, "/providers/LinkViewFactory.javajet", LinkViewFactoryGenerator.class);
87
		put(tr, "/providers/NodeViewFactory.javajet", NodeViewFactoryGenerator.class);
88
		put(tr, "/parts/CompartmentEditPart.javajet", CompartmentEditPartGenerator.class);
89
		put(tr, "/editor/CreationWizard.javajet", CreationWizardGenerator.class);
90
		put(tr, "/editor/CreationWizardPage.javajet", CreationWizardPageGenerator.class);
91
		put(tr, "/editor/DiagramEditorUtil.javajet", DiagramEditorUtilGenerator.class);
92
		// put(tr, "/editor/MatchingStrategy.javajet",
93
		// MatchingStrategyGenerator.class);
94
		put(tr, "/editor/PaletteFactory.javajet", PaletteFactoryGenerator.class);
95
		put(tr, "/editor/VisualIDRegistry.javajet", VisualIDRegistryGenerator.class);
96
		put(tr, "/parts/DiagramEditPart.javajet", DiagramEditPartGenerator.class);
97
		put(tr, "/parts/EditPartFactory.javajet", EditPartFactoryGenerator.class);
98
		put(tr, "/parts/IUpdatableEditPart.javajet", UpdatableEditPartGenerator.class);
99
		put(tr, "/providers/AbstractParser.javajet", AbstractParserGenerator.class);
100
		put(tr, "/providers/DomainElementInitializer.javajet", DomainElementInitializerGenerator.class);
101
		put(tr, "/providers/PropertySourceProvider.javajet", PropertySourceProviderGenerator.class);
102
		put(tr, "/editor/ActionBarContributor.javajet", ActionBarContributorGenerator.class);
103
		put(tr, "/editor/Editor.javajet", EditorGenerator.class);
104
		put(tr, "/parts/LinkEditPart.javajet", LinkEditPartGenerator.class);
105
		put(tr, "/parts/LinkLabelEditPart.javajet", LinkLabelEditPartGenerator.class);
106
		put(tr, "/parts/ChildNodeEditPart.javajet", ChildNodeEditPartGenerator.class);
107
		put(tr, "/parts/NodeEditPart.javajet", NodeEditPartGenerator.class);
108
		put(tr, "/parts/NodeLabelEditPart.javajet", NodeLabelEditPartGenerator.class);
109
		put(tr, "/editor/Plugin.javajet", PluginGenerator.class);
110
		// put(tr, "/editor/ModelCreationFactory.javajet", ModelCreationFactoryGenerator.class);
111
		put(tr, "/editor/manifest.mfjet", ManifestGenerator.class);
112
		put(tr, "/editor/build.propertiesjet", BuildPropertiesGenerator.class);
113
		put(tr, "/editor/plugin.xmljet", PluginXML.class);
114
		put(tr, "/editor/plugin.propertiesjet", PluginPropertiesGenerator.class);
115
		return tr;
116
	}
117
118
	public JETEmitter getCompartmentViewFactoryGenerator() throws UnexpectedBehaviourException {
119
		return retrieve(CompartmentViewFactoryGenerator.class);
120
	}
121
122
	public JETEmitter getDiagramViewFactoryGenerator() throws UnexpectedBehaviourException {
123
		return retrieve(DiagramViewFactoryGenerator.class);
124
	}
125
126
	public JETEmitter getLabelViewFactoryGenerator() throws UnexpectedBehaviourException {
127
		return retrieve(LabelViewFactoryGenerator.class);
128
	}
129
130
	public JETEmitter getLinkViewFactoryGenerator() throws UnexpectedBehaviourException {
131
		return retrieve(LinkViewFactoryGenerator.class);
132
	}
133
134
	public JETEmitter getNodeViewFactoryGenerator() throws UnexpectedBehaviourException {
135
		return retrieve(NodeViewFactoryGenerator.class);
136
	}
137
138
	public JETEmitter getAbstractParserGenerator() throws UnexpectedBehaviourException {
139
		return retrieve(AbstractParserGenerator.class);
140
	}
141
142
	public JETEmitter getDomainElementInitializerGenerator() throws UnexpectedBehaviourException {
143
		return retrieve(DomainElementInitializerGenerator.class);
144
	}
145
146
	public JETEmitter getPropertySourceProviderGenerator() throws UnexpectedBehaviourException {
147
		return retrieve(PropertySourceProviderGenerator.class);
148
	}
149
150
	public JETEmitter getCompartmentEditPartGenerator() throws UnexpectedBehaviourException {
151
		return retrieve(CompartmentEditPartGenerator.class);
152
	}
153
154
	public JETEmitter getDiagramEditPartGenerator() throws UnexpectedBehaviourException {
155
		return retrieve(DiagramEditPartGenerator.class);
156
	}
157
158
	public JETEmitter getEditPartFactoryGenerator() throws UnexpectedBehaviourException {
159
		return retrieve(EditPartFactoryGenerator.class);
160
	}
161
162
	public JETEmitter getUpdatableEditPartGenerator() throws UnexpectedBehaviourException {
163
		return retrieve(UpdatableEditPartGenerator.class);
164
	}
165
166
	public JETEmitter getLinkEditPartGenerator() throws UnexpectedBehaviourException {
167
		return retrieve(LinkEditPartGenerator.class);
168
	}
169
170
	public JETEmitter getLinkLabelEditPartGenerator() throws UnexpectedBehaviourException {
171
		return retrieve(LinkLabelEditPartGenerator.class);
172
	}
173
174
	public JETEmitter getChildNodeEditPartGenerator() throws UnexpectedBehaviourException {
175
		return retrieve(ChildNodeEditPartGenerator.class);
176
	}
177
178
	public JETEmitter getNodeEditPartGenerator() throws UnexpectedBehaviourException {
179
		return retrieve(NodeEditPartGenerator.class);
180
	}
181
182
	public JETEmitter getNodeLabelEditPartGenerator() throws UnexpectedBehaviourException {
183
		return retrieve(NodeLabelEditPartGenerator.class);
184
	}
185
186
	public JETEmitter getPluginGenerator() throws UnexpectedBehaviourException {
187
		return retrieve(PluginGenerator.class);
188
	}
189
190
	public JETEmitter getActionBarContributorGenerator() throws UnexpectedBehaviourException {
191
		return retrieve(ActionBarContributorGenerator.class);
192
	}
193
194
	public JETEmitter getEditorGenerator() throws UnexpectedBehaviourException {
195
		return retrieve(EditorGenerator.class);
196
	}
197
198
	public JETEmitter getCreationWizardGenerator() throws UnexpectedBehaviourException {
199
		return retrieve(CreationWizardGenerator.class);
200
	}
201
202
	public JETEmitter getCreationWizardPageGenerator() throws UnexpectedBehaviourException {
203
		return retrieve(CreationWizardPageGenerator.class);
204
	}
205
206
	public JETEmitter getDiagramEditorUtilGenerator() throws UnexpectedBehaviourException {
207
		return retrieve(DiagramEditorUtilGenerator.class);
208
	}
209
210
	public JETEmitter getPaletteFactoryGenerator() throws UnexpectedBehaviourException {
211
		return retrieve(PaletteFactoryGenerator.class);
212
	}
213
214
	public JETEmitter getVisualIDRegistryGenerator() throws UnexpectedBehaviourException {
215
		return retrieve(VisualIDRegistryGenerator.class);
216
	}
217
218
	public JETEmitter getManifestGenerator() throws UnexpectedBehaviourException {
219
		return retrieve(ManifestGenerator.class);
220
	}
221
222
	public JETEmitter getBuildPropertiesGenerator() throws UnexpectedBehaviourException {
223
		return retrieve(BuildPropertiesGenerator.class);
224
	}
225
226
	public JETEmitter getPluginXML() throws UnexpectedBehaviourException {
227
		return retrieve(PluginXML.class);
228
	}
229
230
	public JETEmitter getPluginPropertiesGenerator() throws UnexpectedBehaviourException {
231
		return retrieve(PluginPropertiesGenerator.class);
232
	}
233
234
	/**
235
	 * @see #retrieve(Class)
236
	 */
237
	private static void put(StaticTemplateRegistry tr, String path, Class precompiledTemplate) {
238
		tr.put(precompiledTemplate, path, precompiledTemplate);
239
	}
240
241
	/**
242
	 * depends on {@link #put(StaticTemplateRegistry, String, Class) } impl -
243
	 * class object of precompiled template serves as a key
244
	 */
245
	private JETEmitter retrieve(Class key) throws UnexpectedBehaviourException {
246
		try {
247
			return myFactory.acquireEmitter(key);
248
		} catch (NoSuchTemplateException ex) {
249
			throw new UnexpectedBehaviourException(ex.getMessage(), ex);
250
		}
251
	}
252
253
	private String[] getTemplatePath() {
254
		return myTemplatePath;
255
	}
256
257
	private static Bundle getTemplatesBundle() {
258
		return Activator.getDefault();
259
	}
260
261
	public URL getJMergeControlFile() {
262
		return getTemplatesBundle().getEntry("/templates/emf-merge.xml");
263
	}
264
265
	public GIFEmitter getShortcutImageEmitter() throws JETException {
266
		String templateLocation = JETCompiler.find(getTemplatePath(), "/editor/shortcut.gif");
267
		if (templateLocation == null) {
268
			throw new JETException("shortcut image template not found");
269
		}
270
		return new GIFEmitter(templateLocation);
271
	}
272
}
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/parts/LinkLabelEditPartGenerator.java (+807 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.parts;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
import java.util.*;
6
import org.eclipse.emf.codegen.ecore.genmodel.*;
7
import org.eclipse.emf.ecore.*;
8
9
public class LinkLabelEditPartGenerator
10
{
11
  protected static String nl;
12
  public static synchronized LinkLabelEditPartGenerator create(String lineSeparator)
13
  {
14
    nl = lineSeparator;
15
    LinkLabelEditPartGenerator result = new LinkLabelEditPartGenerator();
16
    nl = null;
17
    return result;
18
  }
19
20
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
21
  protected final String TEXT_1 = "";
22
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
23
  protected final String TEXT_3 = NL + " */";
24
  protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
25
  protected final String TEXT_5 = " extends ";
26
  protected final String TEXT_6 = " {";
27
  protected final String TEXT_7 = NL;
28
  protected final String TEXT_8 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
29
  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 ";
30
  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() {";
31
  protected final String TEXT_11 = NL + "\t\tinstallEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new ";
32
  protected final String TEXT_12 = "() {" + NL + "\t\t\tpublic EditPart getHost() {" + NL + "\t\t\t\treturn getUpdatableParent();" + NL + "\t\t\t}" + NL + "\t\t});";
33
  protected final String TEXT_13 = NL;
34
  protected final String TEXT_14 = "\t\tinstallEditPolicy(";
35
  protected final String TEXT_15 = ".DIRECT_EDIT_ROLE," + NL + "\t\t\t\tnew ";
36
  protected final String TEXT_16 = "() {" + NL + "\t\t\t\t\tprotected void showCurrentEditValue(";
37
  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 ";
38
  protected final String TEXT_18 = " getDirectEditCommand(";
39
  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 ";
40
  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 ";
41
  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 ";
42
  protected final String TEXT_22 = ".INSTANCE;" + NL + "\t\t\t\t\t\t} catch (";
43
  protected final String TEXT_23 = " e) {" + NL + "\t\t\t\t\t\t\treturn ";
44
  protected final String TEXT_24 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}";
45
  protected final String TEXT_25 = NL + "\t\t\t\t\t\tif (parseResult.length != 1) {" + NL + "\t\t\t\t\t\t\treturn ";
46
  protected final String TEXT_26 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new ";
47
  protected final String TEXT_27 = "() {" + NL + "\t\t\t\t\t\t\tprivate ";
48
  protected final String TEXT_28 = " element = ";
49
  protected final String TEXT_29 = ";" + NL + "\t\t\t\t\t\t\tprivate ";
50
  protected final String TEXT_30 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate ";
51
  protected final String TEXT_31 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t";
52
  protected final String TEXT_32 = " domainModelEditDomain = ";
53
  protected final String TEXT_33 = ".getEditingDomainFor(";
54
  protected final String TEXT_34 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t";
55
  protected final String TEXT_35 = " feature = (";
56
  protected final String TEXT_36 = ") ";
57
  protected final String TEXT_37 = ".eINSTANCE.get";
58
  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 = ";
59
  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 ";
60
  protected final String TEXT_40 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}";
61
  protected final String TEXT_41 = NL + "\t\t\t\t\t\t\t\t";
62
  protected final String TEXT_42 = " result = new ";
63
  protected final String TEXT_43 = "();" + NL + "\t\t\t\t\t\t\t\t";
64
  protected final String TEXT_44 = " values = new ";
65
  protected final String TEXT_45 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get";
66
  protected final String TEXT_46 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append(";
67
  protected final String TEXT_47 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append(";
68
  protected final String TEXT_48 = ".create(domainModelEditDomain, element, feature, valueToSet));" + NL + "\t\t\t\t\t\t\t\treturn result;";
69
  protected final String TEXT_49 = NL + "\t\t\t\t\t\t\t\treturn ";
70
  protected final String TEXT_50 = ".create(domainModelEditDomain, element, feature, valueToSet);";
71
  protected final String TEXT_51 = NL + "\t\t\t\t\t\t\t}";
72
  protected final String TEXT_52 = NL + "\t\t\t\t\t\tif (parseResult.length != ";
73
  protected final String TEXT_53 = ") {" + NL + "\t\t\t\t\t\t\treturn ";
74
  protected final String TEXT_54 = ".INSTANCE;" + NL + "\t\t\t\t\t\t}" + NL + "\t\t\t\t\t\treturn new ";
75
  protected final String TEXT_55 = "() {" + NL + "\t\t\t\t\t\t\tprivate ";
76
  protected final String TEXT_56 = " element = ";
77
  protected final String TEXT_57 = ";" + NL + "\t\t\t\t\t\t\tprivate ";
78
  protected final String TEXT_58 = " domainModelCommand = createDomainModelCommand();" + NL + "\t\t\t\t\t\t\tprivate ";
79
  protected final String TEXT_59 = " createDomainModelCommand() {" + NL + "\t\t\t\t\t\t\t\t";
80
  protected final String TEXT_60 = " domainModelEditDomain = ";
81
  protected final String TEXT_61 = ".getEditingDomainFor(";
82
  protected final String TEXT_62 = ".getDiagram().getElement());" + NL + "\t\t\t\t\t\t\t\t";
83
  protected final String TEXT_63 = " result = new ";
84
  protected final String TEXT_64 = "();" + NL + "\t\t\t\t\t\t\t\tObject valueToSet;";
85
  protected final String TEXT_65 = NL + "\t\t\t\t\t\t\t\t";
86
  protected final String TEXT_66 = " ";
87
  protected final String TEXT_67 = "feature = (";
88
  protected final String TEXT_68 = ") ";
89
  protected final String TEXT_69 = ".eINSTANCE.get";
90
  protected final String TEXT_70 = "();" + NL + "\t\t\t\t\t\t\t\ttry {" + NL + "\t\t\t\t\t\t\t\t\tvalueToSet = ";
91
  protected final String TEXT_71 = ".parseValue(feature, parseResult[";
92
  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 ";
93
  protected final String TEXT_73 = ".INSTANCE;" + NL + "\t\t\t\t\t\t\t\t}";
94
  protected final String TEXT_74 = NL + "\t\t\t\t\t\t\t\t";
95
  protected final String TEXT_75 = " ";
96
  protected final String TEXT_76 = "values = new ";
97
  protected final String TEXT_77 = "();" + NL + "\t\t\t\t\t\t\t\tvalues.addAll(element.get";
98
  protected final String TEXT_78 = "());" + NL + "\t\t\t\t\t\t\t\tresult.append(";
99
  protected final String TEXT_79 = ".create(domainModelEditDomain, element, feature, values));" + NL + "\t\t\t\t\t\t\t\tresult.append(";
100
  protected final String TEXT_80 = ".create(domainModelEditDomain, element, feature, valueToSet));";
101
  protected final String TEXT_81 = NL + "\t\t\t\t\t\t\t\tresult.append(";
102
  protected final String TEXT_82 = ".create(domainModelEditDomain, element, feature, valueToSet));";
103
  protected final String TEXT_83 = NL + "\t\t\t\t\t\t\t\treturn result;" + NL + "\t\t\t\t\t\t\t}";
104
  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});";
105
  protected final String TEXT_85 = NL + "\t}" + NL;
106
  protected final String TEXT_86 = NL;
107
  protected final String TEXT_87 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void performRequest(";
108
  protected final String TEXT_88 = " req) {" + NL + "\t\tif (";
109
  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 ";
110
  protected final String TEXT_90 = " getManager() {" + NL + "\t\tif (manager == null) {" + NL + "\t\t\tmanager = new ";
111
  protected final String TEXT_91 = "(this, ";
112
  protected final String TEXT_92 = ".class, new ";
113
  protected final String TEXT_93 = "() {" + NL + "\t\t\t\tpublic void relocate(";
114
  protected final String TEXT_94 = " celleditor) {" + NL + "\t\t\t\t\t";
115
  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;
116
  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((";
117
  protected final String TEXT_97 = ") getParent()).setLayoutConstraint(this," + NL + "\t\t\t\tgetFigure(), new ";
118
  protected final String TEXT_98 = "() {" + NL + "\t\t\t\t\tprotected ";
119
  protected final String TEXT_99 = " getReferencePoint() {" + NL + "\t\t\t\t\t\t";
120
  protected final String TEXT_100 = " parent = getUpdatableParent();" + NL + "\t\t\t\t\t\t";
121
  protected final String TEXT_101 = " connection = (";
122
  protected final String TEXT_102 = ") parent.getFigure();" + NL + "\t\t\t\t\t\t";
123
  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 ";
124
  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;
125
  protected final String TEXT_105 = NL;
126
  protected final String TEXT_106 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String VIEW_PATTERN = \"";
127
  protected final String TEXT_107 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static final String EDIT_PATTERN = \"";
128
  protected final String TEXT_108 = "\";" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected String getLabelText() {" + NL + "\t\t";
129
  protected final String TEXT_109 = " element = ";
130
  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";
131
  protected final String TEXT_111 = " element = ";
132
  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(";
133
  protected final String TEXT_113 = " element, String pattern) {";
134
  protected final String TEXT_114 = NL + "\t\tif (element.get";
135
  protected final String TEXT_115 = "() == null) {" + NL + "\t\t\treturn defaultText;" + NL + "\t\t}";
136
  protected final String TEXT_116 = NL + "\t\treturn ";
137
  protected final String TEXT_117 = ".format(pattern, new Object[] {";
138
  protected final String TEXT_118 = NL + "\t\t\t";
139
  protected final String TEXT_119 = NL + "\t\t});";
140
  protected final String TEXT_120 = NL + "\t\treturn ";
141
  protected final String TEXT_121 = ".format(pattern, new Object[] {";
142
  protected final String TEXT_122 = NL + "\t\t";
143
  protected final String TEXT_123 = ",";
144
  protected final String TEXT_124 = NL + "\t\t});";
145
  protected final String TEXT_125 = NL + "\t\t//XXX: unexpected model facet." + NL + "\t\treturn defaultText;";
146
  protected final String TEXT_126 = NL + "\t}";
147
  protected final String TEXT_127 = NL;
148
  protected final String TEXT_128 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFont() {" + NL + "\t\t";
149
  protected final String TEXT_129 = " style =" + NL + "\t\t\t(";
150
  protected final String TEXT_130 = ") ";
151
  protected final String TEXT_131 = ".getStyle(" + NL + "\t\t\t\t";
152
  protected final String TEXT_132 = ".eINSTANCE.getFontStyle());" + NL + "\t\t";
153
  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 = ";
154
  protected final String TEXT_134 = ".NORMAL;" + NL + "\t\t\tif (style.isBold()) {" + NL + "\t\t\t\tfontStyle |= ";
155
  protected final String TEXT_135 = ".BOLD;" + NL + "\t\t\t}" + NL + "\t\t\tif (style.isItalic()) {" + NL + "\t\t\t\tfontStyle |= ";
156
  protected final String TEXT_136 = ".ITALIC;" + NL + "\t\t\t}" + NL + "\t\t\t";
157
  protected final String TEXT_137 = " currentFont = getFigure().getFont();" + NL + "\t\t\tif (currentFont != null) {" + NL + "\t\t\t\t";
158
  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 ";
159
  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 ";
160
  protected final String TEXT_140 = " createdFont;";
161
  protected final String TEXT_141 = NL;
162
  protected final String TEXT_142 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFontColor() {" + NL + "\t\t";
163
  protected final String TEXT_143 = " style = (";
164
  protected final String TEXT_144 = ")  ";
165
  protected final String TEXT_145 = ".getStyle(";
166
  protected final String TEXT_146 = ".eINSTANCE.getFontStyle());" + NL + "\t\t";
167
  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";
168
  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 ";
169
  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 ";
170
  protected final String TEXT_150 = " createdFontColor;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
171
  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 (";
172
  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 ";
173
  protected final String TEXT_153 = " getUpdatableParent() {" + NL + "\t\tfor(EditPart editPart = getParent(); editPart != null; editPart = editPart.getParent()) {" + NL + "\t\t\tif (editPart instanceof ";
174
  protected final String TEXT_154 = ") {" + NL + "\t\t\t\treturn (";
175
  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";
176
  protected final String TEXT_156 = " updatableParent = getUpdatableParent();" + NL + "\t\tif (updatableParent != null) {" + NL + "\t\t\tupdatableParent.addRefresher(";
177
  protected final String TEXT_157 = ".eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);" + NL + "\t\t\tupdatableParent.addRefresher(";
178
  protected final String TEXT_158 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher(";
179
  protected final String TEXT_159 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher(";
180
  protected final String TEXT_160 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\t\tupdatableParent.addRefresher(";
181
  protected final String TEXT_161 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);";
182
  protected final String TEXT_162 = NL + "\t\t\tupdatableParent.addRefresher(";
183
  protected final String TEXT_163 = ".eINSTANCE.get";
184
  protected final String TEXT_164 = "(), labelRefresher);";
185
  protected final String TEXT_165 = NL + "\t\t\tupdatableParent.addRefresher(";
186
  protected final String TEXT_166 = ".eINSTANCE.get";
187
  protected final String TEXT_167 = "(), labelRefresher);";
188
  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";
189
  protected final String TEXT_169 = " updatableParent = getUpdatableParent();" + NL + "\t\tif (updatableParent != null) {" + NL + "\t\t\tupdatableParent.removeRefresher(";
190
  protected final String TEXT_170 = ".eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher(";
191
  protected final String TEXT_171 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher(";
192
  protected final String TEXT_172 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher(";
193
  protected final String TEXT_173 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\t\tupdatableParent.removeRefresher(";
194
  protected final String TEXT_174 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);";
195
  protected final String TEXT_175 = NL + "\t\t\tupdatableParent.removeRefresher(";
196
  protected final String TEXT_176 = ".eINSTANCE.get";
197
  protected final String TEXT_177 = "(), labelRefresher);";
198
  protected final String TEXT_178 = NL + "\t\t\tupdatableParent.removeRefresher(";
199
  protected final String TEXT_179 = ".eINSTANCE.get";
200
  protected final String TEXT_180 = "(), labelRefresher);";
201
  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;
202
  protected final String TEXT_182 = NL;
203
  protected final String TEXT_183 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
204
  protected final String TEXT_184 = " createFigure() {" + NL + "\t\t";
205
  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 ";
206
  protected final String TEXT_186 = " createLabel() {";
207
  protected final String TEXT_187 = NL + "\t\treturn new ";
208
  protected final String TEXT_188 = "();";
209
  protected final String TEXT_189 = NL + "\t\treturn ";
210
  protected final String TEXT_190 = ";";
211
  protected final String TEXT_191 = NL + "\t\treturn new ";
212
  protected final String TEXT_192 = "();";
213
  protected final String TEXT_193 = NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
214
  protected final String TEXT_194 = " getLabel() {" + NL + "\t\treturn (";
215
  protected final String TEXT_195 = ") getFigure();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic void setLabel(";
216
  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;
217
  protected final String TEXT_197 = NL;
218
  protected final String TEXT_198 = NL;
219
  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}";
220
  protected final String TEXT_200 = NL + "}";
221
  protected final String TEXT_201 = NL;
222
223
  public String generate(Object argument)
224
  {
225
    final StringBuffer stringBuffer = new StringBuffer();
226
    
227
GenLinkLabel genLabel = (GenLinkLabel) ((Object[]) argument)[0];
228
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
229
GenLink genHost = genLabel.getLink();
230
GenDiagram genDiagram = genLabel.getDiagram();
231
LabelModelFacet labelModelFacet = genLabel.getModelFacet();
232
GenClass underlyingMetaClass;
233
if (genHost.getModelFacet() instanceof TypeLinkModelFacet) {
234
	TypeLinkModelFacet typeLinkModelFacet = (TypeLinkModelFacet) genHost.getModelFacet();
235
	underlyingMetaClass = typeLinkModelFacet.getMetaClass();
236
} else if (genHost.getModelFacet() instanceof FeatureLinkModelFacet) {
237
	FeatureLinkModelFacet featureLinkModelFacet = (FeatureLinkModelFacet) genHost.getModelFacet();
238
	underlyingMetaClass = featureLinkModelFacet.getMetaFeature().getTypeGenClass();
239
} else {
240
	underlyingMetaClass = null;
241
}
242
243
    stringBuffer.append(TEXT_1);
244
    
245
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
246
if (copyrightText != null && copyrightText.trim().length() > 0) {
247
248
    stringBuffer.append(TEXT_2);
249
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
250
    stringBuffer.append(TEXT_3);
251
    }
252
    importManager.emitPackageStatement(stringBuffer);
253
importManager.addImport("org.eclipse.draw2d.geometry.Point");
254
importManager.addImport("org.eclipse.gef.EditPart");
255
importManager.addImport("org.eclipse.gef.EditPolicy");
256
importManager.addImport("org.eclipse.gmf.runtime.notation.Location");
257
importManager.addImport("org.eclipse.gmf.runtime.notation.Node");
258
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
259
260
importManager.markImportLocation(stringBuffer);
261
262
    stringBuffer.append(TEXT_4);
263
    stringBuffer.append(genLabel.getEditPartClassName());
264
    stringBuffer.append(TEXT_5);
265
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart"));
266
    stringBuffer.append(TEXT_6);
267
    stringBuffer.append(TEXT_7);
268
    stringBuffer.append(TEXT_8);
269
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager"));
270
    stringBuffer.append(TEXT_9);
271
    stringBuffer.append(genLabel.getEditPartClassName());
272
    stringBuffer.append(TEXT_10);
273
    
274
final String primaryView = "getUpdatableParent().getDiagramEdge()";
275
final String resolvedSemanticElement = "resolveSemanticElement()";
276
277
    stringBuffer.append(TEXT_11);
278
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy"));
279
    stringBuffer.append(TEXT_12);
280
    
281
if (labelModelFacet instanceof FeatureLabelModelFacet == true || labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
282
283
    stringBuffer.append(TEXT_13);
284
    stringBuffer.append(TEXT_14);
285
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
286
    stringBuffer.append(TEXT_15);
287
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.DirectEditPolicy"));
288
    stringBuffer.append(TEXT_16);
289
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest"));
290
    stringBuffer.append(TEXT_17);
291
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
292
    stringBuffer.append(TEXT_18);
293
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest"));
294
    stringBuffer.append(TEXT_19);
295
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
296
    stringBuffer.append(TEXT_20);
297
    stringBuffer.append(importManager.getImportedName("java.text.MessageFormat"));
298
    stringBuffer.append(TEXT_21);
299
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
300
    stringBuffer.append(TEXT_22);
301
    stringBuffer.append(importManager.getImportedName("java.text.ParseException"));
302
    stringBuffer.append(TEXT_23);
303
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
304
    stringBuffer.append(TEXT_24);
305
    
306
if (labelModelFacet instanceof FeatureLabelModelFacet && !genLabel.isReadOnly()) {
307
	GenFeature featureToSet = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
308
	EStructuralFeature ecoreFeature = featureToSet.getEcoreFeature();
309
310
    stringBuffer.append(TEXT_25);
311
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
312
    stringBuffer.append(TEXT_26);
313
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
314
    stringBuffer.append(TEXT_27);
315
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
316
    stringBuffer.append(TEXT_28);
317
    stringBuffer.append(resolvedSemanticElement);
318
    stringBuffer.append(TEXT_29);
319
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
320
    stringBuffer.append(TEXT_30);
321
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
322
    stringBuffer.append(TEXT_31);
323
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain"));
324
    stringBuffer.append(TEXT_32);
325
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
326
    stringBuffer.append(TEXT_33);
327
    stringBuffer.append(primaryView);
328
    stringBuffer.append(TEXT_34);
329
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
330
    stringBuffer.append(TEXT_35);
331
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
332
    stringBuffer.append(TEXT_36);
333
    stringBuffer.append(importManager.getImportedName(featureToSet.getGenPackage().getQualifiedPackageInterfaceName()));
334
    stringBuffer.append(TEXT_37);
335
    stringBuffer.append(featureToSet.getFeatureAccessorName());
336
    stringBuffer.append(TEXT_38);
337
    stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName()));
338
    stringBuffer.append(TEXT_39);
339
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand"));
340
    stringBuffer.append(TEXT_40);
341
    
342
	if (ecoreFeature.isMany()) {
343
344
    stringBuffer.append(TEXT_41);
345
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
346
    stringBuffer.append(TEXT_42);
347
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
348
    stringBuffer.append(TEXT_43);
349
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList"));
350
    stringBuffer.append(TEXT_44);
351
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList"));
352
    stringBuffer.append(TEXT_45);
353
    stringBuffer.append(featureToSet.getAccessorName());
354
    stringBuffer.append(TEXT_46);
355
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
356
    stringBuffer.append(TEXT_47);
357
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand"));
358
    stringBuffer.append(TEXT_48);
359
    
360
	} else {
361
362
    stringBuffer.append(TEXT_49);
363
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
364
    stringBuffer.append(TEXT_50);
365
    
366
	}
367
368
    stringBuffer.append(TEXT_51);
369
    
370
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
371
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
372
	List metaFeatures = compositeFeatureLabelModelFacet.getMetaFeatures();
373
374
    stringBuffer.append(TEXT_52);
375
    stringBuffer.append(metaFeatures.size());
376
    stringBuffer.append(TEXT_53);
377
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
378
    stringBuffer.append(TEXT_54);
379
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
380
    stringBuffer.append(TEXT_55);
381
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
382
    stringBuffer.append(TEXT_56);
383
    stringBuffer.append(resolvedSemanticElement);
384
    stringBuffer.append(TEXT_57);
385
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
386
    stringBuffer.append(TEXT_58);
387
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.Command"));
388
    stringBuffer.append(TEXT_59);
389
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain"));
390
    stringBuffer.append(TEXT_60);
391
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
392
    stringBuffer.append(TEXT_61);
393
    stringBuffer.append(primaryView);
394
    stringBuffer.append(TEXT_62);
395
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
396
    stringBuffer.append(TEXT_63);
397
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
398
    stringBuffer.append(TEXT_64);
399
    
400
	boolean haveDeclaredValues = false;
401
	for(int i = 0; i < metaFeatures.size(); i++) {
402
		GenFeature nextFeatureToSet = (GenFeature) metaFeatures.get(i);
403
		EStructuralFeature nextEcoreFeature = nextFeatureToSet.getEcoreFeature();
404
405
    stringBuffer.append(TEXT_65);
406
    if (i == 0) {
407
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
408
    stringBuffer.append(TEXT_66);
409
    }
410
    stringBuffer.append(TEXT_67);
411
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAttribute"));
412
    stringBuffer.append(TEXT_68);
413
    stringBuffer.append(importManager.getImportedName(nextFeatureToSet.getGenPackage().getQualifiedPackageInterfaceName()));
414
    stringBuffer.append(TEXT_69);
415
    stringBuffer.append(nextFeatureToSet.getFeatureAccessorName());
416
    stringBuffer.append(TEXT_70);
417
    stringBuffer.append(importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName()));
418
    stringBuffer.append(TEXT_71);
419
    stringBuffer.append(i);
420
    stringBuffer.append(TEXT_72);
421
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand"));
422
    stringBuffer.append(TEXT_73);
423
    
424
		if (nextEcoreFeature.isMany()) {
425
426
    stringBuffer.append(TEXT_74);
427
    if (!haveDeclaredValues) { haveDeclaredValues = true;
428
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.EList"));
429
    stringBuffer.append(TEXT_75);
430
    }
431
    stringBuffer.append(TEXT_76);
432
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.util.BasicEList"));
433
    stringBuffer.append(TEXT_77);
434
    stringBuffer.append(nextFeatureToSet.getAccessorName());
435
    stringBuffer.append(TEXT_78);
436
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
437
    stringBuffer.append(TEXT_79);
438
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand"));
439
    stringBuffer.append(TEXT_80);
440
    
441
		} else {
442
443
    stringBuffer.append(TEXT_81);
444
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
445
    stringBuffer.append(TEXT_82);
446
    
447
		}
448
449
    
450
	}
451
452
    stringBuffer.append(TEXT_83);
453
    
454
}
455
456
    stringBuffer.append(TEXT_84);
457
    
458
}
459
460
    stringBuffer.append(TEXT_85);
461
    
462
if (labelModelFacet instanceof FeatureLabelModelFacet == true || labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
463
464
    stringBuffer.append(TEXT_86);
465
    stringBuffer.append(TEXT_87);
466
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request"));
467
    stringBuffer.append(TEXT_88);
468
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants"));
469
    stringBuffer.append(TEXT_89);
470
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager"));
471
    stringBuffer.append(TEXT_90);
472
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager"));
473
    stringBuffer.append(TEXT_91);
474
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.TextCellEditor"));
475
    stringBuffer.append(TEXT_92);
476
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.tools.CellEditorLocator"));
477
    stringBuffer.append(TEXT_93);
478
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.viewers.CellEditor"));
479
    stringBuffer.append(TEXT_94);
480
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle"));
481
    stringBuffer.append(TEXT_95);
482
    
483
}
484
485
    stringBuffer.append(TEXT_96);
486
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.GraphicalEditPart"));
487
    stringBuffer.append(TEXT_97);
488
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.AbstractLocator"));
489
    stringBuffer.append(TEXT_98);
490
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point"));
491
    stringBuffer.append(TEXT_99);
492
    stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName()));
493
    stringBuffer.append(TEXT_100);
494
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Connection"));
495
    stringBuffer.append(TEXT_101);
496
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Connection"));
497
    stringBuffer.append(TEXT_102);
498
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point"));
499
    stringBuffer.append(TEXT_103);
500
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point"));
501
    stringBuffer.append(TEXT_104);
502
    stringBuffer.append(TEXT_105);
503
    
504
/*genFeature.getObjectType() throws NPE on primitive types. This is a workaround. */
505
HashMap primitiveTypeToWrapperClassName = new HashMap();
506
primitiveTypeToWrapperClassName.put(Boolean.TYPE, "Boolean");
507
primitiveTypeToWrapperClassName.put(Byte.TYPE, "Byte");
508
primitiveTypeToWrapperClassName.put(Character.TYPE, "Character");
509
primitiveTypeToWrapperClassName.put(Double.TYPE, "Double");
510
primitiveTypeToWrapperClassName.put(Float.TYPE, "Float");
511
primitiveTypeToWrapperClassName.put(Integer.TYPE, "Integer");
512
primitiveTypeToWrapperClassName.put(Long.TYPE, "Long");
513
primitiveTypeToWrapperClassName.put(Short.TYPE, "Short");
514
String viewPattern = null;
515
String editPattern = null;
516
if (labelModelFacet instanceof FeatureLabelModelFacet) {
517
	FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet;
518
	viewPattern = featureLabelModelFacet.getViewPattern();
519
	if (viewPattern == null || viewPattern.length() == 0) {
520
		viewPattern = "{0}";
521
	}
522
	editPattern = featureLabelModelFacet.getEditPattern();
523
	if (editPattern == null || editPattern.length() == 0) {
524
		editPattern = "{0}";
525
	}
526
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
527
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
528
	viewPattern = compositeFeatureLabelModelFacet.getViewPattern();
529
	if (viewPattern == null || viewPattern.length() == 0) {
530
		StringBuffer patternBuffer = new StringBuffer();
531
		for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) {
532
			patternBuffer.append("{").append(i).append("} ");
533
		}
534
		viewPattern = patternBuffer.toString().trim();
535
	}
536
	editPattern = compositeFeatureLabelModelFacet.getEditPattern();
537
	if (editPattern == null || editPattern.length() == 0) {
538
		StringBuffer patternBuffer = new StringBuffer();
539
		for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) {
540
			patternBuffer.append("{").append(i).append("} ");
541
		}
542
		editPattern = patternBuffer.toString().trim();
543
	}
544
}
545
546
    stringBuffer.append(TEXT_106);
547
    stringBuffer.append(viewPattern);
548
    stringBuffer.append(TEXT_107);
549
    stringBuffer.append(editPattern);
550
    stringBuffer.append(TEXT_108);
551
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
552
    stringBuffer.append(TEXT_109);
553
    stringBuffer.append(resolvedSemanticElement);
554
    stringBuffer.append(TEXT_110);
555
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
556
    stringBuffer.append(TEXT_111);
557
    stringBuffer.append(resolvedSemanticElement);
558
    stringBuffer.append(TEXT_112);
559
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
560
    stringBuffer.append(TEXT_113);
561
    
562
if (labelModelFacet instanceof FeatureLabelModelFacet) {
563
	FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet;
564
	GenFeature feature = featureLabelModelFacet.getMetaFeature();
565
	if (!feature.isPrimitiveType()) {
566
567
    stringBuffer.append(TEXT_114);
568
    stringBuffer.append(feature.getCapName());
569
    stringBuffer.append(TEXT_115);
570
    
571
	}
572
573
    stringBuffer.append(TEXT_116);
574
    stringBuffer.append(importManager.getImportedName("java.text.MessageFormat"));
575
    stringBuffer.append(TEXT_117);
576
    
577
		String value = "element.get" + feature.getCapName() + "()";	/*XXX: getTypedKey is not a part of public API!*/
578
		if (feature.isPrimitiveType()) {
579
			value = "new " + primitiveTypeToWrapperClassName.get(feature.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")";
580
		}
581
582
    stringBuffer.append(TEXT_118);
583
    stringBuffer.append(value);
584
    stringBuffer.append(TEXT_119);
585
    
586
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
587
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
588
589
    stringBuffer.append(TEXT_120);
590
    stringBuffer.append(importManager.getImportedName("java.text.MessageFormat"));
591
    stringBuffer.append(TEXT_121);
592
    
593
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
594
		GenFeature next = (GenFeature) it.next();
595
		String value = "element.get" + next.getCapName() + "()";	/*XXX: getTypedKey is not a part of public API!*/
596
		if (next.isPrimitiveType()) {
597
			value = "new " + primitiveTypeToWrapperClassName.get(next.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")";
598
		}
599
600
    stringBuffer.append(TEXT_122);
601
    stringBuffer.append(value);
602
    if (it.hasNext()) {
603
    stringBuffer.append(TEXT_123);
604
    }
605
    
606
	}
607
608
    stringBuffer.append(TEXT_124);
609
    
610
} else {
611
612
    stringBuffer.append(TEXT_125);
613
    
614
}
615
616
    stringBuffer.append(TEXT_126);
617
    stringBuffer.append(TEXT_127);
618
    stringBuffer.append(TEXT_128);
619
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
620
    stringBuffer.append(TEXT_129);
621
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
622
    stringBuffer.append(TEXT_130);
623
    stringBuffer.append(primaryView);
624
    stringBuffer.append(TEXT_131);
625
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
626
    stringBuffer.append(TEXT_132);
627
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
628
    stringBuffer.append(TEXT_133);
629
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
630
    stringBuffer.append(TEXT_134);
631
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
632
    stringBuffer.append(TEXT_135);
633
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
634
    stringBuffer.append(TEXT_136);
635
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
636
    stringBuffer.append(TEXT_137);
637
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.FontData"));
638
    stringBuffer.append(TEXT_138);
639
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
640
    stringBuffer.append(TEXT_139);
641
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
642
    stringBuffer.append(TEXT_140);
643
    stringBuffer.append(TEXT_141);
644
    stringBuffer.append(TEXT_142);
645
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
646
    stringBuffer.append(TEXT_143);
647
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
648
    stringBuffer.append(TEXT_144);
649
    stringBuffer.append(primaryView);
650
    stringBuffer.append(TEXT_145);
651
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
652
    stringBuffer.append(TEXT_146);
653
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
654
    stringBuffer.append(TEXT_147);
655
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
656
    stringBuffer.append(TEXT_148);
657
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
658
    stringBuffer.append(TEXT_149);
659
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
660
    stringBuffer.append(TEXT_150);
661
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
662
    stringBuffer.append(TEXT_151);
663
    stringBuffer.append(importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName()));
664
    stringBuffer.append(TEXT_152);
665
    stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName()));
666
    stringBuffer.append(TEXT_153);
667
    stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName()));
668
    stringBuffer.append(TEXT_154);
669
    stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName()));
670
    stringBuffer.append(TEXT_155);
671
    stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName()));
672
    stringBuffer.append(TEXT_156);
673
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
674
    stringBuffer.append(TEXT_157);
675
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
676
    stringBuffer.append(TEXT_158);
677
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
678
    stringBuffer.append(TEXT_159);
679
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
680
    stringBuffer.append(TEXT_160);
681
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
682
    stringBuffer.append(TEXT_161);
683
    
684
if (labelModelFacet instanceof FeatureLabelModelFacet) {
685
	GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
686
687
    stringBuffer.append(TEXT_162);
688
    stringBuffer.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName()));
689
    stringBuffer.append(TEXT_163);
690
    stringBuffer.append(feature.getFeatureAccessorName());
691
    stringBuffer.append(TEXT_164);
692
    
693
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
694
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
695
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
696
		GenFeature next = (GenFeature) it.next();
697
698
    stringBuffer.append(TEXT_165);
699
    stringBuffer.append(importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName()));
700
    stringBuffer.append(TEXT_166);
701
    stringBuffer.append(next.getFeatureAccessorName());
702
    stringBuffer.append(TEXT_167);
703
    
704
	}
705
}
706
707
    stringBuffer.append(TEXT_168);
708
    stringBuffer.append(importManager.getImportedName(genHost.getEditPartQualifiedClassName()));
709
    stringBuffer.append(TEXT_169);
710
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
711
    stringBuffer.append(TEXT_170);
712
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
713
    stringBuffer.append(TEXT_171);
714
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
715
    stringBuffer.append(TEXT_172);
716
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
717
    stringBuffer.append(TEXT_173);
718
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
719
    stringBuffer.append(TEXT_174);
720
    
721
if (labelModelFacet instanceof FeatureLabelModelFacet) {
722
	GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
723
724
    stringBuffer.append(TEXT_175);
725
    stringBuffer.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName()));
726
    stringBuffer.append(TEXT_176);
727
    stringBuffer.append(feature.getFeatureAccessorName());
728
    stringBuffer.append(TEXT_177);
729
    
730
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
731
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
732
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
733
		GenFeature next = (GenFeature) it.next();
734
735
    stringBuffer.append(TEXT_178);
736
    stringBuffer.append(importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName()));
737
    stringBuffer.append(TEXT_179);
738
    stringBuffer.append(next.getFeatureAccessorName());
739
    stringBuffer.append(TEXT_180);
740
    
741
	}
742
}
743
744
    stringBuffer.append(TEXT_181);
745
    stringBuffer.append(TEXT_182);
746
    stringBuffer.append(TEXT_183);
747
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
748
    stringBuffer.append(TEXT_184);
749
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
750
    stringBuffer.append(TEXT_185);
751
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
752
    stringBuffer.append(TEXT_186);
753
    
754
String figureQualifiedClassName = null;
755
Viewmap viewmap = genLabel.getViewmap();
756
if (viewmap instanceof FigureViewmap) {
757
	figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName();
758
	if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) {
759
		figureQualifiedClassName = "org.eclipse.draw2d.Label";
760
	}
761
762
    stringBuffer.append(TEXT_187);
763
    stringBuffer.append(importManager.getImportedName(figureQualifiedClassName));
764
    stringBuffer.append(TEXT_188);
765
    } // instanceof FigureViewmap
766
 else if (viewmap instanceof SnippetViewmap) {
767
    stringBuffer.append(TEXT_189);
768
    stringBuffer.append(((SnippetViewmap) viewmap).getBody());
769
    stringBuffer.append(TEXT_190);
770
    } // instanceof SnippetViewmap; FIXME : obtain figure class name to generate getter
771
 else if (viewmap instanceof InnerClassViewmap) {
772
 	figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName();
773
774
    stringBuffer.append(TEXT_191);
775
    stringBuffer.append(figureQualifiedClassName);
776
    stringBuffer.append(TEXT_192);
777
    }
778
    stringBuffer.append(TEXT_193);
779
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
780
    stringBuffer.append(TEXT_194);
781
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
782
    stringBuffer.append(TEXT_195);
783
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Label"));
784
    stringBuffer.append(TEXT_196);
785
    
786
if (genLabel.getViewmap() instanceof InnerClassViewmap) {
787
	String classBody = ((InnerClassViewmap) genLabel.getViewmap()).getClassBody();
788
789
    stringBuffer.append(TEXT_197);
790
    stringBuffer.append(classBody);
791
    stringBuffer.append(TEXT_198);
792
    
793
if (classBody.indexOf("DPtoLP") != -1) {
794
795
    stringBuffer.append(TEXT_199);
796
    
797
}
798
799
    
800
}
801
802
    stringBuffer.append(TEXT_200);
803
    importManager.emitSortedImports();
804
    stringBuffer.append(TEXT_201);
805
    return stringBuffer.toString();
806
  }
807
}
(-)templates/parts/refreshMethods/fontColor.javajetinc (+32 lines)
Added Link Here
1
	/**
2
	 * @generated
3
	 */
4
	protected void refreshFontColor() {
5
		<%=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());
6
		<%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> toDispose = createdFontColor;
7
		if (style != null) {
8
			int fontColor = style.getFontColor();
9
			int red = fontColor & 0x000000FF;
10
			int green = (fontColor & 0x0000FF00) >> 8;
11
			int blue = (fontColor & 0x00FF0000) >> 16;
12
			<%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> currentColor = getLabel().getForegroundColor();
13
			if (currentColor != null && currentColor.getRed() == red && currentColor.getGreen() == green && currentColor.getBlue() == blue) {
14
				return;
15
			}
16
			createdFontColor = new <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%>(null, red, green, blue);
17
			getFigure().setForegroundColor(createdFontColor);
18
		} else {
19
			getFigure().setForegroundColor(getViewer().getControl().getForeground());
20
			createdFontColor = null;
21
		}
22
		if (toDispose != null) {
23
			toDispose.dispose();
24
		}
25
	}
26
27
	/**
28
	 * The color (created by {@link #refreshFontColor()}) currently assigned to the label.
29
	 * Whenever another color is assigned to it, it is safe to dispose the previous one.
30
	 * @generated
31
	 */
32
	private <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> createdFontColor;
(-)templates/copyright4java.jetinc (+8 lines)
Added Link Here
1
<%
2
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
3
if (copyrightText != null && copyrightText.trim().length() > 0) {
4
%>
5
/*
6
 * <%=copyrightText.replaceAll("\n", "\n * ")%>
7
 */
8
<%}%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/ActionBarContributorGenerator.java (+43 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
import org.eclipse.emf.codegen.ecore.genmodel.*;
6
7
public class ActionBarContributorGenerator
8
{
9
  protected static String nl;
10
  public static synchronized ActionBarContributorGenerator create(String lineSeparator)
11
  {
12
    nl = lineSeparator;
13
    ActionBarContributorGenerator result = new ActionBarContributorGenerator();
14
    nl = null;
15
    return result;
16
  }
17
18
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
19
  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 ";
20
  protected final String TEXT_2 = " editor." + NL + " *" + NL + " * @generated" + NL + " */" + NL + "public class ";
21
  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 + "}";
22
  protected final String TEXT_4 = NL;
23
24
  public String generate(Object argument)
25
  {
26
    final StringBuffer stringBuffer = new StringBuffer();
27
    
28
final GenEditorView editorView = (GenEditorView) ((Object[]) argument)[0];
29
final GenModel genModel = editorView.getEditorGen().getDomainGenModel();
30
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
31
32
importManager.emitPackageStatement(stringBuffer);
33
importManager.markImportLocation(stringBuffer);
34
35
    stringBuffer.append(TEXT_1);
36
    stringBuffer.append(genModel.getModelName());
37
    stringBuffer.append(TEXT_2);
38
    stringBuffer.append(editorView.getActionBarContributorClassName());
39
    stringBuffer.append(TEXT_3);
40
    stringBuffer.append(TEXT_4);
41
    return stringBuffer.toString();
42
  }
43
}
(-)src/org/eclipse/gmf/internal/codegen/lite/Activator.java (+42 lines)
Added Link Here
1
/*
2
 * Copyright (c) 2006 Borland Software Corporation
3
 * 
4
 * All rights reserved. This program and the accompanying materials
5
 * are made available under the terms of the Eclipse Public License v1.0
6
 * which accompanies this distribution, and is available at
7
 * http://www.eclipse.org/legal/epl-v10.html
8
 *
9
 * Contributors:
10
 *    Artem Tikhomirov (Borland) - initial API and implementation
11
 */
12
package org.eclipse.gmf.internal.codegen.lite;
13
14
import org.eclipse.core.runtime.Plugin;
15
import org.osgi.framework.Bundle;
16
import org.osgi.framework.BundleContext;
17
18
public class Activator extends Plugin {
19
	private static Activator anInstance;
20
21
	public Activator() {
22
		super();
23
	}
24
25
	public void start(BundleContext context) throws Exception {
26
		super.start(context);
27
		anInstance = this;
28
	}
29
30
	public void stop(BundleContext context) throws Exception {
31
		anInstance = null;
32
		super.stop(context);
33
	}
34
35
	public static String getPluginID() {
36
		return getDefault().getSymbolicName();
37
	}
38
39
	public static Bundle getDefault() {
40
		return anInstance.getBundle();
41
	}
42
}
(-)build.properties (+7 lines)
Added Link Here
1
source.. = src/,\
2
           src-templates/
3
output.. = bin/
4
bin.includes = META-INF/,\
5
               .,\
6
               plugin.properties,\
7
               templates/
(-)templates/parts/linkComponentEditPolicy.javajetinc (+146 lines)
Added Link Here
1
		installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.COMPONENT_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ComponentEditPolicy")%>() {
2
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> createDeleteCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.GroupRequest")%> deleteRequest) {
3
				return new <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%>() {
4
					private final Edge edgeToRemove = getDiagramEdge();
5
					private final View source = edgeToRemove.getSource();
6
					private final View target = edgeToRemove.getTarget();
7
					private final org.eclipse.emf.common.command.Command domainModelRemoveCommand = createDomainModelRemoveCommand();
8
					private org.eclipse.emf.common.command.Command createDomainModelRemoveCommand() {
9
<%
10
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
11
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
12
		GenFeature sourceFeature = modelFacet.getSourceMetaFeature();
13
		GenFeature containmentFeature = modelFacet.getContainmentMetaFeature();
14
		GenFeature childFeature = modelFacet.getChildMetaFeature();
15
		GenFeature targetFeature = modelFacet.getTargetMetaFeature();
16
		//See creation of links in NodeEditPart
17
18
		boolean removeSource = sourceFeature != null;
19
		boolean removeTarget = targetFeature != null;
20
		boolean removeChild = childFeature != null && childFeature != containmentFeature && !childFeature.isDerived();
21
		if (containmentFeature != null) {
22
			if (sourceFeature != null && sourceFeature.getEcoreFeature() instanceof EReference == true) {
23
				EReference sourceEcoreFeature = (EReference)sourceFeature.getEcoreFeature();
24
				if (sourceEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) {
25
					removeSource = false;
26
				}
27
			}
28
			if (targetFeature != null && targetFeature.getEcoreFeature() instanceof EReference == true) {
29
				EReference targetEcoreFeature = (EReference)targetFeature.getEcoreFeature();
30
				if (targetEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) {
31
					removeTarget = false;
32
				}
33
			}
34
%>
35
						<%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%> result = new <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%>();
36
<%
37
			if (containmentFeature.getEcoreFeature().isMany()) {
38
%>
39
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(
40
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()),
41
							edgeToRemove.getElement().eContainer(), edgeToRemove.getElement().eContainmentFeature(), edgeToRemove.getElement()));
42
<%
43
			} else {
44
%>
45
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(
46
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()),
47
							edgeToRemove.getElement().eContainer(), edgeToRemove.getElement().eContainmentFeature(), <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE));
48
<%
49
			}
50
		} else {
51
%>
52
			return <%=importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")%>.INSTANCE;
53
<%
54
		}
55
		if (removeChild) {
56
			if (childFeature.getEcoreFeature().isMany()) {
57
%>
58
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(
59
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()),
60
							edgeToRemove.getElement().eContainer(), <%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(),
61
							edgeToRemove.getElement()));
62
<%
63
			} else {
64
%>
65
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(
66
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()),
67
							edgeToRemove.getElement().eContainer(), <%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(),
68
							<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE));
69
<%
70
			}
71
		}
72
		if (removeSource) {
73
			if (sourceFeature.getEcoreFeature().isMany()) {
74
%>
75
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(
76
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()),
77
							edgeToRemove.getElement(), <%=importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=sourceFeature.getFeatureAccessorName()%>(), source.getElement()));
78
<%
79
			} else {
80
%>
81
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(
82
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()),
83
							edgeToRemove.getElement(), <%=importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=sourceFeature.getFeatureAccessorName()%>(), <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE));
84
<%
85
			}
86
		}
87
		if (removeTarget) {
88
			if (targetFeature.getEcoreFeature().isMany()) {
89
%>
90
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(
91
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()),
92
							edgeToRemove.getElement(), <%=importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=targetFeature.getFeatureAccessorName()%>(), target.getElement()));
93
<%
94
			} else {
95
%>
96
						result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(
97
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()),
98
							edgeToRemove.getElement(), <%=importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=targetFeature.getFeatureAccessorName()%>(), <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE));
99
<%
100
			}
101
		}
102
%>
103
						return result;
104
<%
105
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
106
		GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature();
107
		if (metaFeature.getEcoreFeature().isMany()) {
108
%>
109
						return <%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(
110
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()),
111
							source.getElement(), <%=importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=metaFeature.getFeatureAccessorName()%>(), target.getElement());
112
<%
113
		} else {
114
%>
115
						return <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(
116
							<%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(edgeToRemove.getDiagram().getElement()),
117
							source.getElement(), <%=importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=metaFeature.getFeatureAccessorName()%>(), <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.UNSET_VALUE);
118
<%
119
		}
120
%>
121
<%
122
	}
123
%>
124
					}
125
126
					public boolean canExecute() {
127
						return domainModelRemoveCommand != null && domainModelRemoveCommand.canExecute();
128
					}
129
					public void execute() {
130
						domainModelRemoveCommand.execute();
131
						source.getDiagram().removeEdge(edgeToRemove);
132
						edgeToRemove.setSource(null);
133
						edgeToRemove.setTarget(null);
134
					}
135
					public boolean canUndo() {
136
						return domainModelRemoveCommand != null && domainModelRemoveCommand.canUndo();
137
					}
138
					public void undo() {
139
						domainModelRemoveCommand.undo();
140
						source.getDiagram().insertEdge(edgeToRemove);
141
						edgeToRemove.setSource(source);
142
						edgeToRemove.setTarget(target);
143
					}
144
				};
145
			}
146
		});
(-)templates/parts/labelText.javajetinc (+127 lines)
Added Link Here
1
<%
2
/*genFeature.getObjectType() throws NPE on primitive types. This is a workaround. */
3
HashMap primitiveTypeToWrapperClassName = new HashMap();
4
primitiveTypeToWrapperClassName.put(Boolean.TYPE, "Boolean");
5
primitiveTypeToWrapperClassName.put(Byte.TYPE, "Byte");
6
primitiveTypeToWrapperClassName.put(Character.TYPE, "Character");
7
primitiveTypeToWrapperClassName.put(Double.TYPE, "Double");
8
primitiveTypeToWrapperClassName.put(Float.TYPE, "Float");
9
primitiveTypeToWrapperClassName.put(Integer.TYPE, "Integer");
10
primitiveTypeToWrapperClassName.put(Long.TYPE, "Long");
11
primitiveTypeToWrapperClassName.put(Short.TYPE, "Short");
12
String viewPattern = null;
13
String editPattern = null;
14
if (labelModelFacet instanceof FeatureLabelModelFacet) {
15
	FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet;
16
	viewPattern = featureLabelModelFacet.getViewPattern();
17
	if (viewPattern == null || viewPattern.length() == 0) {
18
		viewPattern = "{0}";
19
	}
20
	editPattern = featureLabelModelFacet.getEditPattern();
21
	if (editPattern == null || editPattern.length() == 0) {
22
		editPattern = "{0}";
23
	}
24
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
25
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
26
	viewPattern = compositeFeatureLabelModelFacet.getViewPattern();
27
	if (viewPattern == null || viewPattern.length() == 0) {
28
		StringBuffer patternBuffer = new StringBuffer();
29
		for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) {
30
			patternBuffer.append("{").append(i).append("} ");
31
		}
32
		viewPattern = patternBuffer.toString().trim();
33
	}
34
	editPattern = compositeFeatureLabelModelFacet.getEditPattern();
35
	if (editPattern == null || editPattern.length() == 0) {
36
		StringBuffer patternBuffer = new StringBuffer();
37
		for(int i = 0; i < compositeFeatureLabelModelFacet.getMetaFeatures().size(); i++) {
38
			patternBuffer.append("{").append(i).append("} ");
39
		}
40
		editPattern = patternBuffer.toString().trim();
41
	}
42
}
43
%>
44
	/**
45
	 * @generated
46
	 */
47
	private static final String VIEW_PATTERN = "<%=viewPattern%>";
48
49
	/**
50
	 * @generated
51
	 */
52
	private static final String EDIT_PATTERN = "<%=editPattern%>";
53
54
	/**
55
	 * @generated
56
	 */
57
	protected String getLabelText() {
58
		<%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> element = <%=resolvedSemanticElement%>;
59
		if (element == null) {
60
			return defaultText;
61
		}
62
		return buildTextByPattern(element, VIEW_PATTERN);
63
	}
64
65
	/**
66
	 * @generated
67
	 */
68
	protected String getLabelEditText() {
69
		<%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> element = <%=resolvedSemanticElement%>;
70
		if (element == null) {
71
			return defaultText;
72
		}
73
		return buildTextByPattern(element, EDIT_PATTERN);
74
	}
75
76
	/**
77
	 * @generated
78
	 */
79
	protected String buildTextByPattern(<%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> element, String pattern) {
80
<%
81
if (labelModelFacet instanceof FeatureLabelModelFacet) {
82
	FeatureLabelModelFacet featureLabelModelFacet = (FeatureLabelModelFacet) labelModelFacet;
83
	GenFeature feature = featureLabelModelFacet.getMetaFeature();
84
	if (!feature.isPrimitiveType()) {
85
%>
86
		if (element.get<%=feature.getCapName()%>() == null) {
87
			return defaultText;
88
		}
89
<%
90
	}
91
%>
92
		return <%=importManager.getImportedName("java.text.MessageFormat")%>.format(pattern, new Object[] {
93
<%
94
		String value = "element.get" + feature.getCapName() + "()";	/*XXX: getTypedKey is not a part of public API!*/
95
		if (feature.isPrimitiveType()) {
96
			value = "new " + primitiveTypeToWrapperClassName.get(feature.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")";
97
		}
98
%>
99
			<%=value%>
100
		});
101
<%
102
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
103
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
104
%>
105
		return <%=importManager.getImportedName("java.text.MessageFormat")%>.format(pattern, new Object[] {
106
<%
107
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
108
		GenFeature next = (GenFeature) it.next();
109
		String value = "element.get" + next.getCapName() + "()";	/*XXX: getTypedKey is not a part of public API!*/
110
		if (next.isPrimitiveType()) {
111
			value = "new " + primitiveTypeToWrapperClassName.get(next.getTypeGenClassifier().getEcoreClassifier().getInstanceClass()) + "(" + value + ")";
112
		}
113
%>
114
		<%=value%><%if (it.hasNext()) {%>,<%}%>
115
<%
116
	}
117
%>
118
		});
119
<%
120
} else {
121
%>
122
		//XXX: unexpected model facet.
123
		return defaultText;
124
<%
125
}
126
%>
127
	}
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/parts/UpdatableEditPartGenerator.java (+35 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.parts;
2
3
import org.eclipse.gmf.common.codegen.*;
4
5
public class UpdatableEditPartGenerator
6
{
7
  protected static String nl;
8
  public static synchronized UpdatableEditPartGenerator create(String lineSeparator)
9
  {
10
    nl = lineSeparator;
11
    UpdatableEditPartGenerator result = new UpdatableEditPartGenerator();
12
    nl = null;
13
    return result;
14
  }
15
16
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
17
  protected final String TEXT_1 = "";
18
  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/*<Refresher>*/ refreshers = new ArrayList();" + NL + "\t}" + NL + "}";
19
  protected final String TEXT_3 = NL;
20
21
  public String generate(Object argument)
22
  {
23
    final StringBuffer stringBuffer = new StringBuffer();
24
    
25
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
26
27
    stringBuffer.append(TEXT_1);
28
    
29
importManager.emitPackageStatement(stringBuffer);
30
31
    stringBuffer.append(TEXT_2);
32
    stringBuffer.append(TEXT_3);
33
    return stringBuffer.toString();
34
  }
35
}
(-)templates/parts/createNodeCommand.javajetinc (+115 lines)
Added Link Here
1
	/**
2
	 * @generated
3
	 */
4
	private <%if (isStatic) {%>static <%}%>class Create<%=next.getDomainMetaClass().getName()%><%=next.getVisualID()%>Command extends <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> {
5
		/**
6
		 * @generated
7
		 */
8
		private final <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> parent;
9
10
		/**
11
		 * @generated
12
		 */
13
		private <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> createdNode;
14
		/**
15
		 * @generated
16
		 */
17
		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<%}%>) {
18
			this.parent = parent;
19
			createdNode = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createNode();
20
<%
21
if (next.getDomainMetaClass().isMapEntry()) {
22
/*Workaround for Ecore example: map entries cannot be created using factory, only using reflective EFactory.create() method*/
23
%>
24
			<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> createdDomainElement = <%=importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName())%>.eINSTANCE.create(
25
				<%=importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getDomainMetaClass().getClassifierAccessorName()%>());
26
<%
27
} else {
28
%>
29
			<%=importManager.getImportedName(next.getDomainMetaClass().getQualifiedInterfaceName())%> createdDomainElement = <%=importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName())%>.eINSTANCE.create<%=next.getDomainMetaClass().getClassifierAccessorName()%>();
30
<%
31
}
32
%>			createdNode.setElement(createdDomainElement);
33
			<%/*XXX: Class name DomainElementInitializer should be user-customizable*/%>
34
			<%=importManager.getImportedName(genDiagram.getNotationViewFactoriesPackageName() + ".DomainElementInitializer")%>.<%=next.getUniqueIdentifier()%>.initializeElement(createdDomainElement);
35
			<%=importManager.getImportedName(next.getNotationViewFactoryQualifiedClassName())%>.decorateView(createdNode);
36
<%
37
	if (!isListLayout) {
38
%>
39
			<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%> bounds = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createBounds();
40
			createdNode.setLayoutConstraint(bounds);
41
			bounds.setX(constraint.x);
42
			bounds.setY(constraint.y);
43
<%
44
		int defaultWidth = 40;
45
		int defaultHeight = 40;
46
		DefaultSizeAttributes defSizeAttrs = (DefaultSizeAttributes) next.getViewmap().find(DefaultSizeAttributes.class);
47
		if (defSizeAttrs != null) {
48
			defaultWidth = defSizeAttrs.getWidth();
49
			defaultHeight = defSizeAttrs.getHeight();
50
		}
51
%>
52
			bounds.setWidth(Math.max(constraint.width, <%=defaultWidth%>));
53
			bounds.setHeight(Math.max(constraint.height, <%=defaultHeight%>));
54
<%
55
	}
56
%>
57
			<%=importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")%> domainModelEditDomain = <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(parent.getDiagram().getElement());
58
<%
59
	TypeModelFacet facet = next.getModelFacet();
60
	GenFeature childFeature = facet.getChildMetaFeature();
61
	GenFeature containmentFeature = facet.getContainmentMetaFeature();
62
	if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) {
63
%>
64
			<%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%> compoundCommand = new <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%>();
65
			compoundCommand.append(<%=importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, <%=resolvedSemanticElement%>, 
66
				<%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(), createdNode.getElement()));
67
			compoundCommand.append(<%=importManager.getImportedName(childFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, <%=resolvedSemanticElement%>, 
68
				<%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(), createdNode.getElement()));
69
			this.domainModelAddCommand = compoundCommand;
70
<%
71
	} else {
72
%>
73
			this.domainModelAddCommand = <%=importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, <%=resolvedSemanticElement%>, 
74
				<%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(), createdNode.getElement());
75
<%
76
	}
77
%>
78
			request.setCreatedObject(createdNode);
79
		}
80
81
		/**
82
		 * @generated
83
		 */
84
		private final org.eclipse.emf.common.command.Command domainModelAddCommand;
85
86
		/**
87
		 * @generated
88
		 */
89
		public boolean canExecute() {
90
			return domainModelAddCommand != null && domainModelAddCommand.canExecute();
91
		}
92
93
		/**
94
		 * @generated
95
		 */
96
		public boolean canUndo() {
97
			return domainModelAddCommand != null && domainModelAddCommand.canUndo();
98
		}
99
100
		/**
101
		 * @generated
102
		 */
103
		public void execute() {
104
			parent.insertChild(createdNode);
105
			domainModelAddCommand.execute();
106
		}
107
108
		/**
109
		 * @generated
110
		 */
111
		public void undo() {
112
			parent.getPersistedChildren().remove(createdNode);
113
			domainModelAddCommand.undo();
114
		}
115
	}
(-)templates/copyright4xml.jetinc (+8 lines)
Added Link Here
1
<%
2
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
3
if (copyrightText != null && copyrightText.trim().length() > 0) {
4
%>
5
<!--
6
<%=copyrightText%>
7
-->
8
<%}%>
(-)templates/parts/refreshers.javajetinc/domainModelRefresher.javajetinc (+23 lines)
Added Link Here
1
	/**
2
	 * @generated
3
	 */
4
	private DomainModelRefresher domainModelRefresher = new DomainModelRefresher();
5
6
	/**
7
	 * @generated
8
	 */
9
	private class DomainModelRefresher extends <%=importManager.getImportedName("org.eclipse.emf.common.notify.impl.AdapterImpl")%> {
10
		/**
11
		 * @generated
12
		 */
13
		public void notifyChanged(<%=importManager.getImportedName("org.eclipse.emf.common.notify.Notification")%> msg) {
14
			super.notifyChanged(msg);
15
			if (msg.isTouch()) {
16
				return;
17
			}
18
			Refresher refresher = getRefresher((<%=importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature")%>) msg.getFeature(), msg);
19
			if (refresher != null) {
20
				refresher.refresh();
21
			}
22
		}
23
	}
(-)templates/editor/Plugin.javajet (+208 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="PluginGenerator"
2
    imports="org.eclipse.emf.common.util.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
final GenPlugin genPlugin = (GenPlugin) ((Object[]) argument)[0];
5
final EList genPackages = genPlugin.getEditorGen().getAllDomainGenPackages(true);
6
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
8
importManager.emitPackageStatement(stringBuffer);%>
9
10
import java.util.ArrayList;
11
import java.util.List;
12
13
import org.eclipse.core.runtime.IStatus;
14
import org.eclipse.core.runtime.Status;
15
16
import org.eclipse.emf.common.notify.AdapterFactory;
17
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
18
import org.eclipse.emf.edit.provider.IItemLabelProvider;
19
import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
20
import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
21
import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
22
import org.eclipse.jface.resource.ImageDescriptor;
23
import org.eclipse.swt.graphics.Image;
24
import org.eclipse.ui.plugin.AbstractUIPlugin;
25
import org.osgi.framework.BundleContext;
26
<%importManager.markImportLocation(stringBuffer);%>
27
28
/**
29
 * @generated
30
 */
31
public class <%=genPlugin.getActivatorClassName()%> extends AbstractUIPlugin {
32
33
	/**
34
	 * @generated
35
	 */
36
	public static final String ID = "<%=genPlugin.getID()%>"; //$NON-NLS-1$
37
38
	/**
39
	 * @generated
40
	 */
41
	private static <%=genPlugin.getActivatorClassName()%> instance;
42
43
	/**
44
	 * @generated
45
	 */
46
	private ComposedAdapterFactory adapterFactory;
47
48
	/**
49
	 * @generated
50
	 */
51
	public <%=genPlugin.getActivatorClassName()%>() {
52
	}
53
54
	/**
55
	 * @generated
56
	 */
57
	public void start(BundleContext context) throws Exception {
58
		super.start(context);
59
		instance = this;
60
		adapterFactory = createAdapterFactory();
61
	}
62
63
	/**
64
	 * @generated
65
	 */
66
	public void stop(BundleContext context) throws Exception {
67
		adapterFactory.dispose();
68
		adapterFactory = null;
69
		instance = null;
70
		super.stop(context);
71
	}
72
73
	/**
74
	 * @generated
75
	 */
76
	public static <%=genPlugin.getActivatorClassName()%> getInstance() {
77
		return instance;
78
	}
79
80
	/**
81
	 * @generated
82
	 */
83
	protected ComposedAdapterFactory createAdapterFactory() {
84
		List factories = new ArrayList();
85
		fillItemProviderFactories(factories);
86
		return new ComposedAdapterFactory(factories);
87
	}
88
89
	/**
90
	 * @generated
91
	 */
92
	protected void fillItemProviderFactories(List factories) {
93
<%
94
for (int i = 0; i < genPackages.size(); i++) {
95
	GenPackage genPackage = (GenPackage) genPackages.get(i);
96
%>
97
		factories.add(new <%=importManager.getImportedName(genPackage.getQualifiedItemProviderAdapterFactoryClassName())%>());
98
<%}%>
99
		factories.add(new ResourceItemProviderAdapterFactory());
100
		factories.add(new ReflectiveItemProviderAdapterFactory());
101
	}
102
	
103
	/**
104
	 * @generated
105
	 */
106
	public AdapterFactory getItemProvidersAdapterFactory() {
107
		return adapterFactory;
108
	}
109
110
	/**
111
	 * @generated
112
	 */
113
	public ImageDescriptor getItemImageDescriptor(Object item) {
114
		IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(item, IItemLabelProvider.class);
115
		if (labelProvider != null) {
116
<%
117
			// XXX dependency org.eclipse.emf.edit.ui is for ExtendedImageRegistry only. 
118
			// FIXME move image registry to plugin class code
119
%>
120
			return ExtendedImageRegistry.getInstance().getImageDescriptor(labelProvider.getImage(item));
121
		}
122
		return null;
123
	}
124
125
	/**
126
	 * Returns an image descriptor for the image file at the given
127
	 * plug-in relative path.
128
	 *
129
	 * @generated
130
	 * @param path the path
131
	 * @return the image descriptor
132
	 */
133
	public static ImageDescriptor getBundledImageDescriptor(String path) {
134
		return AbstractUIPlugin.imageDescriptorFromPlugin(ID, path);
135
	}
136
	
137
	/**
138
	 * Returns an image for the image file at the given plug-in relative path.
139
	 * Client do not need to dispose this image. Images will be disposed automatically.
140
	 *
141
	 * @generated
142
	 * @param path the path
143
	 * @return image instance
144
	 */
145
	public Image getBundledImage(String path) {
146
		Image image = getImageRegistry().get(path);
147
		if (image == null) {
148
			getImageRegistry().put(path, getBundledImageDescriptor(path));
149
			image = getImageRegistry().get(path);
150
		}
151
		return image;
152
	}
153
	
154
	/**
155
	 * @generated
156
	 */
157
	public void logError(String error) {
158
		logError(error, null);
159
	}
160
161
	/**
162
	 * @param throwable actual error or null could be passed
163
	 * @generated
164
	 */
165
	public void logError(String error, Throwable throwable) {
166
		if (error == null && throwable != null) {
167
			error = throwable.getMessage();
168
		}
169
		getLog().log(new Status(IStatus.ERROR, <%=genPlugin.getActivatorClassName()%>.ID, IStatus.OK, error, throwable));
170
		debug(error, throwable);
171
	}
172
	
173
	/**
174
	 * @generated
175
	 */
176
	public void logInfo(String message) {
177
		logInfo(message, null);
178
	}
179
180
	/**
181
	 * @param throwable actual error or null could be passed
182
	 * @generated
183
	 */
184
	public void logInfo(String message, Throwable throwable) {
185
		if (message == null && message != null) {
186
			message = throwable.getMessage();
187
		}
188
		getLog().log(new Status(IStatus.INFO, <%=genPlugin.getActivatorClassName()%>.ID, IStatus.OK, message, throwable));
189
		debug(message, throwable);
190
	}
191
	
192
	/**
193
	 * @generated
194
	 */
195
	private void debug(String message, Throwable throwable) {
196
		if (!isDebugging()) {
197
			return;
198
		}
199
		if (message != null) {
200
			System.err.println(message);
201
		}
202
		if (throwable != null) {
203
			throwable.printStackTrace();
204
		}
205
	}
206
	
207
}
208
<%importManager.emitSortedImports();%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/CreationWizardPageGenerator.java (+192 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
6
public class CreationWizardPageGenerator
7
{
8
  protected static String nl;
9
  public static synchronized CreationWizardPageGenerator create(String lineSeparator)
10
  {
11
    nl = lineSeparator;
12
    CreationWizardPageGenerator result = new CreationWizardPageGenerator();
13
    nl = null;
14
    return result;
15
  }
16
17
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
18
  protected final String TEXT_1 = NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
19
  protected final String TEXT_2 = " extends ";
20
  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 ";
21
  protected final String TEXT_4 = "() {" + NL + "\t\tsuper(\"CreationWizardPage\"); //$NON-NLS-1$" + NL + "\t\tsetTitle(\"Create ";
22
  protected final String TEXT_5 = " Diagram\"); //$NON-NLS-1$" + NL + "\t\tsetDescription(\"Create a new ";
23
  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 ";
24
  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";
25
  protected final String TEXT_8 = " resourceURIBrowseFileSystemButton = new ";
26
  protected final String TEXT_9 = "(fileComposite, SWT.PUSH);" + NL + "\t\tresourceURIBrowseFileSystemButton.setText(\"&Browse\");" + NL + "  " + NL + "\t\tresourceURIBrowseFileSystemButton.addSelectionListener" + NL + "\t\t\t(new ";
27
  protected final String TEXT_10 = "() {" + NL + "\t\t\t\t public void widgetSelected(";
28
  protected final String TEXT_11 = " event) {" + NL + "\t\t\t\t\t String fileExtension = \"";
29
  protected final String TEXT_12 = "\";" + NL + "\t\t\t\t\t String filePath = ";
30
  protected final String TEXT_13 = ".openFilePathDialog(getShell(), \"*.\" + fileExtension, ";
31
  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 = \"";
32
  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}";
33
  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}";
34
  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;
35
  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(\"";
36
  protected final String TEXT_19 = "\");" + NL + "\t}";
37
  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";
38
  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 (";
39
  protected final String TEXT_22 = " e) {" + NL + "\t\t\tif (e.getTargetException() instanceof CoreException) {" + NL + "\t\t\t\t";
40
  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";
41
  protected final String TEXT_24 = ".getInstance().getLog().log(new ";
42
  protected final String TEXT_25 = "(";
43
  protected final String TEXT_26 = ".ERROR, ";
44
  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 <code>IProgressMonitor</code> 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";
45
  protected final String TEXT_28 = " resourceSet = new ";
46
  protected final String TEXT_29 = "();" + NL + "\t\tfinal ";
47
  protected final String TEXT_30 = " diagramResource = resourceSet.createResource(getDiagramFileURI());";
48
  protected final String TEXT_31 = NL + "\t\tfinal Resource modelResource = resourceSet.createResource(getModelFileURI());";
49
  protected final String TEXT_32 = NL + NL + "\t\tif (diagramResource != null";
50
  protected final String TEXT_33 = " && modelResource != null";
51
  protected final String TEXT_34 = ") {" + NL + "\t\t\t//TODO: Editing domain!" + NL + "\t\t\t";
52
  protected final String TEXT_35 = " model = ";
53
  protected final String TEXT_36 = ".eINSTANCE.create";
54
  protected final String TEXT_37 = "();";
55
  protected final String TEXT_38 = NL + "\t\t\tmodelResource.getContents().add(model);" + NL + "\t\t\ttry {" + NL + "\t\t\t\tmodelResource.save(";
56
  protected final String TEXT_39 = ".EMPTY_MAP);" + NL + "\t\t\t} catch (IOException e) {" + NL + "\t\t\t\thandleSaveException(e);" + NL + "\t\t\t}";
57
  protected final String TEXT_40 = NL + "\t\t\tdiagramResource.getContents().add(model);";
58
  protected final String TEXT_41 = NL + "\t\t\t";
59
  protected final String TEXT_42 = " diagram = ";
60
  protected final String TEXT_43 = ".eINSTANCE.createDiagram();" + NL + "\t\t\tdiagram.setElement(model);" + NL + "\t\t\t";
61
  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 = ";
62
  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 + "}";
63
  protected final String TEXT_46 = NL;
64
65
  public String generate(Object argument)
66
  {
67
    final StringBuffer stringBuffer = new StringBuffer();
68
    
69
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
70
final GenEditorGenerator editorGen = genDiagram.getEditorGen();
71
final GenPlugin genPlugin = editorGen.getPlugin();
72
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
73
74
importManager.emitPackageStatement(stringBuffer);
75
importManager.markImportLocation(stringBuffer);
76
77
importManager.addImport("java.io.File");
78
importManager.addImport("org.eclipse.core.runtime.IProgressMonitor");
79
importManager.addImport("org.eclipse.core.runtime.CoreException");
80
importManager.addImport("java.io.IOException");
81
importManager.addImport("org.eclipse.swt.widgets.Text");
82
importManager.addImport("org.eclipse.emf.common.util.URI");
83
importManager.addImport("org.eclipse.swt.widgets.Composite");
84
importManager.addImport("org.eclipse.swt.widgets.Label");
85
importManager.addImport("org.eclipse.swt.events.ModifyListener");
86
importManager.addImport("org.eclipse.swt.events.ModifyEvent");
87
importManager.addImport("org.eclipse.swt.layout.GridLayout");
88
importManager.addImport("org.eclipse.swt.layout.GridData");
89
90
    stringBuffer.append(TEXT_1);
91
    stringBuffer.append(genDiagram.getCreationWizardPageClassName());
92
    stringBuffer.append(TEXT_2);
93
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.wizard.WizardPage"));
94
    stringBuffer.append(TEXT_3);
95
    stringBuffer.append(genDiagram.getCreationWizardPageClassName());
96
    stringBuffer.append(TEXT_4);
97
    stringBuffer.append(editorGen.getDomainGenModel().getModelName());
98
    stringBuffer.append(TEXT_5);
99
    stringBuffer.append(editorGen.getDomainGenModel().getModelName());
100
    stringBuffer.append(TEXT_6);
101
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.widgets.Text"));
102
    stringBuffer.append(TEXT_7);
103
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.widgets.Button"));
104
    stringBuffer.append(TEXT_8);
105
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.widgets.Button"));
106
    stringBuffer.append(TEXT_9);
107
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.events.SelectionAdapter"));
108
    stringBuffer.append(TEXT_10);
109
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.events.SelectionEvent"));
110
    stringBuffer.append(TEXT_11);
111
    stringBuffer.append(editorGen.getDiagramFileExtension());
112
    stringBuffer.append(TEXT_12);
113
    stringBuffer.append(genDiagram.getDiagramEditorUtilClassName());
114
    stringBuffer.append(TEXT_13);
115
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
116
    stringBuffer.append(TEXT_14);
117
    stringBuffer.append(editorGen.getDiagramFileExtension());
118
    stringBuffer.append(TEXT_15);
119
    if (!editorGen.isSameFileForDiagramAndModel()) {
120
    stringBuffer.append(TEXT_16);
121
    }
122
    stringBuffer.append(TEXT_17);
123
    if (!editorGen.isSameFileForDiagramAndModel()) {
124
    stringBuffer.append(TEXT_18);
125
    stringBuffer.append(editorGen.getDomainFileExtension());
126
    stringBuffer.append(TEXT_19);
127
    }
128
    stringBuffer.append(TEXT_20);
129
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.operation.IRunnableWithProgress"));
130
    stringBuffer.append(TEXT_21);
131
    stringBuffer.append(importManager.getImportedName("java.lang.reflect.InvocationTargetException"));
132
    stringBuffer.append(TEXT_22);
133
    stringBuffer.append(importManager.getImportedName("org.eclipse.jface.dialogs.ErrorDialog"));
134
    stringBuffer.append(TEXT_23);
135
    stringBuffer.append(genPlugin.getActivatorClassName());
136
    stringBuffer.append(TEXT_24);
137
    stringBuffer.append(importManager.getImportedName("org.eclipse.core.runtime.Status"));
138
    stringBuffer.append(TEXT_25);
139
    stringBuffer.append(importManager.getImportedName("org.eclipse.core.runtime.IStatus"));
140
    stringBuffer.append(TEXT_26);
141
    stringBuffer.append(genPlugin.getActivatorClassName());
142
    stringBuffer.append(TEXT_27);
143
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.resource.ResourceSet"));
144
    stringBuffer.append(TEXT_28);
145
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.resource.impl.ResourceSetImpl"));
146
    stringBuffer.append(TEXT_29);
147
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.resource.Resource"));
148
    stringBuffer.append(TEXT_30);
149
    
150
final boolean standaloneDomainModel = !editorGen.isSameFileForDiagramAndModel() && genDiagram.getDomainDiagramElement() != null;
151
if (standaloneDomainModel) {
152
153
    stringBuffer.append(TEXT_31);
154
    }
155
    stringBuffer.append(TEXT_32);
156
    if (standaloneDomainModel) {
157
    stringBuffer.append(TEXT_33);
158
    }
159
    stringBuffer.append(TEXT_34);
160
    stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName()));
161
    stringBuffer.append(TEXT_35);
162
    stringBuffer.append(importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryClassName()));
163
    stringBuffer.append(TEXT_36);
164
    stringBuffer.append(genDiagram.getDomainDiagramElement().getClassifierAccessorName());
165
    stringBuffer.append(TEXT_37);
166
    
167
if (standaloneDomainModel) {
168
169
    stringBuffer.append(TEXT_38);
170
    stringBuffer.append(importManager.getImportedName("java.util.Collections"));
171
    stringBuffer.append(TEXT_39);
172
    
173
} else {
174
175
    stringBuffer.append(TEXT_40);
176
    
177
}
178
179
    stringBuffer.append(TEXT_41);
180
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram"));
181
    stringBuffer.append(TEXT_42);
182
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
183
    stringBuffer.append(TEXT_43);
184
    stringBuffer.append(importManager.getImportedName(genDiagram.getNotationViewFactoryQualifiedClassName()));
185
    stringBuffer.append(TEXT_44);
186
    stringBuffer.append(genDiagram.getDiagramEditorUtilClassName());
187
    stringBuffer.append(TEXT_45);
188
    importManager.emitSortedImports();
189
    stringBuffer.append(TEXT_46);
190
    return stringBuffer.toString();
191
  }
192
}
(-)templates/parts/refreshMethods/shapeColor.javajetinc (+64 lines)
Added Link Here
1
	/**
2
	 * @generated
3
	 */
4
	protected void refreshForegroundColor() {
5
		<%=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());
6
		<%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> toDispose = createdForegroundColor;
7
		if (style != null) {
8
			int foregroundColor = style.getLineColor();
9
			int red = foregroundColor & 0x000000FF;
10
			int green = (foregroundColor & 0x0000FF00) >> 8;
11
			int blue = (foregroundColor & 0x00FF0000) >> 16;
12
			<%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> currentColor = getFigure().getForegroundColor();
13
			if (currentColor != null && currentColor.getRed() == red && currentColor.getGreen() == green && currentColor.getBlue() == blue) {
14
				return;
15
			}
16
			createdForegroundColor = new <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%>(null, red, green, blue);
17
			getFigure().setForegroundColor(createdForegroundColor);
18
		} else {
19
			getFigure().setForegroundColor(getViewer().getControl().getForeground());
20
			createdForegroundColor = null;
21
		}
22
		if (toDispose != null) {
23
			toDispose.dispose();
24
		}
25
	}
26
27
	/**
28
	 * The color (created by {@link #refreshForegroundColor()}) currently assigned to the figure.
29
	 * Whenever another color is assigned to it, it is safe to dispose the previous one.
30
	 * @generated
31
	 */
32
	private <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> createdForegroundColor;
33
34
	/**
35
	 * @generated
36
	 */
37
	protected void refreshBackgroundColor() {
38
		<%=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());
39
		<%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> toDispose = createdBackgroundColor;
40
		if (style != null) {
41
			int backgroundColor = style.getFillColor();
42
			int red = backgroundColor & 0x000000FF;
43
			int green = (backgroundColor & 0x0000FF00) >> 8;
44
			int blue = (backgroundColor & 0x00FF0000) >> 16;
45
			<%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> currentColor = getFigure().getBackgroundColor();
46
			if (currentColor != null && currentColor.getRed() == red && currentColor.getGreen() == green && currentColor.getBlue() == blue) {
47
				return;
48
			}
49
			createdBackgroundColor = new <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%>(null, red, green, blue);
50
			getFigure().setBackgroundColor(createdBackgroundColor);
51
		} else {
52
			getFigure().setBackgroundColor(getViewer().getControl().getBackground());
53
		}
54
		if (toDispose != null) {
55
			toDispose.dispose();
56
		}
57
	}
58
59
	/**
60
	 * The color (created by {@link #refreshBackgroundColor()}) currently assigned to the figure.
61
	 * Whenever another color is assigned to it, it is safe to dispose the previous one.
62
	 * @generated
63
	 */
64
	private <%=importManager.getImportedName("org.eclipse.swt.graphics.Color")%> createdBackgroundColor;
(-)templates/parts/ChildNodeEditPart.javajet (+190 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="ChildNodeEditPartGenerator"
2
	imports="java.util.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.emf.ecore.*"%>
3
<%
4
GenNode genChildNode = (GenNode) ((Object[]) argument)[0];
5
GenNodeLabel genLabel = (GenNodeLabel) genChildNode.getLabels().get(0);
6
GenNode genHost = genChildNode;
7
GenNode genNode = genChildNode;	/*var used by componentEditPolicy.javajetinc*/
8
GenClass underlyingMetaClass = genHost.getDomainMetaClass();
9
GenDiagram genDiagram = genChildNode.getDiagram();
10
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
11
LabelModelFacet labelModelFacet = genLabel.getModelFacet();
12
%>
13
<%@ include file="../copyright4java.jetinc"%>
14
15
<%importManager.emitPackageStatement(stringBuffer);
16
17
importManager.addImport("org.eclipse.gef.EditPolicy");
18
importManager.addImport("org.eclipse.gef.Request");
19
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
20
importManager.addImport("org.eclipse.gmf.runtime.notation.NotationPackage");
21
importManager.addImport("java.util.List");
22
23
importManager.markImportLocation(stringBuffer);
24
%>
25
26
/**
27
 * @generated
28
 */
29
public class <%=genChildNode.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")%> implements IUpdatableEditPart {
30
<%@ include file="textAwareFields.jetinc"%>
31
32
	/**
33
	 * @generated
34
	 */
35
	public <%=genChildNode.getEditPartClassName()%>(View view) {
36
		setModel(view);
37
	}
38
39
	/**
40
	 * @generated
41
	 */
42
	public <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> getDiagramNode() {
43
		return (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>) getModel();
44
	}
45
46
	/**
47
	 * @generated
48
	 */
49
	protected void createEditPolicies() {
50
		//XXX: install correct edit policies!
51
<%
52
	String resolvedSemanticElement = "(" + importManager.getImportedName(genHost.getDomainMetaClass().getQualifiedInterfaceName()) + ") getDiagramNode().getElement()";
53
	final String primaryView = "getDiagramNode()";
54
%>
55
<%@ include file="directEditPolicy.javajetinc"%>
56
<%@ include file="componentEditPolicy.javajetinc"%>
57
	}
58
59
<%@ include file="directEdit.javajetinc"%>
60
61
	/**
62
	 * @generated
63
	 */
64
	protected List getModelChildren() {
65
		return ((View)getModel()).getVisibleChildren();
66
	}
67
68
	/**
69
	 * @generated
70
	 */
71
	protected List getModelSourceConnections() {
72
		return ((View)getModel()).getSourceEdges();
73
	}
74
75
	/**
76
	 * @generated
77
	 */
78
	protected List getModelTargetConnections() {
79
		return ((View)getModel()).getTargetEdges();
80
	}
81
82
	/**
83
	 * @generated
84
	 */
85
	protected void refreshVisuals() {
86
		super.refreshVisuals();
87
		refreshLabel();
88
		refreshFont();
89
		refreshFontColor();
90
		refreshVisibility();
91
	}
92
93
	/**
94
	 * @generated
95
	 */
96
	protected void refreshLabel() {
97
		getLabel().setText(getLabelText());
98
		getLabel().setIcon(getLabelIcon());
99
	}
100
<%@ include file="labelText.javajetinc"%>
101
<%@ include file="refreshMethods/font.javajetinc"%>
102
<%@ include file="refreshMethods/fontColor.javajetinc"%>
103
104
	/**
105
	 * @generated
106
	 */
107
	protected <%=importManager.getImportedName("org.eclipse.swt.graphics.Image")%> getLabelIcon() {
108
		return null;
109
	}
110
111
	/**
112
	 * @generated
113
	 */
114
	protected void refreshVisibility() {
115
		boolean isVisible = getDiagramNode().isVisible();
116
		boolean wasVisible = getFigure().isVisible();
117
		if (isVisible == wasVisible) {
118
			return;
119
		}
120
		if (!isVisible && (getSelected() != SELECTED_NONE)) {
121
			getViewer().deselect(this);
122
		}
123
124
		getFigure().setVisible(isVisible);
125
		getFigure().revalidate();
126
	}
127
128
	/**
129
	 * @generated
130
	 */
131
	public Object getAdapter(Class key) {
132
<%/*@ include file="adapters/propertySource.javajetinc"*/%>
133
		return super.getAdapter(key);
134
	}
135
136
	/**
137
	 * @generated
138
	 */
139
	public void activate() {
140
		super.activate();
141
		getDiagramNode().getElement().eAdapters().add(domainModelRefresher);
142
	}
143
144
	/**
145
	 * @generated
146
	 */
147
	public void deactivate() {
148
		getDiagramNode().getElement().eAdapters().remove(domainModelRefresher);
149
		super.deactivate();
150
	}
151
152
<%@ include file="refreshers.javajetinc/domainModelRefresher.javajetinc"%>
153
154
<%@ include file="refresher.javajetinc"%>
155
156
	/**
157
	 * @generated
158
	 */
159
	private void createRefreshers() {
160
		structuralFeatures2Refresher = new HashMap();
161
<%@ include file="refreshers.javajetinc/children.javajetinc"%>
162
<%@ include file="refreshers.javajetinc/visibility.javajetinc"%>
163
		Refresher labelRefresher = new Refresher() {
164
			public void refresh() {
165
				refreshLabel();
166
			}
167
		};
168
<%
169
if (labelModelFacet instanceof FeatureLabelModelFacet) {
170
	GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
171
%>
172
			structuralFeatures2Refresher.put(<%=importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=feature.getFeatureAccessorName()%>(), labelRefresher);
173
<%
174
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
175
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
176
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
177
		GenFeature next = (GenFeature) it.next();
178
%>
179
			structuralFeatures2Refresher.put(<%=importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getFeatureAccessorName()%>(), labelRefresher);
180
<%
181
	}
182
}
183
%>
184
<%@ include file="refreshers.javajetinc/font.javajetinc"%>
185
<%@ include file="refreshers.javajetinc/fontColor.javajetinc"%>
186
	}
187
188
<%@ include file="labelFigure.jetinc"%>
189
}
190
<%importManager.emitSortedImports();%>
(-)templates/editor/CreationWizardPage.javajet (+297 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="CreationWizardPageGenerator"
2
    imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
5
final GenEditorGenerator editorGen = genDiagram.getEditorGen();
6
final GenPlugin genPlugin = editorGen.getPlugin();
7
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
8
9
importManager.emitPackageStatement(stringBuffer);
10
importManager.markImportLocation(stringBuffer);
11
12
importManager.addImport("java.io.File");
13
importManager.addImport("org.eclipse.core.runtime.IProgressMonitor");
14
importManager.addImport("org.eclipse.core.runtime.CoreException");
15
importManager.addImport("java.io.IOException");
16
importManager.addImport("org.eclipse.swt.widgets.Text");
17
importManager.addImport("org.eclipse.emf.common.util.URI");
18
importManager.addImport("org.eclipse.swt.widgets.Composite");
19
importManager.addImport("org.eclipse.swt.widgets.Label");
20
importManager.addImport("org.eclipse.swt.events.ModifyListener");
21
importManager.addImport("org.eclipse.swt.events.ModifyEvent");
22
importManager.addImport("org.eclipse.swt.layout.GridLayout");
23
importManager.addImport("org.eclipse.swt.layout.GridData");
24
%>
25
26
/**
27
 * @generated
28
 */
29
public class <%=genDiagram.getCreationWizardPageClassName()%> extends <%=importManager.getImportedName("org.eclipse.jface.wizard.WizardPage")%> {
30
	/**
31
	 * @generated
32
	 */
33
	private Text fileField;
34
35
	/**
36
	 * @generated
37
	 */
38
	private URI createdDiagramFileURI;
39
40
	/**
41
	 * @generated
42
	 */
43
	public <%=genDiagram.getCreationWizardPageClassName()%>() {
44
		super("CreationWizardPage"); //$NON-NLS-1$
45
		setTitle("Create <%=editorGen.getDomainGenModel().getModelName()%> Diagram"); //$NON-NLS-1$
46
		setDescription("Create a new <%=editorGen.getDomainGenModel().getModelName()%> diagram."); //$NON-NLS-1$
47
	}
48
49
	/**
50
	 * @generated
51
	 */
52
	public void createControl(Composite parent)
53
	{
54
		Composite composite = new Composite(parent, SWT.NONE);
55
		{
56
			GridLayout layout = new GridLayout();
57
			layout.numColumns = 1;
58
			layout.verticalSpacing = 12;
59
			composite.setLayout(layout);
60
61
			GridData data = new GridData();
62
			data.verticalAlignment = GridData.FILL;
63
			data.grabExcessVerticalSpace = true;
64
			data.horizontalAlignment = GridData.FILL;
65
			composite.setLayoutData(data);
66
		}
67
		Label resourceURILabel = new Label(composite, SWT.LEFT);
68
		{
69
			resourceURILabel.setText("&File");
70
71
			GridData data = new GridData();
72
			data.horizontalAlignment = GridData.FILL;
73
			resourceURILabel.setLayoutData(data);
74
		}
75
76
		Composite fileComposite = new Composite(composite, SWT.NONE);
77
		{
78
			GridData data = new GridData();
79
			data.horizontalAlignment = GridData.FILL;
80
			data.grabExcessHorizontalSpace = true;
81
			fileComposite.setLayoutData(data);
82
83
			GridLayout layout = new GridLayout();
84
			layout.marginHeight = 0;
85
			layout.marginWidth = 0;
86
			layout.numColumns = 2;
87
			fileComposite.setLayout(layout);
88
		}
89
90
		fileField = new <%=importManager.getImportedName("org.eclipse.swt.widgets.Text")%>(fileComposite, SWT.BORDER);
91
		{
92
			GridData data = new GridData();
93
			data.horizontalAlignment = GridData.FILL;
94
			data.grabExcessHorizontalSpace = true;
95
			data.horizontalSpan = 1;
96
			fileField.setLayoutData(data);
97
		}
98
99
		fileField.addModifyListener(validator);
100
		<%=importManager.getImportedName("org.eclipse.swt.widgets.Button")%> resourceURIBrowseFileSystemButton = new <%=importManager.getImportedName("org.eclipse.swt.widgets.Button")%>(fileComposite, SWT.PUSH);
101
		resourceURIBrowseFileSystemButton.setText("&Browse");
102
  
103
		resourceURIBrowseFileSystemButton.addSelectionListener
104
			(new <%=importManager.getImportedName("org.eclipse.swt.events.SelectionAdapter")%>() {
105
				 public void widgetSelected(<%=importManager.getImportedName("org.eclipse.swt.events.SelectionEvent")%> event) {
106
					 String fileExtension = "<%=editorGen.getDiagramFileExtension()%>";
107
					 String filePath = <%=genDiagram.getDiagramEditorUtilClassName()%>.openFilePathDialog(getShell(), "*." + fileExtension, <%=importManager.getImportedName("org.eclipse.swt.SWT")%>.OPEN);
108
					 if (filePath != null) {
109
						 if (!filePath.endsWith("." + fileExtension)) {
110
							 filePath = filePath + "." + fileExtension;
111
						 }
112
						 fileField.setText(filePath);
113
					 }
114
				 }
115
			 }); 
116
		setPageComplete(validatePage());
117
		setControl(composite);
118
	}
119
120
	/**
121
	 * @generated
122
	 */
123
	protected ModifyListener validator =
124
		new ModifyListener() {
125
			public void modifyText(ModifyEvent e) {
126
				setPageComplete(validatePage());
127
			}
128
		};
129
 
130
	/**
131
	 * @generated
132
	 */
133
	 protected boolean validatePage() {
134
		URI diagramFileURI = getDiagramFileURI();
135
		if (diagramFileURI == null || diagramFileURI.isEmpty()) {
136
			setErrorMessage(null);
137
			return false;
138
		}
139
		String requiredExt = "<%=editorGen.getDiagramFileExtension()%>";
140
		String enteredExt = diagramFileURI.fileExtension();
141
		if (enteredExt == null || !enteredExt.equals(requiredExt)) {
142
			setErrorMessage("The file name must end in " + requiredExt); 
143
			return false;
144
		}
145
146
		if (diagramFileURI.isFile()) {
147
			File diagramFile = new File(diagramFileURI.toFileString());
148
			if (diagramFile.exists()) {
149
				setErrorMessage("Diagram File already exists: " + diagramFile);
150
				return false;
151
			}
152
<%if (!editorGen.isSameFileForDiagramAndModel()) {%>
153
			URI modelFileURI = getModelFileURI();
154
			File modelFile = new File(modelFileURI.toFileString());
155
			if (modelFile.exists()) {
156
				setErrorMessage("Model File already exists: " + modelFile);
157
				return false;
158
			}
159
<%}%>
160
		}
161
		setErrorMessage(null); 
162
		return true;
163
	}
164
165
	/**
166
	 * @generated
167
	 */
168
	public URI getCreatedDiagramFileURI() {
169
		return createdDiagramFileURI;
170
	}
171
172
	/**
173
	 * @generated
174
	 */
175
	private URI getDiagramFileURI() {
176
		try {
177
			return URI.createFileURI(fileField.getText());
178
		} catch (Exception exception) {
179
		}
180
		return null;
181
	}
182
183
<%if (!editorGen.isSameFileForDiagramAndModel()) {%>
184
	/**
185
	 * @generated
186
	 */
187
	private URI getModelFileURI() {
188
		URI diagramFileURI = getDiagramFileURI();
189
		if (diagramFileURI == null) {
190
			return null;
191
		}
192
		return diagramFileURI.trimFileExtension().appendFileExtension("<%=editorGen.getDomainFileExtension()%>");
193
	}
194
<%}%>
195
196
	/**
197
	 * Performs the operations necessary to create and open the diagram
198
	 * @return boolean indicating whether the creation and opening the Diagram was successful 
199
	 * @generated
200
	 */
201
	public boolean finish() {
202
		final boolean[] result = new boolean[1];
203
		<%=importManager.getImportedName("org.eclipse.jface.operation.IRunnableWithProgress")%> op = new IRunnableWithProgress() {
204
			public void run(IProgressMonitor monitor) {
205
				result[0] = doFinish(monitor);
206
			}
207
		};
208
209
		try {
210
			getContainer().run(false, true, op);
211
		} catch (InterruptedException e) {
212
			return false;
213
		} catch (<%=importManager.getImportedName("java.lang.reflect.InvocationTargetException")%> e) {
214
			if (e.getTargetException() instanceof CoreException) {
215
				<%=importManager.getImportedName("org.eclipse.jface.dialogs.ErrorDialog")%>.openError(
216
					getContainer().getShell(),
217
					"Creation Problems",
218
					null,	// no special message
219
					((CoreException) e.getTargetException()).getStatus());
220
			}
221
			else {
222
				// CoreExceptions are handled above, but unexpected runtime exceptions and errors may still occur.
223
				<%=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()));
224
			}
225
			return false;
226
		}
227
		return result[0];
228
	}
229
230
	/**
231
	 * @param monitor the <code>IProgressMonitor</code> to use to indicate progress and check for cancellation
232
	 * @return boolean indicating whether the diagram was created and opened successfully
233
	 * @generated
234
	 */
235
	public boolean doFinish(IProgressMonitor monitor) {
236
		createdDiagramFileURI = createDiagramFile(monitor);
237
		return createdDiagramFileURI != null;
238
	}
239
240
	/**
241
	 * @generated
242
	 */
243
	private URI createDiagramFile(IProgressMonitor monitor) {
244
		//TODO: Editing domain!
245
		<%=importManager.getImportedName("org.eclipse.emf.ecore.resource.ResourceSet")%> resourceSet = new <%=importManager.getImportedName("org.eclipse.emf.ecore.resource.impl.ResourceSetImpl")%>();
246
		final <%=importManager.getImportedName("org.eclipse.emf.ecore.resource.Resource")%> diagramResource = resourceSet.createResource(getDiagramFileURI());
247
<%
248
final boolean standaloneDomainModel = !editorGen.isSameFileForDiagramAndModel() && genDiagram.getDomainDiagramElement() != null;
249
if (standaloneDomainModel) {
250
%>
251
		final Resource modelResource = resourceSet.createResource(getModelFileURI());
252
<%}%>
253
254
		if (diagramResource != null<%if (standaloneDomainModel) {%> && modelResource != null<%}%>) {
255
			//TODO: Editing domain!
256
			<%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getQualifiedInterfaceName())%> model = <%=importManager.getImportedName(genDiagram.getDomainDiagramElement().getGenPackage().getQualifiedFactoryClassName())%>.eINSTANCE.create<%=genDiagram.getDomainDiagramElement().getClassifierAccessorName()%>();
257
<%
258
if (standaloneDomainModel) {
259
%>
260
			modelResource.getContents().add(model);
261
			try {
262
				modelResource.save(<%=importManager.getImportedName("java.util.Collections")%>.EMPTY_MAP);
263
			} catch (IOException e) {
264
				handleSaveException(e);
265
			}
266
<%
267
} else {
268
%>
269
			diagramResource.getContents().add(model);
270
<%
271
}
272
%>
273
			<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram")%> diagram = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createDiagram();
274
			diagram.setElement(model);
275
			<%=importManager.getImportedName(genDiagram.getNotationViewFactoryQualifiedClassName())%>.decorateView(diagram);
276
			diagramResource.getContents().add(diagram);
277
			try {
278
				diagramResource.save(Collections.EMPTY_MAP);
279
			} catch (IOException e) {
280
				handleSaveException(e);
281
			}
282
		}
283
		boolean result = <%=genDiagram.getDiagramEditorUtilClassName()%>.openEditor(getDiagramFileURI());
284
		if (!result) {
285
			return null;
286
		}
287
		return getDiagramFileURI();
288
	}
289
290
	/**
291
	 * @generated
292
	 */
293
	private void handleSaveException(IOException e) {
294
		throw new RuntimeException(e);
295
	}
296
}
297
<%importManager.emitSortedImports();%>
(-)templates/parts/LinkLabelEditPart.javajet (+241 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="LinkLabelEditPartGenerator"
2
	imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* java.util.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.emf.ecore.*"%>
3
<%
4
GenLinkLabel genLabel = (GenLinkLabel) ((Object[]) argument)[0];
5
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
6
GenLink genHost = genLabel.getLink();
7
GenDiagram genDiagram = genLabel.getDiagram();
8
LabelModelFacet labelModelFacet = genLabel.getModelFacet();
9
GenClass underlyingMetaClass;
10
if (genHost.getModelFacet() instanceof TypeLinkModelFacet) {
11
	TypeLinkModelFacet typeLinkModelFacet = (TypeLinkModelFacet) genHost.getModelFacet();
12
	underlyingMetaClass = typeLinkModelFacet.getMetaClass();
13
} else if (genHost.getModelFacet() instanceof FeatureLinkModelFacet) {
14
	FeatureLinkModelFacet featureLinkModelFacet = (FeatureLinkModelFacet) genHost.getModelFacet();
15
	underlyingMetaClass = featureLinkModelFacet.getMetaFeature().getTypeGenClass();
16
} else {
17
	underlyingMetaClass = null;
18
}
19
%>
20
<%@ include file="../copyright4java.jetinc"%>
21
<%importManager.emitPackageStatement(stringBuffer);
22
importManager.addImport("org.eclipse.draw2d.geometry.Point");
23
importManager.addImport("org.eclipse.gef.EditPart");
24
importManager.addImport("org.eclipse.gef.EditPolicy");
25
importManager.addImport("org.eclipse.gmf.runtime.notation.Location");
26
importManager.addImport("org.eclipse.gmf.runtime.notation.Node");
27
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
28
29
importManager.markImportLocation(stringBuffer);
30
%>
31
32
/**
33
 * @generated
34
 */
35
public class <%=genLabel.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")%> {
36
<%@ include file="textAwareFields.jetinc"%>
37
38
	/**
39
	 * @generated
40
	 */
41
	public <%=genLabel.getEditPartClassName()%>(View view) {
42
		assert view instanceof Node;
43
		setModel(view);
44
	}
45
46
	/**
47
	 * @generated
48
	 */
49
	private Node getDiagramNode() {
50
		return (Node)getModel();
51
	}
52
53
	/**
54
	 * @generated
55
	 */
56
	protected void createEditPolicies() {
57
<%
58
final String primaryView = "getUpdatableParent().getDiagramEdge()";
59
final String resolvedSemanticElement = "resolveSemanticElement()";
60
%>
61
		installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy")%>() {
62
			public EditPart getHost() {
63
				return getUpdatableParent();
64
			}
65
		});
66
<%
67
if (labelModelFacet instanceof FeatureLabelModelFacet == true || labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
68
%>
69
<%@ include file="directEditPolicy.javajetinc"%>
70
<%
71
}
72
%>
73
	}
74
75
<%
76
if (labelModelFacet instanceof FeatureLabelModelFacet == true || labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
77
%>
78
<%@ include file="directEdit.javajetinc"%>
79
<%
80
}
81
%>
82
83
	/**
84
	 * @generated
85
	 */
86
	protected void refreshVisuals() {
87
		super.refreshVisuals();
88
		refreshLabel();
89
		refreshFont();
90
		refreshFontColor();
91
		refreshBounds();
92
	}
93
94
	/**
95
	 * @generated
96
	 */
97
	protected void refreshBounds() {
98
		Node node = getDiagramNode();
99
		assert node.getLayoutConstraint() instanceof Location;
100
		final Location location = (Location) node.getLayoutConstraint();
101
		((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) getParent()).setLayoutConstraint(this,
102
				getFigure(), new <%=importManager.getImportedName("org.eclipse.draw2d.AbstractLocator")%>() {
103
					protected <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> getReferencePoint() {
104
						<%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> parent = getUpdatableParent();
105
						<%=importManager.getImportedName("org.eclipse.draw2d.Connection")%> connection = (<%=importManager.getImportedName("org.eclipse.draw2d.Connection")%>) parent.getFigure();
106
						<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> midPoint = connection.getPoints().getMidpoint().getCopy();
107
						connection.translateToAbsolute(midPoint);
108
						return midPoint.translate(new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%>(location.getX(), location.getY()));
109
					}
110
				});
111
	}
112
113
	/**
114
	 * @generated
115
	 */
116
	protected void refreshLabel() {
117
		getLabel().setText(getLabelText());
118
	}
119
120
<%@ include file="labelText.javajetinc"%>
121
<%@ include file="refreshMethods/font.javajetinc"%>
122
<%@ include file="refreshMethods/fontColor.javajetinc"%>
123
124
	/**
125
	 * @generated
126
	 */
127
	private <%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> resolveSemanticElement() {
128
		for(EditPart editPart = this; editPart != null; editPart = editPart.getParent()) {
129
			View view = (View)editPart.getModel();
130
			if (view != null && view.getElement() != null) {
131
				return (<%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%>) view.getElement();
132
			}
133
		}
134
		return null;
135
	}
136
137
	/**
138
	 * @generated
139
	 */
140
	private <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> getUpdatableParent() {
141
		for(EditPart editPart = getParent(); editPart != null; editPart = editPart.getParent()) {
142
			if (editPart instanceof <%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%>) {
143
				return (<%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%>) editPart;
144
			}
145
		}
146
		return null;
147
	}
148
149
	/**
150
	 * @generated
151
	 */
152
	public void activate() {
153
		super.activate();
154
		<%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> updatableParent = getUpdatableParent();
155
		if (updatableParent != null) {
156
			updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);
157
			updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontHeight(), fontRefresher);
158
			updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontName(), fontRefresher);
159
			updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Bold(), fontRefresher);
160
			updatableParent.addRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Italic(), fontRefresher);
161
<%
162
if (labelModelFacet instanceof FeatureLabelModelFacet) {
163
	GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
164
%>
165
			updatableParent.addRefresher(<%=importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=feature.getFeatureAccessorName()%>(), labelRefresher);
166
<%
167
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
168
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
169
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
170
		GenFeature next = (GenFeature) it.next();
171
%>
172
			updatableParent.addRefresher(<%=importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getFeatureAccessorName()%>(), labelRefresher);
173
<%
174
	}
175
}
176
%>
177
		}
178
	}
179
180
	/**
181
	 * @generated
182
	 */
183
	public void deactivate() {
184
		super.deactivate();
185
		<%=importManager.getImportedName(genHost.getEditPartQualifiedClassName())%> updatableParent = getUpdatableParent();
186
		if (updatableParent != null) {
187
			updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontColor(), fontColorRefresher);
188
			updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontHeight(), fontRefresher);
189
			updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_FontName(), fontRefresher);
190
			updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Bold(), fontRefresher);
191
			updatableParent.removeRefresher(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFontStyle_Italic(), fontRefresher);
192
<%
193
if (labelModelFacet instanceof FeatureLabelModelFacet) {
194
	GenFeature feature = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
195
%>
196
			updatableParent.removeRefresher(<%=importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=feature.getFeatureAccessorName()%>(), labelRefresher);
197
<%
198
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
199
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
200
	for(Iterator it = compositeFeatureLabelModelFacet.getMetaFeatures().iterator(); it.hasNext(); ) {
201
		GenFeature next = (GenFeature) it.next();
202
%>
203
			updatableParent.removeRefresher(<%=importManager.getImportedName(next.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=next.getFeatureAccessorName()%>(), labelRefresher);
204
<%
205
	}
206
}
207
%>
208
		}
209
	}
210
211
	/**
212
	 * @generated
213
	 */
214
	private IUpdatableEditPart.Refresher labelRefresher = new IUpdatableEditPart.Refresher() {
215
		public void refresh() {
216
			refreshLabel();
217
		}
218
	};
219
220
221
	/**
222
	 * @generated
223
	 */
224
	private IUpdatableEditPart.Refresher fontColorRefresher = new IUpdatableEditPart.Refresher() {
225
		public void refresh() {
226
			refreshFontColor();
227
		}
228
	};
229
230
	/**
231
	 * @generated
232
	 */
233
	private IUpdatableEditPart.Refresher fontRefresher = new IUpdatableEditPart.Refresher() {
234
		public void refresh() {
235
			refreshFont();
236
		}
237
	};
238
239
<%@ include file="labelFigure.jetinc"%>
240
}
241
<%importManager.emitSortedImports();%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/ManifestGenerator.java (+70 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.emf.codegen.ecore.genmodel.*;
5
import java.util.*;
6
7
public class ManifestGenerator
8
{
9
  protected static String nl;
10
  public static synchronized ManifestGenerator create(String lineSeparator)
11
  {
12
    nl = lineSeparator;
13
    ManifestGenerator result = new ManifestGenerator();
14
    nl = null;
15
    return result;
16
  }
17
18
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
19
  protected final String TEXT_1 = "Manifest-Version: 1.0" + NL + "Bundle-ManifestVersion: 2" + NL + "Bundle-Name: %pluginName" + NL + "Bundle-SymbolicName: ";
20
  protected final String TEXT_2 = "; singleton:=true" + NL + "Bundle-Version: ";
21
  protected final String TEXT_3 = NL + "Bundle-ClassPath: ." + NL + "Bundle-Activator: ";
22
  protected final String TEXT_4 = NL + "Bundle-Vendor: %providerName" + NL + "Bundle-Localization: plugin" + NL + "Export-Package: ";
23
  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";
24
  protected final String TEXT_6 = ",";
25
  protected final String TEXT_7 = NL + " ";
26
  protected final String TEXT_8 = ";visibility:=reexport";
27
  protected final String TEXT_9 = NL + "Eclipse-LazyStart: true";
28
  protected final String TEXT_10 = NL;
29
30
  public String generate(Object argument)
31
  {
32
    final StringBuffer stringBuffer = new StringBuffer();
33
    
34
final GenPlugin genPlugin = (GenPlugin) argument;
35
final GenModel genModel = genPlugin.getEditorGen().getDomainGenModel();
36
final Set requiredPluginIDs = new LinkedHashSet();
37
requiredPluginIDs.add(genModel.getModelPluginID());
38
requiredPluginIDs.add(genModel.getEditPluginID());
39
40
for (Iterator it = genModel.getAllUsedGenPackagesWithClassifiers().iterator(); it.hasNext();) {
41
	GenModel nextGenModel = ((GenPackage) it.next()).getGenModel();
42
	if (nextGenModel.hasEditSupport()) {
43
		requiredPluginIDs.add(nextGenModel.getModelPluginID());
44
		requiredPluginIDs.add(nextGenModel.getEditPluginID());
45
	}
46
}
47
48
requiredPluginIDs.addAll(genPlugin.getRequiredPluginIDs());
49
Iterator requiredBundleIterator = requiredPluginIDs.iterator();
50
51
    stringBuffer.append(TEXT_1);
52
    stringBuffer.append(genPlugin.getID());
53
    stringBuffer.append(TEXT_2);
54
    stringBuffer.append(genPlugin.getVersion());
55
    stringBuffer.append(TEXT_3);
56
    stringBuffer.append(genPlugin.getActivatorQualifiedClassName());
57
    stringBuffer.append(TEXT_4);
58
    stringBuffer.append(genPlugin.getEditorGen().getEditor().getPackageName());
59
    stringBuffer.append(TEXT_5);
60
    while(requiredBundleIterator.hasNext()) {
61
    stringBuffer.append(TEXT_6);
62
    stringBuffer.append(TEXT_7);
63
    stringBuffer.append(requiredBundleIterator.next());
64
    stringBuffer.append(TEXT_8);
65
    }
66
    stringBuffer.append(TEXT_9);
67
    stringBuffer.append(TEXT_10);
68
    return stringBuffer.toString();
69
  }
70
}
(-)templates/editor/plugin.xmljet (+44 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="PluginXML"
2
    imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.emf.codegen.ecore.genmodel.*"%>
3
<%
4
final GenPlugin genPlugin = (GenPlugin) argument;
5
final GenEditorGenerator editorGen = genPlugin.getEditorGen();
6
final GenDiagram genDiagram = editorGen.getDiagram();
7
final GenModel genModel = editorGen.getDomainGenModel();
8
%>
9
<?xml version="1.0" encoding="UTF-8"?>
10
<?eclipse version="3.0"?>
11
<plugin>
12
  <extension point="org.eclipse.team.core.fileTypes">
13
      <fileTypes
14
         type="text"
15
         extension="<%=editorGen.getDiagramFileExtension()%>">
16
      </fileTypes>
17
  </extension>
18
19
   <extension point="org.eclipse.ui.editors">
20
     <editor
21
        id="<%=editorGen.getEditor().getID()%>"
22
        name="<%=genModel.getModelName()%> Diagram Editor"
23
        icon="<%=editorGen.getEditor().getIconPath()%>"
24
        extensions="<%=editorGen.getDiagramFileExtension()%>"
25
        default="true"
26
        class="<%=editorGen.getEditor().getQualifiedClassName()%>"
27
        contributorClass="<%=editorGen.getEditor().getActionBarContributorQualifiedClassName()%>">
28
     </editor>
29
   </extension>
30
31
   <extension point="org.eclipse.ui.newWizards">
32
  	  <wizard
33
  	     name="<%=genModel.getModelName()%> Diagram"
34
  	     icon="<%=genDiagram.getCreationWizardIconPath()%>"
35
  	     category="org.eclipse.ui.Examples"
36
  	     class="<%=genDiagram.getCreationWizardQualifiedClassName()%>"
37
  	     id="<%=genDiagram.getCreationWizardQualifiedClassName()%>ID">
38
  	  	 <description>
39
  	  		Creates <%=genModel.getModelName()%> diagram.
40
  	  	 </description>  
41
      </wizard>
42
   </extension>
43
44
</plugin>
(-).classpath (+8 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<classpath>
3
	<classpathentry kind="src" path="src"/>
4
	<classpathentry kind="src" path="src-templates"/>
5
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
6
	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
7
	<classpathentry kind="output" path="bin"/>
8
</classpath>
(-)templates/parts/labelFigure.jetinc (+62 lines)
Added Link Here
1
2
	/**
3
	 * @generated
4
	 */
5
	protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> createFigure() {
6
		<%=importManager.getImportedName("org.eclipse.draw2d.Label")%> label = createLabel();
7
		defaultText = label.getText();
8
		return label;
9
	}
10
11
	/**
12
	 * @generated
13
	 */
14
	protected <%=importManager.getImportedName("org.eclipse.draw2d.Label")%> createLabel() {
15
<%
16
String figureQualifiedClassName = null;
17
Viewmap viewmap = genLabel.getViewmap();
18
if (viewmap instanceof FigureViewmap) {
19
	figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName();
20
	if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) {
21
		figureQualifiedClassName = "org.eclipse.draw2d.Label";
22
	}
23
%>
24
		return new <%=importManager.getImportedName(figureQualifiedClassName)%>();
25
<%} // instanceof FigureViewmap
26
 else if (viewmap instanceof SnippetViewmap) {%>
27
		return <%=((SnippetViewmap) viewmap).getBody()%>;
28
<%} // instanceof SnippetViewmap; FIXME : obtain figure class name to generate getter
29
 else if (viewmap instanceof InnerClassViewmap) {
30
 	figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName();
31
%>
32
		return new <%=figureQualifiedClassName%>();
33
<%}%>
34
	}
35
36
	/**
37
	 * @generated
38
	 */
39
	public <%=importManager.getImportedName("org.eclipse.draw2d.Label")%> getLabel() {
40
		return (<%=importManager.getImportedName("org.eclipse.draw2d.Label")%>) getFigure();
41
	}
42
43
	/**
44
	 * @generated
45
	 */
46
	public void setLabel(<%=importManager.getImportedName("org.eclipse.draw2d.Label")%> figure) {
47
		unregisterVisuals();
48
		setFigure(figure);
49
		defaultText = figure.getText();
50
		registerVisuals();
51
		refreshVisuals();
52
	}
53
54
<%
55
if (genLabel.getViewmap() instanceof InnerClassViewmap) {
56
	String classBody = ((InnerClassViewmap) genLabel.getViewmap()).getClassBody();
57
%>
58
<%=classBody%>
59
<%@ include file="mapmodeWorkaround.javajetinc"%>
60
<%
61
}
62
%>
(-)plugin.properties (+2 lines)
Added Link Here
1
pluginName=GMF Pure-GEF Code Generation Plug-in
2
providerName=Eclipse.org
(-)templates/parts/refreshers.javajetinc/targetEdges.javajetinc (+6 lines)
Added Link Here
1
		Refresher targetEdgesRefresher = new Refresher() {
2
			public void refresh() {
3
				refreshTargetConnections();
4
			}
5
		};
6
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getView_TargetEdges(), targetEdgesRefresher);
(-)templates/parts/directEditPolicy.javajetinc (+122 lines)
Added Link Here
1
		installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.DIRECT_EDIT_ROLE,
2
				new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.DirectEditPolicy")%>() {
3
					protected void showCurrentEditValue(<%=importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest")%> request) {
4
						String value = (String) request.getCellEditor().getValue();
5
						getLabel().setText(value);
6
					}
7
					protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getDirectEditCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.DirectEditRequest")%> request) {
8
						String value = (String) request.getCellEditor().getValue();
9
						if (value == null) {
10
							//Invalid value is transformed into a null by the validator.
11
							//XXX: implement validator
12
							return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
13
						}
14
						final Object[] parseResult;
15
						try {
16
							parseResult = new <%=importManager.getImportedName("java.text.MessageFormat")%>(EDIT_PATTERN).parse(value);
17
						} catch (IllegalArgumentException e) {
18
							return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
19
						} catch (<%=importManager.getImportedName("java.text.ParseException")%> e) {
20
							return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
21
						}
22
<%
23
if (labelModelFacet instanceof FeatureLabelModelFacet && !genLabel.isReadOnly()) {
24
	GenFeature featureToSet = ((FeatureLabelModelFacet)labelModelFacet).getMetaFeature();
25
	EStructuralFeature ecoreFeature = featureToSet.getEcoreFeature();
26
%>
27
						if (parseResult.length != 1) {
28
							return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
29
						}
30
						return new <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%>() {
31
							private <%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> element = <%=resolvedSemanticElement%>;
32
							private <%=importManager.getImportedName("org.eclipse.emf.common.command.Command")%> domainModelCommand = createDomainModelCommand();
33
							private <%=importManager.getImportedName("org.eclipse.emf.common.command.Command")%> createDomainModelCommand() {
34
								<%=importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")%> domainModelEditDomain = <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(<%=primaryView%>.getDiagram().getElement());
35
								<%=importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")%> feature = (<%=importManager.getImportedName("org.eclipse.emf.ecore.EAttribute")%>) <%=importManager.getImportedName(featureToSet.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=featureToSet.getFeatureAccessorName()%>();
36
								Object valueToSet;
37
								try {
38
									valueToSet = <%=importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName())%>.parseValue(feature, parseResult[0]);
39
								} catch (IllegalArgumentException e) {
40
									return <%=importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")%>.INSTANCE;
41
								}
42
<%
43
	if (ecoreFeature.isMany()) {
44
%>
45
								<%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%> result = new <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%>();
46
								<%=importManager.getImportedName("org.eclipse.emf.common.util.EList")%> values = new <%=importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")%>();
47
								values.addAll(element.get<%=featureToSet.getAccessorName()%>());
48
								result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(domainModelEditDomain, element, feature, values));
49
								result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand")%>.create(domainModelEditDomain, element, feature, valueToSet));
50
								return result;
51
<%
52
	} else {
53
%>
54
								return <%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, element, feature, valueToSet);
55
<%
56
	}
57
%>
58
							}
59
<%
60
} else if (labelModelFacet instanceof CompositeFeatureLabelModelFacet) {
61
	CompositeFeatureLabelModelFacet compositeFeatureLabelModelFacet = (CompositeFeatureLabelModelFacet) labelModelFacet;
62
	List metaFeatures = compositeFeatureLabelModelFacet.getMetaFeatures();
63
%>
64
						if (parseResult.length != <%=metaFeatures.size()%>) {
65
							return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
66
						}
67
						return new <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%>() {
68
							private <%=importManager.getImportedName(underlyingMetaClass.getQualifiedInterfaceName())%> element = <%=resolvedSemanticElement%>;
69
							private <%=importManager.getImportedName("org.eclipse.emf.common.command.Command")%> domainModelCommand = createDomainModelCommand();
70
							private <%=importManager.getImportedName("org.eclipse.emf.common.command.Command")%> createDomainModelCommand() {
71
								<%=importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")%> domainModelEditDomain = <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(<%=primaryView%>.getDiagram().getElement());
72
								<%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%> result = new <%=importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand")%>();
73
								Object valueToSet;
74
<%
75
	boolean haveDeclaredValues = false;
76
	for(int i = 0; i < metaFeatures.size(); i++) {
77
		GenFeature nextFeatureToSet = (GenFeature) metaFeatures.get(i);
78
		EStructuralFeature nextEcoreFeature = nextFeatureToSet.getEcoreFeature();
79
%>
80
								<%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()%>();
81
								try {
82
									valueToSet = <%=importManager.getImportedName(genDiagram.getAbstractParserQualifiedClassName())%>.parseValue(feature, parseResult[<%=i%>]);
83
								} catch (IllegalArgumentException e) {
84
									return <%=importManager.getImportedName("org.eclipse.emf.common.command.UnexecutableCommand")%>.INSTANCE;
85
								}
86
<%
87
		if (nextEcoreFeature.isMany()) {
88
%>
89
								<%if (!haveDeclaredValues) { haveDeclaredValues = true;%><%=importManager.getImportedName("org.eclipse.emf.common.util.EList")%> <%}%>values = new <%=importManager.getImportedName("org.eclipse.emf.common.util.BasicEList")%>();
90
								values.addAll(element.get<%=nextFeatureToSet.getAccessorName()%>());
91
								result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand")%>.create(domainModelEditDomain, element, feature, values));
92
								result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.AddCommand")%>.create(domainModelEditDomain, element, feature, valueToSet));
93
<%
94
		} else {
95
%>
96
								result.append(<%=importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, element, feature, valueToSet));
97
<%
98
		}
99
%>
100
<%
101
	}
102
%>
103
								return result;
104
							}
105
<%
106
}
107
%>
108
							public void undo() {
109
								domainModelCommand.undo();
110
							}
111
							public void execute() {
112
								domainModelCommand.execute();
113
							}
114
							public boolean canUndo() {
115
								return element != null && domainModelCommand != null && domainModelCommand.canUndo();
116
							}
117
							public boolean canExecute() {
118
								return element != null && domainModelCommand != null && domainModelCommand.canExecute();
119
							}
120
						};
121
					}
122
				});
(-)templates/emf-merge.xml (+171 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<merge:options 
3
  indent="  "  
4
  braceStyle="matching"  
5
  redirect="Gen"
6
  block="\s*@\s*generated\s*NOT\s*\n"
7
  noImport="\s*//\s*import\s+([\w.*]*)\s*;\s*\n"
8
  xmlns:merge="http://www.eclipse.org/org/eclipse/emf/codegen/jmerge/Options">
9
10
<!-- Tabbed Standard
11
12
  indent="&#x9;"  
13
  braceStyle="standard"  
14
15
-->
16
17
    <!-- this accepts both new and old style markup. -->
18
19
    <merge:dictionaryPattern
20
      name="modelMembers" 
21
      select="Member/getComment" 
22
      match="\s*@\s*(model)"/>
23
24
    <merge:dictionaryPattern
25
      name="generatedUnmodifiableMembers" 
26
      select="Member/getComment" 
27
      match="\s*@\s*(gen)erated\s*(This field/method[^\n]*)*\n"/>
28
29
    <merge:dictionaryPattern
30
      name="generatedModifiableMembers" 
31
      select="Member/getComment" 
32
      match="\s*@\s*generated\s*(modifiable)\s*\n"/>
33
34
    <!-- This is like the above, but for backward compatibility -->
35
    <merge:dictionaryPattern
36
      name="generatedLastGenMembers" 
37
      select="Member/getComment" 
38
      match="\s*@\s*(lastgen).*\n"/>
39
40
    <merge:dictionaryPattern
41
      name="orderedMembers" 
42
      select="Member/getComment" 
43
      match="\s*@\s*(ordered)\s*\n"/>
44
45
    <merge:pull 
46
      sourceGet="Member/getFlags"
47
      targetMarkup="^gen$"
48
      targetPut="Member/setFlags"/>
49
50
<!-- 
51
    <merge:pull 
52
      sourceMarkup="^modifiable$"
53
      sourceGet="Member/getComment"
54
      targetMarkup="^gen$"
55
      targetPut="Member/setComment"/>
56
-->
57
58
    <merge:pull 
59
      sourceMarkup="^modifiable$"
60
      sourceGet="Member/getComment"
61
      sourceTransfer="(\s*&lt;!--\s*begin-user-doc.*?end-user-doc\s*-->\s*)\n"
62
      targetMarkup="^modifiable$"
63
      targetPut="Member/setComment"/>
64
65
    <merge:pull 
66
      sourceMarkup="^gen$"
67
      sourceGet="Member/getComment"
68
      sourceTransfer="(\s*&lt;!--\s*begin-user-doc.*?end-user-doc\s*-->\s*)\n"
69
      targetMarkup="^gen$"
70
      targetPut="Member/setComment"/>
71
72
    <merge:pull 
73
      sourceMarkup="^gen$"
74
      sourceGet="Type/getComment"
75
      sourceTransfer="(\s*&lt;!--\s*begin-user-doc.*?end-user-doc\s*-->\s*)\n"
76
      targetMarkup="^modifiable$"
77
      targetPut="Type/setComment"/>
78
79
    <merge:pull 
80
      sourceGet="Initializer/getBody"
81
      targetMarkup="^gen$"
82
      targetPut="Initializer/setBody"/>
83
84
    <merge:pull 
85
      sourceGet="Type/getSuperclass"
86
      targetMarkup="^lastgen$|^gen$|^modifiable$|^model$"
87
      targetPut="Type/setSuperclass"/>
88
89
    <merge:pull 
90
      sourceGet="Type/getSuperInterfaces"
91
      sourceTransfer="(\s*@\s*extends|\s*@\s*implements)(.*?)\n"
92
      targetMarkup="^lastgen$|^gen$|^modifiable$|^model$"
93
      targetPut="Type/addSuperInterface"/>
94
95
    <merge:pull 
96
      sourceGet="Field/getType"
97
      targetMarkup="^gen$"
98
      targetPut="Field/setType"/>
99
    <merge:pull 
100
      sourceGet="Field/getInitializer"
101
      targetMarkup="^gen$"
102
      targetPut="Field/setInitializer"/>
103
104
    <merge:pull 
105
      sourceGet="Method/getBody"
106
      targetMarkup="^gen$"
107
      targetPut="Method/setBody"/>
108
    <merge:pull 
109
      sourceGet="Method/getReturnType"
110
      targetMarkup="^gen$|^model$"
111
      targetPut="Method/setReturnType"/>
112
    <merge:pull 
113
      sourceGet="Method/getExceptions"
114
      targetMarkup="^gen$"
115
      targetPut="Method/addException"/>
116
117
    <merge:sweep markup="^gen$" select="Member"/>
118
    <merge:sweep markup="^org.eclipse.emf.ecore.EMetaObject$" select="Import"/>
119
    <merge:sweep markup="^org.eclipse.emf.ecore.impl.EMetaObjectImpl$" select="Import"/>
120
    <merge:sweep markup="^org.eclipse.emf.ecore.util.EObjectCompositeEList$" select="Import"/>
121
    <merge:sweep markup="^org.eclipse.emf.ecore.util.EObjectCompositeWithInverseEList$" select="Import"/>
122
123
    <merge:sort markup="^ordered$" select="Member"/>
124
125
<!-- Basic Rules
126
127
    <merge:pull 
128
      sourceGet="CompilationUnit/getHeader"
129
      targetPut="CompilationUnit/setHeader"/>
130
131
    <merge:pull 
132
      sourceGet="Package/getName"
133
      targetPut="Package/setName"/>
134
135
    <merge:pull 
136
      sourceGet="Member/getFlags"
137
      targetPut="Member/setFlags"/>
138
    <merge:pull 
139
      sourceGet="Member/getComment"
140
      targetPut="Member/setComment"/>
141
142
    <merge:pull 
143
      sourceGet="Type/getSuperclass"
144
      targetPut="Type/setSuperclass"/>
145
    <merge:pull 
146
      sourceGet="Type/getSuperInterfaces"
147
      targetPut="Type/addSuperInterface"/>
148
149
    <merge:pull 
150
      sourceGet="Initializer/getBody"
151
      targetPut="Initializer/setBody"/>
152
153
    <merge:pull 
154
      sourceGet="Field/getType"
155
      targetPut="Field/setType"/>
156
    <merge:pull 
157
      sourceGet="Field/getInitializer"
158
      targetPut="Field/setInitializer"/>
159
160
    <merge:pull 
161
      sourceGet="Method/getBody"
162
      targetPut="Method/setBody"/>
163
    <merge:pull 
164
      sourceGet="Method/getReturnType"
165
      targetPut="Method/setReturnType"/>
166
    <merge:pull 
167
      sourceGet="Method/getExceptions"
168
      targetPut="Method/addException"/>
169
-->
170
171
</merge:options>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/providers/CompartmentViewFactoryGenerator.java (+80 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.providers;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
6
public class CompartmentViewFactoryGenerator
7
{
8
  protected static String nl;
9
  public static synchronized CompartmentViewFactoryGenerator create(String lineSeparator)
10
  {
11
    nl = lineSeparator;
12
    CompartmentViewFactoryGenerator result = new CompartmentViewFactoryGenerator();
13
    nl = null;
14
    return result;
15
  }
16
17
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
18
  protected final String TEXT_1 = "";
19
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
20
  protected final String TEXT_3 = NL + " */";
21
  protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
22
  protected final String TEXT_5 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static void decorateView(";
23
  protected final String TEXT_6 = " view) {";
24
  protected final String TEXT_7 = NL;
25
  protected final String TEXT_8 = " annotation = ";
26
  protected final String TEXT_9 = ".eINSTANCE.createEAnnotation();" + NL + "annotation.setSource(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "view.getEAnnotations().add(annotation);" + NL + "annotation.getDetails().put(\"modelID\", \"";
27
  protected final String TEXT_10 = "\"); //$NON-NLS-1$" + NL + "annotation.getDetails().put(\"visualID\", \"";
28
  protected final String TEXT_11 = "\"); //$NON-NLS-1$" + NL + "\t\t";
29
  protected final String TEXT_12 = " drawerStyle = ";
30
  protected final String TEXT_13 = ".eINSTANCE.createDrawerStyle();" + NL + "\t\tview.getStyles().add(drawerStyle);" + NL + "\t\t//XXX: init styles from attributes!!!" + NL + "\t\t";
31
  protected final String TEXT_14 = " titleStyle = ";
32
  protected final String TEXT_15 = ".eINSTANCE.createTitleStyle();" + NL + "\t\tview.getStyles().add(titleStyle);" + NL + "\t}" + NL + "}";
33
34
  public String generate(Object argument)
35
  {
36
    final StringBuffer stringBuffer = new StringBuffer();
37
    
38
GenCompartment genElement = (GenCompartment) ((Object[]) argument)[0];
39
GenDiagram genDiagram = genElement.getDiagram();
40
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
41
42
    stringBuffer.append(TEXT_1);
43
    
44
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
45
if (copyrightText != null && copyrightText.trim().length() > 0) {
46
47
    stringBuffer.append(TEXT_2);
48
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
49
    stringBuffer.append(TEXT_3);
50
    }
51
    importManager.emitPackageStatement(stringBuffer);
52
53
importManager.markImportLocation(stringBuffer);
54
55
    stringBuffer.append(TEXT_4);
56
    stringBuffer.append(genElement.getNotationViewFactoryClassName());
57
    stringBuffer.append(TEXT_5);
58
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
59
    stringBuffer.append(TEXT_6);
60
    stringBuffer.append(TEXT_7);
61
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
62
    stringBuffer.append(TEXT_8);
63
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory"));
64
    stringBuffer.append(TEXT_9);
65
    stringBuffer.append(genDiagram.getEditorGen().getModelID());
66
    stringBuffer.append(TEXT_10);
67
    stringBuffer.append(genElement.getVisualID());
68
    stringBuffer.append(TEXT_11);
69
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.DrawerStyle"));
70
    stringBuffer.append(TEXT_12);
71
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
72
    stringBuffer.append(TEXT_13);
73
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.TitleStyle"));
74
    stringBuffer.append(TEXT_14);
75
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
76
    stringBuffer.append(TEXT_15);
77
    importManager.emitSortedImports();
78
    return stringBuffer.toString();
79
  }
80
}
(-)templates/parts/refreshers.javajetinc/shapeColor.javajetinc (+12 lines)
Added Link Here
1
		Refresher backgroundColorRefresher = new Refresher() {
2
			public void refresh() {
3
				refreshBackgroundColor();
4
			}
5
		};
6
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getFillStyle_FillColor(), backgroundColorRefresher);
7
		Refresher foregroundColorRefresher = new Refresher() {
8
			public void refresh() {
9
				refreshForegroundColor();
10
			}
11
		};
12
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getLineStyle_LineColor(), foregroundColorRefresher);
(-)templates/providers/CompartmentViewFactory.javajet (+30 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.providers"  class="CompartmentViewFactoryGenerator"
2
	imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
GenCompartment genElement = (GenCompartment) ((Object[]) argument)[0];
5
GenDiagram genDiagram = genElement.getDiagram();
6
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
%>
8
<%@ include file="../copyright4java.jetinc"%>
9
<%importManager.emitPackageStatement(stringBuffer);
10
11
importManager.markImportLocation(stringBuffer);
12
%>
13
14
/**
15
 * @generated
16
 */
17
public class <%=genElement.getNotationViewFactoryClassName()%> {
18
	/**
19
	 * @generated
20
	 */
21
	public static void decorateView(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) {
22
<%@ include file="createVIDAnnotation.jetinc"%>
23
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.DrawerStyle")%> drawerStyle = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createDrawerStyle();
24
		view.getStyles().add(drawerStyle);
25
		//XXX: init styles from attributes!!!
26
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.TitleStyle")%> titleStyle = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createTitleStyle();
27
		view.getStyles().add(titleStyle);
28
	}
29
}
30
<%importManager.emitSortedImports();%>
(-)templates/editor/CreationWizard.javajet (+68 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="CreationWizardGenerator"
2
    imports="org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
5
final GenModel genModel = genDiagram.getEditorGen().getDomainGenModel();
6
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
8
importManager.emitPackageStatement(stringBuffer);
9
importManager.markImportLocation(stringBuffer);
10
importManager.addImport("org.eclipse.jface.viewers.IStructuredSelection");
11
importManager.addImport("org.eclipse.ui.IWorkbench");
12
13
%>
14
15
/**
16
 * @generated
17
 */
18
public class <%=genDiagram.getCreationWizardClassName()%> extends <%=importManager.getImportedName("org.eclipse.jface.wizard.Wizard")%> implements <%=importManager.getImportedName("org.eclipse.ui.INewWizard")%> {
19
	/**
20
	 * @generated
21
	 */
22
	 private <%=importManager.getImportedName("org.eclipse.emf.common.util.URI")%> diagramFileURI;
23
24
	/**
25
	 * @generated
26
	 */
27
	 private <%=importManager.getImportedName(genDiagram.getCreationWizardPageQualifiedClassName())%> page;
28
29
	/**
30
	 * @generated
31
	 */
32
	public void addPages() {
33
		super.addPages();
34
		if (page == null) {
35
			page = new <%=importManager.getImportedName(genDiagram.getCreationWizardPageQualifiedClassName())%>();
36
		}
37
		addPage(page);
38
	}
39
40
	/**
41
	 * @generated
42
	 */
43
	public void init(IWorkbench workbench, IStructuredSelection selection) {
44
		setWindowTitle("New <%=genModel.getModelName()%> Diagram"); //$NON-NLS-1$
45
		setDefaultPageImageDescriptor(<%=genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()%>.getBundledImageDescriptor(
46
			"icons/full/wizban/New<%=genModel.getModelName()%>.gif")); //$NON-NLS-1$
47
		setNeedsProgressMonitor(true);
48
	}
49
50
	/**
51
	 * @generated
52
	 */
53
	public boolean performFinish() {
54
		boolean retVal = page.finish();
55
		diagramFileURI = page.getCreatedDiagramFileURI();
56
		return retVal;
57
	}
58
59
	/**
60
	 * returns the diagram file 
61
	 * @return URI the diagram file
62
	 * @generated
63
	 */
64
	public final URI getDiagramFileURI() {
65
		return diagramFileURI;
66
	}
67
}
68
<%importManager.emitSortedImports();%>
(-).project (+34 lines)
Added Link Here
1
<?xml version="1.0" encoding="UTF-8"?>
2
<projectDescription>
3
	<name>org.eclipse.gmf.codegen.lite</name>
4
	<comment></comment>
5
	<projects>
6
	</projects>
7
	<buildSpec>
8
		<buildCommand>
9
			<name>org.eclipse.emf.codegen.JETBuilder</name>
10
			<arguments>
11
			</arguments>
12
		</buildCommand>
13
		<buildCommand>
14
			<name>org.eclipse.jdt.core.javabuilder</name>
15
			<arguments>
16
			</arguments>
17
		</buildCommand>
18
		<buildCommand>
19
			<name>org.eclipse.pde.ManifestBuilder</name>
20
			<arguments>
21
			</arguments>
22
		</buildCommand>
23
		<buildCommand>
24
			<name>org.eclipse.pde.SchemaBuilder</name>
25
			<arguments>
26
			</arguments>
27
		</buildCommand>
28
	</buildSpec>
29
	<natures>
30
		<nature>org.eclipse.emf.codegen.jet.IJETNature</nature>
31
		<nature>org.eclipse.pde.PluginNature</nature>
32
		<nature>org.eclipse.jdt.core.javanature</nature>
33
	</natures>
34
</projectDescription>
(-)templates/parts/IUpdatableEditPart.javajet (+66 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="UpdatableEditPartGenerator"
2
	imports="org.eclipse.gmf.common.codegen.* "%>
3
<%
4
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
5
%>
6
7
<%
8
importManager.emitPackageStatement(stringBuffer);
9
%>
10
11
import java.util.ArrayList;
12
import java.util.Collection;
13
import java.util.Iterator;
14
15
import org.eclipse.emf.common.notify.Notification;
16
import org.eclipse.emf.ecore.EStructuralFeature;
17
18
/**
19
 * @generated
20
 */
21
public interface IUpdatableEditPart {
22
	/**
23
	 * @generated
24
	 */
25
	public Refresher getRefresher(EStructuralFeature feature, Notification msg);
26
	/**
27
	 * @generated
28
	 */
29
	public interface Refresher {
30
		/**
31
		 * @generated
32
		 */
33
		public void refresh();
34
	}
35
36
	/**
37
	 * @generated
38
	 */
39
	public class CompositeRefresher implements Refresher {
40
		/**
41
		 * @generated
42
		 */
43
		public void addRefresher(Refresher refresher) {
44
			refreshers.add(refresher);
45
		}
46
47
		/**
48
		 * @generated
49
		 */
50
		public void removeRefresher(Refresher refresher) {
51
			refreshers.remove(refresher);
52
		}
53
54
		/**
55
		 * @generated
56
		 */
57
		public void refresh() {
58
			for(Iterator it = refreshers.iterator(); it.hasNext(); ) {
59
				Refresher next = (Refresher) it.next();
60
				next.refresh();
61
			}
62
		}
63
64
		private Collection/*<Refresher>*/ refreshers = new ArrayList();
65
	}
66
}
(-)templates/editor/DiagramEditorUtil.javajet (+96 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="DiagramEditorUtilGenerator"
2
    imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.*"%>
3
<%
4
final GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
5
final GenEditorGenerator editorGen = genDiagram.getEditorGen();
6
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
8
importManager.emitPackageStatement(stringBuffer);%>
9
10
<%importManager.markImportLocation(stringBuffer);
11
importManager.addImport("java.io.File");
12
importManager.addImport("org.eclipse.ui.IWorkbench");
13
importManager.addImport("org.eclipse.ui.IWorkbenchPage");
14
importManager.addImport("org.eclipse.ui.IWorkbenchWindow");
15
importManager.addImport("org.eclipse.ui.PlatformUI");
16
importManager.addImport("org.eclipse.ui.PartInitException");
17
importManager.addImport("org.eclipse.ui.IEditorDescriptor");
18
importManager.addImport("org.eclipse.swt.widgets.Shell");
19
importManager.addImport("org.eclipse.swt.widgets.FileDialog"); 
20
importManager.addImport("org.eclipse.jface.dialogs.MessageDialog");
21
importManager.addImport("org.eclipse.emf.common.util.URI");
22
importManager.addImport("org.eclipse.emf.common.ui.URIEditorInput");
23
%>
24
25
/**
26
 * @generated
27
 */
28
public class <%=genDiagram.getDiagramEditorUtilClassName()%> {
29
	/**
30
	 * @generated
31
	 */
32
	public static String openFilePathDialog(Shell shell, String fileExtensionFilter, int style) {
33
		FileDialog fileDialog = new FileDialog(shell, style);
34
		fileDialog.setFilterExtensions(new String[]{fileExtensionFilter});
35
36
		fileDialog.open();
37
		if (fileDialog.getFileName() != null && fileDialog.getFileName().length() > 0) {
38
			return fileDialog.getFilterPath() + File.separator + fileDialog.getFileName();
39
		}
40
		else
41
		{
42
			return null;
43
		}
44
	}
45
46
	/**
47
	 * @generated
48
	 */
49
	public static boolean openEditor(URI fileURI) {
50
		IWorkbench workbench = PlatformUI.getWorkbench();
51
		IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
52
		IWorkbenchPage page = workbenchWindow.getActivePage();
53
54
		IEditorDescriptor editorDescriptor = workbench.getEditorRegistry().getDefaultEditor(fileURI.toFileString());
55
		if (editorDescriptor == null) {
56
			MessageDialog.openError(
57
			workbenchWindow.getShell(),
58
			"Error",
59
			"There is no editor registered for the file " + fileURI.toFileString());
60
			return false;
61
		} else {
62
			try {
63
				page.openEditor(new URIEditorInput(fileURI), editorDescriptor.getId());
64
			} catch (PartInitException exception) {
65
				MessageDialog.openError(
66
				workbenchWindow.getShell(),
67
				"Error Opening Editor",
68
				exception.getMessage());
69
				return false;
70
			}
71
		}
72
73
		return true;
74
	}
75
76
	/**
77
	 * @generated
78
	 */
79
	public static URI getDiagramFileURI(URI modelFileURI) {
80
		if (modelFileURI == null || !modelFileURI.isFile()) {
81
			return null;
82
		}
83
		return modelFileURI.trimFileExtension().appendFileExtension("<%=editorGen.getDiagramFileExtension()%>");
84
	}
85
86
	/**
87
	 * @generated
88
	 */
89
	public static URI getModelFileURI(URI diagramFileURI) {
90
		if (diagramFileURI == null || !diagramFileURI.isFile()) {
91
			return null;
92
		}
93
		return diagramFileURI.trimFileExtension().appendFileExtension("<%=editorGen.getDomainFileExtension()%>");
94
	}
95
 }
96
<%importManager.emitSortedImports();%>
(-)templates/editor/ActionBarContributor.javajet (+79 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="ActionBarContributorGenerator"
2
    imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.codegen.ecore.genmodel.*"%>
3
<%
4
final GenEditorView editorView = (GenEditorView) ((Object[]) argument)[0];
5
final GenModel genModel = editorView.getEditorGen().getDomainGenModel();
6
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
8
importManager.emitPackageStatement(stringBuffer);
9
importManager.markImportLocation(stringBuffer);
10
%>
11
12
import org.eclipse.gef.ui.actions.ActionBarContributor;
13
import org.eclipse.gef.ui.actions.DeleteRetargetAction;
14
import org.eclipse.gef.ui.actions.GEFActionConstants;
15
import org.eclipse.gef.ui.actions.RedoRetargetAction;
16
import org.eclipse.gef.ui.actions.UndoRetargetAction;
17
import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
18
import org.eclipse.gef.ui.actions.ZoomInRetargetAction;
19
import org.eclipse.gef.ui.actions.ZoomOutRetargetAction;
20
import org.eclipse.jface.action.IMenuManager;
21
import org.eclipse.jface.action.IToolBarManager;
22
import org.eclipse.jface.action.MenuManager;
23
import org.eclipse.jface.action.Separator;
24
import org.eclipse.ui.IWorkbenchActionConstants;
25
import org.eclipse.ui.actions.ActionFactory;
26
27
/**
28
 * The action bar contributor for the <%=genModel.getModelName()%> editor.
29
 *
30
 * @generated
31
 */
32
public class <%=editorView.getActionBarContributorClassName()%> extends ActionBarContributor {
33
	/**
34
	 * @generated
35
	 */
36
    protected void buildActions() {
37
        addRetargetAction(new UndoRetargetAction());
38
        addRetargetAction(new RedoRetargetAction());
39
        addRetargetAction(new DeleteRetargetAction());
40
    
41
        addRetargetAction(new ZoomInRetargetAction());
42
        addRetargetAction(new ZoomOutRetargetAction());
43
    }
44
45
	/**
46
	 * @generated
47
	 */
48
    protected void declareGlobalActionKeys() {
49
        addGlobalActionKey(ActionFactory.PRINT.getId());
50
		addGlobalActionKey(ActionFactory.DELETE.getId());
51
    }
52
53
	/**
54
	 * @generated
55
	 */
56
    public void contributeToMenu(IMenuManager menuManager) {
57
        super.contributeToMenu(menuManager);
58
59
        // add a "View" menu after "Edit"
60
        MenuManager viewMenu = new MenuManager("View");
61
        viewMenu.add(getAction(GEFActionConstants.ZOOM_IN));
62
        viewMenu.add(getAction(GEFActionConstants.ZOOM_OUT));
63
        
64
        menuManager.insertAfter(IWorkbenchActionConstants.M_EDIT, viewMenu);
65
    }
66
67
	/**
68
	 * @generated
69
	 */
70
    public void contributeToToolBar(IToolBarManager toolBarManager) {
71
        super.contributeToToolBar(toolBarManager);
72
73
        toolBarManager.add(getAction(ActionFactory.UNDO.getId()));
74
        toolBarManager.add(getAction(ActionFactory.REDO.getId()));
75
    
76
        toolBarManager.add(new Separator());
77
        toolBarManager.add(new ZoomComboContributionItem(getPage()));
78
    }
79
}
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/parts/DiagramEditPartGenerator.java (+406 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.parts;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
import java.util.*;
6
import org.eclipse.emf.codegen.ecore.genmodel.*;
7
8
public class DiagramEditPartGenerator
9
{
10
  protected static String nl;
11
  public static synchronized DiagramEditPartGenerator create(String lineSeparator)
12
  {
13
    nl = lineSeparator;
14
    DiagramEditPartGenerator result = new DiagramEditPartGenerator();
15
    nl = null;
16
    return result;
17
  }
18
19
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
20
  protected final String TEXT_1 = "";
21
  protected final String TEXT_2 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
22
  protected final String TEXT_3 = " extends AbstractGraphicalEditPart implements IUpdatableEditPart {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
23
  protected final String TEXT_4 = "(";
24
  protected final String TEXT_5 = " model) {" + NL + "\t\tsetModel(model);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
25
  protected final String TEXT_6 = " getDiagram() {" + NL + "\t\treturn (";
26
  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) {";
27
  protected final String TEXT_8 = NL + "\t\t\t\tif (request instanceof ";
28
  protected final String TEXT_9 = ".CreateRequestEx) {" + NL + "\t\t\t\t\t";
29
  protected final String TEXT_10 = ".CreateRequestEx requestEx = (";
30
  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) {";
31
  protected final String TEXT_12 = NL + "\t\t\t\t\t\tcase ";
32
  protected final String TEXT_13 = ":" + NL + "\t\t\t\t\t\t\tresult.add(new Create";
33
  protected final String TEXT_14 = "Command(getDiagram(), requestEx, (";
34
  protected final String TEXT_15 = ")getConstraintFor(request)));" + NL + "\t\t\t\t\t\t\tbreak;";
35
  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}";
36
  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 (";
37
  protected final String TEXT_18 = ".class == key) {" + NL + "\t\t\treturn new ";
38
  protected final String TEXT_19 = "(this);" + NL + "\t\t}";
39
  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;
40
  protected final String TEXT_21 = NL;
41
  protected final String TEXT_22 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
42
  protected final String TEXT_23 = "static ";
43
  protected final String TEXT_24 = "class Create";
44
  protected final String TEXT_25 = "Command extends ";
45
  protected final String TEXT_26 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final ";
46
  protected final String TEXT_27 = " parent;" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate ";
47
  protected final String TEXT_28 = " createdNode;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic Create";
48
  protected final String TEXT_29 = "Command(";
49
  protected final String TEXT_30 = " parent, ";
50
  protected final String TEXT_31 = ".CreateRequestEx request";
51
  protected final String TEXT_32 = ", ";
52
  protected final String TEXT_33 = " constraint";
53
  protected final String TEXT_34 = ") {" + NL + "\t\t\tthis.parent = parent;" + NL + "\t\t\tcreatedNode = ";
54
  protected final String TEXT_35 = ".eINSTANCE.createNode();";
55
  protected final String TEXT_36 = NL + "\t\t\t";
56
  protected final String TEXT_37 = " createdDomainElement = ";
57
  protected final String TEXT_38 = ".eINSTANCE.create(" + NL + "\t\t\t\t";
58
  protected final String TEXT_39 = ".eINSTANCE.get";
59
  protected final String TEXT_40 = "());";
60
  protected final String TEXT_41 = NL + "\t\t\t";
61
  protected final String TEXT_42 = " createdDomainElement = ";
62
  protected final String TEXT_43 = ".eINSTANCE.create";
63
  protected final String TEXT_44 = "();";
64
  protected final String TEXT_45 = "\t\t\tcreatedNode.setElement(createdDomainElement);" + NL + "\t\t\t";
65
  protected final String TEXT_46 = NL + "\t\t\t";
66
  protected final String TEXT_47 = ".";
67
  protected final String TEXT_48 = ".initializeElement(createdDomainElement);" + NL + "\t\t\t";
68
  protected final String TEXT_49 = ".decorateView(createdNode);";
69
  protected final String TEXT_50 = NL + "\t\t\t";
70
  protected final String TEXT_51 = " bounds = ";
71
  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);";
72
  protected final String TEXT_53 = NL + "\t\t\tbounds.setWidth(Math.max(constraint.width, ";
73
  protected final String TEXT_54 = "));" + NL + "\t\t\tbounds.setHeight(Math.max(constraint.height, ";
74
  protected final String TEXT_55 = "));";
75
  protected final String TEXT_56 = NL + "\t\t\t";
76
  protected final String TEXT_57 = " domainModelEditDomain = ";
77
  protected final String TEXT_58 = ".getEditingDomainFor(parent.getDiagram().getElement());";
78
  protected final String TEXT_59 = NL + "\t\t\t";
79
  protected final String TEXT_60 = " compoundCommand = new ";
80
  protected final String TEXT_61 = "();" + NL + "\t\t\tcompoundCommand.append(";
81
  protected final String TEXT_62 = ".create(domainModelEditDomain, ";
82
  protected final String TEXT_63 = ", " + NL + "\t\t\t\t";
83
  protected final String TEXT_64 = ".eINSTANCE.get";
84
  protected final String TEXT_65 = "(), createdNode.getElement()));" + NL + "\t\t\tcompoundCommand.append(";
85
  protected final String TEXT_66 = ".create(domainModelEditDomain, ";
86
  protected final String TEXT_67 = ", " + NL + "\t\t\t\t";
87
  protected final String TEXT_68 = ".eINSTANCE.get";
88
  protected final String TEXT_69 = "(), createdNode.getElement()));" + NL + "\t\t\tthis.domainModelAddCommand = compoundCommand;";
89
  protected final String TEXT_70 = NL + "\t\t\tthis.domainModelAddCommand = ";
90
  protected final String TEXT_71 = ".create(domainModelEditDomain, ";
91
  protected final String TEXT_72 = ", " + NL + "\t\t\t\t";
92
  protected final String TEXT_73 = ".eINSTANCE.get";
93
  protected final String TEXT_74 = "(), createdNode.getElement());";
94
  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}";
95
  protected final String TEXT_76 = NL;
96
  protected final String TEXT_77 = NL;
97
  protected final String TEXT_78 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
98
  protected final String TEXT_79 = " structuralFeatures2Refresher;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Refresher getRefresher(";
99
  protected final String TEXT_80 = " feature, ";
100
  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();";
101
  protected final String TEXT_82 = NL;
102
  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(";
103
  protected final String TEXT_84 = ".eINSTANCE.getView_PersistedChildren(), childrenRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
104
  protected final String TEXT_85 = ".eINSTANCE.getView_TransientChildren(), childrenRefresher);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate class UpdateManager extends ";
105
  protected final String TEXT_86 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void notifyChanged(";
106
  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";
107
  protected final String TEXT_88 = " affectedEditParts = findAffectedParts(msg);" + NL + "\t\t\tfor(";
108
  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((";
109
  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 ";
110
  protected final String TEXT_91 = "/*<IUpdatableEditPart>*/ findAffectedParts(";
111
  protected final String TEXT_92 = " msg) {" + NL + "\t\t\tObject notifier = msg.getNotifier();" + NL + "\t\t\tif (notifier instanceof ";
112
  protected final String TEXT_93 = ") {" + NL + "\t\t\t\t";
113
  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 ";
114
  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 ";
115
  protected final String TEXT_96 = ".EMPTY_LIST;" + NL + "\t\t}" + NL + "" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate ";
116
  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 (";
117
  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;
118
  protected final String TEXT_99 = NL;
119
  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 ";
120
  protected final String TEXT_101 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void notifyChanged(";
121
  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((";
122
  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 + "}";
123
124
  public String generate(Object argument)
125
  {
126
    final StringBuffer stringBuffer = new StringBuffer();
127
    
128
GenDiagram genDiagram = (GenDiagram) ((Object[]) argument)[0];
129
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
130
131
    stringBuffer.append(TEXT_1);
132
    
133
importManager.emitPackageStatement(stringBuffer);
134
importManager.addImport("org.eclipse.gef.editparts.AbstractGraphicalEditPart");
135
importManager.addImport("org.eclipse.draw2d.IFigure");
136
importManager.addImport("org.eclipse.draw2d.FreeformLayer");
137
importManager.addImport("org.eclipse.draw2d.FreeformLayout");
138
importManager.addImport("org.eclipse.draw2d.MarginBorder");
139
importManager.addImport("org.eclipse.gef.commands.Command");
140
importManager.addImport("org.eclipse.gef.commands.CompoundCommand");
141
importManager.addImport("org.eclipse.gef.EditPolicy");
142
importManager.addImport("org.eclipse.draw2d.geometry.Dimension");
143
importManager.addImport("org.eclipse.draw2d.geometry.Point");
144
importManager.addImport("org.eclipse.gef.EditPart");
145
importManager.addImport("org.eclipse.gef.SnapToGrid");
146
importManager.addImport("org.eclipse.gef.SnapToHelper");
147
importManager.addImport("org.eclipse.gef.editpolicies.RootComponentEditPolicy");
148
importManager.addImport("org.eclipse.gef.commands.UnexecutableCommand");
149
importManager.addImport("org.eclipse.gef.editpolicies.RootComponentEditPolicy");
150
importManager.addImport("org.eclipse.gef.editpolicies.XYLayoutEditPolicy");
151
importManager.addImport("org.eclipse.gef.requests.ChangeBoundsRequest");
152
importManager.addImport("org.eclipse.gef.requests.CreateRequest");
153
importManager.addImport("org.eclipse.gmf.runtime.notation.Bounds");
154
importManager.addImport("org.eclipse.gmf.runtime.notation.Diagram");
155
importManager.addImport("org.eclipse.gmf.runtime.notation.Node");
156
importManager.addImport("org.eclipse.gmf.runtime.notation.NotationPackage");
157
importManager.addImport("org.eclipse.gmf.runtime.notation.View");
158
importManager.addImport("java.util.List");
159
160
importManager.markImportLocation(stringBuffer);
161
162
    stringBuffer.append(TEXT_2);
163
    stringBuffer.append(genDiagram.getEditPartClassName());
164
    stringBuffer.append(TEXT_3);
165
    stringBuffer.append(genDiagram.getEditPartClassName());
166
    stringBuffer.append(TEXT_4);
167
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram"));
168
    stringBuffer.append(TEXT_5);
169
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram"));
170
    stringBuffer.append(TEXT_6);
171
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Diagram"));
172
    stringBuffer.append(TEXT_7);
173
    if (null != genDiagram.getPalette()) {
174
final Palette palette = genDiagram.getPalette();
175
    stringBuffer.append(TEXT_8);
176
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
177
    stringBuffer.append(TEXT_9);
178
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
179
    stringBuffer.append(TEXT_10);
180
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
181
    stringBuffer.append(TEXT_11);
182
    
183
for(Iterator it = genDiagram.getTopLevelNodes().iterator(); it.hasNext(); ) {
184
	GenTopLevelNode next = (GenTopLevelNode)it.next();
185
186
    stringBuffer.append(TEXT_12);
187
    stringBuffer.append(next.getVisualID());
188
    stringBuffer.append(TEXT_13);
189
    stringBuffer.append(next.getDomainMetaClass().getName());
190
    stringBuffer.append(next.getVisualID());
191
    stringBuffer.append(TEXT_14);
192
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle"));
193
    stringBuffer.append(TEXT_15);
194
    
195
}
196
197
    stringBuffer.append(TEXT_16);
198
    }/*when there's palette*/
199
    stringBuffer.append(TEXT_17);
200
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.SnapToHelper"));
201
    stringBuffer.append(TEXT_18);
202
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.SnapToGrid"));
203
    stringBuffer.append(TEXT_19);
204
    /*@ include file="adapters/propertySource.javajetinc"*/
205
    stringBuffer.append(TEXT_20);
206
    
207
for(Iterator it = genDiagram.getTopLevelNodes().iterator(); genDiagram.getPalette() != null && it.hasNext(); ) {
208
	GenTopLevelNode next = (GenTopLevelNode)it.next();
209
	boolean isStatic = true;
210
	boolean isListLayout = false;
211
	String resolvedSemanticElement = "parent.getElement()";
212
213
    stringBuffer.append(TEXT_21);
214
    stringBuffer.append(TEXT_22);
215
    if (isStatic) {
216
    stringBuffer.append(TEXT_23);
217
    }
218
    stringBuffer.append(TEXT_24);
219
    stringBuffer.append(next.getDomainMetaClass().getName());
220
    stringBuffer.append(next.getVisualID());
221
    stringBuffer.append(TEXT_25);
222
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
223
    stringBuffer.append(TEXT_26);
224
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
225
    stringBuffer.append(TEXT_27);
226
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
227
    stringBuffer.append(TEXT_28);
228
    stringBuffer.append(next.getDomainMetaClass().getName());
229
    stringBuffer.append(next.getVisualID());
230
    stringBuffer.append(TEXT_29);
231
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
232
    stringBuffer.append(TEXT_30);
233
    stringBuffer.append(importManager.getImportedName(genDiagram.getPalette().getFactoryQualifiedClassName()));
234
    stringBuffer.append(TEXT_31);
235
    if (!isListLayout) {
236
    stringBuffer.append(TEXT_32);
237
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle"));
238
    stringBuffer.append(TEXT_33);
239
    }
240
    stringBuffer.append(TEXT_34);
241
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
242
    stringBuffer.append(TEXT_35);
243
    
244
if (next.getDomainMetaClass().isMapEntry()) {
245
/*Workaround for Ecore example: map entries cannot be created using factory, only using reflective EFactory.create() method*/
246
247
    stringBuffer.append(TEXT_36);
248
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
249
    stringBuffer.append(TEXT_37);
250
    stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName()));
251
    stringBuffer.append(TEXT_38);
252
    stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedPackageInterfaceName()));
253
    stringBuffer.append(TEXT_39);
254
    stringBuffer.append(next.getDomainMetaClass().getClassifierAccessorName());
255
    stringBuffer.append(TEXT_40);
256
    
257
} else {
258
259
    stringBuffer.append(TEXT_41);
260
    stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getQualifiedInterfaceName()));
261
    stringBuffer.append(TEXT_42);
262
    stringBuffer.append(importManager.getImportedName(next.getDomainMetaClass().getGenPackage().getQualifiedFactoryInterfaceName()));
263
    stringBuffer.append(TEXT_43);
264
    stringBuffer.append(next.getDomainMetaClass().getClassifierAccessorName());
265
    stringBuffer.append(TEXT_44);
266
    
267
}
268
269
    stringBuffer.append(TEXT_45);
270
    /*XXX: Class name DomainElementInitializer should be user-customizable*/
271
    stringBuffer.append(TEXT_46);
272
    stringBuffer.append(importManager.getImportedName(genDiagram.getNotationViewFactoriesPackageName() + ".DomainElementInitializer"));
273
    stringBuffer.append(TEXT_47);
274
    stringBuffer.append(next.getUniqueIdentifier());
275
    stringBuffer.append(TEXT_48);
276
    stringBuffer.append(importManager.getImportedName(next.getNotationViewFactoryQualifiedClassName()));
277
    stringBuffer.append(TEXT_49);
278
    
279
	if (!isListLayout) {
280
281
    stringBuffer.append(TEXT_50);
282
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds"));
283
    stringBuffer.append(TEXT_51);
284
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
285
    stringBuffer.append(TEXT_52);
286
    
287
		int defaultWidth = 40;
288
		int defaultHeight = 40;
289
		DefaultSizeAttributes defSizeAttrs = (DefaultSizeAttributes) next.getViewmap().find(DefaultSizeAttributes.class);
290
		if (defSizeAttrs != null) {
291
			defaultWidth = defSizeAttrs.getWidth();
292
			defaultHeight = defSizeAttrs.getHeight();
293
		}
294
295
    stringBuffer.append(TEXT_53);
296
    stringBuffer.append(defaultWidth);
297
    stringBuffer.append(TEXT_54);
298
    stringBuffer.append(defaultHeight);
299
    stringBuffer.append(TEXT_55);
300
    
301
	}
302
303
    stringBuffer.append(TEXT_56);
304
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain"));
305
    stringBuffer.append(TEXT_57);
306
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
307
    stringBuffer.append(TEXT_58);
308
    
309
	TypeModelFacet facet = next.getModelFacet();
310
	GenFeature childFeature = facet.getChildMetaFeature();
311
	GenFeature containmentFeature = facet.getContainmentMetaFeature();
312
	if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) {
313
314
    stringBuffer.append(TEXT_59);
315
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
316
    stringBuffer.append(TEXT_60);
317
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
318
    stringBuffer.append(TEXT_61);
319
    stringBuffer.append(importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand"));
320
    stringBuffer.append(TEXT_62);
321
    stringBuffer.append(resolvedSemanticElement);
322
    stringBuffer.append(TEXT_63);
323
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
324
    stringBuffer.append(TEXT_64);
325
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
326
    stringBuffer.append(TEXT_65);
327
    stringBuffer.append(importManager.getImportedName(childFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand"));
328
    stringBuffer.append(TEXT_66);
329
    stringBuffer.append(resolvedSemanticElement);
330
    stringBuffer.append(TEXT_67);
331
    stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName()));
332
    stringBuffer.append(TEXT_68);
333
    stringBuffer.append(childFeature.getFeatureAccessorName());
334
    stringBuffer.append(TEXT_69);
335
    
336
	} else {
337
338
    stringBuffer.append(TEXT_70);
339
    stringBuffer.append(importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand"));
340
    stringBuffer.append(TEXT_71);
341
    stringBuffer.append(resolvedSemanticElement);
342
    stringBuffer.append(TEXT_72);
343
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
344
    stringBuffer.append(TEXT_73);
345
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
346
    stringBuffer.append(TEXT_74);
347
    
348
	}
349
350
    stringBuffer.append(TEXT_75);
351
    
352
}
353
354
    stringBuffer.append(TEXT_76);
355
    stringBuffer.append(TEXT_77);
356
    stringBuffer.append(TEXT_78);
357
    stringBuffer.append(importManager.getImportedName("java.util.HashMap"));
358
    stringBuffer.append(TEXT_79);
359
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
360
    stringBuffer.append(TEXT_80);
361
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification"));
362
    stringBuffer.append(TEXT_81);
363
    stringBuffer.append(TEXT_82);
364
    stringBuffer.append(TEXT_83);
365
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
366
    stringBuffer.append(TEXT_84);
367
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
368
    stringBuffer.append(TEXT_85);
369
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.util.EContentAdapter"));
370
    stringBuffer.append(TEXT_86);
371
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification"));
372
    stringBuffer.append(TEXT_87);
373
    stringBuffer.append(importManager.getImportedName("java.util.Collection"));
374
    stringBuffer.append(TEXT_88);
375
    stringBuffer.append(importManager.getImportedName("java.util.Iterator"));
376
    stringBuffer.append(TEXT_89);
377
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
378
    stringBuffer.append(TEXT_90);
379
    stringBuffer.append(importManager.getImportedName("java.util.Collection"));
380
    stringBuffer.append(TEXT_91);
381
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification"));
382
    stringBuffer.append(TEXT_92);
383
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
384
    stringBuffer.append(TEXT_93);
385
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
386
    stringBuffer.append(TEXT_94);
387
    stringBuffer.append(importManager.getImportedName("java.util.Collections"));
388
    stringBuffer.append(TEXT_95);
389
    stringBuffer.append(importManager.getImportedName("java.util.Collections"));
390
    stringBuffer.append(TEXT_96);
391
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
392
    stringBuffer.append(TEXT_97);
393
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
394
    stringBuffer.append(TEXT_98);
395
    stringBuffer.append(TEXT_99);
396
    stringBuffer.append(TEXT_100);
397
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.impl.AdapterImpl"));
398
    stringBuffer.append(TEXT_101);
399
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification"));
400
    stringBuffer.append(TEXT_102);
401
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
402
    stringBuffer.append(TEXT_103);
403
    importManager.emitSortedImports();
404
    return stringBuffer.toString();
405
  }
406
}
(-)templates/editor/getVisualID.jetinc (+19 lines)
Added Link Here
1
	/**
2
	 * @generated
3
	 */
4
	private static int getVisualID(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> containerView) {
5
		<%=importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")%> annotation = containerView.getEAnnotation("ViewIdentifier"); //$NON-NLS-1$
6
		if (annotation == null) {
7
			return -1;
8
		}
9
		String visualID = (String) annotation.getDetails().get("visualID"); //$NON-NLS-1$
10
		if (visualID == null) {
11
			return -1;
12
		}
13
		try {
14
			return Integer.parseInt(visualID);
15
		} catch (NumberFormatException e) {
16
			<%=importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName())%>.getInstance().logError("Unable to parse \"visualID\" annotation: " + visualID, e);
17
		}
18
		return -1;
19
	}
(-)templates/parts/refreshers.javajetinc/children.javajetinc (+7 lines)
Added Link Here
1
		Refresher childrenRefresher = new Refresher() {
2
			public void refresh() {
3
				refreshChildren();
4
			}
5
		};
6
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getView_PersistedChildren(), childrenRefresher);
7
		structuralFeatures2Refresher.put(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage")%>.eINSTANCE.getView_TransientChildren(), childrenRefresher);
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/providers/LinkViewFactoryGenerator.java (+109 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.providers;
2
3
import org.eclipse.gmf.codegen.gmfgen.*;
4
import org.eclipse.gmf.common.codegen.*;
5
import java.util.*;
6
7
public class LinkViewFactoryGenerator
8
{
9
  protected static String nl;
10
  public static synchronized LinkViewFactoryGenerator create(String lineSeparator)
11
  {
12
    nl = lineSeparator;
13
    LinkViewFactoryGenerator result = new LinkViewFactoryGenerator();
14
    nl = null;
15
    return result;
16
  }
17
18
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
19
  protected final String TEXT_1 = "";
20
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
21
  protected final String TEXT_3 = NL + " */";
22
  protected final String TEXT_4 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
23
  protected final String TEXT_5 = " {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic static void decorateView(";
24
  protected final String TEXT_6 = " view) {";
25
  protected final String TEXT_7 = NL;
26
  protected final String TEXT_8 = " annotation = ";
27
  protected final String TEXT_9 = ".eINSTANCE.createEAnnotation();" + NL + "annotation.setSource(\"ViewIdentifier\"); //$NON-NLS-1$" + NL + "view.getEAnnotations().add(annotation);" + NL + "annotation.getDetails().put(\"modelID\", \"";
28
  protected final String TEXT_10 = "\"); //$NON-NLS-1$" + NL + "annotation.getDetails().put(\"visualID\", \"";
29
  protected final String TEXT_11 = "\"); //$NON-NLS-1$" + NL + "\t\t//XXX: init styles from attributes!!!";
30
  protected final String TEXT_12 = NL + "\t\tcreate";
31
  protected final String TEXT_13 = "Label(view);";
32
  protected final String TEXT_14 = NL + "\t}" + NL;
33
  protected final String TEXT_15 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static void create";
34
  protected final String TEXT_16 = "Label(";
35
  protected final String TEXT_17 = " view) {" + NL + "\t\t";
36
  protected final String TEXT_18 = " label = ";
37
  protected final String TEXT_19 = ".eINSTANCE.createNode();" + NL + "\t\tview.getPersistedChildren().add(label);" + NL + "\t\tlabel.setElement(null);" + NL + "\t\t";
38
  protected final String TEXT_20 = ".decorateView(label);" + NL + "\t}";
39
  protected final String TEXT_21 = NL + "}";
40
41
  public String generate(Object argument)
42
  {
43
    final StringBuffer stringBuffer = new StringBuffer();
44
    
45
GenLink genElement = (GenLink) ((Object[]) argument)[0];
46
GenDiagram genDiagram = genElement.getDiagram();
47
ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
48
49
    stringBuffer.append(TEXT_1);
50
    
51
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
52
if (copyrightText != null && copyrightText.trim().length() > 0) {
53
54
    stringBuffer.append(TEXT_2);
55
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
56
    stringBuffer.append(TEXT_3);
57
    }
58
    importManager.emitPackageStatement(stringBuffer);
59
60
importManager.markImportLocation(stringBuffer);
61
62
    stringBuffer.append(TEXT_4);
63
    stringBuffer.append(genElement.getNotationViewFactoryClassName());
64
    stringBuffer.append(TEXT_5);
65
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
66
    stringBuffer.append(TEXT_6);
67
    stringBuffer.append(TEXT_7);
68
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
69
    stringBuffer.append(TEXT_8);
70
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory"));
71
    stringBuffer.append(TEXT_9);
72
    stringBuffer.append(genDiagram.getEditorGen().getModelID());
73
    stringBuffer.append(TEXT_10);
74
    stringBuffer.append(genElement.getVisualID());
75
    stringBuffer.append(TEXT_11);
76
    
77
for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) {
78
	GenLinkLabel label = (GenLinkLabel) it.next();
79
80
    stringBuffer.append(TEXT_12);
81
    stringBuffer.append(label.getVisualID());
82
    stringBuffer.append(TEXT_13);
83
    
84
}/*iterate over labels*/
85
86
    stringBuffer.append(TEXT_14);
87
    
88
for (Iterator it = genElement.getLabels().iterator(); it.hasNext(); ) {
89
	GenLinkLabel label = (GenLinkLabel) it.next();
90
91
    stringBuffer.append(TEXT_15);
92
    stringBuffer.append(label.getVisualID());
93
    stringBuffer.append(TEXT_16);
94
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
95
    stringBuffer.append(TEXT_17);
96
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
97
    stringBuffer.append(TEXT_18);
98
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
99
    stringBuffer.append(TEXT_19);
100
    stringBuffer.append(importManager.getImportedName(label.getNotationViewFactoryQualifiedClassName()));
101
    stringBuffer.append(TEXT_20);
102
    
103
}/*iterate over labels*/
104
105
    stringBuffer.append(TEXT_21);
106
    importManager.emitSortedImports();
107
    return stringBuffer.toString();
108
  }
109
}
(-)templates/parts/LinkEditPart.javajet (+181 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="LinkEditPartGenerator"
2
	imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.emf.ecore.*"%>
3
<%
4
GenLink genLink = (GenLink) ((Object[]) argument)[0];
5
GenDiagram genDiagram = genLink.getDiagram();
6
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
7
%>
8
<%@ include file="../copyright4java.jetinc"%>
9
<%
10
importManager.emitPackageStatement(stringBuffer);
11
importManager.addImport("java.util.List");
12
importManager.markImportLocation(stringBuffer);
13
%>
14
15
/**
16
 * @generated
17
 */
18
public class <%=genLink.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractConnectionEditPart")%> implements IUpdatableEditPart {
19
	/**
20
	 * @generated
21
	 */
22
	public <%=genLink.getEditPartClassName()%>(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view) {
23
		assert view instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")%>;
24
		setModel(view);
25
	}
26
27
	/**
28
	 * @generated
29
	 */
30
	public <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")%> getDiagramEdge() {
31
		return (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")%>) getModel();
32
	}
33
34
	/**
35
	 * @generated
36
	 */
37
	protected void createEditPolicies() {
38
		//XXX: install correct edit policies!
39
<%@ include file="linkComponentEditPolicy.javajetinc"%>
40
		installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.CONNECTION_ENDPOINTS_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ConnectionEndpointEditPolicy")%>());
41
	}
42
43
<%
44
if (genLink.getLabels().size() > 0) {
45
	GenLinkLabel primaryLabel = (GenLinkLabel)genLink.getLabels().get(0);
46
%>
47
<%@ include file="../editor/getVisualID.jetinc" %>
48
49
	/**
50
	 * Returns the label which should be direct-edited by default.
51
	 * @generated
52
	 */
53
	private <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> getPrimaryLabelEditPart() {
54
		for(<%=importManager.getImportedName("java.util.Iterator")%> it = getDiagramEdge().getChildren().iterator(); it.hasNext(); ) {
55
			<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> nextChild = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>)it.next();
56
			if (getVisualID(nextChild) == <%=primaryLabel.getVisualID()%>) {
57
				return (EditPart) getViewer().getEditPartRegistry().get(nextChild);
58
			}
59
		}
60
		return null;
61
	}
62
63
	/**
64
	 * @generated
65
	 */
66
	public void performRequest(<%=importManager.getImportedName("org.eclipse.gef.Request")%> req) {
67
		if (<%=importManager.getImportedName("org.eclipse.gef.RequestConstants")%>.REQ_DIRECT_EDIT == req.getType()) {
68
			<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> primaryLabel = getPrimaryLabelEditPart();
69
			if (primaryLabel != null) {
70
				primaryLabel.performRequest(req);
71
			}
72
		}
73
	}
74
<%
75
}	//if (genLink.getLabels().size() > 0)
76
%>
77
78
	/**
79
	 * @generated
80
	 */
81
	protected List getModelChildren() {
82
		return ((Edge)getModel()).getChildren();
83
	}
84
85
<%@ include file="refresher.javajetinc"%>
86
87
	/**
88
	 * @generated
89
	 */
90
	public void activate() {
91
		super.activate();
92
		getDiagramEdge().getElement().eAdapters().add(domainModelRefresher);
93
	}
94
95
	/**
96
	 * @generated
97
	 */
98
	public void deactivate() {
99
		getDiagramEdge().getElement().eAdapters().remove(domainModelRefresher);
100
		super.deactivate();
101
	}
102
103
<%@ include file="refreshers.javajetinc/domainModelRefresher.javajetinc"%>
104
105
<%@ include file="refreshers.javajetinc/externalRefreshers.javajetinc"%>
106
107
	/**
108
	 * @generated
109
	 */
110
	private void createRefreshers() {
111
		structuralFeatures2Refresher = new HashMap();
112
<%@ include file="refreshers.javajetinc/children.javajetinc"%>
113
<%@ include file="refreshers.javajetinc/visibility.javajetinc"%>
114
	}
115
116
	/**
117
	 * @generated
118
	 */
119
	protected void refreshVisuals() {
120
		super.refreshVisuals();
121
//XXX:		refreshBackgroundColor();
122
//XXX:		refreshForegroundColor();
123
//XXX:		refreshFont();
124
		refreshVisibility();
125
	}
126
127
	/**
128
	 * @generated
129
	 */
130
	protected void refreshVisibility() {
131
		boolean isVisible = ((View)getModel()).isVisible();
132
		boolean wasVisible = getFigure().isVisible();
133
		if (isVisible == wasVisible) {
134
			return;
135
		}
136
		if (!isVisible && (getSelected() != SELECTED_NONE)) {
137
			getViewer().deselect(this);
138
		}
139
140
		getFigure().setVisible(isVisible);
141
		getFigure().revalidate();
142
	}
143
144
	/**
145
	 * Creates figure for this edit part.
146
	 * 
147
	 * Body of this method does not depend on settings in generation model
148
	 * so you may safely remove <i>generated</i> tag and modify it.
149
	 * 
150
	 * @generated
151
	 */
152
	protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> createFigure() {<%
153
Viewmap viewmap = genLink.getViewmap();
154
if (viewmap instanceof FigureViewmap) {
155
	String figureQualifiedClassName = null;
156
	figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName();
157
	if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) {
158
		figureQualifiedClassName = "org.eclipse.gmf.runtime.draw2d.PolylineConnection";
159
	}
160
%>
161
		return new <%=importManager.getImportedName(figureQualifiedClassName)%>();
162
<%} // instanceof FigureViewmap
163
	else if (viewmap instanceof SnippetViewmap) {%>
164
		return <%=((SnippetViewmap) viewmap).getBody()%>;
165
<%} // instanceof SnippetViewmap 
166
	else if (viewmap instanceof InnerClassViewmap) {%>
167
 		return new <%=((InnerClassViewmap) viewmap).getClassName()%>();
168
<%}%>
169
	}
170
171
<%
172
if (genLink.getViewmap() instanceof InnerClassViewmap) {
173
	String classBody = ((InnerClassViewmap) genLink.getViewmap()).getClassBody();
174
%>
175
<%=classBody%>
176
<%@ include file="mapmodeWorkaround.javajetinc"%>
177
<%
178
}
179
%>
180
}
181
<%importManager.emitSortedImports();%>
(-)templates/providers/createVIDAnnotation.jetinc (+5 lines)
Added Link Here
1
<%=importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")%> annotation = <%=importManager.getImportedName("org.eclipse.emf.ecore.EcoreFactory")%>.eINSTANCE.createEAnnotation();
2
annotation.setSource("ViewIdentifier"); //$NON-NLS-1$
3
view.getEAnnotations().add(annotation);
4
annotation.getDetails().put("modelID", "<%=genDiagram.getEditorGen().getModelID()%>"); //$NON-NLS-1$
5
annotation.getDetails().put("visualID", "<%=genElement.getVisualID()%>"); //$NON-NLS-1$
(-)templates/parts/NodeEditPart.javajet (+819 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.parts" class="NodeEditPartGenerator"
2
	imports="java.util.* org.eclipse.emf.codegen.ecore.genmodel.* org.eclipse.gmf.codegen.gmfgen.* org.eclipse.gmf.common.codegen.* org.eclipse.emf.ecore.*"
3
%>
4
<%
5
GenNode genNode = (GenNode) ((Object[]) argument)[0];
6
GenDiagram genDiagram = genNode.getDiagram();
7
Palette palette = genDiagram.getPalette();
8
boolean useFlowLayout = !genNode.isListLayout();
9
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
10
%>
11
<%@ include file="../copyright4java.jetinc"%>
12
13
<%importManager.emitPackageStatement(stringBuffer);%>
14
<%
15
/*XXX: temporary hack to generate compilable code in tests (where class NodeEditPart extends NodeEditPart is generated otherwise)*/
16
importManager.registerInnerClass(genNode.getEditPartClassName());
17
importManager.markImportLocation(stringBuffer);
18
%>
19
20
/**
21
 * @generated
22
 */
23
public class <%=genNode.getEditPartClassName()%> extends <%=importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart")%> implements <%=importManager.getImportedName("org.eclipse.gef.NodeEditPart")%>, IUpdatableEditPart {
24
	/**
25
	 * @generated
26
	 */
27
	protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> contentPane;
28
29
	/**
30
	 * @generated
31
	 */
32
	protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> primaryShape;
33
34
	/**
35
	 * @generated
36
	 */
37
	public <%=genNode.getEditPartClassName()%>(<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> model) {
38
		assert model instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>;
39
		setModel(model);
40
	}
41
42
	/**
43
	 * @generated
44
	 */
45
	protected void createEditPolicies() {
46
<%@ include file="componentEditPolicy.javajetinc"%>
47
		installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.LAYOUT_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ConstrainedLayoutEditPolicy")%>() {
48
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getCreateCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.CreateRequest")%> request) {
49
				return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
50
			}
51
			protected Object getConstraintFor(<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%> rect) {
52
				return null;
53
			}
54
			protected Object getConstraintFor(<%=importManager.getImportedName("org.eclipse.draw2d.geometry.Point")%> point) {
55
				return null;
56
			}
57
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> createChangeConstraintCommand(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> child, Object constraint) {
58
				return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
59
			}
60
			protected <%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%> createChildEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> child) {
61
				return new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.ResizableEditPolicy")%>() {
62
					public <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> getTargetEditPart(<%=importManager.getImportedName("org.eclipse.gef.Request")%> request) {
63
						if (<%=importManager.getImportedName("org.eclipse.gef.RequestConstants")%>.REQ_SELECTION.equals(request.getType())) {
64
							return <%=genNode.getEditPartClassName()%>.this;
65
						}
66
						return super.getTargetEditPart(request);
67
					}
68
				};
69
			}
70
		});
71
		installEditPolicy(<%=importManager.getImportedName("org.eclipse.gef.EditPolicy")%>.GRAPHICAL_NODE_ROLE, new <%=importManager.getImportedName("org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy")%>() {
72
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getReconnectTargetCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.ReconnectRequest")%> request) {
73
				//XXX: reconnect command
74
				return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
75
			}
76
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getReconnectSourceCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.ReconnectRequest")%> request) {
77
				//XXX: reconnect command
78
				return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
79
			}
80
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getConnectionCreateCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest")%> request) {
81
<%if (palette != null) {%>
82
				if (request instanceof <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx) {
83
					<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx requestEx = (<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx) request;
84
					int[] visualIds = requestEx.getVisualIds();
85
					int matchingVisualIdsCount = 0;
86
					for (int i = 0; i < visualIds.length; i++) {
87
						int nextVisualId = visualIds[i];
88
						switch (nextVisualId) {
89
<%
90
for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) {
91
	GenLink genLink = (GenLink)it.next();
92
	if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) {
93
		continue;
94
	}
95
	GenClass outgoingClass;
96
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
97
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
98
		outgoingClass = modelFacet.getSourceMetaFeature() == null
99
			? modelFacet.getContainmentMetaFeature().getGenClass()
100
			: modelFacet.getSourceMetaFeature().getTypeGenClass();
101
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
102
		GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature();
103
		outgoingClass = metaFeature.getGenClass();
104
	} else {
105
		continue;
106
	}
107
	if (!outgoingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) {
108
		continue;
109
	}
110
%>
111
						case <%=genLink.getVisualID()%>:
112
							matchingVisualIdsCount++;
113
							break;
114
<%
115
}
116
%>
117
						}
118
					}
119
					if (matchingVisualIdsCount != 1) {
120
						//Cannot create several connections at once.
121
						return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
122
					}
123
					<%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> result = new <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%>() {
124
						//XXX: check multiplicity requirements etc.
125
					};
126
					request.setStartCommand(result);
127
					return result;
128
				}
129
<%}/*when there's palette*/%>
130
				return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
131
			}
132
			protected <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> getConnectionCompleteCommand(<%=importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest")%> request) {
133
<%if (palette != null) {%>
134
				if (request.getStartCommand() == null || !request.getStartCommand().canExecute()) {
135
					return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
136
				}
137
				if (request instanceof <%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx) {
138
					<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx requestEx = (<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx) request;
139
					int[] visualIds = requestEx.getVisualIds();
140
					<%=importManager.getImportedName("org.eclipse.gef.commands.CompoundCommand")%> result = new <%=importManager.getImportedName("org.eclipse.gef.commands.CompoundCommand")%>();
141
					for (int i = 0; i < visualIds.length; i++) {
142
						int nextVisualId = visualIds[i];
143
						switch (nextVisualId) {
144
<%
145
for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) {
146
	GenLink genLink = (GenLink)it.next();
147
	if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) {
148
		continue;
149
	}
150
	GenClass incomingClass;
151
	String createCommandNameInfix;
152
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
153
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
154
		incomingClass = modelFacet.getTargetMetaFeature().getTypeGenClass();
155
		createCommandNameInfix = modelFacet.getMetaClass().getName();
156
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
157
		GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature();
158
		incomingClass = metaFeature.getTypeGenClass();
159
		createCommandNameInfix = metaFeature.getFeatureAccessorName();
160
	} else {
161
		continue;
162
	}
163
	if (!incomingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) {
164
		continue;
165
	}
166
%>
167
						case <%=genLink.getVisualID()%>:
168
							result.add(new Create<%=createCommandNameInfix%><%=genLink.getVisualID()%>Command(requestEx));
169
							break;
170
<%
171
}
172
%>
173
						}
174
					}
175
					if (result.getChildren().length != 1) {
176
						//Cannot create several connections at once.
177
						return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
178
					}
179
					return result.unwrap();
180
				}
181
<%}/*when there's palette*/%>
182
				return <%=importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand")%>.INSTANCE;
183
			}
184
		});
185
	}
186
187
	/**
188
	 * @generated
189
	 */
190
	protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> createFigure() {
191
		<%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> invisibleRectangle = new <%=importManager.getImportedName("org.eclipse.draw2d.Figure")%>();
192
		invisibleRectangle.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.StackLayout")%>());
193
		<%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> shape = createNodeShape();
194
		invisibleRectangle.add(shape);
195
		contentPane = setupContentPane(shape);
196
		
197
		<%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> decorationShape = createDecorationPane();
198
		if (decorationShape != null) {
199
			invisibleRectangle.add(decorationShape);
200
		}
201
202
		return invisibleRectangle;
203
	}
204
205
	/**
206
	 * @generated
207
	 */
208
	protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> createNodeShape() {
209
<%
210
String figureQualifiedClassName = null;
211
Viewmap viewmap = genNode.getViewmap();
212
if (viewmap instanceof FigureViewmap) {
213
	figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName();
214
	if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) {
215
		figureQualifiedClassName = "org.eclipse.draw2d.RectangleFigure";
216
	}
217
%>
218
		primaryShape = new <%=importManager.getImportedName(figureQualifiedClassName)%>()<%if (useFlowLayout) {%> {
219
			protected boolean useLocalCoordinates() {
220
				return true;
221
			}
222
		}<%} /* use flow layout*/ %>;
223
<%} else if (viewmap instanceof SnippetViewmap) {%>
224
		primaryShape = <%=((SnippetViewmap) viewmap).getBody()%>;
225
<%} else if (viewmap instanceof InnerClassViewmap) {
226
 	figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName();
227
%>
228
		<%=figureQualifiedClassName%> figure = new <%=figureQualifiedClassName%>();
229
 		figure.setUseLocalCoordinates(<%=useFlowLayout ? "true" : "false"%>);
230
 		primaryShape = figure;
231
<%}%>
232
		return primaryShape;
233
	}
234
235
	/**
236
	 * @generated
237
	 */
238
	private <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> createDecorationPane() {
239
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> view = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) getModel();
240
		<%=importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation")%> annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$
241
		if (annotation == null) {
242
			return null;
243
		}
244
		
245
		<%=importManager.getImportedName("org.eclipse.draw2d.Figure")%> decorationPane = new <%=importManager.getImportedName("org.eclipse.draw2d.Figure")%>();
246
		decorationPane.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.BorderLayout")%>());
247
248
		<%=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);
249
		decorationPane.add(imageFigure, <%=importManager.getImportedName("org.eclipse.draw2d.BorderLayout")%>.BOTTOM);
250
 		return decorationPane;
251
	}
252
253
	/**
254
	 * Default implementation treats passed figure as content pane.
255
	 * Respects layout one may have set for generated figure.
256
	 * @param nodeShape instance of generated figure class
257
	 * @generated
258
	 */
259
	protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> setupContentPane(<%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> nodeShape) {
260
		if (nodeShape.getLayoutManager() == null) {
261
<%
262
if (!useFlowLayout) {
263
	String layoutClassName = importManager.getImportedName("org.eclipse.draw2d.ToolbarLayout");
264
%>
265
			<%=layoutClassName%> layout = new <%=layoutClassName%>();
266
			layout.setSpacing(5);
267
			nodeShape.setLayoutManager(layout);
268
<%} else {%>
269
		nodeShape.setLayoutManager(new <%=importManager.getImportedName("org.eclipse.draw2d.FreeformLayout")%>() {
270
271
			public Object getConstraint(<%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> figure) {
272
				Object result = constraints.get(figure);
273
				if (result == null) {
274
					result = new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%>(0, 0, -1, -1);
275
				}
276
				return result;
277
			}
278
		});
279
<%}%>
280
		}
281
		return nodeShape; // use nodeShape itself as contentPane
282
	}
283
284
	/**
285
	 * @generated
286
	 */
287
	public <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> getContentPane() {
288
		if (contentPane == null) {
289
			return super.getContentPane();
290
		}
291
		return contentPane;
292
	}
293
294
	/**
295
	 * @generated
296
	 */
297
	public <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> getDiagramNode() {
298
		return (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%>) getModel();
299
	}
300
301
<%
302
	boolean hasFixedChildren = false;
303
	List innerLabels = new ArrayList(genNode.getLabels().size());
304
	for (Iterator it = genNode.getLabels().iterator(); it.hasNext(); ) {
305
		GenNodeLabel genLabel = (GenNodeLabel) it.next();
306
		if (!(genLabel instanceof GenExternalNodeLabel)) {
307
			innerLabels.add(genLabel);
308
		}
309
	}
310
	if (!innerLabels.isEmpty()) {
311
		hasFixedChildren = true;
312
%>
313
	/**
314
	 * @generated
315
	 */
316
	protected boolean addFixedChild(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart) {
317
<%
318
		for (Iterator it = innerLabels.iterator(); it.hasNext(); ) {
319
			GenNodeLabel genLabel = (GenNodeLabel) it.next();
320
			String labelEditPart = importManager.getImportedName(genLabel.getEditPartQualifiedClassName());
321
			String labelFigureClassName = null;
322
			boolean isAccessor;
323
			if (genLabel.getViewmap() instanceof InnerClassViewmap) {
324
				labelFigureClassName = ((InnerClassViewmap) genLabel.getViewmap()).getClassName();
325
				isAccessor = true;
326
			} else if (genLabel.getViewmap() instanceof FigureViewmap) {
327
				labelFigureClassName = ((FigureViewmap) genLabel.getViewmap()).getFigureQualifiedClassName();
328
				isAccessor = false;
329
			} else {
330
				// temp hack to make tests pass
331
				labelFigureClassName = "org.eclipse.draw2d.Label";
332
				isAccessor = false;
333
			}
334
%>
335
		if (childEditPart instanceof <%=labelEditPart%>) {
336
<%			if (isAccessor) {%>
337
			((<%=labelEditPart%>) childEditPart).setLabel(((<%=figureQualifiedClassName%>) primaryShape).getFigure<%=labelFigureClassName%>());
338
<%			} else {%>
339
			((<%=labelEditPart%>) childEditPart).setLabel(new <%=labelFigureClassName%>());
340
<%			}%>
341
			return true;
342
		}
343
<%		}%>
344
		return false;
345
	}
346
347
<%@ include file="../editor/getVisualID.jetinc" %>
348
349
	/**
350
	 * Returns the label which should be direct-edited by default.
351
	 * @generated
352
	 */
353
	private <%=importManager.getImportedName("org.eclipse.gef.EditPart")%> getPrimaryLabelEditPart() {
354
		for(<%=importManager.getImportedName("java.util.Iterator")%> it = getDiagramNode().getChildren().iterator(); it.hasNext(); ) {
355
			<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> nextChild = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>)it.next();
356
			if (getVisualID(nextChild) == <%=((GenNodeLabel)innerLabels.get(0)).getVisualID()%>) {
357
				return (<%=importManager.getImportedName("org.eclipse.gef.EditPart")%>) getViewer().getEditPartRegistry().get(nextChild);
358
			}
359
		}
360
		return null;
361
	}
362
363
	/**
364
	 * @generated
365
	 */
366
	public void performRequest(<%=importManager.getImportedName("org.eclipse.gef.Request")%> req) {
367
		if (<%=importManager.getImportedName("org.eclipse.gef.RequestConstants")%>.REQ_DIRECT_EDIT == req.getType()) {
368
			<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> primaryLabel = getPrimaryLabelEditPart();
369
			if (primaryLabel != null) {
370
				primaryLabel.performRequest(req);
371
			}
372
		}
373
	}
374
375
<%
376
	}
377
%>
378
<%
379
boolean hasExternalLabels = false;
380
for (Iterator labels = genNode.getLabels().iterator(); labels.hasNext();) {
381
	GenNodeLabel label = (GenNodeLabel) labels.next();
382
	if (label instanceof GenExternalNodeLabel) {
383
		hasExternalLabels = true;
384
		break;
385
	}
386
}
387
if (hasExternalLabels) {
388
%>
389
	/**
390
	 * @generated
391
	 */
392
	protected void addChildVisual(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart, int index) {
393
		if (isExternalLabel(childEditPart)) {
394
			<%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> labelFigure = ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) childEditPart).getFigure();
395
			getExternalLabelsContainer().add(labelFigure);
396
		} else {
397
<%	if (hasFixedChildren) {%>
398
			if (!addFixedChild(childEditPart)) {
399
				super.addChildVisual(childEditPart, -1);
400
			}
401
<%	} else {%>
402
			super.addChildVisual(childEditPart, -1);
403
<%	}%>
404
		}
405
	}
406
407
	/**
408
	 * @generated
409
	 */
410
	protected void removeChildVisual(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart) {
411
		if (isExternalLabel(childEditPart)) {
412
			<%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> labelFigure = ((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) childEditPart).getFigure();
413
			getExternalLabelsContainer().remove(labelFigure);
414
		} else {
415
			super.removeChildVisual(childEditPart);
416
		}
417
	}
418
419
	/**
420
	 * @generated
421
	 */
422
	protected boolean isExternalLabel(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart) {
423
<%
424
	for (Iterator labels = genNode.getLabels().iterator(); labels.hasNext();) {
425
		GenNodeLabel label = (GenNodeLabel) labels.next();
426
		if (label instanceof GenExternalNodeLabel) {
427
%>
428
		if (childEditPart instanceof <%=importManager.getImportedName(label.getEditPartQualifiedClassName())%>) {
429
			return true;
430
		}
431
<%
432
		}
433
	}
434
%>
435
		return false;
436
	}
437
438
	/**
439
	 * @generated
440
	 */
441
	protected <%=importManager.getImportedName("org.eclipse.draw2d.IFigure")%> getExternalLabelsContainer() {
442
		<%=importManager.getImportedName("org.eclipse.gef.editparts.ScalableFreeformRootEditPart")%> root = (<%=importManager.getImportedName("org.eclipse.gef.editparts.ScalableFreeformRootEditPart")%>) getRoot();
443
		return root.getLayer(<%=importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName())%>.EXTERNAL_NODE_LABELS_LAYER);
444
	}
445
446
<%
447
} else {
448
	if (hasFixedChildren) {%>
449
450
	/**
451
	 * @generated
452
	 */
453
	protected void addChildVisual(<%=importManager.getImportedName("org.eclipse.gef.EditPart")%> childEditPart, int index) {
454
		if (!addFixedChild(childEditPart)) {
455
			super.addChildVisual(childEditPart, -1);
456
		}
457
	}
458
<%
459
	}
460
}
461
%>
462
463
	/**
464
	 * @generated
465
	 */
466
	protected void refreshVisuals() {
467
		super.refreshVisuals();
468
		refreshBounds();
469
		refreshBackgroundColor();
470
		refreshForegroundColor();
471
		refreshFont();
472
		refreshVisibility();
473
	}
474
475
	/**
476
	 * @generated
477
	 */
478
	protected void refreshVisibility() {
479
		boolean isVisible = getDiagramNode().isVisible();
480
		boolean wasVisible = getFigure().isVisible();
481
		if (isVisible == wasVisible) {
482
			return;
483
		}
484
		if (!isVisible && (getSelected() != SELECTED_NONE)) {
485
			getViewer().deselect(this);
486
		}
487
488
		getFigure().setVisible(isVisible);
489
		getFigure().revalidate();
490
	}
491
492
	/**
493
	 * @generated
494
	 */
495
	protected void refreshBounds() {
496
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node")%> node = getDiagramNode();
497
		assert node.getLayoutConstraint() instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%>;
498
		<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%> bounds = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds")%>) node.getLayoutConstraint();
499
		((<%=importManager.getImportedName("org.eclipse.gef.GraphicalEditPart")%>) getParent()).setLayoutConstraint(this, getFigure(), 
500
			new <%=importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle")%>(bounds.getX(), bounds.getY(), bounds.getWidth(), bounds.getHeight()));
501
	}
502
503
	/**
504
	 * @generated
505
	 */
506
	protected <%=importManager.getImportedName("java.util.List")%> getModelChildren() {
507
		return getDiagramNode().getVisibleChildren();
508
	}
509
510
	/**
511
	 * @generated
512
	 */
513
	protected <%=importManager.getImportedName("java.util.List")%> getModelSourceConnections() {
514
		return getDiagramNode().getSourceEdges();
515
	}
516
517
	/**
518
	 * @generated
519
	 */
520
	protected <%=importManager.getImportedName("java.util.List")%> getModelTargetConnections() {
521
		return getDiagramNode().getTargetEdges();
522
	}
523
524
	/**
525
	 * @generated
526
	 */
527
	public <%=importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")%> getSourceConnectionAnchor(<%=importManager.getImportedName("org.eclipse.gef.ConnectionEditPart")%> connection) {
528
		return new <%=importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")%>(getFigure());
529
	}
530
531
	/**
532
	 * @generated
533
	 */
534
	public <%=importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")%> getSourceConnectionAnchor(<%=importManager.getImportedName("org.eclipse.gef.Request")%> request) {
535
		return new <%=importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")%>(getFigure());
536
	}
537
538
	/**
539
	 * @generated
540
	 */
541
	public <%=importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")%>  getTargetConnectionAnchor(<%=importManager.getImportedName("org.eclipse.gef.ConnectionEditPart")%> connection) {
542
		return new <%=importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")%>(getFigure());
543
	}
544
545
	/**
546
	 * @generated
547
	 */
548
	public <%=importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor")%>  getTargetConnectionAnchor(<%=importManager.getImportedName("org.eclipse.gef.Request")%> request) {
549
		return new <%=importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor")%>(getFigure());
550
	}
551
552
	/**
553
	 * @generated
554
	 */
555
	public Object getAdapter(Class key) {
556
<%/*@ include file="adapters/propertySource.javajetinc"*/%>
557
		return super.getAdapter(key);
558
	}
559
560
	/**
561
	 * @generated
562
	 */
563
	public void activate() {
564
		super.activate();
565
		getDiagramNode().getElement().eAdapters().add(domainModelRefresher);
566
	}
567
568
	/**
569
	 * @generated
570
	 */
571
	public void deactivate() {
572
		getDiagramNode().getElement().eAdapters().remove(domainModelRefresher);
573
		super.deactivate();
574
	}
575
576
<%@ include file="refreshers.javajetinc/domainModelRefresher.javajetinc"%>
577
578
<%@ include file="refreshers.javajetinc/externalRefreshers.javajetinc"%>
579
580
<%
581
	final String primaryView = "getDiagramNode()";
582
%>
583
<%@ include file="refreshMethods/font.javajetinc"%>
584
585
<%@ include file="refreshMethods/shapeColor.javajetinc"%>
586
587
<%@ include file="refresher.javajetinc"%>
588
589
	/**
590
	 * @generated
591
	 */
592
	private void createRefreshers() {
593
		structuralFeatures2Refresher = new <%=importManager.getImportedName("java.util.HashMap")%>();
594
<%@ include file="refreshers.javajetinc/children.javajetinc"%>
595
<%@ include file="refreshers.javajetinc/bounds.javajetinc"%>
596
<%@ include file="refreshers.javajetinc/visibility.javajetinc"%>
597
<%@ include file="refreshers.javajetinc/sourceEdges.javajetinc"%>
598
<%@ include file="refreshers.javajetinc/targetEdges.javajetinc"%>
599
<%@ include file="refreshers.javajetinc/font.javajetinc"%>
600
<%@ include file="refreshers.javajetinc/shapeColor.javajetinc"%>
601
	}
602
603
<%/*XXX: probably, this should go to a separate jet-template along with GraphicalNodeEditPolicy*/%>
604
<%
605
for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) {
606
	GenLink genLink = (GenLink)it.next();
607
	if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) {
608
		continue;
609
	}
610
	GenClass incomingClass;
611
	String createCommandNameInfix;
612
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
613
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
614
		incomingClass = modelFacet.getTargetMetaFeature().getTypeGenClass();
615
		createCommandNameInfix = modelFacet.getMetaClass().getName();
616
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
617
		GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature();
618
		incomingClass = metaFeature.getTypeGenClass();
619
		createCommandNameInfix = metaFeature.getFeatureAccessorName();
620
	} else {
621
		continue;
622
	}
623
	if (!incomingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) {
624
		continue;
625
	}
626
%>
627
<%if (palette != null) {%>
628
	/**
629
	 * @generated
630
	 */
631
	private static class Create<%=createCommandNameInfix%><%=genLink.getVisualID()%>Command extends <%=importManager.getImportedName("org.eclipse.gef.commands.Command")%> {
632
		/**
633
		 * @generated
634
		 */
635
		private final <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> source;
636
		/**
637
		 * @generated
638
		 */
639
		private final <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%> target;
640
		/**
641
		 * @generated
642
		 */
643
		private final <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge")%> createdEdge;
644
		/**
645
		 * @generated
646
		 */
647
		private final org.eclipse.emf.common.command.Command domainModelAddCommand;
648
		/**
649
		 * @generated
650
		 */
651
		public Create<%=createCommandNameInfix%><%=genLink.getVisualID()%>Command(<%=importManager.getImportedName(palette.getFactoryQualifiedClassName())%>.CreateConnectionRequestEx requestEx) {
652
			if (requestEx.getSourceEditPart().getModel() instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) {
653
				source = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>)requestEx.getSourceEditPart().getModel();
654
			} else {
655
				source = null;
656
			}
657
			if (requestEx.getTargetEditPart().getModel() instanceof <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>) {
658
				target = (<%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.View")%>)requestEx.getTargetEditPart().getModel();
659
			} else {
660
				target = null;
661
			}
662
			createdEdge = <%=importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory")%>.eINSTANCE.createEdge();
663
<%
664
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
665
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
666
		GenClass linkClass = modelFacet.getMetaClass();
667
%>
668
			<%=importManager.getImportedName(importManager.getImportedName(linkClass.getQualifiedInterfaceName()))%> createdDomainElement = <%=importManager.getImportedName(linkClass.getGenPackage().getQualifiedFactoryInterfaceName())%>.eINSTANCE.create<%=linkClass.getClassifierAccessorName()%>();
669
			createdEdge.setElement(createdDomainElement);
670
			<%/*XXX: Class name DomainElementInitializer should be user-customizable*/%>
671
			<%=importManager.getImportedName(genDiagram.getNotationViewFactoriesPackageName() + ".DomainElementInitializer")%>.<%=genLink.getUniqueIdentifier()%>.initializeElement(createdDomainElement);
672
<%
673
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
674
%>
675
			createdEdge.setElement(target.getElement());		//XXX: is this correct?
676
<%
677
	}
678
%>
679
			<%=importManager.getImportedName(genLink.getNotationViewFactoryQualifiedClassName())%>.decorateView(createdEdge);
680
			<%=importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain")%> domainModelEditDomain = <%=importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain")%>.getEditingDomainFor(source.getDiagram().getElement());
681
<%
682
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
683
%>
684
			org.eclipse.emf.common.command.CompoundCommand addLinkEndsCommand = new org.eclipse.emf.common.command.CompoundCommand();
685
<%
686
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
687
		GenFeature sourceFeature = modelFacet.getSourceMetaFeature();
688
		GenFeature containmentFeature = modelFacet.getContainmentMetaFeature();
689
		GenFeature childFeature = modelFacet.getChildMetaFeature();
690
		GenFeature targetFeature = modelFacet.getTargetMetaFeature();
691
		//source/link features seem to be pointing from link to its ends, not vice versa.
692
		//Anyway, if there is containment feature and it is not opposite to either the source/target, we should add containment, 
693
		//otherwise we will have problems with saving uncontained EObjects.
694
		boolean addSource = sourceFeature != null;
695
		boolean addTarget = targetFeature != null;
696
		boolean addChild = childFeature != null && childFeature != containmentFeature && !childFeature.isDerived();
697
		if (containmentFeature != null) {
698
			if (sourceFeature != null && sourceFeature.getEcoreFeature() instanceof EReference == true) {
699
				EReference sourceEcoreFeature = (EReference)sourceFeature.getEcoreFeature();
700
				if (sourceEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) {
701
					addSource = false;
702
				}
703
			}
704
			if (targetFeature != null && targetFeature.getEcoreFeature() instanceof EReference == true) {
705
				EReference targetEcoreFeature = (EReference)targetFeature.getEcoreFeature();
706
				if (targetEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) {
707
					addTarget = false;
708
				}
709
			}
710
%>
711
			<%=importManager.getImportedName("org.eclipse.emf.ecore.EObject")%> container = getRelationshipContainer(source.getElement(), <%=importManager.getImportedName(containmentFeature.getGenClass().getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getGenClass().getClassifierAccessorName()%>());
712
			if (container == null) {
713
				domainModelAddCommand = null;
714
				return;
715
			}
716
			addLinkEndsCommand.append(<%=importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, 
717
				container, <%=importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=containmentFeature.getFeatureAccessorName()%>(), createdDomainElement));
718
<%
719
		}
720
		if (addChild) {
721
%>
722
			addLinkEndsCommand.append(<%=importManager.getImportedName(childFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain,
723
				container, <%=importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=childFeature.getFeatureAccessorName()%>(), createdDomainElement));
724
<%
725
		}
726
		if (addSource) {
727
%>
728
			addLinkEndsCommand.append(<%=importManager.getImportedName(sourceFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, 
729
				createdDomainElement, <%=importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=sourceFeature.getFeatureAccessorName()%>(), source.getElement()));
730
<%
731
		}
732
		if (addTarget) {
733
%>
734
			addLinkEndsCommand.append(<%=importManager.getImportedName(targetFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, 
735
				createdDomainElement, <%=importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=targetFeature.getFeatureAccessorName()%>(), target.getElement()));
736
<%
737
		}
738
%>
739
		domainModelAddCommand = addLinkEndsCommand;
740
<%
741
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
742
		GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature();
743
%>
744
			domainModelAddCommand = <%=importManager.getImportedName(metaFeature.getEcoreFeature().isMany()? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand")%>.create(domainModelEditDomain, source.getElement(), 
745
				<%=importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName())%>.eINSTANCE.get<%=metaFeature.getFeatureAccessorName()%>(), target.getElement());
746
<%
747
	}
748
%>
749
		}
750
751
<%
752
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
753
%>
754
		/**
755
		 * Finds container element for the new relationship of the specified type.
756
		 * Default implementation goes up by containment hierarchy starting from
757
		 * the specified element and returns the first element that is instance of
758
		 * the specified container class.
759
		 * 
760
		 * @generated
761
		 */
762
		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) {
763
			for (; element != null; element = element.eContainer()) {
764
				if (containerClass.isSuperTypeOf(element.eClass())) {
765
					return element;
766
				}
767
			}
768
			return null;
769
		}
770
<%
771
	}
772
%>
773
774
		/**
775
		 * @generated
776
		 */
777
		public boolean canExecute() {
778
			return source != null && target != null && createdEdge != null && domainModelAddCommand != null && domainModelAddCommand.canExecute();
779
		}
780
		/**
781
		 * @generated
782
		 */
783
		public boolean canUndo() {
784
			return source != null && target != null && createdEdge != null && domainModelAddCommand != null && domainModelAddCommand.canUndo();
785
		}
786
		/**
787
		 * @generated
788
		 */
789
		public void execute() {
790
			domainModelAddCommand.execute();
791
			source.getDiagram().insertEdge(createdEdge);
792
			createdEdge.setSource(source);
793
			createdEdge.setTarget(target);
794
		}
795
		/**
796
		 * @generated
797
		 */
798
		public void undo() {
799
			domainModelAddCommand.undo();
800
			source.getDiagram().removeEdge(createdEdge);
801
			createdEdge.setSource(null);
802
			createdEdge.setTarget(null);
803
		}
804
	}
805
<%
806
}
807
%>
808
<%}/*when there's palette*/%>
809
<%
810
if (genNode.getViewmap() instanceof InnerClassViewmap) {
811
	String classBody = ((InnerClassViewmap) genNode.getViewmap()).getClassBody();
812
%>
813
<%=classBody%>
814
<%@ include file="mapmodeWorkaround.javajetinc"%>
815
<%
816
}
817
%>
818
}
819
<%importManager.emitSortedImports();%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/editor/BuildPropertiesGenerator.java (+23 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.editor;
2
3
public class BuildPropertiesGenerator
4
{
5
  protected static String nl;
6
  public static synchronized BuildPropertiesGenerator create(String lineSeparator)
7
  {
8
    nl = lineSeparator;
9
    BuildPropertiesGenerator result = new BuildPropertiesGenerator();
10
    nl = null;
11
    return result;
12
  }
13
14
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
15
  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/";
16
17
  public String generate(Object argument)
18
  {
19
    final StringBuffer stringBuffer = new StringBuffer();
20
    stringBuffer.append(TEXT_1);
21
    return stringBuffer.toString();
22
  }
23
}
(-)templates/parts/textAwareFields.jetinc (+10 lines)
Added Link Here
1
2
	/**
3
	 * @generated
4
	 */
5
	private <%=importManager.getImportedName("org.eclipse.gef.tools.DirectEditManager")%> manager;
6
7
	/**
8
	 * @generated
9
	 */
10
	private String defaultText;
(-)templates/editor/manifest.mfjet (+41 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="ManifestGenerator"
2
    imports="org.eclipse.gmf.codegen.gmfgen.* org.eclipse.emf.codegen.ecore.genmodel.* java.util.*"%>
3
<%
4
final GenPlugin genPlugin = (GenPlugin) argument;
5
final GenModel genModel = genPlugin.getEditorGen().getDomainGenModel();
6
final Set requiredPluginIDs = new LinkedHashSet();
7
requiredPluginIDs.add(genModel.getModelPluginID());
8
requiredPluginIDs.add(genModel.getEditPluginID());
9
10
for (Iterator it = genModel.getAllUsedGenPackagesWithClassifiers().iterator(); it.hasNext();) {
11
	GenModel nextGenModel = ((GenPackage) it.next()).getGenModel();
12
	if (nextGenModel.hasEditSupport()) {
13
		requiredPluginIDs.add(nextGenModel.getModelPluginID());
14
		requiredPluginIDs.add(nextGenModel.getEditPluginID());
15
	}
16
}
17
18
requiredPluginIDs.addAll(genPlugin.getRequiredPluginIDs());
19
Iterator requiredBundleIterator = requiredPluginIDs.iterator();
20
%>
21
Manifest-Version: 1.0
22
Bundle-ManifestVersion: 2
23
Bundle-Name: %pluginName
24
Bundle-SymbolicName: <%=genPlugin.getID()%>; singleton:=true
25
Bundle-Version: <%=genPlugin.getVersion()%>
26
Bundle-ClassPath: .
27
Bundle-Activator: <%=genPlugin.getActivatorQualifiedClassName()%>
28
Bundle-Vendor: %providerName
29
Bundle-Localization: plugin
30
Export-Package: <%=genPlugin.getEditorGen().getEditor().getPackageName()%>
31
Require-Bundle: org.eclipse.core.runtime,
32
 org.eclipse.jface,
33
 org.eclipse.ui.views,
34
 org.eclipse.ui.workbench,
35
 org.eclipse.emf.ecore,
36
 org.eclipse.emf.edit.ui,
37
 org.eclipse.gef;visibility:=reexport,
38
 org.eclipse.gmf.runtime.notation,
39
 org.eclipse.gmf.runtime.notation.edit<%while(requiredBundleIterator.hasNext()) {%>,
40
 <%=requiredBundleIterator.next()%>;visibility:=reexport<%}%>
41
Eclipse-LazyStart: true
(-)templates/editor/build.propertiesjet (+8 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="BuildPropertiesGenerator"%>
2
bin.includes = .,\
3
               META-INF/,\
4
               plugin.xml,\
5
               plugin.properties
6
jars.compile.order = .
7
source.. = src/
8
output.. = bin/
(-)templates/editor/plugin.propertiesjet (+5 lines)
Added Link Here
1
<%@ jet package="org.eclipse.gmf.codegen.templates.lite.editor" class="PluginPropertiesGenerator"
2
    imports="org.eclipse.gmf.codegen.gmfgen.*"%>
3
<%GenPlugin genPlugin = (GenPlugin) argument;%>
4
pluginName=<%=genPlugin.getName()%>
5
providerName=<%=genPlugin.getProvider()%>
(-)src-templates/org/eclipse/gmf/codegen/templates/lite/parts/NodeEditPartGenerator.java (+1356 lines)
Added Link Here
1
package org.eclipse.gmf.codegen.templates.lite.parts;
2
3
import java.util.*;
4
import org.eclipse.emf.codegen.ecore.genmodel.*;
5
import org.eclipse.gmf.codegen.gmfgen.*;
6
import org.eclipse.gmf.common.codegen.*;
7
import org.eclipse.emf.ecore.*;
8
9
public class NodeEditPartGenerator
10
{
11
  protected static String nl;
12
  public static synchronized NodeEditPartGenerator create(String lineSeparator)
13
  {
14
    nl = lineSeparator;
15
    NodeEditPartGenerator result = new NodeEditPartGenerator();
16
    nl = null;
17
    return result;
18
  }
19
20
  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
21
  protected final String TEXT_1 = "";
22
  protected final String TEXT_2 = NL + "/*" + NL + " * ";
23
  protected final String TEXT_3 = NL + " */";
24
  protected final String TEXT_4 = NL;
25
  protected final String TEXT_5 = NL + NL + "/**" + NL + " * @generated" + NL + " */" + NL + "public class ";
26
  protected final String TEXT_6 = " extends ";
27
  protected final String TEXT_7 = " implements ";
28
  protected final String TEXT_8 = ", IUpdatableEditPart {" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
29
  protected final String TEXT_9 = " contentPane;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
30
  protected final String TEXT_10 = " primaryShape;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
31
  protected final String TEXT_11 = "(";
32
  protected final String TEXT_12 = " model) {" + NL + "\t\tassert model instanceof ";
33
  protected final String TEXT_13 = ";" + NL + "\t\tsetModel(model);" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void createEditPolicies() {";
34
  protected final String TEXT_14 = NL;
35
  protected final String TEXT_15 = "\t\tinstallEditPolicy(";
36
  protected final String TEXT_16 = ".COMPONENT_ROLE, new ";
37
  protected final String TEXT_17 = "() {" + NL + "\t\t\tprotected ";
38
  protected final String TEXT_18 = " createDeleteCommand(";
39
  protected final String TEXT_19 = " deleteRequest) {" + NL + "\t\t\t\treturn new ";
40
  protected final String TEXT_20 = "() {";
41
  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";
42
  protected final String TEXT_22 = " result = new ";
43
  protected final String TEXT_23 = "();";
44
  protected final String TEXT_24 = NL + "\t\t\t\t\t\tresult.append(";
45
  protected final String TEXT_25 = ".create(" + NL + "\t\t\t\t\t\t\t";
46
  protected final String TEXT_26 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
47
  protected final String TEXT_27 = ".eINSTANCE.get";
48
  protected final String TEXT_28 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement()));";
49
  protected final String TEXT_29 = NL + "\t\t\t\t\t\tresult.append(";
50
  protected final String TEXT_30 = ".create(" + NL + "\t\t\t\t\t\t\t";
51
  protected final String TEXT_31 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
52
  protected final String TEXT_32 = ".eINSTANCE.get";
53
  protected final String TEXT_33 = "()," + NL + "\t\t\t\t\t\t\t";
54
  protected final String TEXT_34 = ".UNSET_VALUE));";
55
  protected final String TEXT_35 = NL + "\t\t\t\t\t\tresult.append(";
56
  protected final String TEXT_36 = ".create(" + NL + "\t\t\t\t\t\t\t";
57
  protected final String TEXT_37 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
58
  protected final String TEXT_38 = ".eINSTANCE.get";
59
  protected final String TEXT_39 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement()));";
60
  protected final String TEXT_40 = NL + "\t\t\t\t\t\tresult.append(";
61
  protected final String TEXT_41 = ".create(" + NL + "\t\t\t\t\t\t\t";
62
  protected final String TEXT_42 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
63
  protected final String TEXT_43 = ".eINSTANCE.get";
64
  protected final String TEXT_44 = "()," + NL + "\t\t\t\t\t\t\t";
65
  protected final String TEXT_45 = ".UNSET_VALUE));";
66
  protected final String TEXT_46 = NL + "\t\t\t\t\t\treturn result;" + NL + "\t\t\t\t\t}";
67
  protected final String TEXT_47 = NL + "\t\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command domainModelRemoveCommand = ";
68
  protected final String TEXT_48 = ".create(" + NL + "\t\t\t\t\t\t\t";
69
  protected final String TEXT_49 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
70
  protected final String TEXT_50 = ".eINSTANCE.get";
71
  protected final String TEXT_51 = "()," + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement());";
72
  protected final String TEXT_52 = NL + "\t\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command domainModelRemoveCommand = ";
73
  protected final String TEXT_53 = ".create(" + NL + "\t\t\t\t\t\t\t";
74
  protected final String TEXT_54 = ".getEditingDomainFor(getDiagramNode().getDiagram().getElement()), " + NL + "\t\t\t\t\t\t\tgetDiagramNode().getElement().eContainer(), ";
75
  protected final String TEXT_55 = ".eINSTANCE.get";
76
  protected final String TEXT_56 = "()," + NL + "\t\t\t\t\t\t\t";
77
  protected final String TEXT_57 = ".UNSET_VALUE);";
78
  protected final String TEXT_58 = NL + "\t\t\t\t\tprivate final org.eclipse.emf.common.command.Command viewRemoveCommand = ";
79
  protected final String TEXT_59 = ".create(" + NL + "\t\t\t\t\t\t";
80
  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});";
81
  protected final String TEXT_61 = NL + "\t\tinstallEditPolicy(";
82
  protected final String TEXT_62 = ".LAYOUT_ROLE, new ";
83
  protected final String TEXT_63 = "() {" + NL + "\t\t\tprotected ";
84
  protected final String TEXT_64 = " getCreateCommand(";
85
  protected final String TEXT_65 = " request) {" + NL + "\t\t\t\treturn ";
86
  protected final String TEXT_66 = ".INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t\tprotected Object getConstraintFor(";
87
  protected final String TEXT_67 = " rect) {" + NL + "\t\t\t\treturn null;" + NL + "\t\t\t}" + NL + "\t\t\tprotected Object getConstraintFor(";
88
  protected final String TEXT_68 = " point) {" + NL + "\t\t\t\treturn null;" + NL + "\t\t\t}" + NL + "\t\t\tprotected ";
89
  protected final String TEXT_69 = " createChangeConstraintCommand(";
90
  protected final String TEXT_70 = " child, Object constraint) {" + NL + "\t\t\t\treturn ";
91
  protected final String TEXT_71 = ".INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t\tprotected ";
92
  protected final String TEXT_72 = " createChildEditPolicy(";
93
  protected final String TEXT_73 = " child) {" + NL + "\t\t\t\treturn new ";
94
  protected final String TEXT_74 = "() {" + NL + "\t\t\t\t\tpublic ";
95
  protected final String TEXT_75 = " getTargetEditPart(";
96
  protected final String TEXT_76 = " request) {" + NL + "\t\t\t\t\t\tif (";
97
  protected final String TEXT_77 = ".REQ_SELECTION.equals(request.getType())) {" + NL + "\t\t\t\t\t\t\treturn ";
98
  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(";
99
  protected final String TEXT_79 = ".GRAPHICAL_NODE_ROLE, new ";
100
  protected final String TEXT_80 = "() {" + NL + "\t\t\tprotected ";
101
  protected final String TEXT_81 = " getReconnectTargetCommand(";
102
  protected final String TEXT_82 = " request) {" + NL + "\t\t\t\t//XXX: reconnect command" + NL + "\t\t\t\treturn ";
103
  protected final String TEXT_83 = ".INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t\tprotected ";
104
  protected final String TEXT_84 = " getReconnectSourceCommand(";
105
  protected final String TEXT_85 = " request) {" + NL + "\t\t\t\t//XXX: reconnect command" + NL + "\t\t\t\treturn ";
106
  protected final String TEXT_86 = ".INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t\tprotected ";
107
  protected final String TEXT_87 = " getConnectionCreateCommand(";
108
  protected final String TEXT_88 = " request) {";
109
  protected final String TEXT_89 = NL + "\t\t\t\tif (request instanceof ";
110
  protected final String TEXT_90 = ".CreateConnectionRequestEx) {" + NL + "\t\t\t\t\t";
111
  protected final String TEXT_91 = ".CreateConnectionRequestEx requestEx = (";
112
  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) {";
113
  protected final String TEXT_93 = NL + "\t\t\t\t\t\tcase ";
114
  protected final String TEXT_94 = ":" + NL + "\t\t\t\t\t\t\tmatchingVisualIdsCount++;" + NL + "\t\t\t\t\t\t\tbreak;";
115
  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 ";
116
  protected final String TEXT_96 = ".INSTANCE;" + NL + "\t\t\t\t\t}" + NL + "\t\t\t\t\t";
117
  protected final String TEXT_97 = " result = new ";
118
  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}";
119
  protected final String TEXT_99 = NL + "\t\t\t\treturn ";
120
  protected final String TEXT_100 = ".INSTANCE;" + NL + "\t\t\t}" + NL + "\t\t\tprotected ";
121
  protected final String TEXT_101 = " getConnectionCompleteCommand(";
122
  protected final String TEXT_102 = " request) {";
123
  protected final String TEXT_103 = NL + "\t\t\t\tif (request.getStartCommand() == null || !request.getStartCommand().canExecute()) {" + NL + "\t\t\t\t\treturn ";
124
  protected final String TEXT_104 = ".INSTANCE;" + NL + "\t\t\t\t}" + NL + "\t\t\t\tif (request instanceof ";
125
  protected final String TEXT_105 = ".CreateConnectionRequestEx) {" + NL + "\t\t\t\t\t";
126
  protected final String TEXT_106 = ".CreateConnectionRequestEx requestEx = (";
127
  protected final String TEXT_107 = ".CreateConnectionRequestEx) request;" + NL + "\t\t\t\t\tint[] visualIds = requestEx.getVisualIds();" + NL + "\t\t\t\t\t";
128
  protected final String TEXT_108 = " result = new ";
129
  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) {";
130
  protected final String TEXT_110 = NL + "\t\t\t\t\t\tcase ";
131
  protected final String TEXT_111 = ":" + NL + "\t\t\t\t\t\t\tresult.add(new Create";
132
  protected final String TEXT_112 = "Command(requestEx));" + NL + "\t\t\t\t\t\t\tbreak;";
133
  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 ";
134
  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}";
135
  protected final String TEXT_115 = NL + "\t\t\t\treturn ";
136
  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 ";
137
  protected final String TEXT_117 = " createFigure() {" + NL + "\t\t";
138
  protected final String TEXT_118 = " invisibleRectangle = new ";
139
  protected final String TEXT_119 = "();" + NL + "\t\tinvisibleRectangle.setLayoutManager(new ";
140
  protected final String TEXT_120 = "());" + NL + "\t\t";
141
  protected final String TEXT_121 = " shape = createNodeShape();" + NL + "\t\tinvisibleRectangle.add(shape);" + NL + "\t\tcontentPane = setupContentPane(shape);" + NL + "\t\t" + NL + "\t\t";
142
  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 ";
143
  protected final String TEXT_123 = " createNodeShape() {";
144
  protected final String TEXT_124 = NL + "\t\tprimaryShape = new ";
145
  protected final String TEXT_125 = "()";
146
  protected final String TEXT_126 = " {" + NL + "\t\t\tprotected boolean useLocalCoordinates() {" + NL + "\t\t\t\treturn true;" + NL + "\t\t\t}" + NL + "\t\t}";
147
  protected final String TEXT_127 = ";";
148
  protected final String TEXT_128 = NL + "\t\tprimaryShape = ";
149
  protected final String TEXT_129 = ";";
150
  protected final String TEXT_130 = NL + "\t\t";
151
  protected final String TEXT_131 = " figure = new ";
152
  protected final String TEXT_132 = "();" + NL + " \t\tfigure.setUseLocalCoordinates(";
153
  protected final String TEXT_133 = ");" + NL + " \t\tprimaryShape = figure;";
154
  protected final String TEXT_134 = NL + "\t\treturn primaryShape;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
155
  protected final String TEXT_135 = " createDecorationPane() {" + NL + "\t\t";
156
  protected final String TEXT_136 = " view = (";
157
  protected final String TEXT_137 = ") getModel();" + NL + "\t\t";
158
  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";
159
  protected final String TEXT_139 = " decorationPane = new ";
160
  protected final String TEXT_140 = "();" + NL + "\t\tdecorationPane.setLayoutManager(new ";
161
  protected final String TEXT_141 = "());" + NL + "" + NL + "\t\t";
162
  protected final String TEXT_142 = " imageFigure = new ";
163
  protected final String TEXT_143 = "(";
164
  protected final String TEXT_144 = ".getInstance().getBundledImage(\"icons/shortcut.gif\"), ";
165
  protected final String TEXT_145 = ".EAST);" + NL + "\t\tdecorationPane.add(imageFigure, ";
166
  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 ";
167
  protected final String TEXT_147 = " setupContentPane(";
168
  protected final String TEXT_148 = " nodeShape) {" + NL + "\t\tif (nodeShape.getLayoutManager() == null) {";
169
  protected final String TEXT_149 = NL + "\t\t\t";
170
  protected final String TEXT_150 = " layout = new ";
171
  protected final String TEXT_151 = "();" + NL + "\t\t\tlayout.setSpacing(5);" + NL + "\t\t\tnodeShape.setLayoutManager(layout);";
172
  protected final String TEXT_152 = NL + "\t\tnodeShape.setLayoutManager(new ";
173
  protected final String TEXT_153 = "() {" + NL + "" + NL + "\t\t\tpublic Object getConstraint(";
174
  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 ";
175
  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});";
176
  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 ";
177
  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 ";
178
  protected final String TEXT_158 = " getDiagramNode() {" + NL + "\t\treturn (";
179
  protected final String TEXT_159 = ") getModel();" + NL + "\t}" + NL;
180
  protected final String TEXT_160 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected boolean addFixedChild(";
181
  protected final String TEXT_161 = " childEditPart) {";
182
  protected final String TEXT_162 = NL + "\t\tif (childEditPart instanceof ";
183
  protected final String TEXT_163 = ") {";
184
  protected final String TEXT_164 = NL + "\t\t\t((";
185
  protected final String TEXT_165 = ") childEditPart).setLabel(((";
186
  protected final String TEXT_166 = ") primaryShape).getFigure";
187
  protected final String TEXT_167 = "());";
188
  protected final String TEXT_168 = NL + "\t\t\t((";
189
  protected final String TEXT_169 = ") childEditPart).setLabel(new ";
190
  protected final String TEXT_170 = "());";
191
  protected final String TEXT_171 = NL + "\t\t\treturn true;" + NL + "\t\t}";
192
  protected final String TEXT_172 = NL + "\t\treturn false;" + NL + "\t}" + NL;
193
  protected final String TEXT_173 = NL;
194
  protected final String TEXT_174 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static int getVisualID(";
195
  protected final String TEXT_175 = " containerView) {" + NL + "\t\t";
196
  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";
197
  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 ";
198
  protected final String TEXT_178 = " getPrimaryLabelEditPart() {" + NL + "\t\tfor(";
199
  protected final String TEXT_179 = " it = getDiagramNode().getChildren().iterator(); it.hasNext(); ) {" + NL + "\t\t\t";
200
  protected final String TEXT_180 = " nextChild = (";
201
  protected final String TEXT_181 = ")it.next();" + NL + "\t\t\tif (getVisualID(nextChild) == ";
202
  protected final String TEXT_182 = ") {" + NL + "\t\t\t\treturn (";
203
  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(";
204
  protected final String TEXT_184 = " req) {" + NL + "\t\tif (";
205
  protected final String TEXT_185 = ".REQ_DIRECT_EDIT == req.getType()) {" + NL + "\t\t\t";
206
  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;
207
  protected final String TEXT_187 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void addChildVisual(";
208
  protected final String TEXT_188 = " childEditPart, int index) {" + NL + "\t\tif (isExternalLabel(childEditPart)) {" + NL + "\t\t\t";
209
  protected final String TEXT_189 = " labelFigure = ((";
210
  protected final String TEXT_190 = ") childEditPart).getFigure();" + NL + "\t\t\tgetExternalLabelsContainer().add(labelFigure);" + NL + "\t\t} else {";
211
  protected final String TEXT_191 = NL + "\t\t\tif (!addFixedChild(childEditPart)) {" + NL + "\t\t\t\tsuper.addChildVisual(childEditPart, -1);" + NL + "\t\t\t}";
212
  protected final String TEXT_192 = NL + "\t\t\tsuper.addChildVisual(childEditPart, -1);";
213
  protected final String TEXT_193 = NL + "\t\t}" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void removeChildVisual(";
214
  protected final String TEXT_194 = " childEditPart) {" + NL + "\t\tif (isExternalLabel(childEditPart)) {" + NL + "\t\t\t";
215
  protected final String TEXT_195 = " labelFigure = ((";
216
  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(";
217
  protected final String TEXT_197 = " childEditPart) {";
218
  protected final String TEXT_198 = NL + "\t\tif (childEditPart instanceof ";
219
  protected final String TEXT_199 = ") {" + NL + "\t\t\treturn true;" + NL + "\t\t}";
220
  protected final String TEXT_200 = NL + "\t\treturn false;" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
221
  protected final String TEXT_201 = " getExternalLabelsContainer() {" + NL + "\t\t";
222
  protected final String TEXT_202 = " root = (";
223
  protected final String TEXT_203 = ") getRoot();" + NL + "\t\treturn root.getLayer(";
224
  protected final String TEXT_204 = ".EXTERNAL_NODE_LABELS_LAYER);" + NL + "\t}" + NL;
225
  protected final String TEXT_205 = NL + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void addChildVisual(";
226
  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}";
227
  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";
228
  protected final String TEXT_208 = " node = getDiagramNode();" + NL + "\t\tassert node.getLayoutConstraint() instanceof ";
229
  protected final String TEXT_209 = ";" + NL + "\t\t";
230
  protected final String TEXT_210 = " bounds = (";
231
  protected final String TEXT_211 = ") node.getLayoutConstraint();" + NL + "\t\t((";
232
  protected final String TEXT_212 = ") getParent()).setLayoutConstraint(this, getFigure(), " + NL + "\t\t\tnew ";
233
  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 ";
234
  protected final String TEXT_214 = " getModelChildren() {" + NL + "\t\treturn getDiagramNode().getVisibleChildren();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
235
  protected final String TEXT_215 = " getModelSourceConnections() {" + NL + "\t\treturn getDiagramNode().getSourceEdges();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected ";
236
  protected final String TEXT_216 = " getModelTargetConnections() {" + NL + "\t\treturn getDiagramNode().getTargetEdges();" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
237
  protected final String TEXT_217 = " getSourceConnectionAnchor(";
238
  protected final String TEXT_218 = " connection) {" + NL + "\t\treturn new ";
239
  protected final String TEXT_219 = "(getFigure());" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
240
  protected final String TEXT_220 = " getSourceConnectionAnchor(";
241
  protected final String TEXT_221 = " request) {" + NL + "\t\treturn new ";
242
  protected final String TEXT_222 = "(getFigure());" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
243
  protected final String TEXT_223 = "  getTargetConnectionAnchor(";
244
  protected final String TEXT_224 = " connection) {" + NL + "\t\treturn new ";
245
  protected final String TEXT_225 = "(getFigure());" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic ";
246
  protected final String TEXT_226 = "  getTargetConnectionAnchor(";
247
  protected final String TEXT_227 = " request) {" + NL + "\t\treturn new ";
248
  protected final String TEXT_228 = "(getFigure());" + NL + "\t}" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Object getAdapter(Class key) {";
249
  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;
250
  protected final String TEXT_230 = NL;
251
  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 ";
252
  protected final String TEXT_232 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tpublic void notifyChanged(";
253
  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((";
254
  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;
255
  protected final String TEXT_235 = NL;
256
  protected final String TEXT_236 = "\tpublic void addRefresher(";
257
  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(";
258
  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(";
259
  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;
260
  protected final String TEXT_240 = NL;
261
  protected final String TEXT_241 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshFont() {" + NL + "\t\t";
262
  protected final String TEXT_242 = " style =" + NL + "\t\t\t(";
263
  protected final String TEXT_243 = ") ";
264
  protected final String TEXT_244 = ".getStyle(" + NL + "\t\t\t\t";
265
  protected final String TEXT_245 = ".eINSTANCE.getFontStyle());" + NL + "\t\t";
266
  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 = ";
267
  protected final String TEXT_247 = ".NORMAL;" + NL + "\t\t\tif (style.isBold()) {" + NL + "\t\t\t\tfontStyle |= ";
268
  protected final String TEXT_248 = ".BOLD;" + NL + "\t\t\t}" + NL + "\t\t\tif (style.isItalic()) {" + NL + "\t\t\t\tfontStyle |= ";
269
  protected final String TEXT_249 = ".ITALIC;" + NL + "\t\t\t}" + NL + "\t\t\t";
270
  protected final String TEXT_250 = " currentFont = getFigure().getFont();" + NL + "\t\t\tif (currentFont != null) {" + NL + "\t\t\t\t";
271
  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 ";
272
  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 ";
273
  protected final String TEXT_253 = " createdFont;" + NL;
274
  protected final String TEXT_254 = NL;
275
  protected final String TEXT_255 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshForegroundColor() {" + NL + "\t\t";
276
  protected final String TEXT_256 = " style = (";
277
  protected final String TEXT_257 = ")  ";
278
  protected final String TEXT_258 = ".getStyle(";
279
  protected final String TEXT_259 = ".eINSTANCE.getLineStyle());" + NL + "\t\t";
280
  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";
281
  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 ";
282
  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 ";
283
  protected final String TEXT_263 = " createdForegroundColor;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprotected void refreshBackgroundColor() {" + NL + "\t\t";
284
  protected final String TEXT_264 = " style = (";
285
  protected final String TEXT_265 = ")  ";
286
  protected final String TEXT_266 = ".getStyle(";
287
  protected final String TEXT_267 = ".eINSTANCE.getFillStyle());" + NL + "\t\t";
288
  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";
289
  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 ";
290
  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 ";
291
  protected final String TEXT_271 = " createdBackgroundColor;" + NL;
292
  protected final String TEXT_272 = NL;
293
  protected final String TEXT_273 = "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate ";
294
  protected final String TEXT_274 = " structuralFeatures2Refresher;" + NL + "" + NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tpublic Refresher getRefresher(";
295
  protected final String TEXT_275 = " feature, ";
296
  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 ";
297
  protected final String TEXT_277 = "();";
298
  protected final String TEXT_278 = NL;
299
  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(";
300
  protected final String TEXT_280 = ".eINSTANCE.getView_PersistedChildren(), childrenRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
301
  protected final String TEXT_281 = ".eINSTANCE.getView_TransientChildren(), childrenRefresher);";
302
  protected final String TEXT_282 = NL;
303
  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(";
304
  protected final String TEXT_284 = ".eINSTANCE.getNode_LayoutConstraint(), boundsRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
305
  protected final String TEXT_285 = ".eINSTANCE.getSize_Width(), boundsRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
306
  protected final String TEXT_286 = ".eINSTANCE.getSize_Height(), boundsRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
307
  protected final String TEXT_287 = ".eINSTANCE.getLocation_X(), boundsRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
308
  protected final String TEXT_288 = ".eINSTANCE.getLocation_Y(), boundsRefresher);";
309
  protected final String TEXT_289 = NL;
310
  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(";
311
  protected final String TEXT_291 = ".eINSTANCE.getView_Visible(), visibilityRefresher);";
312
  protected final String TEXT_292 = NL;
313
  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(";
314
  protected final String TEXT_294 = ".eINSTANCE.getView_SourceEdges(), sourceEdgesRefresher);";
315
  protected final String TEXT_295 = NL;
316
  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(";
317
  protected final String TEXT_297 = ".eINSTANCE.getView_TargetEdges(), targetEdgesRefresher);";
318
  protected final String TEXT_298 = NL;
319
  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(";
320
  protected final String TEXT_300 = ".eINSTANCE.getFontStyle_FontHeight(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
321
  protected final String TEXT_301 = ".eINSTANCE.getFontStyle_FontName(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
322
  protected final String TEXT_302 = ".eINSTANCE.getFontStyle_Bold(), fontRefresher);" + NL + "\t\tstructuralFeatures2Refresher.put(";
323
  protected final String TEXT_303 = ".eINSTANCE.getFontStyle_Italic(), fontRefresher);" + NL + "\t\t";
324
  protected final String TEXT_304 = NL;
325
  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(";
326
  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(";
327
  protected final String TEXT_307 = ".eINSTANCE.getLineStyle_LineColor(), foregroundColorRefresher);" + NL + "\t}" + NL;
328
  protected final String TEXT_308 = NL + "\t/**" + NL + "\t * @generated" + NL + "\t */" + NL + "\tprivate static class Create";
329
  protected final String TEXT_309 = "Command extends ";
330
  protected final String TEXT_310 = " {" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final ";
331
  protected final String TEXT_311 = " source;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final ";
332
  protected final String TEXT_312 = " target;" + NL + "\t\t/**" + NL + "\t\t * @generated" + NL + "\t\t */" + NL + "\t\tprivate final ";
333
  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";
334
  protected final String TEXT_314 = "Command(";
335
  protected final String TEXT_315 = ".CreateConnectionRequestEx requestEx) {" + NL + "\t\t\tif (requestEx.getSourceEditPart().getModel() instanceof ";
336
  protected final String TEXT_316 = ") {" + NL + "\t\t\t\tsource = (";
337
  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 ";
338
  protected final String TEXT_318 = ") {" + NL + "\t\t\t\ttarget = (";
339
  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 = ";
340
  protected final String TEXT_320 = ".eINSTANCE.createEdge();";
341
  protected final String TEXT_321 = NL + "\t\t\t";
342
  protected final String TEXT_322 = " createdDomainElement = ";
343
  protected final String TEXT_323 = ".eINSTANCE.create";
344
  protected final String TEXT_324 = "();" + NL + "\t\t\tcreatedEdge.setElement(createdDomainElement);" + NL + "\t\t\t";
345
  protected final String TEXT_325 = NL + "\t\t\t";
346
  protected final String TEXT_326 = ".";
347
  protected final String TEXT_327 = ".initializeElement(createdDomainElement);";
348
  protected final String TEXT_328 = NL + "\t\t\tcreatedEdge.setElement(target.getElement());\t\t//XXX: is this correct?";
349
  protected final String TEXT_329 = NL + "\t\t\t";
350
  protected final String TEXT_330 = ".decorateView(createdEdge);" + NL + "\t\t\t";
351
  protected final String TEXT_331 = " domainModelEditDomain = ";
352
  protected final String TEXT_332 = ".getEditingDomainFor(source.getDiagram().getElement());";
353
  protected final String TEXT_333 = NL + "\t\t\torg.eclipse.emf.common.command.CompoundCommand addLinkEndsCommand = new org.eclipse.emf.common.command.CompoundCommand();";
354
  protected final String TEXT_334 = NL + "\t\t\t";
355
  protected final String TEXT_335 = " container = getRelationshipContainer(source.getElement(), ";
356
  protected final String TEXT_336 = ".eINSTANCE.get";
357
  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(";
358
  protected final String TEXT_338 = ".create(domainModelEditDomain, " + NL + "\t\t\t\tcontainer, ";
359
  protected final String TEXT_339 = ".eINSTANCE.get";
360
  protected final String TEXT_340 = "(), createdDomainElement));";
361
  protected final String TEXT_341 = NL + "\t\t\taddLinkEndsCommand.append(";
362
  protected final String TEXT_342 = ".create(domainModelEditDomain," + NL + "\t\t\t\tcontainer, ";
363
  protected final String TEXT_343 = ".eINSTANCE.get";
364
  protected final String TEXT_344 = "(), createdDomainElement));";
365
  protected final String TEXT_345 = NL + "\t\t\taddLinkEndsCommand.append(";
366
  protected final String TEXT_346 = ".create(domainModelEditDomain, " + NL + "\t\t\t\tcreatedDomainElement, ";
367
  protected final String TEXT_347 = ".eINSTANCE.get";
368
  protected final String TEXT_348 = "(), source.getElement()));";
369
  protected final String TEXT_349 = NL + "\t\t\taddLinkEndsCommand.append(";
370
  protected final String TEXT_350 = ".create(domainModelEditDomain, " + NL + "\t\t\t\tcreatedDomainElement, ";
371
  protected final String TEXT_351 = ".eINSTANCE.get";
372
  protected final String TEXT_352 = "(), target.getElement()));";
373
  protected final String TEXT_353 = NL + "\t\tdomainModelAddCommand = addLinkEndsCommand;";
374
  protected final String TEXT_354 = NL + "\t\t\tdomainModelAddCommand = ";
375
  protected final String TEXT_355 = ".create(domainModelEditDomain, source.getElement(), " + NL + "\t\t\t\t";
376
  protected final String TEXT_356 = ".eINSTANCE.get";
377
  protected final String TEXT_357 = "(), target.getElement());";
378
  protected final String TEXT_358 = NL + "\t\t}" + NL;
379
  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 ";
380
  protected final String TEXT_360 = " getRelationshipContainer(";
381
  protected final String TEXT_361 = " element, ";
382
  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}";
383
  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}";
384
  protected final String TEXT_364 = NL;
385
  protected final String TEXT_365 = NL;
386
  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}";
387
  protected final String TEXT_367 = NL + "}";
388
389
  public String generate(Object argument)
390
  {
391
    final StringBuffer stringBuffer = new StringBuffer();
392
    
393
GenNode genNode = (GenNode) ((Object[]) argument)[0];
394
GenDiagram genDiagram = genNode.getDiagram();
395
Palette palette = genDiagram.getPalette();
396
boolean useFlowLayout = !genNode.isListLayout();
397
final ImportAssistant importManager = (ImportAssistant) ((Object[]) argument)[1];
398
399
    stringBuffer.append(TEXT_1);
400
    
401
String copyrightText = genDiagram.getEditorGen().getCopyrightText();
402
if (copyrightText != null && copyrightText.trim().length() > 0) {
403
404
    stringBuffer.append(TEXT_2);
405
    stringBuffer.append(copyrightText.replaceAll("\n", "\n * "));
406
    stringBuffer.append(TEXT_3);
407
    }
408
    stringBuffer.append(TEXT_4);
409
    importManager.emitPackageStatement(stringBuffer);
410
    
411
/*XXX: temporary hack to generate compilable code in tests (where class NodeEditPart extends NodeEditPart is generated otherwise)*/
412
importManager.registerInnerClass(genNode.getEditPartClassName());
413
importManager.markImportLocation(stringBuffer);
414
415
    stringBuffer.append(TEXT_5);
416
    stringBuffer.append(genNode.getEditPartClassName());
417
    stringBuffer.append(TEXT_6);
418
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.AbstractGraphicalEditPart"));
419
    stringBuffer.append(TEXT_7);
420
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.NodeEditPart"));
421
    stringBuffer.append(TEXT_8);
422
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
423
    stringBuffer.append(TEXT_9);
424
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
425
    stringBuffer.append(TEXT_10);
426
    stringBuffer.append(genNode.getEditPartClassName());
427
    stringBuffer.append(TEXT_11);
428
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
429
    stringBuffer.append(TEXT_12);
430
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
431
    stringBuffer.append(TEXT_13);
432
    stringBuffer.append(TEXT_14);
433
    stringBuffer.append(TEXT_15);
434
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
435
    stringBuffer.append(TEXT_16);
436
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ComponentEditPolicy"));
437
    stringBuffer.append(TEXT_17);
438
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
439
    stringBuffer.append(TEXT_18);
440
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.GroupRequest"));
441
    stringBuffer.append(TEXT_19);
442
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
443
    stringBuffer.append(TEXT_20);
444
    
445
{
446
TypeModelFacet facet = genNode.getModelFacet();
447
GenFeature childFeature = facet.getChildMetaFeature();
448
GenFeature containmentFeature = facet.getContainmentMetaFeature();
449
if (childFeature != null && childFeature != containmentFeature && !childFeature.isDerived()) {
450
451
    stringBuffer.append(TEXT_21);
452
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
453
    stringBuffer.append(TEXT_22);
454
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.command.CompoundCommand"));
455
    stringBuffer.append(TEXT_23);
456
    
457
	if (containmentFeature.getEcoreFeature().isMany()) {
458
459
    stringBuffer.append(TEXT_24);
460
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
461
    stringBuffer.append(TEXT_25);
462
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
463
    stringBuffer.append(TEXT_26);
464
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
465
    stringBuffer.append(TEXT_27);
466
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
467
    stringBuffer.append(TEXT_28);
468
    
469
	} else {
470
471
    stringBuffer.append(TEXT_29);
472
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
473
    stringBuffer.append(TEXT_30);
474
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
475
    stringBuffer.append(TEXT_31);
476
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
477
    stringBuffer.append(TEXT_32);
478
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
479
    stringBuffer.append(TEXT_33);
480
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
481
    stringBuffer.append(TEXT_34);
482
    
483
	}
484
485
    
486
	if (childFeature.getEcoreFeature().isMany()) {
487
488
    stringBuffer.append(TEXT_35);
489
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
490
    stringBuffer.append(TEXT_36);
491
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
492
    stringBuffer.append(TEXT_37);
493
    stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName()));
494
    stringBuffer.append(TEXT_38);
495
    stringBuffer.append(childFeature.getFeatureAccessorName());
496
    stringBuffer.append(TEXT_39);
497
    
498
	} else {
499
500
    stringBuffer.append(TEXT_40);
501
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
502
    stringBuffer.append(TEXT_41);
503
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
504
    stringBuffer.append(TEXT_42);
505
    stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName()));
506
    stringBuffer.append(TEXT_43);
507
    stringBuffer.append(childFeature.getFeatureAccessorName());
508
    stringBuffer.append(TEXT_44);
509
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
510
    stringBuffer.append(TEXT_45);
511
    
512
	}
513
514
    stringBuffer.append(TEXT_46);
515
    
516
} else {
517
	if (containmentFeature.getEcoreFeature().isMany()) {
518
519
    stringBuffer.append(TEXT_47);
520
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
521
    stringBuffer.append(TEXT_48);
522
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
523
    stringBuffer.append(TEXT_49);
524
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
525
    stringBuffer.append(TEXT_50);
526
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
527
    stringBuffer.append(TEXT_51);
528
    
529
	} else {
530
531
    stringBuffer.append(TEXT_52);
532
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
533
    stringBuffer.append(TEXT_53);
534
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
535
    stringBuffer.append(TEXT_54);
536
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
537
    stringBuffer.append(TEXT_55);
538
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
539
    stringBuffer.append(TEXT_56);
540
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.SetCommand"));
541
    stringBuffer.append(TEXT_57);
542
    
543
	}
544
}
545
546
    stringBuffer.append(TEXT_58);
547
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.command.RemoveCommand"));
548
    stringBuffer.append(TEXT_59);
549
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
550
    stringBuffer.append(TEXT_60);
551
    
552
}	/*restrict local vars used in component edit policy*/
553
554
    stringBuffer.append(TEXT_61);
555
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
556
    stringBuffer.append(TEXT_62);
557
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ConstrainedLayoutEditPolicy"));
558
    stringBuffer.append(TEXT_63);
559
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
560
    stringBuffer.append(TEXT_64);
561
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.CreateRequest"));
562
    stringBuffer.append(TEXT_65);
563
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
564
    stringBuffer.append(TEXT_66);
565
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle"));
566
    stringBuffer.append(TEXT_67);
567
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Point"));
568
    stringBuffer.append(TEXT_68);
569
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
570
    stringBuffer.append(TEXT_69);
571
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
572
    stringBuffer.append(TEXT_70);
573
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
574
    stringBuffer.append(TEXT_71);
575
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
576
    stringBuffer.append(TEXT_72);
577
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
578
    stringBuffer.append(TEXT_73);
579
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.ResizableEditPolicy"));
580
    stringBuffer.append(TEXT_74);
581
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
582
    stringBuffer.append(TEXT_75);
583
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request"));
584
    stringBuffer.append(TEXT_76);
585
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants"));
586
    stringBuffer.append(TEXT_77);
587
    stringBuffer.append(genNode.getEditPartClassName());
588
    stringBuffer.append(TEXT_78);
589
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPolicy"));
590
    stringBuffer.append(TEXT_79);
591
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy"));
592
    stringBuffer.append(TEXT_80);
593
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
594
    stringBuffer.append(TEXT_81);
595
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.ReconnectRequest"));
596
    stringBuffer.append(TEXT_82);
597
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
598
    stringBuffer.append(TEXT_83);
599
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
600
    stringBuffer.append(TEXT_84);
601
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.ReconnectRequest"));
602
    stringBuffer.append(TEXT_85);
603
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
604
    stringBuffer.append(TEXT_86);
605
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
606
    stringBuffer.append(TEXT_87);
607
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest"));
608
    stringBuffer.append(TEXT_88);
609
    if (palette != null) {
610
    stringBuffer.append(TEXT_89);
611
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
612
    stringBuffer.append(TEXT_90);
613
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
614
    stringBuffer.append(TEXT_91);
615
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
616
    stringBuffer.append(TEXT_92);
617
    
618
for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) {
619
	GenLink genLink = (GenLink)it.next();
620
	if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) {
621
		continue;
622
	}
623
	GenClass outgoingClass;
624
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
625
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
626
		outgoingClass = modelFacet.getSourceMetaFeature() == null
627
			? modelFacet.getContainmentMetaFeature().getGenClass()
628
			: modelFacet.getSourceMetaFeature().getTypeGenClass();
629
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
630
		GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature();
631
		outgoingClass = metaFeature.getGenClass();
632
	} else {
633
		continue;
634
	}
635
	if (!outgoingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) {
636
		continue;
637
	}
638
639
    stringBuffer.append(TEXT_93);
640
    stringBuffer.append(genLink.getVisualID());
641
    stringBuffer.append(TEXT_94);
642
    
643
}
644
645
    stringBuffer.append(TEXT_95);
646
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
647
    stringBuffer.append(TEXT_96);
648
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
649
    stringBuffer.append(TEXT_97);
650
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
651
    stringBuffer.append(TEXT_98);
652
    }/*when there's palette*/
653
    stringBuffer.append(TEXT_99);
654
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
655
    stringBuffer.append(TEXT_100);
656
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
657
    stringBuffer.append(TEXT_101);
658
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.requests.CreateConnectionRequest"));
659
    stringBuffer.append(TEXT_102);
660
    if (palette != null) {
661
    stringBuffer.append(TEXT_103);
662
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
663
    stringBuffer.append(TEXT_104);
664
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
665
    stringBuffer.append(TEXT_105);
666
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
667
    stringBuffer.append(TEXT_106);
668
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
669
    stringBuffer.append(TEXT_107);
670
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.CompoundCommand"));
671
    stringBuffer.append(TEXT_108);
672
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.CompoundCommand"));
673
    stringBuffer.append(TEXT_109);
674
    
675
for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) {
676
	GenLink genLink = (GenLink)it.next();
677
	if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) {
678
		continue;
679
	}
680
	GenClass incomingClass;
681
	String createCommandNameInfix;
682
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
683
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
684
		incomingClass = modelFacet.getTargetMetaFeature().getTypeGenClass();
685
		createCommandNameInfix = modelFacet.getMetaClass().getName();
686
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
687
		GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature();
688
		incomingClass = metaFeature.getTypeGenClass();
689
		createCommandNameInfix = metaFeature.getFeatureAccessorName();
690
	} else {
691
		continue;
692
	}
693
	if (!incomingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) {
694
		continue;
695
	}
696
697
    stringBuffer.append(TEXT_110);
698
    stringBuffer.append(genLink.getVisualID());
699
    stringBuffer.append(TEXT_111);
700
    stringBuffer.append(createCommandNameInfix);
701
    stringBuffer.append(genLink.getVisualID());
702
    stringBuffer.append(TEXT_112);
703
    
704
}
705
706
    stringBuffer.append(TEXT_113);
707
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
708
    stringBuffer.append(TEXT_114);
709
    }/*when there's palette*/
710
    stringBuffer.append(TEXT_115);
711
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.UnexecutableCommand"));
712
    stringBuffer.append(TEXT_116);
713
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
714
    stringBuffer.append(TEXT_117);
715
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
716
    stringBuffer.append(TEXT_118);
717
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Figure"));
718
    stringBuffer.append(TEXT_119);
719
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.StackLayout"));
720
    stringBuffer.append(TEXT_120);
721
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
722
    stringBuffer.append(TEXT_121);
723
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
724
    stringBuffer.append(TEXT_122);
725
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
726
    stringBuffer.append(TEXT_123);
727
    
728
String figureQualifiedClassName = null;
729
Viewmap viewmap = genNode.getViewmap();
730
if (viewmap instanceof FigureViewmap) {
731
	figureQualifiedClassName = ((FigureViewmap) viewmap).getFigureQualifiedClassName();
732
	if (figureQualifiedClassName == null || figureQualifiedClassName.trim().length() == 0) {
733
		figureQualifiedClassName = "org.eclipse.draw2d.RectangleFigure";
734
	}
735
736
    stringBuffer.append(TEXT_124);
737
    stringBuffer.append(importManager.getImportedName(figureQualifiedClassName));
738
    stringBuffer.append(TEXT_125);
739
    if (useFlowLayout) {
740
    stringBuffer.append(TEXT_126);
741
    } /* use flow layout*/ 
742
    stringBuffer.append(TEXT_127);
743
    } else if (viewmap instanceof SnippetViewmap) {
744
    stringBuffer.append(TEXT_128);
745
    stringBuffer.append(((SnippetViewmap) viewmap).getBody());
746
    stringBuffer.append(TEXT_129);
747
    } else if (viewmap instanceof InnerClassViewmap) {
748
 	figureQualifiedClassName = ((InnerClassViewmap) viewmap).getClassName();
749
750
    stringBuffer.append(TEXT_130);
751
    stringBuffer.append(figureQualifiedClassName);
752
    stringBuffer.append(TEXT_131);
753
    stringBuffer.append(figureQualifiedClassName);
754
    stringBuffer.append(TEXT_132);
755
    stringBuffer.append(useFlowLayout ? "true" : "false");
756
    stringBuffer.append(TEXT_133);
757
    }
758
    stringBuffer.append(TEXT_134);
759
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
760
    stringBuffer.append(TEXT_135);
761
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
762
    stringBuffer.append(TEXT_136);
763
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
764
    stringBuffer.append(TEXT_137);
765
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
766
    stringBuffer.append(TEXT_138);
767
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Figure"));
768
    stringBuffer.append(TEXT_139);
769
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.Figure"));
770
    stringBuffer.append(TEXT_140);
771
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.BorderLayout"));
772
    stringBuffer.append(TEXT_141);
773
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ImageFigure"));
774
    stringBuffer.append(TEXT_142);
775
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ImageFigure"));
776
    stringBuffer.append(TEXT_143);
777
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()));
778
    stringBuffer.append(TEXT_144);
779
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.PositionConstants"));
780
    stringBuffer.append(TEXT_145);
781
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.BorderLayout"));
782
    stringBuffer.append(TEXT_146);
783
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
784
    stringBuffer.append(TEXT_147);
785
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
786
    stringBuffer.append(TEXT_148);
787
    
788
if (!useFlowLayout) {
789
	String layoutClassName = importManager.getImportedName("org.eclipse.draw2d.ToolbarLayout");
790
791
    stringBuffer.append(TEXT_149);
792
    stringBuffer.append(layoutClassName);
793
    stringBuffer.append(TEXT_150);
794
    stringBuffer.append(layoutClassName);
795
    stringBuffer.append(TEXT_151);
796
    } else {
797
    stringBuffer.append(TEXT_152);
798
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.FreeformLayout"));
799
    stringBuffer.append(TEXT_153);
800
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
801
    stringBuffer.append(TEXT_154);
802
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle"));
803
    stringBuffer.append(TEXT_155);
804
    }
805
    stringBuffer.append(TEXT_156);
806
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
807
    stringBuffer.append(TEXT_157);
808
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
809
    stringBuffer.append(TEXT_158);
810
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
811
    stringBuffer.append(TEXT_159);
812
    
813
	boolean hasFixedChildren = false;
814
	List innerLabels = new ArrayList(genNode.getLabels().size());
815
	for (Iterator it = genNode.getLabels().iterator(); it.hasNext(); ) {
816
		GenNodeLabel genLabel = (GenNodeLabel) it.next();
817
		if (!(genLabel instanceof GenExternalNodeLabel)) {
818
			innerLabels.add(genLabel);
819
		}
820
	}
821
	if (!innerLabels.isEmpty()) {
822
		hasFixedChildren = true;
823
824
    stringBuffer.append(TEXT_160);
825
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
826
    stringBuffer.append(TEXT_161);
827
    
828
		for (Iterator it = innerLabels.iterator(); it.hasNext(); ) {
829
			GenNodeLabel genLabel = (GenNodeLabel) it.next();
830
			String labelEditPart = importManager.getImportedName(genLabel.getEditPartQualifiedClassName());
831
			String labelFigureClassName = null;
832
			boolean isAccessor;
833
			if (genLabel.getViewmap() instanceof InnerClassViewmap) {
834
				labelFigureClassName = ((InnerClassViewmap) genLabel.getViewmap()).getClassName();
835
				isAccessor = true;
836
			} else if (genLabel.getViewmap() instanceof FigureViewmap) {
837
				labelFigureClassName = ((FigureViewmap) genLabel.getViewmap()).getFigureQualifiedClassName();
838
				isAccessor = false;
839
			} else {
840
				// temp hack to make tests pass
841
				labelFigureClassName = "org.eclipse.draw2d.Label";
842
				isAccessor = false;
843
			}
844
845
    stringBuffer.append(TEXT_162);
846
    stringBuffer.append(labelEditPart);
847
    stringBuffer.append(TEXT_163);
848
    			if (isAccessor) {
849
    stringBuffer.append(TEXT_164);
850
    stringBuffer.append(labelEditPart);
851
    stringBuffer.append(TEXT_165);
852
    stringBuffer.append(figureQualifiedClassName);
853
    stringBuffer.append(TEXT_166);
854
    stringBuffer.append(labelFigureClassName);
855
    stringBuffer.append(TEXT_167);
856
    			} else {
857
    stringBuffer.append(TEXT_168);
858
    stringBuffer.append(labelEditPart);
859
    stringBuffer.append(TEXT_169);
860
    stringBuffer.append(labelFigureClassName);
861
    stringBuffer.append(TEXT_170);
862
    			}
863
    stringBuffer.append(TEXT_171);
864
    		}
865
    stringBuffer.append(TEXT_172);
866
    stringBuffer.append(TEXT_173);
867
    stringBuffer.append(TEXT_174);
868
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
869
    stringBuffer.append(TEXT_175);
870
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EAnnotation"));
871
    stringBuffer.append(TEXT_176);
872
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditorGen().getPlugin().getActivatorQualifiedClassName()));
873
    stringBuffer.append(TEXT_177);
874
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
875
    stringBuffer.append(TEXT_178);
876
    stringBuffer.append(importManager.getImportedName("java.util.Iterator"));
877
    stringBuffer.append(TEXT_179);
878
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
879
    stringBuffer.append(TEXT_180);
880
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
881
    stringBuffer.append(TEXT_181);
882
    stringBuffer.append(((GenNodeLabel)innerLabels.get(0)).getVisualID());
883
    stringBuffer.append(TEXT_182);
884
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
885
    stringBuffer.append(TEXT_183);
886
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request"));
887
    stringBuffer.append(TEXT_184);
888
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.RequestConstants"));
889
    stringBuffer.append(TEXT_185);
890
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
891
    stringBuffer.append(TEXT_186);
892
    
893
	}
894
895
    
896
boolean hasExternalLabels = false;
897
for (Iterator labels = genNode.getLabels().iterator(); labels.hasNext();) {
898
	GenNodeLabel label = (GenNodeLabel) labels.next();
899
	if (label instanceof GenExternalNodeLabel) {
900
		hasExternalLabels = true;
901
		break;
902
	}
903
}
904
if (hasExternalLabels) {
905
906
    stringBuffer.append(TEXT_187);
907
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
908
    stringBuffer.append(TEXT_188);
909
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
910
    stringBuffer.append(TEXT_189);
911
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.GraphicalEditPart"));
912
    stringBuffer.append(TEXT_190);
913
    	if (hasFixedChildren) {
914
    stringBuffer.append(TEXT_191);
915
    	} else {
916
    stringBuffer.append(TEXT_192);
917
    	}
918
    stringBuffer.append(TEXT_193);
919
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
920
    stringBuffer.append(TEXT_194);
921
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
922
    stringBuffer.append(TEXT_195);
923
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.GraphicalEditPart"));
924
    stringBuffer.append(TEXT_196);
925
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
926
    stringBuffer.append(TEXT_197);
927
    
928
	for (Iterator labels = genNode.getLabels().iterator(); labels.hasNext();) {
929
		GenNodeLabel label = (GenNodeLabel) labels.next();
930
		if (label instanceof GenExternalNodeLabel) {
931
932
    stringBuffer.append(TEXT_198);
933
    stringBuffer.append(importManager.getImportedName(label.getEditPartQualifiedClassName()));
934
    stringBuffer.append(TEXT_199);
935
    
936
		}
937
	}
938
939
    stringBuffer.append(TEXT_200);
940
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.IFigure"));
941
    stringBuffer.append(TEXT_201);
942
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.ScalableFreeformRootEditPart"));
943
    stringBuffer.append(TEXT_202);
944
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.editparts.ScalableFreeformRootEditPart"));
945
    stringBuffer.append(TEXT_203);
946
    stringBuffer.append(importManager.getImportedName(genDiagram.getEditPartFactoryQualifiedClassName()));
947
    stringBuffer.append(TEXT_204);
948
    
949
} else {
950
	if (hasFixedChildren) {
951
    stringBuffer.append(TEXT_205);
952
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.EditPart"));
953
    stringBuffer.append(TEXT_206);
954
    
955
	}
956
}
957
958
    stringBuffer.append(TEXT_207);
959
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Node"));
960
    stringBuffer.append(TEXT_208);
961
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds"));
962
    stringBuffer.append(TEXT_209);
963
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds"));
964
    stringBuffer.append(TEXT_210);
965
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Bounds"));
966
    stringBuffer.append(TEXT_211);
967
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.GraphicalEditPart"));
968
    stringBuffer.append(TEXT_212);
969
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.geometry.Rectangle"));
970
    stringBuffer.append(TEXT_213);
971
    stringBuffer.append(importManager.getImportedName("java.util.List"));
972
    stringBuffer.append(TEXT_214);
973
    stringBuffer.append(importManager.getImportedName("java.util.List"));
974
    stringBuffer.append(TEXT_215);
975
    stringBuffer.append(importManager.getImportedName("java.util.List"));
976
    stringBuffer.append(TEXT_216);
977
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor"));
978
    stringBuffer.append(TEXT_217);
979
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.ConnectionEditPart"));
980
    stringBuffer.append(TEXT_218);
981
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor"));
982
    stringBuffer.append(TEXT_219);
983
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor"));
984
    stringBuffer.append(TEXT_220);
985
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request"));
986
    stringBuffer.append(TEXT_221);
987
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor"));
988
    stringBuffer.append(TEXT_222);
989
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor"));
990
    stringBuffer.append(TEXT_223);
991
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.ConnectionEditPart"));
992
    stringBuffer.append(TEXT_224);
993
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor"));
994
    stringBuffer.append(TEXT_225);
995
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ConnectionAnchor"));
996
    stringBuffer.append(TEXT_226);
997
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.Request"));
998
    stringBuffer.append(TEXT_227);
999
    stringBuffer.append(importManager.getImportedName("org.eclipse.draw2d.ChopboxAnchor"));
1000
    stringBuffer.append(TEXT_228);
1001
    /*@ include file="adapters/propertySource.javajetinc"*/
1002
    stringBuffer.append(TEXT_229);
1003
    stringBuffer.append(TEXT_230);
1004
    stringBuffer.append(TEXT_231);
1005
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.impl.AdapterImpl"));
1006
    stringBuffer.append(TEXT_232);
1007
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification"));
1008
    stringBuffer.append(TEXT_233);
1009
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
1010
    stringBuffer.append(TEXT_234);
1011
    stringBuffer.append(TEXT_235);
1012
    stringBuffer.append(TEXT_236);
1013
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
1014
    stringBuffer.append(TEXT_237);
1015
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
1016
    stringBuffer.append(TEXT_238);
1017
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
1018
    stringBuffer.append(TEXT_239);
1019
    
1020
	final String primaryView = "getDiagramNode()";
1021
1022
    stringBuffer.append(TEXT_240);
1023
    stringBuffer.append(TEXT_241);
1024
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
1025
    stringBuffer.append(TEXT_242);
1026
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FontStyle"));
1027
    stringBuffer.append(TEXT_243);
1028
    stringBuffer.append(primaryView);
1029
    stringBuffer.append(TEXT_244);
1030
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1031
    stringBuffer.append(TEXT_245);
1032
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
1033
    stringBuffer.append(TEXT_246);
1034
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
1035
    stringBuffer.append(TEXT_247);
1036
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
1037
    stringBuffer.append(TEXT_248);
1038
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.SWT"));
1039
    stringBuffer.append(TEXT_249);
1040
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
1041
    stringBuffer.append(TEXT_250);
1042
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.FontData"));
1043
    stringBuffer.append(TEXT_251);
1044
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
1045
    stringBuffer.append(TEXT_252);
1046
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Font"));
1047
    stringBuffer.append(TEXT_253);
1048
    stringBuffer.append(TEXT_254);
1049
    stringBuffer.append(TEXT_255);
1050
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.LineStyle"));
1051
    stringBuffer.append(TEXT_256);
1052
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.LineStyle"));
1053
    stringBuffer.append(TEXT_257);
1054
    stringBuffer.append(primaryView);
1055
    stringBuffer.append(TEXT_258);
1056
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1057
    stringBuffer.append(TEXT_259);
1058
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
1059
    stringBuffer.append(TEXT_260);
1060
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
1061
    stringBuffer.append(TEXT_261);
1062
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
1063
    stringBuffer.append(TEXT_262);
1064
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
1065
    stringBuffer.append(TEXT_263);
1066
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FillStyle"));
1067
    stringBuffer.append(TEXT_264);
1068
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.FillStyle"));
1069
    stringBuffer.append(TEXT_265);
1070
    stringBuffer.append(primaryView);
1071
    stringBuffer.append(TEXT_266);
1072
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1073
    stringBuffer.append(TEXT_267);
1074
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
1075
    stringBuffer.append(TEXT_268);
1076
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
1077
    stringBuffer.append(TEXT_269);
1078
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
1079
    stringBuffer.append(TEXT_270);
1080
    stringBuffer.append(importManager.getImportedName("org.eclipse.swt.graphics.Color"));
1081
    stringBuffer.append(TEXT_271);
1082
    stringBuffer.append(TEXT_272);
1083
    stringBuffer.append(TEXT_273);
1084
    stringBuffer.append(importManager.getImportedName("java.util.HashMap"));
1085
    stringBuffer.append(TEXT_274);
1086
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EStructuralFeature"));
1087
    stringBuffer.append(TEXT_275);
1088
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.common.notify.Notification"));
1089
    stringBuffer.append(TEXT_276);
1090
    stringBuffer.append(importManager.getImportedName("java.util.HashMap"));
1091
    stringBuffer.append(TEXT_277);
1092
    stringBuffer.append(TEXT_278);
1093
    stringBuffer.append(TEXT_279);
1094
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1095
    stringBuffer.append(TEXT_280);
1096
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1097
    stringBuffer.append(TEXT_281);
1098
    stringBuffer.append(TEXT_282);
1099
    stringBuffer.append(TEXT_283);
1100
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1101
    stringBuffer.append(TEXT_284);
1102
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1103
    stringBuffer.append(TEXT_285);
1104
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1105
    stringBuffer.append(TEXT_286);
1106
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1107
    stringBuffer.append(TEXT_287);
1108
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1109
    stringBuffer.append(TEXT_288);
1110
    stringBuffer.append(TEXT_289);
1111
    stringBuffer.append(TEXT_290);
1112
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1113
    stringBuffer.append(TEXT_291);
1114
    stringBuffer.append(TEXT_292);
1115
    stringBuffer.append(TEXT_293);
1116
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1117
    stringBuffer.append(TEXT_294);
1118
    stringBuffer.append(TEXT_295);
1119
    stringBuffer.append(TEXT_296);
1120
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1121
    stringBuffer.append(TEXT_297);
1122
    stringBuffer.append(TEXT_298);
1123
    stringBuffer.append(TEXT_299);
1124
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1125
    stringBuffer.append(TEXT_300);
1126
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1127
    stringBuffer.append(TEXT_301);
1128
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1129
    stringBuffer.append(TEXT_302);
1130
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1131
    stringBuffer.append(TEXT_303);
1132
    stringBuffer.append(TEXT_304);
1133
    stringBuffer.append(TEXT_305);
1134
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1135
    stringBuffer.append(TEXT_306);
1136
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationPackage"));
1137
    stringBuffer.append(TEXT_307);
1138
    /*XXX: probably, this should go to a separate jet-template along with GraphicalNodeEditPolicy*/
1139
    
1140
for(Iterator it = genDiagram.getLinks().iterator(); it.hasNext(); ) {
1141
	GenLink genLink = (GenLink)it.next();
1142
	if (!genLink.isViewDirectionAlignedWithModel() || genLink.getModelFacet() == null) {
1143
		continue;
1144
	}
1145
	GenClass incomingClass;
1146
	String createCommandNameInfix;
1147
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
1148
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
1149
		incomingClass = modelFacet.getTargetMetaFeature().getTypeGenClass();
1150
		createCommandNameInfix = modelFacet.getMetaClass().getName();
1151
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
1152
		GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature();
1153
		incomingClass = metaFeature.getTypeGenClass();
1154
		createCommandNameInfix = metaFeature.getFeatureAccessorName();
1155
	} else {
1156
		continue;
1157
	}
1158
	if (!incomingClass.getEcoreClass().isSuperTypeOf(genNode.getModelFacet().getMetaClass().getEcoreClass())) {
1159
		continue;
1160
	}
1161
1162
    if (palette != null) {
1163
    stringBuffer.append(TEXT_308);
1164
    stringBuffer.append(createCommandNameInfix);
1165
    stringBuffer.append(genLink.getVisualID());
1166
    stringBuffer.append(TEXT_309);
1167
    stringBuffer.append(importManager.getImportedName("org.eclipse.gef.commands.Command"));
1168
    stringBuffer.append(TEXT_310);
1169
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
1170
    stringBuffer.append(TEXT_311);
1171
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
1172
    stringBuffer.append(TEXT_312);
1173
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.Edge"));
1174
    stringBuffer.append(TEXT_313);
1175
    stringBuffer.append(createCommandNameInfix);
1176
    stringBuffer.append(genLink.getVisualID());
1177
    stringBuffer.append(TEXT_314);
1178
    stringBuffer.append(importManager.getImportedName(palette.getFactoryQualifiedClassName()));
1179
    stringBuffer.append(TEXT_315);
1180
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
1181
    stringBuffer.append(TEXT_316);
1182
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
1183
    stringBuffer.append(TEXT_317);
1184
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
1185
    stringBuffer.append(TEXT_318);
1186
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.View"));
1187
    stringBuffer.append(TEXT_319);
1188
    stringBuffer.append(importManager.getImportedName("org.eclipse.gmf.runtime.notation.NotationFactory"));
1189
    stringBuffer.append(TEXT_320);
1190
    
1191
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
1192
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
1193
		GenClass linkClass = modelFacet.getMetaClass();
1194
1195
    stringBuffer.append(TEXT_321);
1196
    stringBuffer.append(importManager.getImportedName(importManager.getImportedName(linkClass.getQualifiedInterfaceName())));
1197
    stringBuffer.append(TEXT_322);
1198
    stringBuffer.append(importManager.getImportedName(linkClass.getGenPackage().getQualifiedFactoryInterfaceName()));
1199
    stringBuffer.append(TEXT_323);
1200
    stringBuffer.append(linkClass.getClassifierAccessorName());
1201
    stringBuffer.append(TEXT_324);
1202
    /*XXX: Class name DomainElementInitializer should be user-customizable*/
1203
    stringBuffer.append(TEXT_325);
1204
    stringBuffer.append(importManager.getImportedName(genDiagram.getNotationViewFactoriesPackageName() + ".DomainElementInitializer"));
1205
    stringBuffer.append(TEXT_326);
1206
    stringBuffer.append(genLink.getUniqueIdentifier());
1207
    stringBuffer.append(TEXT_327);
1208
    
1209
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
1210
1211
    stringBuffer.append(TEXT_328);
1212
    
1213
	}
1214
1215
    stringBuffer.append(TEXT_329);
1216
    stringBuffer.append(importManager.getImportedName(genLink.getNotationViewFactoryQualifiedClassName()));
1217
    stringBuffer.append(TEXT_330);
1218
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.EditingDomain"));
1219
    stringBuffer.append(TEXT_331);
1220
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain"));
1221
    stringBuffer.append(TEXT_332);
1222
    
1223
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
1224
1225
    stringBuffer.append(TEXT_333);
1226
    
1227
		TypeLinkModelFacet modelFacet = (TypeLinkModelFacet) genLink.getModelFacet();
1228
		GenFeature sourceFeature = modelFacet.getSourceMetaFeature();
1229
		GenFeature containmentFeature = modelFacet.getContainmentMetaFeature();
1230
		GenFeature childFeature = modelFacet.getChildMetaFeature();
1231
		GenFeature targetFeature = modelFacet.getTargetMetaFeature();
1232
		//source/link features seem to be pointing from link to its ends, not vice versa.
1233
		//Anyway, if there is containment feature and it is not opposite to either the source/target, we should add containment, 
1234
		//otherwise we will have problems with saving uncontained EObjects.
1235
		boolean addSource = sourceFeature != null;
1236
		boolean addTarget = targetFeature != null;
1237
		boolean addChild = childFeature != null && childFeature != containmentFeature && !childFeature.isDerived();
1238
		if (containmentFeature != null) {
1239
			if (sourceFeature != null && sourceFeature.getEcoreFeature() instanceof EReference == true) {
1240
				EReference sourceEcoreFeature = (EReference)sourceFeature.getEcoreFeature();
1241
				if (sourceEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) {
1242
					addSource = false;
1243
				}
1244
			}
1245
			if (targetFeature != null && targetFeature.getEcoreFeature() instanceof EReference == true) {
1246
				EReference targetEcoreFeature = (EReference)targetFeature.getEcoreFeature();
1247
				if (targetEcoreFeature.getEOpposite() == containmentFeature.getEcoreFeature()) {
1248
					addTarget = false;
1249
				}
1250
			}
1251
1252
    stringBuffer.append(TEXT_334);
1253
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
1254
    stringBuffer.append(TEXT_335);
1255
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenClass().getGenPackage().getQualifiedPackageInterfaceName()));
1256
    stringBuffer.append(TEXT_336);
1257
    stringBuffer.append(containmentFeature.getGenClass().getClassifierAccessorName());
1258
    stringBuffer.append(TEXT_337);
1259
    stringBuffer.append(importManager.getImportedName(containmentFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand"));
1260
    stringBuffer.append(TEXT_338);
1261
    stringBuffer.append(importManager.getImportedName(containmentFeature.getGenPackage().getQualifiedPackageInterfaceName()));
1262
    stringBuffer.append(TEXT_339);
1263
    stringBuffer.append(containmentFeature.getFeatureAccessorName());
1264
    stringBuffer.append(TEXT_340);
1265
    
1266
		}
1267
		if (addChild) {
1268
1269
    stringBuffer.append(TEXT_341);
1270
    stringBuffer.append(importManager.getImportedName(childFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand"));
1271
    stringBuffer.append(TEXT_342);
1272
    stringBuffer.append(importManager.getImportedName(childFeature.getGenPackage().getQualifiedPackageInterfaceName()));
1273
    stringBuffer.append(TEXT_343);
1274
    stringBuffer.append(childFeature.getFeatureAccessorName());
1275
    stringBuffer.append(TEXT_344);
1276
    
1277
		}
1278
		if (addSource) {
1279
1280
    stringBuffer.append(TEXT_345);
1281
    stringBuffer.append(importManager.getImportedName(sourceFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand"));
1282
    stringBuffer.append(TEXT_346);
1283
    stringBuffer.append(importManager.getImportedName(sourceFeature.getGenPackage().getQualifiedPackageInterfaceName()));
1284
    stringBuffer.append(TEXT_347);
1285
    stringBuffer.append(sourceFeature.getFeatureAccessorName());
1286
    stringBuffer.append(TEXT_348);
1287
    
1288
		}
1289
		if (addTarget) {
1290
1291
    stringBuffer.append(TEXT_349);
1292
    stringBuffer.append(importManager.getImportedName(targetFeature.getEcoreFeature().isMany() ? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand"));
1293
    stringBuffer.append(TEXT_350);
1294
    stringBuffer.append(importManager.getImportedName(targetFeature.getGenPackage().getQualifiedPackageInterfaceName()));
1295
    stringBuffer.append(TEXT_351);
1296
    stringBuffer.append(targetFeature.getFeatureAccessorName());
1297
    stringBuffer.append(TEXT_352);
1298
    
1299
		}
1300
1301
    stringBuffer.append(TEXT_353);
1302
    
1303
	} else if (genLink.getModelFacet() instanceof FeatureModelFacet) {
1304
		GenFeature metaFeature = ((FeatureModelFacet) genLink.getModelFacet()).getMetaFeature();
1305
1306
    stringBuffer.append(TEXT_354);
1307
    stringBuffer.append(importManager.getImportedName(metaFeature.getEcoreFeature().isMany()? "org.eclipse.emf.edit.command.AddCommand" : "org.eclipse.emf.edit.command.SetCommand"));
1308
    stringBuffer.append(TEXT_355);
1309
    stringBuffer.append(importManager.getImportedName(metaFeature.getGenPackage().getQualifiedPackageInterfaceName()));
1310
    stringBuffer.append(TEXT_356);
1311
    stringBuffer.append(metaFeature.getFeatureAccessorName());
1312
    stringBuffer.append(TEXT_357);
1313
    
1314
	}
1315
1316
    stringBuffer.append(TEXT_358);
1317
    
1318
	if (genLink.getModelFacet() instanceof TypeLinkModelFacet) {
1319
1320
    stringBuffer.append(TEXT_359);
1321
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
1322
    stringBuffer.append(TEXT_360);
1323
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject"));
1324
    stringBuffer.append(TEXT_361);
1325
    stringBuffer.append(importManager.getImportedName("org.eclipse.emf.ecore.EClass"));
1326
    stringBuffer.append(TEXT_362);
1327
    
1328
	}
1329
1330
    stringBuffer.append(TEXT_363);
1331
    
1332
}
1333
1334
    }/*when there's palette*/
1335
    
1336
if (genNode.getViewmap() instanceof InnerClassViewmap) {
1337
	String classBody = ((InnerClassViewmap) genNode.getViewmap()).getClassBody();
1338
1339
    stringBuffer.append(TEXT_364);
1340
    stringBuffer.append(classBody);
1341
    stringBuffer.append(TEXT_365);
1342
    
1343
if (classBody.indexOf("DPtoLP") != -1) {
1344
1345
    stringBuffer.append(TEXT_366);
1346
    
1347
}
1348
1349
    
1350
}
1351
1352
    stringBuffer.append(TEXT_367);
1353
    importManager.emitSortedImports();
1354
    return stringBuffer.toString();
1355
  }
1356
}

Return to bug 136702