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.ui.vaadin.gwt.client.editor.dom.processor;
35
36 import com.google.gwt.dom.client.Element;
37 import com.google.gwt.dom.client.Node;
38 import com.google.gwt.event.shared.EventBus;
39
40 import info.magnolia.ui.vaadin.gwt.client.editor.dom.MgnlElement;
41 import info.magnolia.ui.vaadin.gwt.client.editor.model.Model;
42 import info.magnolia.ui.vaadin.gwt.client.editor.widget.controlbar.AbstractBar;
43
44
45
46
47 public abstract class AbstractMgnlElementProcessor {
48
49 private MgnlElement mgnlElement;
50
51 private Model model;
52 private EventBus eventBus;
53
54 private AbstractBar editBar;
55
56 public AbstractMgnlElementProcessor(Model model, EventBus eventBus, MgnlElement mgnlElement) {
57 this.model = model;
58 this.eventBus = eventBus;
59 this.setMgnlElement(mgnlElement);
60 }
61
62 public abstract void process();
63
64 protected void attachWidget() {
65 attach();
66 addToModel();
67 }
68
69
70 public void attach() {
71
72 if (getMgnlElement().getEditElement() != null) {
73 Element parent = getMgnlElement().getEditElement();
74 parent.insertFirst(getEditBar().getElement());
75 }
76 else if (getMgnlElement().getFirstElement() != null && getMgnlElement().getFirstElement() == getMgnlElement().getLastElement()) {
77 attach(getMgnlElement());
78 }
79 else {
80 String nodeData = getMgnlElement().getStartComment().getNodeValue();
81
82 attach(getMgnlElement().getStartComment());
83 }
84 getEditBar().onAttach();
85 }
86
87 public void attach(MgnlElement mgnlElement) {
88 Element element = mgnlElement.getFirstElement();
89 if (element != null) {
90 if(element.hasTagName("DIV")){
91 element.insertFirst(getEditBar().getElement());
92 }else{
93 final Node parentNode = element.getParentNode();
94 parentNode.insertBefore(getEditBar().getElement(), element);
95 }
96 }
97 }
98
99 public void attach(Element element) {
100 Node parentNode = element.getParentNode();
101 parentNode.insertAfter(getEditBar().getElement(), element);
102 }
103
104 protected void addToModel() {
105 getModel().addElements(getMgnlElement(), getEditBar().getElement());
106 getMgnlElement().setControlBar(getEditBar());
107 }
108
109 public void setMgnlElement(MgnlElement mgnlElement) {
110 this.mgnlElement = mgnlElement;
111 }
112
113 public MgnlElement getMgnlElement() {
114 return mgnlElement;
115 }
116
117 public Model getModel() {
118 return model;
119 }
120
121 protected EventBus getEventBus() {
122 return eventBus;
123 }
124
125 protected void setEditBar(AbstractBar editBar) {
126 this.editBar = editBar;
127 }
128
129 public AbstractBar getEditBar() {
130 return editBar;
131 }
132
133 }