Hi George,

in your solution parsing of an annotated widget will not be custom
if the widget is not injected into a field, right?

Here's a different idea:

http://cafebab3.blogspot.com/2010/01/non-intrusive-gwt-2-mod-2nd-part.html

Perhaps it is useful for you...

Kind regards

Daniel

On 8 Jan., 17:30, ggeorg <georgopoulos.georg...@gmail.com> wrote:
> Hi Ray,
>
> Please have a look at:
>
> http://code.google.com/p/google-web-toolkit/issues/detail?id=4461
>
> the attached patch is the simplest patch I could make. It adds support
> for adding custom ElementParser(s) to UiBinder by tagging each widgets
> that is using a custom parser with the @ElementParserToUse annotation,
> e.g.: for GWT Mosaic's LayoutPanel the code is:
>
> @ElementParserToUse(className =
> "org.gwt.mosaic.ui.elementparsers.LayoutPanelParser")
> public class LayoutPanel extends AbsolutePanel implements
> HasLayoutManager,
>     HasAnimation {
> ...
>
> }
>
> ----
>
> After applying the patch, the UiBinderWriter.registerParsers() looks
> like this:
>
>   private void registerParsers() {
>     // TODO(rjrjr): Allow third-party parsers to register themselves
>     // automagically
>
>     addElementParser("com.google.gwt.dom.client.Element",
>         "com.google.gwt.uibinder.elementparsers.DomElementParser");
>
>     // Register widget parsers.
>     addWidgetParser("UIObject");
>     addWidgetParser("HasText");
>     addWidgetParser("HasHTML");
>     addWidgetParser("HasWidgets");
>     addWidgetParser("HTMLPanel");
>     addWidgetParser("DockPanel");
>     addWidgetParser("StackPanel");
>     addWidgetParser("DisclosurePanel");
>     addWidgetParser("TabPanel");
>     addWidgetParser("MenuItem");
>     addWidgetParser("MenuBar");
>     addWidgetParser("RadioButton");
>     addWidgetParser("CellPanel");
>     addWidgetParser("CustomButton");
>     addWidgetParser("DialogBox");
>     addWidgetParser("LayoutPanel");
>     addWidgetParser("DockLayoutPanel");
>     addWidgetParser("StackLayoutPanel");
>     addWidgetParser("TabLayoutPanel");
>
>     // Register custom widget parsers... (almost automagically)
>
>     Collection<OwnerField> uiFields = ownerClass.getUiFields();
>
>     if (uiFields == null) {
>       return;
>     }
>
>     for (OwnerField uiField : uiFields) {
>       JClassType fieldType = uiField.getType().getRawType().isClass();
>       String uiClassName = fieldType.getQualifiedSourceName();
>
>       if (elementParsers.containsKey(uiClassName)) {
>         continue;
>       }
>
>       if (fieldType != null
>           && fieldType.isAnnotationPresent(ElementParserToUse.class))
> {
>         String parserClassName = fieldType.getAnnotation
> (ElementParserToUse.class).className();
>         if (parserClassName != null && parserClassName.length() > 0) {
>           addElementParser(uiClassName, parserClassName);
>         }
>       }
>     }
>   }
>
> Kind Regards,
> George.
>
> On Jan 7, 12:04 am, Ray Ryan <rj...@google.com> wrote:
>
>
>
> > How could I stop you? :-)
>
> > Would you making an issue tracker entry about this and putting the patch
> > there?
-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to