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 package info.magnolia.templating.editor.client.model;
35
36 import info.magnolia.templating.editor.client.AbstractBarWidget;
37 import info.magnolia.templating.editor.client.AbstractOverlayWidget;
38 import info.magnolia.templating.editor.client.dom.MgnlElement;
39 import info.magnolia.templating.editor.client.model.focus.FocusModel;
40 import info.magnolia.templating.editor.client.model.focus.FocusModelImpl3;
41
42 import java.util.HashMap;
43 import java.util.LinkedList;
44 import java.util.List;
45 import java.util.Map;
46
47 import com.google.gwt.dom.client.Element;
48
49
50
51
52 public class ModelStorage {
53
54 private static ModelStorage storage = null;
55
56 private FocusModel focusModel = new FocusModelImpl3(this);
57
58 private Map<MgnlElement, AbstractBarWidget> editBars = new HashMap<MgnlElement, AbstractBarWidget>();
59 private Map<MgnlElement, AbstractOverlayWidget> overlays = new HashMap<MgnlElement, AbstractOverlayWidget>();
60 private Map<MgnlElement, List<Element>> elements = new HashMap<MgnlElement, List<Element>>();
61 private Map<Element, MgnlElement> mgnlElements = new HashMap<Element, MgnlElement>();
62
63
64 public List<MgnlElement> rootElements = new LinkedList<MgnlElement>();
65
66
67 private MgnlElement selectedMgnlElement = null;
68
69 public static ModelStorage getInstance() {
70 if (storage == null) {
71 storage = new ModelStorage();
72 }
73 return storage;
74 }
75
76 public void addOverlay(MgnlElement mgnlElement, AbstractOverlayWidget overlayWidget) {
77 overlays.put(mgnlElement, overlayWidget);
78 }
79
80 public AbstractOverlayWidget getOverlay(MgnlElement mgnlElement) {
81 return overlays.get(mgnlElement);
82 }
83
84 public void addEditBar(MgnlElement mgnlElement, AbstractBarWidget editBar) {
85 editBars.put(mgnlElement, editBar);
86 }
87
88 public AbstractBarWidget getEditBar(MgnlElement mgnlElement) {
89 return editBars.get(mgnlElement);
90 }
91
92 public void addElement(MgnlElement mgnlElement, Element element) {
93
94 mgnlElements.put(element, mgnlElement);
95
96 if (elements.get(mgnlElement) != null) {
97 elements.get(mgnlElement).add(element);
98 }
99 else {
100 List<Element> elList = new LinkedList<Element>();
101 elList.add(element);
102 elements.put(mgnlElement, elList);
103 }
104 }
105
106 public MgnlElement getMgnlElement(Element element) {
107 return mgnlElements.get(element);
108 }
109
110 public List<Element> getElements(MgnlElement mgnlElement) {
111 return elements.get(mgnlElement);
112 }
113
114 public void addRoot(MgnlElement boundary) {
115 this.rootElements.add(boundary);
116 }
117
118 public List<MgnlElement> getRootElements() {
119 return rootElements;
120 }
121
122 public void setSelectedMgnlElement(MgnlElement selectedMgnlElement) {
123 this.selectedMgnlElement = selectedMgnlElement;
124 }
125
126 public MgnlElement getSelectedMgnlElement() {
127 return selectedMgnlElement;
128 }
129
130 public FocusModel getFocusModel() {
131 return focusModel;
132 }
133
134 }