package org.atdl4j.ui.impl; import org.atdl4j.config.Atdl4jConfig; import org.atdl4j.config.Atdl4jOptions; import org.atdl4j.fixatdl.core.IntT; import org.atdl4j.fixatdl.core.LengthT; import org.atdl4j.fixatdl.core.LocalMktDateT; import org.atdl4j.fixatdl.core.MonthYearT; import org.atdl4j.fixatdl.core.MultipleCharValueT; import org.atdl4j.fixatdl.core.MultipleStringValueT; import org.atdl4j.fixatdl.core.NumInGroupT; import org.atdl4j.fixatdl.core.NumericT; import org.atdl4j.fixatdl.core.ParameterT; import org.atdl4j.fixatdl.core.SeqNumT; import org.atdl4j.fixatdl.core.TagNumT; import org.atdl4j.fixatdl.core.UTCDateOnlyT; import org.atdl4j.fixatdl.core.UTCTimeOnlyT; import org.atdl4j.fixatdl.core.UTCTimestampT; import org.atdl4j.fixatdl.layout.CheckBoxListT; import org.atdl4j.fixatdl.layout.CheckBoxT; import org.atdl4j.fixatdl.layout.ClockT; import org.atdl4j.fixatdl.layout.ControlT; import org.atdl4j.fixatdl.layout.DoubleSpinnerT; import org.atdl4j.fixatdl.layout.DropDownListT; import org.atdl4j.fixatdl.layout.EditableDropDownListT; import org.atdl4j.fixatdl.layout.HiddenFieldT; import org.atdl4j.fixatdl.layout.LabelT; import org.atdl4j.fixatdl.layout.MultiSelectListT; import org.atdl4j.fixatdl.layout.RadioButtonListT; import org.atdl4j.fixatdl.layout.RadioButtonT; import org.atdl4j.fixatdl.layout.SingleSelectListT; import org.atdl4j.fixatdl.layout.SingleSpinnerT; import org.atdl4j.fixatdl.layout.SliderT; import org.atdl4j.fixatdl.layout.TextFieldT; import org.atdl4j.ui.Atdl4jWidget; import org.atdl4j.ui.Atdl4jWidgetFactory; /* * Factory that creates the appropriate ParameterUI depending on the parameter * control type and value type. * * Note that all UI widgets in ATDL are strongly typed. * Note that this class does not need a SWT or Swing-specific implementation as it * solely uses: ((Class<Atdl4jWidget>) Class.forName( tempClassName ) ).newInstance() * * @author Scott Atwell */ public class BaseAtdl4jWidgetFactory implements Atdl4jWidgetFactory { private Atdl4jOptions atdl4jOptions; // Invoke init() following no-arg constructor public BaseAtdl4jWidgetFactory() { } public void init(Atdl4jOptions aAtdl4jOptions) { setAtdl4jOptions( aAtdl4jOptions ); } /* * @param control * @param parameter * @return (for SWT returns SWTWidget<?>) */ public Atdl4jWidget<?> create(ControlT control, ParameterT parameter) { if ( control instanceof CheckBoxT ) { return createCheckBoxT( (CheckBoxT) control, parameter ); } else if ( control instanceof DropDownListT ) { return createDropDownListT( (DropDownListT) control, parameter ); } else if ( control instanceof EditableDropDownListT ) { return createEditableDropDownListT( (EditableDropDownListT) control, parameter ); } else if ( control instanceof RadioButtonListT ) { return createRadioButtonListT( (RadioButtonListT) control, parameter ); } else if ( control instanceof TextFieldT ) { return createTextFieldT( (TextFieldT) control, parameter ); } else if ( control instanceof SliderT ) { return createSliderT( (SliderT) control, parameter ); } else if ( control instanceof CheckBoxListT ) { // CheckBoxList must use a multiple value parameter if ( parameter == null || parameter instanceof MultipleStringValueT || parameter instanceof MultipleCharValueT ) { return createCheckBoxListT( (CheckBoxListT) control, parameter ); } } else if ( control instanceof ClockT ) { if ( parameter == null || parameter instanceof LocalMktDateT || parameter instanceof MonthYearT || parameter instanceof UTCDateOnlyT || parameter instanceof UTCTimeOnlyT || parameter instanceof UTCTimestampT ) { return createClockT( (ClockT) control, parameter ); } } else if ( control instanceof SingleSpinnerT ) { // SingleSpinner must use a number parameter if ( parameter == null || parameter instanceof IntT || parameter instanceof TagNumT || parameter instanceof LengthT || parameter instanceof SeqNumT || parameter instanceof NumInGroupT || parameter instanceof NumericT ) { return createSingleSpinnerT( (SingleSpinnerT) control, parameter ); } } else if ( control instanceof DoubleSpinnerT ) { // DoubleSpinner must use a number parameter if ( parameter == null || parameter instanceof IntT || parameter instanceof TagNumT || parameter instanceof LengthT || parameter instanceof SeqNumT || parameter instanceof NumInGroupT || parameter instanceof NumericT ) { return createDoubleSpinnerT( (DoubleSpinnerT) control, parameter ); } } else if ( control instanceof SingleSelectListT ) { return createSingleSelectListT( (SingleSelectListT) control, parameter ); } else if ( control instanceof MultiSelectListT ) { // MultiSelectList must use a multiple value parameter if ( parameter == null || parameter instanceof MultipleStringValueT || parameter instanceof MultipleCharValueT ) { return createMultiSelectListT( (MultiSelectListT) control, parameter ); } } else if ( control instanceof HiddenFieldT ) { return createHiddenFieldT( (HiddenFieldT) control, parameter ); } else if ( control instanceof LabelT ) { return createLabelT( (LabelT) control, parameter ); } else if ( control instanceof RadioButtonT ) { return createRadioButtonT( (RadioButtonT) control, parameter ); } throw new IllegalStateException( "Control ID: \"" + control.getID() + "\" has unsupported Control type \"" + control.getClass().getSimpleName() + "\"" + ( parameter == null ? "" : " for Parameter type \"" + parameter.getClass().getSimpleName() + "\"" ) ); } /** * @param atdl4jOptions the atdl4jOptions to set */ protected void setAtdl4jOptions(Atdl4jOptions atdl4jOptions) { this.atdl4jOptions = atdl4jOptions; } /** * @return the atdl4jOptions */ public Atdl4jOptions getAtdl4jOptions() { return atdl4jOptions; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return * @throws Atdl4jClassLoadException */ public Atdl4jWidget<?> createCheckBoxListT(CheckBoxListT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForCheckBoxListT = Atdl4jConfig.getConfig().createAtdl4jWidgetForCheckBoxListT(); atdl4jWidgetForCheckBoxListT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForCheckBoxListT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return * @throws Atdl4jClassLoadException */ public Atdl4jWidget<?> createCheckBoxT(CheckBoxT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForCheckBoxT = Atdl4jConfig.getConfig().createAtdl4jWidgetForCheckBoxT(); atdl4jWidgetForCheckBoxT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForCheckBoxT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return * @throws Atdl4jClassLoadException */ public Atdl4jWidget<?> createClockT(ClockT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForClockT = Atdl4jConfig.getConfig().createAtdl4jWidgetForClockT(); atdl4jWidgetForClockT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForClockT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return * @throws Atdl4jClassLoadException */ public Atdl4jWidget<?> createDoubleSpinnerT(DoubleSpinnerT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForDoubleSpinnerT = Atdl4jConfig.getConfig().createAtdl4jWidgetForDoubleSpinnerT(); atdl4jWidgetForDoubleSpinnerT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForDoubleSpinnerT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return * @throws Atdl4jClassLoadException */ public Atdl4jWidget<?> createDropDownListT(DropDownListT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForDropDownListT = Atdl4jConfig.getConfig().createAtdl4jWidgetForDropDownListT(); atdl4jWidgetForDropDownListT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForDropDownListT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return */ public Atdl4jWidget<?> createEditableDropDownListT(EditableDropDownListT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForEditableDropDownListT = Atdl4jConfig.getConfig().createAtdl4jWidgetForEditableDropDownListT(); atdl4jWidgetForEditableDropDownListT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForEditableDropDownListT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return */ public Atdl4jWidget<?> createHiddenFieldT(HiddenFieldT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForHiddenFieldT = Atdl4jConfig.getConfig().createAtdl4jWidgetForHiddenFieldT(); atdl4jWidgetForHiddenFieldT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForHiddenFieldT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return */ public Atdl4jWidget<?> createLabelT(LabelT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForLabelT = Atdl4jConfig.getConfig().createAtdl4jWidgetForLabelT(); atdl4jWidgetForLabelT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForLabelT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return */ public Atdl4jWidget<?> createMultiSelectListT(MultiSelectListT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForMultiSelectListT = Atdl4jConfig.getConfig().createAtdl4jWidgetForMultiSelectListT(); atdl4jWidgetForMultiSelectListT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForMultiSelectListT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return */ public Atdl4jWidget<?> createRadioButtonListT(RadioButtonListT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForRadioButtonListT = Atdl4jConfig.getConfig().createAtdl4jWidgetForRadioButtonListT(); atdl4jWidgetForRadioButtonListT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForRadioButtonListT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return */ public Atdl4jWidget<?> createRadioButtonT(RadioButtonT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForRadioButtonT = Atdl4jConfig.getConfig().createAtdl4jWidgetForRadioButtonT(); atdl4jWidgetForRadioButtonT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForRadioButtonT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return */ public Atdl4jWidget<?> createSingleSelectListT(SingleSelectListT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForSingleSelectListT = Atdl4jConfig.getConfig().createAtdl4jWidgetForSingleSelectListT(); atdl4jWidgetForSingleSelectListT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForSingleSelectListT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return */ public Atdl4jWidget<?> createSingleSpinnerT(SingleSpinnerT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForSingleSpinnerT = Atdl4jConfig.getConfig().createAtdl4jWidgetForSingleSpinnerT(); atdl4jWidgetForSingleSpinnerT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForSingleSpinnerT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return */ public Atdl4jWidget<?> createSliderT(SliderT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForSliderT = Atdl4jConfig.getConfig().createAtdl4jWidgetForSliderT(); atdl4jWidgetForSliderT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForSliderT; } /** * Constructs a new instance every call. * * @param control * @param parameter * @return */ public Atdl4jWidget<?> createTextFieldT(TextFieldT control, ParameterT parameter) { Atdl4jWidget<?> atdl4jWidgetForTextFieldT = Atdl4jConfig.getConfig().createAtdl4jWidgetForTextFieldT(); atdl4jWidgetForTextFieldT.init( control, parameter, getAtdl4jOptions() ); return atdl4jWidgetForTextFieldT; } }