/*
* This library is part of OpenCms -
* the Open Source Content Management System
*
* Copyright (c) Alkacon Software GmbH (http://www.alkacon.com)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* For further information about Alkacon Software GmbH, please see the
* company website: http://www.alkacon.com
*
* For further information about OpenCms, please see the
* project website: http://www.opencms.org
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.opencms.workplace.commons;
import org.opencms.file.CmsGroup;
import org.opencms.file.CmsUser;
import org.opencms.i18n.CmsMessageContainer;
import org.opencms.jsp.CmsJspActionElement;
import org.opencms.main.CmsException;
import org.opencms.main.CmsRuntimeException;
import org.opencms.main.OpenCms;
import org.opencms.security.CmsAccessControlEntry;
import org.opencms.security.CmsOrganizationalUnit;
import org.opencms.security.CmsPrincipal;
import org.opencms.security.CmsRole;
import org.opencms.security.I_CmsPrincipal;
import org.opencms.workplace.I_CmsGroupNameTranslation;
import org.opencms.workplace.list.A_CmsListDefaultJsAction;
import org.opencms.workplace.list.A_CmsListDialog;
import org.opencms.workplace.list.CmsListColumnAlignEnum;
import org.opencms.workplace.list.CmsListColumnDefinition;
import org.opencms.workplace.list.CmsListDefaultAction;
import org.opencms.workplace.list.CmsListDirectAction;
import org.opencms.workplace.list.CmsListIndependentAction;
import org.opencms.workplace.list.CmsListItem;
import org.opencms.workplace.list.CmsListItemDetails;
import org.opencms.workplace.list.CmsListItemDetailsFormatter;
import org.opencms.workplace.list.CmsListMetadata;
import org.opencms.workplace.list.CmsListOrderEnum;
import org.opencms.workplace.list.CmsListSearchAction;
import org.opencms.workplace.list.I_CmsListItemComparator;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.PageContext;
/**
* Principal selection dialog.<p>
*
* @since 6.5.6
*/
public class CmsPrincipalSelectionList extends A_CmsListDialog {
/** list action id constant. */
public static final String LIST_ACTION_ICON = "ai";
/** list action id constant. */
public static final String LIST_ACTION_SELECT = "js";
/** list column id constant. */
public static final String LIST_COLUMN_DESCRIPTION = "cd";
/** list column id constant. */
public static final String LIST_COLUMN_DISPLAY = "cdn";
/** list column id constant. */
public static final String LIST_COLUMN_ICON = "ci";
/** list column id constant. */
public static final String LIST_COLUMN_NAME = "cn";
/** list column id constant. */
public static final String LIST_COLUMN_ORGUNIT = "cou";
/** list item detail id constant. */
public static final String LIST_DETAIL_OTHEROU = "doo";
/** list action id constant. */
public static final String LIST_IACTION_GROUPS = "iag";
/** list action id constant. */
public static final String LIST_IACTION_USERS = "iau";
/** list id constant. */
public static final String LIST_ID = "lus";
/** Path to the list buttons. */
public static final String PATH_BUTTONS = "tools/accounts/buttons/";
/** Item comparator to ensure that special principals go first. */
private static final I_CmsListItemComparator LIST_ITEM_COMPARATOR = new I_CmsListItemComparator() {
/**
* @see org.opencms.workplace.list.I_CmsListItemComparator#getComparator(java.lang.String, java.util.Locale)
*/
public Comparator getComparator(final String columnId, final Locale locale) {
final Collator collator = Collator.getInstance(locale);
final String overwriteAll = Messages.get().getBundle(locale).key(Messages.GUI_LABEL_OVERWRITEALL_0);
final String allOthers = Messages.get().getBundle(locale).key(Messages.GUI_LABEL_ALLOTHERS_0);
return new Comparator() {
/**
* @see org.opencms.security.CmsAccessControlEntry#COMPARATOR_PRINCIPALS
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*/
public int compare(Object o1, Object o2) {
if ((o1 == o2) || !(o1 instanceof CmsListItem) || !(o2 instanceof CmsListItem)) {
return 0;
}
CmsListItem li1 = (CmsListItem)o1;
CmsListItem li2 = (CmsListItem)o2;
String id1 = (String)li1.get(LIST_COLUMN_DISPLAY);
String id2 = (String)li2.get(LIST_COLUMN_DISPLAY);
if (id1.equals(id2)) {
return 0;
} else if (id1.equals(overwriteAll)) {
return -1;
} else if (id1.equals(allOthers)) {
if (id2.equals(overwriteAll)) {
return 1;
} else {
return -1;
}
} else if (id2.equals(allOthers)) {
if (id1.equals(overwriteAll)) {
return -1;
} else {
return 1;
}
} else if (id2.equals(overwriteAll)) {
return 1;
}
Comparable c1 = (Comparable)li1.get(columnId);
Comparable c2 = (Comparable)li2.get(columnId);
if ((c1 instanceof String) && (c2 instanceof String)) {
return collator.compare(c1, c2);
} else if (c1 != null) {
if (c2 == null) {
return 1;
}
return c1.compareTo(c2);
} else if (c2 != null) {
return -1;
}
return 0;
}
};
}
};
/** Cached value. */
private Boolean m_hasPrincipalsInOtherOus;
/** Stores the value of the request parameter for the flags. */
private String m_paramFlags;
/**
* Public constructor.<p>
*
* @param jsp an initialized JSP action element
*/
public CmsPrincipalSelectionList(CmsJspActionElement jsp) {
super(
jsp,
LIST_ID,
Messages.get().container(Messages.GUI_PRINCIPALSELECTION_LIST_NAME_0),
LIST_COLUMN_DISPLAY,
CmsListOrderEnum.ORDER_ASCENDING,
null);
}
/**
* Public constructor with JSP variables.<p>
*
* @param context the JSP page context
* @param req the JSP request
* @param res the JSP response
*/
public CmsPrincipalSelectionList(PageContext context, HttpServletRequest req, HttpServletResponse res) {
this(new CmsJspActionElement(context, req, res));
}
/**
* @see org.opencms.workplace.tools.CmsToolDialog#dialogTitle()
*/
public String dialogTitle() {
// build title
StringBuffer html = new StringBuffer(512);
html.append("<div class='screenTitle'>\n");
html.append("\t<table width='100%' cellspacing='0'>\n");
html.append("\t\t<tr>\n");
html.append("\t\t\t<td>\n");
if (getList().getMetadata().getIndependentAction(LIST_IACTION_USERS).isVisible()) {
html.append(key(Messages.GUI_GROUPSELECTION_INTRO_TITLE_0));
getList().setName(Messages.get().container(Messages.GUI_GROUPSELECTION_LIST_NAME_0));
getList().getMetadata().getIndependentAction(LIST_DETAIL_OTHEROU);
} else {
html.append(key(Messages.GUI_USERSELECTION_INTRO_TITLE_1, new Object[] {""}));
getList().setName(Messages.get().container(Messages.GUI_USERSELECTION_LIST_NAME_0));
}
html.append("\n\t\t\t</td>");
html.append("\t\t</tr>\n");
html.append("\t</table>\n");
html.append("</div>\n");
return html.toString();
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#executeListIndepActions()
*/
public void executeListIndepActions() {
if (LIST_IACTION_USERS.equals(getParamListAction())) {
getList().getMetadata().getIndependentAction(LIST_IACTION_USERS).setVisible(false);
getList().getMetadata().getIndependentAction(LIST_IACTION_GROUPS).setVisible(true);
} else if (LIST_IACTION_GROUPS.equals(getParamListAction())) {
getList().getMetadata().getIndependentAction(LIST_IACTION_USERS).setVisible(true);
getList().getMetadata().getIndependentAction(LIST_IACTION_GROUPS).setVisible(false);
}
super.executeListIndepActions();
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#executeListMultiActions()
*/
public void executeListMultiActions() throws CmsRuntimeException {
throwListUnsupportedActionException();
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#executeListSingleActions()
*/
public void executeListSingleActions() throws CmsRuntimeException {
throwListUnsupportedActionException();
}
/**
* Returns the right icon path for the given list item.<p>
*
* @param item the list item to get the icon path for
*
* @return the icon path for the given role
*/
public String getIconPath(CmsListItem item) {
boolean showingUsers = isShowingUsers();
try {
CmsPrincipal principal;
if (showingUsers) {
principal = getCms().readUser((String)item.get(LIST_COLUMN_NAME));
} else {
principal = getCms().readGroup((String)item.get(LIST_COLUMN_NAME));
}
if (principal.getOuFqn().equals(getCms().getRequestContext().getCurrentUser().getOuFqn())) {
if (showingUsers) {
return PATH_BUTTONS + "user.png";
} else {
return PATH_BUTTONS + "group.png";
}
} else {
if (showingUsers) {
return PATH_BUTTONS + "user_other_ou.png";
} else {
return PATH_BUTTONS + "group_other_ou.png";
}
}
} catch (CmsException e) {
if (item.get(LIST_COLUMN_DISPLAY).equals(key(Messages.GUI_LABEL_OVERWRITEALL_0))) {
return "commons/" + CmsAccessControlEntry.PRINCIPAL_OVERWRITE_ALL_NAME.toLowerCase() + ".png";
} else if (item.get(LIST_COLUMN_DISPLAY).equals(key(Messages.GUI_LABEL_ALLOTHERS_0))) {
return "commons/" + CmsAccessControlEntry.PRINCIPAL_ALL_OTHERS_NAME.toLowerCase() + ".png";
} else if (showingUsers) {
return PATH_BUTTONS + "user.png";
} else {
return PATH_BUTTONS + "group.png";
}
}
}
/**
* Returns the flags parameter value.<p>
*
* @return the flags parameter value
*/
public String getParamFlags() {
return m_paramFlags;
}
/**
* Returns if the list of principals has principals of other organizational units.<p>
*
* @return if the list of principals has principals of other organizational units
*/
public boolean hasPrincipalsInOtherOus() {
if (m_hasPrincipalsInOtherOus == null) {
// lazzy initialization
m_hasPrincipalsInOtherOus = Boolean.FALSE;
try {
Iterator itPrincipals = getPrincipals(true).iterator();
while (itPrincipals.hasNext()) {
CmsPrincipal principal = (CmsPrincipal)itPrincipals.next();
if (!principal.getOuFqn().equals(getCms().getRequestContext().getCurrentUser().getOuFqn())) {
m_hasPrincipalsInOtherOus = Boolean.TRUE;
break;
}
}
} catch (Exception e) {
// ignore
}
}
return m_hasPrincipalsInOtherOus.booleanValue();
}
/**
* Checks if we are currently displaying users or groups.<p>
*
* @return <code>true</code> if we are currently displaying users
*/
public boolean isShowingUsers() {
return getList().getMetadata().getIndependentAction(LIST_IACTION_GROUPS).isVisible();
}
/**
* Sets the flags parameter value.<p>
*
* @param flags the flags parameter value to set
*/
public void setParamFlags(String flags) {
m_paramFlags = flags;
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#fillDetails(java.lang.String)
*/
protected void fillDetails(String detailId) {
// noop
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#getListItems()
*/
protected List getListItems() throws CmsException {
List ret = new ArrayList();
boolean withOtherOus = hasPrincipalsInOtherOus()
&& getList().getMetadata().getItemDetailDefinition(LIST_DETAIL_OTHEROU).isVisible();
// get content
List principals = getPrincipals(withOtherOus);
Iterator itPrincipals = principals.iterator();
while (itPrincipals.hasNext()) {
I_CmsPrincipal principal = (I_CmsPrincipal)itPrincipals.next();
CmsListItem item = getList().newItem(principal.getId().toString());
item.set(LIST_COLUMN_NAME, principal.getName());
I_CmsGroupNameTranslation translation = OpenCms.getWorkplaceManager().getGroupNameTranslation();
if (principal.isGroup()) {
item.set(LIST_COLUMN_DISPLAY, translation.translateGroupName(principal.getName(), false));
} else {
item.set(LIST_COLUMN_DISPLAY, principal.getSimpleName());
}
if (principal.isUser()) {
if (principal.getId().equals(CmsAccessControlEntry.PRINCIPAL_ALL_OTHERS_ID)
|| principal.getId().equals(CmsAccessControlEntry.PRINCIPAL_OVERWRITE_ALL_ID)) {
item.set(LIST_COLUMN_DESCRIPTION, ((CmsUser)principal).getDescription(getLocale()));
} else {
item.set(LIST_COLUMN_DESCRIPTION, ((CmsUser)principal).getFullName());
}
} else {
item.set(LIST_COLUMN_DESCRIPTION, ((CmsGroup)principal).getDescription(getLocale()));
}
item.set(LIST_COLUMN_ORGUNIT, CmsOrganizationalUnit.SEPARATOR + principal.getOuFqn());
ret.add(item);
}
return ret;
}
/**
* Returns the list of principals for selection.<p>
*
* @param includeOtherOus if to include other ou's in the selection
*
* @return a list of principals
*
* @throws CmsException if womething goes wrong
*/
protected List getPrincipals(boolean includeOtherOus) throws CmsException {
String ou = getCms().getRequestContext().getCurrentUser().getOuFqn();
Set principals = new HashSet();
if (isShowingUsers()) {
// include special principals
if (OpenCms.getRoleManager().hasRole(getCms(), CmsRole.VFS_MANAGER)) {
CmsUser user = new CmsUser(
CmsAccessControlEntry.PRINCIPAL_OVERWRITE_ALL_ID,
key(Messages.GUI_LABEL_OVERWRITEALL_0),
"",
"",
"",
"",
0,
0,
0,
null);
user.setDescription(key(Messages.GUI_DESCRIPTION_OVERWRITEALL_0));
principals.add(user);
}
CmsUser user = new CmsUser(
CmsAccessControlEntry.PRINCIPAL_ALL_OTHERS_ID,
key(Messages.GUI_LABEL_ALLOTHERS_0),
"",
"",
"",
"",
0,
0,
0,
null);
user.setDescription(key(Messages.GUI_DESCRIPTION_ALLOTHERS_0));
principals.add(user);
if (includeOtherOus) {
// add all manageable users
principals.addAll(OpenCms.getRoleManager().getManageableUsers(getCms(), "", true));
// add own ou users
principals.addAll(OpenCms.getOrgUnitManager().getUsers(getCms(), ou, true));
} else {
// add own ou users
principals.addAll(OpenCms.getOrgUnitManager().getUsers(getCms(), ou, false));
}
} else {
// include special principals
if (OpenCms.getRoleManager().hasRole(getCms(), CmsRole.VFS_MANAGER)) {
principals.add(new CmsGroup(
CmsAccessControlEntry.PRINCIPAL_OVERWRITE_ALL_ID,
null,
key(Messages.GUI_LABEL_OVERWRITEALL_0),
key(Messages.GUI_DESCRIPTION_OVERWRITEALL_0),
0));
}
principals.add(new CmsGroup(
CmsAccessControlEntry.PRINCIPAL_ALL_OTHERS_ID,
null,
key(Messages.GUI_LABEL_ALLOTHERS_0),
key(Messages.GUI_DESCRIPTION_ALLOTHERS_0),
0));
if (includeOtherOus) {
// add all manageable users
principals.addAll(OpenCms.getRoleManager().getManageableGroups(getCms(), "", true));
// add own ou users
principals.addAll(OpenCms.getOrgUnitManager().getGroups(getCms(), ou, true));
} else {
// add own ou users
principals.addAll(OpenCms.getOrgUnitManager().getGroups(getCms(), ou, false));
}
}
List ret = new ArrayList(principals);
if (getParamFlags() != null) {
int flags = Integer.parseInt(getParamFlags());
return CmsPrincipal.filterFlag(ret, flags);
}
return ret;
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#initializeDetail(java.lang.String)
*/
protected void initializeDetail(String detailId) {
super.initializeDetail(detailId);
if (detailId.equals(LIST_DETAIL_OTHEROU)) {
boolean visible = hasPrincipalsInOtherOus()
&& getList().getMetadata().getItemDetailDefinition(LIST_DETAIL_OTHEROU).isVisible();
getList().getMetadata().getColumnDefinition(LIST_COLUMN_ORGUNIT).setVisible(visible);
getList().getMetadata().getColumnDefinition(LIST_COLUMN_ORGUNIT).setPrintable(visible);
}
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#setColumns(org.opencms.workplace.list.CmsListMetadata)
*/
protected void setColumns(CmsListMetadata metadata) {
// create column for icon display
CmsListColumnDefinition iconCol = new CmsListColumnDefinition(LIST_COLUMN_ICON);
iconCol.setName(Messages.get().container(Messages.GUI_PRINCIPALSELECTION_LIST_COLS_ICON_0));
iconCol.setHelpText(Messages.get().container(Messages.GUI_PRINCIPALSELECTION_LIST_COLS_ICON_HELP_0));
iconCol.setWidth("20");
iconCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
iconCol.setSorteable(false);
// set icon action
CmsListDirectAction iconAction = new CmsListDirectAction(LIST_ACTION_ICON) {
/**
* @see org.opencms.workplace.tools.A_CmsHtmlIconButton#getIconPath()
*/
public String getIconPath() {
return ((CmsPrincipalSelectionList)getWp()).getIconPath(getItem());
}
};
iconAction.setName(Messages.get().container(Messages.GUI_PRINCIPALSELECTION_LIST_ICON_NAME_0));
iconAction.setHelpText(Messages.get().container(Messages.GUI_PRINCIPALSELECTION_LIST_ICON_HELP_0));
iconAction.setEnabled(false);
iconCol.addDirectAction(iconAction);
// add it to the list definition
metadata.addColumn(iconCol);
CmsListColumnDefinition loginCol = new CmsListColumnDefinition(LIST_COLUMN_NAME);
loginCol.setVisible(false);
metadata.addColumn(loginCol);
loginCol.setPrintable(false);
// create column for display name
CmsListColumnDefinition displayNameCol = new CmsListColumnDefinition(LIST_COLUMN_DISPLAY);
displayNameCol.setName(Messages.get().container(Messages.GUI_PRINCIPALSELECTION_LIST_COLS_NAME_0));
displayNameCol.setWidth("40%");
displayNameCol.setListItemComparator(LIST_ITEM_COMPARATOR);
CmsListDefaultAction selectAction = new A_CmsListDefaultJsAction(LIST_ACTION_SELECT) {
/**
* @see org.opencms.workplace.list.A_CmsListDirectJsAction#jsCode()
*/
public String jsCode() {
return "window.opener.setPrincipalFormValue("
+ (((CmsPrincipalSelectionList)getWp()).isShowingUsers() ? 1 : 0)
+ ",'"
+ getItem().get(LIST_COLUMN_NAME)
+ "'); window.opener.focus(); window.close();";
}
};
selectAction.setName(Messages.get().container(Messages.GUI_PRINCIPALSELECTION_LIST_ACTION_SELECT_NAME_0));
selectAction.setHelpText(Messages.get().container(Messages.GUI_PRINCIPALSELECTION_LIST_ACTION_SELECT_HELP_0));
displayNameCol.addDefaultAction(selectAction);
// add it to the list definition
metadata.addColumn(displayNameCol);
// create column for description
CmsListColumnDefinition descriptionCol = new CmsListColumnDefinition(LIST_COLUMN_DESCRIPTION);
descriptionCol.setName(Messages.get().container(Messages.GUI_PRINCIPALSELECTION_LIST_COLS_DESCRIPTION_0));
descriptionCol.setWidth("60%");
descriptionCol.setTextWrapping(true);
descriptionCol.setListItemComparator(LIST_ITEM_COMPARATOR);
// add it to the list definition
metadata.addColumn(descriptionCol);
// create column for org unit
CmsListColumnDefinition ouCol = new CmsListColumnDefinition(LIST_COLUMN_ORGUNIT);
ouCol.setName(Messages.get().container(Messages.GUI_PRINCIPALSELECTION_LIST_COLS_ORGUNIT_0));
ouCol.setWidth("40%");
ouCol.setTextWrapping(true);
ouCol.setListItemComparator(LIST_ITEM_COMPARATOR);
// add it to the list definition
metadata.addColumn(ouCol);
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#setIndependentActions(org.opencms.workplace.list.CmsListMetadata)
*/
protected void setIndependentActions(CmsListMetadata metadata) {
// add other ou button
CmsListItemDetails otherOuDetails = new CmsListItemDetails(LIST_DETAIL_OTHEROU);
otherOuDetails.setVisible(false);
otherOuDetails.setHideAction(new CmsListIndependentAction(LIST_DETAIL_OTHEROU) {
/**
* @see org.opencms.workplace.tools.A_CmsHtmlIconButton#getHelpText()
*/
public CmsMessageContainer getHelpText() {
if (getWp().getList().getMetadata().getIndependentAction(LIST_IACTION_USERS).isVisible()) {
return Messages.get().container(Messages.GUI_GROUPS_DETAIL_HIDE_OTHEROU_HELP_0);
} else {
return Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_OTHEROU_HELP_0);
}
}
/**
* @see org.opencms.workplace.tools.A_CmsHtmlIconButton#getIconPath()
*/
public String getIconPath() {
return A_CmsListDialog.ICON_DETAILS_HIDE;
}
/**
* @see org.opencms.workplace.tools.A_CmsHtmlIconButton#getName()
*/
public CmsMessageContainer getName() {
if (getWp().getList().getMetadata().getIndependentAction(LIST_IACTION_USERS).isVisible()) {
return Messages.get().container(Messages.GUI_GROUPS_DETAIL_HIDE_OTHEROU_NAME_0);
} else {
return Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_OTHEROU_NAME_0);
}
}
/**
* @see org.opencms.workplace.tools.A_CmsHtmlIconButton#isVisible()
*/
public boolean isVisible() {
return ((CmsPrincipalSelectionList)getWp()).hasPrincipalsInOtherOus();
}
});
otherOuDetails.setShowAction(new CmsListIndependentAction(LIST_DETAIL_OTHEROU) {
/**
* @see org.opencms.workplace.tools.A_CmsHtmlIconButton#getHelpText()
*/
public CmsMessageContainer getHelpText() {
if (getWp().getList().getMetadata().getIndependentAction(LIST_IACTION_USERS).isVisible()) {
return Messages.get().container(Messages.GUI_GROUPS_DETAIL_SHOW_OTHEROU_HELP_0);
} else {
return Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_OTHEROU_HELP_0);
}
}
/**
* @see org.opencms.workplace.tools.A_CmsHtmlIconButton#getIconPath()
*/
public String getIconPath() {
return A_CmsListDialog.ICON_DETAILS_SHOW;
}
/**
* @see org.opencms.workplace.tools.A_CmsHtmlIconButton#getName()
*/
public CmsMessageContainer getName() {
if (getWp().getList().getMetadata().getIndependentAction(LIST_IACTION_USERS).isVisible()) {
return Messages.get().container(Messages.GUI_GROUPS_DETAIL_SHOW_OTHEROU_NAME_0);
} else {
return Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_OTHEROU_NAME_0);
}
}
/**
* @see org.opencms.workplace.tools.A_CmsHtmlIconButton#isVisible()
*/
public boolean isVisible() {
return ((CmsPrincipalSelectionList)getWp()).hasPrincipalsInOtherOus();
}
});
otherOuDetails.setName(Messages.get().container(Messages.GUI_PRINCIPALS_DETAIL_OTHEROU_NAME_0));
otherOuDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container(
Messages.GUI_PRINCIPALS_DETAIL_OTHEROU_NAME_0)));
metadata.addItemDetails(otherOuDetails);
CmsListIndependentAction usersAction = new CmsListIndependentAction(LIST_IACTION_USERS);
usersAction.setName(Messages.get().container(Messages.GUI_PRINCIPALS_IA_USERS_NAME_0));
usersAction.setHelpText(Messages.get().container(Messages.GUI_PRINCIPALS_IA_USERS_HELP_0));
usersAction.setIconPath(PATH_BUTTONS + "user.png");
usersAction.setVisible(true);
metadata.addIndependentAction(usersAction);
CmsListIndependentAction groupsAction = new CmsListIndependentAction(LIST_IACTION_GROUPS);
groupsAction.setName(Messages.get().container(Messages.GUI_PRINCIPALS_IA_GROUPS_NAME_0));
groupsAction.setHelpText(Messages.get().container(Messages.GUI_PRINCIPALS_IA_GROUPS_HELP_0));
groupsAction.setIconPath(PATH_BUTTONS + "group.png");
groupsAction.setVisible(false);
metadata.addIndependentAction(groupsAction);
CmsListSearchAction searchAction = new CmsListSearchAction(metadata.getColumnDefinition(LIST_COLUMN_DISPLAY));
searchAction.addColumn(metadata.getColumnDefinition(LIST_COLUMN_DESCRIPTION));
searchAction.setCaseInSensitive(true);
metadata.setSearchAction(searchAction);
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#setMultiActions(org.opencms.workplace.list.CmsListMetadata)
*/
protected void setMultiActions(CmsListMetadata metadata) {
// no-op
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#validateParamaters()
*/
protected void validateParamaters() throws Exception {
try {
Integer.valueOf(getParamFlags());
} catch (Throwable e) {
setParamFlags(null);
}
}
}