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