Montag, 23. Mai 2011

SWT TreeViewer – Ereignisse beim öffnen/schließen eines Baumkontens im TreeViewer



Der folgende Beitrag zeigt wie auf das Öffnen oder Schließen eines Knotens eines TreeViewers reagiert werden kann.

Um auf das öffenen oder schließen eines Knotens zu reagieren muss dem TreeViewer ein Listener hinzugefügt werden, der das Interface ITreeViewerListener implementiert. Dieses Interface besitzt zwei Methoden. treeExpanded(), die aufgerufen wird, wenn ein Knoten geöffnet wrid und treeCollapsed(), die beim Schließen eines Knotens aufgerufen wird. 

TreeViewer tw = new TreeViewer(parent);
tv.addTreeListener(new ITreeViewerListener() {
  @Override
  public void treeExpanded(TreeExpansionEvent arg0) {
    // TODO Auto-generated method stub
  }


  @Override
  public void treeCollapsed(TreeExpansionEvent arg0) {
    // TODO Auto-generated method stub
  }
});

Eine Referenz auf den Knoten der gerade geöffnet oder geschlossen wurde erhält man mit der Methode getElement() der TreeExpansionEvent Klasse. Hier ein Beispiel:

@Override
public void treeExpanded(TreeExpansionEvent arg0) {
  if (arg0.getElement() instanceof MyClass){
    // irgend ein Code der beim öffnen des Knotes irgendwas macht
  }
}

MyClass repräsentiert dabei eine selbst geschribene Klasse die einen Knoten im TreeViewer darstellt.