Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 950b5d2c6bdcf6d40773a281c0c8f0a8663101c1 (plain) (blame)
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
97
98
99
100
101
102
103

--Author Manel Fredj-CEA LIST


modeltype di uses 'http://www.eclipse.org/papyrus/0.7.0/sashdi';
modeltype di2 uses 'http://www.papyrusuml.org/di2';
modeltype notation uses 'http://www.eclipse.org/gmf/runtime/1.0.2/notation';
modeltype ecore uses 'http://www.eclipse.org/emf/2002/Ecore';


transformation Transfo(in src : di2, out target1 : notation, out target2:di);


mapping di2::Diagram::diagram2SashWindowsMngr(): di::SashWindowsMngr 
{
	--pageRefsclassandOp
	var pageRefs: Set(di::PageRef) := setPageRef();
	--pageList
	pageList := setPageList(pageRefs);

	--sashModel
	sashModel := setSashModel();
}

mapping notation::Diagram::diagram2PageRef(): di::PageRef
{
	emfPageIdentifier := self.oclAsType(ecore::EObject);
}  


-------------------------------------------------------------------------------------------------------------------------
----------------------------------------            Helpers for di                ---------------------------------------
-------------------------------------------------------------------------------------------------------------------------

helper setPageList(in pagerefs:Set(di::PageRef)): di::PageList
{
	var pageList := object di::PageList {
		availablePage := pagerefs;
	};
	
 	return pageList;
};
		
	
helper setPageRef(): Set(di::PageRef)
{
	var setPages : Set(di::PageRef) := Set{};
	var page: di::PageRef;
	target1.rootObjects()->forEach(diagram|diagram.oclIsTypeOf(notation::Diagram)) {
		--avoid empty pages for unsupported diagrams (currently deployment diagram)
		if (diagram.oclAsType(notation::Diagram).type != null) then {
			page := diagram.oclAsType(notation::Diagram).map diagram2PageRef();
			setPages += page;
		} endif;
	};
 	return setPages;
};	

	
helper setSashModel(): di::SashModel
{
	var sm := object di::SashModel{
		currentSelection:= object di::TabFolder{} ;
		windows := setWindows();
	};
	return sm;
};	

helper setWindows(): Set(di::Window)
{
	var setwindows : Set(di::Window);
	setwindows += setWindow();	
	return setwindows;
};	
	
helper setWindow() : di::Window {

	var child := object di::TabFolder {
	
		target1.rootObjects()->forEach(diagram|diagram.oclIsTypeOf(notation::Diagram)) {
			--avoid empty pages for unsupported diagrams (currently deployment diagram)
			if (diagram.oclAsType(notation::Diagram).type != null) then {
				var page : di::PageRef = object di::PageRef {
					emfPageIdentifier:= diagram.oclAsType(ecore::EObject)
				};
				children += page;
			} endif;
		};
	};
	
	var window := object di::Window {
		children := Set { child };
	};			
	return window;
};	
	
--helper SetChildren(): Set(di::PageRef){

	--var setchildren:Set(di::PageRef):=Set{};
	--var page: di::PageRef;

 	--return setchildren;
--};	

Back to the top