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;
35
36 import info.magnolia.rendering.template.AreaDefinition;
37 import info.magnolia.templating.editor.client.dom.MgnlElement;
38
39 import com.google.gwt.event.dom.client.MouseDownEvent;
40 import com.google.gwt.event.dom.client.MouseDownHandler;
41 import com.google.gwt.user.client.ui.Label;
42
43
44
45
46
47
48 public class ComponentPlaceHolderWidget extends AbstractPlaceHolder {
49
50 private boolean optional = false;
51 private boolean created = false;
52 private boolean showAddButton = false;
53 private String availableComponents = "";
54 private String type = "";
55 private String areaWorkspace = "";
56 private String areaPath = "";
57 private String name = "";
58
59 public ComponentPlaceHolderWidget(PageEditor pageEditor, MgnlElement mgnlElement) {
60
61 super(mgnlElement);
62 this.showAddButton = Boolean.parseBoolean(mgnlElement.getComment().getAttribute("showAddButton"));
63 this.optional = Boolean.parseBoolean(mgnlElement.getComment().getAttribute("optional"));
64 this.created = Boolean.parseBoolean(mgnlElement.getComment().getAttribute("created"));
65 this.type = mgnlElement.getComment().getAttribute("type");
66 this.name = mgnlElement.getComment().getAttribute("name");
67
68
69 String areaContent = mgnlElement.getComment().getAttribute("content");
70 int i = areaContent.indexOf(':');
71 this.areaWorkspace = areaContent.substring(0, i);
72 this.areaPath = areaContent.substring(i + 1);
73
74 if(AreaDefinition.TYPE_NO_COMPONENT.equals(this.type)) {
75 this.availableComponents = "";
76 } else {
77 this.availableComponents = mgnlElement.getComment().getAttribute("availableComponents");
78 }
79
80 this.addStyleName("component");
81 Label areaName = new Label("Add Component");
82
83 setVisible(false);
84
85 add(areaName);
86
87 createMouseEventsHandlers(pageEditor);
88 }
89 private void createMouseEventsHandlers(final PageEditor pageEditor) {
90
91 if (this.optional) {
92 if(!this.created) {
93 addDomHandler(new MouseDownHandler() {
94
95 @Override
96 public void onMouseDown(MouseDownEvent event) {
97 pageEditor.createComponent(areaWorkspace, areaPath, "mgnl:area");
98
99 }
100 }, MouseDownEvent.getType());
101 }
102 else {
103
104
105 }
106 }
107
108 else if (this.showAddButton){
109 addDomHandler(new MouseDownHandler() {
110
111 @Override
112 public void onMouseDown(MouseDownEvent event) {
113 pageEditor.addComponent(areaWorkspace, areaPath, null, availableComponents);
114
115 }
116 }, MouseDownEvent.getType());
117 }
118 }
119
120 public void attach() {
121 PageEditor.model.getEditBar(getMgnlElement()).getElement().getParentElement().appendChild(getElement());
122 onAttach();
123 }
124
125 }