package qls.ast.statement.widget.styling; import java.util.HashMap; import java.util.Map; import qls.ast.Statement; import qls.ast.statement.widget.styling.property.Color; import qls.ast.statement.widget.styling.property.Font; import qls.ast.statement.widget.styling.property.FontSize; import qls.ast.statement.widget.styling.property.Height; import qls.ast.statement.widget.styling.property.Width; import qls.ast.visitor.StatementVisitor; public class StyleProperties extends Statement { private Map<Property, Property> properties; public StyleProperties() { properties = new HashMap<Property, Property>(); } public StyleProperties(Property property) { this(); setProperty(property); } public StyleProperties(Property property, StyleProperties properties) { this(); this.properties.putAll(properties.getProperties()); setProperty(property); } public void setProperty(Property property) { properties.put(property, property); } public Font getFont() { return (Font) properties.get(new Font(null)); } public FontSize getFontSize() { return (FontSize) properties.get(new FontSize(null)); } public Height getHeight() { return (Height) properties.get(new Height(null)); } public Width getWidth() { return (Width) properties.get(new Width(null)); } public Color getColor() { return (Color) properties.get(new Color(null)); } public Map<Property, Property> getProperties() { return properties; } @Override public <T> T accept(StatementVisitor<T> visitor) { return visitor.visit(this); } @Override public String toString() { StringBuilder sb = new StringBuilder("StyleProperties("); for(Property rule : properties.keySet()) { sb.append(rule.toString() + ", "); } if (properties.size() > 0) { sb.setLength(sb.length() - 2); } sb.append(")"); return sb.toString(); } }