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.widget.placeholder;
35
36 import java.util.Map;
37
38 import info.magnolia.rendering.template.AreaDefinition;
39 import info.magnolia.templating.editor.client.PageEditor;
40 import info.magnolia.templating.editor.client.dom.MgnlElement;
41
42
43 import com.google.gwt.dom.client.Element;
44 import com.google.gwt.user.client.ui.Label;
45
46
47
48
49 public class AreaPlaceHolder extends AbstractPlaceHolder {
50
51 private Label areaName;
52
53 public AreaPlaceHolder(MgnlElement mgnlElement) throws IllegalArgumentException {
54
55 super(mgnlElement);
56
57 checkMandatories(mgnlElement.getAttributes());
58
59 this.addStyleName("area");
60 String label = mgnlElement.getAttribute("label");
61 areaName = new Label(label + " Placeholder");
62 areaName.setStyleName("label");
63
64 if (mgnlElement.getRootArea() != mgnlElement) {
65 setVisible(false);
66 }
67 add(areaName);
68
69 attach();
70
71 }
72
73 public void attach() {
74 Element parent = getMgnlElement().getAreaElement();
75 if (parent == null) {
76 parent = PageEditor.model.getEditBar(getMgnlElement()).getElement().getParentElement();
77 parent.insertAfter(getElement(), PageEditor.model.getEditBar(getMgnlElement()).getElement());
78 }
79 else {
80 parent.insertFirst(getElement());
81 }
82
83 onAttach();
84 PageEditor.model.addAreaPlaceHolder(getMgnlElement(), this);
85 }
86
87 public void setActive(boolean active) {
88 setStyleName("active", active);
89 areaName.setVisible(!active);
90 }
91
92 private void checkMandatories(Map<String, String> attributes) throws IllegalArgumentException {
93
94 boolean noComponent = attributes.get("type").equals(AreaDefinition.TYPE_NO_COMPONENT);
95
96 if (!getMgnlElement().getComponents().isEmpty() || noComponent) {
97 throw new IllegalArgumentException();
98 }
99 }
100
101 }