diff options
author | Leif Åstrand <leif@vaadin.com> | 2013-02-15 16:28:07 +0200 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2013-02-18 12:20:27 +0000 |
commit | f759408c0fa75cc1610b6a598737bf4eec039104 (patch) | |
tree | 981a812ea95c312faa7e3039a3c56b6d872d0bd3 /client-compiler/src | |
parent | d4af8b07d51a1e7b1b4eaa828be596b780afd34f (diff) | |
download | vaadin-framework-f759408c0fa75cc1610b6a598737bf4eec039104.tar.gz vaadin-framework-f759408c0fa75cc1610b6a598737bf4eec039104.zip |
Only add tooltip listeners when needed (#11051)
Change-Id: I2b097ed67d59260390cd939b2f2d844548b5fced
Diffstat (limited to 'client-compiler/src')
3 files changed, 70 insertions, 0 deletions
diff --git a/client-compiler/src/com/vaadin/server/widgetsetutils/ConnectorBundleLoaderFactory.java b/client-compiler/src/com/vaadin/server/widgetsetutils/ConnectorBundleLoaderFactory.java index f8aa586064..2be3bf5a16 100644 --- a/client-compiler/src/com/vaadin/server/widgetsetutils/ConnectorBundleLoaderFactory.java +++ b/client-compiler/src/com/vaadin/server/widgetsetutils/ConnectorBundleLoaderFactory.java @@ -334,6 +334,22 @@ public class ConnectorBundleLoaderFactory extends Generator { writeGetters(logger, w, bundle); writeSerializers(logger, w, bundle); writeDelegateToWidget(logger, w, bundle); + writeHasGetTooltip(logger, w, bundle); + } + + /** + * @deprecated As of 7.0.1. This is just a hack to avoid breaking backwards + * compatibility and will be removed in Vaadin 7.1 + */ + @Deprecated + private void writeHasGetTooltip(TreeLogger logger, SplittingSourceWriter w, + ConnectorBundle bundle) { + Set<JClassType> types = bundle.getHasGetTooltip(); + for (JClassType type : types) { + w.println("store.setHasGetTooltipInfo(%s);", + getClassLiteralString(type)); + w.splitIfNeeded(); + } } private void writeDelegateToWidget(TreeLogger logger, diff --git a/client-compiler/src/com/vaadin/server/widgetsetutils/metadata/ConnectorBundle.java b/client-compiler/src/com/vaadin/server/widgetsetutils/metadata/ConnectorBundle.java index ff91e249b7..f6dc982f15 100644 --- a/client-compiler/src/com/vaadin/server/widgetsetutils/metadata/ConnectorBundle.java +++ b/client-compiler/src/com/vaadin/server/widgetsetutils/metadata/ConnectorBundle.java @@ -63,6 +63,7 @@ public class ConnectorBundle { private final Set<JClassType> needsGwtConstructor = new HashSet<JClassType>(); private final Set<JClassType> visitedTypes = new HashSet<JClassType>(); private final Set<JClassType> needsProxySupport = new HashSet<JClassType>(); + private final Set<JClassType> hasGetTooltip = new HashSet<JClassType>(); private final Map<JClassType, Set<String>> identifiers = new HashMap<JClassType, Set<String>>(); private final Map<JClassType, Set<JMethod>> needsReturnType = new HashMap<JClassType, Set<JMethod>>(); @@ -618,4 +619,38 @@ public class ConnectorBundle { public Set<Property> getNeedsDelegateToWidget() { return Collections.unmodifiableSet(needsDelegateToWidget); } + + /** + * @deprecated As of 7.0.1. This is just a hack to avoid breaking backwards + * compatibility and will be removed in Vaadin 7.1 + */ + @Deprecated + public Set<JClassType> getHasGetTooltip() { + return Collections.unmodifiableSet(hasGetTooltip); + } + + /** + * @deprecated As of 7.0.1. This is just a hack to avoid breaking backwards + * compatibility and will be removed in Vaadin 7.1 + */ + @Deprecated + public void setHasGetTooltip(JClassType type) { + if (!isHasGetTooltip(type)) { + hasGetTooltip.add(type); + } + } + + /** + * @deprecated As of 7.0.1. This is just a hack to avoid breaking backwards + * compatibility and will be removed in Vaadin 7.1 + */ + @Deprecated + private boolean isHasGetTooltip(JClassType type) { + if (hasGetTooltip.contains(type)) { + return true; + } else { + return previousBundle != null + && previousBundle.isHasGetTooltip(type); + } + } }
\ No newline at end of file diff --git a/client-compiler/src/com/vaadin/server/widgetsetutils/metadata/WidgetInitVisitor.java b/client-compiler/src/com/vaadin/server/widgetsetutils/metadata/WidgetInitVisitor.java index 4de9d2ae99..662ecf872b 100644 --- a/client-compiler/src/com/vaadin/server/widgetsetutils/metadata/WidgetInitVisitor.java +++ b/client-compiler/src/com/vaadin/server/widgetsetutils/metadata/WidgetInitVisitor.java @@ -47,6 +47,25 @@ public class WidgetInitVisitor extends TypeVisitor { bundle.setNeedsReturnType(type, getWidget); } + // Hack to detect when getTooltipInfo has a custom implementation + // #11051 + JClassType getTooltipParamType = type.getOracle().findType( + "com.google.gwt.dom.client.Element"); + JMethod getTooltipInfoMethod = findInheritedMethod(type, + "getTooltipInfo", getTooltipParamType); + if (getTooltipInfoMethod == null) { + logger.log(Type.ERROR, "Could not find getTooltipInfo in " + + type.getQualifiedSourceName()); + throw new UnableToCompleteException(); + } + JClassType enclosingType = getTooltipInfoMethod.getEnclosingType(); + if (!enclosingType.getQualifiedSourceName().equals( + AbstractComponentConnector.class.getCanonicalName())) { + logger.log(Type.WARN, type.getQualifiedSourceName() + + " has overridden getTooltipInfo"); + bundle.setHasGetTooltip(type); + } + // Check state properties for @DelegateToWidget JMethod getState = findInheritedMethod(type, "getState"); JClassType stateType = getState.getReturnType().isClass(); |