aboutsummaryrefslogtreecommitdiffstats
path: root/winery/org.eclipse.winery.repository/src/main/webapp/js/boundaryDefinitionsXSelection.js
blob: afefc8c20157f48f11e5e8ad7f9d24e868d968c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*******************************************************************************
 * Copyright (c) 2014 University of Stuttgart.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * and the Apache License 2.0 which both accompany this distribution,
 * and are available at http://www.eclipse.org/legal/epl-v10.html
 * and http://www.apache.org/licenses/LICENSE-2.0
 *
 * Contributors:
 *    Oliver Kopp - initial API and implementation
 *    Tobias Binz - communication with the parent window
 *******************************************************************************/

 /**
  * Called from the renderer as soon as the whole topology is loaded
  */
 function wineryViewExternalScriptOnLoad() {

	function getIdOfNodeTemplateShape(element) {
		var nodeTemplate = element.closest("div.NodeTemplateShape");
		var id = nodeTemplate.children("div.headerContainer").children("div.id").text();
		return id;
	}

	jsPlumb.bind("ready", function() {
		jsPlumb.bind("click", function(conn, originalEvent) {
			var id = winery.connections[conn.id].id;
			var message = {
				targetRelationshipTemplateRef: id
			}
			sendMessage(message);
		});
	});


	$("div.NodeTemplateShape").on("click", function(e) {
		var id = getIdOfNodeTemplateShape($(e.target));
		// send id and empty property as no property has been clicked
		var message = {
			targetObjectRef: id,
			targetPropertyRef: ""
		};
		sendMessage(message);

		return false;
	});

	$("tr.KVProperty").on("click", function(e) {
		var trKVProperty = $(e.target).closest("tr.KVProperty");
		var key = trKVProperty.children("td").children("span.KVPropertyKey").text();

		var content = trKVProperty.closest("div.content");
		var elementName = content.children("span.elementName").text();

		// form namespace-unaware XPath
		var xpath = "/*[local-name()='" + elementName + "']/*[local-name()='" + key + "']";

		var message = {
			targetPropertyRef: xpath,
			targetObjectRef: getIdOfNodeTemplateShape(trKVProperty)
		};
		sendMessage(message);

		// do not trigger click on NodeTemplateShape -> we included both values in the message
		return false;
	});

	$("div.requirements").on("click", function(e) {
		var reqorcap = $(e.target).closest("div.requirements");
		var id = reqorcap.children("div.id").text();

		var message = {
			reqRef: id
		};
		sendMessage(message);

		return false;
	});

	$("div.capabilities").on("click", function(e) {
		var reqorcap = $(e.target).closest("div.capabilities");
		var id = reqorcap.children("div.id").text();

		var message = {
			capRef: id
		};
		sendMessage(message);

		return false;
	});

 }

function sendMessage(message) {
	window.parent.postMessage(message, "*");
}