TreeViewer in SWT: Default Selection eines Items

Status
Nicht offen für weitere Antworten.

robb

Bekanntes Mitglied
Hiho,

ich erstelle gerade eine GUI mit einem TreeViewer in SWT und möchte in diesem TreeViewer nachdem er initialisiert wurde das letzte Element defaultmässig anwählen.
Ich habe schon versucht mir nun mithilfe von "ivTreeViewerElements.getTree().setSelection(TreeItem ti)" das richtige Element auszuwählen, nur leider konnte ich es bisher nur manuell auswählen.

Falls jemand ne Lösung hat wäre ich sehr dankbar, wenn ers hier posten würde

Gruss Robb

Code:
(...)
        // Widgets
	private TreeViewer ivTreeViewerElements;
        (...)
        protected void initGUI(final Composite canvas) throws Exception {
		(...)
		ivTreeViewerElements = new TreeViewer(canvas, SWT.SINGLE);
		ivTreeViewerElements.setContentProvider(new TreeContentProvider());
                (...)
        }

        private class TreeContentProvider implements ITreeContentProvider {

		/**
		 * Gets the Children for the Treeviewer
		 */
		public Object[] getChildren(Object parentElement) {
			return ((TreeNode) parentElement).getChildren().toArray();
		}

		/**
		 * Gets the Parents for the Treeviewer
		 */
		public Object getParent(Object element) {
			return ((TreeNode) element).getParent();
		}

		/**
		 * Are there Children
		 */
		public boolean hasChildren(Object element) {
			return ((TreeNode) element).getChildren().size() > 0;
		}

		/**
		 * Get all Elements
		 */
		public Object[] getElements(Object inputElement) {
			return ((TreeNode) inputElement).getChildren().toArray();
		}

		public void dispose() {
			// nothing to do
		}

		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
			// nothing to do
		}

	}

	/**
	 * Method to build up the Treeviewer RootNode
	 * 
	 * @param pvListThrow
	 *           List which will be shown in the treeviewer
	 * @return Input for the treeviewer
	 */
	private TreeNode getRootNode(List<Throwable> pvListThrow) {
		TreeNode lvRoot = new TreeNode(ivSelection.getListElements().get(0));
		TreeNode lvChildren = lvRoot;
		TreeNode lvChildrenNext;

		for (int i = 0; i < ivSelection.getListElements().size(); i++) {
			Throwable lvThrow = ivSelection.getListElements().get(i);
			lvChildrenNext = new TreeNode(lvThrow);
			lvChildren.addChild(lvChildrenNext);
			lvChildren = lvChildrenNext;
		}

		return lvRoot;
	}

	/**
	 * Private Class for the treeviewer. Basic object for a treenode is the
	 * Throwable Object.
	 * 
	 * @author x1rschilling
	 * 
	 */
	class TreeNode {
		private Throwable ivThrowable;

		private List<TreeNode> ivChildren = new ArrayList<TreeNode>();

		private TreeNode ivParent;

		/**
		 * Constructs a new Node
		 * 
		 * @param t
		 *           Throwable for the Treeviewer
		 */
		public TreeNode(Throwable t) {
			ivThrowable = t;
		}

		/**
		 * Gets the Parent node.
		 * 
		 * @return Parent node
		 */
		protected Object getParent() {
			return ivParent;
		}

		/**
		 * Adds a Child to the Node
		 * 
		 * @param pvChild
		 *           node which will be added to this node
		 * @return new node with the added node
		 */
		public TreeNode addChild(TreeNode pvChild) {
			ivChildren.add(pvChild);
			pvChild.ivParent = this;
			return this;
		}

		/**
		 * Gets the children of the node
		 * 
		 * @return List of treenodes with the children
		 */
		public List<TreeNode> getChildren() {
			return ivChildren;
		}

		/**
		 * Gets the Data in the node
		 * 
		 * @return Throwable object
		 */
		public Throwable getData() {
			return ivThrowable;
		}

		/**
		 * toString Method to get the Name
		 */
		public String toString() {
			return ivThrowable.getClass().getName();
		}
	}
 

Wildcard

Top Contributor
Eine seltsame Konstruktion hast du da...
Normalerweise verwendet man die ContentProvider/LabelProvider um direkt das DomainModel für den Viewer zu 'übersetzen', aber du hast mit der TreeNode noch eine zusätzliche Zwischenschicht.
Statt
ivTreeViewerElements.getTree().setSelection(TreeItem ti)
Code:
treeView.setSelection(new StructuredSelection(domainModelElement),true);
 

robb

Bekanntes Mitglied
Heyho,

wenn ich den Methodenaufruf vom TreeView mit meinem domainModelElement, in diesem Fall mein TreeNode, fülle wird bei mir trotzdem nichts vorselektiert in dem TreeView.

Code:
treeView.setSelection(new StructuredSelection(domainModelElement),true);

Ich könnte natürlich auch statt dem Datenmodel "TreeNode" die TreeItems nutzen nur hatte ich bei den TreeItems dasselbe Problem mit der Vorauswahl von Treeelementen und dem automatischen expandieren beim Starten der Anwendung.

Gruss

Robb
 

robb

Bekanntes Mitglied
Okay, das Problem ist gelöst. Ich hab keinen Fokus auf meinem Tree gehabt, deswegen wurde auch nichts ausgewählt.

Danke für die Hilfe!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
A SWT Eclipse JFace Binding TreeViewer AWT, Swing, JavaFX & SWT 4
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
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
S SWT/JFace TreeViewer: Rootknoten anzeigen AWT, Swing, JavaFX & SWT 10
byte SWT -> JFace: TreeViewer AWT, Swing, JavaFX & SWT 4
S SWT/JFace TreeViewer-Problem AWT, Swing, JavaFX & SWT 2
R SWT-TreeViewer Doppelklick verarbeiten AWT, Swing, JavaFX & SWT 4
V SWT (JFace): Foreground des Textes im TreeViewer ändern. AWT, Swing, JavaFX & SWT 2
C Default table model aktualisieren AWT, Swing, JavaFX & SWT 7
Hatsi09 JCombobox default wert AWT, Swing, JavaFX & SWT 6
T Default Table wird nicht angezeigt AWT, Swing, JavaFX & SWT 15
M Default-WindowListener JFrame entfernen (Stichwort: iconified) AWT, Swing, JavaFX & SWT 4
M JavaFX Scrollpane: Style von Contentpanel default AWT, Swing, JavaFX & SWT 1
Tom299 JavaFX Default-Cursor läßt sich nicht immer "aktivieren" AWT, Swing, JavaFX & SWT 3
R Ändern Default-Verhalten von JScrollpane in einer JScrollpane AWT, Swing, JavaFX & SWT 1
B Swing JTextPane - Einfärbungen auf "default" AWT, Swing, JavaFX & SWT 2
H default cell renderer AWT, Swing, JavaFX & SWT 3
J Swing Default-Eigenschaft bei JButton AWT, Swing, JavaFX & SWT 22
C Swing Default Werte für JFormattedTextField und Eingaben zurücksetzen AWT, Swing, JavaFX & SWT 5
M SWT DateTime per default null Wert ? AWT, Swing, JavaFX & SWT 3
S JTextField Default Text AWT, Swing, JavaFX & SWT 5
K Swing Wie ändere ich die default action für Drag&Drop AWT, Swing, JavaFX & SWT 6
G Wie komm ich z.B. an das Default WarningMessageIcon ran? AWT, Swing, JavaFX & SWT 2
hdi non-default close operation bei JDialog AWT, Swing, JavaFX & SWT 2
I Default Button AWT, Swing, JavaFX & SWT 5
G setLookAndFeel to default LookAndFeel? AWT, Swing, JavaFX & SWT 4
I "default"-Style im DefaultStyledDocument AWT, Swing, JavaFX & SWT 2
G default Layout für JPanel AWT, Swing, JavaFX & SWT 2
T Ändern des Default-Aussehens einer JComboBox AWT, Swing, JavaFX & SWT 3
D FileFilter Default Eintrag AWT, Swing, JavaFX & SWT 4
S Default Button in Dialogs(Ok und Cancel) AWT, Swing, JavaFX & SWT 4
H default format settings AWT, Swing, JavaFX & SWT 11
A (Default)TreeModel und wie die Daten hinein bekommen AWT, Swing, JavaFX & SWT 5
P Default Link in Swing, --> öffne Browser -> Browse URL AWT, Swing, JavaFX & SWT 8
Salo JTabel Selection listener Bsp. AWT, Swing, JavaFX & SWT 5
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
A JFace/SWT: ListViewer Inhalt nach Selection in zweitem List Viewer aktualisieren! AWT, Swing, JavaFX & SWT 5
M Swing JTree: Wie kann ich die Hintergrundfarbe der selection ändern?!?! AWT, Swing, JavaFX & SWT 7
J Sinn eines Selection Listener AWT, Swing, JavaFX & SWT 5
S SWT Enable Selection AWT, Swing, JavaFX & SWT 11
B ButtonGroup mit mehr als einer Selection AWT, Swing, JavaFX & SWT 2
lumo SWT Table Selection Color +Focus Out AWT, Swing, JavaFX & SWT 14
S SWT ProgressBar: Value/Selection anzeigen AWT, Swing, JavaFX & SWT 4
H JList: Selection-Border entfernen AWT, Swing, JavaFX & SWT 2
P SWT Tree - Keine Selection zulassen AWT, Swing, JavaFX & SWT 4
R JTree und Selection mit Ctrl AWT, Swing, JavaFX & SWT 5
lumo SWT MenuItem + Selection/Listener AWT, Swing, JavaFX & SWT 2
Dragonfire JTree, Selection via event AWT, Swing, JavaFX & SWT 7
O JTable label background und selection AWT, Swing, JavaFX & SWT 3
A Wie werde ich beim JTable die Selection wieder los? AWT, Swing, JavaFX & SWT 6
Zed JTable view auf Selection setzen AWT, Swing, JavaFX & SWT 2
S JTable - Problem mit der Selection AWT, Swing, JavaFX & SWT 4
G JTextArea & JTextField Selection Problem (ersetzen) AWT, Swing, JavaFX & SWT 2
P JTable Row-Selection nach eingegebenem Anfangsbuchstaben AWT, Swing, JavaFX & SWT 4
O JTextField- Selection / Focus bei nicht editierbaren Feldern AWT, Swing, JavaFX & SWT 2
D Selection SWT Table AWT, Swing, JavaFX & SWT 5
J JTable selection AWT, Swing, JavaFX & SWT 2
V Selection Problem mit JList AWT, Swing, JavaFX & SWT 2
G JTree - ungültiger selection update AWT, Swing, JavaFX & SWT 2
O JTable selection eines weiter setzen wie? AWT, Swing, JavaFX & SWT 3
S Selection Color in JTabbedPane AWT, Swing, JavaFX & SWT 5
A JTree Problem mit Focus bzw. Selection AWT, Swing, JavaFX & SWT 5
G JTree. Neues Element hinzufügen und Selection beibehalten! AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben