KickJava   Java API By Example, From Geeks To Geeks.

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


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.list.A_CmsListDialog;
42 import org.opencms.workplace.list.CmsListColumnAlignEnum;
43 import org.opencms.workplace.list.CmsListColumnDefinition;
44 import org.opencms.workplace.list.CmsListDateMacroFormatter;
45 import org.opencms.workplace.list.CmsListDirectAction;
46 import org.opencms.workplace.list.CmsListItem;
47 import org.opencms.workplace.list.CmsListItemDetails;
48 import org.opencms.workplace.list.CmsListItemDetailsFormatter;
49 import org.opencms.workplace.list.CmsListMetadata;
50 import org.opencms.workplace.list.CmsListPrintIAction;
51 import org.opencms.workplace.list.CmsListSearchAction;
52 import org.opencms.workplace.list.I_CmsListFormatter;
53 import org.opencms.workplace.tools.accounts.Messages;
54
55 import java.util.ArrayList JavaDoc;
56 import java.util.Date JavaDoc;
57 import java.util.Iterator JavaDoc;
58 import java.util.List JavaDoc;
59 import java.util.Locale JavaDoc;
60
61 import javax.servlet.http.HttpServletRequest JavaDoc;
62 import javax.servlet.http.HttpServletResponse JavaDoc;
63 import javax.servlet.jsp.PageContext JavaDoc;
64
65 /**
66  * User accounts list demo.<p>
67  *
68  * @author Michael Moossen
69  *
70  * @version $Revision$
71  *
72  * @since 6.0.0
73  */

74 public class CmsListDemo6 extends A_CmsListDialog {
75
76     /** list action id constant. */
77     public static final String JavaDoc LIST_ACTION_DELETE = "ad";
78
79     /** list column id constant. */
80     public static final String JavaDoc LIST_COLUMN_ACTIVATE = "ca";
81
82     /** list column id constant. */
83     public static final String JavaDoc LIST_COLUMN_DELETE = "cd";
84
85     /** list column id constant. */
86     public static final String JavaDoc LIST_COLUMN_EMAIL = "cm";
87
88     /** list column id constant. */
89     public static final String JavaDoc LIST_COLUMN_LASTLOGIN = "cl";
90
91     /** list column id constant. */
92     public static final String JavaDoc LIST_COLUMN_LOGIN = "ci";
93
94     /** list column id constant. */
95     public static final String JavaDoc LIST_COLUMN_NAME = "cn";
96
97     /** list item detail id constant. */
98     public static final String JavaDoc LIST_DETAIL_GROUPS = "dg";
99
100     /** list id constant. */
101     public static final String JavaDoc LIST_ID = "lsu1";
102
103     /**
104      * Public constructor.<p>
105      *
106      * @param jsp an initialized JSP action element
107      */

108     public CmsListDemo6(CmsJspActionElement jsp) {
109
110         super(jsp, LIST_ID, Messages.get().container(Messages.GUI_USERS_LIST_NAME_0), null, null, null);
111     }
112
113     /**
114      * Public constructor with JSP variables.<p>
115      *
116      * @param context the JSP page context
117      * @param req the JSP request
118      * @param res the JSP response
119      */

120     public CmsListDemo6(PageContext JavaDoc context, HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc res) {
121
122         this(new CmsJspActionElement(context, req, res));
123     }
124
125     /**
126      * @see org.opencms.workplace.list.A_CmsListDialog#executeListMultiActions()
127      */

128     public void executeListMultiActions() throws CmsRuntimeException {
129
130         throwListUnsupportedActionException();
131     }
132
133     /**
134      * @see org.opencms.workplace.list.A_CmsListDialog#executeListSingleActions()
135      */

136     public void executeListSingleActions() {
137
138         if (LIST_ACTION_DELETE.equals(getParamListAction())) {
139             CmsListItem item = getSelectedItem();
140             CmsUUID userId = new CmsUUID(item.getId());
141             // do not really delete the user in the demo
142
//getCms().deleteUser(userId);
143
// but remove from the list
144
getList().removeItem(userId.toString(), getLocale());
145         } else {
146             throwListUnsupportedActionException();
147         }
148         listSave();
149     }
150
151     /**
152      * @see org.opencms.workplace.list.A_CmsListDialog#fillDetails(java.lang.String)
153      */

154     protected void fillDetails(String JavaDoc detailId) {
155
156         // get content
157
List JavaDoc users = getList().getAllContent();
158         Iterator JavaDoc itUsers = users.iterator();
159         while (itUsers.hasNext()) {
160             CmsListItem item = (CmsListItem)itUsers.next();
161             String JavaDoc userName = item.get(LIST_COLUMN_LOGIN).toString();
162             StringBuffer JavaDoc html = new StringBuffer JavaDoc(512);
163             try {
164                 if (detailId.equals(LIST_DETAIL_GROUPS)) {
165                     // groups
166
Iterator JavaDoc itGroups = getCms().getGroupsOfUser(userName).iterator();
167                     while (itGroups.hasNext()) {
168                         html.append(((CmsGroup)itGroups.next()).getName());
169                         if (itGroups.hasNext()) {
170                             html.append("<br>");
171                         }
172                         html.append("\n");
173                     }
174                 } else {
175                     continue;
176                 }
177             } catch (Exception JavaDoc e) {
178                 // noop
179
}
180             item.set(detailId, html.toString());
181         }
182     }
183
184     /**
185      * @see org.opencms.workplace.list.A_CmsListDialog#getListItems()
186      */

187     protected List JavaDoc getListItems() throws CmsException {
188
189         List JavaDoc ret = new ArrayList JavaDoc();
190         // get content
191
List JavaDoc users = getCms().getUsers(CmsUser.USER_TYPE_SYSTEMUSER);
192         Iterator JavaDoc itUsers = users.iterator();
193         while (itUsers.hasNext()) {
194             CmsUser user = (CmsUser)itUsers.next();
195             CmsListItem item = getList().newItem(user.getId().toString());
196             item.set(LIST_COLUMN_ACTIVATE, Boolean.valueOf(user.isEnabled()));
197             item.set(LIST_COLUMN_LOGIN, user.getName());
198             item.set(LIST_COLUMN_NAME, user.getFullName());
199             item.set(LIST_COLUMN_EMAIL, user.getEmail());
200             item.set(LIST_COLUMN_LASTLOGIN, new Date JavaDoc(user.getLastlogin()));
201             ret.add(item);
202         }
203         return ret;
204     }
205
206     /**
207      * @see org.opencms.workplace.CmsWorkplace#initMessages()
208      */

209     protected void initMessages() {
210
211         // add specific dialog resource bundle
212
addMessages(Messages.get().getBundleName());
213         addMessages(org.opencms.workplace.demos.list.Messages.get().getBundleName());
214         addMessages(org.opencms.workplace.demos.Messages.get().getBundleName());
215         // add default resource bundles
216
super.initMessages();
217     }
218
219     /**
220      * @see org.opencms.workplace.list.A_CmsListDialog#setColumns(org.opencms.workplace.list.CmsListMetadata)
221      */

222     protected void setColumns(CmsListMetadata metadata) {
223
224         // create column for activation/deactivation
225
CmsListColumnDefinition actCol = new CmsListColumnDefinition(LIST_COLUMN_ACTIVATE);
226         actCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_ACTIVATE_0));
227         actCol.setWidth("30");
228         actCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
229         actCol.setSorteable(true);
230         I_CmsListFormatter actFormatter = new I_CmsListFormatter() {
231
232             /**
233              * @see org.opencms.workplace.list.I_CmsListFormatter#format(java.lang.Object, java.util.Locale)
234              */

235             public String JavaDoc format(Object JavaDoc data, Locale JavaDoc locale) {
236
237                 if (data instanceof Boolean JavaDoc) {
238                     Boolean JavaDoc val = (Boolean JavaDoc)data;
239                     if (val.booleanValue()) {
240                         return "<img SRC='" + getResourceUri("list/active.png") + "'>";
241                     }
242                 }
243                 return "<img SRC='" + getResourceUri("list/inactive.png") + "'>";
244             }
245
246         };
247         actCol.setFormatter(actFormatter);
248         metadata.addColumn(actCol);
249
250         // create column for deletion
251
CmsListColumnDefinition deleteCol = new CmsListColumnDefinition(LIST_COLUMN_DELETE);
252         deleteCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_DELETE_0));
253         deleteCol.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_COLS_DELETE_HELP_0));
254         deleteCol.setWidth("20");
255         deleteCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
256         deleteCol.setSorteable(false);
257         // add delete action
258
CmsListDirectAction deleteAction = new CmsListDirectAction(LIST_ACTION_DELETE);
259         deleteAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DELETE_NAME_0));
260         deleteAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DELETE_HELP_0));
261         deleteAction.setConfirmationMessage(new CmsMessageContainer(null, "Do you want to delete the selected user?"));
262         deleteAction.setIconPath(ICON_DELETE);
263         deleteCol.addDirectAction(deleteAction);
264         metadata.addColumn(deleteCol);
265
266         // create column for login
267
CmsListColumnDefinition loginCol = new CmsListColumnDefinition(LIST_COLUMN_LOGIN);
268         loginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LOGIN_0));
269         loginCol.setWidth("20%");
270         loginCol.setSorteable(true);
271         metadata.addColumn(loginCol);
272
273         // add column for name
274
CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME);
275         nameCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_USERNAME_0));
276         nameCol.setWidth("30%");
277         nameCol.setSorteable(true);
278         metadata.addColumn(nameCol);
279
280         // add column for email
281
CmsListColumnDefinition emailCol = new CmsListColumnDefinition(LIST_COLUMN_EMAIL);
282         emailCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_EMAIL_0));
283         emailCol.setWidth("30%");
284         emailCol.setSorteable(true);
285         metadata.addColumn(emailCol);
286
287         // add column for last login date
288
CmsListColumnDefinition lastLoginCol = new CmsListColumnDefinition(LIST_COLUMN_LASTLOGIN);
289         lastLoginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LASTLOGIN_0));
290         lastLoginCol.setWidth("20%");
291         lastLoginCol.setSorteable(true);
292         lastLoginCol.setFormatter(CmsListDateMacroFormatter.getDefaultDateFormatter());
293         metadata.addColumn(lastLoginCol);
294     }
295
296     /**
297      * @see org.opencms.workplace.list.A_CmsListDialog#setIndependentActions(org.opencms.workplace.list.CmsListMetadata)
298      */

299     protected void setIndependentActions(CmsListMetadata metadata) {
300
301         // add user groups details
302
CmsListItemDetails userGroupsDetails = new CmsListItemDetails(LIST_DETAIL_GROUPS);
303         userGroupsDetails.setAtColumn(LIST_COLUMN_LOGIN);
304         userGroupsDetails.setVisible(false);
305         userGroupsDetails.setShowActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_NAME_0));
306         userGroupsDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_HELP_0));
307         userGroupsDetails.setHideActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_NAME_0));
308         userGroupsDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_HELP_0));
309         userGroupsDetails.setName(Messages.get().container(Messages.GUI_USERS_DETAIL_GROUPS_NAME_0));
310         userGroupsDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container(
311             Messages.GUI_USERS_DETAIL_GROUPS_NAME_0)));
312         metadata.addItemDetails(userGroupsDetails);
313
314     }
315
316     /**
317      * @see org.opencms.workplace.list.A_CmsListDialog#setMultiActions(org.opencms.workplace.list.CmsListMetadata)
318      */

319     protected void setMultiActions(CmsListMetadata metadata) {
320
321         // makes the list searchable by several columns
322
CmsListSearchAction searchAction = new CmsListSearchAction(metadata.getColumnDefinition(LIST_COLUMN_LOGIN));
323         searchAction.addColumn(metadata.getColumnDefinition(LIST_COLUMN_EMAIL));
324         metadata.setSearchAction(searchAction);
325
326         // remove print action
327
metadata.getIndependentAction(CmsListPrintIAction.LIST_ACTION_ID).setVisible(false);
328     }
329
330 }
Popular Tags