Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 8b0efbd42fef05e37510ad855b25ac5b59d070be (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
/*
 * Copyright (c) 2006, 2009 Borland Software Corporation
 * 
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Artem Tikhomirov (Borland) - initial API and implementation
 */

«IMPORT 'http://www.eclipse.org/gmf/2009/GenModel'»
«IMPORT 'http://www.eclipse.org/emf/2002/Ecore'»
«EXTENSION xpt::editor::palette::Utils»

«DEFINE Factory FOR gmfgen::Palette»
«EXPAND xpt::Common::copyright FOR diagram.editorGen-»
package «packageName»;

«EXPAND xpt::Common::generatedClassComment»
public class «factoryClassName» {

	«EXPAND xpt::Common::generatedMemberComment»
	public void fillPalette(org.eclipse.gef.palette.PaletteRoot paletteRoot) {
«IF definesStandardTools()-»
		cleanStandardTools(paletteRoot);
«ENDIF-»
		«EXPAND addEntry('paletteRoot') FOREACH groups-»
	}
«IF definesStandardTools()»
«EXPAND cleanStandardToolsHack-»
«ENDIF-»

«EXPAND createGroup FOREACH collectGroups(self)»
«EXPAND createEntry FOREACH collectTools(self)»

«IF needsNodeToolEntryClass(self)»«EXPAND nodeToolEntry»«ENDIF-»
«IF needsLinkToolEntryClass(self)»«EXPAND linkToolEntry»«ENDIF-»
}
«ENDDEFINE»

«DEFINE createGroup FOR gmfgen::ToolGroup-»
	«EXPAND xpt::Common::generatedMemberComment('Creates \"' + title + '\" palette tool group')»
	private org.eclipse.gef.palette.PaletteContainer «createMethodName»() {
		«EXPAND newContainer('paletteContainer')-»
		«EXPAND setIdentity('paletteContainer')-»
		«EXPAND setDescription('paletteContainer', self) FOR description-»
		«EXPAND setSmallImage('paletteContainer', palette)-»
		«EXPAND setLargeImage('paletteContainer', palette)-»
		«EXPAND addEntry('paletteContainer') FOREACH entries-»
		return paletteContainer;
	}
«ENDDEFINE»

«DEFINE newContainer(varName : String) FOR gmfgen::ToolGroup-»
«IF collapse and toolsOnly-»
		org.eclipse.gef.palette.PaletteDrawer «varName» = new org.eclipse.gef.palette.PaletteDrawer(«EXPAND i18nTitle»);
«ELSEIF stack-»
		org.eclipse.gef.palette.PaletteStack «varName» = new org.eclipse.gef.palette.PaletteStack(«EXPAND i18nTitle», null, null);
«ELSE-»
		org.eclipse.gef.palette.PaletteGroup «varName» = new org.eclipse.gef.palette.PaletteGroup(«EXPAND i18nTitle»);
«ENDIF-»
«ENDDEFINE»

«DEFINE setDescription(varName : String, gr : gmfgen::ToolGroup) FOR String-»
«varName».setDescription(«EXPAND i18nDesc FOR gr»);
«ENDDEFINE»

«DEFINE addEntry(varName : String) FOR gmfgen::ToolGroupItem»
«ERROR 'abstract addEntry(ToolGroupItem,String) template'»
«ENDDEFINE»

«DEFINE addEntry(varName : String) FOR gmfgen::AbstractToolEntry-»
«varName».add(«createMethodName»());
«IF _default and group.stack-»
«varName».setActiveEntry((org.eclipse.gef.palette.ToolEntry) paletteContainer.getChildren().get(paletteContainer.getChildren().size() - 1));
«ENDIF-»
«ENDDEFINE»

«DEFINE addEntry(varName : String) FOR gmfgen::Separator-»
«varName».add(new org.eclipse.gef.palette.PaletteSeparator());
«ENDDEFINE»

«DEFINE addEntry(varName : String) FOR gmfgen::ToolGroup-»
«varName».add(«createMethodName»());
«ENDDEFINE»

«DEFINE createEntry FOR gmfgen::AbstractToolEntry-»
	«EXPAND xpt::Common::generatedMemberComment»
	private org.eclipse.gef.palette.ToolEntry «createMethodName»() {
		«EXPAND newEntry('entry')-»
		«EXPAND setIdentity('entry')-»
		«EXPAND setSmallImage('entry', group.palette)-»
		«EXPAND setLargeImage('entry', group.palette)-»
		«EXPAND setToolClass('entry')-»
		«EXPAND setToolProperty('entry') FOREACH properties-»
		return entry;
	}
«ENDDEFINE»

«DEFINE newEntry(toolVarName : String) FOR gmfgen::AbstractToolEntry-»
«ERROR 'abstract newEntry(AbstractToolEntry,String) template'»
«ENDDEFINE»

«DEFINE newEntry(toolVarName : String) FOR gmfgen::ToolEntry-»
«IF elements->isEmpty()-»
org.eclipse.gef.palette.ToolEntry «toolVarName» = new org.eclipse.gef.palette.ToolEntry(«EXPAND i18nTitle», «EXPAND i18nDesc», null, null) {};
«ELSE-»
«LET (if genNodes->isEmpty() then 'LinkToolEntry' else 'NodeToolEntry' endif) AS toolEntryClass-»
java.util.List/*<IElementType>*/ types = new java.util.ArrayList/*<IElementType>*/(«elements->size()»);
«FOREACH elements->asSequence() AS e-»
types.add(«EXPAND xpt::providers::ElementTypes::accessElementType FOR e»);
«ENDFOREACH-»
«toolEntryClass» «toolVarName» = new «toolEntryClass»(«EXPAND i18nTitle», «EXPAND i18nDesc», types);
«ENDLET-»
«ENDIF-»
«ENDDEFINE»

«DEFINE newEntry(toolVarName : String) FOR gmfgen::StandardEntry-»
«IF gmfgen::StandardEntryKind::SELECT = kind -»
«EXPAND newStdSelectEntry(toolVarName)-»
«ELSEIF kind = gmfgen::StandardEntryKind::MARQUEE-»
«EXPAND newStdMarqueeEntry(toolVarName)-»
«ELSEIF kind = gmfgen::StandardEntryKind::ZOOM-»
«EXPAND newStdZoomEntry(toolVarName)-»
«ELSE-»
«EXPAND newStdOtherEntry(toolVarName)-»
«ENDIF-»
«ENDDEFINE»

«DEFINE newStdSelectEntry(toolVarName : String) FOR gmfgen::StandardEntry-»
org.eclipse.gef.palette.PanningSelectionToolEntry «toolVarName» = new org.eclipse.gef.palette.PanningSelectionToolEntry();
«ENDDEFINE»

«DEFINE newStdMarqueeEntry(toolVarName : String) FOR gmfgen::StandardEntry-»
org.eclipse.gef.palette.MarqueeToolEntry «toolVarName» = new org.eclipse.gef.palette.MarqueeToolEntry();
«ENDDEFINE»

«DEFINE newStdZoomEntry(toolVarName : String) FOR gmfgen::StandardEntry-»
FIXME
«ENDDEFINE»

«DEFINE newStdOtherEntry(toolVarName : String) FOR gmfgen::StandardEntry-»
«ERROR 'override newStdOtherEntry(StandardEntry, String) for kind ' + kind.repr()»
«ENDDEFINE»

// FIXME: odd code - FOR EntryBase, while most of the template is valid for ToolEntry only!!!
«DEFINE setSmallImage(toolVarName : String, palette : gmfgen::Palette) FOR gmfgen::EntryBase-»
«IF null <> smallIconPath-»
«toolVarName».setSmallIcon(«palette.activatorFQN()».findImageDescriptor("«smallIconPath»"));«EXPAND xpt::Common::nonNLS»
«ELSEIF not (Sequence { self })[gmfgen::ToolEntry].elements->isEmpty()-»
«LET self.oclAsType(gmfgen::ToolEntry) AS toolEntry-»
«toolVarName».setSmallIcon(«palette.diagram.getElementTypesQualifiedClassName()».getImageDescriptor(«EXPAND xpt::providers::ElementTypes::accessElementType FOR toolEntry.elements->first().oclAsType(gmfgen::GenCommonBase)»));
«ENDLET-»
«ENDIF-»
«ENDDEFINE»

«DEFINE setLargeImage(toolVarName : String, palette : gmfgen::Palette) FOR gmfgen::EntryBase-»
«IF null <> largeIconPath-»
«toolVarName».setLargeIcon(«palette.activatorFQN()».findImageDescriptor("«largeIconPath»")); «EXPAND xpt::Common::nonNLS»
«ELSEIF not (Sequence { self })[gmfgen::ToolEntry].elements->isEmpty()-»
«toolVarName».setLargeIcon(«toolVarName».getSmallIcon());
«ENDIF-»
«ENDDEFINE»

«DEFINE setToolClass(toolVarName : String) FOR gmfgen::AbstractToolEntry-»
«IF null <> qualifiedToolName-»
«toolVarName».setToolClass(«qualifiedToolName».class);
«ENDIF-»
«ENDDEFINE»

«DEFINE setToolProperty(toolVarName : String) FOR ecore::EStringToStringMapEntry-»
«toolVarName».setToolProperty(«key», «value»);
«ENDDEFINE»

«DEFINE i18nTitle FOR gmfgen::ToolEntry-»
«IF title = null»null«ELSE»«EXPAND xpt::Externalizer::accessorCall(i18nTitleKey(self)) FOR group.palette.diagram.editorGen»«ENDIF-»
«ENDDEFINE»

«DEFINE i18nTitle FOR gmfgen::ToolGroup-»
«IF title = null»null«ELSE»«EXPAND xpt::Externalizer::accessorCall(i18nTitleKey(self)) FOR palette.diagram.editorGen»«ENDIF-»
«ENDDEFINE»

«DEFINE i18nDesc FOR gmfgen::ToolEntry-»
«IF null = description»null«ELSE»«EXPAND xpt::Externalizer::accessorCall(i18nDescKey(self)) FOR group.palette.diagram.editorGen»«ENDIF-»
«ENDDEFINE»

«DEFINE i18nDesc FOR gmfgen::ToolGroup-»
«IF null = description»null«ELSE»«EXPAND xpt::Externalizer::accessorCall(i18nDescKey(self)) FOR palette.diagram.editorGen»«ENDIF-»
«ENDDEFINE»

«DEFINE i18nAccessors FOR gmfgen::Palette-»
«EXPAND internal_i18n_accessors FOREACH collectGroups(self)-»
«EXPAND internal_i18n_accessors FOREACH collectTools(self)-»
«ENDDEFINE»

«DEFINE i18nValues FOR gmfgen::Palette-»
«EXPAND internal_i18n_values FOREACH collectGroups(self)-»
«EXPAND internal_i18n_values FOREACH collectTools(self)-»
«ENDDEFINE»

«DEFINE internal_i18n_accessors FOR gmfgen::EntryBase-»
«IF null <> title»«EXPAND xpt::Externalizer::accessorField(i18nTitleKey(self))»«ENDIF-»
«IF null <> description»«EXPAND xpt::Externalizer::accessorField(i18nDescKey(self))»«ENDIF-»
«ENDDEFINE»

«DEFINE internal_i18n_values FOR gmfgen::EntryBase-»
«IF null <> title»«EXPAND xpt::Externalizer::messageEntry(i18nTitleKey(self), title)»«ENDIF-»
«IF null <> description»«EXPAND xpt::Externalizer::messageEntry(i18nDescKey(self), description)»«ENDIF-»
«ENDDEFINE»

«DEFINE cleanStandardToolsHack FOR gmfgen::Palette»
	«EXPAND xpt::Common::generatedMemberComment('Workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=159289')»
	private void cleanStandardTools(org.eclipse.gef.palette.PaletteRoot paletteRoot) {
		for (java.util.Iterator it = paletteRoot.getChildren().iterator(); it.hasNext();) {
			org.eclipse.gef.palette.PaletteEntry entry = (org.eclipse.gef.palette.PaletteEntry) it.next();
			if (!"standardGroup".equals(entry.getId())) { «EXPAND xpt::Common::nonNLS»
				continue;
			}
			for (java.util.Iterator it2 = ((org.eclipse.gef.palette.PaletteContainer) entry).getChildren().iterator(); it2.hasNext();) {
				org.eclipse.gef.palette.PaletteEntry entry2 = (org.eclipse.gef.palette.PaletteEntry) it2.next();
				if ("zoomTool".equals(entry2.getId())) { «EXPAND xpt::Common::nonNLS»
					it2.remove();
				} else if ("noteStack".equals(entry2.getId())) { «EXPAND xpt::Common::nonNLS»
					it2.remove();
				} else if ("selectionTool".equals(entry2.getId())) { «EXPAND xpt::Common::nonNLS»
					it2.remove();
				}
				if (paletteRoot.getDefaultEntry() == entry2) {
					paletteRoot.setDefaultEntry(null);
				}
			}
		}
	}
«ENDDEFINE»

«DEFINE nodeToolEntry FOR OclAny»
	«EXPAND xpt::Common::generatedClassComment»
	private static class NodeToolEntry extends org.eclipse.gef.palette.ToolEntry {

		«EXPAND xpt::Common::generatedMemberComment»
		private final java.util.List elementTypes;

		«EXPAND xpt::Common::generatedMemberComment»
		private NodeToolEntry(String title, String description, java.util.List elementTypes) {
			super(title, description, null, null);
			this.elementTypes = elementTypes;
		}

		«EXPAND xpt::Common::generatedMemberComment»
		public org.eclipse.gef.Tool createTool() {
			org.eclipse.gef.Tool tool = new org.eclipse.gmf.runtime.diagram.ui.tools.UnspecifiedTypeCreationTool(elementTypes);
			tool.setProperties(getToolProperties());
			return tool;
		}
	}
«ENDDEFINE»

«DEFINE linkToolEntry FOR OclAny»
	«EXPAND xpt::Common::generatedClassComment»
	private static class LinkToolEntry extends org.eclipse.gef.palette.ToolEntry {

		«EXPAND xpt::Common::generatedMemberComment»
		private final java.util.List relationshipTypes;

		«EXPAND xpt::Common::generatedMemberComment»
		private LinkToolEntry(String title, String description, java.util.List relationshipTypes) {
			super(title, description, null, null);
			this.relationshipTypes = relationshipTypes;
		}

		«EXPAND xpt::Common::generatedMemberComment»
		public org.eclipse.gef.Tool createTool() {
			org.eclipse.gef.Tool tool = new org.eclipse.gmf.runtime.diagram.ui.tools.UnspecifiedTypeConnectionTool(relationshipTypes);
			tool.setProperties(getToolProperties());
			return tool;
		}
	}
«ENDDEFINE»

«DEFINE setIdentity(toolVarName : String) FOR gmfgen::EntryBase-»
«IF id <> null and id.size() != 0-»
		 «toolVarName».setId(«id»);«IF id.isQuoted('\"')»«EXPAND xpt::Common::nonNLS»«ENDIF»
«ENDIF-»
«ENDDEFINE»

Back to the top