aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenri Sara <hesara@vaadin.com>2012-02-23 13:03:59 +0200
committerHenri Sara <hesara@vaadin.com>2012-02-23 13:03:59 +0200
commitb93f3668c36d4fe4af6e02da8b0ed70448bbb322 (patch)
treec5487fc21cf8494841e5327e5c91712792c458ce
parent23ff3340cd8e5d3ce7cc5772b7b4d4e2ba05ec6a (diff)
downloadvaadin-framework-b93f3668c36d4fe4af6e02da8b0ed70448bbb322.tar.gz
vaadin-framework-b93f3668c36d4fe4af6e02da8b0ed70448bbb322.zip
Communicate component description (tooltip) in shared state (#8304).
-rw-r--r--src/com/vaadin/terminal/gwt/client/ComponentState.java38
-rw-r--r--src/com/vaadin/terminal/gwt/client/VCaption.java4
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VAbstractPaintableWidget.java6
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java11
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VFormPaintable.java6
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java2
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java4
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VTabsheetBasePaintable.java4
-rw-r--r--src/com/vaadin/ui/AbstractComponent.java15
9 files changed, 55 insertions, 35 deletions
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;
}