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