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
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();
}
}