diff options
author | Henri Sara <hesara@vaadin.com> | 2012-04-04 15:04:23 +0300 |
---|---|---|
committer | Henri Sara <hesara@vaadin.com> | 2012-04-04 15:04:23 +0300 |
commit | 87e5022ca881154f7e4cba9b2c014b344646fa8f (patch) | |
tree | f60e74ea9b6b84f6f1ff75da58f59819d7666a54 /src/com/vaadin/terminal/gwt/client/WidgetSet.java | |
parent | 6bf22c0d4359034e2f934038382895f177f6a458 (diff) | |
download | vaadin-framework-87e5022ca881154f7e4cba9b2c014b344646fa8f.tar.gz vaadin-framework-87e5022ca881154f7e4cba9b2c014b344646fa8f.zip |
Replace @ClientWidget with client-side @Component (#8440)
Diffstat (limited to 'src/com/vaadin/terminal/gwt/client/WidgetSet.java')
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/WidgetSet.java | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/WidgetSet.java b/src/com/vaadin/terminal/gwt/client/WidgetSet.java index 656c92e285..5aa4b24764 100644 --- a/src/com/vaadin/terminal/gwt/client/WidgetSet.java +++ b/src/com/vaadin/terminal/gwt/client/WidgetSet.java @@ -30,7 +30,7 @@ public class WidgetSet { * @return New uninitialized and unregistered component that can paint given * UIDL. */ - public ComponentConnector createWidget(String tag, + public ComponentConnector createWidget(int tag, ApplicationConfiguration conf) { /* * Yes, this (including the generated code in WidgetMap) may look very @@ -40,12 +40,12 @@ public class WidgetSet { * has no "native" counterpart on client side. */ - Class<? extends ComponentConnector> classType = resolveWidgetType(tag, - conf); + Class<? extends ComponentConnector> classType = resolveInheritedWidgetType( + conf, tag); if (classType == null || classType == UnknownComponentConnector.class) { String serverSideName = conf - .getUnknownServerClassNameByEncodedTagName(tag); + .getUnknownServerClassNameByTag(tag); UnknownComponentConnector c = GWT .create(UnknownComponentConnector.class); c.setServerSideClassName(serverSideName); @@ -56,16 +56,25 @@ public class WidgetSet { */ return widgetMap.instantiate(classType); } + } + private Class<? extends ComponentConnector> resolveInheritedWidgetType( + ApplicationConfiguration conf, int tag) { + Class<? extends ComponentConnector> classType = null; + Integer t = tag; + do { + classType = resolveWidgetType(t, conf); + t = conf.getParentTag(t); + } while (classType == null && t != null); + return classType; } - protected Class<? extends ComponentConnector> resolveWidgetType(String tag, + protected Class<? extends ComponentConnector> resolveWidgetType(int tag, ApplicationConfiguration conf) { Class<? extends ComponentConnector> widgetClass = conf .getWidgetClassByEncodedTag(tag); return widgetClass; - } /** @@ -73,20 +82,22 @@ public class WidgetSet { * limitation, widgetset must have function that returns Class by its fully * qualified name. * - * @param fullyQualifiedName + * @param tag * @param applicationConfiguration * @return */ - public Class<? extends ComponentConnector> getImplementationByClassName( - String fullyqualifiedName) { - if (fullyqualifiedName == null) { - return UnknownComponentConnector.class; - } - Class<? extends ComponentConnector> implementationByServerSideClassName = widgetMap - .getImplementationByServerSideClassName(fullyqualifiedName); - - return implementationByServerSideClassName; - + public Class<? extends ComponentConnector> getConnectorClassByTag(int tag, + ApplicationConfiguration conf) { + Class<? extends ComponentConnector> connectorClass = null; + Integer t = tag; + do { + connectorClass = widgetMap + .getConnectorClassForServerSideClassName(conf + .getServerSideClassNameForTag(t)); + t = conf.getParentTag(t); + } while (connectorClass == UnknownComponentConnector.class && t != null); + + return connectorClass; } public Class<? extends ComponentConnector>[] getDeferredLoadedWidgets() { |