public abstract class FlatSectionLayoutDecorator<W,C extends W,M extends C> extends LayoutDecorator<W,C,M>
Because sections are rendered as siblings, FlatSectionLayoutDecorator never creates
a sub container.
| Modifier and Type | Class and Description |
|---|---|
static class |
FlatSectionLayoutDecorator.State
Simple, lightweight structure for saving state.
|
| Modifier | Constructor and Description |
|---|---|
protected |
FlatSectionLayoutDecorator(LayoutDecoratorConfig<W,C,M> config) |
| Modifier and Type | Method and Description |
|---|---|
protected abstract void |
addSectionWidget(String section,
int level,
C container,
M metawidget) |
protected abstract String[] |
getSections(Map<String,String> attributes) |
protected abstract FlatSectionLayoutDecorator.State |
getState(C container,
M metawidget) |
protected abstract boolean |
isIgnored(W widget)
Returns
true if the given widget should be ignored, and no section heading
created for it. |
void |
layoutWidget(W widget,
String elementName,
Map<String,String> attributes,
C container,
M metawidget)
Layout the given widget within the given container, using the given
elementName and attributes as a guide and the given Metawidget to access
additional services if needed (such as state saving)
|
void |
startContainerLayout(C container,
M metawidget)
Initialise the given container, using the given Metawidget to access additional services if
needed (such as state saving).
|
protected abstract String |
stripSection(Map<String,String> attributes) |
endContainerLayout, getDelegate, onEndBuild, onStartBuildprotected FlatSectionLayoutDecorator(LayoutDecoratorConfig<W,C,M> config)
public void startContainerLayout(C container, M metawidget)
AdvancedLayoutstartContainerLayout in interface AdvancedLayout<W,C extends W,M extends C>startContainerLayout in class LayoutDecorator<W,C extends W,M extends C>container - the container to layout. This is often the same as the given Metawidgetmetawidget - the parent Metawidget. Never nullpublic void layoutWidget(W widget, String elementName, Map<String,String> attributes, C container, M metawidget)
LayoutlayoutWidget is called immediately after WidgetBuilder.buildWidget and WidgetProcessor.processWidget, and before the next widget is generated. An alternate design would be to 'collect' all widgets generated by buildWidget and processWidget, then iterate over them separately for the layout. If you prefer this approach, you can simulate it by having layoutWidget do nothing but 'remember' each widget, then iterate over them in endContainerLayout (see the AdvancedLayout interface). However not all UI frameworks allow this approach, because they do not suport widgets being instantiated independent of a layout, nor moved between layouts (e.g. SWT)
layoutWidget in interface Layout<W,C extends W,M extends C>layoutWidget in class LayoutDecorator<W,C extends W,M extends C>widget - the widget to layout. Never nullelementName - XML node name of the business field. Typically 'entity',
'property' or 'action'. Never nullattributes - attributes of the widget to layout. Never null. This Map is
modifiable - changes will be passed to subsequent
WidgetProcessors and Layoutscontainer - the container to add to. This is often the same as the given
Metawidgetmetawidget - the Metawidget to use to access additional services. Never
nullprotected abstract FlatSectionLayoutDecorator.State getState(C container, M metawidget)
protected abstract boolean isIgnored(W widget)
true if the given widget should be ignored, and no section heading
created for it. For example, the widget might be an empty Stub widget.
Subclasses should override this method and return true if the widget is some
other kind of ignored component (eg. HtmlInputHidden).
Copyright © 2015. All Rights Reserved.