--- /dev/null
+package eu.etaxonomy.taxeditor.editor.view.derivate.contextMenu;
+
+import org.eclipse.jface.action.ContributionItem;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.CompoundContributionItem;
+
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+
+/**
+ * Context menu for the SingleReads in the derivate hierarchy.
+ *
+ */
+public class ListenToSelectionChangeContextMenu extends CompoundContributionItem {
+
+ @Override
+ protected IContributionItem[] getContributionItems() {
+ IContributionItem[] contributionItems = new IContributionItem[] {
+ new ContributionItem() {
+ @Override
+ public void fill(Menu menu, int index) {
+ final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ IWorkbenchPart activePart = window.getActivePage().getActivePart();
+ if(activePart instanceof DerivateView){
+ final DerivateView derivateView = (DerivateView) activePart;
+ MenuItem item = new MenuItem(menu, SWT.NONE);
+ if(derivateView.isListenToSelectionChange()){
+ item.setText("Unlink from taxon selection");
+ }
+ else{
+ item.setText("Link with taxon selection");
+ }
+ item.addSelectionListener(new SelectionAdapterExtension(derivateView));
+ }
+ }
+ }
+ };
+ return contributionItems;
+ }
+
+ private final class SelectionAdapterExtension extends SelectionAdapter {
+
+ private final DerivateView derivateView;
+
+ private SelectionAdapterExtension(DerivateView derivateView) {
+ this.derivateView = derivateView;
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ derivateView.toggleListenToSelectionChange();
+ }
+ }
+}
+