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.admininterface.trees;
35
36 import info.magnolia.cms.core.ItemType;
37 import info.magnolia.cms.core.MetaData;
38 import info.magnolia.cms.gui.control.ContextMenuItem;
39 import info.magnolia.cms.gui.control.FunctionBarItem;
40 import info.magnolia.cms.gui.control.Tree;
41 import info.magnolia.cms.gui.control.TreeColumn;
42 import info.magnolia.cms.i18n.Messages;
43 import info.magnolia.cms.util.NodeNameComparator;
44 import info.magnolia.module.admininterface.AbstractTreeConfiguration;
45
46 import javax.servlet.http.HttpServletRequest;
47
48
49
50
51
52 public class GroupsTreeConfiguration extends AbstractTreeConfiguration {
53
54
55
56
57
58 @Override
59 public void prepareTree(Tree tree, boolean browseMode, HttpServletRequest request) {
60 tree.setSortComparator(new NodeNameComparator());
61
62 tree.setDrawShifter(false);
63
64 tree.setIcon(ItemType.GROUP.getSystemName(), Tree.ICONDOCROOT + "group.gif");
65 tree.setIconOndblclick("mgnlTreeMenuOpenDialog("
66 + tree.getJavascriptTree()
67 + ",'.magnolia/dialogs/groupedit.html');");
68 tree.addItemType(ItemType.GROUP);
69
70 final Messages msgs = getMessages();
71 TreeColumn column0 = TreeColumn.createLabelColumn(tree, msgs.get("tree.groups.name"), !browseMode);
72 column0.setWidth(2);
73
74 TreeColumn column1 = TreeColumn.createNodeDataColumn(tree, msgs.get("tree.groups.fullname"), "title", !browseMode);
75 column1.setWidth(2);
76
77 TreeColumn columnIcons = TreeColumn.createActivationColumn(tree, msgs.get("tree.groups.status"));
78
79 TreeColumn column2 = TreeColumn.createMetaDataColumn(tree, msgs.get("tree.groups.date"), MetaData.LAST_MODIFIED, "yyyy-MM-dd, HH:mm");
80 column2.setWidth(2);
81
82 tree.addColumn(column0);
83 if (!browseMode) {
84 tree.addColumn(column1);
85 if (isAdminInstance() || hasAnyActiveSubscriber()) {
86 tree.addColumn(columnIcons);
87 }
88 tree.addColumn(column2);
89 }
90 }
91
92
93
94
95
96 @Override
97 public void prepareContextMenu(Tree tree, boolean browseMode, HttpServletRequest request) {
98 final Messages msgs = getMessages();
99
100 ContextMenuItem menuOpen = new ContextMenuItem("edit");
101 menuOpen.setLabel(msgs.get("tree.groups.menu.edit"));
102 menuOpen.setIcon(request.getContextPath() + "/.resources/icons/16/group.gif");
103 menuOpen.setOnclick("mgnlTreeMenuOpenDialog("
104 + tree.getJavascriptTree()
105 + ",'.magnolia/dialogs/groupedit.html');");
106 menuOpen.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
107 + tree.getJavascriptTree()
108 + ")");
109
110 ContextMenuItem menuNewPage = new ContextMenuItem("new");
111 menuNewPage.setLabel(msgs.get("tree.groups.menu.new"));
112 menuNewPage.setIcon(request.getContextPath() + "/.resources/icons/16/group_add.gif");
113 menuNewPage.setOnclick(tree.getJavascriptTree() + ".createRootNode('"
114 + ItemType.GROUP.getSystemName()
115 + "');");
116
117 ContextMenuItem menuDelete = new ContextMenuItem("delete");
118 menuDelete.setLabel(msgs.get("tree.groups.menu.delete"));
119 menuDelete.setIcon(request.getContextPath() + "/.resources/icons/16/delete2.gif");
120 menuDelete.setOnclick(tree.getJavascriptTree() + ".deleteNode();");
121 menuDelete.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
122 + tree.getJavascriptTree()
123 + ")");
124
125 ContextMenuItem menuMove = new ContextMenuItem("move");
126 menuMove.setLabel(msgs.get("tree.groups.menu.move"));
127 menuMove.setIcon(request.getContextPath() + "/.resources/icons/16/up_down.gif");
128 menuMove.setOnclick(tree.getJavascriptTree() + ".cutNode();");
129 menuMove.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
130 + tree.getJavascriptTree()
131 + ")");
132
133 ContextMenuItem menuCopy = new ContextMenuItem("copy");
134 menuCopy.setLabel(msgs.get("tree.groups.menu.copy"));
135 menuCopy.setIcon(request.getContextPath() + "/.resources/icons/16/copy.gif");
136 menuCopy.setOnclick(tree.getJavascriptTree() + ".copyNode();");
137 menuCopy.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
138 + tree.getJavascriptTree()
139 + ")");
140
141 ContextMenuItem menuActivateExcl = new ContextMenuItem("activate");
142 menuActivateExcl.setLabel(msgs.get("tree.groups.menu.activate"));
143 menuActivateExcl.setIcon(request.getContextPath() + "/.resources/icons/16/arrow_right_green.gif");
144 menuActivateExcl.setOnclick(tree.getJavascriptTree() + ".activateNode(" + Tree.ACTION_ACTIVATE + ",false);");
145 menuActivateExcl.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
146 + tree.getJavascriptTree()
147 + ")");
148
149 ContextMenuItem menuDeactivate = new ContextMenuItem("deactivate");
150 menuDeactivate.setLabel(msgs.get("tree.groups.menu.deactivate"));
151 menuDeactivate.setIcon(request.getContextPath() + "/.resources/icons/16/arrow_left_red.gif");
152 menuDeactivate.setOnclick(tree.getJavascriptTree() + ".deactivateNode(" + Tree.ACTION_DEACTIVATE + ");");
153 menuDeactivate.addJavascriptCondition("new mgnlTreeMenuItemConditionSelectedNotRoot("
154 + tree.getJavascriptTree()
155 + ")");
156
157 if (!hasAnyActiveSubscriber()) {
158 menuActivateExcl.addJavascriptCondition("new mgnlTreeMenuItemConditionBoolean(false)");
159 menuDeactivate.addJavascriptCondition("new mgnlTreeMenuItemConditionBoolean(false)");
160 }
161
162 if (!browseMode) {
163 tree.addMenuItem(menuOpen);
164 tree.addMenuItem(menuNewPage);
165
166 tree.addMenuItem(null);
167 tree.addMenuItem(menuDelete);
168
169 tree.addMenuItem(null);
170 tree.addMenuItem(menuActivateExcl);
171 tree.addMenuItem(menuDeactivate);
172 }
173 else {
174 tree.addMenuItem(ContextMenuItem.getRefreshMenuItem(tree, msgs, request));
175 }
176 }
177
178
179
180
181
182 @Override
183 public void prepareFunctionBar(Tree tree, boolean browseMode, HttpServletRequest request) {
184 tree.addFunctionBarItemFromContextMenu("edit");
185 tree.addFunctionBarItemFromContextMenu("new");
186 tree.addFunctionBarItem(null);
187 tree.addFunctionBarItemFromContextMenu("activate");
188 tree.addFunctionBarItemFromContextMenu("deactivate");
189 tree.addFunctionBarItem(null);
190 tree.addFunctionBarItem(FunctionBarItem.getRefreshFunctionBarItem(tree, getMessages(), request));
191 }
192
193 }