/* * Copyright (C) 2003-2007 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.explorer; import java.util.Collections; import java.util.Comparator; import java.util.List; import org.exoplatform.commons.utils.LazyPageList; import org.exoplatform.commons.utils.ListAccess; import org.exoplatform.commons.utils.ListAccessImpl; import org.exoplatform.ecm.webui.form.UIFormInputSetWithAction; import org.exoplatform.ecm.webui.utils.Utils; import org.exoplatform.portal.webui.util.Util; import org.exoplatform.services.cms.drives.DriveData; import org.exoplatform.services.cms.drives.ManageDriveService; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.config.annotation.EventConfig; import org.exoplatform.webui.core.UIComponent; import org.exoplatform.webui.core.UIContainer; import org.exoplatform.webui.core.UIPageIterator; import org.exoplatform.webui.core.UIPopupWindow; import org.exoplatform.webui.event.Event; import org.exoplatform.webui.event.EventListener; import org.exoplatform.webui.form.UIFormSelectBox; /** * Created by The eXo Platform SARL * Author : Ly Dinh Quang * quang.ly@exoplatform.com * xxx5669@gmail.com * 10 févr. 09 */ @ComponentConfig( template = "app:/groovy/webui/component/explorer/UIDriveSelector.gtmpl", events = { @EventConfig(listeners = UIDriveSelector.AddDriveActionListener.class), @EventConfig(listeners = UIDriveSelector.CancelActionListener.class) } ) public class UIDriveSelector extends UIContainer { private UIPageIterator uiPageIterator_; public UIDriveSelector() throws Exception { uiPageIterator_ = addChild(UIPageIterator.class, null, "DriveSelectorList"); } public UIPageIterator getUIPageIterator() { return uiPageIterator_; } public List getListDrive() throws Exception { return uiPageIterator_.getCurrentPageData(); } public void updateGrid() throws Exception { ListAccess<DriveData> driveList = new ListAccessImpl<DriveData>(DriveData.class, getDrives()); LazyPageList<DriveData> dataPageList = new LazyPageList<DriveData>(driveList, 10); uiPageIterator_.setPageList(dataPageList); } public List<DriveData> getDrives() throws Exception { ManageDriveService driveService = getApplicationComponent(ManageDriveService.class) ; List<DriveData> driveList = driveService.getDriveByUserRoles(Util.getPortalRequestContext().getRemoteUser(), Utils.getMemberships()); Collections.sort(driveList, new DriveComparator()) ; return driveList ; } static public class DriveComparator implements Comparator<DriveData> { public int compare(DriveData d1, DriveData d2) throws ClassCastException { String name1 = d1.getName(); String name2 = d2.getName(); return name1.compareToIgnoreCase(name2); } } static public class CancelActionListener extends EventListener<UIDriveSelector> { public void execute(Event<UIDriveSelector> event) throws Exception { UIDriveSelector driveSelector = event.getSource(); UIComponent uiComponent = driveSelector.getParent(); if (uiComponent != null) { if (uiComponent instanceof UIPopupWindow) { ((UIPopupWindow)uiComponent).setShow(false); ((UIPopupWindow)uiComponent).setRendered(false); event.getRequestContext().addUIComponentToUpdateByAjax(((UIPopupWindow)uiComponent).getParent()); return; } } } } static public class AddDriveActionListener extends EventListener<UIDriveSelector> { public void execute(Event<UIDriveSelector> event) throws Exception { String driveName = event.getRequestContext().getRequestParameter(OBJECTID); UIDriveSelector driveSelector = event.getSource(); UIJcrExplorerEditContainer editContainer = driveSelector.getAncestorOfType(UIJcrExplorerEditContainer.class); UIJcrExplorerEditForm form = editContainer.getChild(UIJcrExplorerEditForm.class); UIFormInputSetWithAction driveNameInput = form.getChildById("DriveNameInput"); driveNameInput.getUIStringInput(UIJCRExplorerPortlet.DRIVE_NAME).setValue(driveName); UIComponent uiComponent = driveSelector.getParent(); UIFormSelectBox typeSelectBox = form.getChildById(UIJCRExplorerPortlet.USECASE); if (UIJCRExplorerPortlet.PARAMETERIZE.equals(typeSelectBox.getValue())) { UIFormInputSetWithAction uiParamPathInput = form.getChildById(UIJcrExplorerEditForm.PARAM_PATH_ACTION); uiParamPathInput.setRendered(true); } if (uiComponent != null) { if (uiComponent instanceof UIPopupWindow) { ((UIPopupWindow)uiComponent).setShow(false); ((UIPopupWindow)uiComponent).setRendered(false); event.getRequestContext().addUIComponentToUpdateByAjax(((UIPopupWindow)uiComponent).getParent()); return; } } } } }