View Javadoc
1   /***************************************************************************
2    * Copyright (C) 2003-2009 eXo Platform SAS.
3    *
4    * This program is free software; you can redistribute it and/or
5    * modify it under the terms of the GNU Affero General Public License
6    * as published by the Free Software Foundation; either version 3
7    * of the License, or (at your option) any later version.
8    *
9    * This program is distributed in the hope that it will be useful,
10   * but WITHOUT ANY WARRANTY; without even the implied warranty of
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12   * GNU General Public License for more details.
13   *
14   * You should have received a copy of the GNU General Public License
15   * along with this program; if not, see<http://www.gnu.org/licenses/>.
16   *
17   **************************************************************************/
18  package org.exoplatform.ecm.webui.component.admin.taxonomy;
19  
20  import javax.jcr.RepositoryException;
21  
22  import org.exoplatform.ecm.webui.component.admin.UIECMAdminPortlet;
23  import org.exoplatform.ecm.webui.component.admin.taxonomy.action.UIActionForm;
24  import org.exoplatform.ecm.webui.component.admin.taxonomy.action.UIActionTaxonomyManager;
25  import org.exoplatform.ecm.webui.selector.UIPermissionSelector;
26  import org.exoplatform.ecm.webui.tree.selectone.UIOneNodePathSelector;
27  import org.exoplatform.ecm.webui.utils.Utils;
28  import org.exoplatform.services.cms.impl.DMSConfiguration;
29  import org.exoplatform.services.cms.impl.DMSRepositoryConfiguration;
30  import org.exoplatform.services.jcr.RepositoryService;
31  import org.exoplatform.services.jcr.core.ManageableRepository;
32  import org.exoplatform.services.wcm.utils.WCMCoreUtils;
33  import org.exoplatform.webui.config.annotation.ComponentConfig;
34  import org.exoplatform.webui.core.UIComponent;
35  import org.exoplatform.webui.core.UIPopupWindow;
36  import org.exoplatform.webui.core.lifecycle.UIContainerLifecycle;
37  import org.exoplatform.webui.ext.manager.UIAbstractManager;
38  
39  /**
40   * Created by The eXo Platform SARL
41   * Author : Hoang Van Hung hunghvit@gmail.com
42   * Apr 3, 2009
43   */
44  
45  @ComponentConfig(lifecycle = UIContainerLifecycle.class)
46  public class UITaxonomyManagerTrees extends UIAbstractManager {
47  
48    public UITaxonomyManagerTrees() throws Exception {
49      addChild(UITaxonomyTreeList.class, null, null);
50    }
51  
52    public void initPopupTreeContainer(String id) throws Exception {
53      UITaxonomyTreeContainer uiTaxonomyTreeContainer;
54      UIPopupWindow uiPopup = getChildById(id);
55      if (uiPopup == null) {
56        uiPopup = addChild(UIPopupWindow.class, null, id);
57        uiPopup.setWindowSize(650, 250);      
58        uiTaxonomyTreeContainer = createUIComponent(UITaxonomyTreeContainer.class, null, null);
59      } else {
60        uiTaxonomyTreeContainer = uiPopup.findFirstComponentOfType(UITaxonomyTreeContainer.class);
61        uiPopup.setRendered(true);
62      }
63      uiPopup.setUIComponent(uiTaxonomyTreeContainer);
64      uiPopup.setShow(true);
65      uiPopup.setShowMask(true);
66      uiPopup.setResizable(true);
67    }
68  
69    public void refresh() throws Exception {
70      update();
71    }
72  
73    public void update() throws Exception {
74      UITaxonomyTreeList uiTaxonomyTreeList = getChild(UITaxonomyTreeList.class);
75      uiTaxonomyTreeList.refresh(uiTaxonomyTreeList.getUIPageIterator().getCurrentPage());
76    }
77  
78    public void initPopupPermission(String membership) throws Exception {
79      removePopup();
80      UIPopupWindow uiPopup = addChild(UIPopupWindow.class, null,
81          UITaxonomyTreeContainer.POPUP_PERMISSION);
82      uiPopup.setShowMask(true);
83      uiPopup.setWindowSize(560, 300);
84      UIPermissionSelector uiTaxonomyTreePermission = createUIComponent(UIPermissionSelector.class,
85          null, null);
86      uiTaxonomyTreePermission.setSelectedMembership(true);
87      if (membership != null && membership.indexOf(":/") > -1) {
88        String[] arrMember = membership.split(":/");
89        uiTaxonomyTreePermission.setCurrentPermission("/" + arrMember[1]);
90      }
91      uiPopup.setUIComponent(uiTaxonomyTreePermission);
92      uiPopup.setShow(true);
93    }
94  
95    public String getSystemWorkspaceName() throws RepositoryException {
96      RepositoryService repositoryService = getApplicationComponent(RepositoryService.class);
97      ManageableRepository manageableRepository = repositoryService.getCurrentRepository();
98      return manageableRepository.getConfiguration().getSystemWorkspaceName();
99    }  
100   
101   public String getDmsSystemWorkspaceName() {
102     DMSConfiguration dmsConfiguration = getApplicationComponent(DMSConfiguration.class);
103     DMSRepositoryConfiguration dmsRepoConfig = dmsConfiguration.getConfig();
104     return dmsRepoConfig.getSystemWorkspace();
105   }  
106 
107   public void initPopupJCRBrowser(String workspace, boolean isDisable) throws Exception {
108     removePopup();
109     String repository = getAncestorOfType(UIECMAdminPortlet.class).getPreferenceRepository();
110     UIPopupWindow uiPopup = addChild(UIPopupWindow.class, null, UITaxonomyTreeContainer.POPUP_TAXONOMYHOMEPATH);
111     uiPopup.setShowMask(true);
112     uiPopup.setWindowSize(610, 300);
113     String[] filterType = {Utils.NT_FOLDER, Utils.NT_UNSTRUCTURED};
114     UIOneNodePathSelector uiOneNodePathSelector = createUIComponent(UIOneNodePathSelector.class, null, null);
115     uiOneNodePathSelector.setIsDisable(workspace, isDisable);
116     uiOneNodePathSelector.setShowRootPathSelect(true);
117     uiOneNodePathSelector.setAcceptedNodeTypesInTree(filterType);
118     uiOneNodePathSelector.setAcceptedNodeTypesInPathPanel(filterType);
119     uiOneNodePathSelector.setRootNodeLocation(repository, workspace, "/");
120     if (WCMCoreUtils.isAnonim()) {
121       uiOneNodePathSelector.init(WCMCoreUtils.createAnonimProvider());
122     } else if (workspace.equals(getSystemWorkspaceName())) {
123       uiOneNodePathSelector.init(WCMCoreUtils.getSystemSessionProvider());
124     } else {
125       uiOneNodePathSelector.init(WCMCoreUtils.getSystemSessionProvider());
126     }
127     uiPopup.setUIComponent(uiOneNodePathSelector);
128     UITaxonomyTreeContainer uiTaxonomyTreeContainer = findFirstComponentOfType(UITaxonomyTreeContainer.class);
129     uiOneNodePathSelector.setSourceComponent(uiTaxonomyTreeContainer,
130         new String[] { UITaxonomyTreeMainForm.FIELD_HOMEPATH });
131     uiPopup.setShow(true);
132   }
133 
134   public void initPopupComponent(UIComponent uiComp, String id) throws Exception {
135     removePopup();
136     UIPopupWindow uiPopup = addChild(UIPopupWindow.class, null, id);
137     uiPopup.setShowMask(true);
138     uiPopup.setUIComponent(uiComp);
139     uiPopup.setWindowSize(640, 300);
140     uiPopup.setShow(true);
141     uiPopup.setResizable(true);
142   }
143 
144   private void removePopup() {
145     UIActionTaxonomyManager uiManager = getAncestorOfType(UIActionTaxonomyManager.class);
146     if (uiManager != null) {
147       uiManager.removeChildById(UIActionForm.POPUP_COMPONENT);
148     }
149     
150     removeChildById(UIActionForm.POPUP_COMPONENT);
151     removeChildById(UITaxonomyTreeContainer.POPUP_PERMISSION);
152     removeChildById(UITaxonomyTreeContainer.POPUP_TAXONOMYHOMEPATH);
153   }
154 }