1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.exoplatform.ecm.webui.component.explorer;
18
19 import java.util.Collections;
20 import java.util.Comparator;
21 import java.util.List;
22
23 import org.exoplatform.commons.utils.LazyPageList;
24 import org.exoplatform.commons.utils.ListAccess;
25 import org.exoplatform.commons.utils.ListAccessImpl;
26 import org.exoplatform.ecm.webui.form.UIFormInputSetWithAction;
27 import org.exoplatform.ecm.webui.utils.Utils;
28 import org.exoplatform.portal.webui.util.Util;
29 import org.exoplatform.services.cms.drives.DriveData;
30 import org.exoplatform.services.cms.drives.ManageDriveService;
31 import org.exoplatform.webui.config.annotation.ComponentConfig;
32 import org.exoplatform.webui.config.annotation.EventConfig;
33 import org.exoplatform.webui.core.UIComponent;
34 import org.exoplatform.webui.core.UIContainer;
35 import org.exoplatform.webui.core.UIPageIterator;
36 import org.exoplatform.webui.core.UIPopupWindow;
37 import org.exoplatform.webui.event.Event;
38 import org.exoplatform.webui.event.EventListener;
39 import org.exoplatform.webui.form.UIFormSelectBox;
40
41
42
43
44
45
46
47
48 @ComponentConfig(
49 template = "app:/groovy/webui/component/explorer/UIDriveSelector.gtmpl",
50 events = {
51 @EventConfig(listeners = UIDriveSelector.AddDriveActionListener.class),
52 @EventConfig(listeners = UIDriveSelector.CancelActionListener.class)
53 }
54 )
55 public class UIDriveSelector extends UIContainer {
56 private UIPageIterator uiPageIterator_;
57
58 public UIDriveSelector() throws Exception {
59 uiPageIterator_ = addChild(UIPageIterator.class, null, "DriveSelectorList");
60 }
61
62 public UIPageIterator getUIPageIterator() { return uiPageIterator_; }
63
64 public List getListDrive() throws Exception { return uiPageIterator_.getCurrentPageData(); }
65
66 public void updateGrid() throws Exception {
67 ListAccess<DriveData> driveList = new ListAccessImpl<DriveData>(DriveData.class, getDrives());
68 LazyPageList<DriveData> dataPageList = new LazyPageList<DriveData>(driveList, 10);
69 uiPageIterator_.setPageList(dataPageList);
70 }
71
72 public List<DriveData> getDrives() throws Exception {
73 ManageDriveService driveService = getApplicationComponent(ManageDriveService.class) ;
74 List<DriveData> driveList =
75 driveService.getDriveByUserRoles(Util.getPortalRequestContext().getRemoteUser(), Utils.getMemberships());
76 Collections.sort(driveList, new DriveComparator()) ;
77 return driveList ;
78 }
79
80 static public class DriveComparator implements Comparator<DriveData> {
81 public int compare(DriveData d1, DriveData d2) throws ClassCastException {
82 String name1 = d1.getName();
83 String name2 = d2.getName();
84 return name1.compareToIgnoreCase(name2);
85 }
86 }
87
88 static public class CancelActionListener extends EventListener<UIDriveSelector> {
89 public void execute(Event<UIDriveSelector> event) throws Exception {
90 UIDriveSelector driveSelector = event.getSource();
91 UIComponent uiComponent = driveSelector.getParent();
92 if (uiComponent != null) {
93 if (uiComponent instanceof UIPopupWindow) {
94 ((UIPopupWindow)uiComponent).setShow(false);
95 ((UIPopupWindow)uiComponent).setRendered(false);
96 event.getRequestContext().addUIComponentToUpdateByAjax(((UIPopupWindow)uiComponent).getParent());
97 return;
98 }
99 }
100 }
101 }
102
103 static public class AddDriveActionListener extends EventListener<UIDriveSelector> {
104 public void execute(Event<UIDriveSelector> event) throws Exception {
105 String driveName = event.getRequestContext().getRequestParameter(OBJECTID);
106 UIDriveSelector driveSelector = event.getSource();
107 UIJcrExplorerEditContainer editContainer = driveSelector.getAncestorOfType(UIJcrExplorerEditContainer.class);
108 UIJcrExplorerEditForm form = editContainer.getChild(UIJcrExplorerEditForm.class);
109 UIFormInputSetWithAction driveNameInput = form.getChildById("DriveNameInput");
110 driveNameInput.getUIStringInput(UIJCRExplorerPortlet.DRIVE_NAME).setValue(driveName);
111 UIComponent uiComponent = driveSelector.getParent();
112 UIFormSelectBox typeSelectBox = form.getChildById(UIJCRExplorerPortlet.USECASE);
113 if (UIJCRExplorerPortlet.PARAMETERIZE.equals(typeSelectBox.getValue())) {
114 UIFormInputSetWithAction uiParamPathInput = form.getChildById(UIJcrExplorerEditForm.PARAM_PATH_ACTION);
115 uiParamPathInput.setRendered(true);
116 }
117 if (uiComponent != null) {
118 if (uiComponent instanceof UIPopupWindow) {
119 ((UIPopupWindow)uiComponent).setShow(false);
120 ((UIPopupWindow)uiComponent).setRendered(false);
121 event.getRequestContext().addUIComponentToUpdateByAjax(((UIPopupWindow)uiComponent).getParent());
122 return;
123 }
124 }
125 }
126 }
127 }