1 package org.simantics.document.linking.ge;
3 import java.util.ArrayList;
6 import org.eclipse.jface.viewers.ISelection;
7 import org.eclipse.jface.viewers.ISelectionChangedListener;
8 import org.eclipse.jface.viewers.ISelectionProvider;
9 import org.eclipse.jface.viewers.SelectionChangedEvent;
12 * Selection Provider for providing slections from multiple GraphExplorers attached to the same site
14 * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
17 public class MultiSelectionProvider implements ISelectionProvider, ISelectionChangedListener {
19 private List<ISelectionProvider> selectionProviders = new ArrayList<ISelectionProvider>();
20 private List<ISelectionChangedListener> listeners = new ArrayList<ISelectionChangedListener>();
21 private ISelection selection;
24 public void addSelectionChangedListener(ISelectionChangedListener listener) {
25 listeners.add(listener);
29 public void removeSelectionChangedListener(
30 ISelectionChangedListener listener) {
31 listeners.remove(listener);
36 public ISelection getSelection() {
41 public void setSelection(ISelection selection) {
42 this.selection = selection;
43 // TODO : should we pass the selection to selectionProviders?
47 public void selectionChanged(SelectionChangedEvent event) {
48 this.selection = event.getSelection();
49 SelectionChangedEvent fireEvent = new SelectionChangedEvent(this, selection);
50 for (ISelectionChangedListener l : listeners) {
51 l.selectionChanged(fireEvent);
56 public void addSelectionProvider(ISelectionProvider provider) {
57 selectionProviders.add(provider);
58 provider.addSelectionChangedListener(this);
61 public void removeSelectionProvider(ISelectionProvider provider) {
62 selectionProviders.remove(provider);
63 provider.removeSelectionChangedListener(this);