/* ***************************************************************************** * JFire - it's hot - Free ERP System - http://jfire.org * * Copyright (C) 2004-2005 NightLabs - http://NightLabs.org * * * * This library 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 library 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 library; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, * * Boston, MA 02110-1301 USA * * * * Or get it online : * * http://www.gnu.org/copyleft/lesser.html * * * * * ******************************************************************************/ package org.nightlabs.jfire.scripting.editor2d.ui.model; import java.util.Collection; import java.util.Map; import java.util.Set; import org.apache.log4j.Logger; import org.eclipse.ui.views.properties.PropertyDescriptor; import org.nightlabs.editor2d.ui.model.AbstractDrawComponentProperty; import org.nightlabs.jfire.scripting.condition.PossibleValueProvider; import org.nightlabs.jfire.scripting.condition.Script; import org.nightlabs.jfire.scripting.condition.ScriptConditioner; import org.nightlabs.jfire.scripting.condition.dao.ScriptConditionerDAO; import org.nightlabs.jfire.scripting.condition.id.ConditionContextProviderID; import org.nightlabs.jfire.scripting.editor2d.ScriptingConstants; import org.nightlabs.jfire.scripting.editor2d.ui.property.ConditionScriptPropertyDescriptor; import org.nightlabs.jfire.scripting.editor2d.ui.resource.Messages; import org.nightlabs.jfire.scripting.editor2d.ui.script.ScriptConditionerContext; import org.nightlabs.jfire.scripting.editor2d.ui.script.ScriptConditionerContextRegistry; import org.nightlabs.jfire.scripting.editor2d.ui.script.ScriptParameterProviderRegistry; import org.nightlabs.jfire.scripting.id.ScriptRegistryItemID; import org.nightlabs.progress.NullProgressMonitor; /** * @author Daniel.Mazurek [at] NightLabs [dot] de * */ public class VisibleScriptProperty extends AbstractDrawComponentProperty { private static final Logger logger = Logger.getLogger(VisibleScriptProperty.class); public static final String CATEGORY_SCRIPT = Messages.getString("org.nightlabs.jfire.scripting.editor2d.ui.model.VisibleScriptProperty.category.script"); //$NON-NLS-1$ private Collection<ScriptConditioner> scriptConditioner; public String getID() { return ScriptingConstants.PROP_VISIBLE_SCRIPT; } protected Collection<ScriptConditioner> getScriptConditioner() { if (scriptConditioner == null) { // TODO should be asynchron fetched at editor start ScriptConditionerContext context = ScriptConditionerContextRegistry.sharedInstance().getScriptConditionerContext( getDrawComponent().getRoot().getClass().getName()); Set<ScriptRegistryItemID> scriptIDs = ScriptConditionerDAO.sharedInstance().getConditionContextScriptIDs( ConditionContextProviderID.create( context.getOrganisationID(), context.getConditionContextProviderID()), new NullProgressMonitor()); Map<ScriptRegistryItemID, Map<String, Object>> scriptID2ParameterValues = ScriptParameterProviderRegistry.sharedInstance().getParameterValues(scriptIDs); Map<ScriptRegistryItemID, ScriptConditioner> scriptID2ScriptConditioner = ScriptConditionerDAO.sharedInstance().getScriptConditioners( scriptID2ParameterValues, PossibleValueProvider.LIMIT_UNLIMITED, new NullProgressMonitor()); scriptConditioner = scriptID2ScriptConditioner.values(); } return scriptConditioner; } public PropertyDescriptor getPropertyDescriptor() { Collection<ScriptConditioner> scriptConditioner = getScriptConditioner(); PropertyDescriptor desc = new ConditionScriptPropertyDescriptor(getID(), Messages.getString("org.nightlabs.jfire.scripting.editor2d.ui.model.VisibleScriptProperty.visibleScript"), //$NON-NLS-1$ scriptConditioner); desc.setCategory(CATEGORY_SCRIPT); if (logger.isDebugEnabled()) { for (ScriptConditioner conditioner : scriptConditioner) { logger.debug("conditioner.getPossibleValues().size() = "+conditioner.getPossibleValues().size()); //$NON-NLS-1$ } } return desc; } public Object getPropertyValue() { Script script = (Script) getDrawComponent().getProperties().get(ScriptingConstants.PROP_VISIBLE_SCRIPT); return script; } public void setPropertyValue(Object value) { // Script script = (Script) value; // getDrawComponent().getProperties().put(ScriptingConstants.PROP_VISIBLE_SCRIPT, script); if (value instanceof Script) { Script script = (Script) value; getDrawComponent().getProperties().put(ScriptingConstants.PROP_VISIBLE_SCRIPT, script); } // To workaround not possible returned null values for cellEditors if (value instanceof Number) { getDrawComponent().getProperties().put(ScriptingConstants.PROP_VISIBLE_SCRIPT, null); } } }