Metawidget User Guide and Reference Documentation

Version 4.2

Richard Kennard


Table of Contents

Preface
Supported Technologies
1. Introduction to Metawidget
1.1. Part 1 (Java version) - 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 1 (JavaScript version) - The First Metawidget Application
1.2.1. The Object
1.2.2. The Interface
1.2.3. The Output
1.2.4. Inspectors
1.2.5. Combining Multiple Inspection Results
1.2.6. Controlling The Layout
1.2.7. Controlling Widget Creation
1.3. Part 2 - The Address Book Application
1.3.1. Desktop Address Book
Read-Only Mode
Binding
Localization
1.3.2. Web Address Book
Mixing Metawidgets
Expression Based Lookups
Alternate Widget Libraries (JSF 1.x)
Alternate Widget Libraries (JSF 2.x)
1.3.3. Mobile Address Book
1.3.4. Conclusion
1.4. Part 3 - Other Examples
1.4.1. Swing Applet Address Book Example
1.4.2. Seam Example
1.4.3. Groovy Example
1.4.4. jBPM Example
1.4.5. ICEfaces Example
1.4.6. Java EE 6 Example
1.4.7. Swing AppFramework Example
1.4.8. Scala Example
1.4.9. GWT Client Side Example
1.4.10. GWT Hosted Mode Examples
1.4.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 (Java)
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. Advanced Interface
2.4.4. CompositeWidgetBuilder
2.4.5. OverriddenWidgetBuilder
2.4.6. ReadOnlyWidgetBuilder
2.4.7. Defaults
2.4.8. Immutability
2.4.9. 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
Under The Hood
3.1.2. SwtMetawidget
Installation
Configuration
Customizing Look and Feel
Internationalization
3.2. Web Metawidgets
3.2.1. AngularJS Metawidget
Installation
Usage
Configuration
Customizing Look and Feel
Two-Way Binding
3.2.2. GwtMetawidget
Installation
Configuration
Reflection and Annotations
Client-Side Inspection
Customizing Look and Feel
Internationalization
3.2.3. JavaScript Metawidget
Installation
Configuration
Customizing Look and Feel
Events
Inspection Results
Web Component
3.2.4. JQuery UI Metawidget
Installation
Configuration
3.2.5. Node.js
3.2.6. HtmlMetawidgetTag (JSP)
Installation
Configuration
Customizing Look and Feel
Internationalization
Overriding Widget Creation
3.2.7. UIMetawidget (JSF)
Installation
Configuration
Customizing Look and Feel
Internationalization
Collections
Facets
JSF 2.0
3.2.8. SpringMetawidgetTag
Installation
Configuration
Customizing Look and Feel
Internationalization
Overriding Widget Creation
3.2.9. StrutsMetawidgetTag
Installation
Configuration
Customizing Look and Feel
Internationalization
Overriding Widget Creation
3.2.10. VaadinMetawidget
Installation
Configuration
3.3. Mobile Metawidgets
3.3.1. AndroidMetawidget
Installation
Configuration
Customizing Look and Feel
Internationalization
Getting and Setting Values
3.3.2. JQuery Mobile Metawidget
Installation
Configuration
3.4. Static Metawidgets
3.4.1. StaticPropertyStyle
3.4.2. StaticMetawidget
4. Inspectors
4.1. Composite Inspector
4.2. Property Inspectors
4.2.1. BaseObjectInspector
PropertyStyle
JavaBeanPropertyStyle
GroovyPropertyStyle
JavassistPropertyStyle
ScalaPropertyStyle
Implementing Your Own PropertyStyle
ActionStyle
MetawidgetActionStyle
SwingAppFrameworkActionStyle
4.2.2. PropertyTypeInspector (Java version)
4.2.3. JsonSchemaInspector (Java version)
4.2.4. JsonSchemaInspector (JavaScript version)
4.2.5. PropertyTypeInspector (JavaScript version)
4.3. Annotation Inspectors
4.3.1. BeanValidationInspector
4.3.2. FacesAnnotationInspector
4.3.3. HibernateValidatorInspector
4.3.4. JacksonInspector
4.3.5. JaxbInspector
4.3.6. JpaInspector
4.3.7. MetawidgetAnnotationInspector
4.3.8. OvalInspector
4.4. XML Inspectors
4.4.1. BaseXmlInspector
Mixing XML and Object-based Inspectors
4.4.2. CommonsValidatorInspector
4.4.3. HibernateInspector
4.4.4. PageflowInspector
4.4.5. SeamInspector
4.4.6. XmlInspector
4.4.7. XmlSchemaInspector
4.4.8. WsdlInspector
5. InspectionResultProcessors
5.1. ComesAfterInspectionResultProcessor
5.2. FacesInspectionResultProcessor
5.3. JexlInspectionResultProcessor
5.4. JspInspectionResultProcessor
5.5. RestInspectionResultProcessor
5.6. JavaToJavaScriptTypeMappingProcessor
5.7. TypeMappingInspectionResultProcessor
5.8. XmlSchemaToJavaTypeMappingProcessor
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. JavaScript WidgetBuilders
HtmlWidgetBuilder
OverriddenWidgetBuilder
ReadOnlyWidgetBuilder
6.2.3. JSP WidgetBuilders
DisplayTagWidgetBuilder
HtmlWidgetBuilder
OverriddenWidgetBuilder
ReadOnlyWidgetBuilder
SpringWidgetBuilder
StrutsWidgetBuilder
6.2.4. JSF WidgetBuilders
HtmlWidgetBuilder
IceFacesWidgetBuilder
OverriddenWidgetBuilder
ReadOnlyWidgetBuilder
PrimeFacesWidgetBuilder
RichFacesWidgetBuilder
TomahawkWidgetBuilder
6.2.5. 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. JavaScript WidgetProcessors
AngularWidgetProcessor
BootstrapWidgetProcessor
DisabledAttributeProcessor
IdProcessor
RequiredAttributeProcessor
SimpleBindingProcessor
7.2.3. JSF WidgetProcessors
AjaxProcessor
CssStyleProcessor
HiddenFieldProcessor
ImmediateAttributeProcessor
LabelProcessor
ReadableIdProcessor
RequiredAttributeProcessor
RichFacesProcessor
StandardBindingProcessor
StandardConverterProcessor
StandardValidatorProcessor
7.2.4. JSP WidgetProcessors
HiddenFieldProcessor
7.2.5. Vaadin WidgetProcessors
CaptionProcessor
MinimumMaximumValidatorProcessor
RequiredProcessor
SimpleBindingProcessor
7.3. Mobile WidgetProcessors
7.3.1. Android WidgetProcessors
DisabledAttributeProcessor
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. JavaScript Layouts
BootstrapDivLayout
DefinitionListLayout
DivLayout
HeadingTagLayoutDecorator
TabLayoutDecorator (Bootstrap)
TabLayoutDecorator (JQuery UI)
TableLayout
SimpleLayout
8.2.3. JSF Layouts
HtmlDivLayoutRenderer
HtmlTableLayoutRenderer
OutputTextLayoutDecorator
PanelGroupLayoutDecorator
PanelLayoutDecorator
PanelTabSetLayoutDecorator
SimpleTogglePanelLayoutDecorator
HtmlSimpleLayout
TabPanelLayoutDecorator
TabViewLayoutDecorator
8.2.4. JSP Layouts
HeadingTagLayoutDecorator
HtmlTableLayout
SpringTableLayout
SimpleLayout
8.2.5. 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. I put <m:metawidget > in my page but nothing appears
10.3.2. Java Server Faces
I have annotated my getter, but Metawidget is ignoring my annotations
My parameterized List renders as a single column
I get "View could not be restored"
I get "The class ... does not have a readable property"
10.3.3. Struts
I get "Cannot find bean org.apache.struts.taglib.html.BEAN in any scope"
I see "MultipartRequestHandler", "ServletWrapper" and other weird names