KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > opencms > workplace > demos > list > CmsListDemo7


1 /*
2  * File : $Source$
3  * Date : $Date$
4  * Version: $Revision$
5  *
6  * This library is part of OpenCms -
7  * the Open Source Content Mananagement System
8  *
9  * Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
10  *
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Lesser General Public
13  * License as published by the Free Software Foundation; either
14  * version 2.1 of the License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  * Lesser General Public License for more details.
20  *
21  * For further information about Alkacon Software GmbH, please see the
22  * company website: http://www.alkacon.com
23  *
24  * For further information about OpenCms, please see the
25  * project website: http://www.opencms.org
26  *
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30  */

31
32 package org.opencms.workplace.demos.list;
33
34 import org.opencms.file.CmsGroup;
35 import org.opencms.file.CmsUser;
36 import org.opencms.i18n.CmsMessageContainer;
37 import org.opencms.jsp.CmsJspActionElement;
38 import org.opencms.main.CmsException;
39 import org.opencms.main.CmsRuntimeException;
40 import org.opencms.util.CmsUUID;
41 import org.opencms.workplace.CmsDialog;
42 import org.opencms.workplace.list.A_CmsListDialog;
43 import org.opencms.workplace.list.CmsListColumnAlignEnum;
44 import org.opencms.workplace.list.CmsListColumnDefinition;
45 import org.opencms.workplace.list.CmsListDateMacroFormatter;
46 import org.opencms.workplace.list.CmsListDefaultAction;
47 import org.opencms.workplace.list.CmsListDirectAction;
48 import org.opencms.workplace.list.CmsListItem;
49 import org.opencms.workplace.list.CmsListItemDetails;
50 import org.opencms.workplace.list.CmsListItemDetailsFormatter;
51 import org.opencms.workplace.list.CmsListMetadata;
52 import org.opencms.workplace.list.CmsListPrintIAction;
53 import org.opencms.workplace.list.CmsListSearchAction;
54 import org.opencms.workplace.list.I_CmsListFormatter;
55 import org.opencms.workplace.tools.accounts.Messages;
56
57 import java.util.ArrayList JavaDoc;
58 import java.util.Date JavaDoc;
59 import java.util.HashMap JavaDoc;
60 import java.util.Iterator JavaDoc;
61 import java.util.List JavaDoc;
62 import java.util.Locale JavaDoc;
63 import java.util.Map JavaDoc;
64
65 import javax.servlet.http.HttpServletRequest JavaDoc;
66 import javax.servlet.http.HttpServletResponse JavaDoc;
67 import javax.servlet.jsp.PageContext JavaDoc;
68
69 /**
70  * User accounts list demo.<p>
71  *
72  * @author Michael Moossen
73  *
74  * @version $Revision$
75  *
76  * @since 6.0.0
77  */

78 public class CmsListDemo7 extends A_CmsListDialog {
79
80     /** list action id constant. */
81     public static final String JavaDoc LIST_ACTION_DELETE = "ad";
82
83     /** list column id constant. */
84     public static final String JavaDoc LIST_COLUMN_ACTIVATE = "ca";
85
86     /** list column id constant. */
87     public static final String JavaDoc LIST_COLUMN_DELETE = "cd";
88
89     /** list column id constant. */
90     public static final String JavaDoc LIST_COLUMN_EMAIL = "cm";
91
92     /** list column id constant. */
93     public static final String JavaDoc LIST_COLUMN_LASTLOGIN = "cl";
94
95     /** list column id constant. */
96     public static final String JavaDoc LIST_COLUMN_LOGIN = "ci";
97
98     /** list column id constant. */
99     public static final String JavaDoc LIST_COLUMN_NAME = "cn";
100
101     /** list action id constant. */
102     public static final String JavaDoc LIST_DEFACTION_EDIT = "de";
103
104     /** list item detail id constant. */
105     public static final String JavaDoc LIST_DETAIL_GROUPS = "dg";
106
107     /** list id constant. */
108     public static final String JavaDoc LIST_ID = "lsu1";
109
110     /** parameter name for the user id. */
111     private static final String JavaDoc PARAM_USERID = "userid";
112
113     /**
114      * Public constructor.<p>
115      *
116      * @param jsp an initialized JSP action element
117      */

118     public CmsListDemo7(CmsJspActionElement jsp) {
119
120         super(jsp, LIST_ID, Messages.get().container(Messages.GUI_USERS_LIST_NAME_0), null, null, null);
121     }
122
123     /**
124      * Public constructor with JSP variables.<p>
125      *
126      * @param context the JSP page context
127      * @param req the JSP request
128      * @param res the JSP response
129      */

130     public CmsListDemo7(PageContext JavaDoc context, HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc res) {
131
132         this(new CmsJspActionElement(context, req, res));
133     }
134
135     /**
136      * @see org.opencms.workplace.list.A_CmsListDialog#executeListMultiActions()
137      */

138     public void executeListMultiActions() throws CmsRuntimeException {
139
140         throwListUnsupportedActionException();
141     }
142
143     /**
144      * @see org.opencms.workplace.list.A_CmsListDialog#executeListSingleActions()
145      */

146     public void executeListSingleActions() {
147
148         CmsListItem item = getSelectedItem();
149         CmsUUID userId = new CmsUUID(item.getId());
150
151         Map JavaDoc params = new HashMap JavaDoc();
152         params.put(PARAM_USERID, userId);
153         // set action parameter to initial dialog call
154
params.put(CmsDialog.PARAM_ACTION, CmsDialog.DIALOG_INITIAL);
155         if (getParamListAction().equals(LIST_DEFACTION_EDIT)) {
156             // do not really forward to the edit user screen in the demo
157
//getToolManager().jspForwardTool(this, getCurrentToolPath() + "/edit", params);
158
} else if (LIST_ACTION_DELETE.equals(getParamListAction())) {
159             // do not really delete the user in the demo
160
//getCms().deleteUser(userId);
161
// but remove from the list
162
getList().removeItem(userId.toString(), getLocale());
163         } else {
164             throwListUnsupportedActionException();
165         }
166         listSave();
167     }
168
169     /**
170      * @see org.opencms.workplace.list.A_CmsListDialog#fillDetails(java.lang.String)
171      */

172     protected void fillDetails(String JavaDoc detailId) {
173
174         // get content
175
List JavaDoc users = getList().getAllContent();
176         Iterator JavaDoc itUsers = users.iterator();
177         while (itUsers.hasNext()) {
178             CmsListItem item = (CmsListItem)itUsers.next();
179             String JavaDoc userName = item.get(LIST_COLUMN_LOGIN).toString();
180             StringBuffer JavaDoc html = new StringBuffer JavaDoc(512);
181             try {
182                 if (detailId.equals(LIST_DETAIL_GROUPS)) {
183                     // groups
184
Iterator JavaDoc itGroups = getCms().getGroupsOfUser(userName).iterator();
185                     while (itGroups.hasNext()) {
186                         html.append(((CmsGroup)itGroups.next()).getName());
187                         if (itGroups.hasNext()) {
188                             html.append("<br>");
189                         }
190                         html.append("\n");
191                     }
192                 } else {
193                     continue;
194                 }
195             } catch (Exception JavaDoc e) {
196                 // noop
197
}
198             item.set(detailId, html.toString());
199         }
200     }
201
202     /**
203      * @see org.opencms.workplace.list.A_CmsListDialog#getListItems()
204      */

205     protected List JavaDoc getListItems() throws CmsException {
206
207         List JavaDoc ret = new ArrayList JavaDoc();
208         // get content
209
List JavaDoc users = getCms().getUsers(CmsUser.USER_TYPE_SYSTEMUSER);
210         Iterator JavaDoc itUsers = users.iterator();
211         while (itUsers.hasNext()) {
212             CmsUser user = (CmsUser)itUsers.next();
213             CmsListItem item = getList().newItem(user.getId().toString());
214             item.set(LIST_COLUMN_ACTIVATE, Boolean.valueOf(user.isEnabled()));
215             item.set(LIST_COLUMN_LOGIN, user.getName());
216             item.set(LIST_COLUMN_NAME, user.getFullName());
217             item.set(LIST_COLUMN_EMAIL, user.getEmail());
218             item.set(LIST_COLUMN_LASTLOGIN, new Date JavaDoc(user.getLastlogin()));
219             ret.add(item);
220         }
221         return ret;
222     }
223
224     /**
225      * @see org.opencms.workplace.CmsWorkplace#initMessages()
226      */

227     protected void initMessages() {
228
229         // add specific dialog resource bundle
230
addMessages(Messages.get().getBundleName());
231         addMessages(org.opencms.workplace.demos.list.Messages.get().getBundleName());
232         addMessages(org.opencms.workplace.demos.Messages.get().getBundleName());
233         // add default resource bundles
234
super.initMessages();
235     }
236
237     /**
238      * @see org.opencms.workplace.list.A_CmsListDialog#setColumns(org.opencms.workplace.list.CmsListMetadata)
239      */

240     protected void setColumns(CmsListMetadata metadata) {
241
242         // create column for activation/deactivation
243
CmsListColumnDefinition actCol = new CmsListColumnDefinition(LIST_COLUMN_ACTIVATE);
244         actCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_ACTIVATE_0));
245         actCol.setWidth("30");
246         actCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
247         actCol.setSorteable(true);
248         I_CmsListFormatter actFormatter = new I_CmsListFormatter() {
249
250             /**
251              * @see org.opencms.workplace.list.I_CmsListFormatter#format(java.lang.Object, java.util.Locale)
252              */

253             public String JavaDoc format(Object JavaDoc data, Locale JavaDoc locale) {
254
255                 if (data instanceof Boolean JavaDoc) {
256                     Boolean JavaDoc val = (Boolean JavaDoc)data;
257                     if (val.booleanValue()) {
258                         return "<img SRC='" + getResourceUri("list/active.png") + "'>";
259                     }
260                 }
261                 return "<img SRC='" + getResourceUri("list/inactive.png") + "'>";
262             }
263
264         };
265         actCol.setFormatter(actFormatter);
266         metadata.addColumn(actCol);
267
268         // create column for deletion
269
CmsListColumnDefinition deleteCol = new CmsListColumnDefinition(LIST_COLUMN_DELETE);
270         deleteCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_DELETE_0));
271         deleteCol.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_COLS_DELETE_HELP_0));
272         deleteCol.setWidth("20");
273         deleteCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
274         deleteCol.setSorteable(false);
275         // add delete action
276
CmsListDirectAction deleteAction = new CmsListDirectAction(LIST_ACTION_DELETE);
277         deleteAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DELETE_NAME_0));
278         deleteAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DELETE_HELP_0));
279         deleteAction.setConfirmationMessage(new CmsMessageContainer(null, "Do you want to delete the selected user?"));
280         deleteAction.setIconPath(ICON_DELETE);
281         deleteCol.addDirectAction(deleteAction);
282         metadata.addColumn(deleteCol);
283
284         // create column for login
285
CmsListColumnDefinition loginCol = new CmsListColumnDefinition(LIST_COLUMN_LOGIN);
286         loginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LOGIN_0));
287         loginCol.setWidth("20%");
288         loginCol.setSorteable(true);
289         // create default edit action
290
CmsListDefaultAction defEditAction = new CmsListDefaultAction(LIST_DEFACTION_EDIT);
291         defEditAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_DEFACTION_EDIT_NAME_0));
292         defEditAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_DEFACTION_EDIT_HELP_0));
293         loginCol.addDefaultAction(defEditAction);
294         metadata.addColumn(loginCol);
295
296         // add column for name
297
CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME);
298         nameCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_USERNAME_0));
299         nameCol.setWidth("30%");
300         nameCol.setSorteable(true);
301         metadata.addColumn(nameCol);
302
303         // add column for email
304
CmsListColumnDefinition emailCol = new CmsListColumnDefinition(LIST_COLUMN_EMAIL);
305         emailCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_EMAIL_0));
306         emailCol.setWidth("30%");
307         emailCol.setSorteable(true);
308         metadata.addColumn(emailCol);
309
310         // add column for last login date
311
CmsListColumnDefinition lastLoginCol = new CmsListColumnDefinition(LIST_COLUMN_LASTLOGIN);
312         lastLoginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LASTLOGIN_0));
313         lastLoginCol.setWidth("20%");
314         lastLoginCol.setSorteable(true);
315         lastLoginCol.setFormatter(CmsListDateMacroFormatter.getDefaultDateFormatter());
316         metadata.addColumn(lastLoginCol);
317     }
318
319     /**
320      * @see org.opencms.workplace.list.A_CmsListDialog#setIndependentActions(org.opencms.workplace.list.CmsListMetadata)
321      */

322     protected void setIndependentActions(CmsListMetadata metadata) {
323
324         // add user groups details
325
CmsListItemDetails userGroupsDetails = new CmsListItemDetails(LIST_DETAIL_GROUPS);
326         userGroupsDetails.setAtColumn(LIST_COLUMN_LOGIN);
327         userGroupsDetails.setVisible(false);
328         userGroupsDetails.setShowActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_NAME_0));
329         userGroupsDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_HELP_0));
330         userGroupsDetails.setHideActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_NAME_0));
331         userGroupsDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_HELP_0));
332         userGroupsDetails.setName(Messages.get().container(Messages.GUI_USERS_DETAIL_GROUPS_NAME_0));
333         userGroupsDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container(
334             Messages.GUI_USERS_DETAIL_GROUPS_NAME_0)));
335         metadata.addItemDetails(userGroupsDetails);
336
337     }
338
339     /**
340      * @see org.opencms.workplace.list.A_CmsListDialog#setMultiActions(org.opencms.workplace.list.CmsListMetadata)
341      */

342     protected void setMultiActions(CmsListMetadata metadata) {
343
344         // makes the list searchable by several columns
345
CmsListSearchAction searchAction = new CmsListSearchAction(metadata.getColumnDefinition(LIST_COLUMN_LOGIN));
346         searchAction.addColumn(metadata.getColumnDefinition(LIST_COLUMN_EMAIL));
347         metadata.setSearchAction(searchAction);
348
349         // remove print action
350
metadata.getIndependentAction(CmsListPrintIAction.LIST_ACTION_ID).setVisible(false);
351     }
352
353 }
Popular Tags