to.etc.domui.component.form
Class ControlBuilder

java.lang.Object
  extended by to.etc.domui.component.form.ControlBuilder

public class ControlBuilder
extends java.lang.Object

This singleton, reachable from DomApplication, maintains all metadata control builder lists and contains code to create controls from factories et al.

Author:
Frits Jalvingh Created on Aug 18, 2009

Constructor Summary
ControlBuilder(DomApplication app)
           
 
Method Summary
 void addErrorFragment(NodeContainer nc)
           
 ComboFixed<?> createComboFor(java.lang.Class<?> dataClass, java.lang.String property, boolean editable)
          This creates a ComboFixed for some fixed-size domain property specified by the metamodel.
<T> ComboFixed<T>
createComboFor(java.lang.Class<T> type)
          This creates a ComboFixed for some fixed-size domain class specified by type.
 ComboFixed<?> createComboFor(PropertyMetaModel<?> pmm, boolean editable)
          This creates a ComboFixed for some fixed-size domain property specified by the metamodel.
<T> T
createControl(java.lang.Class<T> controlClass, java.lang.Class<?> dataClass, PropertyMetaModel<?> pmm, boolean editable, java.lang.Object context)
           
<T> T
createControl(java.lang.Class<T> controlClass, java.lang.Class<?> dataClass, java.lang.String propertyName, boolean editable, java.lang.Object context)
           
 ControlFactoryResult createControlFor(IReadOnlyModel<?> model, PropertyMetaModel<?> pmm, boolean editable, java.lang.Object context)
          Main workhorse which creates input controls for forms, from metadata.
 ControlFactory findControlFactory(PropertyMetaModel<?> pmm, boolean editable, java.lang.Class<?> controlClass, java.lang.Object context)
          Find the best control factory to use to create a control for the given property and mode.
 ControlFactory findFactoryByName(java.lang.String name)
          Locate a factory by it's full class name.
 ILookupControlFactory findLookupControlFactory(SearchPropertyMetaModel pmm)
           
 ControlFactory getControlFactory(PropertyMetaModel<?> pmm, boolean editable, java.lang.Class<?> controlClass, java.lang.Object context)
          Find the best control factory to use to create a control for the given property and mode, throws an Exception if the factory cannot be found.
protected  java.util.List<ControlFactory> getControlFactoryList()
           
 IControlLabelFactory getControlLabelFactory()
           
 IControlErrorFragmentFactory getErrorFragmentfactory()
           
 ILookupControlFactory getLookupControlFactory(SearchPropertyMetaModel pmm)
           
<X extends NodeBase & IInputNode<?>>
ILookupControlFactory
getLookupQueryFactory(SearchPropertyMetaModel pmm, X control)
           
 void register(ILookupControlFactory f)
          Add another LookupControlFactory to the registry.
 void registerControlFactory(ControlFactory cf)
           
 void setControlLabelFactory(IControlLabelFactory controlLabelFactory)
           
 void setErrorFragmentfactory(IControlErrorFragmentFactory errorFragmentfactory)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ControlBuilder

public ControlBuilder(DomApplication app)
Method Detail

registerControlFactory

public void registerControlFactory(ControlFactory cf)
Parameters:
cf -

getControlFactoryList

protected java.util.List<ControlFactory> getControlFactoryList()

findControlFactory

public ControlFactory findControlFactory(PropertyMetaModel<?> pmm,
                                         boolean editable,
                                         java.lang.Class<?> controlClass,
                                         java.lang.Object context)
Find the best control factory to use to create a control for the given property and mode.

Parameters:
pmm - The property to find a control for
editable - When false this is a displayonly control request.
Returns:
null if no factory is found.

findFactoryByName

public ControlFactory findFactoryByName(java.lang.String name)
Locate a factory by it's full class name. If the factory is found it is registered if needed.

Parameters:
name -
Returns:

getControlFactory

public ControlFactory getControlFactory(PropertyMetaModel<?> pmm,
                                        boolean editable,
                                        java.lang.Class<?> controlClass,
                                        java.lang.Object context)
Find the best control factory to use to create a control for the given property and mode, throws an Exception if the factory cannot be found.

Parameters:
pmm -
editable -
Returns:
The factory to use

getControlLabelFactory

public IControlLabelFactory getControlLabelFactory()
Returns:

setControlLabelFactory

public void setControlLabelFactory(IControlLabelFactory controlLabelFactory)

getErrorFragmentfactory

public IControlErrorFragmentFactory getErrorFragmentfactory()

setErrorFragmentfactory

public void setErrorFragmentfactory(IControlErrorFragmentFactory errorFragmentfactory)

addErrorFragment

public void addErrorFragment(NodeContainer nc)

register

public void register(ILookupControlFactory f)
Add another LookupControlFactory to the registry.

Parameters:
f -

findLookupControlFactory

public ILookupControlFactory findLookupControlFactory(SearchPropertyMetaModel pmm)

getLookupControlFactory

public ILookupControlFactory getLookupControlFactory(SearchPropertyMetaModel pmm)

getLookupQueryFactory

public <X extends NodeBase & IInputNode<?>> ILookupControlFactory getLookupQueryFactory(SearchPropertyMetaModel pmm,
                                                                                       X control)

createControlFor

public ControlFactoryResult createControlFor(IReadOnlyModel<?> model,
                                             PropertyMetaModel<?> pmm,
                                             boolean editable,
                                             java.lang.Object context)
Main workhorse which creates input controls for forms, from metadata.


createControl

public <T> T createControl(java.lang.Class<T> controlClass,
                           java.lang.Class<?> dataClass,
                           java.lang.String propertyName,
                           boolean editable,
                           java.lang.Object context)
Type Parameters:
T -
Parameters:
controlClass -
dataClass -
propertyName -
editableWhen -
Returns:

createControl

public <T> T createControl(java.lang.Class<T> controlClass,
                           java.lang.Class<?> dataClass,
                           PropertyMetaModel<?> pmm,
                           boolean editable,
                           java.lang.Object context)
Type Parameters:
T -
Parameters:
controlClass -
dataClass -
pmm -
editable -
Returns:

createComboFor

public <T> ComboFixed<T> createComboFor(java.lang.Class<T> type)
This creates a ComboFixed for some fixed-size domain class specified by type. This will allow any domain-valued type (as specified by metadata returning something for getDomainValues()). The domain value translations are done by class metadata only because the originating property is not known. This may cause values to be misrepresented.

Type Parameters:
T -
Returns:

createComboFor

public ComboFixed<?> createComboFor(PropertyMetaModel<?> pmm,
                                    boolean editable)
This creates a ComboFixed for some fixed-size domain property specified by the metamodel. This will allow any domain-valued type (as specified by metadata returning something for getDomainValues()). This version will properly use per-property value labels if defined.

Parameters:
pmm -
Returns:

createComboFor

public ComboFixed<?> createComboFor(java.lang.Class<?> dataClass,
                                    java.lang.String property,
                                    boolean editable)
This creates a ComboFixed for some fixed-size domain property specified by the metamodel. This will allow any domain-valued type (as specified by metadata returning something for getDomainValues()). This version will properly use per-property value labels if defined.

Parameters:
dataClass - The class whose property is to be looked up
property - The property path
Returns: