1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 /***
19 * <p>Title: WSMO Studio</p>
20 * <p>Description: Semantic Web Service Editor</p>
21 * <p>Copyright: Copyright (c) 2004-2007</p>
22 * <p>Company: Ontotext Lab. / SIRMA </p>
23 */
24
25 package org.wsmostudio.bpmo.ui.editor;
26
27 import java.util.ArrayList;
28 import java.util.List;
29
30 import org.eclipse.gef.palette.*;
31 import org.eclipse.gef.requests.CreationFactory;
32 import org.eclipse.gef.requests.SimpleFactory;
33 import org.wsmostudio.bpmo.ImagePool;
34 import org.wsmostudio.bpmo.model.*;
35 import org.wsmostudio.bpmo.model.blockpatterns.*;
36 import org.wsmostudio.bpmo.model.connectors.GraphConnector;
37 import org.wsmostudio.bpmo.model.events.*;
38 import org.wsmostudio.bpmo.model.gateway.*;
39 import org.wsmostudio.bpmo.model.merge.*;
40 import org.wsmostudio.bpmo.model.tasks.*;
41
42
43 public class PaletteFactory {
44
45 public static PaletteRoot createPalette() {
46 List<PaletteEntry> entries = new ArrayList<PaletteEntry>(4);
47
48 entries.add(new SelectionToolEntry());
49 entries.add(new MarqueeToolEntry());
50
51 entries.add(createGeneralDrawer());
52 entries.add(createTasksDrawer());
53 entries.add(createConnectionsDrawer());
54 entries.add(createEventsDrawer());
55 entries.add(createGraphPatternsDrawer());
56 entries.add(createBlockPatternsDrawer());
57
58 PaletteRoot palette = new PaletteRoot();
59 palette.setChildren(entries);
60 return palette;
61
62 }
63
64 private static PaletteContainer createGeneralDrawer() {
65 PaletteDrawer componentsDrawer = new PaletteDrawer("General");
66
67 CombinedTemplateCreationEntry component = new CombinedTemplateCreationEntry(
68 "Process",
69 "Create a new process",
70 ProcessNode.class,
71 new SimpleFactory(ProcessNode.class),
72 ImagePool.getImage(ImagePool.PROCESS_ICON_16),
73 ImagePool.getImage(ImagePool.PROCESS_ICON_32));
74 componentsDrawer.add(component);
75
76 component = new CombinedTemplateCreationEntry(
77 "Sub-Process",
78 "Create a new sub-process",
79 SubProcessNode.class,
80 new SimpleFactory(SubProcessNode.class),
81 ImagePool.getImage(ImagePool.SUB_PROCESS_ICON_16),
82 ImagePool.getImage(ImagePool.SUB_PROCESS_ICON_32));
83 componentsDrawer.add(component);
84
85 component = new CombinedTemplateCreationEntry(
86 "Mediation Process",
87 "Create a new mediation process",
88 MediationProcessNode.class,
89 new SimpleFactory(MediationProcessNode.class),
90 ImagePool.getImage(ImagePool.MEDI_PROCESS_ICON_16),
91 ImagePool.getImage(ImagePool.MEDI_PROCESS_ICON_32));
92 componentsDrawer.add(component);
93 return componentsDrawer;
94 }
95
96 private static PaletteContainer createTasksDrawer() {
97 PaletteDrawer componentsDrawer = new PaletteDrawer("Tasks");
98
99 CombinedTemplateCreationEntry component = new CombinedTemplateCreationEntry(
100 "Goal Task",
101 "Create a new goal task",
102 GoalTaskNode.class,
103 new SimpleFactory(GoalTaskNode.class),
104 ImagePool.getImage(ImagePool.GOAL_TASK_ICON_16),
105 ImagePool.getImage(ImagePool.GOAL_TASK_ICON_32));
106 componentsDrawer.add(component);
107
108 component = new CombinedTemplateCreationEntry(
109 "WebService Task",
110 "Create a new webservice task",
111 WSTaskNode.class,
112 new SimpleFactory(WSTaskNode.class),
113 ImagePool.getImage(ImagePool.WS_TASK_ICON_16),
114 ImagePool.getImage(ImagePool.WS_TASK_ICON_32));
115 componentsDrawer.add(component);
116
117 component = new CombinedTemplateCreationEntry(
118 "Manual Task",
119 "Create a new manual task",
120 ManualTaskNode.class,
121 new SimpleFactory(ManualTaskNode.class),
122 ImagePool.getImage(ImagePool.TASK_ICON_16),
123 ImagePool.getImage(ImagePool.TASK_ICON_32));
124 componentsDrawer.add(component);
125 return componentsDrawer;
126 }
127
128 private static PaletteContainer createGraphPatternsDrawer() {
129 PaletteDrawer componentsDrawer = new PaletteDrawer("Graph Patterns");
130
131 CombinedTemplateCreationEntry component = new CombinedTemplateCreationEntry(
132 "Deferred Choice",
133 "Create a new deferred choice",
134 DeferredChoiceNode.class,
135 new SimpleFactory(DeferredChoiceNode.class),
136 ImagePool.getImage(ImagePool.DEFERRED_CHOICE_ICON_16),
137 ImagePool.getImage(ImagePool.DEFERRED_CHOICE_ICON_32));
138 componentsDrawer.add(component);
139
140 component = new CombinedTemplateCreationEntry(
141 "Exclusive Choice",
142 "Create a new exclusive choice",
143 ExclusiveChoiceNode.class,
144 new SimpleFactory(ExclusiveChoiceNode.class),
145 ImagePool.getImage(ImagePool.EXCLUSIVE_CHOICE_ICON_16),
146 ImagePool.getImage(ImagePool.EXCLUSIVE_CHOICE_ICON_32));
147 componentsDrawer.add(component);
148
149 component = new CombinedTemplateCreationEntry(
150 "Multiple Choice",
151 "Create a new multiple choice",
152 MultipleChoiceNode.class,
153 new SimpleFactory(MultipleChoiceNode.class),
154 ImagePool.getImage(ImagePool.MULTIPLE_CHOICE_ICON_16),
155 ImagePool.getImage(ImagePool.MULTIPLE_CHOICE_ICON_32));
156 componentsDrawer.add(component);
157 component = new CombinedTemplateCreationEntry(
158 "Multiple Instantiation",
159 "Create a new multiple instantiation",
160 MultipleInstantiationNode.class,
161 new SimpleFactory(MultipleInstantiationNode.class),
162 ImagePool.getImage(ImagePool.MULTIPLE_CHOICE_ICON_16),
163 ImagePool.getImage(ImagePool.MULTIPLE_CHOICE_ICON_32));
164 componentsDrawer.add(component);
165 component = new CombinedTemplateCreationEntry(
166 "Interleaved Parallel Routing",
167 "Create a new interleaved parallel routing",
168 InterleavedParallelRoutingNode.class,
169 new SimpleFactory(InterleavedParallelRoutingNode.class),
170 ImagePool.getImage(ImagePool.MULTIPLE_CHOICE_ICON_16),
171 ImagePool.getImage(ImagePool.MULTIPLE_CHOICE_ICON_32));
172 componentsDrawer.add(component);
173 component = new CombinedTemplateCreationEntry(
174 "Parallel Split",
175 "Create a new parallel split",
176 ParallelSplitNode.class,
177 new SimpleFactory(ParallelSplitNode.class),
178 ImagePool.getImage(ImagePool.PARALLEL_SPLIT_ICON_16),
179 ImagePool.getImage(ImagePool.PARALLEL_SPLIT_ICON_32));
180 componentsDrawer.add(component);
181
182 componentsDrawer.add(new PaletteSeparator());
183
184 component = new CombinedTemplateCreationEntry(
185 "Simple Merge",
186 "Create a new simple merge",
187 SimpleMergeNode.class,
188 new SimpleFactory(SimpleMergeNode.class),
189 ImagePool.getImage(ImagePool.SIMPLE_MERGE_ICON_16),
190 ImagePool.getImage(ImagePool.SIMPLE_MERGE_ICON_32));
191 componentsDrawer.add(component);
192
193 component = new CombinedTemplateCreationEntry(
194 "Multiple Merge",
195 "Create a new multiple merge",
196 MultipleMergeNode.class,
197 new SimpleFactory(MultipleMergeNode.class),
198 ImagePool.getImage(ImagePool.MULTIPLE_MERGE_ICON_16),
199 ImagePool.getImage(ImagePool.MULTIPLE_MERGE_ICON_32));
200 componentsDrawer.add(component);
201
202 component = new CombinedTemplateCreationEntry(
203 "Multiple Merge-Synchronise",
204 "Create a new multiple merge synchronise",
205 MultipleMergeSynchroniseNode.class,
206 new SimpleFactory(MultipleMergeSynchroniseNode.class),
207 ImagePool.getImage(ImagePool.MULTIPLE_MERGE_SYNCH_ICON_16),
208 ImagePool.getImage(ImagePool.MULTIPLE_MERGE_SYNCH_ICON_32));
209 componentsDrawer.add(component);
210
211 component = new CombinedTemplateCreationEntry(
212 "Discriminator",
213 "Create a new discriminator",
214 DiscriminatorNode.class,
215 new SimpleFactory(DiscriminatorNode.class),
216 ImagePool.getImage(ImagePool.MULTIPLE_MERGE_SYNCH_ICON_16),
217 ImagePool.getImage(ImagePool.MULTIPLE_MERGE_SYNCH_ICON_32));
218 componentsDrawer.add(component);
219
220 component = new CombinedTemplateCreationEntry(
221 "Synchronisation",
222 "Create a new synchronisation",
223 SynchronisationNode.class,
224 new SimpleFactory(SynchronisationNode.class),
225 ImagePool.getImage(ImagePool.SYNCH_ICON_16),
226 ImagePool.getImage(ImagePool.SYNCH_ICON_32));
227 componentsDrawer.add(component);
228
229 return componentsDrawer;
230 }
231 private static PaletteContainer createEventsDrawer() {
232 PaletteDrawer componentsDrawer = new PaletteDrawer("Events");
233 CombinedTemplateCreationEntry component = new CombinedTemplateCreationEntry(
234 "Start Event",
235 "Create a new start event",
236 StartEventNode.class,
237 new SimpleFactory(StartEventNode.class),
238 ImagePool.getImage(ImagePool.START_EVENT_ICON_16),
239 ImagePool.getImage(ImagePool.START_EVENT_ICON_32));
240 componentsDrawer.add(component);
241 component = new CombinedTemplateCreationEntry(
242 "End Event",
243 "Create a new end event",
244 EndEventNode.class,
245 new SimpleFactory(EndEventNode.class),
246 ImagePool.getImage(ImagePool.END_EVENT_ICON_16),
247 ImagePool.getImage(ImagePool.END_EVENT_ICON_32));
248 componentsDrawer.add(component);
249 component = new CombinedTemplateCreationEntry(
250 "Timer",
251 "Create a new timer event",
252 TimerEventNode.class,
253 new SimpleFactory(TimerEventNode.class),
254 ImagePool.getImage(ImagePool.TIMER_EVENT_ICON_16),
255 ImagePool.getImage(ImagePool.TIMER_EVENT_ICON_32));
256 componentsDrawer.add(component);
257 component = new CombinedTemplateCreationEntry(
258 "Error",
259 "Create a new error event",
260 ErrorEventNode.class,
261 new SimpleFactory(ErrorEventNode.class),
262 ImagePool.getImage(ImagePool.ERROR_EVENT_ICON_16),
263 ImagePool.getImage(ImagePool.ERROR_EVENT_ICON_32));
264 componentsDrawer.add(component);
265 component = new CombinedTemplateCreationEntry(
266 "Receive Message",
267 "Create a new receive message event",
268 ReceiveMessageEventNode.class,
269 new SimpleFactory(ReceiveMessageEventNode.class),
270 ImagePool.getImage(ImagePool.RECEIVE_MESS_ICON_16),
271 ImagePool.getImage(ImagePool.RECEIVE_MESS_ICON_32));
272 componentsDrawer.add(component);
273 component = new CombinedTemplateCreationEntry(
274 "Send Message",
275 "Create a new send message event",
276 SendMessageEventNode.class,
277 new SimpleFactory(SendMessageEventNode.class),
278 ImagePool.getImage(ImagePool.SEND_MESS_EVENT_ICON_16),
279 ImagePool.getImage(ImagePool.SEND_MESS_EVENT_ICON_32));
280 componentsDrawer.add(component);
281
282 return componentsDrawer;
283 }
284
285 private static PaletteContainer createConnectionsDrawer() {
286 PaletteDrawer componentsDrawer = new PaletteDrawer("Connections");
287
288 ConnectionCreationToolEntry connectionComponent = new ConnectionCreationToolEntry(
289 "Sequence Flow",
290 "Create a flow connection",
291 new CreationFactory() {
292 public Object getNewObject() { return null; }
293 public Object getObjectType() { return GraphConnector.SOLID_CONNECTION; }
294 },
295 ImagePool.getImage(ImagePool.FLOW_CONN_ICON_16),
296 ImagePool.getImage(ImagePool.FLOW_CONN_ICON_32));
297 componentsDrawer.add(connectionComponent);
298
299
300
301
302
303
304
305
306
307
308
309
310 connectionComponent = new ConnectionCreationToolEntry(
311 "Message Flow",
312 "Create a message connection",
313 new CreationFactory() {
314 public Object getNewObject() { return null; }
315 public Object getObjectType() { return GraphConnector.DASHED_CONNECTION; }
316 },
317 ImagePool.getImage(ImagePool.MESSAGE_CONN_ICON_16),
318 ImagePool.getImage(ImagePool.MESSAGE_CONN_ICON_32));
319 componentsDrawer.add(connectionComponent);
320 return componentsDrawer;
321 }
322
323 private static PaletteContainer createBlockPatternsDrawer() {
324 PaletteDrawer componentsDrawer = new PaletteDrawer("Block Patterns");
325
326 CombinedTemplateCreationEntry component = new CombinedTemplateCreationEntry(
327 "Sequence",
328 "Create a new sequence block pattern",
329 SequenceNode.class,
330 new SimpleFactory(SequenceNode.class),
331 ImagePool.getImage(ImagePool.SEQUENCE_ICON_16),
332 ImagePool.getImage(ImagePool.SEQUENCE_ICON_32));
333 componentsDrawer.add(component);
334
335 component = new CombinedTemplateCreationEntry(
336 "Parallel Split-Synchronize",
337 "Create a new parallel split-synchronize",
338 ParallelSplitSynchronizeNode.class,
339 new SimpleFactory(ParallelSplitSynchronizeNode.class),
340 ImagePool.getImage(ImagePool.PARALLEL_SPLIT_SYNCH_ICON_16),
341 ImagePool.getImage(ImagePool.PARALLEL_SPLIT_SYNCH_ICON_32));
342 componentsDrawer.add(component);
343
344 component = new CombinedTemplateCreationEntry(
345 "Deferred Choice-Merge",
346 "Create a new deferred choice-merge",
347 DeferredChoiceMergeNode.class,
348 new SimpleFactory(DeferredChoiceMergeNode.class),
349 ImagePool.getImage(ImagePool.DEFERRED_CHOICE_MERGE_ICON_16),
350 ImagePool.getImage(ImagePool.DEFERRED_CHOICE_MERGE_ICON_32));
351 componentsDrawer.add(component);
352
353 component = new CombinedTemplateCreationEntry(
354 "Multiple Choice-Merge",
355 "Create a new multiple choice-merge",
356 MultipleChoiceMergeNode.class,
357 new SimpleFactory(MultipleChoiceMergeNode.class),
358 ImagePool.getImage(ImagePool.MULTIPLE_CHOICE_MERGE_ICON_16),
359 ImagePool.getImage(ImagePool.MULTIPLE_CHOICE_MERGE_ICON_32));
360 componentsDrawer.add(component);
361
362 component = new CombinedTemplateCreationEntry(
363 "Exclusive Choice-Merge",
364 "Create a new exclusive choice-merge",
365 ExclusiveChoiceMergeNode.class,
366 new SimpleFactory(ExclusiveChoiceMergeNode.class),
367 ImagePool.getImage(ImagePool.EXCLUSIVE_CHOICE_MERGE_ICON_16),
368 ImagePool.getImage(ImagePool.EXCLUSIVE_CHOICE_MERGE_ICON_32));
369 componentsDrawer.add(component);
370 componentsDrawer.add(new PaletteSeparator("Loops"));
371
372 component = new CombinedTemplateCreationEntry(
373 "Repeat",
374 "Create a new repeat loop",
375 RepeatLoopNode.class,
376 new SimpleFactory(RepeatLoopNode.class),
377 ImagePool.getImage(ImagePool.LOOP_ICON_16),
378 ImagePool.getImage(ImagePool.LOOP_ICON_32));
379 componentsDrawer.add(component);
380
381 component = new CombinedTemplateCreationEntry(
382 "While",
383 "Create a new while loop",
384 WhileLoopNode.class,
385 new SimpleFactory(WhileLoopNode.class),
386 ImagePool.getImage(ImagePool.LOOP_WHILE_ICON_16),
387 ImagePool.getImage(ImagePool.LOOP_WHILE_ICON_32));
388 componentsDrawer.add(component);
389
390 return componentsDrawer;
391 }
392
393 }
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437