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.module.templatingcomponents.components;
35
36 import info.magnolia.cms.beans.config.ServerConfiguration;
37 import info.magnolia.cms.core.AggregationState;
38 import info.magnolia.cms.core.Content;
39 import info.magnolia.cms.gui.control.Button;
40 import info.magnolia.cms.gui.inline.BarEdit;
41 import info.magnolia.cms.gui.inline.ButtonEdit;
42
43 import javax.jcr.RepositoryException;
44 import java.io.IOException;
45 import java.io.Writer;
46
47
48
49
50
51
52
53
54 public class EditBar extends AbstractAuthoringUiComponent {
55 private static final String DEFAULT_MOVE_LABEL = "buttons.move";
56 private static final String DEFAULT_DELETE_LABEL = "buttons.delete";
57 private static final String DEFAULT_EDIT_LABEL = "buttons.edit";
58
59
60
61
62
63
64
65
66
67
68 public static EditBar make(ServerConfiguration serverCfg, AggregationState aggState, Content specificContent, String specificDialogName, String editButtonLabel, boolean enableMoveButton, boolean enableDeleteButton) {
69
70 final boolean isInSingleton = SingletonParagraphBar.isInSingleton();
71
72 final EditBar bar = new EditBar(serverCfg, aggState);
73 if (specificContent != null) {
74 bar.setContent(specificContent);
75 } else {
76 bar.setContent(bar.currentContent());
77 }
78
79 if (specificDialogName != null) {
80 bar.setSpecificDialogName(specificDialogName);
81 }
82
83 if (editButtonLabel != null) {
84 bar.setEditButtonLabel(editButtonLabel);
85 }
86
87 if (!isInSingleton) {
88 bar.setEnableMoveButton(enableMoveButton);
89 } else {
90
91 bar.setEnableMoveButton(false);
92 }
93
94 bar.setEnableDeleteButton(enableDeleteButton);
95
96 return bar;
97 }
98
99 private Content content;
100 private String specificDialogName;
101 private String editButtonLabel = DEFAULT_EDIT_LABEL;
102 private boolean enableMoveButton = true;
103 private boolean enableDeleteButton = true;
104
105 public EditBar(ServerConfiguration serverConfiguration, AggregationState aggregationState) {
106 super(serverConfiguration, aggregationState);
107 }
108
109 public void setContent(Content content) {
110 this.content = content;
111 }
112
113 public void setSpecificDialogName(String specificDialogName) {
114 this.specificDialogName = specificDialogName;
115 }
116
117 public void setEditButtonLabel(String editButtonLabel) {
118 this.editButtonLabel = editButtonLabel;
119 }
120
121 public void setEnableMoveButton(boolean enableMoveButton) {
122 this.enableMoveButton = enableMoveButton;
123 }
124
125 public void setEnableDeleteButton(boolean enableDeleteButton) {
126 this.enableDeleteButton = enableDeleteButton;
127 }
128
129 @Override
130 protected void doRender(Appendable out) throws IOException, RepositoryException {
131 final BarEdit bar = new BarEdit();
132 final String paragraphTemplateName = content.getMetaData().getTemplate();
133
134 if (specificDialogName != null) {
135 bar.setParagraph(specificDialogName);
136 } else {
137 bar.setParagraph(paragraphTemplateName);
138 }
139
140
141 final Content parent = content.getParent();
142 final Content parentParent = parent.getParent();
143
144 bar.setPath(parentParent.getHandle());
145 bar.setNodeCollectionName(parent.getName());
146 bar.setNodeName(content.getName());
147
148
149
150 if (enableMoveButton) {
151
152 bar.setButtonMove(parent.getName(), content.getName());
153 bar.getButtonMove().setLabel(getMessage(content, DEFAULT_MOVE_LABEL));
154 } else {
155
156 bar.setButtonMove(null);
157 }
158 if (enableDeleteButton) {
159
160 bar.setButtonDelete(content.getHandle());
161
162
163 bar.getButtonDelete().setLabel(getMessage(content, DEFAULT_DELETE_LABEL));
164 } else {
165
166 bar.setButtonDelete((Button) null);
167 }
168
169 bar.setButtonEdit();
170 final ButtonEdit edit = bar.getButtonEdit();
171
172 edit.setDialogPath(".magnolia/dialogs/editParagraph.html");
173
174
175
176
177 edit.setDefaultOnclick();
178 edit.setLabel(getMessage(content, editButtonLabel));
179
180
181
182
183 bar.placeDefaultButtons();
184
185 bar.drawHtml((Writer) out);
186 }
187
188 }