package uihelpers; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; public abstract class ToolTipProvider<X> { private final Table table; public ToolTipProvider(Table t) { this.table = t; addListener(); } private void addListener() { Listener tableListener = new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event event) { if (event.type == SWT.MouseHover) { TableItem item = table.getItem(new Point(event.x, event.y)); if (item != null) { X x = (X)item.getData(); table.setToolTipText( getToolTip(x) ); } else { table.setToolTipText(null); } } } }; table.addListener(SWT.MouseHover, tableListener); } protected abstract String getToolTip(X x); }