KickJava   Java API By Example, From Geeks To Geeks.

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


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.CmsWorkplaceSettings;
40 import org.opencms.workplace.list.A_CmsListDialog;
41 import org.opencms.workplace.list.CmsListColumnAlignEnum;
42 import org.opencms.workplace.list.CmsListColumnDefinition;
43 import org.opencms.workplace.list.CmsListDateMacroFormatter;
44 import org.opencms.workplace.list.CmsListItem;
45 import org.opencms.workplace.list.CmsListItemDetails;
46 import org.opencms.workplace.list.CmsListItemDetailsFormatter;
47 import org.opencms.workplace.list.CmsListMetadata;
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.io.IOException JavaDoc;
53 import java.util.ArrayList JavaDoc;
54 import java.util.Date JavaDoc;
55 import java.util.Iterator JavaDoc;
56 import java.util.List JavaDoc;
57 import java.util.Locale JavaDoc;
58
59 import javax.servlet.ServletException JavaDoc;
60 import javax.servlet.http.HttpServletRequest JavaDoc;
61 import javax.servlet.http.HttpServletResponse JavaDoc;
62 import javax.servlet.jsp.JspException 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 CmsListDemo13 extends A_CmsListDialog {
75
76     /** list column id constant. */
77     public static final String JavaDoc LIST_COLUMN_ACTIVATE = "ca";
78
79     /** list column id constant. */
80     public static final String JavaDoc LIST_COLUMN_EMAIL = "cm";
81
82     /** list column id constant. */
83     public static final String JavaDoc LIST_COLUMN_LASTLOGIN = "cl";
84
85     /** list column id constant. */
86     public static final String JavaDoc LIST_COLUMN_LOGIN = "ci";
87
88     /** list column id constant. */
89     public static final String JavaDoc LIST_COLUMN_NAME = "cn";
90
91     /** list item detail id constant. */
92     public static final String JavaDoc LIST_DETAIL_GROUPS = "dg";
93
94     /** list id constant. */
95     public static final String JavaDoc LIST_ID = "lsu1";
96
97     /**
98      * Public constructor.<p>
99      *
100      * @param jsp an initialized JSP action element
101      */

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

114     public CmsListDemo13(PageContext JavaDoc context, HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc res) {
115
116         this(new CmsJspActionElement(context, req, res));
117     }
118
119     /**
120      * @see org.opencms.workplace.list.A_CmsListDialog#actionDialog()
121      */

122     public void actionDialog() throws JspException JavaDoc, ServletException JavaDoc, IOException JavaDoc {
123
124         switch (getAction()) {
125             case ACTION_OK:
126                 // do something, like a forward...
127
break;
128             case ACTION_CANCEL:
129                 setAction(ACTION_CANCEL);
130                 actionCloseDialog();
131                 break;
132             default:
133                 super.actionDialog();
134         }
135     }
136
137     /**
138      * @see org.opencms.workplace.list.A_CmsListDialog#customHtmlEnd()
139      */

140     protected String JavaDoc customHtmlEnd() {
141
142         StringBuffer JavaDoc result = new StringBuffer JavaDoc(512);
143         result.append(super.customHtmlEnd());
144         result.append(dialogSpacer());
145         result.append("<form name='actions' method='post' action='");
146         result.append(getDialogRealUri());
147         result.append("' class='nomargin' onsubmit=\"return submitAction('ok', null, 'actions');\">\n");
148         result.append(allParamsAsHidden());
149         result.append(dialogButtonRow(HTML_START));
150         dialogButtonsHtml(result, BUTTON_OK, "");
151         dialogButtonsHtml(result, BUTTON_CANCEL, "");
152         result.append(dialogButtonRow(HTML_END));
153         result.append("</form>\n");
154         return result.toString();
155     }
156
157     /**
158      * @see org.opencms.workplace.list.A_CmsListDialog#customHtmlStart()
159      */

160     protected String JavaDoc customHtmlStart() {
161
162         StringBuffer JavaDoc result = new StringBuffer JavaDoc(512);
163         result.append(dialogBlockStart("Demo block title")); // should be localizaed message
164
result.append("some blah-blah:\n");
165         result.append("nqfqfoi qwemofmfq qmwfomfq fqofepqo fqmpfoqe qdxmpdqwmqwp dqwpq df; "
166             + "kpqwef qp fdqpfqkm mxaoi wcvm qc o;ewmv wvj wemv w iomvwe mv "
167             + "ewoi;vmew vw eom evwm ew oim vew wv iom oiew jom vewoim vwoim vwe vewoimvew qjceeviwlkdk");
168         result.append(dialogBlockEnd());
169         return result.toString();
170     }
171
172     /**
173      * @see org.opencms.workplace.list.A_CmsListDialog#initWorkplaceRequestValues(org.opencms.workplace.CmsWorkplaceSettings, javax.servlet.http.HttpServletRequest)
174      */

175     protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest JavaDoc request) {
176
177         super.initWorkplaceRequestValues(settings, request);
178         if (DIALOG_OK.equals(getParamAction())) {
179             setAction(ACTION_OK);
180         }
181     }
182
183     /**
184      * @see org.opencms.workplace.list.A_CmsListDialog#executeListMultiActions()
185      */

186     public void executeListMultiActions() throws CmsRuntimeException {
187
188         throwListUnsupportedActionException();
189     }
190
191     /**
192      * @see org.opencms.workplace.list.A_CmsListDialog#executeListSingleActions()
193      */

194     public void executeListSingleActions() {
195
196         throwListUnsupportedActionException();
197     }
198
199     /**
200      * @see org.opencms.workplace.list.A_CmsListDialog#fillDetails(java.lang.String)
201      */

202     protected void fillDetails(String JavaDoc detailId) {
203
204         // get content
205
List JavaDoc users = getList().getAllContent();
206         Iterator JavaDoc itUsers = users.iterator();
207         while (itUsers.hasNext()) {
208             CmsListItem item = (CmsListItem)itUsers.next();
209             String JavaDoc userName = item.get(LIST_COLUMN_LOGIN).toString();
210             StringBuffer JavaDoc html = new StringBuffer JavaDoc(512);
211             try {
212                 if (detailId.equals(LIST_DETAIL_GROUPS)) {
213                     // groups
214
Iterator JavaDoc itGroups = getCms().getGroupsOfUser(userName).iterator();
215                     while (itGroups.hasNext()) {
216                         html.append(((CmsGroup)itGroups.next()).getName());
217                         if (itGroups.hasNext()) {
218                             html.append("<br>");
219                         }
220                         html.append("\n");
221                     }
222                 } else {
223                     continue;
224                 }
225             } catch (Exception JavaDoc e) {
226                 // noop
227
}
228             item.set(detailId, html.toString());
229         }
230     }
231
232     /**
233      * @see org.opencms.workplace.list.A_CmsListDialog#getListItems()
234      */

235     protected List JavaDoc getListItems() throws CmsException {
236
237         List JavaDoc ret = new ArrayList JavaDoc();
238         // get content
239
List JavaDoc users = getCms().getUsers(CmsUser.USER_TYPE_SYSTEMUSER);
240         Iterator JavaDoc itUsers = users.iterator();
241         while (itUsers.hasNext()) {
242             CmsUser user = (CmsUser)itUsers.next();
243             CmsListItem item = getList().newItem(user.getId().toString());
244             item.set(LIST_COLUMN_ACTIVATE, Boolean.valueOf(user.isEnabled()));
245             item.set(LIST_COLUMN_LOGIN, user.getName());
246             item.set(LIST_COLUMN_NAME, user.getFullName());
247             item.set(LIST_COLUMN_EMAIL, user.getEmail());
248             item.set(LIST_COLUMN_LASTLOGIN, new Date JavaDoc(user.getLastlogin()));
249             ret.add(item);
250         }
251         return ret;
252     }
253
254     /**
255      * @see org.opencms.workplace.CmsWorkplace#initMessages()
256      */

257     protected void initMessages() {
258
259         // add specific dialog resource bundle
260
addMessages(Messages.get().getBundleName());
261         addMessages(org.opencms.workplace.Messages.get().getBundleName());
262         addMessages(org.opencms.workplace.demos.list.Messages.get().getBundleName());
263         addMessages(org.opencms.workplace.demos.Messages.get().getBundleName());
264         // add default resource bundles
265
super.initMessages();
266     }
267
268     /**
269      * @see org.opencms.workplace.list.A_CmsListDialog#setColumns(org.opencms.workplace.list.CmsListMetadata)
270      */

271     protected void setColumns(CmsListMetadata metadata) {
272
273         // create column for activation/deactivation
274
CmsListColumnDefinition actCol = new CmsListColumnDefinition(LIST_COLUMN_ACTIVATE);
275         actCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_ACTIVATE_0));
276         actCol.setWidth("30");
277         actCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
278         actCol.setSorteable(true);
279         I_CmsListFormatter actFormatter = new I_CmsListFormatter() {
280
281             /**
282              * @see org.opencms.workplace.list.I_CmsListFormatter#format(java.lang.Object, java.util.Locale)
283              */

284             public String JavaDoc format(Object JavaDoc data, Locale JavaDoc locale) {
285
286                 if (data instanceof Boolean JavaDoc) {
287                     Boolean JavaDoc val = (Boolean JavaDoc)data;
288                     if (val.booleanValue()) {
289                         return "<img SRC='" + getResourceUri("list/active.png") + "'>";
290                     }
291                 }
292                 return "<img SRC='" + getResourceUri("list/inactive.png") + "'>";
293             }
294
295         };
296         actCol.setFormatter(actFormatter);
297         metadata.addColumn(actCol);
298
299         // create column for login
300
CmsListColumnDefinition loginCol = new CmsListColumnDefinition(LIST_COLUMN_LOGIN);
301         loginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LOGIN_0));
302         loginCol.setWidth("20%");
303         loginCol.setSorteable(true);
304
305         // add it to the list definition
306
metadata.addColumn(loginCol);
307
308         // add column for name
309
CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME);
310         nameCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_USERNAME_0));
311         nameCol.setWidth("30%");
312         nameCol.setSorteable(true);
313         metadata.addColumn(nameCol);
314
315         // add column for email
316
CmsListColumnDefinition emailCol = new CmsListColumnDefinition(LIST_COLUMN_EMAIL);
317         emailCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_EMAIL_0));
318         emailCol.setWidth("30%");
319         emailCol.setSorteable(true);
320         metadata.addColumn(emailCol);
321
322         // add column for last login date
323
CmsListColumnDefinition lastLoginCol = new CmsListColumnDefinition(LIST_COLUMN_LASTLOGIN);
324         lastLoginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LASTLOGIN_0));
325         lastLoginCol.setWidth("20%");
326         lastLoginCol.setSorteable(true);
327         lastLoginCol.setFormatter(CmsListDateMacroFormatter.getDefaultDateFormatter());
328         metadata.addColumn(lastLoginCol);
329     }
330
331     /**
332      * @see org.opencms.workplace.list.A_CmsListDialog#setIndependentActions(org.opencms.workplace.list.CmsListMetadata)
333      */

334     protected void setIndependentActions(CmsListMetadata metadata) {
335
336         // add user groups details
337
CmsListItemDetails userGroupsDetails = new CmsListItemDetails(LIST_DETAIL_GROUPS);
338         userGroupsDetails.setAtColumn(LIST_COLUMN_LOGIN);
339         userGroupsDetails.setVisible(false);
340         userGroupsDetails.setShowActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_NAME_0));
341         userGroupsDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_HELP_0));
342         userGroupsDetails.setHideActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_NAME_0));
343         userGroupsDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_HELP_0));
344         userGroupsDetails.setName(Messages.get().container(Messages.GUI_USERS_DETAIL_GROUPS_NAME_0));
345         userGroupsDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container(
346             Messages.GUI_USERS_DETAIL_GROUPS_NAME_0)));
347         metadata.addItemDetails(userGroupsDetails);
348
349     }
350
351     /**
352      * @see org.opencms.workplace.list.A_CmsListDialog#setMultiActions(org.opencms.workplace.list.CmsListMetadata)
353      */

354     protected void setMultiActions(CmsListMetadata metadata) {
355
356         // makes the list searchable by several columns
357
CmsListSearchAction searchAction = new CmsListSearchAction(metadata.getColumnDefinition(LIST_COLUMN_LOGIN));
358         searchAction.addColumn(metadata.getColumnDefinition(LIST_COLUMN_EMAIL));
359         metadata.setSearchAction(searchAction);
360     }
361
362 }
Popular Tags