package hep.aida.ref.plotter.style.editor; /* * StylePropertyTableModel.java * * Created on June 13, 2005, 8:00 PM */ import hep.aida.IBaseStyle; import hep.aida.ref.plotter.AbstractStyleParameter; import hep.aida.ref.plotter.BaseStyle; import hep.aida.ref.plotter.RevolvingStyleParameter; import java.awt.Color; import java.awt.Font; import java.util.logging.Logger; import org.freehep.swing.ColorConverter; import com.l2fprod.common.propertysheet.DefaultProperty; /** * * @author The FreeHEP team @ SLAC */ public class StyleProperty extends DefaultProperty { private boolean firstTime = true; private BaseStyle style; private Logger styleLogger; StyleProperty(IBaseStyle style, String parameterName) { super(); this.style = (BaseStyle) style; styleLogger = Logger.getLogger("hep.aida.ref.plotter.style.editor"); init(parameterName); firstTime = false; } // Service methods void init(String parameterName) { setName(parameterName); setEditable(true); readFromObject(style); } public boolean isParameterSet() { return isParameterSet(true); } public boolean isParameterSet(boolean recursive) { boolean ok = false; try { ok = style.isParameterSet(getName(), recursive); } catch (Exception e) { e.printStackTrace(); } return ok; } public String[] getAvailableValues() { return style.availableParameterOptions(getName()); } public AbstractStyleParameter getParameter() { return style.parameter(getName()); } // Overwrite Property methods public void readFromObject(Object object) { String parameterName = getName(); setDisplayName(parameterName); Class t = style.parameter(parameterName).type(); String val = null; if (style.isParameterSet(parameterName, false)) val = style.parameter(parameterName).parValue(); else val = style.parameterValue(parameterName); String def = style.parameter(parameterName).defaultValue(); String[] options = style.availableParameterOptions(parameterName); if (options != null && options.length > 0) { setCategory("preset"); } int ci = -1; int di = -1; Object objValue = new StylePropertyState(ci, val, options, di, def, t); ((StylePropertyState) objValue).setIndex(); styleLogger.fine("StyleProperty.readFromObject: Style="+style.name()+", parameter="+parameterName+", value="+val+", type="+t); if (getParameter() instanceof RevolvingStyleParameter) { setCategory("rotating"); } else if (t == String.class) { setCategory("string"); } else if (t == Color.class) { setCategory("color"); } else if (t == Font.class) { setCategory("font"); } else if (t == Boolean.TYPE) { setCategory("boolean"); objValue = Boolean.valueOf(val); } else if (t == Double.TYPE) { setCategory("double"); } else if (t == Float.TYPE) { setCategory("float"); } else if (t == Integer.TYPE) { setCategory("integer"); } else throw new RuntimeException("**** Unknown type of parameter: name="+parameterName+", type="+t); setType(t); String tmpVal = (objValue == null) ? "null" : objValue.toString(); String tmpClass = (objValue == null) ? "null" : objValue.getClass().getName(); styleLogger.fine("ReadFromObject: "+ tmpVal +", Object="+tmpClass); setValue(objValue); } public void writeToObject(Object object) { styleLogger.fine("StyleProperty.writeToObject: Style="+style.name()+", Object="+object); } public void setValue(Object newValue) { Object oldValue = null; //getValue(); String classString = (newValue == null) ? "null" : newValue.getClass().getName(); styleLogger.fine("StyleProperty.setValue: Style="+style.name()+", parameter="+getName()+", newValue="+newValue+", oldValue="+oldValue+", Class "+classString); //System.out.println("StyleProperty.setValue: Style="+style.name()+", parameter="+getName()+", newValue="+newValue+", oldValue="+oldValue+", Class "+classString); if (!firstTime) fillStyle(newValue); super.setValue(newValue); } void fillStyle(Object newValue) { String parameterName = getName(); Class t = getType(); String[] options = null; String oldString = (newValue == null) ? "null" : newValue.getClass().getName(); String val = null; String def = null; if (newValue == null) val = null; else if (newValue instanceof StylePropertyState) { val = (String) ((StylePropertyState) newValue).currentValue; def = (String) ((StylePropertyState) newValue).defaultValue; options = (String[]) ((StylePropertyState) newValue).values; } else if (newValue instanceof Boolean) val = newValue.toString(); else if (newValue instanceof Color) val = ColorConverter.get((Color) newValue); else if (newValue instanceof Double) val = newValue.toString(); else if (newValue instanceof Integer) val = newValue.toString(); else if (newValue instanceof String) val = (String) newValue; else throw new RuntimeException("Unknown return type of parameter: name="+parameterName+", type="+newValue); String oldValue = style.parameterValue(parameterName); styleLogger.fine("StyleProperty.fillStyle: Style="+style.name()+", parameter="+parameterName+", newValue="+val+", oldValue="+oldValue); //System.out.println("StyleProperty.fillStyle: Style="+style.name()+", parameter="+parameterName+", newValue="+val+", oldValue="+oldValue); style.setParameterDefault(parameterName, def); if (newValue instanceof StylePropertyState) style.setParameter(parameterName, val, options); else style.setParameter(parameterName, val); } }