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
LabelProvider
s 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