VALUE - is the generic type of the value.CHILD - is the generic type of the children.DELEGATE - is the generic type of the delegate.public abstract class UiWidgetCustomComposite<VALUE,CHILD extends UiWidget,DELEGATE extends UiWidgetComposite<CHILD>> extends UiWidgetCustom<VALUE,DELEGATE> implements UiWidgetComposite<CHILD>
custom widget that is also a
composite widget. It supports creating reusable high-level widgets for UI
patterns or forms to edit business objects (see doGetValue(Object, ValidationState) and
doSetValue(Object, boolean)).AbstractUiWidget.AccessHelper, AbstractUiWidget.EventSender, AbstractUiWidget.HandlerContainerSTYLE_HEADERHTML_ATTRIBUTE_ID, ID_SEPARATOR, PROPERTY_IDPROPERTY_STYLES, STYLE_PATTERN_MULTIPLE, STYLE_PATTERN_SINGLEWAI_ARIA| Constructor and Description |
|---|
UiWidgetCustomComposite(UiContext context,
DELEGATE delegate,
Class<VALUE> valueClass)
The constructor.
|
| Modifier and Type | Method and Description |
|---|---|
protected VALUE |
doGetValue(VALUE template,
ValidationState state)
This method is called from the
data-binding triggered by API methods such as
AbstractUiFeatureValueAndValidation.getValue(). |
protected void |
doSetValue(VALUE value,
boolean forUser)
This method is called from the
data-binding triggered by API methods such as
AbstractUiWidget.setValue(Object, boolean). |
CHILD |
getChild(int index)
This method gets the child at the given index.
|
CHILD |
getChild(String id)
This method gets the child with the given
id. |
int |
getChildCount()
This method gets the number of children in this composite.
|
int |
getChildIndex(UiWidget child)
This method determines the index of the given
child in the list of children of this composite. |
addStyle, clearMessages, clearValidity, dispose, doInitialize, doSetMode, doValidate, getAriaRole, getDelegate, getDelegate, getId, getMode, getModeFixed, getParent, getPrimaryStyle, getSize, getSource, getStyles, getTooltip, getValueClass, getVisibleFlag, getWidgetAdapter, hasStyle, hasWidgetAdapter, initialize, isDisposed, isEnabled, isModifiedRecursive, isVisible, isVisibleRecursive, removeFromParent, removeStyle, setEnabled, setFocused, setId, setMode, setMode, setModeFixed, setParent, setPrimaryStyle, setStyles, setTooltip, setVisible, setVisibleaddChangeHandler, addEventHandler, addValidator, clearMessagesLocal, clearValidationFailure, convertValueToString, fireEvent, fireValueChange, getBasicUtil, getContext, getDataBinding, getDataBinding, getDataBindingForWidget, getEventSender, getFactory, getLogger, getObserverSource, getOriginalValue, getRecentValue, getValueDirect, getValueOrException, getWidgetAdapter, hasEventSender, isMandatory, isModified, removeChangeHandler, removeEventHandler, removeFromParent, removeValidator, setMandatory, setModified, setParent, setValue, toStringaddValidatorMandatory, createValidationFailure, getValue, getValueAndValidate, handleGetValueError, resetValue, setValue, setValueForUser, validateclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetContext, getParent, getSizeclearMessagesaddEventHandler, removeEventHandlersetModegetModesetModeFixedgetModeFixedsetIdgetIdsetTooltipgetTooltipgetVisibleFlag, isVisible, setVisible, setVisibleisVisibleRecursivesetEnabledisEnabledaddStyle, removeStylehasStylesetStylesgetStylessetPrimaryStylegetPrimaryStyledisposeisDisposedisModifiedgetAriaRolevalidategetValuegetValueAndValidate, getValueDirectaddChangeHandler, removeChangeHandlerresetValue, setValue, setValue, setValueForUsergetOriginalValue, getValueOrExceptionaddValidatorMandatory, isMandatoryaddValidator, removeValidatorpublic int getChildIndex(UiWidget child)
child in the list of children of this composite. getChildIndex in interface UiWidgetAbstractCompositechild - is the potential child.index of the given child or -1 if it is NOT
a child of this composite.List.indexOf(Object)public CHILD getChild(int index)
getChild in interface UiWidgetAbstractCompositegetChild in interface UiWidgetComposite<CHILD extends UiWidget>index - is the index of the requested child. Has to be in the range from 0 to
UiWidgetAbstractComposite.getChildCount() - 1.List.get(int)public CHILD getChild(String id)
id.getChild in interface UiWidgetAbstractCompositegetChild in interface UiWidgetComposite<CHILD extends UiWidget>id - is the ID of the requested child.child with the given id or null if no such
child exists.public int getChildCount()
getChildCount in interface UiWidgetAbstractCompositeprotected VALUE doGetValue(VALUE template, ValidationState state) throws RuntimeException
data-binding triggered by API methods such as
AbstractUiFeatureValueAndValidation.getValue(). In many cases the data-binding already performs the
required work to do. However, here is the place to implemented the custom logic to get the value from the
actual widget. The following cases have to be distinguished:
native
fields this method has to get the actual
value from the underlying native widget (text-box, password-field, etc.).custom fields this
method will be responsible to convert from the delegates value (see
UiWidgetCustom.getDelegate()) to the proper value type. E.g. if you want to create a custom
widget to edit your own datatype such as CustomerNumber based on a
UiWidgetTextField you need to convert from String
to CustomerNumber.custom composite widgets
you should use AbstractUiWidget.getDataBinding().
UiDataBinding.createAndBind(net.sf.mmm.util.pojo.path.api.TypedProperty)
that gives you high-level support and makes your live easy. Then there is no need to override this
method.Void, there is nothing to do here.AbstractUiWidget.doSetValue(Object, boolean) .
data-binding you could override this
method and manually implement the binding like in the following example:protected Person doGetValue(Person template,You may also mix the advanced data-binding with custom logic implemented in this method.ValidationStatestate) { Person result = super.doGetValue(template, state); // if the attribute is a datatype we can supply null (instead of result.getFirstName()) result.setFirstName(this.widgetFirstName.getValueDirect(null, state)); result.setLastName(this.widgetLastName.getValueDirect(null, state)); Address address = this.widgetAddressPanel.getValueDirect(result.getAddress(), state); this.widgetAddressExtraPanel.getValueDirect(address, state); result.setAddress(address); ... return result; }
doGetValue in class AbstractUiWidget<VALUE>template - is the object where the data is filled in. May only be null if according to
data-binding (e.g. if <VALUE> is an (immutable)
Datatype).state - is the ValidationState. May be null (if the validation is omitted).
Should only be used to propagate to AbstractUiWidget.getValueDirect(Object, ValidationState) of children.null if empty. If <VALUE> is
String the empty String has to be returned if no value has been entered. In case
<VALUE> is a mutable object (java bean) the template is NOT
null and is to be returned by this method after the value(s) of this widget have
been assigned. For immutable datatypes
template will be null and this method has to create a new instance of
<VALUE> based on the end-users input in the widget.RuntimeExceptionAbstractUiWidget.doSetValue(Object, boolean)protected void doSetValue(VALUE value, boolean forUser)
data-binding triggered by API methods such as
AbstractUiWidget.setValue(Object, boolean). In many cases the data-binding already
performs the required work to do. However, here is the place to implemented the custom logic to get the
value from the actual widget. For details see AbstractUiWidget.doGetValue(Object, ValidationState).
data-binding you could override this
method and manually implement the binding like in the following example:
protected void doSetValue(Person value) {
this.widgetFirstName.setValue(value?.getFirstName());
this.widgetLastName.setValue(value?.getLastName());
...
}
doSetValue in class AbstractUiWidget<VALUE>value - is the value to set. Typically a composite object (e.g. java bean) so its attributes are set
to fields (see UiWidgetField).forUser - true if called from AbstractUiFeatureValueAndValidation.setValueForUser(Object), false if
set from AbstractUiFeatureValueAndValidation.setValue(Object).AbstractUiWidget.doGetValue(Object, ValidationState)Copyright © 2001–2016 mmm-Team. All rights reserved.