Merge branch 'release/4.6.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.l10n.Messages;
16 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
17 import eu.etaxonomy.taxeditor.model.ImageResources;
18
19 /**
20 * Context menu for the SingleReads in the derivate hierarchy.
21 *
22 */
23 public class ListenToSelectionChangeContextMenu extends CompoundContributionItem {
24
25 @Override
26 protected IContributionItem[] getContributionItems() {
27 IContributionItem[] contributionItems = new IContributionItem[] {
28 new ContributionItem() {
29 @Override
30 public void fill(Menu menu, int index) {
31 final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
32 IWorkbenchPart activePart = window.getActivePage().getActivePart();
33 if(activePart instanceof DerivateView){
34 final DerivateView derivateView = (DerivateView) activePart;
35 MenuItem item = new MenuItem(menu, SWT.NONE);
36 if(derivateView.isListenToSelectionChange()){
37 item.setText(Messages.ListenToSelectionChangeContextMenu_UNLINK);
38 }
39 else{
40 item.setText(Messages.ListenToSelectionChangeContextMenu_LINK);
41 }
42 item.setImage(ImageResources.getImage(ImageResources.SYNCED));
43 item.addSelectionListener(new SelectionAdapterExtension(derivateView));
44 }
45 }
46 }
47 };
48 return contributionItems;
49 }
50
51 private final class SelectionAdapterExtension extends SelectionAdapter {
52
53 private final DerivateView derivateView;
54
55 private SelectionAdapterExtension(DerivateView derivateView) {
56 this.derivateView = derivateView;
57 }
58
59 @Override
60 public void widgetSelected(SelectionEvent e) {
61 derivateView.toggleListenToSelectionChange();
62 }
63 }
64 }
65