ContentProvider verursacht Fehler

killahaks

Grünschnabel
Hallo alle miteinander,
ich habe ein Problem bei der Benutzung eines TreeViewer Objektes. Ich kann das Objekt anlegen, aber sobald ich einen ContentProvider setzen möchte bekomme ich einen Assertion Fehler.
Schonmal danke für die hilfreichen Antworten im vorraus.

Mein ContentProvider:
Code:
class ViewContentProvider implements IStructuredContentProvider {
		
		public ViewContentProvider(){
			
		}
		
		public void inputChanged(Viewer v, Object oldInput, Object newInput) {
		
		}
		public void dispose() {
		
		}
		public Object[] getElements(Object parent) {
			return new String[] { "One", "Two", "Three" };
		}
	}

Mein Aufruf:
Code:
 //Build TreeViewer in Composite number three
	    viewer=new TreeViewer(threeComposite,SWT.MULTI|SWT.V_SCROLL|SWT.H_SCROLL);
	    
	    
	    viewer.setLabelProvider(new ViewLabelProvider());
	    
	    viewer.setContentProvider(new ViewContentProvider());

Anfang der Fehlermeldung:
Code:
org.eclipse.jface.util.Assert$AssertionFailedException: Assertion failed: 
	at org.eclipse.jface.util.Assert.isTrue(Assert.java:180)
	at org.eclipse.jface.util.Assert.isTrue(Assert.java:165)
	at org.eclipse.jface.viewers.AbstractTreeViewer.setContentProvider(AbstractTreeViewer.java:1534)
	at jetzt.views.SampleView.createPartControl(SampleView.java:209)
	at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:305)
 
Hallo,

für einen TreeViewer muss Dein ContentProvider den ITreeContentProvider implementieren.

Grüße
Vincent
 
Hi,
dankeschön die Fehlermeldung ist nun weg. Ich bekomme jetzt ein weisses Kästchen in meinem Composite.Nur leider hat das Kästchen keinen Inhalt.
Ich rufe folgendes auf.
Code:
 //Build TreeViewer in Composite number three
	    viewer=new TreeViewer(threeComposite,SWT.MULTI|SWT.V_SCROLL|SWT.H_SCROLL);
	    
	    
	    viewer.setLabelProvider(new ViewLabelProvider());
	    
	    viewer.setContentProvider(new ViewContentProvider());
	    viewer.setInput(null);
	    viewer.refresh();
Ich übergebe null da ich als return zum probieren eh einen festen String habe.
Was mach ich falsch?
 
mit dem setInput() gibst du den inhalt der Tablle an, wenn der null, wird in deiner tablle nix angezeigt und deswegen hast du ein weißes Kästchen
 
Damit Du in dem Tree was siehst, musst Du zusätzlich noch die Methoden hasChildren() und getChildren() in dem ContentProvider implementieren, die werden nämlich aufgerufen, wenn der Baum gerendert wird.

Grüße
Vincent
 
Zurück