From: Henri Sara Date: Thu, 23 Feb 2012 11:03:59 +0000 (+0200) Subject: Communicate component description (tooltip) in shared state (#8304). X-Git-Tag: 7.0.0.alpha2~440^2~2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=b93f3668c36d4fe4af6e02da8b0ed70448bbb322;p=vaadin-framework.git Communicate component description (tooltip) in shared state (#8304). --- diff --git a/src/com/vaadin/terminal/gwt/client/ComponentState.java b/src/com/vaadin/terminal/gwt/client/ComponentState.java index 6a228c0564..5f3d0f1673 100644 --- a/src/com/vaadin/terminal/gwt/client/ComponentState.java +++ b/src/com/vaadin/terminal/gwt/client/ComponentState.java @@ -20,8 +20,9 @@ public class ComponentState extends SharedState { private boolean immediate = false; private String style = ""; private boolean disabled = false; + private String description = ""; - // TODO more fields to move here: caption and description + // TODO more fields to move here: caption /** * Returns the component height as set by the server. @@ -200,4 +201,39 @@ public class ComponentState extends SharedState { this.disabled = disabled; } + /** + * Gets the description of the component (typically shown as tooltip). + * + * @see com.vaadin.ui.AbstractComponent#getDescription() + * + * @return component description (not null, can be empty string) + */ + public String getDescription() { + if (description == null) { + return ""; + } + return description; + } + + /** + * Sets the description of the component (typically shown as tooltip). + * + * @see com.vaadin.ui.AbstractComponent#setDescription(String) + * + * @param description + * new component description (can be null) + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * Returns true if the component has a description. + * + * @return true if the component has a description + */ + public boolean hasDescription() { + return !"".equals(getDescription()); + } + } diff --git a/src/com/vaadin/terminal/gwt/client/VCaption.java b/src/com/vaadin/terminal/gwt/client/VCaption.java index d6af82ef28..cb62ddbb26 100644 --- a/src/com/vaadin/terminal/gwt/client/VCaption.java +++ b/src/com/vaadin/terminal/gwt/client/VCaption.java @@ -113,8 +113,6 @@ public class VCaption extends HTML { .hasAttribute(VAbstractPaintableWidget.ATTRIBUTE_ICON); boolean hasText = uidl .hasAttribute(VAbstractPaintableWidget.ATTRIBUTE_CAPTION); - boolean hasDescription = uidl - .hasAttribute(VAbstractPaintableWidget.ATTRIBUTE_DESCRIPTION); boolean showRequired = uidl .getBooleanAttribute(VAbstractPaintableWidget.ATTRIBUTE_REQUIRED); boolean showError = uidl @@ -185,7 +183,7 @@ public class VCaption extends HTML { } if (null != owner) { - if (hasDescription && captionText != null) { + if (owner.getState().hasDescription() && captionText != null) { addStyleDependentName("hasdescription"); } else { removeStyleDependentName("hasdescription"); diff --git a/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidget.java b/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidget.java index 3c331c1ad9..a0cd878f74 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidget.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidget.java @@ -28,7 +28,6 @@ public abstract class VAbstractPaintableWidget implements VPaintableWidget { // these! public static final String ATTRIBUTE_ICON = "icon"; public static final String ATTRIBUTE_CAPTION = "caption"; - public static final String ATTRIBUTE_DESCRIPTION = "description"; public static final String ATTRIBUTE_REQUIRED = "required"; public static final String ATTRIBUTE_ERROR = "error"; public static final String ATTRIBUTE_HIDEERRORS = "hideErrors"; @@ -213,9 +212,8 @@ public abstract class VAbstractPaintableWidget implements VPaintableWidget { // Update tooltip TooltipInfo tooltipInfo = paintableMap.getTooltipInfo(this, null); - if (uidl.hasAttribute(ATTRIBUTE_DESCRIPTION)) { - tooltipInfo - .setTitle(uidl.getStringAttribute(ATTRIBUTE_DESCRIPTION)); + if (getState().hasDescription()) { + tooltipInfo.setTitle(getState().getDescription()); } else { tooltipInfo.setTitle(null); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java b/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java index f916dc1105..1afdb4091b 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java @@ -292,6 +292,7 @@ public class VFormLayout extends SimplePanel implements Container { table.replaceChildComponent(oldComponent, newComponent); } + // TODO why duplicated here? public class Caption extends HTML { public static final String CLASSNAME = "v-caption"; @@ -382,12 +383,10 @@ public class VFormLayout extends SimplePanel implements Container { // TODO should span also be removed } - if (uidl.hasAttribute(VAbstractPaintableWidget.ATTRIBUTE_DESCRIPTION)) { - if (captionText != null) { - addStyleDependentName("hasdescription"); - } else { - removeStyleDependentName("hasdescription"); - } + if (state.hasDescription() && captionText != null) { + addStyleDependentName("hasdescription"); + } else { + removeStyleDependentName("hasdescription"); } if (uidl.getBooleanAttribute(VAbstractPaintableWidget.ATTRIBUTE_REQUIRED)) { diff --git a/src/com/vaadin/terminal/gwt/client/ui/VFormPaintable.java b/src/com/vaadin/terminal/gwt/client/ui/VFormPaintable.java index eb0a91fb04..daf7487ad3 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VFormPaintable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VFormPaintable.java @@ -67,9 +67,9 @@ public class VFormPaintable extends VAbstractPaintableWidgetContainer { getWidgetForPaintable().errorMessage.setVisible(false); } - if (uidl.hasAttribute(ATTRIBUTE_DESCRIPTION)) { - getWidgetForPaintable().desc.setInnerHTML(uidl - .getStringAttribute(ATTRIBUTE_DESCRIPTION)); + if (getState().hasDescription()) { + getWidgetForPaintable().desc.setInnerHTML(getState() + .getDescription()); if (getWidgetForPaintable().desc.getParentElement() == null) { getWidgetForPaintable().fieldSet.insertAfter( getWidgetForPaintable().desc, diff --git a/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java b/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java index 605fe99eb5..5e5830a0f3 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java @@ -65,7 +65,7 @@ public class VMenuBar extends SimpleFocusablePanel implements public static final String OPEN_ROOT_MENU_ON_HOWER = "ormoh"; public static final String ATTRIBUTE_CHECKED = "checked"; - public static final String ATTRIBUTE_ITEM_DESCRIPTION = VAbstractPaintableWidget.ATTRIBUTE_DESCRIPTION; + public static final String ATTRIBUTE_ITEM_DESCRIPTION = "description"; public static final String ATTRIBUTE_ITEM_ICON = VAbstractPaintableWidget.ATTRIBUTE_ICON; public static final String ATTRIBUTE_ITEM_DISABLED = "disabled"; public static final String ATTRIBUTE_ITEM_STYLE = "style"; diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java b/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java index 399037a8ab..cfb1b2f0c1 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java @@ -199,12 +199,12 @@ public class VTabsheet extends VTabsheetBase { @Override public boolean updateCaption(UIDL uidl) { - if (uidl.hasAttribute(VAbstractPaintableWidget.ATTRIBUTE_DESCRIPTION) + if (uidl.hasAttribute(VTabsheetBasePaintable.ATTRIBUTE_TAB_DESCRIPTION) || uidl.hasAttribute(VAbstractPaintableWidget.ATTRIBUTE_ERROR)) { TooltipInfo tooltipInfo = new TooltipInfo(); tooltipInfo .setTitle(uidl - .getStringAttribute(VAbstractPaintableWidget.ATTRIBUTE_DESCRIPTION)); + .getStringAttribute(VTabsheetBasePaintable.ATTRIBUTE_TAB_DESCRIPTION)); if (uidl.hasAttribute(VAbstractPaintableWidget.ATTRIBUTE_ERROR)) { tooltipInfo.setErrorUidl(uidl.getErrors()); } diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTabsheetBasePaintable.java b/src/com/vaadin/terminal/gwt/client/ui/VTabsheetBasePaintable.java index 98f1a305ca..dc48ee56af 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VTabsheetBasePaintable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VTabsheetBasePaintable.java @@ -16,9 +16,7 @@ public abstract class VTabsheetBasePaintable extends VAbstractPaintableWidgetContainer { public static final String ATTRIBUTE_TAB_DISABLED = "disabled"; - // TODO currently, this needs to match ATTRIBUTE_DESCRIPTION as also used in - // captions - public static final String ATTRIBUTE_TAB_DESCRIPTION = VAbstractPaintableWidget.ATTRIBUTE_DESCRIPTION; + public static final String ATTRIBUTE_TAB_DESCRIPTION = "description"; @Override public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { diff --git a/src/com/vaadin/ui/AbstractComponent.java b/src/com/vaadin/ui/AbstractComponent.java index 69eaa8e449..f68c928f8b 100644 --- a/src/com/vaadin/ui/AbstractComponent.java +++ b/src/com/vaadin/ui/AbstractComponent.java @@ -783,12 +783,6 @@ public abstract class AbstractComponent implements Component, MethodEventSource VAbstractPaintableWidget.ATTRIBUTE_ICON, getIcon()); } - if (getDescription() != null && getDescription().length() > 0) { - target.addAttribute( - VAbstractPaintableWidget.ATTRIBUTE_DESCRIPTION, - getDescription()); - } - if (eventIdentifiers != null) { target.addAttribute("eventListeners", eventIdentifiers.toArray()); @@ -893,13 +887,10 @@ public abstract class AbstractComponent implements Component, MethodEventSource sharedState.setStyle(getStyleName()); - // TODO use the rest on the client side + sharedState.setDescription(getDescription()); - // sharedState.setCaption(getCaption()); - // // TODO icon also in shared state - how to convert Resource? - // if (getDescription() != null && getDescription().length() > 0) { - // state.put(ComponentState.STATE_DESCRIPTION, getDescription()); - // } + // TODO sharedState.setCaption(getCaption()); + // TODO icon also in shared state - how to convert Resource? return sharedState; }