0

I'm developing a tree based on TreeViewer and created myLabelProvider which extends LabelProvider and then use viewer.setLabelProvider(new ViewLabelProvider());, but all the nodes are still displayed with normal plain style.

Code:

class ViewLabelProvider extends LabelProvider implements ITableLabelProvider, ITableFontProvider{

    public String getText(Object obj) {
        return obj.toString();
    }

    public Image getImage(Object obj) {
        return null;
    }

    public Font getFont(Object element, int columnIndex) {
        FontRegistry registry = new FontRegistry();
        return registry.getBold(Display.getCurrent().getSystemFont().getFontData()[0].getName());
    }

    public Image getColumnImage(Object element, int columnIndex) {
        return null;
    }

    public String getColumnText(Object element, int columnIndex) {
        return null;
    }
}

References:

http://www.eclipsezone.com/eclipse/forums/t95078.html
How do I make part of a TreeViewer cell bold?

Can anyone give some advice?

Community
  • 1
  • 1
Sam Su
  • 6,532
  • 8
  • 39
  • 80

2 Answers2

1

If you are just using a single column then make your label provider implement IFontProvider (and perhaps IColorProvider)

public Font getFont(Object element) {
   return font or null to use default
}

Note: If you create any fonts be sure to dispose of them when your are done.

greg-449
  • 109,219
  • 232
  • 102
  • 145
0

Maybe

public String getColumnText(Object element, int columnIndex)
{
 if (columnIndex == 0)
  return getText(element);
 return null;
}
Severin
  • 296
  • 2
  • 8
  • the 3 methods `getFont` `getColumnImage` `getColumnText` is never called in my labelProvider – Sam Su Mar 27 '14 at 06:35
  • Do you have columns in your TreeViewer? Is it constructed by TreeViewer(Tree tree) constructor, where tree has several columns? If no, maybe you need just IFontProvider – Severin Mar 27 '14 at 07:40
  • I don't have columns in my tree. It's just a hierarchy tree like the `Package Explorer` tree. – Sam Su Mar 27 '14 at 07:43