package hep.aida.ref.plotter;
import hep.aida.ILineStyle;
import java.util.Iterator;
import java.util.List;
/**
*
* @author The FreeHEP team @ SLAC.
*
*/
public class LineStyle extends BrushStyle implements ILineStyle {
protected void initializeBaseStyle() {
super.initializeBaseStyle();
String[] lineTypes = { "solid", "dotted", "dashed", "dotdash" };
addParameter( new StringStyleParameter( Style.LINE_TYPE, lineTypes[0], lineTypes) );
addParameter( new RevolvingStyleParameter( Style.LINE_TYPE_ROTATE, lineTypes[0]) );
addParameter( new StringStyleParameter( Style.LINE_TYPE_ROTATE_METHOD, Style.ROTATE_METHOD[1], Style.ROTATE_METHOD ) );
addParameter( new IntegerStyleParameter( Style.LINE_THICKNESS, 2) );
String defaultRotation = lineTypes[0];
for (int i=1; i<lineTypes.length; i++) defaultRotation += ", "+lineTypes[i];
this.setParameterDefault(Style.LINE_TYPE_ROTATE, defaultRotation);
}
public String[] availableLineTypes() {
return availableParameterOptions( Style.LINE_TYPE );
}
public String lineType() {
return ( (StringStyleParameter) deepestSetParameter( Style.LINE_TYPE ) ).value();
}
public String lineType(int globalIndex, int overlayIndex) {
if (isParameterSet(Style.LINE_TYPE, false)) return parameter(Style.LINE_TYPE).parValue();
else if (isParameterSet(Style.LINE_TYPE_ROTATE, false)) {
if (this.parameterValue(Style.LINE_TYPE_ROTATE_METHOD) == Style.ROTATE_METHOD[0]) {
return ((RevolvingStyleParameter) parameter(Style.LINE_TYPE_ROTATE)).parameterValue(globalIndex);
} else {
return ((RevolvingStyleParameter) parameter(Style.LINE_TYPE_ROTATE)).parameterValue(overlayIndex);
}
}
List parents = parentList();
if (parents != null) {
Iterator it = parents.iterator();
while (it.hasNext()) {
LineStyle pbs = null;
Object obj = it.next();
if (obj instanceof LineStyle) pbs = (LineStyle) obj;
else continue;
String tmp = pbs.color(globalIndex, overlayIndex);
if (tmp != null) return tmp;
}
}
return null;
}
public boolean setLineType(String lineType) {
return ( (StringStyleParameter) parameter( Style.LINE_TYPE ) ).setValue( lineType );
}
public boolean setThickness(int lineThickness) {
return ( (IntegerStyleParameter) parameter( Style.LINE_THICKNESS ) ).setValue( lineThickness );
}
public int thickness() {
return ( (IntegerStyleParameter) deepestSetParameter( Style.LINE_THICKNESS ) ).value();
}
}