]> source.dussan.org Git - vaadin-framework.git/commitdiff
Communicate component description (tooltip) in shared state (#8304).
authorHenri Sara <hesara@vaadin.com>
Thu, 23 Feb 2012 11:03:59 +0000 (13:03 +0200)
committerHenri Sara <hesara@vaadin.com>
Thu, 23 Feb 2012 11:03:59 +0000 (13:03 +0200)
src/com/vaadin/terminal/gwt/client/ComponentState.java
src/com/vaadin/terminal/gwt/client/VCaption.java
src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidget.java
src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java
src/com/vaadin/terminal/gwt/client/ui/VFormPaintable.java
src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java
src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java
src/com/vaadin/terminal/gwt/client/ui/VTabsheetBasePaintable.java
src/com/vaadin/ui/AbstractComponent.java

index 6a228c0564a92002f0cc3c52c71161b85a268646..5f3d0f1673bab81fdb7d5445f3c99b171fa113dc 100644 (file)
@@ -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());
+    }
+
 }
index d6af82ef28340afca6459b194ab9038ec8a898d5..cb62ddbb26b6f791c2d317ea20b7bddd5efc22f6 100644 (file)
@@ -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");
index 3c331c1ad9c4f7e4c22b76d22ce25018ab5aeec8..a0cd878f74d949d5835c7e1c6600607e300e9976 100644 (file)
@@ -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);
         }
index f916dc11057a02bc1a3339764f3459681cba74ec..1afdb4091b7f430a17c071ea4135c63e5d82b64a 100644 (file)
@@ -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)) {
index eb0a91fb04928e12605ec05911428560c1e6b4f8..daf7487ad3e1949bc94a60a55ba7c13dd016ea75 100644 (file)
@@ -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,
index 605fe99eb5fce07adc808954fd13247f94122aff..5e5830a0f332c6b2aedd9b22a50dc3c733d5221d 100644 (file)
@@ -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";
index 399037a8abde64adf11addc553dbb7baabe87f29..cfb1b2f0c1ae66d01a1094f785fca8ee278933d1 100644 (file)
@@ -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());
                 }
index 98f1a305cadc897aefd59ba2c121ce89d50402eb..dc48ee56af860107a7357a9eea22b1e74cf66675 100644 (file)
@@ -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) {
index 69eaa8e449b0db802f8e2008f1fd56bc1468e138..f68c928f8b51f6546fbec57c7fd6048ea0bf6a68 100644 (file)
@@ -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;
     }