package hep.aida.ref.plotter;
import hep.aida.ref.AidaUtils;
public class RevolvingStyleParameter extends AbstractStyleParameter {
protected int currentIndex = 0;
protected int defaultIndex = 0;
protected String[] values = null;
protected String[] defaultValues = null;
RevolvingStyleParameter(String name) {
this(name, null);
}
RevolvingStyleParameter(String name, String defaultValue) {
super(name, defaultValue, null);
}
public String[] allowedValues() {
return super.allowedValues();
}
protected boolean setAllowedValues(String[] possibleValues) {
return false;
}
protected boolean isParameterValueSet() {
return super.isParameterValueSet();
}
protected String parameterValue() {
return super.parameterValue();
}
protected void setDefaultValue(String defaultValue) {
if (defaultValue == null || defaultValue.trim().equals("")) {
defaultValues = null;
super.setDefaultValue(null);
} else {
defaultValues = AidaUtils.parseString(defaultValue);
super.setDefaultValue(defaultValue);
}
}
public String defaultValue() {
return super.defaultValue();
}
protected void reset() {
super.reset();
currentIndex = defaultIndex;
}
protected boolean setParameter(String parValue) {
if (parValue == null || parValue.trim().equals("")) {
values = null;
return super.setParameter(null);
} else {
values = AidaUtils.parseString(parValue);
return super.setParameter(parValue);
}
}
protected String parameterValue(int index) {
if (!isParameterValueSet()) return defaultValue(index);
int k = values.length;
index = index % k;
return values[index];
}
protected String defaultValue(int index) {
if (defaultValues == null) return null;
int k = values.length;
index = index % k;
return defaultValues[index];
}
public int getCurrentIndex() { return currentIndex; }
public void setCurrentIndex(int index) {
if (isParameterValueSet()) {
int k = values.length;
index = index % k;
}
currentIndex = index;
}
public void incrementCurrentIndex() {
setCurrentIndex(currentIndex+1);
}
public void incrementDefaultIndex() {
setDefaultIndex(defaultIndex+1);
}
public int getDefaultIndex() { return defaultIndex; }
public void setDefaultIndex(int index) {
if (isParameterValueSet()) {
int k = values.length;
index = index % k;
}
defaultIndex = index;
}
private int indexForValue(String val) {
int index = -1;
if (!isParameterValueSet()) return index;
String[] tmp = allowedValues();
for (int i=0; i<tmp.length; i++) {
if (tmp[i].equals(val)) {
index = i;
break;
}
}
return index;
}
public Class type() {
return RevolvingStyleParameter.class;
}
}