package hep.aida.ref.plotter.style.editor; import java.awt.Color; import org.freehep.swing.ColorConverter; public class StylePropertyState { Class type = null; int currentIndex = -1; int defaultIndex = -1; Object currentValue = null; Object defaultValue = null; Object[] values = null; StylePropertyState() {} StylePropertyState(Object cv, Object[] st) { currentValue = cv; values = st; setIndex(); } StylePropertyState(int ci, Object cv, Object[] st) { this(ci, cv, st, -1, null); } StylePropertyState(int ci, Object cv, Object[] st, int di, Object dv) { this(ci, cv, st, di, dv, null); } StylePropertyState(int ci, Object cv, Object[] st, int di, Object dv, Class t) { type = t; currentIndex = ci; defaultIndex = di; currentValue = cv; defaultValue = dv; values = st; } StylePropertyState(StylePropertyState state) { type = state.type; currentIndex = state.currentIndex; defaultIndex = state.defaultIndex; currentValue = state.currentValue; defaultValue = state.defaultValue; values = state.values; } void setIndex() { int ci = -1; int di = -1; if (values != null && values.length > 0) { for (int i=0; i<values.length; i++) { if (currentValue != null && currentValue == values[i]) { ci = i; } if (defaultValue != null && defaultValue == values[i]) { di = i; } } } currentIndex = ci; defaultIndex = di; } public void clear() { type = null; currentIndex = -1; defaultIndex = -1; currentValue = null; defaultValue = null; values = null; } public boolean equals(Object state) { if (state == null) return false; else if (this == state) return true; else if (state instanceof StylePropertyState) return toString(true).equals(((StylePropertyState) state).toString(true)); else return false; } public String toString() { return toString(false); } public String toString(boolean detailed) { String tmp = ""; if (!detailed) { Object obj = currentValue; if (currentValue == null && defaultValue != null) obj = defaultValue; if (obj instanceof String) tmp = (String) obj; else if (obj instanceof Color) tmp = ColorConverter.get((Color) obj); else if (obj != null) tmp = obj.toString(); return tmp; } tmp += "StylePropertyState: type="+type+"\n"; tmp += "\tCurrentIndex="+currentIndex+"\t DefaultIndex="+defaultIndex+"\n"; tmp += "\tCurrentValue="+currentValue+"\t DefaultValue="+defaultValue+"\n"; if (values == null || values.length == 0) tmp += "\t\tValue is Empty\n"; else for (int i=0; i<values.length; i++) tmp += "\t\tValue "+i+"\t"+values[i]+"\n"; return tmp; } }