Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add a tooltip for TableViewer cell's in Java SWT

Tags:

java

swt

jface

I have a TableViewer where each row represents different values. The string being kinda long, I would like that when I hover the mouse over the specific cell, a tooltip should pop-up with the information from the cell.

I wrote this code but tooltip is not displayed and getToolTipText method is never executed:

columnMessage.setLabelProvider(new ColumnLabelProvider()
{
    @Override
    public void update(ViewerCell cell)
    {
       // ... as now
    }

    @Override
    public String getToolTipText(Object element)
    {
       return getText(element);
    }
});
like image 916
Vishal89 Avatar asked Dec 25 '22 20:12

Vishal89


1 Answers

For TableViewer add a call to enable tool tips with:

ColumnViewerToolTipSupport.enableFor(viewer);

where viewer is your table viewer.

This requires that your label provider(s) for the table are derived from CellLabelProvider (or one of the classes derived from that such as ColumnLabelProvider).

You can then override a number of methods in the label provider to control the tool tips:

public String getToolTipText(Object element)

to return the text.

public Image getToolTipImage(Object object)
public Color getToolTipBackgroundColor(Object object)
public Color getToolTipForegroundColor(Object object)
public Font getToolTipFont(Object object)
public int getToolTipStyle(Object object)

for images, colors, fonts and style

public Point getToolTipShift(Object object)
public int getToolTipTimeDisplayed(Object object)
public int getToolTipDisplayDelayTime(Object object)

to control the tool tip offset, and when it is displayed.

There are defaults for all of these so getToolTipText is the only one you really need to override.

So for your code you might do:

columnMessage.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            ... as now
        }

        @Override
        public String getToolTipText(Object element)
        {
           // TODO return the tool tip text for 'element'
        }

        @Override
        public String getText(Object element)
        {
          // TODO get text from 'element'
        }
    });
}
like image 190
greg-449 Avatar answered Dec 31 '22 11:12

greg-449