Metawidget User Guide and Reference Documentation

Version 2.2

Richard Kennard


Table of Contents

Preface
Supported Technologies
1. Introduction to Metawidget
1.1. Part 1 - The First Metawidget Application
1.1.1. The Object
1.1.2. The Interface
1.1.3. The Output
1.1.4. Ordering The Properties
1.1.5. Inspectors
1.1.6. Combining Multiple Inspection Results
1.1.7. Controlling The Layout
1.1.8. Controlling Widget Creation
1.1.9. Configuring Metawidget Externally
1.2. Part 2 - The Address Book Application
1.2.1. Desktop Address Book
Read-Only Mode
Binding
Localization
1.2.2. Web Address Book
Mixing Metawidgets
Expression Based Lookups
Alternate Widget Libraries (JSF 1.x)
Alternate Widget Libraries (JSF 2.x)
1.2.3. Mobile Address Book
1.2.4. Conclusion
1.3. Part 3 - Other Examples
1.3.1. Swing Applet Address Book Example
1.3.2. Seam Example
1.3.3. Groovy Example
1.3.4. jBPM Example
1.3.5. ICEfaces Example
1.3.6. Java EE 6 Example
1.3.7. Swing AppFramework Example
1.3.8. Scala Example
1.3.9. GWT Client Side Example
1.3.10. GWT Hosted Mode Examples
1.3.11. Static Metawidget Example
2. Architecture
2.1. Metawidgets
2.1.1. Interface
2.1.2. Customizing Look and Feel
2.1.3. Overriding Widget Creation
2.1.4. Implementing Your Own Metawidget
2.2. Inspectors
2.2.1. Interface
2.2.2. Usage
2.2.3. CompositeInspector
2.2.4. Defaults
2.2.5. Immutability
2.2.6. inspection-result
2.2.7. Implementing Your Own Inspector
2.3. Inspection Result Processors
2.3.1. Interface
2.3.2. Usage
2.3.3. Defaults
2.3.4. Immutability
2.3.5. Implementing Your Own InspectionResultProcessor
2.4. WidgetBuilders
2.4.1. Interface
2.4.2. Usage
2.4.3. CompositeWidgetBuilder
2.4.4. OverriddenWidgetBuilder
2.4.5. ReadOnlyWidgetBuilder
2.4.6. Defaults
2.4.7. Immutability
2.4.8. Implementing Your Own WidgetBuilder
Special considerations for Java Server Faces
2.5. WidgetProcessors
2.5.1. Interface
2.5.2. Usage
2.5.3. Advanced Interface
2.5.4. Defaults
2.5.5. Immutability
2.5.6. Implementing Your Own WidgetProcessor
2.6. Layouts
2.6.1. Interface
2.6.2. Advanced Interface
2.6.3. LayoutDecorator
2.6.4. Usage
2.6.5. Defaults
2.6.6. Immutability
2.6.7. Implementing Your Own Layout
2.7. metawidget.xml and ConfigReader
2.7.1. Constructing New Objects
2.7.2. Calling Setter Methods
2.7.3. Constructing Primitive Types
2.7.4. Resolving Resources
2.7.5. Understanding Immutability
3. Metawidgets
3.1. Desktop Metawidgets
3.1.1. SwingMetawidget
Installation
Configuration
Customizing Look and Feel
Internationalization
3.1.2. SwtMetawidget
Installation
Configuration
Customizing Look and Feel
Internationalization
3.2. Web Metawidgets
3.2.1. GwtMetawidget
Installation
Configuration
Reflection and Annotations
Client-Side Inspection
Customizing Look and Feel
Internationalization
3.2.2. HtmlMetawidgetTag (JSP)
Installation
Configuration
Customizing Look and Feel
Internationalization
Overriding Widget Creation
3.2.3. UIMetawidget (JSF)
Installation
Configuration
Customizing Look and Feel
Internationalization
Collections
Facets
JSF 2.0
3.2.4. SpringMetawidgetTag
Installation
Configuration
Customizing Look and Feel
Internationalization
Overriding Widget Creation
3.2.5. StrutsMetawidgetTag
Installation
Configuration
Customizing Look and Feel
Internationalization
Overriding Widget Creation
3.2.6. VaadinMetawidget
Installation
Configuration
3.3. Mobile Metawidgets
3.3.1. AndroidMetawidget
Installation
Configuration
Customizing Look and Feel
Internationalization
Getting and Setting Values
3.4. Static Metawidgets
3.4.1. StaticPropertyStyle
3.4.2. StaticMetawidget
4. Inspectors
4.1. Property Inspectors
4.1.1. BaseObjectInspector
PropertyStyle
JavaBeanPropertyStyle
GroovyPropertyStyle
JavassistPropertyStyle
ScalaPropertyStyle
Implementing Your Own PropertyStyle
ActionStyle
MetawidgetActionStyle
SwingAppFrameworkActionStyle
4.1.2. PropertyTypeInspector
4.2. Annotation Inspectors
4.2.1. BeanValidationInspector
4.2.2. FacesAnnotationInspector
4.2.3. HibernateValidatorInspector
4.2.4. JpaInspector
4.2.5. MetawidgetAnnotationInspector
4.2.6. OvalInspector
4.3. XML Inspectors
4.3.1. BaseXmlInspector
Mixing XML and Object-based Inspectors
4.3.2. CommonsValidatorInspector
4.3.3. HibernateInspector
4.3.4. PageflowInspector
4.3.5. SeamInspector
4.3.6. XmlInspector
5. InspectionResultProcessors
5.1. ComesAfterInspectionResultProcessor
5.2. FacesInspectionResultProcessor
5.3. JexlInspectionResultProcessor
5.4. JspInspectionResultProcessor
6. WidgetBuilders
6.1. Desktop WidgetBuilders
6.1.1. Swing WidgetBuilders
OverriddenWidgetBuilder
ReadOnlyWidgetBuilder
SwingWidgetBuilder
SwingXWidgetBuilder
6.1.2. SWT WidgetBuilders
OverriddenWidgetBuilder
ReadOnlyWidgetBuilder
SwtWidgetBuilder
6.2. Web WidgetBuilders
6.2.1. GWT WidgetBuilders
ExtGwtWidgetBuilder
GwtWidgetBuilder
OverriddenWidgetBuilder
ReadOnlyWidgetBuilder
6.2.2. JSP WidgetBuilders
DisplayTagWidgetBuilder
HtmlWidgetBuilder
OverriddenWidgetBuilder
ReadOnlyWidgetBuilder
SpringWidgetBuilder
StrutsWidgetBuilder
6.2.3. JSF WidgetBuilders
HtmlWidgetBuilder
IceFacesWidgetBuilder
OverriddenWidgetBuilder
ReadOnlyWidgetBuilder
PrimeFacesWidgetBuilder
RichFacesWidgetBuilder
TomahawkWidgetBuilder
6.2.4. Vaadin WidgetBuilders
OverriddenWidgetBuilder
ReadOnlyWidgetBuilder
VaadinWidgetBuilder
6.3. Mobile WidgetBuilders
6.3.1. Android WidgetBuilders
AndroidWidgetBuilder
OverriddenWidgetBuilder
ReadOnlyWidgetBuilder
7. WidgetProcessors
7.1. Desktop WidgetProcessors
7.1.1. Swing WidgetProcessors
Property Binding
BeansBindingProcessor
BeanUtilsProcessor
Action Binding
7.1.2. SWT WidgetProcessors
DataBindingProcessor
ReflectionBindingProcessor
7.2. Web WidgetProcessors
7.2.1. GWT WidgetProcessors
Property Binding
Action Binding
StyleNameProcessor
7.2.2. JSF WidgetProcessors
AjaxProcessor
CssStyleProcessor
HiddenFieldProcessor
ImmediateAttributeProcessor
LabelProcessor
ReadableIdProcessor
RequiredAttributeProcessor
RichFacesProcessor
StandardBindingProcessor
StandardConverterProcessor
StandardValidatorProcessor
7.2.3. JSP WidgetProcessors
HiddenFieldProcessor
7.2.4. Vaadin WidgetProcessors
CaptionProcessor
MinimumMaximumValidatorProcessor
RequiredProcessor
SimpleBindingProcessor
8. Layouts
8.1. Desktop Layouts
8.1.1. Swing Layouts
BoxLayout
FlowLayout
GridBagLayout
GroupLayout
MigLayout
SeparatorLayoutDecorator
TabbedPaneLayoutDecorator
TitledPanelLayoutDecorator
8.1.2. SWT Layouts
FillLayout
GridLayout
MigLayout
RowLayout
SeparatorLayoutDecorator
TabFolderLayoutDecorator
8.2. Web Layouts
8.2.1. GWT Layouts
FlexTableLayout
FlowLayout
LabelLayoutDecorator
TabPanelLayoutDecorator
8.2.2. JSF Layouts
HtmlDivLayoutRenderer
HtmlTableLayoutRenderer
OutputTextLayoutDecorator
PanelGroupLayoutDecorator
PanelLayoutDecorator
PanelTabSetLayoutDecorator
SimpleTogglePanelLayoutDecorator
SimpleLayout
TabPanelLayoutDecorator
TabViewLayoutDecorator
8.2.3. JSP Layouts
HeadingTagLayoutDecorator
HtmlTableLayout
SimpleLayout
8.2.4. Vaadin Layouts
FormLayout
HeadingTagLayoutDecorator
HorizontalLayout
TabSheetLayoutDecorator
8.3. Mobile Layouts
8.3.1. Android Layouts
LinearLayout
TableLayout
TabHostLayoutDecorator
TextViewLayoutDecorator
9. How To's
9.1. Order Properties
9.2. View The Same Object In Different Ways
9.3. Deploy As An Enterprise ARchive (EAR)
9.4. Inspect Remotely
9.4.1. Combine Remote Inspections
9.5. Improve Performance
9.5.1. JAR Size
9.5.2. Memory Usage
9.5.3. DomInspector and DomInspectionResultProcessor
9.5.4. Rebinding
10. Troubleshooting
10.1. General
10.1.1. Metawidget Doesn't Work!
10.2. Inspectors
10.2.1. General Inspectors
My Inspector does not return anything
10.2.2. Annotation-Based Inspectors
I get "java.lang.TypeNotPresentException"
My inspector is not finding my annotations
10.3. Web Metawidgets
10.3.1. Java Server Faces
I put <m:metawidget > in my page but nothing appears
I have annotated my getter, but Metawidget is ignoring my annotations
I get "View could not be restored"
I get "The class ... does not have a readable property"
10.3.2. Struts
I get "Cannot find bean org.apache.struts.taglib.html.BEAN in any scope"
I see "MultipartRequestHandler", "ServletWrapper" and other weird names