Problem mit ListViewer und IFontProvider

MartinMueller

Grünschnabel
Hallo,

ich hab ein Problem mit ListViewer und IFontProvider. Ich möchte die Labels in meiner Liste, abhängig vom Wert des Objects, fett oder kursiv darstellen. Also hab ich mir einen LabelProvider erstellt, der die Schnittstelle IFontProvider implementiert. Jedoch funktioniert das leider nicht. Die entsprechende Methode getFont() wird gar nicht aufgerufen.

Meine View-Klasse in der ich den ListViewer erstelle und den LabelProvider zuweise:
Java:
public class MyPage extends WizardPage{

 ...

 public void createControl(Composite parent) {
  ...
  ListViewer myListViewer = new ListViewer(composite, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER);
  myListViewer.setLabelProvider(new MyLabelProvider());
  myListViewer.setContentProvider(new ArrayContentProvider());
  myListViewer.setInput(aList);
  ...
}

Mein LabelProvider:

Java:
public class MyLabelProvider extends LabelProvider implements IFontProvider {

	private Font bold;
	private Font italic;
	
	public FileTypeListLabelProvider(){
		bold = new Font(null, "Arial", 8, SWT.BOLD);
		italic = new Font(null, "Arial", 8, SWT.ITALIC);
	}
	
	@Override
	public String getText(Object element) {
		return ((MyElement)element).getName();
	}

	@Override
	public Font getFont(Object element) {
        //die moethode wird gar nicht erst aufgerufen
		MyElement e =(MyElement) element;
		if(e.isRequired()){
			return bold;
		}
		if(e.isNew()){
			return italic;
		}
		return null;
	}
}

Ich hab auch schon statt dem IFontProvider den IFontDecorator probiert. Mit dem selben Ergebnis.
Weiß jemand, woran das liegt? Mache ich da vielleicht einen ganz dummen Fehler?
Bei meinen TableViewern funktioniert das mit den Fonts nämlich ohne Probleme. :confused:

Grüße
Martin
 
Zurück