/*************************************************************************** * Copyright (C) 2003-2009 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. * **************************************************************************/ package org.exoplatform.ecm.webui.component.admin.taxonomy; import javax.jcr.RepositoryException; import org.exoplatform.ecm.webui.component.admin.UIECMAdminPortlet; import org.exoplatform.ecm.webui.component.admin.taxonomy.action.UIActionForm; import org.exoplatform.ecm.webui.component.admin.taxonomy.action.UIActionTaxonomyManager; import org.exoplatform.ecm.webui.selector.UIPermissionSelector; import org.exoplatform.ecm.webui.tree.selectone.UIOneNodePathSelector; import org.exoplatform.ecm.webui.utils.Utils; import org.exoplatform.services.cms.impl.DMSConfiguration; import org.exoplatform.services.cms.impl.DMSRepositoryConfiguration; import org.exoplatform.services.jcr.RepositoryService; import org.exoplatform.services.jcr.core.ManageableRepository; import org.exoplatform.services.wcm.utils.WCMCoreUtils; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.core.UIComponent; import org.exoplatform.webui.core.UIPopupWindow; import org.exoplatform.webui.core.lifecycle.UIContainerLifecycle; import org.exoplatform.webui.ext.manager.UIAbstractManager; /** * Created by The eXo Platform SARL * Author : Hoang Van Hung hunghvit@gmail.com * Apr 3, 2009 */ @ComponentConfig(lifecycle = UIContainerLifecycle.class) public class UITaxonomyManagerTrees extends UIAbstractManager { public UITaxonomyManagerTrees() throws Exception { addChild(UITaxonomyTreeList.class, null, null); } public void initPopupTreeContainer(String id) throws Exception { UITaxonomyTreeContainer uiTaxonomyTreeContainer; UIPopupWindow uiPopup = getChildById(id); if (uiPopup == null) { uiPopup = addChild(UIPopupWindow.class, null, id); uiPopup.setWindowSize(650, 250); uiTaxonomyTreeContainer = createUIComponent(UITaxonomyTreeContainer.class, null, null); } else { uiTaxonomyTreeContainer = uiPopup.findFirstComponentOfType(UITaxonomyTreeContainer.class); uiPopup.setRendered(true); } uiPopup.setUIComponent(uiTaxonomyTreeContainer); uiPopup.setShow(true); uiPopup.setShowMask(true); uiPopup.setResizable(true); } public void refresh() throws Exception { update(); } public void update() throws Exception { UITaxonomyTreeList uiTaxonomyTreeList = getChild(UITaxonomyTreeList.class); uiTaxonomyTreeList.refresh(uiTaxonomyTreeList.getUIPageIterator().getCurrentPage()); } public void initPopupPermission(String membership) throws Exception { removePopup(); UIPopupWindow uiPopup = addChild(UIPopupWindow.class, null, UITaxonomyTreeContainer.POPUP_PERMISSION); uiPopup.setShowMask(true); uiPopup.setWindowSize(560, 300); UIPermissionSelector uiTaxonomyTreePermission = createUIComponent(UIPermissionSelector.class, null, null); uiTaxonomyTreePermission.setSelectedMembership(true); if (membership != null && membership.indexOf(":/") > -1) { String[] arrMember = membership.split(":/"); uiTaxonomyTreePermission.setCurrentPermission("/" + arrMember[1]); } uiPopup.setUIComponent(uiTaxonomyTreePermission); uiPopup.setShow(true); } public String getSystemWorkspaceName() throws RepositoryException { RepositoryService repositoryService = getApplicationComponent(RepositoryService.class); ManageableRepository manageableRepository = repositoryService.getCurrentRepository(); return manageableRepository.getConfiguration().getSystemWorkspaceName(); } public String getDmsSystemWorkspaceName() { DMSConfiguration dmsConfiguration = getApplicationComponent(DMSConfiguration.class); DMSRepositoryConfiguration dmsRepoConfig = dmsConfiguration.getConfig(); return dmsRepoConfig.getSystemWorkspace(); } public void initPopupJCRBrowser(String workspace, boolean isDisable) throws Exception { removePopup(); String repository = getAncestorOfType(UIECMAdminPortlet.class).getPreferenceRepository(); UIPopupWindow uiPopup = addChild(UIPopupWindow.class, null, UITaxonomyTreeContainer.POPUP_TAXONOMYHOMEPATH); uiPopup.setShowMask(true); uiPopup.setWindowSize(610, 300); String[] filterType = {Utils.NT_FOLDER, Utils.NT_UNSTRUCTURED}; UIOneNodePathSelector uiOneNodePathSelector = createUIComponent(UIOneNodePathSelector.class, null, null); uiOneNodePathSelector.setIsDisable(workspace, isDisable); uiOneNodePathSelector.setShowRootPathSelect(true); uiOneNodePathSelector.setAcceptedNodeTypesInTree(filterType); uiOneNodePathSelector.setAcceptedNodeTypesInPathPanel(filterType); uiOneNodePathSelector.setRootNodeLocation(repository, workspace, "/"); if (WCMCoreUtils.isAnonim()) { uiOneNodePathSelector.init(WCMCoreUtils.createAnonimProvider()); } else if (workspace.equals(getSystemWorkspaceName())) { uiOneNodePathSelector.init(WCMCoreUtils.getSystemSessionProvider()); } else { uiOneNodePathSelector.init(WCMCoreUtils.getUserSessionProvider()); } uiPopup.setUIComponent(uiOneNodePathSelector); UITaxonomyTreeContainer uiTaxonomyTreeContainer = findFirstComponentOfType(UITaxonomyTreeContainer.class); uiOneNodePathSelector.setSourceComponent(uiTaxonomyTreeContainer, new String[] { UITaxonomyTreeMainForm.FIELD_HOMEPATH }); uiPopup.setShow(true); } public void initPopupComponent(UIComponent uiComp, String id) throws Exception { removePopup(); UIPopupWindow uiPopup = addChild(UIPopupWindow.class, null, id); uiPopup.setShowMask(true); uiPopup.setUIComponent(uiComp); uiPopup.setWindowSize(640, 300); uiPopup.setShow(true); uiPopup.setResizable(true); } private void removePopup() { UIActionTaxonomyManager uiManager = getAncestorOfType(UIActionTaxonomyManager.class); if (uiManager != null) { uiManager.removeChildById(UIActionForm.POPUP_COMPONENT); } removeChildById(UIActionForm.POPUP_COMPONENT); removeChildById(UITaxonomyTreeContainer.POPUP_PERMISSION); removeChildById(UITaxonomyTreeContainer.POPUP_TAXONOMYHOMEPATH); } }