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;
--};
|