/* * 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.popup.info; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import javax.jcr.Node; import javax.jcr.PropertyType; import javax.jcr.Value; import javax.jcr.nodetype.NodeType; import javax.jcr.nodetype.PropertyDefinition; import javax.jcr.version.OnParentVersionAction; import org.exoplatform.ecm.webui.component.explorer.UIJCRExplorer; import org.exoplatform.ecm.webui.utils.JCRExceptionManager; import org.exoplatform.services.jcr.core.ExtendedPropertyType; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.config.annotation.EventConfig; import org.exoplatform.webui.core.UIApplication; import org.exoplatform.webui.core.UIContainer; import org.exoplatform.webui.core.UIPopupComponent; import org.exoplatform.webui.event.Event; import org.exoplatform.webui.event.EventListener; /** * Created by The eXo Platform SARL * Author : Tran The Trong * trongtt@gmail.com * July 3, 2006 * 10:07:15 AM * Editor : phan tuan Oct 27, 2006 */ @ComponentConfig( template = "app:/groovy/webui/component/explorer/popup/info/UINodeTypeInfo.gtmpl", events = {@EventConfig(listeners = UINodeTypeInfo.CloseActionListener.class)} ) public class UINodeTypeInfo extends UIContainer implements UIPopupComponent { private static final Log LOG = ExoLogger.getLogger(UINodeTypeInfo.class.getName()); private Collection nodeTypes ; public UINodeTypeInfo() throws Exception {} public void activate() { UIJCRExplorer uiJCRExplorer = getAncestorOfType(UIJCRExplorer.class) ; try { Node node = uiJCRExplorer.getCurrentNode() ; NodeType nodetype = node.getPrimaryNodeType() ; Collection<NodeType> types = new ArrayList<NodeType>() ; types.add(nodetype) ; NodeType[] mixins = node.getMixinNodeTypes() ; if (mixins != null) { List<NodeType> list = Arrays.asList(mixins) ; types.addAll(list) ; } nodeTypes = types ; } catch (Exception e) { UIApplication uiApp = uiJCRExplorer.getAncestorOfType(UIApplication.class) ; try { JCRExceptionManager.process(uiApp, e); } catch (Exception e1) { if (LOG.isErrorEnabled()) { LOG.error("Unexpected error!", e.getMessage()); } } } } public String getPropertyValue(Value value) throws Exception{ switch(value.getType()) { case PropertyType.BINARY: return Integer.toString(PropertyType.BINARY) ; case PropertyType.BOOLEAN :return Boolean.toString(value.getBoolean()) ; case PropertyType.DATE : return value.getDate().getTime().toString() ; case PropertyType.DOUBLE : return Double.toString(value.getDouble()) ; case PropertyType.LONG : return Long.toString(value.getLong()) ; case PropertyType.NAME : return value.getString() ; case PropertyType.STRING : return value.getString() ; } return null ; } public void deActivate() {} public String[] getActions() {return new String[] {"Close"} ;} public String resolveType(int type) { return ExtendedPropertyType.nameFromValue(type) ; } public String resolveOnParentVersion(int opv) { return OnParentVersionAction.nameFromValue(opv) ; } public String getDefaultValue(PropertyDefinition proDef) throws Exception { StringBuilder defaultValue = new StringBuilder() ; Value[] values = proDef.getDefaultValues() ; if(values == null || values.length < 0) return "" ; for(Value value : values) { if(value == null) continue ; if(defaultValue.length() > 0) defaultValue.append(",") ; defaultValue.append(getPropertyValue(value)) ; } return defaultValue.toString() ; } public Collection getNodeTypes() { return nodeTypes ;} static public class CloseActionListener extends EventListener<UINodeTypeInfo> { public void execute(Event<UINodeTypeInfo> event) throws Exception { UIJCRExplorer uiExplorer = event.getSource().getAncestorOfType(UIJCRExplorer.class) ; uiExplorer.cancelAction() ; } } }