View Javadoc

1   /*
2    WSMO Studio - a Semantic Web Service Editor
3    Copyright (c) 2004-2007, Ontotext Lab. / SIRMA Group
4   
5    This library is free software; you can redistribute it and/or modify it under
6    the terms of the GNU Lesser General Public License as published by the Free
7    Software Foundation; either version 2.1 of the License, or (at your option)
8    any later version.
9    This library is distributed in the hope that it will be useful, but WITHOUT
10   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   details.
13   You should have received a copy of the GNU Lesser General Public License along
14   with this library; if not, write to the Free Software Foundation, Inc.,
15   59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
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 /*		connectionComponent = new ConnectionCreationToolEntry(
300 				"Data Flow", 
301 				"Create a dataflow connection", 
302 				new CreationFactory() {
303 					public Object getNewObject() { return null; }
304 					public Object getObjectType() { return GraphConnector.DOT_CONNECTION; }
305 				},
306 				ImagePool.getImage(ImagePool.DATA_CONN_ICON_16), 
307 				ImagePool.getImage(ImagePool.DATA_CONN_ICON_32));
308 		componentsDrawer.add(connectionComponent);*/
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  * $Log$
397  * Revision 1.13  2007/08/23 15:33:02  alex_simov
398  * ui and save/load update
399  *
400  * Revision 1.12  2007/08/21 15:29:18  alex_simov
401  * no message
402  *
403  * Revision 1.11  2007/08/20 14:33:18  alex_simov
404  * new icons for new bmpo objects
405  *
406  * Revision 1.10  2007/08/17 14:42:39  alex_simov
407  * gui model update
408  *
409  * Revision 1.9  2007/08/01 15:47:24  alex_simov
410  * ui model refactoring: classnames are suffixed by "Node" to avoid name
411  * clashes with BPMO-API entities
412  *
413  * Revision 1.8  2007/06/22 16:50:53  alex_simov
414  * BPMO Import/Export to WSML implemented
415  *
416  * Revision 1.7  2007/04/26 11:57:46  alex_simov
417  * bugfix [1707565]: proper images are set
418  *
419  * Revision 1.6  2007/04/23 16:08:13  alex_simov
420  * Palette reordering and setting pinned at start-up time
421  *
422  * Revision 1.5  2007/04/17 09:23:08  alex_simov
423  * no message
424  *
425  * Revision 1.4  2007/04/05 16:50:34  alex_simov
426  * loop block patterns added
427  *
428  * Revision 1.3  2007/03/30 11:24:59  alex_simov
429  * new icons for block patterns
430  *
431  * Revision 1.2  2007/03/28 16:20:54  alex_simov
432  * MERGE elements added
433  *
434  * Revision 1.1  2007/03/20 10:05:47  alex_simov
435  * SBP modeller initial version
436  *
437  */