...
Code Block |
---|
public interface IStyleRule { // Possible types of Style Rules static int CLASS = 0; // Class of the object: hep.aida.IHistogram1D static int PATH = 1; // Position of the object in a Tree static int ORDER = 2; // Order in the IPlotterRegion: specific number, or cyclical static int ATTRIBUTE = 3; // Arbitrary "key=value" pair, evalyated by the Rule // From AIDA object's annotation any entry with "plotterState." prefix in key // will be stripped of this prefix and put into PlotterState with ATTRIBUTE // type before obtaining Style from the StyleRegistry static int ACTION = 4; // What is going to happen with the object: plotting, printing static int CATEGORY = 5; // "experiment=GLAST", "quality=preliminary" // ACTION seems like a sub-type of CATEGORY: "printing=true" // Operations that chain rules together static int AND = 0; static int OR = 1; int getType(); /*\* * * Priority determines the order in which corresponding IPlotterStyle * should be used when assembling the cumulative IPlotterStyle \*/ int getPriority(); String getDescription(); void addRule(IStyleRule rule, int operation); /*\* * Determines if this rule should be used. * * If type=CATEGORY, same rule as for AIDA options should be applied: * have to pass "key=value" pair as value, for only "key" \-> "key=true", \*/ boolean ruleApplies(int type, String value); /*\* * Or maybe it is better to hide this type/"key=value" complexity and do this: \*/ */ int getPriority(); String getDescription(); void addRule(IStyleRule rule, int operation); boolean ruleApplies(IPlotterState state); } |
...
IPlotterState interface:
Code Block |
---|
/*\* \* This object encapsulates information about relevant \ * IPlotterRegion, object, and actions. \ * It is used for obtaining implicit IPlotterStyle */ public interface IPlotterState { // IStyleRule types are used here String getValueForType(int styleRuleType); } |