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()]; Rule[] rules = new Rule[mRulesList.size()];
for (int i = 0, n = rules.length; i < n; i++) 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); mRenderTheme = new RenderTheme(mMapBackground, mBaseTextSize, rules, mLevels);

View File

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