KickJava   Java API By Example, From Geeks To Geeks.

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


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

70 public class CmsListDemo14 extends A_CmsListDialog {
71
72     /** list column id constant. */
73     public static final String JavaDoc LIST_COLUMN_ACTIVATE = "ca";
74
75     /** list column id constant. */
76     public static final String JavaDoc LIST_COLUMN_EMAIL = "cm";
77
78     /** list column id constant. */
79     public static final String JavaDoc LIST_COLUMN_LASTLOGIN = "cl";
80
81     /** list column id constant. */
82     public static final String JavaDoc LIST_COLUMN_LOGIN = "ci";
83
84     /** list column id constant. */
85     public static final String JavaDoc LIST_COLUMN_NAME = "cn";
86
87     /** list item detail id constant. */
88     public static final String JavaDoc LIST_DETAIL_GROUPS = "dg";
89
90     /** list id constant. */
91     public static final String JavaDoc LIST_ID = "lsu1";
92
93     /**
94      * Public constructor.<p>
95      *
96      * @param jsp an initialized JSP action element
97      */

98     public CmsListDemo14(CmsJspActionElement jsp) {
99
100         super(jsp, LIST_ID, Messages.get().container(Messages.GUI_USERS_LIST_NAME_0), null, null, null);
101     }
102
103     /**
104      * @see org.opencms.workplace.list.A_CmsListDialog#defaultActionHtmlStart()
105      */

106     public String JavaDoc defaultActionHtmlStart() {
107
108         return getList().listJs(getLocale()) + dialogContentStart(getParamTitle());
109     }
110
111     /**
112      * Public constructor with JSP variables.<p>
113      *
114      * @param context the JSP page context
115      * @param req the JSP request
116      * @param res the JSP response
117      */

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

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

134     public void executeListSingleActions() {
135
136         throwListUnsupportedActionException();
137     }
138
139     /**
140      * @see org.opencms.workplace.list.A_CmsListDialog#fillDetails(java.lang.String)
141      */

142     protected void fillDetails(String JavaDoc detailId) {
143
144         // get content
145
List JavaDoc users = getList().getAllContent();
146         Iterator JavaDoc itUsers = users.iterator();
147         while (itUsers.hasNext()) {
148             CmsListItem item = (CmsListItem)itUsers.next();
149             String JavaDoc userName = item.get(LIST_COLUMN_LOGIN).toString();
150             StringBuffer JavaDoc html = new StringBuffer JavaDoc(512);
151             try {
152                 if (detailId.equals(LIST_DETAIL_GROUPS)) {
153                     // groups
154
Iterator JavaDoc itGroups = getCms().getGroupsOfUser(userName).iterator();
155                     while (itGroups.hasNext()) {
156                         html.append(((CmsGroup)itGroups.next()).getName());
157                         if (itGroups.hasNext()) {
158                             html.append("<br>");
159                         }
160                         html.append("\n");
161                     }
162                 } else {
163                     continue;
164                 }
165             } catch (Exception JavaDoc e) {
166                 // noop
167
}
168             item.set(detailId, html.toString());
169         }
170     }
171
172     /**
173      * @see org.opencms.workplace.list.A_CmsListDialog#getListItems()
174      */

175     protected List JavaDoc getListItems() throws CmsException {
176
177         List JavaDoc ret = new ArrayList JavaDoc();
178         // get content
179
List JavaDoc users = getCms().getUsers(CmsUser.USER_TYPE_SYSTEMUSER);
180         Iterator JavaDoc itUsers = users.iterator();
181         while (itUsers.hasNext()) {
182             CmsUser user = (CmsUser)itUsers.next();
183             CmsListItem item = getList().newItem(user.getId().toString());
184             item.set(LIST_COLUMN_ACTIVATE, Boolean.valueOf(user.isEnabled()));
185             item.set(LIST_COLUMN_LOGIN, user.getName());
186             item.set(LIST_COLUMN_NAME, user.getFullName());
187             item.set(LIST_COLUMN_EMAIL, user.getEmail());
188             item.set(LIST_COLUMN_LASTLOGIN, new Date JavaDoc(user.getLastlogin()));
189             ret.add(item);
190         }
191         return ret;
192     }
193
194     /**
195      * @see org.opencms.workplace.CmsWorkplace#initMessages()
196      */

197     protected void initMessages() {
198
199         // add specific dialog resource bundle
200
addMessages(Messages.get().getBundleName());
201         addMessages(org.opencms.workplace.demos.list.Messages.get().getBundleName());
202         addMessages(org.opencms.workplace.demos.Messages.get().getBundleName());
203         // add default resource bundles
204
super.initMessages();
205     }
206
207     /**
208      * @see org.opencms.workplace.list.A_CmsListDialog#setColumns(org.opencms.workplace.list.CmsListMetadata)
209      */

210     protected void setColumns(CmsListMetadata metadata) {
211
212         // create column for activation/deactivation
213
CmsListColumnDefinition actCol = new CmsListColumnDefinition(LIST_COLUMN_ACTIVATE);
214         actCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_ACTIVATE_0));
215         actCol.setWidth("30");
216         actCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
217         actCol.setSorteable(true);
218         I_CmsListFormatter actFormatter = new I_CmsListFormatter() {
219
220             /**
221              * @see org.opencms.workplace.list.I_CmsListFormatter#format(java.lang.Object, java.util.Locale)
222              */

223             public String JavaDoc format(Object JavaDoc data, Locale JavaDoc locale) {
224
225                 if (data instanceof Boolean JavaDoc) {
226                     Boolean JavaDoc val = (Boolean JavaDoc)data;
227                     if (val.booleanValue()) {
228                         return "<img SRC='" + getResourceUri("list/active.png") + "'>";
229                     }
230                 }
231                 return "<img SRC='" + getResourceUri("list/inactive.png") + "'>";
232             }
233
234         };
235         actCol.setFormatter(actFormatter);
236         metadata.addColumn(actCol);
237
238         // create column for login
239
CmsListColumnDefinition loginCol = new CmsListColumnDefinition(LIST_COLUMN_LOGIN);
240         loginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LOGIN_0));
241         loginCol.setWidth("20%");
242         loginCol.setSorteable(true);
243
244         // add it to the list definition
245
metadata.addColumn(loginCol);
246
247         // add column for name
248
CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME);
249         nameCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_USERNAME_0));
250         nameCol.setWidth("30%");
251         nameCol.setSorteable(true);
252         metadata.addColumn(nameCol);
253
254         // add column for email
255
CmsListColumnDefinition emailCol = new CmsListColumnDefinition(LIST_COLUMN_EMAIL);
256         emailCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_EMAIL_0));
257         emailCol.setWidth("30%");
258         emailCol.setSorteable(true);
259         metadata.addColumn(emailCol);
260
261         // add column for last login date
262
CmsListColumnDefinition lastLoginCol = new CmsListColumnDefinition(LIST_COLUMN_LASTLOGIN);
263         lastLoginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LASTLOGIN_0));
264         lastLoginCol.setWidth("20%");
265         lastLoginCol.setSorteable(true);
266         lastLoginCol.setFormatter(CmsListDateMacroFormatter.getDefaultDateFormatter());
267         metadata.addColumn(lastLoginCol);
268     }
269
270     /**
271      * @see org.opencms.workplace.list.A_CmsListDialog#setIndependentActions(org.opencms.workplace.list.CmsListMetadata)
272      */

273     protected void setIndependentActions(CmsListMetadata metadata) {
274
275         // add user groups details
276
CmsListItemDetails userGroupsDetails = new CmsListItemDetails(LIST_DETAIL_GROUPS);
277         userGroupsDetails.setAtColumn(LIST_COLUMN_LOGIN);
278         userGroupsDetails.setVisible(false);
279         userGroupsDetails.setShowActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_NAME_0));
280         userGroupsDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_HELP_0));
281         userGroupsDetails.setHideActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_NAME_0));
282         userGroupsDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_HELP_0));
283         userGroupsDetails.setName(Messages.get().container(Messages.GUI_USERS_DETAIL_GROUPS_NAME_0));
284         userGroupsDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container(
285             Messages.GUI_USERS_DETAIL_GROUPS_NAME_0)));
286         metadata.addItemDetails(userGroupsDetails);
287
288     }
289
290     /**
291      * @see org.opencms.workplace.list.A_CmsListDialog#setMultiActions(org.opencms.workplace.list.CmsListMetadata)
292      */

293     protected void setMultiActions(CmsListMetadata metadata) {
294
295         // makes the list searchable by several columns
296
CmsListSearchAction searchAction = new CmsListSearchAction(metadata.getColumnDefinition(LIST_COLUMN_LOGIN));
297         searchAction.addColumn(metadata.getColumnDefinition(LIST_COLUMN_EMAIL));
298         metadata.setSearchAction(searchAction);
299     }
300
301 }
Popular Tags