package qls.ast.visitor.widgetbinder; import java.util.HashMap; import java.util.Map; import ql.ast.QLType; import ql.ast.type.QLBoolean; import ql.ast.type.QLFloat; import ql.ast.type.QLInteger; import ql.ast.type.QLMoney; import ql.ast.type.QLString; import ql.value.StringValue; import qls.ast.statement.widget.styling.StyleProperties; import qls.gui.widget.InputWidget; import qls.gui.widget.input.Radio; import qls.gui.widget.input.field.TextField; import qls.gui.widget.input.spinbox.FloatSpinbox; import qls.gui.widget.input.spinbox.IntegerSpinbox; import qls.gui.widget.input.spinbox.MoneySpinbox; public class DefaultWidgetEnvironment { private Map<QLType, InputWidget<?>> environment; private DefaultWidgetEnvironment parentEnvironment; public DefaultWidgetEnvironment() { environment = new HashMap<QLType, InputWidget<?>>(); environment.put(new QLBoolean(), new Radio(new StringValue("Yes"), new StringValue("No"))); environment.put(new QLFloat(), new FloatSpinbox()); environment.put(new QLInteger(), new IntegerSpinbox()); environment.put(new QLMoney(), new MoneySpinbox()); environment.put(new QLString(), new TextField()); } public DefaultWidgetEnvironment(DefaultWidgetEnvironment parent) { environment = new HashMap<QLType, InputWidget<?>>(); parentEnvironment = parent; } public void store(QLType type, InputWidget<?> widgetInstance) { environment.put(type, widgetInstance); } public void storeDefaultStyle(QLType type, StyleProperties properties) { InputWidget<?> widget = environment.get(type); widget.setStyle(properties); environment.put(type, widget); } public InputWidget<?> resolve(QLType type) { InputWidget<?> widget = environment.get(type); if(widget == null && parentEnvironment != null) { widget = parentEnvironment.resolve(type); } return widget; } public DefaultWidgetEnvironment getParent() { if(parentEnvironment == null) { return this; } return parentEnvironment; } }