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$