SWT/JFace TreeViewer: Rootknoten anzeigen

Status
Nicht offen für weitere Antworten.

SamHotte

Top Contributor
Anscheinend bin ich zu bräsig, es selbst zu finden, aber weder hier noch bei Google bin ich fündig geworden:

Wie schalte ich beim TreeViewer den Wurzelknoten ein (beim Swing.JTree gibt's sowas wie "setRootVisible()")?

Besten Dank!
 

Clip

Bekanntes Mitglied
meines wissens nach wird der rootknoten bei swt nie angezeigt, und kann auch nicht angezeigt werden.
wie gesagt, meines wissens nach...
 

byte

Top Contributor
Das kann man doch beliebig über Content- und LabelProvider steuern, was im Baum angezeigt werden soll und was nicht. ???:L
 

SamHotte

Top Contributor
Und wie baut man die Provider so, dass es es anzeigt? Ich probier' mir da schon 'nen Wolf ...

Bei mir kommen leider immer nur die Blätter der ersten Ebene (und alles darunter liegende), was bei leerem Baum ein Problem ist, da mein Programm nur Knoten einfügen lässt, wenn ein Vaterknoten ausgewählt ist (und das soll auch so bleiben).
 

byte

Top Contributor
Zeig doch mal Deine Content- und LabelProvider. So pauschal kann ich da wenig zu sagen.

Evtl. hilft Dir das hier auf die Sprünge:

The difference between this method and IStructuredContentProvider.getElements is that getElements is called to obtain the tree viewer's root elements, whereas getChildren is used to obtain the children of a given parent element in the tree (including a root).
 

SamHotte

Top Contributor
ContentProvider:
Code:
public class MerkmalsbaumContentProvider implements ITreeContentProvider {

    private static final Logger LOGGER = Logger
            .getLogger(MerkmalsbaumContentProvider.class);

    public Object[] getChildren(Object parentElement) {
        Helper.pruefeParameter(parentElement);
        Object[] result = new Object[0];
        if (parentElement instanceof IMerkmalsbaumKnoten) {
            IMerkmalsbaumKnoten parent = (IMerkmalsbaumKnoten) parentElement;
            result = parent.getKindknoten();
        } else {
            LOGGER.error(Meldung.FALSCHER_PARAMETERTYP
                    + parentElement.getClass().toString());
        }
        return result;
    }

    public Object getParent(Object element) {
        Helper.pruefeParameter(element);
        Object result = null;
        if (element instanceof IMerkmalsbaumKnoten) {
            IMerkmalsbaumKnoten node = (IMerkmalsbaumKnoten) element;
            result = node.getElternknoten();
        } else {
            LOGGER.error(Meldung.FALSCHER_PARAMETERTYP
                    + element.getClass().toString());
        }
        return result;
    }

    public boolean hasChildren(Object element) {
        return getChildren(element).length > 0;
    }

    public void dispose() {
        // scheint nicht benötigt zu sein.
    }

    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        // scheint nicht benötigt zu sein.
    }

    public Object[] getElements(Object inputElement) {
        return getChildren(inputElement);
    }

}

(Helper.pruefeParameter(..) wirft eine IllegalArgumentException, wenn das Argument null ist.)

LabelProvider:
Code:
public class MerkmalsbaumLabelProvider
        implements ILabelProvider
{

    public Image getImage (Object element) {
        Image result = null;
        if (element instanceof IMerkmalsbaumKnoten) {
            IMerkmalsbaumKnoten node = (IMerkmalsbaumKnoten) element;
            if (node.isBlatt()) {
                result = Helper.getImageRegistry().get(Helper.ICON_DATEI);
            } else {
                result = Helper.getImageRegistry().get(Helper.ICON_ORDNER);
            }
        }
        return result;
    }

    public String getText (Object element) {
        return element.toString();
    }

    public void addListener (ILabelProviderListener listener) {
        // wird anscheinend nicht gebraucht
    }

    public void dispose () {
        // wird anscheinend nicht gebraucht
    }

    public boolean isLabelProperty (Object element, String property) {
        // wird anscheinend nicht gebraucht
        return false;
    }

    public void removeListener (ILabelProviderListener listener) {
        // wird anscheinend nicht gebraucht
    }

}

Hab' ich analog zu Beispielen aus dem Web bwt. "JFace in Action" gebaut. Funzt eigentlich soweit, bis auf den Rootknoten ...
 

byte

Top Contributor
Wenn mich nicht alles täuscht, dann überspringst Du hier das Root Element, indem Du direkt die Kinder besorgst. Die getElements() ist die Methode, die zuerst am Anfang aufgerufen wird wenn mit setInput() der Inhalt gesetzt wird und bestimmt quasi das/die Root-Elemente des Baums.

Code:
public Object[] getElements(Object inputElement) {
        return getChildren(inputElement);
    }
 

SamHotte

Top Contributor
Das kann sein. Allerdings weiß ich nicht wirklich, was ich stattdessen dort hineinschreiben soll ... wenn ich das bisherige durch
Code:
public Object[] getElements(Object inputElement) {
//        return getChildren(inputElement);
        Object[] result = new Object[1];
        result[0] = inputElement;
        return result;
    }
ersetze, zeigt er mir die Wurzel an - und die hat dann als Kind nur noch sich selbst :autsch:

Sieht ungefähr so aus dann:
Code:
Wurzel
+--Wurzel
   +--Wurzel
      +--Wurzel
usw.
 

byte

Top Contributor
Hm komisch. Versuch mal in der getElements() null zurückzuliefern, wenn der Objektparameter kein Root ist.

Code:
public Object[] getElements(Object inputElement) {
        if(!isRoot()) return null;
        Object[] result = new Object[1];
        result[0] = inputElement;
        return result;
    }
 

SamHotte

Top Contributor
Hat eventuell jemand ein funktionierendes Beispiel? Per Google finde ich nur die "MovingBox", und das Beispiel zeigt leider nur die einfachen Sachen (wie so oft...). Wäre klasse.
 
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
byte SWT -> JFace: TreeViewer AWT, Swing, JavaFX & SWT 4
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