JFace TreeViewer läßt sich nicht befüllen....

Hallo Leute ich habe einen JFace Treeviewer und möchte diesen aus meinem Model befüllen. Das Model besteht aus einer Hashmap mit dem Schlüssel Car (Bsp: Audi oder Opel) und den jeweiligen Values (Bsp: A4, A5 oder Astra, Calibra)

Ich möchte das ganze jetzt als TRee im Format
Audi
A4​
A5​
Opel
Astra​
Calibra​
VW
Golf​
Passat​

Aber ich komme mit dem Contentprovider nicht klar... Ich hab keine Ahnung was ich in den Methoden schreiben soll. Kann mir jemand helfen?

Model siehe unten



ausgeben

Code:
public class CarModel {
	
	private static CarModel instance;
	private Map<Car, List<CarDerivate>> cars = new HashMap<Car, List<CarDerivate>>();

	
	
	public synchronized static CarModel getInstance(){
		if ( instance == null ){
			instance = new CarModel ();
		}
		return instance;
	}
	
	//Gibt eine Liste der Schlüssel zurück (also eine Liste der Autos)
	public List<Car> getCars(){
		List<Car> carList= new ArrayList<Car>();
		carList.addAll(cars.keySet());
		
		Collections.sort(carList, new MyCarComparator()); 
		
		return carList;
	}
	
        //Gibt eine Liste der Modelle zurück, für ein übergebenes Auto
	public List<CarDerivate> getCarDerivateByCar(Car car){
		Collections.sort(cars.get(car), new MyCarDerivateComparator());
		return cars.get(car);
	}
	
	
	
	
}
 
Hi

Ich kann dir leider nicht mit Code dienlich sein...is schon ne Weile her dass ich JFace benutzt habe (leider).

Der ContentProvider is eigentlich recht simpel, da er lediglich deine Objekte verwaltet und sie in der korrekten Reihenfolge zurückgibt (oder im Fall des Baumes im korrekten Zweig).
Da der Baum aus unterschiedlichen Objekten besteht musst du hier nur prüfen von welchem Typ (instance) das aktuelle Objekt ist. Wenn es sich um ein Knotenelement handelt gibt dieses eine Liste mit allen Kindern zurück.

Für die Anzeige ist der LabelProvider zuständig. In diesem musste du dann lediglich sagen welches Attribut deines Objektes ausgegeben werden soll (kann natürlich auch aus mehreren zusammengesetzt sein).

Schau dir mal dieses Tutorial an (falls du es nicht schon hast). Hat mir damals sehr geholfen.

Um noch einmal auf dein Beispiel einzugehen. Deine Knoten sind jeweils einzelne Listen welche die Fahrzeuge je nach Hersteller enthalten (korrekt füllen musst du das vorher).
Diese Listen enthalten dann die Objekte (Klasse fahrzeug) und der Labelprovider gibt vehicle.getType() zurück
 
Zuletzt bearbeitet:
Zurück