SWT -> JFace: TreeViewer

Status
Nicht offen für weitere Antworten.

byte

Top Contributor
Hallo,

Ich möchte meine Datenstruktur mit einem TreeViewer darstellen. Das klappt auch soweit ganz gut, trotzdem habe ich noch ein Problem, das ich bisher nicht zufriedenstellend lösen konnte. Zunächst einmal eine vereinfachte Beschreibung der Datenstruktur:

Code:
class A {
  String name;
  List[B] elements;
  ...
}

class B {
  String name;
  ...
}

Knoten eines Objekts von A sollen nun nicht direkt die Objekte von B als Unterknoten besitzen sondern diese sollen nochmal der Übersichtlichkeit halber in einem Knoten "Liste" gekaspelt sein.

Hier Auszüge aus dem Content und LabelProvider:

Code:
//ContentProvider:

public Object[] getChildren(Object o) {
  if(o instanceof A) {
    A a = (A) o;
    return new Object[] { a.getElements() };
  } else if(o instanceof List) {
    List l = (List) o;
    return l.toArray();
  } else {
    return null;
  }
}

Code:
//LabelProvider:

public String getText(Object o) {
  if(o instanceof A) {
    A a = (A) o;
    return a.getName();
  } else if(o instanceof B) {
    B b = (B) o;
    return b.getName();
  } else if(o instanceof List) {
    List l = (List) o;
    return "...";       // <------ Hier möchte ich gerne den generischen Typ der Liste als Name ausgeben
  } else {
    return null;
  }
}


Das Ganze sieht natürlich recht unschön aus, aber ich sehe keine andere Möglichkeit als die instanceof Prüfungen. Oder kann man das auch irgendwie eleganter lösen?

Außerdem müsste ich entsprechend den generischen Typ der Liste auslesen, um den Knoten entsprechend je nach Liste zu benennen.

Würde mich über Vorschläge freuen.

Frohe Ostern weiterhin ... ;)
 
G

Guest

Gast
Statt
Code:
List l = (List) o; 
return "...";
kannst du folgendes schreiben
Code:
String className = o.getClass().getName();
return className.substring(className.lastIndexOf(".")+1);
dann kriegstdu z.B. "ArrayList" als Ausgabe.
Oder meinst du was anderes?

Das mit dem instanceof ist schon OK so. Du könntest zwar mit IAdapterFactory und
IWorkbenchAdapter arbeiten, das geht aber mehr in Richtung Plugins bzw. RCP.
 

byte

Top Contributor
Ich hab mich vielleicht etwas unklar ausgedrückt. Ich habe z.B. Listen die Funktionsobjekte halten
Code:
List<Function>

Im Tree soll dann Functions als Knoten stehen (nicht List) und dann als Unterknoten die Inhalte der Liste (in diesem Fall also die Function Objekte).

Ich müsste also den Typ der Listenelemente kennen. Mir fällt jedoch keine Lösung dazu ein ausser dass ich mir die Elemente der Liste angucke. Das funktioniert ja auch, aber wenn die Liste leer ist, hab ich ein Problem.
 
G

Guest

Gast
Puuh, ich weiss jetzt, was du meinst. Keine Ahnung, wie man an die Deklaration rankommt.
Die Methoden von Class liefern alles, nur nicht die Generics und wenn dann in der abstrahierten
Form wie z.B. add(E). Wofür dieses E steht, konnte ich zur Laufzeit nicht herausfinden.
Aus Neugier habe ich mir paar Sachen angeschaut. Es gibt in java.lang.reflect paar Interfaces
wie ParameterizedType, TypeVariable, WildcardType aber das ganze scheint sich im Kreis
zu drehen.
z.B:
Code:
List<Integer> list = new ArrayList<Integer>();
Class clazz = list.getClass();
for(TypeVariable v : clazz.getTypeParameters())
{
  System.out.println(v); // Ausgabe: E
  System.out.println(v.getClass()); // Ausgabe: sun.reflect.generics.reflectiveObjects.TypeVariableImpl
  System.out.println(((sun.reflect.generics.reflectiveObjects.TypeVariableImpl)v).getGenericDeclaration()); // Ausgabe: java.util.ArrayList ????
}
Spätestens bei der letzten Ausgabe hätte ich was anderes erwartet. ???:L
Es würde mich auch interessieren. Wenn jemand es weiss, wie man an die Deklaration
im Klartext rankommt, dann bitte melden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A SWT Eclipse JFace Binding TreeViewer AWT, Swing, JavaFX & SWT 4
S SWT/JFace TreeViewer: Rootknoten anzeigen AWT, Swing, JavaFX & SWT 10
S SWT/JFace TreeViewer-Problem AWT, Swing, JavaFX & SWT 2
V SWT (JFace): Foreground des Textes im TreeViewer ändern. AWT, Swing, JavaFX & SWT 2
B JFace Bezugsquelle AWT, Swing, JavaFX & SWT 5
A JFace/SWT: ListViewer Inhalt nach Selection in zweitem List Viewer aktualisieren! AWT, Swing, JavaFX & SWT 5
A JFace Wizard: Ist es möglich eine Page zu löschen? AWT, Swing, JavaFX & SWT 2
M Filter in die JFace/SWT Tabelle einbauen AWT, Swing, JavaFX & SWT 5
I SWTBot und JFace AWT, Swing, JavaFX & SWT 2
lumo SWT JFace Databinding +Custom Table AWT, Swing, JavaFX & SWT 2
E JFace ListSelectionDialog & Mouse-Events? AWT, Swing, JavaFX & SWT 2
M SWT /Jface Wann einen ColumnLabelProvider benutzen? AWT, Swing, JavaFX & SWT 2
K SWT/JFace AWT, Swing, JavaFX & SWT 8
J SWT JFace Tree in Section unsichtbar (Eclipse Forms) AWT, Swing, JavaFX & SWT 5
J Welche Fallstricke gibt es bei TreeTables in SWT/JFace AWT, Swing, JavaFX & SWT 3
M SWT Jface Action und localised Strings AWT, Swing, JavaFX & SWT 6
M sortierbare Tabelle mit jface und databinding AWT, Swing, JavaFX & SWT 3
B Sudokuartiger View (RadiobuttonTableView) mit JFace Viewer? AWT, Swing, JavaFX & SWT 3
D SWT JFace TableViewer nächster CellEditor nach Enter aktivieren AWT, Swing, JavaFX & SWT 5
D SWT JFace Wizard Progressbar AWT, Swing, JavaFX & SWT 4
E SWT JFace TitleAreaDialog OK Button sperren AWT, Swing, JavaFX & SWT 3
N swt und awt in JFace ummodeln AWT, Swing, JavaFX & SWT 13
V SWT/JFace Interessante Links AWT, Swing, JavaFX & SWT 3
dzim JFace ListViewer-Einträge mit CellEditor? AWT, Swing, JavaFX & SWT 3
X RCP/SWT/JFace: Sprache lässt sich nicht ändern AWT, Swing, JavaFX & SWT 3
dzim NullPointer bei refresh() einer JFace TableViewer AWT, Swing, JavaFX & SWT 2
dzim JFace TableViewer mit verschiedenen Inhalten AWT, Swing, JavaFX & SWT 4
L Frage zu Erstellung des Menu mit JFace AWT, Swing, JavaFX & SWT 2
A Jface: Wie Inhalt des Hauptbereichs verändern AWT, Swing, JavaFX & SWT 5
M JFace TableViewer + ContentProvider, wo sind die Spalten? AWT, Swing, JavaFX & SWT 6
S JFace Startprobleme AWT, Swing, JavaFX & SWT 2
G HTML-Link mit SWT bzw. JFACE AWT, Swing, JavaFX & SWT 4
G Dynamic Help mit SWT/JFace AWT, Swing, JavaFX & SWT 5
G JFace/SWT contra AWT/Swing AWT, Swing, JavaFX & SWT 10
F [jFace] ListViewer: zusätzliche Infos anzeigen lassen AWT, Swing, JavaFX & SWT 2
D JDIC Browser in SWT/JFace Anwendung nutzen AWT, Swing, JavaFX & SWT 2
J Fehler bei Applikationen mit JFace AWT, Swing, JavaFX & SWT 2
G JFace benutzen, aber wie! AWT, Swing, JavaFX & SWT 2
V SWT (JFace): bekomme das FormLayout nicht hin. AWT, Swing, JavaFX & SWT 4
L (jface) InputDialog erweitern. AWT, Swing, JavaFX & SWT 2
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
B Treeviewer SWT AWT, Swing, JavaFX & SWT 2
R SWT TreeViewer neuen Input setzen AWT, Swing, JavaFX & SWT 3
B SWT TreeViewer dynamische Anzeige von Icons AWT, Swing, JavaFX & SWT 3
D SWT TreeViewer: Daten aus Model gelöscht... trotzdem noch im Baum AWT, Swing, JavaFX & SWT 4
maestr0 Treeviewer nach Kategorien sortieren AWT, Swing, JavaFX & SWT 6
G SWT TreeViewer - drop listener austauschen AWT, Swing, JavaFX & SWT 2
T TreeViewer knoten manuell umsortieren AWT, Swing, JavaFX & SWT 4
F SWT Drag and Drop im TreeViewer AWT, Swing, JavaFX & SWT 4
K SWT treeviewer scrollen AWT, Swing, JavaFX & SWT 8
L SWT Filter zur TreeViewer hinzufügen AWT, Swing, JavaFX & SWT 9
T SWT TreeViewer select columns AWT, Swing, JavaFX & SWT 2
V SWT TreeViewer Drag'n'Drop LocalSelectionTransfer AWT, Swing, JavaFX & SWT 10
R TreeViewer in SWT: Default Selection eines Items AWT, Swing, JavaFX & SWT 3
S Drag&Drop bei TreeViewer AWT, Swing, JavaFX & SWT 10
G treeviewer aus tabelle AWT, Swing, JavaFX & SWT 8
B TreeViewer für das Dateisystem, der sich selbst aktualisiert AWT, Swing, JavaFX & SWT 8
R SWT-TreeViewer Doppelklick verarbeiten AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben