/**
* Copyright (C) 2009 eXo Platform SAS.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.exoplatform.portal.webui.page;
import java.util.ArrayList;
import java.util.List;
import org.exoplatform.portal.config.UserPortalConfigService;
import org.exoplatform.portal.config.model.Page;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.config.InitParams;
import org.exoplatform.webui.config.Param;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.ParamConfig;
import org.exoplatform.webui.core.UIDropDownControl;
import org.exoplatform.webui.core.model.SelectItemCategory;
import org.exoplatform.webui.core.model.SelectItemOption;
import org.exoplatform.webui.form.UIFormInputItemSelector;
/**
* Created by The eXo Platform SARL Author : Nguyen Viet Chung nguyenchung136@yahoo.com Aug 10, 2006
*/
@ComponentConfig(template = "system:/groovy/portal/webui/page/UIPageTemplateOptions.gtmpl", initParams = @ParamConfig(name = "PageLayout", value = "system:/WEB-INF/conf/uiconf/portal/webui/page/PageConfigOptions.groovy"))
public class UIPageTemplateOptions extends UIFormInputItemSelector<String> {
private SelectItemOption<String> selectedItemOption_ = null;
public UIPageTemplateOptions(InitParams initParams) throws Exception {
super("UIPageTemplateOptions", null, String.class);
if (initParams == null)
return;
WebuiRequestContext context = WebuiRequestContext.getCurrentInstance();
Param param = initParams.getParam("PageLayout");
categories_ = (List<SelectItemCategory<String>>) param.getFreshObject(context);
selectedItemOption_ = getDefaultItemOption();
List<SelectItemOption<String>> itemOptions = new ArrayList<SelectItemOption<String>>();
for (SelectItemCategory<String> itemCategory : categories_) {
itemOptions.add(new SelectItemOption<String>(itemCategory.getName()));
}
// modify: Dang.Tung
UIDropDownControl uiItemSelector = addChild(UIDropDownControl.class, null, "UIDropDownPageTemp");
uiItemSelector.setOptions(itemOptions);
uiItemSelector.setAction("eXo.webui.UIPageTemplateOptions.selectPageLayout");
// end modify
}
public SelectItemOption<String> getDefaultItemOption() {
SelectItemCategory<String> category = getSelectedCategory();
if (category == null)
return null;
SelectItemOption<String> itemOption = category.getSelectedItemOption();
if (itemOption == null)
return null;
return itemOption;
}
public void setSelectOptionItem(String value) {
boolean found = false;
for (SelectItemCategory<String> category : categories_) {
category.setSelected(false);
if (!found) {
for (SelectItemOption<String> itemOption : category.getSelectItemOptions()) {
if (itemOption.getLabel().equals(value)) {
UIDropDownControl uiItemSelector = findFirstComponentOfType(UIDropDownControl.class);
uiItemSelector.setValue(category.getName());
category.setSelected(true);
selectedItemOption_ = itemOption;
for (SelectItemOption<String> item : category.getSelectItemOptions()) {
item.setSelected(false);
}
itemOption.setSelected(true);
found = true;
}
}
}
}
if (!found) {
selectedItemOption_ = null;
}
}
public SelectItemOption<String> getSelectedItemOption() {
return selectedItemOption_;
}
public void decode(Object input, WebuiRequestContext context) {
if (input == null || String.valueOf(input).length() < 1)
return;
setSelectOptionItem((String) input);
}
public Page createPageFromSelectedOption(String ownerType, String ownerId) throws Exception {
if (selectedItemOption_ == null)
selectedItemOption_ = getDefaultItemOption();
if (selectedItemOption_ == null)
return null;
Object temp = selectedItemOption_.getValue();
if (temp == null)
return null;
UserPortalConfigService configService = getApplicationComponent(UserPortalConfigService.class);
return configService.createPageTemplate(temp.toString(), ownerType, ownerId);
}
}