]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/ge/MultiSelectionProvider.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.document.linking.ui / src / org / simantics / document / linking / ge / MultiSelectionProvider.java
1 package org.simantics.document.linking.ge;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
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;
10
11 /**
12  * Selection Provider for providing slections from multiple GraphExplorers attached to the same site
13  * .
14  * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
15  *
16  */
17 public class MultiSelectionProvider implements ISelectionProvider, ISelectionChangedListener {
18         
19         private List<ISelectionProvider> selectionProviders = new ArrayList<ISelectionProvider>();
20         private List<ISelectionChangedListener> listeners = new ArrayList<ISelectionChangedListener>();
21         private ISelection selection;
22         
23         @Override
24         public void addSelectionChangedListener(ISelectionChangedListener listener) {
25                 listeners.add(listener);
26                 
27         }
28         @Override
29         public void removeSelectionChangedListener(
30                         ISelectionChangedListener listener) {
31                 listeners.remove(listener);
32                 
33         }
34         
35         @Override
36         public ISelection getSelection() {
37                 return selection;
38         }
39         
40         @Override
41         public void setSelection(ISelection selection) {
42                 this.selection = selection;
43                 // TODO : should we pass the selection to selectionProviders? 
44         }
45         
46         @Override
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);
52                 }
53                 
54         }
55         
56         public void addSelectionProvider(ISelectionProvider provider) {
57                 selectionProviders.add(provider);
58                 provider.addSelectionChangedListener(this);
59         }
60         
61         public void removeSelectionProvider(ISelectionProvider provider) {
62                 selectionProviders.remove(provider);
63                 provider.removeSelectionChangedListener(this);
64         }
65
66 }