ISelection an Filter übergeben

ManuBu

Mitglied
Hallo,

ich habe folgendes Problem:
Ich habe eine Tabelle in der ich den SelectionProvider anwende.
Das funktioniert auch wunderbar, wenn ich eine Zeile oder Zeilen auswähle werden die mir angezeigt.

Java:
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
        if (selection instanceof IStructuredSelection) {
        	selection = (IStructuredSelection) selection;

                System.out.println(selection);
 
                NodeFilter filter = new NodeFilter();
        	ViewerFilter[] filters = new ViewerFilter[1];
        	filters[0]= filter; 
        	viewer.setFilters(filters);
        }
}

Ich habe nun noch einen GraphViewer, der einen Filter besitzt.
Nun würde ich gerne, dass die selection an den Filter übergeben wird, damit ich abfragen kann, welche Zeile(n) der Tabelle ausgewählt wurde(n).

Der Filter funktioniert auch schon und sieht so aus:
Java:
public class NodeFilter extends ViewerFilter {
		
	@Override
	public boolean select(Viewer viewer, Object parentElement, Object element) {
		
		if (element instanceof DiagramNode) {
			DiagramNode node = (DiagramNode) element;
			return node.getName().toLowerCase().contains("2");
			
		}
		return true; 
	}

}

Nur habe ich aktuell keine Idee, wie ich die selection in die select-Methode bekomme..
Habt ihr eine Idee?
 
So ??
Java:
           selection = (IStructuredSelection) selection;
 
           System.out.println(selection);
 
           NodeFilter filter = new NodeFilter(selection); // geändert
           ViewerFilter[] filters = new ViewerFilter[1];
           filters[0]= filter; 
           viewer.setFilters(filters);
Java:
public class NodeFilter extends ViewerFilter {
        private ISelection selection; // geändert
     public NodeFilter (ISelection selection) // geändert
    { // geändert
     this.selection = selection; // geändert
     } // geändert
    @Override
    public boolean select(Viewer viewer, Object parentElement, Object element) {
        
        if (element instanceof DiagramNode) {
            DiagramNode node = (DiagramNode) element;
            return node.getName().toLowerCase().contains("2");
            
        }
        return true; 
    }
 
}
 

Zurück
Oben