*Feature**:** Polymorphic Sub-Editors inside a Composite Editor*** 
0. Problem 

When using a CompositeEditor, the Editor Framework resolves the composed 
editor based on the parameterized type CompositeEditor<T, C, E<C>>. So the 
type of the composed editor is bound to E<C>. Since the composed editor can 
be created freely by the developer (in the setValue method of the composite 
editor), it would be useful to support multiple editor types. As an example 
take an editor for a container type which contains a polymorphic list.


1. Idea

A possible idea is to let the editor framework resolve an editor (delegate) 
during runtime, based on the given concrete editor. The editor framework 
needs to know which editor types it needs to support. So an annotation on 
the CompositeEditor contains a list of them:

@PossibleEditors*({* BooleanField*.*class*,* StringField*.*class *})*


The code generator can now use this information to generate code like the 
following:

@Override *protected* org*.*noorg*.*gwt*.*rf*.*client*.*editor*.*impl*.*
SimpleBeanEditorDelegate createComposedDelegate*(*Editor e*)* *{*

  *if* *(*e*.*getClass*()* *instanceof* BooleanField*)*

         *return* *new* org*.*noorg*.*gwt*.*rf*.*client*.*ui*.*
BooleanField_SimpleBeanEditorDelegate*();*

  *if* *(*e*.*getClass*()* *instanceof* StringField*)*

         *return* *new* org*.*noorg*.*gwt*.*rf*.*client*.*ui*.*
StringField_SimpleBeanEditorDelegate*();*

  *return* *null**;*

*}*

2. Patches

I created a quick proof of concept: 
https://gist.github.com/97c9bf45d259a82f8990

- Annotation: @PossibleEditors({ FooEditor.class, BarEditor.class })

- Use annotation during generation of EditorData
- Modify code generation in EditorDriverGenerator


What do you guys think? Is this feasable?


Regards,

Stefan

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to