ref #5348 Reduce space of taxon associations
authorPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 9 Aug 2016 09:28:27 +0000 (11:28 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 9 Aug 2016 09:28:27 +0000 (11:28 +0200)
 - Use generic open framework for double-click on list item

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/TaxonAssociationDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/CdmViewerUtil.java

index 697565e07800dcf182fc2e883cfb2aa549dbfd88..7a92974453c546d0ae31a7d267f8e7fafd8b25c0 100644 (file)
@@ -9,31 +9,17 @@
  */
 package eu.etaxonomy.taxeditor.ui.section.occurrence.association;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Set;
-import java.util.UUID;
 
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.IParameter;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.Parameterization;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.core.commands.common.NotDefinedException;
 import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.DoubleClickEvent;
 import org.eclipse.jface.viewers.IDoubleClickListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.ListViewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
@@ -47,6 +33,7 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.view.CdmViewerChooser;
 
 /**
  * @author pplitzner
@@ -75,8 +62,8 @@ public class TaxonAssociationDetailElement extends AbstractCdmDetailElement<Deri
             return;
         }
         if(!associatedTaxa.isEmpty()){
-            TableViewer viewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
-            viewer.getTable().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+            ListViewer viewer = new ListViewer(getLayoutComposite(), SWT.FULL_SELECTION);
+            viewer.getList().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
             viewer.setContentProvider(new ArrayContentProvider());
             viewer.setLabelProvider(new LabelProvider(){
                 @Override
@@ -88,8 +75,8 @@ public class TaxonAssociationDetailElement extends AbstractCdmDetailElement<Deri
             viewer.addDoubleClickListener(this);
         }
         if(!typeDesignations.isEmpty()){
-            TableViewer viewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
-            viewer.getTable().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+               ListViewer viewer = new ListViewer(getLayoutComposite(), SWT.FULL_SELECTION);
+            viewer.getList().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
             viewer.setContentProvider(new ArrayContentProvider());
             viewer.setLabelProvider(new LabelProvider(){
                 @Override
@@ -110,8 +97,8 @@ public class TaxonAssociationDetailElement extends AbstractCdmDetailElement<Deri
             viewer.addDoubleClickListener(this);
         }
         if(!determinationEvents.isEmpty()){
-            TableViewer viewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
-            viewer.getTable().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+               ListViewer viewer = new ListViewer(getLayoutComposite(), SWT.FULL_SELECTION);
+            viewer.getList().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
             viewer.setContentProvider(new ArrayContentProvider());
             viewer.setLabelProvider(new LabelProvider(){
                 @Override
@@ -141,59 +128,25 @@ public class TaxonAssociationDetailElement extends AbstractCdmDetailElement<Deri
     public void doubleClick(DoubleClickEvent event) {
         if(event.getSelection() instanceof IStructuredSelection){
             Object firstElement = ((IStructuredSelection) event.getSelection()).getFirstElement();
-            UUID taxonToOpenUuid = null;
-            if(firstElement instanceof TaxonBase<?>){
-                taxonToOpenUuid = ((TaxonBase<?>)firstElement).getUuid();
-            }
-            else if(firstElement instanceof SpecimenTypeDesignation){
-                //TODO how to open an editor for all typed names?
+            if(firstElement instanceof SpecimenTypeDesignation){
+               SpecimenTypeDesignation typeDesignation = (SpecimenTypeDesignation)firstElement;
+               Set<TaxonNameBase> typifiedNames = typeDesignation.getTypifiedNames();
+               if(typifiedNames.size()==1){
+                       firstElement = typifiedNames.iterator().next();
+               }
+               if(typifiedNames.size()==0 || typifiedNames.size()>=2){
+                       MessagingUtils.informationDialog("Could not open name", "Type designation has either 0 or more than 1 names associated");
+               }
             }
             else if(firstElement instanceof DeterminationEvent){
                 if(((DeterminationEvent) firstElement).getTaxon()!=null){
-                    taxonToOpenUuid = ((DeterminationEvent) firstElement).getTaxon().getUuid();
+                    firstElement = ((DeterminationEvent) firstElement).getTaxon();
                 }
                 else if(((DeterminationEvent) firstElement).getTaxonName()!=null){
-                    //TODO how to open editor for taxon name
-                }
-            }
-            if(taxonToOpenUuid!=null){
-                String commandId = "eu.etaxonomy.taxeditor.editor.openTaxonEditor";
-
-
-                ArrayList parameters = new ArrayList();
-                IParameter iparam = null;
-
-                //get the command from plugin.xml
-                IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-                ICommandService cmdService = (ICommandService)window.getService(ICommandService.class);
-                Command cmd = cmdService.getCommand(commandId);
-
-                //get the parameter
-                try {
-                    iparam = cmd.getParameter("eu.etaxonomy.taxeditor.editor.taxonParameter");
-                } catch (NotDefinedException e1) {
-                    MessagingUtils.error(this.getClass(), "Command not defined", e1);
-                }
-                Parameterization params = new Parameterization(iparam, taxonToOpenUuid.toString());
-                parameters.add(params);
-
-                //build the parameterized command
-                ParameterizedCommand pc = new ParameterizedCommand(cmd, (Parameterization[]) parameters.toArray(new Parameterization[parameters.size()]));
-
-                //execute the command
-                IHandlerService handlerService = (IHandlerService)window.getService(IHandlerService.class);
-                try {
-                    handlerService.executeCommand(pc, null);
-                } catch (ExecutionException e) {
-                    MessagingUtils.error(TaxonAssociationDetailElement.class, e);
-                } catch (NotDefinedException e) {
-                    MessagingUtils.error(TaxonAssociationDetailElement.class, e);
-                } catch (NotEnabledException e) {
-                    MessagingUtils.error(TaxonAssociationDetailElement.class, e);
-                } catch (NotHandledException e) {
-                    MessagingUtils.error(TaxonAssociationDetailElement.class, e);
+                       firstElement = ((DeterminationEvent) firstElement).getTaxonName();
                 }
             }
+            new CdmViewerChooser(event.getViewer().getControl().getShell()).chooseViewer(firstElement);
         }
     }
 }
index 698f94233e6309f5ca1ac70eebfaaa8b31699df1..9f25e68047c3017c943f9b2a981af89125efdd5d 100644 (file)
@@ -74,7 +74,6 @@ public class CdmViewerUtil {
                         if(selectionClass.isAssignableFrom(input.getClass())){
                             ICommandService commandService = (ICommandService)PlatformUI.getWorkbench().getService(ICommandService.class);
                             Command command = commandService.getCommand(commandId);
-                            //TODO: maybe pass the command directly instead of just the command id
                             if(command.isEnabled()){
                                 commandViewerNameMap.put(command, viewerName);
                             }