- refactored DataImportEditor context menu
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 16 Jun 2014 09:41:09 +0000 (09:41 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 16 Jun 2014 09:41:09 +0000 (09:41 +0000)
   - removed extension point in plugin.xml
   - added dynamic context menu

.gitattributes
eu.etaxonomy.taxeditor.editor/plugin.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/DataImportEditorContextMenu.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryOriginalRecordCommand.java [deleted file]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SaveSpecimenCommand.java [deleted file]

index 657db6d5049278c8465539abd5c411ad2bd904ff..798918ab8c6f8de9dd6d3dc60818c138584930b5 100644 (file)
@@ -491,9 +491,7 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/d
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/DataImportEditorInput.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditor.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditorInput.java -text
-eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryOriginalRecordCommand.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryType.java -text
-eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SaveSpecimenCommand.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenImportEditor.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenProviderSelectionWizardPage.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenSearchWizard.java -text
index da4e2dd1bec4d97e89f5093317b4655741c0c8dc..741a5516726ba2dfd6198c5c0ba53d1d4f464c97 100644 (file)
       </menuContribution>
       <menuContribution
             locationURI="popup:eu.etaxonomy.taxeditor.editor.view.dataimport.SpecimenImportEditor">
-         <command
-               commandId="eu.etaxonomy.taxeditor.editor.view.dataimport.SaveSpecimenCommand"
-               label="Save Specimen"
-               style="push">
-         </command>
+         <dynamic
+               class="eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditorContextMenu"
+               id="eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditorContextMenu">
+         </dynamic>
       </menuContribution>
       <menuContribution
             locationURI="popup:eu.etaxonomy.taxeditor.editor.view.dataimport.GbifImportEditor">
-         <command
-               commandId="eu.etaxonomy.taxeditor.editor.view.dataimport.SaveSpecimenCommand"
-               label="Save Specimen"
-               style="push">
-         </command>
-         <command
-               commandId="eu.etaxonomy.taxeditor.editor.view.dataimport.QueryOriginalRecordCommand"
-               label="Query original data record"
-               style="push">
-         </command>
+         <dynamic
+               class="eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditorContextMenu"
+               id="eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditorContextMenu">
+         </dynamic>
       </menuContribution>
       
       
index 0013ea3dd6cd084956a6c9ce92d2a2b156e3a155..36c45b12618328353b3fc5aa06df2ddaa1f53479 100644 (file)
@@ -1,8 +1,17 @@
 package eu.etaxonomy.taxeditor.editor.view.dataimport;
 
+import java.io.IOException;
+
+import org.apache.http.client.ClientProtocolException;
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.action.ContributionItem;
 import org.eclipse.jface.action.IContributionItem;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
@@ -10,11 +19,24 @@ import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;
 
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.DataSetResponse;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifDataSetProtocol;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifQueryServiceWrapper;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
 public class DataImportEditorContextMenu extends CompoundContributionItem {
 
+    private final Logger logger = Logger.getLogger(DataImportEditorContextMenu.class);
+
     /* (non-Javadoc)
      * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
      */
@@ -27,20 +49,72 @@ public class DataImportEditorContextMenu extends CompoundContributionItem {
                         final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
                         final IEditorPart activeEditor = window.getActivePage().getActiveEditor();
                         final ISelection selection = window.getActivePage().getSelection();
-                        MenuItem item = new MenuItem(menu, SWT.NONE);
-                        item.setText("Save Specimen");
-                        item.addListener(SWT.Selection, new Listener() {
+                        if(selection instanceof StructuredSelection){
+                            final StructuredSelection structuredSelection = (StructuredSelection)selection;
+
+                            //Save Specimen
+                            MenuItem saveSpecimenItem = new MenuItem(menu, SWT.NONE);
+                            saveSpecimenItem.setText("Save Specimen");
+                            saveSpecimenItem.addListener(SWT.Selection, new Listener() {
+
+                                @Override
+                                public void handleEvent(Event event) {
+                                    if(structuredSelection.iterator().hasNext()){
+                                        Object next = structuredSelection.iterator().next();
+                                        if(next instanceof GbifResponse){
+                                            //unwrap DerivedUnit from GbifResponse
+                                            next = ((GbifResponse) next).getDerivedUnitFacade().innerDerivedUnit();
+                                        }
+                                        if(next instanceof SpecimenOrObservationBase){
+                                            if(activeEditor instanceof DataImportEditor){
+                                                DataImportEditor<?> dataImportEditor = (DataImportEditor<?>)activeEditor;
+                                                CdmStore.getService(IOccurrenceService.class).saveOrUpdate((SpecimenOrObservationBase<?>) next);
+                                                dataImportEditor.getConversationHolder().commit(true);
+                                                System.out.println("commit");
+                                            }
+                                        }
+                                    }
+                                }
+                            });
+
+                            //Query original data provider
+                            if(structuredSelection.size()==1
+                                    && structuredSelection.iterator().next() instanceof GbifResponse
+                                    && ((GbifResponse)structuredSelection.iterator().next()).getDataSetProtocol()!=null
+                                    && ((GbifResponse)structuredSelection.iterator().next()).getDataSetProtocol()==GbifDataSetProtocol.BIOCASE){
+                                final GbifResponse gbifResponse = (GbifResponse)structuredSelection.iterator().next();
+                                MenuItem queryOriginalItem = new MenuItem(menu, SWT.NONE);
+                                queryOriginalItem.setText("Query original data provider");
+                                queryOriginalItem.addListener(SWT.Selection, new Listener() {
+
+                                    @Override
+                                    public void handleEvent(Event event) {
+                                        try{
+                                            DataSetResponse response = new GbifQueryServiceWrapper().queryOriginalDataSet(gbifResponse);
+                                            final BioCaseEditorInput input = new BioCaseEditorInput(new OccurenceQuery(response.getUnitId()), response.getEndpoint());
+                                            EditorUtil.open(input);
+                                            Job queryJob = new Job("Querying for original record...") {
 
-                            @Override
-                            public void handleEvent(Event event) {
-                                System.out.println("listener");
+                                                @Override
+                                                protected IStatus run(IProgressMonitor monitor) {
+                                                    input.query();
+                                                    return Status.OK_STATUS;
+                                                }
+                                            };
+                                            queryJob.schedule();
+                                        } catch (ClientProtocolException e) {
+                                            logger.error("Query for single record failed.", e);
+                                        } catch (IOException e) {
+                                            logger.error("Query for single record failed.", e);
+                                        } catch (PartInitException e) {
+                                            logger.error("Could not open editor.", e);
+                                        }
+                                    }
+                                });
                             }
-                        });
-                        System.out.println(activeEditor);
-                        System.out.println(selection);
+                        }
                     }
-                }
-        };
+                }};
         return contributionItems;
     }
 
index 3159b22d2002e5c7033a03d61cf05f527daac281..881f86386252a5c1e8b2b7ab270b778ebdff8256 100644 (file)
@@ -32,7 +32,12 @@ public class GbifImportEditor extends DataImportEditor<GbifResponse>{
      */
     @Override
     protected String getTextForTableItem(GbifResponse item) {
-        return item.getDerivedUnitFacade().innerDerivedUnit().generateTitle();
+        String text = "";
+        if(item.getDataSetProtocol()!=null){
+            text += "["+item.getDataSetProtocol()+"] ";
+        }
+        text += item.getDerivedUnitFacade().innerDerivedUnit().generateTitle();
+        return text;
     }
 
 }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryOriginalRecordCommand.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryOriginalRecordCommand.java
deleted file mode 100644 (file)
index 3587615..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-package eu.etaxonomy.taxeditor.editor.view.dataimport;
-
-import java.io.IOException;
-
-import org.apache.http.client.ClientProtocolException;
-import org.apache.log4j.Logger;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-
-import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
-import eu.etaxonomy.cdm.ext.occurrence.gbif.DataSetResponse;
-import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifQueryServiceWrapper;
-import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-
-public class QueryOriginalRecordCommand extends AbstractHandler {
-
-    private final Logger logger = Logger.getLogger(QueryOriginalRecordCommand.class);
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-     */
-    @Override
-    public Object execute(ExecutionEvent event) throws ExecutionException {
-        final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-        final ISelection selection = window.getActivePage().getSelection();
-        if(selection instanceof StructuredSelection){
-            StructuredSelection structuredSelection = (StructuredSelection)selection;
-            if(structuredSelection.size()==1){
-                Object next = structuredSelection.iterator().next();
-                if(next instanceof GbifResponse){
-                    try{
-                        DataSetResponse response = new GbifQueryServiceWrapper().queryOriginalDataSet((GbifResponse)next);
-                        final BioCaseEditorInput input = new BioCaseEditorInput(new OccurenceQuery(response.getUnitId()), response.getEndpoint());
-                        EditorUtil.open(input);
-                        Job queryJob = new Job("Querying for original record...") {
-
-                            @Override
-                            protected IStatus run(IProgressMonitor monitor) {
-                                input.query();
-                                return Status.OK_STATUS;
-                            }
-                        };
-                        queryJob.schedule();
-                    } catch (ClientProtocolException e) {
-                        logger.error("Query for single record failed.", e);
-                    } catch (IOException e) {
-                        logger.error("Query for single record failed.", e);
-                    } catch (PartInitException e) {
-                        logger.error("Could not open editor.", e);
-                    }
-                }
-            }
-        }
-        return null;
-    }
-
-}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SaveSpecimenCommand.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SaveSpecimenCommand.java
deleted file mode 100644 (file)
index 3df52db..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-package eu.etaxonomy.taxeditor.editor.view.dataimport;
-
-import java.util.Iterator;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-
-import eu.etaxonomy.cdm.api.service.IOccurrenceService;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-
-
-public class SaveSpecimenCommand extends AbstractHandler {
-
-    /* (non-Javadoc)
-     * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
-     */
-    @Override
-    public Object execute(ExecutionEvent event) throws ExecutionException {
-        final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-        final ISelection selection = window.getActivePage().getSelection();
-        if(selection instanceof StructuredSelection){
-            StructuredSelection structuredSelection = (StructuredSelection)selection;
-            Iterator<?> iterator = structuredSelection.iterator();
-            while(iterator.hasNext()){
-                Object next = iterator.next();
-                if(next instanceof SpecimenOrObservationBase){
-                    IWorkbenchPart activePart = AbstractUtility.getActivePart();
-                    if(activePart instanceof DataImportEditor){
-                        DataImportEditor dataImportEditor = (DataImportEditor)activePart;
-                        CdmStore.getService(IOccurrenceService.class).saveOrUpdate((SpecimenOrObservationBase<?>) next);
-                        dataImportEditor.getConversationHolder().commit(true);
-                    }
-                }
-            }
-        }
-        return null;
-    }
-
-}