1(function()
2{
3	// Adds ArchiMate v3.0 shapes
4	Sidebar.prototype.addArchimate3Palette = function()
5	{
6		this.setCurrentSearchEntryLibrary('archimate3', 'archimate3Application');
7		this.addArchimate3ApplicationPalette();
8		this.setCurrentSearchEntryLibrary('archimate3', 'archimate3Business');
9		this.addArchimate3BusinessPalette();
10		this.setCurrentSearchEntryLibrary('archimate3', 'archimate3Composite');
11		this.addArchimate3CompositePalette();
12		this.setCurrentSearchEntryLibrary('archimate3', 'archimate3Implementation and Migration');
13		this.addArchimate3ImplementationAndMigrationPalette();
14		this.setCurrentSearchEntryLibrary('archimate3', 'archimate3Motivation');
15		this.addArchimate3MotivationPalette();
16		this.setCurrentSearchEntryLibrary('archimate3', 'archimate3Physical');
17		this.addArchimate3PhysicalPalette();
18		this.setCurrentSearchEntryLibrary('archimate3', 'archimate3Relationships');
19		this.addArchimate3RelationshipsPalette();
20		this.setCurrentSearchEntryLibrary('archimate3', 'archimate3Strategy');
21		this.addArchimate3StrategyPalette();
22		this.setCurrentSearchEntryLibrary('archimate3', 'archimate3Technology');
23		this.addArchimate3TechnologyPalette();
24		this.setCurrentSearchEntryLibrary();
25	};
26
27	Sidebar.prototype.addArchimate3ApplicationPalette = function()
28	{
29		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.';
30
31		// Space savers
32		var sb = this;
33		var gn = 'mxgraph.archimate3';
34		var dt = 'archimate application layer ';
35
36		var w = 1.0;
37		var h = 1.0;
38
39		var fns =
40		[
41			this.createVertexTemplateEntry(am2 + 'application;appType=comp;archiType=square;',
42					w * 150, h * 75, '', 'Application Component', null, null, this.getTagsForStencil(gn, '', dt + 'component').join(' ')),
43			this.createVertexTemplateEntry(am2 + 'component;',
44					w * 70, h * 75, '', 'Component', null, null, this.getTagsForStencil(gn, '', dt + 'component').join(' ')),
45			this.createVertexTemplateEntry(am2 + 'application;appType=collab;archiType=square;',
46					w * 150, h * 75, '', 'Application Collaboration', null, null, this.getTagsForStencil(gn, '', dt + 'collaboration').join(' ')),
47			this.createVertexTemplateEntry(am2 + 'collaboration;',
48					w * 60, h * 35, '', 'Collaboration', null, null, this.getTagsForStencil(gn, '', dt + 'collaboration').join(' ')),
49			this.createVertexTemplateEntry(am2 + 'application;appType=interface;archiType=square;',
50					w * 150, h * 75, '', 'Application Interface', null, null, this.getTagsForStencil(gn, '', dt + 'component').join(' ')),
51			this.createVertexTemplateEntry(am2 + 'interface;',
52					w * 70, h * 35, '', 'Interface', null, null, this.getTagsForStencil(gn, '', dt + 'interface').join(' ')),
53			this.createVertexTemplateEntry(am2 + 'application;appType=proc;archiType=rounded;',
54					w * 150, h * 75, '', 'Application Process', null, null, this.getTagsForStencil(gn, '', dt + 'process').join(' ')),
55			this.createVertexTemplateEntry(am2 + 'process;',
56					w * 150, h * 75, '', 'Process', null, null, this.getTagsForStencil(gn, '', dt + 'process').join(' ')),
57			this.createVertexTemplateEntry(am2 + 'application;appType=func;archiType=rounded;',
58					w * 150, h * 75, '', 'Application Function', null, null, this.getTagsForStencil(gn, '', dt + 'function').join(' ')),
59			this.createVertexTemplateEntry(am2 + 'function;',
60					w * 75, h * 75, '', 'Function', null, null, this.getTagsForStencil(gn, '', dt + 'function').join(' ')),
61			this.createVertexTemplateEntry(am2 + 'application;appType=interaction;archiType=rounded;',
62					w * 150, h * 75, '', 'Application Interaction', null, null, this.getTagsForStencil(gn, '', dt + 'interaction').join(' ')),
63			this.createVertexTemplateEntry(am2 + 'interaction;',
64					w * 75, h * 75, '', 'Interaction', null, null, this.getTagsForStencil(gn, '', dt + 'interaction').join(' ')),
65			this.createVertexTemplateEntry(am2 + 'application;appType=serv;archiType=rounded',
66					w * 150, h * 75, '', 'Application Service', null, null, this.getTagsForStencil(gn, '', dt + 'service').join(' ')),
67			this.createVertexTemplateEntry(am2 + 'service;',
68					w * 60, h * 35, '', 'Service', null, null, this.getTagsForStencil(gn, '', dt + 'service').join(' ')),
69			this.createVertexTemplateEntry(am2 + 'application;appType=event;archiType=rounded',
70					w * 150, h * 75, '', 'Application Event', null, null, this.getTagsForStencil(gn, '', dt + 'event').join(' ')),
71			this.createVertexTemplateEntry(am2 + 'event;',
72					w * 60, h * 35, '', 'Event', null, null, this.getTagsForStencil(gn, '', dt + 'event').join(' ')),
73			this.createVertexTemplateEntry(am2 + 'businessObject;overflow=fill',
74					w * 150, h * 75, '<table cellpadding="0" cellspacing="0" style="font-size:1em;width:100%;height:100%;"><tr style="height:20px;"><td align="center"></td></tr><tr><td align="left" valign="top" style="padding:4px;"></td></tr></table>',
75					'Data Object', null, null, this.getTagsForStencil(gn, '', dt + 'data object').join(' '))
76		];
77
78		this.addPalette('archimate3Application', 'Archimate 3.0 / Application', false, mxUtils.bind(this, function(content)
79				{
80					for (var i = 0; i < fns.length; i++)
81					{
82						content.appendChild(fns[i](content));
83					}
84		}));
85	};
86
87	Sidebar.prototype.addArchimate3BusinessPalette = function()
88	{
89		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.';
90		var am3 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.archimate3.';
91
92		// Space savers
93		var sb = this;
94		var gn = 'mxgraph.archimate3';
95		var dt = 'archimate business layer ';
96
97		var w = 1.0;
98		var h = 1.0;
99
100		var fns =
101		[
102			this.createVertexTemplateEntry(am2 + 'application;appType=actor;archiType=square;',
103					w * 150, h * 75, '', 'Business Actor', null, null, this.getTagsForStencil(gn, '', dt + 'actor').join(' ')),
104			this.createVertexTemplateEntry(am3 + 'actor;',
105					w * 50, h * 95, '', 'Actor', null, null, this.getTagsForStencil(gn, '', dt + 'actor').join(' ')),
106			this.createVertexTemplateEntry(am2 + 'application;appType=role;archiType=square;',
107					w * 150, h * 75, '', 'Business Role', null, null, this.getTagsForStencil(gn, '', dt + 'role').join(' ')),
108			this.createVertexTemplateEntry(am2 + 'role;',
109					w * 85, h * 50, '', 'Role', null, null, this.getTagsForStencil(gn, '', dt + 'role').join(' ')),
110			this.createVertexTemplateEntry(am2 + 'application;appType=collab;archiType=square;',
111					w * 150, h * 75, '', 'Business Collaboration', null, null, this.getTagsForStencil(gn, '', dt + 'collaboration').join(' ')),
112			this.createVertexTemplateEntry(am2 + 'collaboration;',
113					w * 60, h * 35, '', 'Collaboration', null, null, this.getTagsForStencil(gn, '', dt + 'collaboration').join(' ')),
114			this.createVertexTemplateEntry(am2 + 'application;appType=interface;archiType=square;',
115					w * 150, h * 75, '', 'Business Interface', null, null, this.getTagsForStencil(gn, '', dt + 'component').join(' ')),
116			this.createVertexTemplateEntry(am2 + 'interface;',
117					w * 70, h * 35, '', 'Interface', null, null, this.getTagsForStencil(gn, '', dt + 'interface').join(' ')),
118			this.createVertexTemplateEntry(am2 + 'application;appType=proc;archiType=rounded;',
119					w * 150, h * 75, '', 'Business Process', null, null, this.getTagsForStencil(gn, '', dt + 'process').join(' ')),
120			this.createVertexTemplateEntry(am2 + 'process;',
121					w * 150, h * 75, '', 'Process', null, null, this.getTagsForStencil(gn, '', dt + 'process').join(' ')),
122			this.createVertexTemplateEntry(am2 + 'application;appType=func;archiType=rounded;',
123					w * 150, h * 75, '', 'Business Function', null, null, this.getTagsForStencil(gn, '', dt + 'function').join(' ')),
124			this.createVertexTemplateEntry(am2 + 'function;',
125					w * 75, h * 75, '', 'Function', null, null, this.getTagsForStencil(gn, '', dt + 'function').join(' ')),
126			this.createVertexTemplateEntry(am2 + 'application;appType=interaction;archiType=rounded;',
127					w * 150, h * 75, '', 'Business Interaction', null, null, this.getTagsForStencil(gn, '', dt + 'interaction').join(' ')),
128			this.createVertexTemplateEntry(am2 + 'interaction;',
129					w * 75, h * 75, '', 'Interaction', null, null, this.getTagsForStencil(gn, '', dt + 'interaction').join(' ')),
130			this.createVertexTemplateEntry(am2 + 'application;appType=serv;archiType=rounded;',
131					w * 150, h * 75, '', 'Business Service', null, null, this.getTagsForStencil(gn, '', dt + 'service').join(' ')),
132			this.createVertexTemplateEntry(am2 + 'service;',
133					w * 60, h * 35, '', 'Service', null, null, this.getTagsForStencil(gn, '', dt + 'service').join(' ')),
134			this.createVertexTemplateEntry(am2 + 'application;appType=event;archiType=rounded;',
135					w * 150, h * 75, '', 'Application Event', null, null, this.getTagsForStencil(gn, '', dt + 'event').join(' ')),
136			this.createVertexTemplateEntry(am2 + 'event;',
137					w * 60, h * 35, '', 'Event', null, null, this.getTagsForStencil(gn, '', dt + 'event').join(' ')),
138			this.createVertexTemplateEntry(am2 + 'businessObject;overflow=fill;',
139					w * 150, h * 75, '<table cellpadding="0" cellspacing="0" style="font-size:1em;width:100%;height:100%;"><tr style="height:20px;"><td align="center"></td></tr><tr><td align="left" valign="top" style="padding:4px;"></td></tr></table>',
140					'Business Object', null, null, this.getTagsForStencil(gn, '', dt + 'data object').join(' ')),
141			this.createVertexTemplateEntry(am2 + 'contract;',
142					w * 150, h * 75, '', 'Contract', null, null, this.getTagsForStencil(gn, '', dt + 'contract').join(' ')),
143			this.createVertexTemplateEntry(am2 + 'product;',
144					w * 150, h * 75, '', 'Product', null, null, this.getTagsForStencil(gn, '', dt + 'product').join(' ')),
145			this.createVertexTemplateEntry(am2 + 'representation;',
146					w * 150, h * 90, '', 'Representation', null, null, this.getTagsForStencil(gn, '', dt + 'representation').join(' '))
147		];
148
149		this.addPalette('archimate3Business', 'Archimate 3.0 / Business', false, mxUtils.bind(this, function(content)
150				{
151					for (var i = 0; i < fns.length; i++)
152					{
153						content.appendChild(fns[i](content));
154					}
155		}));
156	};
157
158	Sidebar.prototype.addArchimate3CompositePalette = function()
159	{
160		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFB973;shape=mxgraph.archimate3.';
161
162		// Space savers
163		var sb = this;
164		var gn = 'mxgraph.archimate3';
165		var dt = 'archimate composite element ';
166
167		var w = 1.0;
168		var h = 1.0;
169
170		var fns =
171		[
172			this.createVertexTemplateEntry(am2 + 'application;appType=location;archiType=square;',
173					w * 150, h * 75, '', 'Location', null, null, this.getTagsForStencil(gn, '', dt + 'location').join(' ')),
174			this.createVertexTemplateEntry('shape=folder;spacingTop=10;tabWidth=100;tabHeight=25;tabPosition=left;html=1;dashed=1;',
175					w * 150, h * 105, '', 'Group', null, null, this.getTagsForStencil(gn, '', dt + 'actor').join(' '))
176		];
177
178		this.addPalette('archimate3Composite', 'Archimate 3.0 / Composite', false, mxUtils.bind(this, function(content)
179				{
180					for (var i = 0; i < fns.length; i++)
181					{
182						content.appendChild(fns[i](content));
183					}
184		}));
185	};
186
187	Sidebar.prototype.addArchimate3ImplementationAndMigrationPalette = function()
188	{
189		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;shape=mxgraph.archimate3.';
190		var am3 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;shape=mxgraph.archimate3.';
191
192		// Space savers
193		var sb = this;
194		var gn = 'mxgraph.archimate3';
195		var dt = 'archimate implementation migration element ';
196
197		var w = 1.0;
198		var h = 1.0;
199
200		var fns =
201		[
202			this.createVertexTemplateEntry(am2 + 'application;archiType=rounded;',
203					w * 150, h * 75, '', 'Work Package', null, null, this.getTagsForStencil(gn, '', dt + 'work package').join(' ')),
204			this.createVertexTemplateEntry(am2 + 'application;appType=event;archiType=rounded;',
205					w * 150, h * 75, '', 'Implementation Event', null, null, this.getTagsForStencil(gn, '', dt + 'implementation event').join(' ')),
206			this.createVertexTemplateEntry(am2 + 'event;',
207					w * 60, h * 35, '', 'Event', null, null, this.getTagsForStencil(gn, '', dt + 'event').join(' ')),
208			this.createVertexTemplateEntry(am2 + 'deliverable;',
209					w * 150, h * 60, '', 'Deliverable', null, null, this.getTagsForStencil(gn, '', dt + 'deliverable').join(' ')),
210			this.createVertexTemplateEntry(am3 + 'tech;techType=plateau;',
211					w * 150, h * 75, '', 'Plateau', null, null, this.getTagsForStencil(gn, '', dt + 'plateau').join(' ')),
212			this.createVertexTemplateEntry(am3 + 'gap;',
213					w * 150, h * 60, '', 'Gap', null, null, this.getTagsForStencil(gn, '', dt + 'gap').join(' '))
214		];
215
216		this.addPalette('archimate3Implementation and Migration', 'Archimate 3.0 / Implementation and Migration', false, mxUtils.bind(this, function(content)
217				{
218					for (var i = 0; i < fns.length; i++)
219					{
220						content.appendChild(fns[i](content));
221					}
222		}));
223	};
224
225	Sidebar.prototype.addArchimate3MotivationPalette = function()
226	{
227		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.';
228
229		// Space savers
230		var sb = this;
231		var gn = 'mxgraph.archimate3';
232		var dt = 'archimate implementation motivation element ';
233
234		var w = 1.0;
235		var h = 1.0;
236
237		var fns =
238		[
239			this.createVertexTemplateEntry(am2 + 'application;appType=role;archiType=oct;',
240					w * 150, h * 75, '', 'Stakeholder', null, null, this.getTagsForStencil(gn, '', dt + 'stakeholder').join(' ')),
241			this.createVertexTemplateEntry(am2 + 'application;appType=driver;archiType=oct;',
242					w * 150, h * 75, '', 'Driver', null, null, this.getTagsForStencil(gn, '', dt + 'driver').join(' ')),
243			this.createVertexTemplateEntry(am2 + 'application;appType=assess;archiType=oct;',
244					w * 150, h * 75, '', 'Assesment', null, null, this.getTagsForStencil(gn, '', dt + 'assessment').join(' ')),
245			this.createVertexTemplateEntry('shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;perimeter=ellipsePerimeter;',
246					w * 150, h * 75, '', 'Value', null, null, this.getTagsForStencil(gn, '', dt + 'value').join(' ')),
247			this.createVertexTemplateEntry('shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;',
248					w * 150, h * 75, '', 'Meaning', null, null, this.getTagsForStencil(gn, '', dt + 'meaning').join(' ')),
249			this.createVertexTemplateEntry(am2 + 'application;appType=goal;archiType=oct;',
250					w * 150, h * 75, '', 'Goal', null, null, this.getTagsForStencil(gn, '', dt + 'goal').join(' ')),
251			this.createVertexTemplateEntry(am2 + 'application;appType=outcome;archiType=oct;',
252					w * 150, h * 75, '', 'Outcome', null, null, this.getTagsForStencil(gn, '', dt + 'outcome').join(' ')),
253			this.createVertexTemplateEntry(am2 + 'application;appType=principle;archiType=oct;',
254					w * 150, h * 75, '', 'Principle', null, null, this.getTagsForStencil(gn, '', dt + 'principle').join(' ')),
255			this.createVertexTemplateEntry(am2 + 'application;appType=requirement;archiType=oct;',
256					w * 150, h * 75, '', 'Requirement', null, null, this.getTagsForStencil(gn, '', dt + 'requirement').join(' ')),
257			this.createVertexTemplateEntry(am2 + 'requirement;',
258					w * 100, h * 50, '', 'Requirement', null, null, this.getTagsForStencil(gn, '', dt + 'requirement').join(' ')),
259			this.createVertexTemplateEntry(am2 + 'application;appType=constraint;archiType=oct;',
260					w * 150, h * 75, '', 'Constraint', null, null, this.getTagsForStencil(gn, '', dt + 'constraint').join(' ')),
261			this.createVertexTemplateEntry(am2 + 'constraint;',
262					w * 100, h * 50, '', 'Constraint', null, null, this.getTagsForStencil(gn, '', dt + 'constraint').join(' '))
263		];
264
265		this.addPalette('archimate3Motivation', 'Archimate 3.0 / Motivation', false, mxUtils.bind(this, function(content)
266				{
267					for (var i = 0; i < fns.length; i++)
268					{
269						content.appendChild(fns[i](content));
270					}
271		}));
272	};
273
274	Sidebar.prototype.addArchimate3PhysicalPalette = function()
275	{
276		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.';
277
278		// Space savers
279		var sb = this;
280		var gn = 'mxgraph.archimate3';
281		var dt = 'archimate physical element ';
282
283		var w = 1.0;
284		var h = 1.0;
285
286		var fns =
287		[
288			this.createVertexTemplateEntry(am2 + 'tech;techType=facility;',
289					w * 150, h * 75, '', 'Facility', null, null, this.getTagsForStencil(gn, '', dt + 'facility').join(' ')),
290			this.createVertexTemplateEntry(am2 + 'tech;techType=equipment;',
291					w * 150, h * 75, '', 'Equipment', null, null, this.getTagsForStencil(gn, '', dt + 'equipment').join(' ')),
292			this.createVertexTemplateEntry(am2 + 'application;appType=material;archiType=square;',
293					w * 150, h * 75, '', 'Material', null, null, this.getTagsForStencil(gn, '', dt + 'material').join(' ')),
294			this.createVertexTemplateEntry(am2 + 'application;appType=distribution;archiType=square;',
295					w * 150, h * 75, '', 'Distribution Network', null, null, this.getTagsForStencil(gn, '', dt + 'distribution').join(' ')),
296			this.createVertexTemplateEntry(am2 + 'distribution;',
297					w * 90, h * 40, '', 'Distribution Network', null, null, this.getTagsForStencil(gn, '', dt + 'distribution').join(' '))
298		];
299
300		this.addPalette('archimate3Physical', 'Archimate 3.0 / Physical', false, mxUtils.bind(this, function(content)
301				{
302					for (var i = 0; i < fns.length; i++)
303					{
304						content.appendChild(fns[i](content));
305					}
306		}));
307	};
308
309	Sidebar.prototype.addArchimate3RelationshipsPalette = function()
310	{
311		// Space savers
312		var sb = this;
313		var gn = 'mxgraph.archimate3';
314		var dt = 'archimate relationship ';
315
316		var w = 1.0;
317		var h = 1.0;
318
319		var fns =
320		[
321			this.createEdgeTemplateEntry('html=1;endArrow=diamondThin;endFill=1;edgeStyle=elbowEdgeStyle;elbow=vertical;endSize=10;',
322					w * 160, 0, '', 'Composition', null, this.getTagsForStencil(gn, '', dt + 'composition').join(' ')),
323			this.createEdgeTemplateEntry('html=1;endArrow=diamondThin;endFill=0;edgeStyle=elbowEdgeStyle;elbow=vertical;endSize=10;',
324					w * 160, 0, '', 'Aggregation', null, this.getTagsForStencil(gn, '', dt + 'aggregation').join(' ')),
325			this.createEdgeTemplateEntry('endArrow=block;html=1;endFill=1;startArrow=oval;startFill=1;edgeStyle=elbowEdgeStyle;elbow=vertical;',
326					w * 160, 0, '', 'Assignment', null, this.getTagsForStencil(gn, '', dt + 'assignment').join(' ')),
327			this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;html=1;endArrow=block;elbow=vertical;endFill=0;dashed=1;',
328					w * 160, 0, '', 'Realization', null, this.getTagsForStencil(gn, '', dt + 'realization').join(' ')),
329			this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=1;',
330					w * 160, 0, '', 'Serving', null, this.getTagsForStencil(gn, '', dt + 'serving').join(' ')),
331			this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;html=1;endArrow=none;elbow=vertical;dashed=1;startFill=0;dashPattern=1 4;',
332					w * 160, 0, '', 'Access', null, this.getTagsForStencil(gn, '', dt + 'access').join(' ')),
333			this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=0;dashed=1;startArrow=open;startFill=0;dashPattern=1 4;',
334					w * 160, 0, '', 'Access', null, this.getTagsForStencil(gn, '', dt + 'access').join(' ')),
335			this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=0;dashed=1;dashPattern=1 4;',
336					w * 160, 0, '', 'Access', null, this.getTagsForStencil(gn, '', dt + 'access').join(' ')),
337
338			this.addEntry('uml influence', function()
339			{
340				var edge = new mxCell('+/-', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;endArrow=open;elbow=vertical;endFill=0;dashed=1;dashPattern=6 4;');
341				edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
342				edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
343				edge.geometry.relative = true;
344				edge.geometry.x = 1;
345				edge.geometry.y = 10;
346				edge.edge = true;
347
348				return sb.createEdgeTemplateFromCells([edge], 160, 0, 'Influence');
349			}),
350
351			this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;html=1;endArrow=block;dashed=0;elbow=vertical;endFill=1;',
352					w * 160, 0, '', 'Triggering', null, this.getTagsForStencil(gn, '', dt + 'triggering').join(' ')),
353			this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;html=1;endArrow=block;dashed=1;elbow=vertical;endFill=1;dashPattern=6 4;',
354					w * 160, 0, '', 'Flow', null, this.getTagsForStencil(gn, '', dt + 'flow').join(' ')),
355			this.createEdgeTemplateEntry('endArrow=block;html=1;endFill=0;edgeStyle=elbowEdgeStyle;elbow=vertical;',
356					w * 160, 0, '', 'Specialization', null, this.getTagsForStencil(gn, '', dt + 'specialization').join(' ')),
357			this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;html=1;endArrow=none;elbow=vertical;',
358					w * 160, 0, '', 'Association', null, this.getTagsForStencil(gn, '', dt + 'association').join(' ')),
359			this.createVertexTemplateEntry('ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#000000',
360					10, 10, '', 'And Junction', null, this.getTagsForStencil(gn, '', dt + 'junction').join(' ')),
361			this.createVertexTemplateEntry('ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#ffffff',
362					10, 10, '', 'Or Junction', null, this.getTagsForStencil(gn, '', dt + 'junction').join(' '))
363		];
364
365		this.addPalette('archimate3Relationships', 'Archimate 3.0 / Relationships', false, mxUtils.bind(this, function(content)
366				{
367					for (var i = 0; i < fns.length; i++)
368					{
369						content.appendChild(fns[i](content));
370					}
371		}));
372	};
373
374	Sidebar.prototype.addArchimate3StrategyPalette = function()
375	{
376		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;shape=mxgraph.archimate3.';
377
378		// Space savers
379		var sb = this;
380		var gn = 'mxgraph.archimate3';
381		var dt = 'archimate strategy ';
382
383		var w = 1.0;
384		var h = 1.0;
385
386		var fns =
387		[
388			this.createVertexTemplateEntry(am2 + 'application;appType=resource;archiType=square;',
389					w * 150, h * 75, '', 'Resource', null, null, this.getTagsForStencil(gn, '', dt + 'resource').join(' ')),
390			this.createVertexTemplateEntry(am2 + 'application;appType=capability;archiType=rounded;',
391					w * 150, h * 75, '', 'Capability', null, null, this.getTagsForStencil(gn, '', dt + 'capability').join(' ')),
392			this.createVertexTemplateEntry(am2 + 'application;appType=course;archiType=rounded;',
393					w * 150, h * 75, '', 'Course of Action', null, null, this.getTagsForStencil(gn, '', dt + 'course action').join(' '))
394		];
395
396		this.addPalette('archimate3Strategy', 'Archimate 3.0 / Strategy', false, mxUtils.bind(this, function(content)
397				{
398					for (var i = 0; i < fns.length; i++)
399					{
400						content.appendChild(fns[i](content));
401					}
402		}));
403	};
404
405	Sidebar.prototype.addArchimate3TechnologyPalette = function()
406	{
407		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.';
408
409		// Space savers
410		var sb = this;
411		var gn = 'mxgraph.archimate3';
412		var dt = 'archimate technology ';
413
414		var w = 1.0;
415		var h = 1.0;
416
417		var fns =
418		[
419			this.createVertexTemplateEntry(am2 + 'application;appType=node;archiType=square;',
420					w * 150, h * 75, '', 'Node', null, null, this.getTagsForStencil(gn, '', dt + 'node').join(' ')),
421			this.createVertexTemplateEntry(am2 + 'node;',
422					w * 100, h * 60, '', 'Node', null, null, this.getTagsForStencil(gn, '', dt + 'node').join(' ')),
423			this.createVertexTemplateEntry(am2 + 'tech;techType=device;',
424					w * 150, h * 75, '', 'Device', null, null, this.getTagsForStencil(gn, '', dt + 'device').join(' ')),
425			this.createVertexTemplateEntry(am2 + 'device;',
426					w * 80, h * 65, '', 'Device', null, null, this.getTagsForStencil(gn, '', dt + 'device').join(' ')),
427			this.createVertexTemplateEntry(am2 + 'application;appType=sysSw;archiType=square;',
428					w * 150, h * 75, '', 'System Software', null, null, this.getTagsForStencil(gn, '', dt + 'system software').join(' ')),
429			this.createVertexTemplateEntry(am2 + 'tech;techType=sysSw;',
430					w * 120, h * 75, '', 'System Software', null, null, this.getTagsForStencil(gn, '', dt + 'system software').join(' ')),
431			this.createVertexTemplateEntry(am2 + 'application;appType=collab;archiType=square;',
432					w * 150, h * 75, '', 'Technology Collaboration', null, null, this.getTagsForStencil(gn, '', dt + 'collaboration').join(' ')),
433			this.createVertexTemplateEntry(am2 + 'collaboration;',
434					w * 60, h * 35, '', 'Collaboration', null, null, this.getTagsForStencil(gn, '', dt + 'collaboration').join(' ')),
435			this.createVertexTemplateEntry(am2 + 'application;appType=interface;archiType=square;',
436					w * 150, h * 75, '', 'Technology Interface', null, null, this.getTagsForStencil(gn, '', dt + 'component').join(' ')),
437			this.createVertexTemplateEntry(am2 + 'interface;',
438					w * 70, h * 35, '', 'Interface', null, null, this.getTagsForStencil(gn, '', dt + 'interface').join(' ')),
439			this.createVertexTemplateEntry(am2 + 'application;appType=proc;archiType=rounded;',
440					w * 150, h * 75, '', 'Technology Process', null, null, this.getTagsForStencil(gn, '', dt + 'process').join(' ')),
441			this.createVertexTemplateEntry(am2 + 'process;',
442					w * 150, h * 75, '', 'Process', null, null, this.getTagsForStencil(gn, '', dt + 'process').join(' ')),
443			this.createVertexTemplateEntry(am2 + 'application;appType=func;archiType=rounded;',
444					w * 150, h * 75, '', 'Technology Function', null, null, this.getTagsForStencil(gn, '', dt + 'function').join(' ')),
445			this.createVertexTemplateEntry(am2 + 'function;',
446					w * 75, h * 75, '', 'Function', null, null, this.getTagsForStencil(gn, '', dt + 'function').join(' ')),
447			this.createVertexTemplateEntry(am2 + 'application;appType=interaction;archiType=rounded;',
448					w * 150, h * 75, '', 'Technology Interaction', null, null, this.getTagsForStencil(gn, '', dt + 'interaction').join(' ')),
449			this.createVertexTemplateEntry(am2 + 'interaction;',
450					w * 75, h * 75, '', 'Interaction', null, null, this.getTagsForStencil(gn, '', dt + 'interaction').join(' ')),
451			this.createVertexTemplateEntry(am2 + 'application;appType=serv;archiType=rounded',
452					w * 150, h * 75, '', 'Technology Service', null, null, this.getTagsForStencil(gn, '', dt + 'service').join(' ')),
453			this.createVertexTemplateEntry(am2 + 'service;',
454					w * 60, h * 35, '', 'Service', null, null, this.getTagsForStencil(gn, '', dt + 'service').join(' ')),
455			this.createVertexTemplateEntry(am2 + 'application;appType=event;archiType=rounded',
456					w * 150, h * 75, '', 'Technology Event', null, null, this.getTagsForStencil(gn, '', dt + 'event').join(' ')),
457			this.createVertexTemplateEntry(am2 + 'event;',
458					w * 60, h * 35, '', 'Event', null, null, this.getTagsForStencil(gn, '', dt + 'event').join(' ')),
459			this.createVertexTemplateEntry(am2 + 'application;appType=artifact;archiType=square;',
460					w * 150, h * 75, '', 'Technology Artifact', null, null, this.getTagsForStencil(gn, '', dt + 'artifact').join(' ')),
461			this.createVertexTemplateEntry(am2 + 'artifact;',
462					w * 50, h * 75, '', 'Artifact', null, null, this.getTagsForStencil(gn, '', dt + 'artifact').join(' ')),
463			this.createVertexTemplateEntry(am2 + 'application;appType=netw;archiType=square;',
464					w * 150, h * 75, '', 'Communication Network', null, null, this.getTagsForStencil(gn, '', dt + 'communication network').join(' ')),
465			this.createVertexTemplateEntry(am2 + 'commNetw;strokeWidth=6;',
466					w * 100, h * 30, '', 'Communication Network', null, null, this.getTagsForStencil(gn, '', dt + 'communication network').join(' ')),
467			this.createVertexTemplateEntry(am2 + 'application;appType=path;archiType=square;',
468					w * 150, h * 75, '', 'Path', null, null, this.getTagsForStencil(gn, '', dt + 'communication network').join(' ')),
469			this.createVertexTemplateEntry(am2 + 'path;strokeWidth=6;',
470					w * 100, h * 30, '', 'Path', null, null, this.getTagsForStencil(gn, '', dt + 'path').join(' '))
471		];
472
473		this.addPalette('archimate3Technology', 'Archimate 3.0 / Technology', false, mxUtils.bind(this, function(content)
474				{
475					for (var i = 0; i < fns.length; i++)
476					{
477						content.appendChild(fns[i](content));
478					}
479		}));
480	};
481})();
482