/* * 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.admin.drives; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.MissingResourceException; import org.exoplatform.services.cms.drives.DriveData; import org.exoplatform.services.cms.views.ManageViewService; import org.exoplatform.services.cms.views.ViewConfig; import org.exoplatform.web.application.ApplicationMessage; import org.exoplatform.webui.application.WebuiRequestContext; import org.exoplatform.webui.exception.MessageException; import org.exoplatform.webui.form.UIFormInputSet; import org.exoplatform.webui.form.input.UICheckBoxInput; /** * Created by The eXo Platform SARL * Author : Tran The Trong * trongtt@gmail.com * Jun 28, 2006 */ public class UIViewsInputSet extends UIFormInputSet { public UIViewsInputSet(String name) throws Exception { super(name); } public String getViewsSelected() throws Exception { StringBuilder selectedView = new StringBuilder() ; List<ViewConfig> views_ = getApplicationComponent(ManageViewService.class).getAllViews(); for(ViewConfig view : views_){ String viewName= view.getName() ; boolean checked = getUICheckBoxInput(viewName).isChecked() ; if(checked){ if(selectedView.length() > 0) selectedView.append(", ") ; selectedView.append(viewName) ; } } if(selectedView.length() < 1 ) { throw new MessageException(new ApplicationMessage("UIDriveForm.msg.drive-views-invalid", null, ApplicationMessage.WARNING)) ; } return selectedView.toString() ; } private void clear() throws Exception { List<ViewConfig> views_ = getApplicationComponent(ManageViewService.class).getAllViews(); Collections.sort(views_, new ViewComparator()); for(ViewConfig view : views_){ String viewName = view.getName() ; if(getUICheckBoxInput(viewName) != null) { getUICheckBoxInput(viewName).setChecked(false) ; }else{ addUIFormInput(new UICheckBoxInput(viewName, viewName, null)) ; } } } static public class ViewComparator implements Comparator<ViewConfig> { public int compare(ViewConfig v1, ViewConfig v2) throws ClassCastException { WebuiRequestContext webReqContext = WebuiRequestContext.getCurrentInstance(); String displayName1, displayName2; try { displayName1 = webReqContext.getApplicationResourceBundle().getString("UIDriveForm.label." + v1.getName()); } catch(MissingResourceException mre) { displayName1 = v1.getName(); } try { displayName2 = webReqContext.getApplicationResourceBundle().getString("UIDriveForm.label." + v2.getName()); } catch(MissingResourceException mre) { displayName2 = v2.getName(); } return displayName1.compareToIgnoreCase(displayName2); } } public void update(DriveData drive) throws Exception { clear() ; if( drive == null) return ; String views = drive.getViews() ; String[] array = views.split(",") ; for(String view: array){ getUICheckBoxInput(view.trim()).setChecked(true) ; } } }