Hi,
bereits seit einiger Zeit habe ich einen TreeViewer in Verwendung, der für das bisherige Problem immer gut geklappt hat - hier mal ein sehr stark vereinfachtes Beispiel:
Gehen wir mal davon aus, dass beim Hinzufügen immer das parent-Attribut gesetzt wird, wir also immer den Elternknoten kennen.
Mein TreeContentProvider arbeitet nun wie folgt:
(Ich weiß, der Programmierstil ist vielleicht nicht der Beste im Beispiel, soll aber nur das Problem aufzeigen)
In diesem Beispiel werden nur die Child-Elemente angezeigt, wenn ich als Input ein Root übergebe.
Ich möchte das Root-Element aber auch sehen und hab es bisher nicht hinbekommen.
Gibt es - ausser noch ein weiteres künstliches ÜberRoot-Element anzulegen - noch einen Trick den Root anzuzeigen???
Vielen Dank schon mal!
Daniel
bereits seit einiger Zeit habe ich einen TreeViewer in Verwendung, der für das bisherige Problem immer gut geklappt hat - hier mal ein sehr stark vereinfachtes Beispiel:
Java:
public class Root {
public List<Child> children;
}
public class Child {
public Object parent;
public List<Child> children;
}
Gehen wir mal davon aus, dass beim Hinzufügen immer das parent-Attribut gesetzt wird, wir also immer den Elternknoten kennen.
Mein TreeContentProvider arbeitet nun wie folgt:
Java:
public class TreeContentProvider implements ITreeContentProvider {
@override
public Object[] getChildren(Object parentElement) {
if (parentElement instanceof Root) {
return ((root) parentElement).children.toArray();
} else if (parentElement instanceof Child) {
return ((Child) parentElement).children.toArray();
}
}
@Override
public Object getParent(Object element) {
if (element instanceof Filter) {
return ((Child) element).parent;
}
return null;
}
@Override
public boolean hasChildren(Object element) {
if (element instanceof Root) {
return !((Root) element).children.isEmpty();
} else if (element instanceof Child) {
return !((Child) element).children.isEmpty();
}
}
@Override
public Object[] getElements(Object inputElement) {
return getChildren(inputElement);
}
}
(Ich weiß, der Programmierstil ist vielleicht nicht der Beste im Beispiel, soll aber nur das Problem aufzeigen)
In diesem Beispiel werden nur die Child-Elemente angezeigt, wenn ich als Input ein Root übergebe.
Ich möchte das Root-Element aber auch sehen und hab es bisher nicht hinbekommen.
Gibt es - ausser noch ein weiteres künstliches ÜberRoot-Element anzulegen - noch einen Trick den Root anzuzeigen???
Vielen Dank schon mal!
Daniel
Zuletzt bearbeitet: