add RuleBuilder setters for Rule- and Style-Builders

This commit is contained in:
Hannes Janetzek 2014-03-31 15:07:00 +02:00
parent 4f254bde75
commit 120797fe96
2 changed files with 21 additions and 11 deletions

View File

@ -155,7 +155,7 @@ public class XmlThemeBuilder extends DefaultHandler {
Rule[] rules = new Rule[mRulesList.size()];
for (int i = 0, n = rules.length; i < n; i++)
rules[i] = mRulesList.get(i).onComplete();
rules[i] = mRulesList.get(i).onComplete(null);
mRenderTheme = new RenderTheme(mMapBackground, mBaseTextSize, rules, mLevels);

View File

@ -36,6 +36,7 @@ public class RuleBuilder {
ArrayList<RenderStyle> renderStyles = new ArrayList<RenderStyle>(4);
ArrayList<RuleBuilder> subRules = new ArrayList<RuleBuilder>(4);
StyleBuilder[] styleBuilder;
private static final String STRING_NEGATION = "~";
private static final String STRING_EXCLUSIVE = "-";
@ -112,11 +113,17 @@ public class RuleBuilder {
return this;
}
public Rule onComplete() {
public Rule onComplete(int[] level) {
RenderStyle[] styles = null;
Rule[] rules = null;
if (styleBuilder != null)
for (StyleBuilder style : styleBuilder) {
renderStyles.add(style.level(level[0]).build());
level[0] += 2;
}
if (renderStyles.size() > 0) {
styles = new RenderStyle[renderStyles.size()];
renderStyles.toArray(styles);
@ -125,7 +132,7 @@ public class RuleBuilder {
if (subRules.size() > 0) {
rules = new Rule[subRules.size()];
for (int i = 0; i < rules.length; i++)
rules[i] = subRules.get(i).onComplete();
rules[i] = subRules.get(i).onComplete(level);
}
int numKeys = keys.length;
@ -163,22 +170,25 @@ public class RuleBuilder {
}
public void addStyle(RenderStyle style) {
public RuleBuilder addStyle(RenderStyle style) {
renderStyles.add(style);
return this;
}
public void addSubRule(RuleBuilder rule) {
public RuleBuilder addSubRule(RuleBuilder rule) {
subRules.add(rule);
return this;
}
RuleBuilder(boolean positive) {
this.positiveRule = positive;
this.element = Element.ANY;
this.zoom = ~0;
public RuleBuilder style(StyleBuilder... styles) {
styleBuilder = styles;
return this;
}
public static RuleBuilder get() {
return new RuleBuilder(true);
public RuleBuilder rules(RuleBuilder... rules) {
for (RuleBuilder rule : rules)
subRules.add(rule);
return this;
}
public RuleBuilder select(int selector) {