started to refactor action delegation
authorn.hoffmann <n.hoffmann@localhost>
Thu, 5 Feb 2009 10:24:07 +0000 (10:24 +0000)
committern.hoffmann <n.hoffmann@localhost>
Thu, 5 Feb 2009 10:24:07 +0000 (10:24 +0000)
39 files changed:
.gitattributes
eclipseprojects/eu.etaxonomy.taxeditor/META-INF/MANIFEST.MF
eclipseprojects/eu.etaxonomy.taxeditor/plugin.xml
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/ApplicationActionBarAdvisor.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/TaxEditorActionFactory.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/SwapSynonymAndTaxonAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeConceptRelationAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeSynonymToConceptRelationAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeSynonymToMisapplicationAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateAutonymAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateConceptRelationAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateHeterotypicSynonymAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateMisappliedNameAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateNewTaxonFromSynonymAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateSynonymInGroupAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateTaxonomicallyIncludedTaxonAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/MakeBasionymAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/Messages.java [moved from eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/Messages.java with 92% similarity]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/RemoveConceptAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/RemoveSynonymAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/UnmakeBasionymAction.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/messages.properties [moved from eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/messages.properties with 100% similarity]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/ChangeTaxonToSynonymAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/MoveTaxonDialogAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenTaxonEditorAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/EditorController.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/GlobalController.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ContextMenu.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MenuConstants.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditorActionBarContributor.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/AcceptedNameComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/ConceptComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/MisappliedNameComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/SynonymComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/CdmSessionDataRepository.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeConceptRelationOperation.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/CreateSynonymInExisitingHomotypicalGroupOperation.java [new file with mode: 0644]

index 56d865fc191fb46aafe93b82ab3f16a615aa60a6..a3d364565c468b4fa6b3b3c22e2082a27007b496 100644 (file)
@@ -404,6 +404,7 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/TaxEditorPlugi
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/NameTransfer.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/SaveAllAction.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/SynonymRelationshipTransfer.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/TaxEditorActionFactory.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/TaxonTransfer.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/UndoableAction.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/WidgetTransfer.java -text
@@ -415,8 +416,22 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/Sa
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/SwapSynonymAndTaxonAction.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ExportAction.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/io/ImportAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeConceptRelationAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeSynonymToConceptRelationAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeSynonymToMisapplicationAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateAutonymAction.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateConceptRelationAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateHeterotypicSynonymAction.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateMisappliedNameAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateNewTaxonFromSynonymAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateSynonymInGroupAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateTaxonomicallyIncludedTaxonAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/MakeBasionymAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/Messages.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/RemoveConceptAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/RemoveSynonymAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/UnmakeBasionymAction.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/messages.properties -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/ChangeTaxonToSynonymAction.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/MoveTaxonDialogAction.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenNameRelationWizardAction.java -text
@@ -455,7 +470,9 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/IParent
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineBreakListener.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSquigglesStrategy.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/LineWrapSupport.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MenuConstants.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditor.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditorActionBarContributor.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ParseListener.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/SelectTaxonDialog.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/SimpleSelectionProvider.java -text
@@ -473,7 +490,6 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/Co
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/ConceptGroupComposite.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/HomotypicalGroupComposite.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/IterableSynonymyList.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/Messages.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/MisappliedGroupComposite.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/MisappliedNameComposite.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameComposite.java -text
@@ -481,7 +497,6 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/Na
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/RulerWithIcon.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/SynonymComposite.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/messages.properties -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/io/InputWizard.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/io/InputWizard2.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/CdmSessionDataRepository.java -text
@@ -505,6 +520,7 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/Abs
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/ChangeTaxonToSynonymOperation.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/DeleteTaxonOperation.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/MoveTaxonOperation.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeConceptRelationOperation.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeHomotypicGroupOperation.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeMisappliedNameToSynonymOperation.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeSynonymToConceptOperation.java -text
@@ -512,6 +528,7 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/nam
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeSynonymToTaxonOperation.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/CreateConceptRelationOperation.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/CreateMisappliedNameOperation.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/CreateSynonymInExisitingHomotypicalGroupOperation.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/CreateSynonymInNewGroupOperation.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/MakeSynonymAcceptedOperation.java -text
 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/MakeSynonymGroupBasionymOperation.java -text
index 4f78f436c88dce243246b84c14e6dde56aea466d..cbaeabbacb5e22016b567244617927a90f35f0ed 100644 (file)
@@ -15,9 +15,9 @@ Require-Bundle: org.eclipse.ui,
  org.eclipse.ui.views,
  org.eclipse.pde.source,
  org.eclipse.ui.ide,
- eu.etaxonomy.cdmLibrary,
  org.eclipse.ui.workbench.texteditor,
- org.eclipse.ui.editors
+ org.eclipse.ui.editors,
+ eu.etaxonomy.cdmLibrary;bundle-version="2.0.0"
 Eclipse-LazyStart: true
 Export-Package: com.swtdesigner,
  eu.etaxonomy.taxeditor,
index e14b3027e6ac41b70052338aa48227f7dc46fbdd..6aa97e586ba483c0aa87d238d1cef3af22a79ff6 100644 (file)
@@ -72,7 +72,8 @@
             class="eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor"\r
             icon="icons/edit_16x16.gif"\r
             id="eu.etaxonomy.taxeditor.editor.multipagetaxonview"\r
-            name="Multitabbed Taxon Editor">\r
+            name="Multitabbed Taxon Editor"\r
+            contributorClass="eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditorActionBarContributor">\r
       </editor>\r
       <editor\r
             class="eu.etaxonomy.taxeditor.editor.EmptyEditorView"\r
index a2c0f5cd1f07210a3fc8a368d698065166ba62a1..0c7e0bbb6291525bd4a757ec58de817c32bf750d 100644 (file)
@@ -17,16 +17,15 @@ import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.action.Separator;
+import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
 import org.eclipse.ui.application.ActionBarAdvisor;
 import org.eclipse.ui.application.IActionBarConfigurer;
 
 import eu.etaxonomy.cdm.io.common.ImportWrapper;
+import eu.etaxonomy.taxeditor.actions.TaxEditorActionFactory;
 import eu.etaxonomy.taxeditor.actions.io.ExportAction;
 import eu.etaxonomy.taxeditor.actions.io.ImportAction;
-import eu.etaxonomy.taxeditor.actions.ui.OpenNewTaxonEditorAction;
 import eu.etaxonomy.taxeditor.controller.GlobalController;
 
 /**
@@ -45,13 +44,13 @@ public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
        // Actions - important to allocate these only in makeActions, and then use
        // them in the fill methods. This ensures that the actions aren't recreated
        // when fillActionBars is called with FILL_PROXY.
-       private IWorkbenchAction exitAction;
-       private IWorkbenchAction saveAction;
-       private IWorkbenchAction preferencesAction;
-       private IWorkbenchAction undoAction;
-       private IWorkbenchAction redoAction;
-       
-       private IAction newNameAction;
+//     private IWorkbenchAction exitAction;
+//     private IWorkbenchAction saveAction;
+//     private IWorkbenchAction preferencesAction;
+//     private IWorkbenchAction undoAction;
+//     private IWorkbenchAction redoAction;
+//     
+//     private IAction newNameAction;
 
        private List<IAction> importActionList;
 
@@ -72,22 +71,26 @@ public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
 
                GlobalController.setStatusLineManager(getActionBarConfigurer().getStatusLineManager());
                
-               saveAction = ActionFactory.SAVE.create(window);
-               register(saveAction);
+               // File menu actions
+               register(TaxEditorActionFactory.NEW.create(window));
+               register(TaxEditorActionFactory.SAVE.create(window));
+               register(TaxEditorActionFactory.QUIT.create(window));
                
-               undoAction = ActionFactory.UNDO.create(window);
-               register(undoAction);
+               // Edit menu actions
+               register(TaxEditorActionFactory.UNDO.create(window));
+               register(TaxEditorActionFactory.REDO.create(window));
+               register(TaxEditorActionFactory.CUT.create(window));
+               register(TaxEditorActionFactory.COPY.create(window));
+               register(TaxEditorActionFactory.PASTE.create(window));
+               register(TaxEditorActionFactory.DELETE.create(window));
                
-               redoAction = ActionFactory.REDO.create(window);
-               register(redoAction);
+               // Window menu actions
+               register(TaxEditorActionFactory.PREFERENCES.create(window));
                
-               exitAction = ActionFactory.QUIT.create(window);
-               register(exitAction);
+               // Help menu actions
+               register(TaxEditorActionFactory.ABOUT.create(window));
                
-               newNameAction = new OpenNewTaxonEditorAction();
-               register(newNameAction);
                
-               preferencesAction = ActionFactory.PREFERENCES.create(window);
                
                makeImportActions();
                
@@ -95,6 +98,7 @@ public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
                register(exportJaxbAction);
        }
 
+
        private void makeImportActions() {
                
                importActionList = new ArrayList<IAction>();
@@ -105,35 +109,25 @@ public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
                        importActionList.add(importAction);             
                }
        }
-
-       protected void fillMenuBar(IMenuManager menuBar) {
-
-               // Note: to hook into Eclipse File Menu, to use open File for instance,
-               //  replace NULL with IWorkbenchActionConstants.M_FILE);
+       
+       private MenuManager FILE_MENU(){
                MenuManager fileMenu = new MenuManager("&File",
-                               null);
-               
-               MenuManager editMenu = new MenuManager("&Edit", null);
+                               IWorkbenchActionConstants.M_FILE);
                
                // Create submenu for imports
                MenuManager importMenu = new MenuManager("Import ...", null);
                
                // Create submenu for exports
                MenuManager exportMenu = new MenuManager("Export as ...", null);
-
+       
                // Populate file menu
-               menuBar.add(fileMenu);
-               fileMenu.add(newNameAction);
-               fileMenu.add(saveAction);
+               fileMenu.add(getAction(TaxEditorActionFactory.NEW.getId()));
+               fileMenu.add(getAction(TaxEditorActionFactory.SAVE.getId()));
                fileMenu.add(new Separator());
                fileMenu.add(importMenu);
                fileMenu.add(exportMenu);
                fileMenu.add(new Separator());
-               fileMenu.add(exitAction);
-               
-               menuBar.add(editMenu);
-               editMenu.add(undoAction);
-               editMenu.add(redoAction);
+               fileMenu.add(getAction(TaxEditorActionFactory.QUIT.getId()));
                
                // Populate submenu for imports
                for (IAction importAction : importActionList) {
@@ -143,10 +137,52 @@ public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
                // Populate submenu for exports
                exportMenu.add(exportJaxbAction);
                
-               // Populate preferences
-               MenuManager preferencesMenu = new MenuManager("&Preferences",
-                               null);
-               menuBar.add(preferencesMenu);
-               preferencesMenu.add(preferencesAction);
+               return fileMenu;
+       }
+
+       
+       private MenuManager EDIT_MENU() {
+
+               MenuManager editMenu = new MenuManager("&Edit", IWorkbenchActionConstants.M_EDIT);
+               
+               editMenu.add(getAction(TaxEditorActionFactory.UNDO.getId()));
+               editMenu.add(getAction(TaxEditorActionFactory.REDO.getId()));
+               editMenu.add(new Separator());
+               editMenu.add(getAction(TaxEditorActionFactory.CUT.getId()));
+               editMenu.add(getAction(TaxEditorActionFactory.COPY.getId()));
+               editMenu.add(getAction(TaxEditorActionFactory.PASTE.getId()));
+               editMenu.add(new Separator());
+               editMenu.add(getAction(TaxEditorActionFactory.DELETE.getId()));
+               
+               return editMenu;
+       }
+
+       private MenuManager WINDOW_MENU() {
+               MenuManager windowMenu = new MenuManager("&Window",
+                               IWorkbenchActionConstants.M_WINDOW);
+
+               windowMenu.add(getAction(TaxEditorActionFactory.PREFERENCES.getId()));
+               
+               return windowMenu;
+       }
+       
+       private MenuManager HELP_MENU(){
+               MenuManager helpMenu = new MenuManager("&Help",
+                               IWorkbenchActionConstants.M_HELP);
+               
+               helpMenu.add(getAction(TaxEditorActionFactory.ABOUT.getId()));
+               
+               return helpMenu;
+       }
+
+       protected void fillMenuBar(IMenuManager menuBar) {
+               
+               menuBar.add(FILE_MENU());
+               
+               menuBar.add(EDIT_MENU());
+               
+               menuBar.add(WINDOW_MENU());
+               
+               menuBar.add(HELP_MENU());
        }
 }
\ No newline at end of file
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/TaxEditorActionFactory.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/TaxEditorActionFactory.java
new file mode 100644 (file)
index 0000000..b2d9ec8
--- /dev/null
@@ -0,0 +1,61 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.ui.IWorkbenchWindow;\r
+import org.eclipse.ui.actions.ActionFactory;\r
+import org.eclipse.ui.actions.NewWizardAction;\r
+import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;\r
+\r
+import eu.etaxonomy.taxeditor.actions.ui.OpenTaxonEditorAction;\r
+\r
+/**\r
+ * This class is an extension to the standard ActionFactory. Any useful\r
+ * functionality already implemented in ActionFactory may be used or \r
+ * overwritten by more suitable implementations.\r
+ * \r
+ * @author n.hoffmann\r
+ * @created 03.02.2009\r
+ * @version 1.0\r
+ */\r
+public abstract class TaxEditorActionFactory extends ActionFactory {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(TaxEditorActionFactory.class);\r
+       \r
+    /**\r
+     * Workbench action (id "new"): Opens the new wizard dialog. This action maintains\r
+     * its enablement state.\r
+     */\r
+    public static final ActionFactory NEW = new ActionFactory("new") {//$NON-NLS-1$\r
+        \r
+        /* (non-Javadoc)\r
+         * @see org.eclipse.ui.actions.ActionFactory#create(org.eclipse.ui.IWorkbenchWindow)\r
+         */\r
+        public IWorkbenchAction create(IWorkbenchWindow window) {\r
+            if (window == null) {\r
+                throw new IllegalArgumentException();\r
+            }\r
+            IWorkbenchAction action = new OpenTaxonEditorAction();\r
+            action.setId(getId());\r
+            return action;\r
+        }\r
+    };\r
+       \r
+    /**\r
+     * Creates a new workbench action factory with the given id.\r
+     * \r
+     * @param actionId\r
+     *            the id of actions created by this action factory\r
+     */\r
+    protected TaxEditorActionFactory(String actionId) {\r
+        super(actionId);\r
+    }\r
+}\r
index cd88519b8a500a8dab09311d3af3b4cb1a478b7a..0d8024b9f642df38236396f8a1bc1567b26d5504 100644 (file)
@@ -38,13 +38,18 @@ public class SwapSynonymAndTaxonAction extends Action {
                        .getLogger(SwapSynonymAndTaxonAction.class);\r
        \r
        private static String text = "Make synonym accepted name for this taxon";\r
-       private ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
                        .getImageDescriptor(ITaxEditorConstants.SYNONYM_TO_TAXON_ICON);\r
 \r
        private Synonym synonym;\r
        private Taxon taxon;\r
 \r
-       public SwapSynonymAndTaxonAction(Synonym synonym, Taxon taxon) {\r
+       public SwapSynonymAndTaxonAction(){\r
+               super(text, image);\r
+       }\r
+       \r
+       public SwapSynonymAndTaxonAction(Taxon taxon, Synonym synonym) {\r
+               this();\r
                this.synonym = synonym;\r
                this.taxon = taxon;\r
        }\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeConceptRelationAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeConceptRelationAction.java
new file mode 100644 (file)
index 0000000..517ad0e
--- /dev/null
@@ -0,0 +1,66 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.operations.IUndoableOperation;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.operations.name.ChangeConceptRelationOperation;\r
+import eu.etaxonomy.taxeditor.operations.name.CreateConceptRelationOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 03.02.2009\r
+ * @version 1.0\r
+ */\r
+public class ChangeConceptRelationAction extends Action {\r
+\r
+       private static final Logger logger = Logger\r
+                       .getLogger(ChangeConceptRelationAction.class);\r
+\r
+       private static String text = "Change concept relation";\r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                       .getImageRegistry().getDescriptor(ITaxEditorConstants.CONCEPT_ICON);\r
+\r
+       private Taxon relatedTaxon;\r
+\r
+       private Taxon taxon;\r
+\r
+       private TaxonRelationshipType taxonRelationshipType;\r
+\r
+       private ChangeConceptRelationAction(){\r
+               super(text, image);\r
+       }\r
+       \r
+       public ChangeConceptRelationAction(Taxon taxon, Taxon relatedTaxon,\r
+                       TaxonRelationshipType taxonRelationshipType) {\r
+               this();\r
+               this.setText(taxonRelationshipType.getLabel());\r
+               this.taxon = taxon;\r
+               this.relatedTaxon = relatedTaxon;\r
+               this.taxonRelationshipType = taxonRelationshipType;\r
+       }\r
+       \r
+       public void run() {\r
+               IUndoableOperation operation = new ChangeConceptRelationOperation(\r
+                               "Create concept relation '" + taxonRelationshipType.getLabel() + "'", \r
+                               EditorController.getUndoContext(taxon), taxon, relatedTaxon, taxonRelationshipType);\r
+               \r
+               GlobalController.executeOperation(operation);\r
+       }\r
+}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeSynonymToConceptRelationAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeSynonymToConceptRelationAction.java
new file mode 100644 (file)
index 0000000..791a1f9
--- /dev/null
@@ -0,0 +1,62 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.operations.IUndoableOperation;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.operations.name.ChangeSynonymToConceptOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 02.02.2009\r
+ * @version 1.0\r
+ */\r
+public class ChangeSynonymToConceptRelationAction extends Action {\r
+\r
+\r
+       private static final Logger logger = Logger\r
+                       .getLogger(ChangeSynonymToConceptRelationAction.class);\r
+       \r
+       private static String text = "Change synonym to concept relation"; //$NON-NLS-1$\r
+       \r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                               .getImageDescriptor(ITaxEditorConstants.CONCEPT_ICON);\r
+\r
+       private Synonym synonym;\r
+\r
+       private Taxon taxon;\r
+       \r
+       private ChangeSynonymToConceptRelationAction() {\r
+               super(text, image);\r
+       }\r
+       \r
+       public ChangeSynonymToConceptRelationAction(Taxon taxon, Synonym synonym) {\r
+               this();\r
+               this.taxon = taxon;\r
+               this.synonym = synonym;\r
+       }\r
+       \r
+       public void run() {\r
+               IUndoableOperation operation = new ChangeSynonymToConceptOperation\r
+                               (this.getText(), EditorController.getUndoContext(taxon), taxon, synonym);\r
+               \r
+               GlobalController.executeOperation(operation);                   \r
+       }\r
+       \r
+}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeSynonymToMisapplicationAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/ChangeSynonymToMisapplicationAction.java
new file mode 100644 (file)
index 0000000..b334128
--- /dev/null
@@ -0,0 +1,58 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.operations.IUndoableOperation;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.operations.name.ChangeSynonymToMisappliedNameOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 02.02.2009\r
+ * @version 1.0\r
+ */\r
+public class ChangeSynonymToMisapplicationAction extends Action {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(ChangeSynonymToMisapplicationAction.class);\r
+       \r
+       private static String text = "Change synonym to misapplied name"; //$NON-NLS-1$\r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                       .getImageDescriptor(ITaxEditorConstants.MISAPPLIED_NAME_ICON);\r
+\r
+       private Synonym synonym;\r
+\r
+       private Taxon taxon;\r
+       \r
+       private ChangeSynonymToMisapplicationAction(){\r
+               super(text, image);\r
+       }\r
+       \r
+       public ChangeSynonymToMisapplicationAction(Taxon taxon, Synonym synonym){\r
+               this();\r
+               this.taxon = taxon;\r
+               this.synonym = synonym;\r
+       }\r
+       \r
+       public void run() {\r
+               IUndoableOperation operation = new ChangeSynonymToMisappliedNameOperation\r
+                               (this.getText(), EditorController.getUndoContext(taxon), taxon, synonym);\r
+               \r
+               GlobalController.executeOperation(operation);\r
+       }\r
+}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateAutonymAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateAutonymAction.java
new file mode 100644 (file)
index 0000000..db414d6
--- /dev/null
@@ -0,0 +1,42 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 02.02.2009\r
+ * @version 1.0\r
+ */\r
+public class CreateAutonymAction extends Action {\r
+       private static final Logger logger = Logger.getLogger(CreateAutonymAction.class);\r
+\r
+       private static String text = "Create autonym";\r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                       .getImageRegistry().getDescriptor(ITaxEditorConstants.AUTONYM_ICON);\r
+\r
+       public CreateAutonymAction(){\r
+               super(text, image);\r
+       }\r
+       \r
+       public void run(){\r
+               Taxon taxon = EditorController.getActiveEditor().getTaxon();\r
+               \r
+               logger.warn("Not implemented yet!");\r
+       }\r
+}\r
index 635dd53b2f14a1fbb042e4edc23be0016542f4f4..bf614d6b9cb57907abb6384eb2afdd62ac7cfacd 100644 (file)
@@ -33,27 +33,21 @@ public class CreateConceptRelationAction extends Action {
                        .getLogger(CreateConceptRelationAction.class);\r
        \r
        private static String text = "Create concept relation";\r
-       private ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
                        .getImageRegistry().getDescriptor(ITaxEditorConstants.CONCEPT_ICON);\r
 \r
-       private Taxon taxon;\r
        private TaxonRelationshipType taxonRelationshipType;\r
 \r
-       private CreateConceptRelationAction() {\r
-               super(text);\r
-               setImageDescriptor(image);\r
-       }\r
-\r
-       public CreateConceptRelationAction(Taxon taxon, TaxonRelationshipType taxonRelationshipType) {\r
-               this();\r
-               \r
-               setText(taxonRelationshipType.getLabel());\r
-               \r
-               this.taxon = taxon;\r
+       public CreateConceptRelationAction(TaxonRelationshipType taxonRelationshipType) {\r
+               super(text, image);\r
                this.taxonRelationshipType = taxonRelationshipType;\r
+               setText(taxonRelationshipType.getLabel());\r
        }\r
 \r
+\r
        public void run() {\r
+               Taxon taxon = EditorController.getActiveEditor().getTaxon();\r
+               \r
                IUndoableOperation operation = new CreateConceptRelationOperation(\r
                                "Create concept relation '" + taxonRelationshipType.getLabel() + "'", \r
                                EditorController.getUndoContext(taxon), taxon, taxonRelationshipType);\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateHeterotypicSynonymAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateHeterotypicSynonymAction.java
new file mode 100644 (file)
index 0000000..0910bc3
--- /dev/null
@@ -0,0 +1,50 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.operations.IUndoableOperation;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.operations.name.CreateMisappliedNameOperation;\r
+import eu.etaxonomy.taxeditor.operations.name.CreateSynonymInNewGroupOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 02.02.2009\r
+ * @version 1.0\r
+ */\r
+public class CreateHeterotypicSynonymAction extends Action {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(CreateHeterotypicSynonymAction.class);\r
+\r
+       private static String text = "Create heterotypic synonym";\r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                       .getImageRegistry().getDescriptor(ITaxEditorConstants.HETEROTYPIC_SYN_ICON);\r
+       \r
+       public CreateHeterotypicSynonymAction(){\r
+               super(text, image);\r
+       }\r
+\r
+       public void run() {\r
+               Taxon taxon = EditorController.getActiveEditor().getTaxon();\r
+               \r
+               IUndoableOperation operation = new CreateSynonymInNewGroupOperation(getText(), \r
+                               EditorController.getUndoContext(taxon), taxon, "");\r
+               \r
+               GlobalController.executeOperation(operation);\r
+       }\r
+}\r
index d4f23b9c6349289184a0661bdbb59ca982d8d785..b553cbe903a647a2a797644a0bdeda842e1aa446 100644 (file)
@@ -34,19 +34,14 @@ public class CreateMisappliedNameAction extends Action {
        private ImageDescriptor image = TaxEditorPlugin.getDefault()\r
                        .getImageRegistry().getDescriptor(ITaxEditorConstants.MISAPPLIED_NAME_ICON);\r
 \r
-       private Taxon taxon;\r
-\r
-       private CreateMisappliedNameAction() {\r
+       public CreateMisappliedNameAction() {\r
                super(text);\r
                setImageDescriptor(image);\r
        }\r
 \r
-       public CreateMisappliedNameAction(Taxon taxon) {\r
-               this();\r
-               this.taxon = taxon;\r
-       }\r
-\r
        public void run() {\r
+               Taxon taxon = EditorController.getActiveEditor().getTaxon();\r
+               \r
                IUndoableOperation operation = new CreateMisappliedNameOperation(getText(), \r
                                EditorController.getUndoContext(taxon), taxon);\r
                \r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateNewTaxonFromSynonymAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateNewTaxonFromSynonymAction.java
new file mode 100644 (file)
index 0000000..283c728
--- /dev/null
@@ -0,0 +1,59 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.operations.IUndoableOperation;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.operations.name.ChangeSynonymToTaxonOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 02.02.2009\r
+ * @version 1.0\r
+ */\r
+public class CreateNewTaxonFromSynonymAction extends Action {\r
+\r
+       private static final Logger logger = Logger\r
+                       .getLogger(CreateNewTaxonFromSynonymAction.class);\r
+       \r
+       private static final String text = "Use synonym name to make a new taxon"; //$NON-NLS-1$\r
+       private static final ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                               .getImageDescriptor(ITaxEditorConstants.SYNONYM_TO_TAXON_ICON);\r
+\r
+       private Synonym synonym;\r
+\r
+       private Taxon taxon;\r
+\r
+       private CreateNewTaxonFromSynonymAction() {\r
+               super(text, image);\r
+       }\r
+       \r
+       public CreateNewTaxonFromSynonymAction(Taxon taxon, Synonym synonym) {\r
+               this();\r
+               this.taxon = taxon;\r
+               this.synonym = synonym;\r
+       }\r
+       \r
+       public void run() {\r
+               IUndoableOperation operation = new ChangeSynonymToTaxonOperation\r
+                               (this.getText(), EditorController.getUndoContext(taxon), taxon, synonym);\r
+               \r
+               GlobalController.executeOperation(operation);                   \r
+       }\r
+}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateSynonymInGroupAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateSynonymInGroupAction.java
new file mode 100644 (file)
index 0000000..b943681
--- /dev/null
@@ -0,0 +1,52 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.operations.IUndoableOperation;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.operations.name.CreateSynonymInExisitingHomotypicalGroupOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 02.02.2009\r
+ * @version 1.0\r
+ */\r
+public class CreateSynonymInGroupAction extends Action {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(CreateSynonymInGroupAction.class);\r
+       private static String text = "Create synonym in homotypical group";\r
+       private ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                       .getImageRegistry().getDescriptor(ITaxEditorConstants.HOMOTYPIC_SYN_ICON);\r
+       \r
+       public CreateSynonymInGroupAction(){\r
+               super(text);\r
+               setImageDescriptor(image);              \r
+       }\r
+       \r
+       public void run(){\r
+               Taxon taxon = EditorController.getActiveEditor().getTaxon();\r
+               HomotypicalGroup group = taxon.getHomotypicGroup();\r
+               \r
+               IUndoableOperation operation = new CreateSynonymInExisitingHomotypicalGroupOperation(getText(), \r
+                               EditorController.getUndoContext(taxon), taxon, group, "");\r
+               \r
+               GlobalController.executeOperation(operation);\r
+       }\r
+}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateTaxonomicallyIncludedTaxonAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/CreateTaxonomicallyIncludedTaxonAction.java
new file mode 100644 (file)
index 0000000..8a22d04
--- /dev/null
@@ -0,0 +1,56 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.editor.name.CdmParserController;\r
+import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 02.02.2009\r
+ * @version 1.0\r
+ */\r
+public class CreateTaxonomicallyIncludedTaxonAction extends Action {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(CreateTaxonomicallyIncludedTaxonAction.class);\r
+\r
+       private static String text = "Create taxonomically included taxon";\r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                       .getImageRegistry().getDescriptor(ITaxEditorConstants.BLACK_SQUARE_ICON);\r
+\r
+       public CreateTaxonomicallyIncludedTaxonAction(){\r
+               super(text, image);\r
+       }\r
+       \r
+       public void run(){\r
+               \r
+               Taxon taxon = EditorController.getActiveEditor().getTaxon();\r
+               // Create a new taxon with an empty name\r
+               TaxonNameBase childName = \r
+                               CdmParserController.parseFullReference("", null, null);\r
+               Taxon childTaxon = Taxon.NewInstance(childName, CdmSessionDataRepository.getDefault().getDefaultSec());\r
+                               \r
+               // Add the newly created taxon to the actual open taxon\r
+               taxon.addTaxonomicChild(childTaxon, null, null);\r
+               \r
+               // Open a new editor window for the new taxon\r
+               EditorController.open(childTaxon);\r
+       }\r
+}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/MakeBasionymAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/MakeBasionymAction.java
new file mode 100644 (file)
index 0000000..e80d624
--- /dev/null
@@ -0,0 +1,52 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.operations.IUndoableOperation;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.operations.name.MakeSynonymGroupBasionymOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 03.02.2009\r
+ * @version 1.0\r
+ */\r
+public class MakeBasionymAction extends Action {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(MakeBasionymAction.class);\r
+       \r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+               .getImageDescriptor(ITaxEditorConstants.BASIONYM_ICON);\r
+       \r
+       private Taxon taxon;\r
+       private Synonym synonym;\r
+       \r
+       public MakeBasionymAction(Taxon taxon, Synonym synonym){\r
+               String text = Messages.getString("AddBasionymCompositeAction.0", synonym.getName());\r
+               this.setText(text);\r
+               this.setImageDescriptor(image);\r
+       }\r
+       \r
+       public void run() {\r
+               IUndoableOperation operation = new MakeSynonymGroupBasionymOperation\r
+                               (this.getText(), EditorController.getUndoContext(taxon), taxon, synonym);\r
+               \r
+               GlobalController.executeOperation(operation);           \r
+       }\r
+}\r
similarity index 92%
rename from eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/Messages.java
rename to eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/Messages.java
index 63dd64741980648c2d90a7379d9820cc692f731d..e61eaa3ce8bb0c9f98d7b47aab4a0dbc384eec08 100644 (file)
@@ -6,7 +6,7 @@
  * The contents of this file are subject to the Mozilla Public License Version 1.1\r
  * See LICENSE.TXT at the top of this package for the full license terms.\r
  */\r
-package eu.etaxonomy.taxeditor.editor.name;\r
+package eu.etaxonomy.taxeditor.actions.name;\r
 \r
 import java.util.Locale;\r
 import java.util.MissingResourceException;\r
@@ -27,7 +27,7 @@ import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
  */\r
 public class Messages {\r
        private static final Logger logger = Logger.getLogger(Messages.class);\r
-       private static final String BUNDLE_NAME = "eu.etaxonomy.taxeditor.editor.name.messages"; //$NON-NLS-1$\r
+       private static final String BUNDLE_NAME = "eu.etaxonomy.taxeditor.actions.name.messages"; //$NON-NLS-1$\r
 \r
        private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle\r
                        .getBundle(BUNDLE_NAME, Locale.getDefault());\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/RemoveConceptAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/RemoveConceptAction.java
new file mode 100644 (file)
index 0000000..15111e7
--- /dev/null
@@ -0,0 +1,64 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.operations.IUndoableOperation;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.operations.name.RemoveConceptRelationOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 03.02.2009\r
+ * @version 1.0\r
+ */\r
+public class RemoveConceptAction extends Action {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(RemoveConceptAction.class);\r
+       \r
+       private static String text = "Remove concept relation from taxon"; //$NON-NLS-1$\r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                       .getImageDescriptor(ITaxEditorConstants.ACTIVE_DELETE_ICON);\r
+\r
+       private TaxonRelationshipType relationshipType;\r
+\r
+       private Taxon relatedTaxon;\r
+\r
+       private Taxon taxon;\r
+       \r
+       private RemoveConceptAction(){\r
+               super(text, image);\r
+       }\r
+\r
+       public RemoveConceptAction(Taxon taxon, Taxon relatedTaxon,\r
+                       TaxonRelationshipType relationshipType) {\r
+               this();\r
+               this.taxon = taxon;\r
+               this.relatedTaxon = relatedTaxon;\r
+               this.relationshipType = relationshipType;\r
+       }\r
+       \r
+       public void run() {\r
+               IUndoableOperation operation = new RemoveConceptRelationOperation\r
+                               (this.getText(), EditorController.getUndoContext(taxon), taxon, relatedTaxon, relationshipType);\r
+               \r
+               GlobalController.executeOperation(operation);\r
+       }\r
+\r
+       \r
+}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/RemoveSynonymAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/RemoveSynonymAction.java
new file mode 100644 (file)
index 0000000..45ca34e
--- /dev/null
@@ -0,0 +1,59 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.operations.IUndoableOperation;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.operations.name.RemoveSynonymOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 02.02.2009\r
+ * @version 1.0\r
+ */\r
+public class RemoveSynonymAction extends Action {\r
+\r
+       private static final Logger logger = Logger\r
+                       .getLogger(RemoveSynonymAction.class);\r
+       \r
+       private static final String text = "Remove synonym from taxon"; //$NON-NLS-1$\r
+       private static final ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                       .getImageDescriptor(ITaxEditorConstants.ACTIVE_DELETE_ICON);\r
+\r
+       private Synonym synonym;\r
+\r
+       private Taxon taxon;\r
+       \r
+       private RemoveSynonymAction() {\r
+               super(text, image);\r
+       }\r
+       \r
+       public RemoveSynonymAction(Taxon taxon, Synonym synonym) {\r
+               this();\r
+               this.taxon = taxon;\r
+               this.synonym = synonym;\r
+       }\r
+       \r
+       public void run() {\r
+               IUndoableOperation operation = new RemoveSynonymOperation\r
+                               (this.getText(), EditorController.getUndoContext(taxon), taxon, synonym);\r
+               \r
+               GlobalController.executeOperation(operation);                           \r
+       }\r
+}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/UnmakeBasionymAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/name/UnmakeBasionymAction.java
new file mode 100644 (file)
index 0000000..210c3a5
--- /dev/null
@@ -0,0 +1,55 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.actions.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.operations.IUndoableOperation;\r
+import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.operations.name.UnmakeSynonymGroupBasionymOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 03.02.2009\r
+ * @version 1.0\r
+ */\r
+public class UnmakeBasionymAction extends Action {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(UnmakeBasionymAction.class);\r
+       \r
+       \r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+               .getImageDescriptor(ITaxEditorConstants.BASIONYM_ICON);\r
+       \r
+       private Taxon taxon;\r
+       private Synonym synonym;\r
+       \r
+       public UnmakeBasionymAction(Taxon taxon, Synonym synonym){\r
+               String text = Messages.getString("RemoveBasionymCompositeAction.0", synonym.getName());  //$NON-NLS-1$\r
+               this.setText(text);\r
+               this.setImageDescriptor(image);\r
+               this.taxon = taxon;\r
+               this.synonym = synonym;\r
+       }\r
+       \r
+       public void run() {\r
+               IUndoableOperation operation = new UnmakeSynonymGroupBasionymOperation\r
+                               (this.getText(), EditorController.getUndoContext(taxon), taxon, synonym);\r
+               \r
+               GlobalController.executeOperation(operation);                           \r
+       }\r
+}\r
index 1bd8628fc16c3b10d4e250a4e416b7df5bf368b1..14ba36018678a1224d6e1e09e010493d9ae7c33b 100644 (file)
@@ -18,6 +18,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
 import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.controller.EditorController;\r
 import eu.etaxonomy.taxeditor.controller.GlobalController;\r
 import eu.etaxonomy.taxeditor.operations.ChangeTaxonToSynonymOperation;\r
 \r
@@ -31,22 +32,18 @@ public class ChangeTaxonToSynonymAction extends Action {
                        .getLogger(ChangeTaxonToSynonymAction.class);\r
 \r
        private static String text = "Change this taxon to a synonym";\r
-       private ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
                        .getImageRegistry().getDescriptor(ITaxEditorConstants.TAXON_TO_SYNONYM_ICON);\r
 \r
        private Taxon taxon;\r
 \r
-       private ChangeTaxonToSynonymAction() {\r
-               super(text);\r
-               setImageDescriptor(image);\r
-       }\r
-\r
-       public ChangeTaxonToSynonymAction(Taxon taxon) {\r
-               this();\r
-               this.taxon = taxon;\r
+       public ChangeTaxonToSynonymAction() {\r
+               super(text, image);\r
        }\r
 \r
        public void run() {\r
+               Taxon taxon = EditorController.getActiveEditor().getTaxon();\r
+               \r
                IUndoableOperation operation = new ChangeTaxonToSynonymOperation(getText(), \r
                                GlobalController.getWorkbenchUndoContext(), taxon);\r
                \r
index ed517e3e3c9c0850540ccce3dea969c6b1e1ab9e..b1fbcf6ecb7a4fea582eacd24c40f05dad5044ea 100644 (file)
@@ -39,23 +39,16 @@ public class MoveTaxonDialogAction extends Action {
                        .getLogger(MoveTaxonDialogAction.class);\r
 \r
        private static String text = "Move this taxon to a new parent";\r
-       private ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+       private static ImageDescriptor image = TaxEditorPlugin.getDefault()\r
                        .getImageRegistry().getDescriptor(ITaxEditorConstants.MOVE_ICON);\r
 \r
-       private Taxon taxon;\r
-\r
-       private MoveTaxonDialogAction() {\r
-               super(text);\r
-               setImageDescriptor(image);\r
-       }\r
-\r
-       public MoveTaxonDialogAction(Taxon taxon) {\r
-               this();\r
-               this.taxon = taxon;\r
+       public MoveTaxonDialogAction() {\r
+               super(text, image);\r
        }\r
 \r
        public void run() {\r
                \r
+               Taxon taxon = EditorController.getActiveEditor().getTaxon();\r
                IEditorPart editor = null;\r
                \r
 \r
index 45c7a3b2e90001f9d831b40f57a61c0207ea9519..1e99a49417e4141fab7bcce63a06a5304ee362ae 100644 (file)
@@ -11,32 +11,33 @@ package eu.etaxonomy.taxeditor.actions.ui;
 \r
 import org.apache.log4j.Logger;\r
 import org.eclipse.jface.action.Action;\r
-import org.eclipse.jface.action.IAction;\r
 import org.eclipse.jface.resource.ImageDescriptor;\r
-import org.eclipse.jface.viewers.ISelection;\r
 import org.eclipse.ui.IWorkbenchWindow;\r
-import org.eclipse.ui.IWorkbenchWindowActionDelegate;\r
+import org.eclipse.ui.actions.ActionFactory;\r
 \r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
 import eu.etaxonomy.taxeditor.controller.EditorController;\r
 \r
 /**\r
  * Opens a taxon editor for an existing taxon.\r
  * \r
+ * FIXME this action is broken and actually throws lots of hibernate exceptions\r
+ * \r
  * @author p.ciardelli\r
  * @created 02.06.2008\r
  * @version 1.0\r
  */\r
-public class OpenTaxonEditorAction extends Action implements IWorkbenchWindowActionDelegate {\r
+public class OpenTaxonEditorAction extends Action implements ActionFactory.IWorkbenchAction {\r
        private static final Logger logger = Logger\r
                        .getLogger(OpenTaxonEditorAction.class);\r
 \r
        private static String editTaxonText = "Edit taxon";\r
        private static String newTaxonText = "Add new taxon";\r
-//     private ImageDescriptor image = TaxEditorPlugin.getDefault()\r
-//                     .getImageDescriptor(ITaxEditorConstants.OPEN_TAXON_ICON);\r
-       private ImageDescriptor image = null;\r
-       \r
+       private ImageDescriptor image = TaxEditorPlugin.getDefault()\r
+                       .getImageDescriptor(ITaxEditorConstants.OPEN_TAXON_ICON);\r
+\r
        private IWorkbenchWindow window;\r
        \r
        private Taxon taxon;\r
@@ -69,23 +70,5 @@ public class OpenTaxonEditorAction extends Action implements IWorkbenchWindowAct
 \r
        @Override\r
        public void dispose() {\r
-               // TODO Auto-generated method stub\r
-               \r
-       }\r
-\r
-       @Override\r
-       public void init(IWorkbenchWindow window) {\r
-               this.window = window;\r
-       }\r
-\r
-       @Override\r
-       public void run(IAction action) {\r
-               run();\r
-       }\r
-\r
-       @Override\r
-       public void selectionChanged(IAction action, ISelection selection) {\r
-               // TODO Auto-generated method stub\r
-               \r
        }\r
 }
\ No newline at end of file
index f8ca175f30440acc936f6d80983b6e044c167d9a..67b57a3752e55a1078a25b8126741fb1d5345460 100644 (file)
@@ -314,11 +314,27 @@ public class EditorController {
                }\r
                return taxonEditors;\r
        }\r
+       \r
+       /**\r
+        * Returns the currently active taxon editor\r
+        * \r
+        * @return the taxon editor that has focus\r
+        */\r
+       public static MultiPageTaxonEditor getActiveEditor(){\r
+               if(getActivePage().getActiveEditor() instanceof MultiPageTaxonEditor){\r
+                       return (MultiPageTaxonEditor) getActivePage().getActiveEditor();\r
+               }\r
+               return null;\r
+       }\r
 \r
        public static IUndoContext getUndoContext(Taxon taxon) {\r
                        // TODO make this taxon name editor specific\r
        //              return getTaxonNameEditor(taxon).getUndoContext();\r
-                       return IOperationHistory.GLOBAL_UNDO_CONTEXT;\r
+                       return getUndoContext();\r
+       }\r
+\r
+       public static IUndoContext getUndoContext() {\r
+               return IOperationHistory.GLOBAL_UNDO_CONTEXT;\r
        }\r
 \r
 \r
index 6897133896d6bae7f8f0fa8ab25426989432d912..1640b5fb4a38755985b14d63798cdecf0c07ab56 100644 (file)
@@ -31,6 +31,7 @@ import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;\r
 import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
 \r
 /**\r
@@ -159,5 +160,4 @@ public class GlobalController {
                        logger.error("Error executing operation: " + operation.getLabel(), e);\r
                }\r
        }\r
-\r
 }
\ No newline at end of file
index 025811d3e6098f7c5b4e1535b6175e58625571de..cd3c98c9ccff4b791333caf081871c0530c63571 100644 (file)
@@ -89,7 +89,7 @@ public class ContextMenu {
                        }\r
                });\r
        }\r
-\r
+       \r
        private List getActions() {\r
                if (actions == null) {\r
                        actions = new ArrayList();\r
@@ -112,6 +112,32 @@ public class ContextMenu {
        public void addSubmenu(MenuManager submenu) {\r
                getActions().add(submenu);\r
        }\r
+       \r
+       public void setMenuManager(MenuManager menuManager){\r
+               if(control == null){\r
+                       logger.warn("No control set for context menu");\r
+               }else{\r
+                       this.menuManager = menuManager;\r
+                       menu = menuManager.createContextMenu(control);\r
+                       control.setMenu(menu);\r
+                       \r
+                       menuManager.addMenuListener(new IMenuListener() {\r
+                               public void menuAboutToShow(IMenuManager manager) {\r
+                                       for (Object action : getActions()) {\r
+                                               if (action instanceof Action) {\r
+                                                       manager.add((Action) action);\r
+                                               }\r
+                                               if (action instanceof Separator) {\r
+                                                       manager.add((Separator) action);\r
+                                               }\r
+                                               if (action instanceof MenuManager) {\r
+                                                       manager.add((MenuManager) action);\r
+                                               }\r
+                                       }\r
+                               }\r
+                       });     \r
+               }\r
+       }\r
 \r
        public Menu getMenu() {\r
                return menu;\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MenuConstants.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MenuConstants.java
new file mode 100644 (file)
index 0000000..085909c
--- /dev/null
@@ -0,0 +1,62 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.editor;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.action.MenuManager;\r
+import org.eclipse.jface.action.Separator;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateAutonymAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateConceptRelationAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateHeterotypicSynonymAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateMisappliedNameAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateSynonymInGroupAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateTaxonomicallyIncludedTaxonAction;\r
+import eu.etaxonomy.taxeditor.actions.ui.ChangeTaxonToSynonymAction;\r
+import eu.etaxonomy.taxeditor.actions.ui.MoveTaxonDialogAction;\r
+import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 03.02.2009\r
+ * @version 1.0\r
+ */\r
+public class MenuConstants {\r
+       private static final Logger logger = Logger.getLogger(MenuConstants.class);\r
+       \r
+       public static final MenuManager EDITOR_TAXON_MENU(){\r
+               MenuManager taxonEditorMenu = new MenuManager("Taxon");\r
+               \r
+               taxonEditorMenu.add(new CreateHeterotypicSynonymAction());\r
+               taxonEditorMenu.add(new CreateSynonymInGroupAction());\r
+               taxonEditorMenu.add(new Separator());                   \r
+               taxonEditorMenu.add(new CreateMisappliedNameAction());\r
+               \r
+               MenuManager subMenu = new MenuManager("Create concept relation");\r
+               for (TaxonRelationshipType type : \r
+                               CdmSessionDataRepository.getDefault().getConceptRelationshipTypes()) {\r
+                       subMenu.add(new CreateConceptRelationAction(type));\r
+               }\r
+               taxonEditorMenu.add(subMenu);\r
+               taxonEditorMenu.add(new Separator());\r
+               taxonEditorMenu.add(new MoveTaxonDialogAction());\r
+               taxonEditorMenu.add(new ChangeTaxonToSynonymAction());\r
+               taxonEditorMenu.add(new Separator());\r
+               // TODO is it correct that onlx taxa with rank species may have autonyms?\r
+       //      if(taxon.getName().getRank().equals(Rank.SPECIES())){\r
+                       taxonEditorMenu.add(new CreateAutonymAction());\r
+       //      }\r
+               taxonEditorMenu.add(new CreateTaxonomicallyIncludedTaxonAction());\r
+               \r
+               return taxonEditorMenu;\r
+       }\r
+       \r
+}\r
index 75972b05bf15a080f65f4a7417c88be73c5dc03b..c5569f0c680cdc5e300e2370d112f984f684603b 100644 (file)
@@ -165,7 +165,7 @@ public class MultiPageTaxonEditor extends MultiPageEditorPart {
                });\r
 \r
                setPartName();\r
-                               \r
+               \r
                super.init(site, input);\r
        }\r
                \r
@@ -199,4 +199,8 @@ public class MultiPageTaxonEditor extends MultiPageEditorPart {
     public void setDirtyExtern(boolean IS_DIRTY) {\r
        setDirty(IS_DIRTY);\r
     }\r
+    \r
+    public Taxon getTaxon(){\r
+       return this.taxon;\r
+    }\r
 }
\ No newline at end of file
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditorActionBarContributor.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MultiPageTaxonEditorActionBarContributor.java
new file mode 100644 (file)
index 0000000..dc40e74
--- /dev/null
@@ -0,0 +1,51 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.editor;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.action.IMenuManager;\r
+import org.eclipse.jface.action.MenuManager;\r
+import org.eclipse.jface.action.Separator;\r
+import org.eclipse.ui.IWorkbenchActionConstants;\r
+import org.eclipse.ui.part.EditorActionBarContributor;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateAutonymAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateConceptRelationAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateHeterotypicSynonymAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateMisappliedNameAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateSynonymInGroupAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateTaxonomicallyIncludedTaxonAction;\r
+import eu.etaxonomy.taxeditor.actions.ui.ChangeTaxonToSynonymAction;\r
+import eu.etaxonomy.taxeditor.actions.ui.MoveTaxonDialogAction;\r
+import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 03.02.2009\r
+ * @version 1.0\r
+ */\r
+public class MultiPageTaxonEditorActionBarContributor extends\r
+               EditorActionBarContributor {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(MultiPageTaxonEditorActionBarContributor.class);\r
+\r
+       /**\r
+        * \r
+        */\r
+       public MultiPageTaxonEditorActionBarContributor() {\r
+               logger.warn("Setting up action bar contributions.");\r
+       }\r
+       \r
+       public void contributeToMenu(IMenuManager menubar){             \r
+               menubar.insertAfter(IWorkbenchActionConstants.M_EDIT, MenuConstants.EDITOR_TAXON_MENU());\r
+       }\r
+}\r
index 364635c0e4d492b30c4926b83a7148877f878b16..d275db68f4ebebe608a5769831eecee41ed93c6a 100644 (file)
@@ -15,14 +15,20 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.forms.IManagedForm;\r
 import org.eclipse.ui.views.properties.IPropertySource;\r
 \r
+import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateAutonymAction;\r
 import eu.etaxonomy.taxeditor.actions.name.CreateConceptRelationAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateHeterotypicSynonymAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateSynonymInGroupAction;\r
 import eu.etaxonomy.taxeditor.actions.name.CreateMisappliedNameAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateTaxonomicallyIncludedTaxonAction;\r
 import eu.etaxonomy.taxeditor.actions.ui.ChangeTaxonToSynonymAction;\r
 import eu.etaxonomy.taxeditor.actions.ui.MoveTaxonDialogAction;\r
 import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
+import eu.etaxonomy.taxeditor.editor.MenuConstants;\r
 import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
 import eu.etaxonomy.taxeditor.propertysheet.name.TaxonBasePropertySource;\r
 \r
@@ -53,25 +59,28 @@ public class AcceptedNameComposite extends NameComposite {
        private void createMenu() {\r
                ContextMenu contextMenu = createContextMenu();\r
 \r
-               contextMenu.addAction(new ChangeTaxonToSynonymAction(getTaxon()));\r
-               contextMenu.addAction(new MoveTaxonDialogAction(getTaxon()));\r
-               contextMenu.addSeparator();\r
-               contextMenu.addAction(new CreateMisappliedNameAction(getTaxon()));\r
+               contextMenu.setMenuManager(MenuConstants.EDITOR_TAXON_MENU());\r
                \r
-               MenuManager subMenu = new MenuManager("Create concept relation");\r
-               for (TaxonRelationshipType type : \r
-                               CdmSessionDataRepository.getDefault().getConceptRelationshipTypes()) {\r
-                       subMenu.add(new CreateConceptRelationAction(\r
-                                       getTaxon(), type));\r
-               }\r
-               contextMenu.addSubmenu(subMenu);\r
-               \r
-               \r
-               // TODO Make action "Create autonym and subspecies"\r
-//             contextMenu.addSeparator();\r
+//             contextMenu.addAction(new CreateHeterotypicSynonymAction());\r
+//             contextMenu.addAction(new CreateSynonymInGroupAction());\r
+//             contextMenu.addSeparator();                     \r
+//             contextMenu.addAction(new CreateMisappliedNameAction());\r
 //             \r
-//             contextMenu.addAction(new CreateAutonym(getTaxon()));\r
-//             contextMenu.addAction(new CreateSubspecies(getTaxon()));\r
+//             MenuManager subMenu = new MenuManager("Create concept relation");\r
+//             for (TaxonRelationshipType type : \r
+//                             CdmSessionDataRepository.getDefault().getConceptRelationshipTypes()) {\r
+//                     subMenu.add(new CreateConceptRelationAction(type));\r
+//             }\r
+//             contextMenu.addSubmenu(subMenu);\r
+//             contextMenu.addSeparator();     \r
+//             contextMenu.addAction(new MoveTaxonDialogAction());\r
+//             contextMenu.addAction(new ChangeTaxonToSynonymAction());\r
+//             contextMenu.addSeparator();\r
+//             // TODO is it correct that onlx taxa with rank species may have autonyms?\r
+//     //      if(getTaxon().getName().getRank().equals(Rank.SPECIES())){\r
+//                     contextMenu.addAction(new CreateAutonymAction());\r
+//     //      }\r
+//             contextMenu.addAction(new CreateTaxonomicallyIncludedTaxonAction());\r
        }\r
 \r
        @Override\r
index 84d7515fbddf217eb39b4fdb48f2fbf96c1dd303..2b2afda707b4aee9fe07531ec093db205cfe313f 100644 (file)
@@ -13,6 +13,7 @@ import org.apache.log4j.Logger;
 import org.eclipse.core.commands.operations.IUndoContext;\r
 import org.eclipse.core.commands.operations.IUndoableOperation;\r
 import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.action.MenuManager;\r
 import org.eclipse.jface.resource.ImageDescriptor;\r
 import org.eclipse.swt.graphics.Font;\r
 import org.eclipse.swt.widgets.Composite;\r
@@ -25,9 +26,13 @@ import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
 import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
 import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.actions.name.ChangeConceptRelationAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateConceptRelationAction;\r
+import eu.etaxonomy.taxeditor.actions.name.RemoveConceptAction;\r
 import eu.etaxonomy.taxeditor.controller.EditorController;\r
 import eu.etaxonomy.taxeditor.controller.GlobalController;\r
 import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
+import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
 import eu.etaxonomy.taxeditor.operations.name.RemoveConceptRelationOperation;\r
 import eu.etaxonomy.taxeditor.operations.name.RemoveMisappliedNameOperation;\r
 import eu.etaxonomy.taxeditor.propertysheet.name.TaxonBasePropertySource;\r
@@ -105,21 +110,13 @@ public class ConceptComposite extends NameComposite {
        private void createMenu() {\r
                ContextMenu contextMenu = createContextMenu();\r
                \r
-               final IUndoContext undoContext = EditorController.getUndoContext(taxon);\r
-               \r
                // Remove misapplied name from taxon\r
-               String text = "Remove concept relation from taxon"; //$NON-NLS-1$\r
-               ImageDescriptor image = TaxEditorPlugin.getDefault()\r
-                               .getImageDescriptor(ITaxEditorConstants.ACTIVE_DELETE_ICON);\r
-               contextMenu.addAction(new Action(text, image){\r
-                                               \r
-                       public void run() {\r
-                               IUndoableOperation operation = new RemoveConceptRelationOperation\r
-                                               (this.getText(), undoContext, taxon, relatedTaxon, relationshipType);\r
-                               \r
-                               GlobalController.executeOperation(operation);\r
-                       }\r
-               });\r
+               contextMenu.addAction(new RemoveConceptAction(taxon, relatedTaxon, relationshipType));\r
+               MenuManager subMenu = new MenuManager("Change relation type");\r
+               for (TaxonRelationshipType type : CdmSessionDataRepository.getDefault().getConceptRelationshipTypes()) {\r
+                       subMenu.add(new ChangeConceptRelationAction(taxon, relatedTaxon, type));\r
+               }\r
+               contextMenu.addSubmenu(subMenu);\r
        }\r
 \r
 \r
index 33ad669169a0ffe1adb08109ab89366ad62288ac..1bee97f7bfd9d3f1d756ff98e7c292943ed9aabb 100644 (file)
@@ -25,6 +25,7 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
 import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
 import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.actions.name.RemoveConceptAction;\r
 import eu.etaxonomy.taxeditor.controller.EditorController;\r
 import eu.etaxonomy.taxeditor.controller.GlobalController;\r
 import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
@@ -82,22 +83,10 @@ public class MisappliedNameComposite extends NameComposite {
 \r
                ContextMenu contextMenu = createContextMenu();\r
 \r
-               final IUndoContext undoContext = EditorController.getUndoContext(taxon);\r
-               \r
                // Remove misapplied name from taxon\r
-               String text = "Remove misapplied name from taxon"; //$NON-NLS-1$\r
-               ImageDescriptor image = TaxEditorPlugin.getDefault()\r
-                               .getImageDescriptor(ITaxEditorConstants.ACTIVE_DELETE_ICON);\r
-               contextMenu.addAction(new Action(text, image){\r
-                                               \r
-                       public void run() {\r
-                               IUndoableOperation operation = new RemoveConceptRelationOperation\r
-                                               (this.getText(), undoContext, taxon, \r
-                                                               misappliedName, TaxonRelationshipType.MISAPPLIED_NAME_FOR());\r
-                               \r
-                               GlobalController.executeOperation(operation);\r
-                       }\r
-               });\r
+               contextMenu.addAction(new RemoveConceptAction(taxon, \r
+                               misappliedName, TaxonRelationshipType.MISAPPLIED_NAME_FOR()));\r
+\r
        }\r
        \r
        public boolean setParent(Composite parent) {\r
index b06934cee379257323c946611f94ae01bcdde875..8b3f51433183859d4bd110a8209da735b2985b44 100644 (file)
@@ -17,6 +17,7 @@ import org.eclipse.core.commands.operations.IUndoContext;
 import org.eclipse.core.commands.operations.IUndoableOperation;\r
 import org.eclipse.core.runtime.Assert;\r
 import org.eclipse.jface.action.Action;\r
+import org.eclipse.jface.action.MenuManager;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.custom.StyledText;\r
 import org.eclipse.swt.events.FocusAdapter;\r
index 589bab86b67a733cb1c625abde71f30a102618f2..cd5eee3ffb51d1d78d614e0e1c4b909222d008a4 100644 (file)
@@ -25,17 +25,21 @@ import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
 import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.actions.cdm.SwapSynonymAndTaxonAction;\r
+import eu.etaxonomy.taxeditor.actions.name.ChangeSynonymToConceptRelationAction;\r
+import eu.etaxonomy.taxeditor.actions.name.ChangeSynonymToMisapplicationAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateSynonymInGroupAction;\r
+import eu.etaxonomy.taxeditor.actions.name.CreateNewTaxonFromSynonymAction;\r
+import eu.etaxonomy.taxeditor.actions.name.MakeBasionymAction;\r
+import eu.etaxonomy.taxeditor.actions.name.Messages;\r
+import eu.etaxonomy.taxeditor.actions.name.RemoveSynonymAction;\r
+import eu.etaxonomy.taxeditor.actions.name.UnmakeBasionymAction;\r
 import eu.etaxonomy.taxeditor.controller.EditorController;\r
 import eu.etaxonomy.taxeditor.controller.GlobalController;\r
 import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
 import eu.etaxonomy.taxeditor.model.CdmUtil;\r
 import eu.etaxonomy.taxeditor.operations.name.ChangeHomotypicGroupOperation;\r
-import eu.etaxonomy.taxeditor.operations.name.ChangeSynonymToConceptOperation;\r
 import eu.etaxonomy.taxeditor.operations.name.ChangeSynonymToMisappliedNameOperation;\r
-import eu.etaxonomy.taxeditor.operations.name.ChangeSynonymToTaxonOperation;\r
-import eu.etaxonomy.taxeditor.operations.name.MakeSynonymAcceptedOperation;\r
-import eu.etaxonomy.taxeditor.operations.name.MakeSynonymGroupBasionymOperation;\r
-import eu.etaxonomy.taxeditor.operations.name.RemoveSynonymOperation;\r
 import eu.etaxonomy.taxeditor.operations.name.UnmakeSynonymGroupBasionymOperation;\r
 import eu.etaxonomy.taxeditor.propertysheet.name.TaxonBasePropertySource;\r
 \r
@@ -136,128 +140,27 @@ public class SynonymComposite extends NameComposite {
 \r
                ContextMenu contextMenu = createContextMenu();\r
 \r
-               // Change composite to a misapplied name\r
-               String text = "Change synonym to misapplied name"; //$NON-NLS-1$\r
-               ImageDescriptor image = TaxEditorPlugin.getDefault()\r
-                               .getImageDescriptor(ITaxEditorConstants.MISAPPLIED_NAME_ICON);\r
-               contextMenu.addAction(new Action(text, image){\r
-                                               \r
-                       public void run() {\r
-                               IUndoableOperation operation = new ChangeSynonymToMisappliedNameOperation\r
-                                               (this.getText(), undoContext, taxon, synonym);\r
-                               \r
-                               GlobalController.executeOperation(operation);\r
-                       }\r
-               });\r
-               \r
-               // Change synonym to conccept relation\r
-               text = "Change synonym to concept relation"; //$NON-NLS-1$\r
-               image = TaxEditorPlugin.getDefault()\r
-                                       .getImageDescriptor(ITaxEditorConstants.CONCEPT_ICON);\r
-\r
-               contextMenu.addAction(new Action(text, image){\r
-                       \r
-                       public void run() {\r
-                               IUndoableOperation operation = new ChangeSynonymToConceptOperation\r
-                                               (this.getText(), undoContext, taxon, synonym);\r
-                               \r
-                               GlobalController.executeOperation(operation);                   \r
-                       }\r
-               });\r
-               \r
-               // Remove composite\r
-               text = "Remove synonym from taxon"; //$NON-NLS-1$\r
-               image = TaxEditorPlugin.getDefault()\r
-                               .getImageDescriptor(ITaxEditorConstants.ACTIVE_DELETE_ICON);\r
-               contextMenu.addAction(new Action(text, image){\r
-                       \r
-                       public void run() {\r
-                               IUndoableOperation operation = new RemoveSynonymOperation\r
-                                               (this.getText(), undoContext, taxon, synonym);\r
-                               \r
-                               GlobalController.executeOperation(operation);                           \r
-                       }\r
-               });\r
-               \r
-               // Separator\r
-               contextMenu.addSeparator();\r
-                               \r
-               // Make the synonym the basionym of the homotypic group\r
-               text = Messages.getString\r
-                               ("AddBasionymCompositeAction.0", synonym.getName());  //$NON-NLS-1$\r
-               image = TaxEditorPlugin.getDefault()\r
-                                       .getImageDescriptor(ITaxEditorConstants.BASIONYM_ICON);\r
-               Action makeBasionymAction = new Action(text, image){\r
-                       \r
-                       public void run() {\r
-                               IUndoableOperation operation = new MakeSynonymGroupBasionymOperation\r
-                                               (this.getText(), undoContext, taxon, synonym);\r
-                               \r
-                               GlobalController.executeOperation(operation);           \r
-                       }\r
-               };\r
-               contextMenu.addAction(makeBasionymAction);      \r
-       \r
-               // Action to remove the composite as basionym of the homotypic group\r
-               text = Messages.getString\r
-                               ("RemoveBasionymCompositeAction.0", synonym.getName());  //$NON-NLS-1$\r
-               image = TaxEditorPlugin.getDefault()\r
-                                       .getImageDescriptor(ITaxEditorConstants.BASIONYM_ICON);\r
-               Action unmakeBasionymAction = new Action(text, image){\r
-                       \r
-                       public void run() {\r
-                               IUndoableOperation operation = new UnmakeSynonymGroupBasionymOperation\r
-                                               (this.getText(), undoContext, taxon, synonym);\r
-                               \r
-                               GlobalController.executeOperation(operation);                           \r
-                       }\r
-               };\r
-               contextMenu.addAction(unmakeBasionymAction);\r
-               \r
+               contextMenu.addAction(new RemoveSynonymAction(taxon, synonym));\r
                if (CdmUtil.isNameGroupBasionym(synonym.getName())) {\r
-                       \r
-                       // Gray out action for "make synonym group basionym"\r
-                       makeBasionymAction.setEnabled(false);\r
+                       contextMenu.addAction(new UnmakeBasionymAction(taxon, synonym));\r
                } else {\r
-                       \r
-                       // Gray out action for "unmake synonym group basionym"\r
-                       unmakeBasionymAction.setEnabled(false);\r
+                       contextMenu.addAction(new MakeBasionymAction(taxon, synonym));  \r
                }\r
-               \r
-               // Separator\r
+                // Add synonym to this synonyms homotypical group\r
+               // FIXME not working with the new menu action \r
+//             contextMenu.addAction(new CreateSynonymInGroupAction(synonym.getHomotypicGroup()));\r
                contextMenu.addSeparator();\r
-\r
+               contextMenu.addAction(new ChangeSynonymToMisapplicationAction(taxon, synonym));\r
+               contextMenu.addAction(new ChangeSynonymToConceptRelationAction(taxon, synonym));\r
+               contextMenu.addSeparator();                             \r
                // Change this synonym to the taxon's accepted name\r
-               text = "Make synonym this taxon's accepted taxon"; //$NON-NLS-1$\r
-               image = TaxEditorPlugin.getDefault()\r
-                                       .getImageDescriptor(ITaxEditorConstants.SWAP_SYNONYM_AND_TAXON_ICON);\r
-               Action swapAction = new Action(text, image){\r
-                       \r
-                       public void run() {\r
-                               IUndoableOperation operation = new MakeSynonymAcceptedOperation\r
-                                               (this.getText(), undoContext, taxon, synonym);\r
-                               \r
-                               GlobalController.executeOperation(operation);                           \r
-                       }\r
-               };\r
+               Action swapAction = new SwapSynonymAndTaxonAction(taxon, synonym);\r
                contextMenu.addAction(swapAction);\r
                // TODO fix operation\r
                swapAction.setEnabled(false);\r
                \r
                // Make a new taxon with this synonym as the accepted name\r
-               text = "Use synonym name to make a new taxon"; //$NON-NLS-1$\r
-               image = TaxEditorPlugin.getDefault()\r
-                                       .getImageDescriptor(ITaxEditorConstants.SYNONYM_TO_TAXON_ICON);\r
-\r
-               contextMenu.addAction(new Action(text, image){\r
-                       \r
-                       public void run() {\r
-                               IUndoableOperation operation = new ChangeSynonymToTaxonOperation\r
-                                               (this.getText(), undoContext, taxon, synonym);\r
-                               \r
-                               GlobalController.executeOperation(operation);                   \r
-                       }\r
-               });\r
+               contextMenu.addAction(new CreateNewTaxonFromSynonymAction(taxon, synonym));\r
        }\r
 \r
 \r
index 650d79e8e81a48433a406afb88b367d487ba09bf..f4e28f0eada47e8e00474e78870fd7a21821a93e 100644 (file)
@@ -451,7 +451,7 @@ public class CdmSessionDataRepository implements ICdmSessionDataRepository {
        @Override\r
        public Set<TaxonRelationshipType> getConceptRelationshipTypes() {\r
                if (conceptRelationshipTypes == null) {\r
-                       conceptRelationshipTypes = getTaxonRelationshipTypes().terms;\r
+                       conceptRelationshipTypes = getTaxonRelationshipTypes().getTerms();\r
                        conceptRelationshipTypes.remove(TaxonRelationshipType.MISAPPLIED_NAME_FOR());\r
                        conceptRelationshipTypes.remove(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN());\r
                }\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeConceptRelationOperation.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeConceptRelationOperation.java
new file mode 100644 (file)
index 0000000..e744ca4
--- /dev/null
@@ -0,0 +1,80 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.operations.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.core.commands.operations.IUndoContext;\r
+import org.eclipse.core.runtime.IAdaptable;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.taxeditor.operations.AbstractEditorOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 03.02.2009\r
+ * @version 1.0\r
+ */\r
+public class ChangeConceptRelationOperation extends AbstractEditorOperation {\r
+\r
+\r
+       private static final Logger logger = Logger\r
+                       .getLogger(ChangeConceptRelationOperation.class);\r
+       private Taxon relatedTaxon;\r
+       private TaxonRelationshipType oldRelationshipType;\r
+       private TaxonRelationshipType newRelationshipType;\r
+\r
+       public ChangeConceptRelationOperation(String label,\r
+                       IUndoContext undoContext, Taxon taxon, Taxon relatedTaxon, TaxonRelationshipType type) {\r
+               super(label, undoContext, taxon);\r
+               this.relatedTaxon = relatedTaxon;\r
+               //this.oldRelationshipType = relatedTaxon.get\r
+               this.newRelationshipType = type;\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+        */\r
+       @Override\r
+       public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+               // Remove relatedTaxon and old relationship\r
+               // FIXME since taxon relationships come in a set, which relationships are we going to delete here?\r
+//             taxon.removeTaxon(relatedTaxon, oldRelationshipType);\r
+               // Add new relationship\r
+               // TODO add microcitation for misapplied name to property sheet\r
+               relatedTaxon.addTaxonRelation(taxon, newRelationshipType, null, null);  \r
+               \r
+               return redrawOpenEditor();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+        */\r
+       @Override\r
+       public IStatus redo(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+               return execute(monitor, info);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+        */\r
+       @Override\r
+       public IStatus undo(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+               // see FIXME in execute()\r
+               logger.warn("Not implemented yet. See developer documentation for details");\r
+               return null;\r
+       }\r
+}\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/CreateSynonymInExisitingHomotypicalGroupOperation.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/CreateSynonymInExisitingHomotypicalGroupOperation.java
new file mode 100644 (file)
index 0000000..7138ac1
--- /dev/null
@@ -0,0 +1,92 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.taxeditor.operations.name;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.core.commands.operations.IUndoContext;\r
+import org.eclipse.core.runtime.IAdaptable;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+\r
+import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.editor.name.CdmParserController;\r
+import eu.etaxonomy.taxeditor.operations.AbstractEditorOperation;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @created 02.02.2009\r
+ * @version 1.0\r
+ */\r
+public class CreateSynonymInExisitingHomotypicalGroupOperation extends\r
+               AbstractEditorOperation {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(CreateSynonymInExisitingHomotypicalGroupOperation.class);\r
+\r
+       private HomotypicalGroup group;\r
+       private String newSynonymText;\r
+\r
+       private SynonymRelationship synonymRelationship;\r
+       \r
+       public CreateSynonymInExisitingHomotypicalGroupOperation(String label,\r
+                       IUndoContext undoContext, Taxon taxon, HomotypicalGroup group, String newSynonymText) {\r
+               super(label, undoContext, taxon);\r
+               this.group = group;\r
+               this.newSynonymText = newSynonymText;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+        */\r
+       @Override\r
+       public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+               \r
+               // Create synonym name using newSynonymText\r
+               TaxonNameBase synonymName = \r
+                               CdmParserController.parseFullReference(newSynonymText, null, null);\r
+               \r
+               // Add name to given homotypic group\r
+               group.addTypifiedName(synonymName);\r
+               \r
+               // Create a new synonym for the taxon\r
+               // TODO add citations\r
+               if(group.equals(taxon.getHomotypicGroup())){\r
+                       synonymRelationship = taxon.addHomotypicSynonymName(synonymName, null, null);\r
+               }else{\r
+                       synonymRelationship = taxon.addHeterotypicSynonymName(synonymName);\r
+               }\r
+               return redrawOpenEditor();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+        */\r
+       @Override\r
+       public IStatus redo(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+               return execute(monitor, info);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
+        */\r
+       @Override\r
+       public IStatus undo(IProgressMonitor monitor, IAdaptable info)\r
+                       throws ExecutionException {\r
+\r
+               taxon.removeSynonymRelation(synonymRelationship);\r
+               \r
+               return redrawOpenEditor();\r
+       }\r
+}\r