/*
* 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.list;
import org.opencms.db.CmsUserSettings;
import org.opencms.file.CmsProject;
import org.opencms.file.CmsResource;
import org.opencms.i18n.CmsMessageContainer;
import org.opencms.jsp.CmsJspActionElement;
import org.opencms.main.CmsException;
import org.opencms.main.CmsLog;
import org.opencms.main.OpenCms;
import org.opencms.util.CmsUUID;
import org.opencms.workplace.CmsDialog;
import org.opencms.workplace.CmsWorkplaceSettings;
import org.opencms.workplace.commons.CmsTouch;
import org.opencms.workplace.explorer.CmsExplorer;
import org.opencms.workplace.explorer.CmsResourceUtil;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
/**
* Provides a list dialog for resources.<p>
*
* @since 6.0.0
*/
public abstract class A_CmsListExplorerDialog extends A_CmsListDialog {
/** List action id constant. */
public static final String LIST_ACTION_EDIT = "eae";
/** List action id constant. */
public static final String LIST_ACTION_LOCKICON = "eal";
/** List action id constant. */
public static final String LIST_ACTION_PROJSTATEICON = "eaps";
/** List action id constant. */
public static final String LIST_ACTION_TYPEICON = "eai";
/** List column id constant. */
public static final String LIST_COLUMN_DATECREATE = "ecdc";
/** List column id constant. */
public static final String LIST_COLUMN_DATEEXP = "ecde";
/** List column id constant. */
public static final String LIST_COLUMN_DATELASTMOD = "ecdl";
/** List column id constant. */
public static final String LIST_COLUMN_DATEREL = "ecdr";
/** List column id constant. */
public static final String LIST_COLUMN_EDIT = "ece";
/** List column id constant. */
public static final String LIST_COLUMN_LOCKEDBY = "eclb";
/** List column id constant. */
public static final String LIST_COLUMN_LOCKICON = "ecli";
/** List column id constant. */
public static final String LIST_COLUMN_NAME = "ecn";
/** List column id constant. */
public static final String LIST_COLUMN_PERMISSIONS = "ecp";
/** List column id constant. */
public static final String LIST_COLUMN_PROJSTATEICON = "ecpi";
/** List column id constant. */
public static final String LIST_COLUMN_ROOT_PATH = "crp";
/** List column id constant. */
public static final String LIST_COLUMN_SITE = "ecsi";
/** List column id constant. */
public static final String LIST_COLUMN_SIZE = "ecz";
/** List column id constant. */
public static final String LIST_COLUMN_STATE = "ecs";
/** List column id constant. */
public static final String LIST_COLUMN_TITLE = "ect";
/** List column id constant. */
public static final String LIST_COLUMN_TYPE = "ecy";
/** List column id constant. */
public static final String LIST_COLUMN_TYPEICON = "ecti";
/** List column id constant. */
public static final String LIST_COLUMN_USERCREATE = "ecuc";
/** List column id constant. */
public static final String LIST_COLUMN_USERLASTMOD = "ecul";
/** List default action id constant. */
public static final String LIST_DEFACTION_OPEN = "edo";
/** Request parameter name for the show explorer flag. */
public static final String PARAM_SHOW_EXPLORER = "showexplorer";
/** Explorer list JSP path. */
public static final String PATH_EXPLORER_LIST = PATH_DIALOGS + "list-explorer.jsp";
/** The log object for this class. */
private static final Log LOG = CmsLog.getLog(A_CmsListExplorerDialog.class);
/** Column visibility flags container. */
private Map<Integer, Boolean> m_colVisibilities;
/** Stores the value of the request parameter for the show explorer flag. */
private String m_paramShowexplorer;
/** Instance resource util. */
private CmsResourceUtil m_resourceUtil;
/**
* Creates a new explorer list ordered and searchable by name.<p>
*
* @param jsp an initialized JSP action element
* @param listId the id of the displayed list
* @param listName the name of the list
*/
protected A_CmsListExplorerDialog(CmsJspActionElement jsp, String listId, CmsMessageContainer listName) {
this(jsp, listId, listName, LIST_COLUMN_NAME, CmsListOrderEnum.ORDER_ASCENDING, LIST_COLUMN_NAME);
}
/**
* Default constructor.<p>
*
* @param jsp an initialized JSP action element
* @param listId the id of the displayed list
* @param listName the name of the list
* @param sortedColId the a priory sorted column
* @param sortOrder the order of the sorted column
* @param searchableColId the column to search into
*/
protected A_CmsListExplorerDialog(
CmsJspActionElement jsp,
String listId,
CmsMessageContainer listName,
String sortedColId,
CmsListOrderEnum sortOrder,
String searchableColId) {
super(jsp, listId, listName, sortedColId, sortOrder, searchableColId);
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#executeListIndepActions()
*/
@Override
public void executeListIndepActions() {
if (getParamListAction().equals(CmsListIndependentAction.ACTION_EXPLORER_SWITCH_ID)) {
Map<String, String[]> params = new HashMap<String, String[]>();
// set action parameter to initial dialog call
params.put(CmsDialog.PARAM_ACTION, new String[] {CmsDialog.DIALOG_INITIAL});
params.putAll(getToolManager().getCurrentTool(this).getHandler().getParameters(this));
getSettings().setCollector(getCollector());
getSettings().setExplorerMode(CmsExplorer.VIEW_LIST);
getSettings().setExplorerProjectId(getProject().getUuid());
setShowExplorer(true);
try {
getToolManager().jspForwardPage(this, PATH_EXPLORER_LIST, params);
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
super.executeListIndepActions();
}
}
/**
* Returns the collector to use to display the resources.<p>
*
* @return the collector to use to display the resources
*/
public abstract I_CmsListResourceCollector getCollector();
/**
* Returns the Show explorer parameter value.<p>
*
* @return the Show explorer parameter value
*/
public String getParamShowexplorer() {
return m_paramShowexplorer;
}
/**
* Returns an appropiate initialized resource util object.<p>
*
* @return a resource util object
*/
public CmsResourceUtil getResourceUtil() {
if (m_resourceUtil == null) {
try {
m_resourceUtil = new CmsResourceUtil(OpenCms.initCmsObject(getCms()));
m_resourceUtil.setReferenceProject(getProject());
} catch (CmsException ex) {
if (LOG.isErrorEnabled()) {
LOG.error(ex.getLocalizedMessage(), ex);
}
}
}
return m_resourceUtil;
}
/**
* Returns an appropiate initialized resource util object for the given item.<p>
*
* @param item the item representing the resource
*
* @return a resource util object
*/
public CmsResourceUtil getResourceUtil(CmsListItem item) {
CmsResourceUtil resUtil = getResourceUtil();
resUtil.setResource(getCollector().getResource(getCms(), item));
return resUtil;
}
/**
* Sets the Show explorer parameter value.<p>
*
* @param showExplorer the Show explorer parameter value to set
*/
public void setParamShowexplorer(String showExplorer) {
m_paramShowexplorer = showExplorer;
}
/**
* Applies the column visibilities.<p>
*/
protected void applyColumnVisibilities() {
setColumnVisibilities();
CmsListMetadata metadata = getList().getMetadata();
metadata.getColumnDefinition(LIST_COLUMN_SITE).setVisible(isColumnVisible(LIST_COLUMN_SITE.hashCode()));
metadata.getColumnDefinition(LIST_COLUMN_EDIT).setVisible(isColumnVisible(LIST_COLUMN_EDIT.hashCode()));
metadata.getColumnDefinition(LIST_COLUMN_TYPEICON).setVisible(isColumnVisible(LIST_COLUMN_TYPEICON.hashCode()));
metadata.getColumnDefinition(LIST_COLUMN_LOCKICON).setVisible(isColumnVisible(LIST_COLUMN_LOCKICON.hashCode()));
metadata.getColumnDefinition(LIST_COLUMN_PROJSTATEICON).setVisible(
isColumnVisible(LIST_COLUMN_PROJSTATEICON.hashCode()));
metadata.getColumnDefinition(LIST_COLUMN_NAME).setVisible(isColumnVisible(LIST_COLUMN_NAME.hashCode()));
metadata.getColumnDefinition(LIST_COLUMN_TITLE).setVisible(isColumnVisible(CmsUserSettings.FILELIST_TITLE));
metadata.getColumnDefinition(LIST_COLUMN_TYPE).setVisible(isColumnVisible(CmsUserSettings.FILELIST_TYPE));
metadata.getColumnDefinition(LIST_COLUMN_SIZE).setVisible(isColumnVisible(CmsUserSettings.FILELIST_SIZE));
metadata.getColumnDefinition(LIST_COLUMN_PERMISSIONS).setVisible(
isColumnVisible(CmsUserSettings.FILELIST_PERMISSIONS));
metadata.getColumnDefinition(LIST_COLUMN_DATELASTMOD).setVisible(
isColumnVisible(CmsUserSettings.FILELIST_DATE_LASTMODIFIED));
metadata.getColumnDefinition(LIST_COLUMN_USERLASTMOD).setVisible(
isColumnVisible(CmsUserSettings.FILELIST_USER_LASTMODIFIED));
metadata.getColumnDefinition(LIST_COLUMN_DATECREATE).setVisible(
isColumnVisible(CmsUserSettings.FILELIST_DATE_CREATED));
metadata.getColumnDefinition(LIST_COLUMN_USERCREATE).setVisible(
isColumnVisible(CmsUserSettings.FILELIST_USER_CREATED));
metadata.getColumnDefinition(LIST_COLUMN_DATEREL).setVisible(
isColumnVisible(CmsUserSettings.FILELIST_DATE_RELEASED));
metadata.getColumnDefinition(LIST_COLUMN_DATEEXP).setVisible(
isColumnVisible(CmsUserSettings.FILELIST_DATE_EXPIRED));
metadata.getColumnDefinition(LIST_COLUMN_STATE).setVisible(isColumnVisible(CmsUserSettings.FILELIST_STATE));
metadata.getColumnDefinition(LIST_COLUMN_LOCKEDBY).setVisible(
isColumnVisible(CmsUserSettings.FILELIST_LOCKEDBY));
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#defaultActionHtmlStart()
*/
@Override
protected String defaultActionHtmlStart() {
StringBuffer result = new StringBuffer(2048);
result.append(htmlStart(null));
result.append(getList().listJs());
result.append(CmsListExplorerColumn.getExplorerStyleDef());
result.append(bodyStart("dialog", null));
result.append(dialogStart());
result.append(dialogContentStart(getParamTitle()));
return result.toString();
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#executeSelectPage()
*/
@Override
protected void executeSelectPage() {
super.executeSelectPage();
getSettings().setExplorerPage(getList().getCurrentPage());
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#fillList()
*/
@Override
protected void fillList() {
getListState().setPage(getSettings().getExplorerPage());
super.fillList();
}
/**
* Returns the colVisibilities map.<p>
*
* @return the colVisibilities map
*/
protected Map<Integer, Boolean> getColVisibilities() {
return m_colVisibilities;
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#getListItems()
*/
@Override
protected List<CmsListItem> getListItems() throws CmsException {
if (getSettings().getExplorerMode() != null) {
CmsListColumnDefinition nameCol = getList().getMetadata().getColumnDefinition(LIST_COLUMN_NAME);
if (!(getSettings().getExplorerMode().equals(CmsExplorer.VIEW_GALLERY) || getSettings().getExplorerMode().equals(
CmsExplorer.VIEW_LIST))) {
nameCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_NAME_0));
} else {
nameCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_PATH_0));
}
}
return getCollector().getListItems(null);
}
/**
* Returns the list state for initializing the collector.<p>
*
* @return the list state
*/
protected CmsListState getListStateForCollector() {
CmsListState lstate = new CmsListState();
if (getList() != null) {
lstate = getListState();
}
switch (getAction()) {
//////////////////// ACTION: default actions
case ACTION_LIST_SEARCH:
if (getParamSearchFilter() == null) {
setParamSearchFilter("");
}
if (getParamSearchFilter().equals(lstate.getFilter())) {
lstate.setOrder(CmsListOrderEnum.ORDER_DESCENDING);
} else {
lstate.setOrder(CmsListOrderEnum.ORDER_ASCENDING);
}
lstate.setFilter(getParamSearchFilter());
break;
case ACTION_LIST_SORT:
lstate.setColumn(getParamSortCol());
break;
case ACTION_LIST_SELECT_PAGE:
int page = Integer.valueOf(getParamPage()).intValue();
lstate.setPage(page);
break;
default:
// no op
}
return lstate;
}
/**
* Returns the project to use as reference.<p>
*
* @return the project to use as reference
*/
protected CmsProject getProject() {
return getCms().getRequestContext().getCurrentProject();
}
/**
* @see org.opencms.workplace.CmsWorkplace#initWorkplaceRequestValues(org.opencms.workplace.CmsWorkplaceSettings, javax.servlet.http.HttpServletRequest)
*/
@Override
protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) {
super.initWorkplaceRequestValues(settings, request);
// this to show first the explorer view
if (getShowExplorer()) {
CmsUUID projectId = getProject().getUuid();
Map<String, String[]> params = new HashMap<String, String[]>();
// set action parameter to initial dialog call
params.put(CmsDialog.PARAM_ACTION, new String[] {CmsDialog.DIALOG_INITIAL});
params.putAll(getToolManager().getCurrentTool(this).getHandler().getParameters(this));
getSettings().setExplorerProjectId(projectId);
getSettings().setCollector(getCollector());
getSettings().setExplorerMode(CmsExplorer.VIEW_LIST);
try {
setShowExplorer(true);
getToolManager().jspForwardPage(this, PATH_DIALOGS + "list-explorer.jsp", params);
} catch (Exception e) {
throw new RuntimeException(e);
}
} else {
setShowExplorer(false);
}
}
/**
* Returns the visibility flag for a given column.<p>
*
* The default behavior is to show the same columns as the explorer view,
* but this can be overwritten.<p>
*
* @param colFlag some {@link CmsUserSettings#FILELIST_TITLE} like value
* identifying the column to get the visibility flag for
*
* @return the visibility flag for the given column
*/
protected boolean isColumnVisible(int colFlag) {
Integer key = new Integer(colFlag);
if (m_colVisibilities.containsKey(key)) {
return m_colVisibilities.get(key).booleanValue();
}
return false;
}
/**
* Adds the standard explorer view columns to the list.<p>
*
* @see org.opencms.workplace.list.A_CmsListDialog#setColumns(org.opencms.workplace.list.CmsListMetadata)
*/
@Override
protected void setColumns(CmsListMetadata metadata) {
setColumnVisibilities();
// position 0: icon
CmsListColumnDefinition typeIconCol = new CmsListColumnDefinition(LIST_COLUMN_TYPEICON);
typeIconCol.setName(Messages.get().container(Messages.GUI_EXPLORER_LIST_COLS_ICON_0));
typeIconCol.setHelpText(Messages.get().container(Messages.GUI_EXPLORER_LIST_COLS_ICON_HELP_0));
typeIconCol.setWidth("20");
typeIconCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
typeIconCol.setListItemComparator(new CmsListItemActionIconComparator());
// add resource icon action
CmsListDirectAction resourceTypeIconAction = new CmsListResourceTypeIconAction(LIST_ACTION_TYPEICON);
resourceTypeIconAction.setEnabled(false);
typeIconCol.addDirectAction(resourceTypeIconAction);
metadata.addColumn(typeIconCol);
// position 1: edit button
CmsListColumnDefinition editIconCol = new CmsListColumnDefinition(LIST_COLUMN_EDIT);
editIconCol.setName(Messages.get().container(Messages.GUI_EXPLORER_LIST_COLS_EDIT_0));
editIconCol.setHelpText(Messages.get().container(Messages.GUI_EXPLORER_LIST_COLS_EDIT_HELP_0));
editIconCol.setWidth("20");
editIconCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
// add enabled edit action
CmsListDirectAction editAction = new CmsListEditResourceAction(LIST_ACTION_EDIT, LIST_COLUMN_NAME);
editAction.setEnabled(true);
editIconCol.addDirectAction(editAction);
// add disabled edit action
CmsListDirectAction noEditAction = new CmsListEditResourceAction(LIST_ACTION_EDIT + "d", LIST_COLUMN_NAME);
noEditAction.setEnabled(false);
editIconCol.addDirectAction(noEditAction);
metadata.addColumn(editIconCol);
// position 2: lock icon
CmsListColumnDefinition lockIconCol = new CmsListColumnDefinition(LIST_COLUMN_LOCKICON);
lockIconCol.setName(Messages.get().container(Messages.GUI_EXPLORER_LIST_COLS_LOCK_0));
lockIconCol.setWidth("20");
lockIconCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
lockIconCol.setListItemComparator(new CmsListItemActionIconComparator());
// add lock icon action
CmsListDirectAction resourceLockIconAction = new CmsListResourceLockAction(LIST_ACTION_LOCKICON);
resourceLockIconAction.setEnabled(false);
lockIconCol.addDirectAction(resourceLockIconAction);
metadata.addColumn(lockIconCol);
// position 3: project state icon, resource is inside or outside current project
CmsListColumnDefinition projStateIconCol = new CmsListColumnDefinition(LIST_COLUMN_PROJSTATEICON);
projStateIconCol.setName(Messages.get().container(Messages.GUI_EXPLORER_LIST_COLS_PROJSTATE_0));
projStateIconCol.setWidth("20");
// add resource icon action
CmsListDirectAction resourceProjStateAction = new CmsListResourceProjStateAction(LIST_ACTION_PROJSTATEICON);
resourceProjStateAction.setEnabled(false);
projStateIconCol.addDirectAction(resourceProjStateAction);
metadata.addColumn(projStateIconCol);
// position 4: name
CmsListColumnDefinition nameCol = new CmsListExplorerColumn(LIST_COLUMN_NAME);
nameCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_PATH_0));
// add resource open action
CmsListDefaultAction resourceOpenDefAction = new CmsListOpenResourceAction(
LIST_DEFACTION_OPEN,
LIST_COLUMN_ROOT_PATH);
resourceOpenDefAction.setEnabled(true);
nameCol.addDefaultAction(resourceOpenDefAction);
metadata.addColumn(nameCol);
nameCol.setPrintable(false);
// position 4: root path for printing
CmsListColumnDefinition rootPathCol = new CmsListExplorerColumn(LIST_COLUMN_ROOT_PATH);
rootPathCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_NAME_0));
rootPathCol.setVisible(false);
rootPathCol.setPrintable(true);
metadata.addColumn(rootPathCol);
// position 5: title
CmsListColumnDefinition titleCol = new CmsListExplorerColumn(LIST_COLUMN_TITLE);
titleCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_TITLE_0));
metadata.addColumn(titleCol);
// position 6: resource type
CmsListColumnDefinition typeCol = new CmsListExplorerColumn(LIST_COLUMN_TYPE);
typeCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_TYPE_0));
metadata.addColumn(typeCol);
// position 7: size
CmsListColumnDefinition sizeCol = new CmsListExplorerColumn(LIST_COLUMN_SIZE);
sizeCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_SIZE_0));
metadata.addColumn(sizeCol);
// position 8: permissions
CmsListColumnDefinition permissionsCol = new CmsListExplorerColumn(LIST_COLUMN_PERMISSIONS);
permissionsCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_PERMISSIONS_0));
metadata.addColumn(permissionsCol);
// position 9: date of last modification
CmsListColumnDefinition dateLastModCol = new CmsListExplorerColumn(LIST_COLUMN_DATELASTMOD);
dateLastModCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_DATELASTMODIFIED_0));
dateLastModCol.setFormatter(CmsListDateMacroFormatter.getDefaultDateFormatter());
metadata.addColumn(dateLastModCol);
// position 10: user who last modified the resource
CmsListColumnDefinition userLastModCol = new CmsListExplorerColumn(LIST_COLUMN_USERLASTMOD);
userLastModCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_USERLASTMODIFIED_0));
metadata.addColumn(userLastModCol);
// position 11: date of creation
CmsListColumnDefinition dateCreateCol = new CmsListExplorerColumn(LIST_COLUMN_DATECREATE);
dateCreateCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_DATECREATED_0));
dateCreateCol.setFormatter(CmsListDateMacroFormatter.getDefaultDateFormatter());
metadata.addColumn(dateCreateCol);
// position 12: user who created the resource
CmsListColumnDefinition userCreateCol = new CmsListExplorerColumn(LIST_COLUMN_USERCREATE);
userCreateCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_USERCREATED_0));
metadata.addColumn(userCreateCol);
// position 13: date of release
CmsListColumnDefinition dateReleaseCol = new CmsListExplorerColumn(LIST_COLUMN_DATEREL);
dateReleaseCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_DATERELEASED_0));
dateReleaseCol.setFormatter(new CmsListDateMacroFormatter(
Messages.get().container(Messages.GUI_LIST_DATE_FORMAT_1),
new CmsMessageContainer(null, CmsTouch.DEFAULT_DATE_STRING),
CmsResource.DATE_RELEASED_DEFAULT));
metadata.addColumn(dateReleaseCol);
// position 14: date of expiration
CmsListColumnDefinition dateExpirationCol = new CmsListExplorerColumn(LIST_COLUMN_DATEEXP);
dateExpirationCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_DATEEXPIRED_0));
dateExpirationCol.setFormatter(new CmsListDateMacroFormatter(
Messages.get().container(Messages.GUI_LIST_DATE_FORMAT_1),
new CmsMessageContainer(null, CmsTouch.DEFAULT_DATE_STRING),
CmsResource.DATE_EXPIRED_DEFAULT));
metadata.addColumn(dateExpirationCol);
// position 15: state (changed, unchanged, new, deleted)
CmsListColumnDefinition stateCol = new CmsListExplorerColumn(LIST_COLUMN_STATE);
stateCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_STATE_0));
metadata.addColumn(stateCol);
// position 16: locked by
CmsListColumnDefinition lockedByCol = new CmsListExplorerColumn(LIST_COLUMN_LOCKEDBY);
lockedByCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_INPUT_LOCKEDBY_0));
metadata.addColumn(lockedByCol);
// position 17: site
CmsListColumnDefinition siteCol = new CmsListExplorerColumn(LIST_COLUMN_SITE);
siteCol.setName(org.opencms.workplace.explorer.Messages.get().container(
org.opencms.workplace.explorer.Messages.GUI_LABEL_SITE_0));
metadata.addColumn(siteCol);
}
/**
* Sets the default column visibility flags from the user preferences.<p>
*/
protected void setColumnVisibilities() {
m_colVisibilities = new HashMap<Integer, Boolean>(16);
// set explorer configurable column visibilities
int preferences = new CmsUserSettings(getCms()).getExplorerSettings();
setColumnVisibility(CmsUserSettings.FILELIST_TITLE, preferences);
setColumnVisibility(CmsUserSettings.FILELIST_TYPE, preferences);
setColumnVisibility(CmsUserSettings.FILELIST_SIZE, preferences);
setColumnVisibility(CmsUserSettings.FILELIST_PERMISSIONS, preferences);
setColumnVisibility(CmsUserSettings.FILELIST_DATE_LASTMODIFIED, preferences);
setColumnVisibility(CmsUserSettings.FILELIST_USER_LASTMODIFIED, preferences);
setColumnVisibility(CmsUserSettings.FILELIST_DATE_CREATED, preferences);
setColumnVisibility(CmsUserSettings.FILELIST_USER_CREATED, preferences);
setColumnVisibility(CmsUserSettings.FILELIST_DATE_RELEASED, preferences);
setColumnVisibility(CmsUserSettings.FILELIST_DATE_EXPIRED, preferences);
setColumnVisibility(CmsUserSettings.FILELIST_STATE, preferences);
setColumnVisibility(CmsUserSettings.FILELIST_LOCKEDBY, preferences);
// set explorer no configurable column visibilities
m_colVisibilities.put(new Integer(LIST_COLUMN_TYPEICON.hashCode()), Boolean.TRUE);
m_colVisibilities.put(new Integer(LIST_COLUMN_LOCKICON.hashCode()), Boolean.TRUE);
m_colVisibilities.put(new Integer(LIST_COLUMN_PROJSTATEICON.hashCode()), Boolean.TRUE);
m_colVisibilities.put(new Integer(LIST_COLUMN_NAME.hashCode()), Boolean.TRUE);
m_colVisibilities.put(new Integer(LIST_COLUMN_EDIT.hashCode()), Boolean.FALSE);
m_colVisibilities.put(
new Integer(LIST_COLUMN_SITE.hashCode()),
Boolean.valueOf(OpenCms.getSiteManager().getSites().size() > 1));
}
/**
* Sets the given column visibility flag from the given preferences.<p>
*
* @param colFlag the flag that identifies the column to set the flag for
* @param prefs the user preferences
*/
protected void setColumnVisibility(int colFlag, int prefs) {
Integer key = new Integer(colFlag);
Boolean value = Boolean.valueOf((prefs & colFlag) > 0);
m_colVisibilities.put(key, value);
}
/**
* Sets the colVisibilities map.<p>
*
* @param colVisibilities the colVisibilities map to set
*/
protected void setColVisibilities(Map<Integer, Boolean> colVisibilities) {
m_colVisibilities = colVisibilities;
}
/**
* @see org.opencms.workplace.list.A_CmsListDialog#setIndependentActions(org.opencms.workplace.list.CmsListMetadata)
*/
@Override
protected void setIndependentActions(CmsListMetadata metadata) {
metadata.addIndependentAction(CmsListIndependentAction.getDefaultExplorerSwitchAction());
}
/**
* Returns the show explorer flag.<p>
*
* @return the show explorer flag
*/
private boolean getShowExplorer() {
if (getParamShowexplorer() != null) {
return Boolean.valueOf(getParamShowexplorer()).booleanValue();
}
Map<?, ?> dialogObject = (Map<?, ?>)getSettings().getDialogObject();
if (dialogObject == null) {
return false;
}
Boolean storedParam = (Boolean)dialogObject.get(getClass().getName());
if (storedParam == null) {
return false;
}
return storedParam.booleanValue();
}
/**
* Sets the show explorer flag.<p>
*
* @param showExplorer the show explorer flag
*/
@SuppressWarnings({"rawtypes", "unchecked"})
private void setShowExplorer(boolean showExplorer) {
Map dialogMap = (Map)getSettings().getDialogObject();
if (dialogMap == null) {
dialogMap = new HashMap();
getSettings().setDialogObject(dialogMap);
}
dialogMap.put(getClass().getName(), Boolean.valueOf(showExplorer));
}
}