KickJava   Java API By Example, From Geeks To Geeks.

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


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

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

99     public CmsListDemo5(CmsJspActionElement jsp) {
100
101         super(jsp, LIST_ID, Messages.get().container(Messages.GUI_USERS_LIST_NAME_0), null, null, null);
102     }
103
104     /**
105      * Public constructor with JSP variables.<p>
106      *
107      * @param context the JSP page context
108      * @param req the JSP request
109      * @param res the JSP response
110      */

111     public CmsListDemo5(PageContext JavaDoc context, HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc res) {
112
113         this(new CmsJspActionElement(context, req, res));
114     }
115
116     /**
117      * @see org.opencms.workplace.list.A_CmsListDialog#executeListMultiActions()
118      */

119     public void executeListMultiActions() throws CmsRuntimeException {
120
121         throwListUnsupportedActionException();
122     }
123
124     /**
125      * @see org.opencms.workplace.list.A_CmsListDialog#executeListSingleActions()
126      */

127     public void executeListSingleActions() {
128
129         throwListUnsupportedActionException();
130     }
131
132     /**
133      * @see org.opencms.workplace.list.A_CmsListDialog#fillDetails(java.lang.String)
134      */

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

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

190     protected void initMessages() {
191
192         // add specific dialog resource bundle
193
addMessages(Messages.get().getBundleName());
194         addMessages(org.opencms.workplace.demos.list.Messages.get().getBundleName());
195         addMessages(org.opencms.workplace.demos.Messages.get().getBundleName());
196         // add default resource bundles
197
super.initMessages();
198     }
199
200     /**
201      * @see org.opencms.workplace.list.A_CmsListDialog#setColumns(org.opencms.workplace.list.CmsListMetadata)
202      */

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

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

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

286     protected void setMultiActions(CmsListMetadata metadata) {
287
288         // makes the list searchable by several columns
289
CmsListSearchAction searchAction = new CmsListSearchAction(metadata.getColumnDefinition(LIST_COLUMN_LOGIN));
290         searchAction.addColumn(metadata.getColumnDefinition(LIST_COLUMN_EMAIL));
291         metadata.setSearchAction(searchAction);
292
293         // remove print action
294
metadata.getIndependentAction(CmsListPrintIAction.LIST_ACTION_ID).setVisible(false);
295     }
296
297 }
Popular Tags