1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.exoplatform.ecm.webui.tree.selectone;
18
19 import javax.jcr.Node;
20 import javax.jcr.RepositoryException;
21
22 import org.exoplatform.ecm.webui.selector.UISelectable;
23 import org.exoplatform.ecm.webui.tree.UIBaseNodeTreeSelector;
24 import org.exoplatform.services.cms.BasePath;
25 import org.exoplatform.services.jcr.ext.hierarchy.NodeHierarchyCreator;
26 import org.exoplatform.webui.config.annotation.ComponentConfig;
27 import org.exoplatform.webui.config.annotation.EventConfig;
28 import org.exoplatform.webui.core.UIComponent;
29 import org.exoplatform.webui.core.UIContainer;
30 import org.exoplatform.webui.core.UIPageIterator;
31 import org.exoplatform.webui.core.UIPopupWindow;
32 import org.exoplatform.webui.event.Event;
33 import org.exoplatform.webui.event.EventListener;
34
35
36
37
38
39
40
41
42 @ComponentConfig(
43 template = "classpath:groovy/ecm/webui/tree/selectone/UISelectPathPanel.gtmpl",
44 events = {
45 @EventConfig(listeners = UISelectTaxonomyPanel.SelectActionListener.class)
46 }
47 )
48 public class UISelectTaxonomyPanel extends UISelectPathPanel {
49 private UIPageIterator uiPageIterator_ = null;
50 private static String TAXONOMY_TREE = "taxonomyTree";
51 private String taxonomyTreePath = "";
52
53 public String getTaxonomyTreePath() {
54 return taxonomyTreePath;
55 }
56
57 public void setTaxonomyTreePath(String taxonomyTreePath) {
58 this.taxonomyTreePath = taxonomyTreePath;
59 }
60
61 public UISelectTaxonomyPanel() throws Exception {
62 this.uiPageIterator_ = addChild(UIPageIterator.class, null, "UISelectPathIterate");
63 }
64
65 public String getPathTaxonomy() throws Exception {
66 NodeHierarchyCreator nodeHierarchyCreator = getApplicationComponent(NodeHierarchyCreator.class);
67 return nodeHierarchyCreator.getJcrPath(BasePath.TAXONOMIES_TREE_STORAGE_PATH);
68 }
69
70 public String getDisplayName(Node node) throws RepositoryException {
71 return getAncestorOfType(UIOneTaxonomySelector.class).getTaxonomyLabel(node);
72 }
73
74 static public class SelectActionListener extends EventListener<UISelectTaxonomyPanel> {
75 public void execute(Event<UISelectTaxonomyPanel> event) throws Exception {
76 UISelectTaxonomyPanel uiSelectPathPanel = event.getSource();
77 UIOneTaxonomySelector uiTaxonomySelector = uiSelectPathPanel.getParent();
78 UITreeTaxonomyList uiTreeList = uiTaxonomySelector.getChild(UITreeTaxonomyList.class);
79 UIContainer uiTreeSelector = uiSelectPathPanel.getParent();
80 String value = event.getRequestContext().getRequestParameter(OBJECTID);
81 String taxoTreeName = uiTreeList.getUIFormSelectBox(TAXONOMY_TREE).getValue();
82 Node taxoTreeNode = uiTaxonomySelector.getTaxoTreeNode(taxoTreeName);
83 String taxoTreePath = taxoTreeNode.getPath();
84 value = value.replace(taxoTreePath, taxoTreeName);
85
86 if (uiTreeSelector instanceof UIOneNodePathSelector) {
87 if (!((UIOneNodePathSelector) uiTreeSelector).isDisable()) {
88 StringBuffer sb = new StringBuffer();
89 sb.append(((UIOneNodePathSelector) uiTreeSelector).getWorkspaceName())
90 .append(":")
91 .append(value);
92 value = sb.toString();
93 }
94 }
95
96 String returnField = ((UIBaseNodeTreeSelector)uiTreeSelector).getReturnFieldName();
97 ((UISelectable)((UIBaseNodeTreeSelector)uiTreeSelector).getSourceComponent()).doSelect(returnField, value) ;
98
99 if (uiTreeSelector instanceof UIOneNodePathSelector) {
100 UIPopupWindow uiPopupWindow = uiTreeSelector.getAncestorOfType(UIPopupWindow.class);
101 if (uiPopupWindow != null) {
102 uiPopupWindow.setShow(false);
103 uiPopupWindow.setRendered(false);
104 event.getRequestContext().addUIComponentToUpdateByAjax(uiPopupWindow);
105 }
106 UIComponent component = ((UIOneNodePathSelector) uiTreeSelector).getSourceComponent().getParent();
107 if (component != null) {
108 event.getRequestContext().addUIComponentToUpdateByAjax(component);
109 return;
110 }
111 }
112 if (uiTreeSelector instanceof UIOneTaxonomySelector) {
113 UIPopupWindow uiPopupWindow = uiTreeSelector.getAncestorOfType(UIPopupWindow.class);
114 UIComponent parentOfUITreeSelector = uiTreeSelector.getParent();
115 if ((parentOfUITreeSelector instanceof UIPopupWindow)
116 || (uiPopupWindow != null && ((UIContainer)parentOfUITreeSelector).getChildren().size() == 1)) {
117 uiPopupWindow.setShow(false);
118 uiPopupWindow.setRendered(false);
119 event.getRequestContext().addUIComponentToUpdateByAjax(uiPopupWindow);
120 }
121 UIComponent component = ((UIOneTaxonomySelector) uiTreeSelector).getSourceComponent().getParent();
122 if (component != null) {
123 event.getRequestContext().addUIComponentToUpdateByAjax(component);
124 }
125 }
126 }
127 }
128 }