Das Aussehen eines Knotens in einem
TreeViewer wird mit einem LabelProvider gesteuert. Der LabelProvider wird mit der Methode setLabelProvider der Klasse TreeViewer gesetzt.
// deklaration des TreeViewers in einer View Klasse
public TreeViewer viewer;
...
// createPartControl Methode der View Klasse
public void createPartControl(Composite parent) {
...
viewer.setLabelProvider(new ViewLabelProvider());
...
}
Die Aufgaben des
LabelProviders werden von den geerbten Klassen bzw. den implementierten Interfaces bestimmt. Die Klasse LabelProvider bietet die Methoden getText und getImage, mit denen der Text und das Bild bestimmt werden können. Der Übergabeparameter obj vom Typ Object ist das TreeElement, dass einen Knoten im Tree repräsentiert.
In der hier gezeigten Implementierung liefert der Parameter
obj den Text der im Label angezeigt wird, bzw. das Image das zum Label angezeigt wird. Würde man in der Methode getImage immer das gleiche Bild zurückgeben, dann würde der TreeViewer das gleiche Bild für alle Knoten anzeigen.
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
class ViewLabelProvider extends LabelProvider implements IColorProvider {
@Override
public String getText(Object obj) {
return obj.toString();
}
@Override
public Image getImage(Object obj) {
Image img = ((TreeObject)obj).getIcon();
return img;
}
@Override
public Color getForeground(Object element) {
return new Color(PlatformUI.getWorkbench().getDisplay(),
new RGB(255,255,255));
}
@Override
public Color getBackground(Object element) {
return new Color(PlatformUI.getWorkbench().getDisplay(),
new RGB(100,100,100));
}
}
Die Methoden
getForeground und getBackground bestimmen die Schriftfarbe
und die Hintergrundfarbe.
Es sollte beachtet werden, dass Bilder und Farben in einer Eclipse RCP Applikation verwaltet werden sollten. Das bedeutet, dass einmal erstellte Farben und Bilder wieder freigegeben werden sollten. Mehr dazu im Bilder verwalten Artikel und im Artikel zur Farbverwaltung