Merge branch 'release/3.12.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / derivate / contextMenu / ListenToSelectionChangeContextMenu.java
1 package eu.etaxonomy.taxeditor.editor.view.derivate.contextMenu;
2
3 import org.eclipse.jface.action.ContributionItem;
4 import org.eclipse.jface.action.IContributionItem;
5 import org.eclipse.swt.SWT;
6 import org.eclipse.swt.events.SelectionAdapter;
7 import org.eclipse.swt.events.SelectionEvent;
8 import org.eclipse.swt.widgets.Menu;
9 import org.eclipse.swt.widgets.MenuItem;
10 import org.eclipse.ui.IWorkbenchPart;
11 import org.eclipse.ui.IWorkbenchWindow;
12 import org.eclipse.ui.PlatformUI;
13 import org.eclipse.ui.actions.CompoundContributionItem;
14
15 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
16 import eu.etaxonomy.taxeditor.model.ImageResources;
17
18 /**
19 * Context menu for the SingleReads in the derivate hierarchy.
20 *
21 */
22 public class ListenToSelectionChangeContextMenu extends CompoundContributionItem {
23
24 @Override
25 protected IContributionItem[] getContributionItems() {
26 IContributionItem[] contributionItems = new IContributionItem[] {
27 new ContributionItem() {
28 @Override
29 public void fill(Menu menu, int index) {
30 final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
31 IWorkbenchPart activePart = window.getActivePage().getActivePart();
32 if(activePart instanceof DerivateView){
33 final DerivateView derivateView = (DerivateView) activePart;
34 MenuItem item = new MenuItem(menu, SWT.NONE);
35 if(derivateView.isListenToSelectionChange()){
36 item.setText("Unlink from taxon selection");
37 }
38 else{
39 item.setText("Link with taxon selection");
40 }
41 item.setImage(ImageResources.getImage(ImageResources.SYNCED));
42 item.addSelectionListener(new SelectionAdapterExtension(derivateView));
43 }
44 }
45 }
46 };
47 return contributionItems;
48 }
49
50 private final class SelectionAdapterExtension extends SelectionAdapter {
51
52 private final DerivateView derivateView;
53
54 private SelectionAdapterExtension(DerivateView derivateView) {
55 this.derivateView = derivateView;
56 }
57
58 @Override
59 public void widgetSelected(SelectionEvent e) {
60 derivateView.toggleListenToSelectionChange();
61 }
62 }
63 }
64