Fix for Bug 170668 [DataBinding] [Patch] Add SWTObservables.observeTooltipText()
diff --git a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/swt/SWTObservables.java b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/swt/SWTObservables.java
index 7598e0c..d758801 100644
--- a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/swt/SWTObservables.java
+++ b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/swt/SWTObservables.java
@@ -7,6 +7,7 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Matt Carter - bug 170668
*******************************************************************************/
package org.eclipse.jface.databinding.swt;
@@ -83,6 +84,14 @@
public static ISWTObservableValue observeVisible(Control control) {
return new ControlObservableValue(control, SWTProperties.VISIBLE);
}
+
+ /**
+ * @param control
+ * @return
+ */
+ public static ISWTObservableValue observeTooltipText(Control control) {
+ return new ControlObservableValue(control, SWTProperties.TOOLTIP_TEXT);
+ }
/**
* @param spinner
diff --git a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/internal/swt/ControlObservableValue.java b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/internal/swt/ControlObservableValue.java
index 06e28c5..eb44eaf 100644
--- a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/internal/swt/ControlObservableValue.java
+++ b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/internal/swt/ControlObservableValue.java
@@ -8,6 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
* Brad Reynolds - bug 164653
+ * Matt Carter - bug 170668
*******************************************************************************/
package org.eclipse.jface.internal.databinding.internal.swt;
@@ -34,7 +35,7 @@
this.control = control;
this.attribute = attribute;
if (!attribute.equals(SWTProperties.ENABLED)
- && !attribute.equals(SWTProperties.VISIBLE)) {
+ && !attribute.equals(SWTProperties.VISIBLE) && !attribute.equals(SWTProperties.TOOLTIP_TEXT)) {
throw new IllegalArgumentException();
}
}
@@ -45,18 +46,24 @@
control.setEnabled(((Boolean) value).booleanValue());
} else if (attribute.equals(SWTProperties.VISIBLE)) {
control.setVisible(((Boolean) value).booleanValue());
+ } else if (attribute.equals(SWTProperties.TOOLTIP_TEXT)) {
+ control.setToolTipText((String) value);
}
fireValueChange(Diffs.createValueDiff(oldValue, value));
}
public Object doGetValue() {
- boolean value = attribute.equals(SWTProperties.ENABLED) ? control
- .getEnabled() : control.getVisible();
- return value ? Boolean.TRUE : Boolean.FALSE;
+ if (attribute.equals(SWTProperties.ENABLED)) {
+ return control.getEnabled() ? Boolean.TRUE : Boolean.FALSE;
+ }
+ if (attribute.equals(SWTProperties.VISIBLE)) {
+ return control.getVisible() ? Boolean.TRUE : Boolean.FALSE;
+ }
+ return control.getToolTipText();
}
public Object getValueType() {
- return Boolean.TYPE;
+ return attribute.equals(SWTProperties.TOOLTIP_TEXT) ? String.class : Boolean.TYPE;
}
}
diff --git a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/internal/swt/SWTProperties.java b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/internal/swt/SWTProperties.java
index 5f8ac15..518d57a 100644
--- a/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/internal/swt/SWTProperties.java
+++ b/bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/internal/swt/SWTProperties.java
@@ -7,6 +7,7 @@
*
* Contributors:
* IBM Corporation - initial API and implementation
+ * Matt Carter - bug 170668
*******************************************************************************/
package org.eclipse.jface.internal.databinding.internal.swt;
@@ -27,6 +28,10 @@
*/
public static final String VISIBLE = "visible"; //$NON-NLS-1$
/**
+ * Applies to Control
+ */
+ public static final String TOOLTIP_TEXT = "tooltip"; //$NON-NLS-1$
+ /**
* Applies to
*/
public static final String ITEMS = "items"; //$NON-NLS-1$