cpee 1.4.32 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ ../../default/rngs/choose.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/critical.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/escape.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/finalize.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/group.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/loop.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/manipulate.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/otherwise.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/parallel.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/parallel_branch.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/stop.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/terminate.rng
@@ -0,0 +1 @@
1
+ ../../default/rngs/update.rng
@@ -0,0 +1,1189 @@
1
+ function WFAdaptorManifestation(adaptor) {
2
+ var self = this;
3
+
4
+ this.adaptor = adaptor;
5
+ this.resources = {};
6
+ this.elements = {};
7
+ this.events = {};
8
+ this.compact = false;
9
+ this.striped = false;
10
+ this.endpoints = {};
11
+
12
+ //{{{ transform the details data to description parts based on rng
13
+ this.source = function(base,opts) {
14
+ if (base[0].namespaceURI == "http://relaxng.org/ns/structure/1.0") {
15
+ $('#relaxngworker').empty();
16
+ var rngw = new RelaxNGui(base,$('#relaxngworker'),self.adaptor.description.context_eval);
17
+ var nnew = $(rngw.save().documentElement);
18
+ nnew.attr('trans-xmlns','http://cpee.org/ns/description/1.0');
19
+ var ntxt = nnew.serializeXML();
20
+ ntxt = ntxt.replace(/trans-xmlns/,'xmlns');
21
+
22
+ return($X(ntxt));
23
+ } else {
24
+ if (opts && opts == 'clone') {
25
+ base = base.clone();
26
+ if (base.attr('id')) {
27
+ base.attr('id',self.adaptor.description.get_free_id());
28
+ }
29
+ base.find('*[id]').each(function(k,v){
30
+ $(v).attr('id',self.adaptor.description.get_free_id(base));
31
+ });
32
+ }
33
+ return base;
34
+ }
35
+ }; //}}}
36
+ //{{{ Return the svgid for the selected task
37
+ this.selected = function(){
38
+ var svgid = 'unknown';
39
+ _.each(self.adaptor.illustrator.get_elements(),function(value,key) {
40
+ if ($(value).hasClass('selected')) {
41
+ svgid = $(value).attr('element-id');
42
+ }
43
+ });
44
+ return svgid;
45
+ }; //}}}
46
+ //{{{ Return the svgids for all marked tasks
47
+ this.marked = function(){
48
+ var svgid = [];
49
+ _.each(self.adaptor.illustrator.get_elements(),function(value,key) {
50
+ if ($(value).hasClass('marked')) {
51
+ svgid.push($(value).attr('element-id'));
52
+ }
53
+ });
54
+ return svgid;
55
+ }; //}}}
56
+ //{{{ Render the details from rng (right hand side of graph tab)
57
+ this.update_details = function(svgid){
58
+ var tab = $('#dat_details');
59
+ var node = self.adaptor.description.get_node_by_svg_id(svgid).get(0);
60
+ tab.empty();
61
+ if (self.adaptor.description.elements[$(node).attr('svg-subtype')]) {
62
+ save['details_target'] = { 'svgid': svgid, 'model': self.adaptor.description };
63
+ var rng = self.adaptor.description.elements[$(node).attr('svg-subtype')].clone();
64
+ if (save['endpoints_cache'][$(node).attr('endpoint')] && save['endpoints_cache'][$(node).attr('endpoint')].schema) {
65
+ var schema = save['endpoints_cache'][$(node).attr('endpoint')].schema.documentElement;
66
+ $(rng).find(' > element[name="parameters"] > element[name="arguments"]').replaceWith($(schema).clone());
67
+ }
68
+ if (save['endpoints_list'][$(node).attr('endpoint')] && !save['endpoints_list'][$(node).attr('endpoint')].startsWith('http')) {
69
+ $(rng).find(' > element[name="parameters"] > element[name="method"]').remove();
70
+ }
71
+ save['details'] = new RelaxNGui(rng,tab,self.adaptor.description.context_eval,true);
72
+ save['details'].content(node);
73
+ format_visual_forms();
74
+ }
75
+ }; //}}}
76
+
77
+ function copyOrMove(menu,group,xml_node,mode) { //{{{
78
+ var markymark = self.marked();
79
+ var check1 = [];
80
+ var check2 = [];
81
+ $(markymark).each(function(key,svgid){
82
+ var node = self.adaptor.description.get_node_by_svg_id(svgid);
83
+ check1.push($(node).attr('svg-type'));
84
+ });
85
+ $(group).each(function(key,value){
86
+ check2.push(value.type);
87
+ });
88
+
89
+ if (markymark.length > 0 && _.uniq(check1).length == _.intersection(check1,check2).length) {
90
+ var nodes = [];
91
+ $(markymark).each(function(key,svgid){
92
+ var node = self.adaptor.description.get_node_by_svg_id(svgid);
93
+ nodes.unshift(node);
94
+ });
95
+
96
+ var iconm = self.resources['arrow'].clone();
97
+ var iconc = self.resources['arrow'].clone();
98
+ iconm.children('.rfill').addClass('menu');
99
+ menu.push(
100
+ {
101
+ 'label': '<em>Move Marked Elements</em>',
102
+ 'function_call': mode,
103
+ 'menu_icon': iconm,
104
+ 'type': undefined,
105
+ 'params': [nodes, xml_node]
106
+ },
107
+ {
108
+ 'label': '<em>Copy Marked Elements</em>',
109
+ 'function_call': mode,
110
+ 'menu_icon': iconc,
111
+ 'type': undefined,
112
+ 'params': [nodes, xml_node, 'clone']
113
+ }
114
+ );
115
+ }
116
+ } //}}}
117
+
118
+ // Events
119
+ this.events.mousedown = function(svgid, e, child, sibling) { // {{{
120
+ if(e.button == 0) { // left-click
121
+ } else if(e.button == 1) { // middle-click
122
+ } else if(e.button == 2) { // right-click
123
+ if (save['state'] != "ready" && save['state'] != "stopped") { return false; }
124
+
125
+ var xml_node = self.adaptor.description.get_node_by_svg_id(svgid);
126
+ var group = null;
127
+ var menu = {};
128
+
129
+ if (child) {
130
+ group = self.elements[xml_node.get(0).tagName].permissible_children(xml_node,'into');
131
+ if(group.length > 0) {
132
+ menu['Insert into'] = group;
133
+ copyOrMove(menu['Insert into'],group,xml_node,self.adaptor.description.insert_first_into);
134
+ }
135
+ }
136
+ if (sibling) {
137
+ group = self.elements[xml_node.parent().get(0).tagName].permissible_children(xml_node,'after');
138
+ if(group.length > 0) {
139
+ menu['Insert after'] = group;
140
+ copyOrMove(menu['Insert after'],group,xml_node,self.adaptor.description.insert_after);
141
+ }
142
+ }
143
+
144
+ if(xml_node.get(0).tagName != 'description' && !self.elements[xml_node.get(0).tagName].neverdelete) {
145
+ var icon = self.elements[xml_node.get(0).tagName].illustrator.svg.clone();
146
+ icon.children('.rfill').addClass('menu');
147
+ menu['Delete'] = [{
148
+ 'label': 'Remove Element',
149
+ 'function_call': self.adaptor.description.remove,
150
+ 'menu_icon': icon,
151
+ 'type': undefined,
152
+ 'params': [null, xml_node]
153
+ }];
154
+ }
155
+ if($('> finalize, > update', xml_node).length > 0 && xml_node.get(0).tagName == 'call') {
156
+ var icon = self.elements.callmanipulate.illustrator.svg.clone();
157
+ icon.children('.rfill:last').addClass('menu');
158
+ menu['Delete'].push({
159
+ 'label': 'Remove Scripts',
160
+ 'function_call': self.adaptor.description.remove,
161
+ 'menu_icon': icon,
162
+ 'type': undefined,
163
+ 'params': ['> finalize, > update', xml_node]
164
+ });
165
+ }
166
+ if (xml_node.get(0).tagName == "call" || xml_node.get(0).tagName == "manipulate" || xml_node.get(0).tagName == "stop") {
167
+ var icon = self.elements.call.illustrator.svg.clone();
168
+ icon.children('g.replace').addClass('active');
169
+ var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
170
+ if (vtarget.length > 0) {
171
+ if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
172
+ menu['Position'] = [{
173
+ 'label': 'No Execution from here',
174
+ 'function_call': del_ui_pos,
175
+ 'menu_icon': icon,
176
+ 'type': undefined,
177
+ 'params': xml_node
178
+ }];
179
+ } else {
180
+ menu['Position'] = [{
181
+ 'label': 'Execute from here',
182
+ 'function_call': add_ui_pos,
183
+ 'menu_icon': icon,
184
+ 'type': undefined,
185
+ 'params': xml_node
186
+ }];
187
+ }
188
+ }
189
+ }
190
+ new CustomMenu(e).contextmenu(menu);
191
+ }
192
+ return false;
193
+ } // }}}
194
+ this.events.suppress = function(svgid, e, child, sibling) { // {{{
195
+ return false;
196
+ } // }}}
197
+ this.events.click = function(svgid, e) { // {{{
198
+ if (self.adaptor.description.get_node_by_svg_id(svgid).length == 0) {
199
+ return;
200
+ }
201
+
202
+ self.adaptor.illustrator.get_elements().removeClass('selected');
203
+ self.adaptor.illustrator.get_labels().removeClass('selected');
204
+
205
+ if (e && e.ctrlKey) {
206
+ if (save['state'] != "ready" && save['state'] != "stopped") { return false; }
207
+ var tab = $('#dat_details');
208
+ tab.empty();
209
+ var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
210
+ if (vtarget.length > 0) {
211
+ vtarget.parents('g.element[element-id]').toggleClass('marked');
212
+ }
213
+ } else {
214
+ self.adaptor.illustrator.get_elements().removeClass('marked');
215
+
216
+ var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
217
+ if (vtarget.length > 0) {
218
+ vtarget.parents('g.element[element-id]').addClass('selected');
219
+ }
220
+ self.adaptor.illustrator.get_label_by_svg_id(svgid).addClass('selected');
221
+
222
+ self.update_details(svgid);
223
+ }
224
+ } // }}}
225
+ this.events.dblclick = function(svgid, e) { // {{{
226
+ } // }}}
227
+ this.events.mouseover = function(svgid, e) { // {{{
228
+ self.adaptor.illustrator.svg.container.find('.tile[element-id = "' + svgid + '"]').css('display','block');
229
+ self.adaptor.illustrator.svg.container.find('[element-id = "' + svgid + '"]').addClass('hover');
230
+ self.adaptor.illustrator.svg.label_container.find('[element-id = "' + svgid + '"]').addClass('hover');
231
+ return false;
232
+ } // }}}
233
+ this.events.mouseout = function(svgid, e) { // {{{
234
+ self.adaptor.illustrator.svg.container.find('.tile[element-id = "' + svgid + '"]').css('display','none');
235
+ self.adaptor.illustrator.svg.container.find('[element-id = "' + svgid + '"]').removeClass('hover');
236
+ self.adaptor.illustrator.svg.label_container.find('[element-id = "' + svgid + '"]').removeClass('hover');
237
+ return false;
238
+ } // }}}
239
+ this.events.dragstart = function (svgid, e) { //{{{
240
+ } //}}}
241
+
242
+ // other resources
243
+ this.resources.arrow = self.adaptor.theme_dir + 'symbols/arrow.svg';
244
+
245
+ // Primitive Elements
246
+ this.elements.call = { /*{{{*/
247
+ 'type': 'primitive',
248
+ 'illustrator': {//{{{
249
+ 'endnodes': 'this',
250
+ 'label': function(node){
251
+ var ret = [ { column: 'Label', value: $('> label',$(node).children('parameters')).text().replace(/^['"]/,'').replace(/['"]$/,'') } ];
252
+ return ret;
253
+ },
254
+ 'info': function(node){ return { 'element-endpoint': $(node).attr('endpoint') }; },
255
+ 'resolve_symbol': function(node) {
256
+ if($('finalize,update', node).length > 0) {
257
+ return 'callmanipulate';
258
+ } else {
259
+ return 'call';
260
+ }
261
+ },
262
+ 'svg': self.adaptor.theme_dir + 'symbols/call.svg'
263
+ },//}}}
264
+ 'description': self.adaptor.theme_dir + 'rngs/call.rng',
265
+ 'permissible_children': function(node,mode) { //{{{
266
+ if(node.children('finalize,update').length < 1)
267
+ return [
268
+ {'label': 'Scripts',
269
+ 'function_call': self.adaptor.description.insert_last_into,
270
+ 'menu_icon': self.elements.callmanipulate.illustrator.svg.clone(),
271
+ 'type': undefined,
272
+ 'params': [self.adaptor.description.elements.scripts, node]}
273
+ ];
274
+ return [];
275
+ }, //}}}
276
+ 'adaptor': {//{{{
277
+ 'mousedown': function (node,e) { self.events.mousedown(node,e,true,true); },
278
+ 'click': self.events.click,
279
+ 'dragstart': self.events.dragstart,
280
+ 'mouseover': self.events.mouseover,
281
+ 'mouseout': self.events.mouseout
282
+ }//}}}
283
+ }; /*}}}*/
284
+ this.elements.manipulate = { /*{{{*/
285
+ 'type': 'primitive',
286
+ 'illustrator': {//{{{
287
+ 'endnodes': 'this',
288
+ 'label': function(node){
289
+ var lab = $(node).attr('label');
290
+ if (lab) {
291
+ return [ { column: 'Label', value: lab.replace(/^['"]/,'').replace(/['"]$/,'') } ];
292
+ } else {
293
+ return [];
294
+ }
295
+ },
296
+ 'svg': self.adaptor.theme_dir + 'symbols/manipulate.svg'
297
+ },//}}}
298
+ 'description': self.adaptor.theme_dir + 'rngs/manipulate.rng',
299
+ 'permissible_children': function(node,mode) { //{{{
300
+ return [];
301
+ }, //}}}
302
+ 'adaptor': {//{{{
303
+ 'mousedown': function (node,e) { self.events.mousedown(node,e,false,true); },
304
+ 'click': self.events.click,
305
+ 'mouseover': self.events.mouseover,
306
+ 'mouseout': self.events.mouseout
307
+ }//}}}
308
+ }; /*}}}*/
309
+ this.elements.escape = { /*{{{*/
310
+ 'type': 'primitive',
311
+ 'illustrator': {//{{{
312
+ 'endnodes': 'this',
313
+ 'svg': self.adaptor.theme_dir + 'symbols/escape.svg'
314
+ },//}}}
315
+ 'description': self.adaptor.theme_dir + 'rngs/escape.rng',
316
+ 'permissible_children': function(node,mode) { //{{{
317
+ return [];
318
+ }, //}}}
319
+ 'adaptor': {//{{{
320
+ 'mousedown': function (node,e) { self.events.mousedown(node,e,false,true); },
321
+ 'click': self.events.click,
322
+ 'mouseover': self.events.mouseover,
323
+ 'mouseout': self.events.mouseout
324
+ }//}}}
325
+ }; /*}}}*/
326
+ this.elements.stop = { /*{{{*/
327
+ 'type': 'primitive',
328
+ 'illustrator': {//{{{
329
+ 'endnodes': 'this',
330
+ 'svg': self.adaptor.theme_dir + 'symbols/stop.svg'
331
+ },//}}}
332
+ 'description': self.adaptor.theme_dir + 'rngs/stop.rng',
333
+ 'permissible_children': function(node,mode) { //{{{
334
+ return [];
335
+ }, //}}}
336
+ 'adaptor': {//{{{
337
+ 'mousedown': function (node,e) { self.events.mousedown(node,e,false,true); },
338
+ 'click': self.events.click,
339
+ 'mouseover': self.events.mouseover,
340
+ 'mouseout': self.events.mouseout
341
+ }//}}}
342
+ }; /*}}}*/
343
+ this.elements.terminate = { /*{{{*/
344
+ 'type': 'primitive',
345
+ 'illustrator': {//{{{
346
+ 'endnodes': 'this',
347
+ 'final': true,
348
+ 'svg': self.adaptor.theme_dir + 'symbols/terminate.svg'
349
+ },//}}}
350
+ 'description': self.adaptor.theme_dir + 'rngs/terminate.rng',
351
+ 'permissible_children': function(node,mode) { //{{{
352
+ return [];
353
+ }, //}}}
354
+ 'adaptor': {//{{{
355
+ 'mousedown': function (node,e) { self.events.mousedown(node,e,false,false); },
356
+ 'mouseover': self.events.mouseover,
357
+ 'mouseout': self.events.mouseout
358
+ }//}}}
359
+ }; /*}}}*/
360
+ this.elements.end = { /*{{{*/
361
+ 'type': 'primitive',
362
+ 'illustrator': {//{{{
363
+ 'endnodes': 'this',
364
+ 'svg': self.adaptor.theme_dir + 'symbols/end.svg'
365
+ }, //}}}
366
+ 'adaptor': {//{{{
367
+ 'mousedown': function (node,e) {
368
+ self.events.suppress();
369
+ }
370
+ }//}}}
371
+ }; /*}}}*/
372
+ this.elements.event_end = { /*{{{*/
373
+ 'type': 'primitive',
374
+ 'illustrator': {//{{{
375
+ 'endnodes': 'this',
376
+ 'svg': self.adaptor.theme_dir + 'symbols/event_end.svg'
377
+ }, //}}}
378
+ 'adaptor': {//{{{
379
+ 'mousedown': function (node,e) {
380
+ self.events.suppress();
381
+ },
382
+ 'click': self.events.click,
383
+ 'dblclick': self.events.dblclick,
384
+ 'mouseover': self.events.mouseover,
385
+ 'mouseout': self.events.mouseout
386
+ }//}}}
387
+ }; /*}}}*/
388
+ this.elements.choose_finish = { /*{{{*/
389
+ 'type': 'primitive',
390
+ 'illustrator': {//{{{
391
+ 'endnodes': 'this',
392
+ 'svg': self.adaptor.theme_dir + 'symbols/choose_inclusive.svg',
393
+ 'resolve_symbol': function(node) {
394
+ if($(node).attr('mode') == 'exclusive') {
395
+ return 'choose_exclusive_finish';
396
+ } else {
397
+ return 'choose_inclusive_finish';
398
+ }
399
+ },
400
+ }, //}}}
401
+ 'adaptor': {//{{{
402
+ 'mousedown': function (node,e) {
403
+ self.events.mousedown(node,e,true,true);
404
+ },
405
+ 'click': self.events.click,
406
+ 'dblclick': self.events.dblclick,
407
+ 'mouseover': self.events.mouseover,
408
+ 'mouseout': self.events.mouseout
409
+ }//}}}
410
+ }; /*}}}*/
411
+ this.elements.parallel_finish = { /*{{{*/
412
+ 'type': 'primitive',
413
+ 'illustrator': {//{{{
414
+ 'endnodes': 'this',
415
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel.svg',
416
+ 'resolve_symbol': function(node) {
417
+ if($(node).attr('wait') == '-1') {
418
+ return 'parallel_simple';
419
+ } else {
420
+ return 'parallel_complex';
421
+ }
422
+ },
423
+ }, //}}}
424
+ 'adaptor': {//{{{
425
+ 'mousedown': function (node,e) {
426
+ self.events.mousedown(node,e,true,true);
427
+ },
428
+ 'click': self.events.click,
429
+ 'dblclick': self.events.dblclick,
430
+ 'mouseover': self.events.mouseover,
431
+ 'mouseout': self.events.mouseout
432
+ }//}}}
433
+ }; /*}}}*/
434
+
435
+ // Complex Elements
436
+ this.elements.choose = { /*{{{*/
437
+ 'type': 'complex',
438
+ 'illustrator': {//{{{
439
+ 'label': function(node){ return [ { column: 'Label', value: $(node).attr('mode') == 'exclusive' ? 'exclusive' : 'inclusive' } ]; },
440
+ 'endnodes': 'aggregate',
441
+ 'closeblock': false,
442
+ 'closing_symbol': 'choose_finish',
443
+ 'expansion': function(node) {
444
+ return 'horizontal';
445
+ },
446
+ 'resolve_symbol': function(node) {
447
+ if($(node).attr('mode') == 'exclusive') {
448
+ return 'choose_exclusive';
449
+ } else {
450
+ return 'choose_inclusive';
451
+ }
452
+ },
453
+ 'col_shift': function(node) {
454
+ return false;
455
+ },
456
+ 'svg': self.adaptor.theme_dir + 'symbols/choose.svg'
457
+ },//}}}
458
+ 'description': self.adaptor.theme_dir + 'rngs/choose.rng',
459
+ 'permissible_children': function(node,mode) { //{{{
460
+ var func = null;
461
+ if (mode == 'into') { func = self.adaptor.description.insert_first_into }
462
+ else { func = self.adaptor.description.insert_after }
463
+ if(node.children('parallel_branch').length > 0) {
464
+ return [{'label': 'Parallel Branch',
465
+ 'function_call': func,
466
+ 'menu_icon': self.elements.parallel_branch.illustrator.svg.clone(),
467
+ 'type': 'parallel_branch',
468
+ 'params': [self.adaptor.description.elements.parallel_branch, node]}];
469
+ }
470
+ var childs = [{'label': 'Alternative',
471
+ 'function_call': func,
472
+ 'menu_icon': self.elements.alternative.illustrator.svg.clone(),
473
+ 'type': 'alternative',
474
+ 'params': [self.adaptor.description.elements.alternative, node]}];
475
+ if((node.children('otherwise').length == 0) && node.parents('parallel').length == node.parents('parallel_branch').length)
476
+ childs.push({'label': 'Otherwise',
477
+ 'function_call': self.adaptor.description.insert_last_into,
478
+ 'menu_icon': self.elements.otherwise.illustrator.svg.clone(),
479
+ 'type': 'otherwise',
480
+ 'params': [self.adaptor.description.elements.otherwise, node]});
481
+ if(node.parents('parallel').length > node.parents('parallel_branch').length)
482
+ childs.push({'label': 'Parallel Branch',
483
+ 'function_call': func,
484
+ 'menu_icon': self.elements.parallel_branch.illustrator.svg.clone(),
485
+ 'type': 'parallel_branch',
486
+ 'params': [self.adaptor.description.elements.parallel_branch, node]});
487
+ return childs;
488
+ }, //}}}
489
+ 'adaptor': {//{{{
490
+ 'mousedown': function (node,e) {
491
+ self.events.mousedown(node,e,true,true);
492
+ },
493
+ 'click': self.events.click,
494
+ 'dblclick': self.events.dblclick,
495
+ 'mouseover': self.events.mouseover,
496
+ 'mouseout': self.events.mouseout
497
+ }//}}}
498
+ }; /*}}}*/
499
+ this.elements.otherwise = { /*{{{*/
500
+ 'type': 'complex',
501
+ 'illustrator': {//{{{
502
+ 'endnodes': 'passthrough',
503
+ 'closeblock': false,
504
+ 'noarrow': true,
505
+ 'expansion': function(node) {
506
+ return 'vertical';
507
+ },
508
+ 'col_shift': function(node) {
509
+ return false;
510
+ },
511
+ 'svg': self.adaptor.theme_dir + 'symbols/otherwise.svg'
512
+ },//}}}
513
+ 'description': self.adaptor.theme_dir + 'rngs/otherwise.rng',
514
+ 'neverdelete': true,
515
+ 'permissible_children': function(node,mode) { //{{{
516
+ var func = null;
517
+ var childs = null;
518
+ if (mode == 'into') { func = self.adaptor.description.insert_first_into }
519
+ else { func = self.adaptor.description.insert_after }
520
+ return [
521
+ {'label': 'Service Call with Scripts',
522
+ 'function_call': func,
523
+ 'menu_icon': self.elements.callmanipulate.illustrator.svg.clone(),
524
+ 'type': 'callmanipulate',
525
+ 'params': [self.adaptor.description.elements.callmanipulate, node]},
526
+ {'label': 'Service Call',
527
+ 'function_call': func,
528
+ 'menu_icon': self.elements.call.illustrator.svg.clone(),
529
+ 'type': 'call',
530
+ 'params': [self.adaptor.description.elements.call, node]},
531
+ {'label': 'Script',
532
+ 'function_call': func,
533
+ 'menu_icon': self.elements.manipulate.illustrator.svg.clone(),
534
+ 'type': 'manipulate',
535
+ 'params': [self.adaptor.description.elements.manipulate, node]},
536
+ {'label': 'Parallel',
537
+ 'function_call': func,
538
+ 'menu_icon': self.elements.parallel.illustrator.svg.clone(),
539
+ 'type': 'parallel',
540
+ 'params': [self.adaptor.description.elements.parallel, node]},
541
+ {'label': 'Decision',
542
+ 'function_call': func,
543
+ 'menu_icon': self.elements.choose.illustrator.svg.clone(),
544
+ 'type': 'choose',
545
+ 'params': [self.adaptor.description.elements.choose, node]},
546
+ {'label': 'Loop',
547
+ 'function_call': func,
548
+ 'menu_icon': self.elements.loop.illustrator.svg.clone(),
549
+ 'type': 'loop',
550
+ 'params': [self.adaptor.description.elements.loop, node]},
551
+ {'label': 'Terminate',
552
+ 'function_call': func,
553
+ 'menu_icon': self.elements.terminate.illustrator.svg.clone(),
554
+ 'type': 'terminate',
555
+ 'params': [self.adaptor.description.elements.terminate, node]},
556
+ {'label': 'Stop',
557
+ 'function_call': func,
558
+ 'menu_icon': self.elements.stop.illustrator.svg.clone(),
559
+ 'type': 'stop',
560
+ 'params': [self.adaptor.description.elements.stop, node]},
561
+ {'label': 'Critical',
562
+ 'function_call': func,
563
+ 'menu_icon': self.elements.critical.illustrator.svg.clone(),
564
+ 'type': 'critical',
565
+ 'params': [self.adaptor.description.elements.critical, node]}
566
+ ];
567
+ }, //}}}
568
+ 'adaptor': {//{{{
569
+ 'mousedown': function (node,e) {
570
+ self.events.mousedown(node,e,true,false);
571
+ },
572
+ 'click': self.events.click,
573
+ 'dblclick': self.events.dblclick,
574
+ 'mouseover': self.events.mouseover,
575
+ 'mouseout': self.events.mouseout,
576
+ }//}}}
577
+ }; /*}}}*/
578
+ this.elements.alternative = { /*{{{*/
579
+ 'type': 'complex',
580
+ 'illustrator': {//{{{
581
+ 'label': function(node){
582
+ var ret = [ { column: 'Label', value: $(node).attr('condition') } ];
583
+ return ret;
584
+ },
585
+ 'endnodes': 'passthrough',
586
+ 'noarrow': true,
587
+ 'closeblock':false,
588
+ 'expansion': function(node) {
589
+ return 'vertical';
590
+ },
591
+ 'col_shift': function(node) {
592
+ return false;
593
+ },
594
+ 'svg': self.adaptor.theme_dir + 'symbols/alternative.svg'
595
+ },//}}}
596
+ 'description': self.adaptor.theme_dir + 'rngs/alternative.rng',
597
+ 'permissible_children': function(node,mode) { //{{{
598
+ if (mode == 'into') { func = self.adaptor.description.insert_first_into }
599
+ else { func = self.adaptor.description.insert_after }
600
+ if(node.parents('parallel').length > node.parents('parallel_branch').length && node.get(0).tagName == 'alternative') {
601
+ return [{'label': 'Parallel Branch',
602
+ 'function_call': func,
603
+ 'menu_icon': self.elements.parallel_branch.illustrator.svg.clone(),
604
+ 'type': 'parallel_branch',
605
+ 'params': [self.adaptor.description.elements.parallel_branch, node]}];
606
+ }
607
+ return [
608
+ {'label': 'Service Call with Scripts',
609
+ 'function_call': func,
610
+ 'menu_icon': self.elements.callmanipulate.illustrator.svg.clone(),
611
+ 'type': 'callmanipulate',
612
+ 'params': [self.adaptor.description.elements.callmanipulate, node]},
613
+ {'label': 'Service Call',
614
+ 'function_call': func,
615
+ 'menu_icon': self.elements.call.illustrator.svg.clone(),
616
+ 'type': 'call',
617
+ 'params': [self.adaptor.description.elements.call, node]},
618
+ {'label': 'Script',
619
+ 'function_call': func,
620
+ 'menu_icon': self.elements.manipulate.illustrator.svg.clone(),
621
+ 'type': 'manipulate',
622
+ 'params': [self.adaptor.description.elements.manipulate, node]},
623
+ {'label': 'Parallel',
624
+ 'function_call': func,
625
+ 'menu_icon': self.elements.parallel.illustrator.svg.clone(),
626
+ 'type': 'parallel',
627
+ 'params': [self.adaptor.description.elements.parallel, node]},
628
+ {'label': 'Decision',
629
+ 'function_call': func,
630
+ 'menu_icon': self.elements.choose.illustrator.svg.clone(),
631
+ 'type': 'choose',
632
+ 'params': [self.adaptor.description.elements.choose, node]},
633
+ {'label': 'Loop',
634
+ 'function_call': func,
635
+ 'menu_icon': self.elements.loop.illustrator.svg.clone(),
636
+ 'type': 'loop',
637
+ 'params': [self.adaptor.description.elements.loop, node]},
638
+ {'label': 'Terminate',
639
+ 'function_call': func,
640
+ 'menu_icon': self.elements.terminate.illustrator.svg.clone(),
641
+ 'type': 'terminate',
642
+ 'params': [self.adaptor.description.elements.terminate, node]},
643
+ {'label': 'Stop',
644
+ 'function_call': func,
645
+ 'menu_icon': self.elements.stop.illustrator.svg.clone(),
646
+ 'type': 'stop',
647
+ 'params': [self.adaptor.description.elements.stop, node]},
648
+ {'label': 'Critical',
649
+ 'function_call': func,
650
+ 'menu_icon': self.elements.critical.illustrator.svg.clone(),
651
+ 'type': 'critical',
652
+ 'params': [self.adaptor.description.elements.critical, node]}
653
+ ];
654
+ }, //}}}
655
+ 'adaptor': {//{{{
656
+ 'mousedown': function (node,e) {
657
+ self.events.mousedown(node,e,true,false);
658
+ },
659
+ 'click': self.events.click,
660
+ 'dblclick': self.events.dblclick,
661
+ 'mouseover': self.events.mouseover,
662
+ 'mouseout': self.events.mouseout,
663
+ }//}}}
664
+ }; /*}}}*/
665
+ this.elements.loop = { /*{{{*/
666
+ 'type': 'complex',
667
+ 'illustrator': {//{{{
668
+ 'label': function(node){
669
+ var ret = [ { column: 'Label', value: $(node).attr('condition') + ($(node).attr('mode') == 'pre_test' ? ' (⭱)' : ' (⭳)') } ];
670
+ return ret;
671
+ },
672
+ 'endnodes': 'this',
673
+ 'closeblock': true,
674
+ 'expansion': function(node) {
675
+ return 'vertical';
676
+ },
677
+ 'col_shift': function(node) {
678
+ return true;
679
+ },
680
+ 'svg': self.adaptor.theme_dir + 'symbols/loop.svg'
681
+ },// }}}
682
+ 'description': self.adaptor.theme_dir + 'rngs/loop.rng',
683
+ 'permissible_children': function(node,mode) { //{{{
684
+ var func = null;
685
+ if (mode == 'into') { func = self.adaptor.description.insert_first_into }
686
+ else { func = self.adaptor.description.insert_after }
687
+ var childs = [
688
+ {'label': 'Service Call with Scripts',
689
+ 'function_call': func,
690
+ 'menu_icon': self.elements.callmanipulate.illustrator.svg.clone(),
691
+ 'type': 'callmanipulate',
692
+ 'params': [self.adaptor.description.elements.callmanipulate, node]},
693
+ {'label': 'Service Call',
694
+ 'function_call': func,
695
+ 'menu_icon': self.elements.call.illustrator.svg.clone(),
696
+ 'type': 'call',
697
+ 'params': [self.adaptor.description.elements.call, node]},
698
+ {'label': 'Manipulate',
699
+ 'function_call': func,
700
+ 'menu_icon': self.elements.manipulate.illustrator.svg.clone(),
701
+ 'type': 'manipulate',
702
+ 'params': [self.adaptor.description.elements.manipulate, node]},
703
+ {'label': 'Decision',
704
+ 'function_call': func,
705
+ 'menu_icon': self.elements.choose.illustrator.svg.clone(),
706
+ 'type': 'choose',
707
+ 'params': [self.adaptor.description.elements.choose, node]},
708
+ {'label': 'Loop',
709
+ 'function_call': func,
710
+ 'menu_icon': self.elements.loop.illustrator.svg.clone(),
711
+ 'type': 'loop',
712
+ 'params': [self.adaptor.description.elements.loop, node]},
713
+ {'label': 'Terminate',
714
+ 'function_call': func,
715
+ 'menu_icon': self.elements.terminate.illustrator.svg.clone(),
716
+ 'type': 'terminate',
717
+ 'params': [self.adaptor.description.elements.terminate, node]},
718
+ {'label': 'Stop',
719
+ 'function_call': func,
720
+ 'menu_icon': self.elements.stop.illustrator.svg.clone(),
721
+ 'type': 'stop',
722
+ 'params': [self.adaptor.description.elements.stop, node]},
723
+ {'label': 'Critical',
724
+ 'function_call': func,
725
+ 'menu_icon': self.elements.critical.illustrator.svg.clone(),
726
+ 'type': 'critical',
727
+ 'params': [self.adaptor.description.elements.critical, node]}
728
+ ];
729
+ if(node.parent('parallel').length > node.parent('parallel_branch').length) {
730
+ childs.push({'label': 'Parallel Branch',
731
+ 'function_call': func,
732
+ 'menu_icon': self.elements.parallel_branch.illustrator.svg.clone(),
733
+ 'type': 'parallel_branch',
734
+ 'params': [self.adaptor.description.elements.parallel_branch, node]}
735
+ );
736
+ } else {
737
+ childs.push({'label': 'Parallel',
738
+ 'function_call': func,
739
+ 'menu_icon': self.elements.parallel.illustrator.svg.clone(),
740
+ 'type': 'parallel',
741
+ 'params': [self.adaptor.description.elements.parallel, node]}
742
+ );
743
+ }
744
+ return childs;
745
+ }, //}}}
746
+ 'adaptor': {//{{{
747
+ 'mousedown': function (node,e) {
748
+ self.events.mousedown(node,e,true,true);
749
+ },
750
+ 'click': self.events.click,
751
+ 'dblclick': self.events.dblclick,
752
+ 'mouseover': self.events.mouseover,
753
+ 'mouseout': self.events.mouseout,
754
+ }//}}}
755
+ }; /*}}}*/
756
+ this.elements.parallel = { /*{{{*/
757
+ 'type': 'complex',
758
+ 'illustrator': {//{{{
759
+ 'endnodes': 'aggregate',
760
+ 'closeblock': false,
761
+ 'closing_symbol': 'parallel_finish',
762
+ 'expansion': function(node) {
763
+ // check if any sibling other than 'parallel_branch' is present
764
+ if($(node).children(':not(parallel_branch)').length > 0) return 'vertical';
765
+ return 'horizontal';
766
+ },
767
+ 'col_shift': function(node) {
768
+ return true;
769
+ },
770
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel.svg'
771
+ },//}}}
772
+ 'description': self.adaptor.theme_dir + 'rngs/parallel.rng',
773
+ 'permissible_children': function(node,mode) { //{{{
774
+ var func = null;
775
+ if (mode == 'into') { func = self.adaptor.description.insert_first_into }
776
+ else { func = self.adaptor.description.insert_after }
777
+ var childs = [
778
+ {'label': 'Service Call with Scripts',
779
+ 'function_call': func,
780
+ 'menu_icon': self.elements.callmanipulate.illustrator.svg.clone(),
781
+ 'type': 'callmanipulate',
782
+ 'params': [self.adaptor.description.elements.callmanipulate, node]},
783
+ {'label': 'Service Call',
784
+ 'function_call': func,
785
+ 'menu_icon': self.elements.call.illustrator.svg.clone(),
786
+ 'type': 'call',
787
+ 'params': [self.adaptor.description.elements.call, node]},
788
+ {'label': 'Manipulate',
789
+ 'function_call': func,
790
+ 'menu_icon': self.elements.manipulate.illustrator.svg.clone(),
791
+ 'type': 'manipulate',
792
+ 'params': [self.adaptor.description.elements.manipulate, node]},
793
+ {'label': 'Decision',
794
+ 'function_call': func,
795
+ 'menu_icon': self.elements.choose.illustrator.svg.clone(),
796
+ 'type': 'choose',
797
+ 'params': [self.adaptor.description.elements.choose, node]},
798
+ {'label': 'Loop',
799
+ 'function_call': func,
800
+ 'menu_icon': self.elements.loop.illustrator.svg.clone(),
801
+ 'type': 'loop',
802
+ 'params': [self.adaptor.description.elements.loop, node]},
803
+ {'label': 'Parallel Branch',
804
+ 'function_call': func,
805
+ 'menu_icon': self.elements.parallel_branch.illustrator.svg.clone(),
806
+ 'type': 'parallel_branch',
807
+ 'params': [self.adaptor.description.elements.parallel_branch, node]}
808
+ ];
809
+ if(node.get(0).tagName != 'parallel')
810
+ childs.push({'label': 'Parallel',
811
+ 'function_call': self.adaptor.description.insert_last_into,
812
+ 'menu_icon': self.elements.parallel.illustrator.svg.clone(),
813
+ 'type': 'parallel',
814
+ 'params': [self.adaptor.description.elements.parallel, node]});
815
+ return childs;
816
+ }, //}}}
817
+ 'adaptor': {//{{{
818
+ 'mousedown': function (node,e) {
819
+ self.events.mousedown(node,e,true,true);
820
+ },
821
+ 'click': self.events.click,
822
+ 'dblclick': self.events.dblclick,
823
+ 'mouseover': self.events.mouseover,
824
+ 'mouseout': self.events.mouseout,
825
+ }//}}}
826
+ }; /*}}}*/
827
+ this.elements.parallel_branch = { /*{{{*/
828
+ 'type': 'complex',
829
+ 'illustrator': {//{{{
830
+ 'endnodes': 'passthrough',
831
+ 'closeblock': false,
832
+ 'noarrow': true,
833
+ 'expansion': function(node) {
834
+ return 'vertical';
835
+ },
836
+ 'resolve_symbol': function(node,shift) {
837
+ if(shift == true) {
838
+ return 'parallel_branch_event';
839
+ } else {
840
+ return 'parallel_branch_normal';
841
+ }
842
+ },
843
+ 'col_shift': function(node) {
844
+ if(node.parentNode.tagName == 'choose') return false;
845
+ if($(node).parents('parallel').first().children(':not(parallel_branch)').length > 0) return true;
846
+ return false;
847
+ },
848
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel_branch.svg'
849
+ },//}}}
850
+ 'description': self.adaptor.theme_dir + 'rngs/parallel_branch.rng',
851
+ 'permissible_children': function(node,mode) { //{{{
852
+ var func = null;
853
+ var childs = null;
854
+ if (mode == 'into') { func = self.adaptor.description.insert_first_into }
855
+ else { func = self.adaptor.description.insert_after }
856
+ childs = [
857
+ {'label': 'Service Call with Scripts',
858
+ 'function_call': func,
859
+ 'menu_icon': self.elements.callmanipulate.illustrator.svg.clone(),
860
+ 'type': 'callmanipulate',
861
+ 'params': [self.adaptor.description.elements.callmanipulate, node]},
862
+ {'label': 'Service Call',
863
+ 'function_call': func,
864
+ 'menu_icon': self.elements.call.illustrator.svg.clone(),
865
+ 'type': 'call',
866
+ 'params': [self.adaptor.description.elements.call, node]},
867
+ {'label': 'Script',
868
+ 'function_call': func,
869
+ 'menu_icon': self.elements.manipulate.illustrator.svg.clone(),
870
+ 'type': 'manipulate',
871
+ 'params': [self.adaptor.description.elements.manipulate, node]},
872
+ {'label': 'Parallel',
873
+ 'function_call': func,
874
+ 'menu_icon': self.elements.parallel.illustrator.svg.clone(),
875
+ 'type': 'parallel',
876
+ 'params': [self.adaptor.description.elements.parallel, node]},
877
+ {'label': 'Decision',
878
+ 'function_call': func,
879
+ 'menu_icon': self.elements.choose.illustrator.svg.clone(),
880
+ 'type': 'choose',
881
+ 'params': [self.adaptor.description.elements.choose, node]},
882
+ {'label': 'Loop',
883
+ 'function_call': func,
884
+ 'menu_icon': self.elements.loop.illustrator.svg.clone(),
885
+ 'type': 'loop',
886
+ 'params': [self.adaptor.description.elements.loop, node]},
887
+ {'label': 'Terminate',
888
+ 'function_call': func,
889
+ 'menu_icon': self.elements.terminate.illustrator.svg.clone(),
890
+ 'type': 'terminate',
891
+ 'params': [self.adaptor.description.elements.terminate, node]},
892
+ {'label': 'Stop',
893
+ 'function_call': func,
894
+ 'menu_icon': self.elements.stop.illustrator.svg.clone(),
895
+ 'type': 'stop',
896
+ 'params': [self.adaptor.description.elements.stop, node]},
897
+ {'label': 'Critical',
898
+ 'function_call': func,
899
+ 'menu_icon': self.elements.critical.illustrator.svg.clone(),
900
+ 'type': 'critical',
901
+ 'params': [self.adaptor.description.elements.critical, node]},
902
+ ];
903
+ if(node.parents('choose').length > node.parents('alternative, otherwise').length && node.get(0).tagName == 'parallel_branch') {
904
+ return [{'label': 'Alternative',
905
+ 'function_call': func,
906
+ 'menu_icon': self.elements.alternative.illustrator.svg.clone(),
907
+ 'type': 'alternative',
908
+ 'params': [self.adaptor.description.elements.alternative, node]}];
909
+ }
910
+ return childs;
911
+ }, //}}}
912
+ 'adaptor': {//{{{
913
+ 'mousedown': function (node,e) {
914
+ var xml_node = self.adaptor.description.get_node_by_svg_id(node);
915
+ if(xml_node.get(0).parentNode.tagName == 'parallel') {
916
+ self.events.mousedown(node,e,true,false);
917
+ } else {
918
+ self.events.mousedown(node,e,true,true);
919
+ }
920
+ },
921
+ 'click': self.events.click,
922
+ 'dblclick': self.events.dblclick,
923
+ 'mouseover': self.events.mouseover,
924
+ 'mouseout': self.events.mouseout,
925
+ }//}}}
926
+ }; /*}}}*/
927
+ this.elements.critical = { /*{{{*/
928
+ 'type': 'complex',
929
+ 'illustrator': {//{{{
930
+ 'endnodes': 'aggregate',
931
+ 'closeblock': false,
932
+ 'border': true,
933
+ 'expansion': function(node) {
934
+ return 'vertical';
935
+ },
936
+ 'col_shift': function(node) {
937
+ return true;
938
+ },
939
+ 'svg': self.adaptor.theme_dir + 'symbols/critical.svg'
940
+ },//}}}
941
+ 'description': self.adaptor.theme_dir + 'rngs/critical.rng',
942
+ 'permissible_children': function(node,mode) { //{{{
943
+ var func = null;
944
+ if (mode == 'into') { func = self.adaptor.description.insert_first_into }
945
+ else { func = self.adaptor.description.insert_after }
946
+ return [
947
+ {'label': 'Service Call with Scripts',
948
+ 'function_call': func,
949
+ 'menu_icon': self.elements.callmanipulate.illustrator.svg.clone(),
950
+ 'type': 'callmanipulate',
951
+ 'params': [self.adaptor.description.elements.callmanipulate, node]},
952
+ {'label': 'Service Call',
953
+ 'function_call': func,
954
+ 'menu_icon': self.elements.call.illustrator.svg.clone(),
955
+ 'type': 'call',
956
+ 'params': [self.adaptor.description.elements.call, node]},
957
+ {'label': 'Script',
958
+ 'function_call': func,
959
+ 'menu_icon': self.elements.manipulate.illustrator.svg.clone(),
960
+ 'type': 'manipulate',
961
+ 'params': [self.adaptor.description.elements.manipulate, node]},
962
+ {'label': 'Parallel',
963
+ 'function_call': func,
964
+ 'menu_icon': self.elements.parallel.illustrator.svg.clone(),
965
+ 'type': 'parallel',
966
+ 'params': [self.adaptor.description.elements.parallel, node]},
967
+ {'label': 'Decision',
968
+ 'function_call': func,
969
+ 'menu_icon': self.elements.choose.illustrator.svg.clone(),
970
+ 'type': 'choose',
971
+ 'params': [self.adaptor.description.elements.choose, node]},
972
+ {'label': 'Loop',
973
+ 'function_call': func,
974
+ 'menu_icon': self.elements.loop.illustrator.svg.clone(),
975
+ 'type': 'loop',
976
+ 'params': [self.adaptor.description.elements.loop, node]},
977
+ {'label': 'Terminate',
978
+ 'function_call': func,
979
+ 'menu_icon': self.elements.terminate.illustrator.svg.clone(),
980
+ 'type': 'terminate',
981
+ 'params': [self.adaptor.description.elements.terminate, node]},
982
+ {'label': 'Stop',
983
+ 'function_call': func,
984
+ 'menu_icon': self.elements.stop.illustrator.svg.clone(),
985
+ 'type': 'stop',
986
+ 'params': [self.adaptor.description.elements.stop, node]},
987
+ {'label': 'Critical',
988
+ 'function_call': func,
989
+ 'menu_icon': self.elements.critical.illustrator.svg.clone(),
990
+ 'type': 'critical',
991
+ 'params': [self.adaptor.description.elements.critical, node]},
992
+ ];
993
+ }, //}}}
994
+ 'adaptor': {//{{{
995
+ 'mousedown': function (node,e) {
996
+ self.events.mousedown(node,e,true,true);
997
+ },
998
+ 'click': self.events.click,
999
+ 'dblclick': self.events.dblclick,
1000
+ 'mouseover': self.events.mouseover,
1001
+ 'mouseout': self.events.mouseout,
1002
+ }//}}}
1003
+ }; /*}}}*/
1004
+ this.elements.group = { /*{{{*/
1005
+ 'type': 'complex',
1006
+ 'illustrator': {//{{{
1007
+ 'endnodes': 'aggregate',
1008
+ 'closeblock': false,
1009
+ 'border': 'injectiongroup', // other value than true,false inidcates the used class for the svg-object
1010
+ 'expansion': function(node) {
1011
+ return 'vertical';
1012
+ },
1013
+ 'col_shift': function(node) {
1014
+ return true;
1015
+ },
1016
+ 'svg': null
1017
+ },//}}}
1018
+ 'description': self.adaptor.theme_dir + 'rngs/group.rng',
1019
+ 'permissible_children': function(node,mode) { //{{{
1020
+ var func = null;
1021
+ if (mode == 'into') { func = self.adaptor.description.insert_first_into }
1022
+ else { func = self.adaptor.description.insert_after }
1023
+ return [
1024
+ ];
1025
+ }, //}}}
1026
+ 'adaptor': {//{{{
1027
+ 'mousedown': function (node,e) {
1028
+ self.events.mousedown(node,e,true,true);
1029
+ },
1030
+ 'click': self.events.click,
1031
+ 'dblclick': self.events.dblclick,
1032
+ 'mouseover': self.events.mouseover,
1033
+ 'mouseout': self.events.mouseout,
1034
+ }//}}}
1035
+ }; /*}}}*/
1036
+ this.elements.start = this.elements.description = { /*{{{*/
1037
+ 'type': 'description',
1038
+ 'illustrator': {//{{{
1039
+ 'endnodes': 'passthrough',
1040
+ 'closeblock': false,
1041
+ 'balance': true,
1042
+ 'expansion': function(node) {
1043
+ return 'vertical';
1044
+ },
1045
+ 'closing_symbol': 'end',
1046
+ 'col_shift': function(node) {
1047
+ return true;
1048
+ },
1049
+ 'svg': self.adaptor.theme_dir + 'symbols/start.svg'
1050
+ },//}}}
1051
+ 'description': null,
1052
+ 'permissible_children': function(node,mode) { //{{{
1053
+ var func = null;
1054
+ if (mode == 'into') { func = self.adaptor.description.insert_first_into }
1055
+ else { func = self.adaptor.description.insert_after }
1056
+ return [
1057
+ {'label': 'Service Call with Scripts',
1058
+ 'function_call': func,
1059
+ 'menu_icon': self.elements.callmanipulate.illustrator.svg.clone(),
1060
+ 'type': 'callmanipulate',
1061
+ 'params': [self.adaptor.description.elements.callmanipulate, node]},
1062
+ {'label': 'Service Call',
1063
+ 'function_call': func,
1064
+ 'menu_icon': self.elements.call.illustrator.svg.clone(),
1065
+ 'type': 'call',
1066
+ 'params': [self.adaptor.description.elements.call, node]},
1067
+ {'label': 'Script Task',
1068
+ 'function_call': func,
1069
+ 'menu_icon': self.elements.manipulate.illustrator.svg.clone(),
1070
+ 'type': 'manipulate',
1071
+ 'params': [self.adaptor.description.elements.manipulate, node]},
1072
+ {'label': 'Parallel',
1073
+ 'function_call': func,
1074
+ 'menu_icon': self.elements.parallel.illustrator.svg.clone(),
1075
+ 'type': 'parallel',
1076
+ 'params': [self.adaptor.description.elements.parallel, node]},
1077
+ {'label': 'Decision',
1078
+ 'function_call': func,
1079
+ 'menu_icon': self.elements.choose.illustrator.svg.clone(),
1080
+ 'type': 'choose',
1081
+ 'params': [self.adaptor.description.elements.choose, node]},
1082
+ {'label': 'Loop',
1083
+ 'function_call': func,
1084
+ 'menu_icon': self.elements.loop.illustrator.svg.clone(),
1085
+ 'type': 'loop',
1086
+ 'params': [self.adaptor.description.elements.loop, node]},
1087
+ {'label': 'Terminate',
1088
+ 'function_call': func,
1089
+ 'menu_icon': self.elements.terminate.illustrator.svg.clone(),
1090
+ 'type': 'terminate',
1091
+ 'params': [self.adaptor.description.elements.terminate, node]},
1092
+ {'label': 'Stop',
1093
+ 'function_call': func,
1094
+ 'menu_icon': self.elements.stop.illustrator.svg.clone(),
1095
+ 'type': 'stop',
1096
+ 'params': [self.adaptor.description.elements.stop, node]},
1097
+ {'label': 'Critical',
1098
+ 'function_call': func,
1099
+ 'menu_icon': self.elements.critical.illustrator.svg.clone(),
1100
+ 'type': 'critical',
1101
+ 'params': [self.adaptor.description.elements.critical, node]}
1102
+ ];
1103
+ }, //}}}
1104
+ 'adaptor': {//{{{
1105
+ 'mousedown': function (node,e) {
1106
+ self.events.mousedown(node,e,true,false);
1107
+ },
1108
+ 'click': self.events.click,
1109
+ 'dblclick': self.events.dblclick,
1110
+ 'mouseover': self.events.mouseover,
1111
+ 'mouseout': self.events.mouseout,
1112
+ }//}}}
1113
+ }; /*}}}*/
1114
+
1115
+ // Abstract Elements
1116
+ // * they may only have an illustrator (or other parts)
1117
+ // * they HAVE TO have a parent
1118
+ this.elements.callmanipulate = { /*{{{*/
1119
+ 'parent': 'call',
1120
+ 'description': self.adaptor.theme_dir + 'rngs/callmanipulate.rng',
1121
+ 'illustrator': {//{{{
1122
+ 'info': function(node){ return { 'element-endpoint': $(node).attr('endpoint') }; },
1123
+ 'svg': self.adaptor.theme_dir + 'symbols/callmanipulate.svg'
1124
+ },//}}}
1125
+ }; /*}}}*/
1126
+ this.elements.choose_inclusive = { /*{{{*/
1127
+ 'parent': 'choose',
1128
+ 'illustrator': {//{{{
1129
+ 'svg': self.adaptor.theme_dir + 'symbols/choose_inclusive.svg'
1130
+ }//}}}
1131
+ }; /*}}}*/
1132
+ this.elements.choose_exclusive = { /*{{{*/
1133
+ 'parent': 'choose',
1134
+ 'illustrator': {//{{{
1135
+ 'svg': self.adaptor.theme_dir + 'symbols/choose_exclusive.svg'
1136
+ },//}}}
1137
+ }; /*}}}*/
1138
+ this.elements.choose_inclusive_finish = { /*{{{*/
1139
+ 'parent': 'choose_finish',
1140
+ 'illustrator': {//{{{
1141
+ 'svg': self.adaptor.theme_dir + 'symbols/choose_inclusive.svg'
1142
+ }//}}}
1143
+ }; /*}}}*/
1144
+ this.elements.choose_exclusive_finish = { /*{{{*/
1145
+ 'parent': 'choose_finish',
1146
+ 'illustrator': {//{{{
1147
+ 'svg': self.adaptor.theme_dir + 'symbols/choose_exclusive.svg'
1148
+ },//}}}
1149
+ }; /*}}}*/
1150
+ this.elements.parallel_simple = { /*{{{*/
1151
+ 'parent': 'parallel_finish',
1152
+ 'illustrator': {//{{{
1153
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel.svg'
1154
+ }//}}}
1155
+ }; /*}}}*/
1156
+ this.elements.parallel_complex = { /*{{{*/
1157
+ 'parent': 'parallel_finish',
1158
+ 'illustrator': {//{{{
1159
+ 'svg': self.adaptor.theme_dir + 'symbols/complex.svg'
1160
+ },//}}}
1161
+ }; /*}}}*/
1162
+ this.elements.parallel_branch_normal = { /*{{{*/
1163
+ 'parent': 'parallel_branch',
1164
+ 'illustrator': {//{{{
1165
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel_branch_normal.svg'
1166
+ }//}}}
1167
+ }; /*}}}*/
1168
+ this.elements.parallel_branch_event = { /*{{{*/
1169
+ 'parent': 'parallel_branch',
1170
+ 'illustrator': {//{{{
1171
+ 'endnodes': 'this',
1172
+ 'noarrow': false,
1173
+ 'border': true,
1174
+ 'wide': true,
1175
+ 'closing_symbol': 'event_end',
1176
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel_branch_event.svg'
1177
+ }//}}}
1178
+ }; /*}}}*/
1179
+ this.elements.parallel_branch_compact = { /*{{{*/
1180
+ 'parent': 'parallel_branch',
1181
+ 'illustrator': {//{{{
1182
+ 'endnodes': 'this',
1183
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel_branch_compact.svg'
1184
+ }//}}}
1185
+ }; /*}}}*/
1186
+ this.elements.scripts = { /*{{{*/
1187
+ 'description': [self.adaptor.theme_dir + 'rngs/update.rng',self.adaptor.theme_dir + 'rngs/finalize.rng']
1188
+ }; /*}}}*/
1189
+ }