Project

General

Profile

« Previous | Next » 

Revision 34014ada

Added by Patrick Plitzner over 8 years ago

Open a newly created specimen in specimen editor

View differences:

eu.etaxonomy.taxeditor.editor/plugin.xml
1453 1453
            id="eu.etaxonomy.taxeditor.editor.view.descriptive.command.moveDescriptionElements"
1454 1454
            name="%command.name.12">
1455 1455
      </command>
1456
      <command
1457
            defaultHandler="eu.etaxonomy.taxeditor.editor.handler.OpenDerivateViewHandler"
1458
            id="eu.etaxonomy.taxeditor.editor.openSpecimenEditor"
1459
            name="Open Specimen Editor">
1460
         <commandParameter
1461
               id="eu.etaxonomy.taxeditor.specimenUuidParameter"
1462
               name="Specimen UUID parameter"
1463
               optional="true"
1464
               typeId="eu.etaxonomy.taxeditor.specimenUuidParameterType">
1465
         </commandParameter>
1466
      </command>
1456 1467
        
1457 1468
   </extension>
1469
   <extension
1470
         point="org.eclipse.ui.commands">
1471
      <commandParameterType
1472
            converter="eu.etaxonomy.taxeditor.handler.UuidParameterConverter"
1473
            id="eu.etaxonomy.taxeditor.specimenUuidParameterType"
1474
            type="java.util.UUID">
1475
      </commandParameterType>
1476
   </extension>
1458 1477
   <extension
1459 1478
         point="org.eclipse.core.expressions.definitions">
1460 1479
      <definition
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java
21 21

  
22 22
public class OpenDerivateViewHandler extends AbstractHandler {
23 23

  
24
    /* (non-Javadoc)
25
     * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
26
     */
27 24
    @Override
28 25
    public Object execute(ExecutionEvent event) throws ExecutionException {
29
        ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
30
        if(currentSelection instanceof IStructuredSelection){
31
            Iterator<?> selectionIterator = ((IStructuredSelection) currentSelection).iterator();
32
            Set<UUID> selectedElementUUIDs = new HashSet<UUID>();
33
            while(selectionIterator.hasNext()){
34
                Object object = selectionIterator.next();
35
                if(object instanceof SpecimenOrObservationBase<?>){
36
                    selectedElementUUIDs.add(((SpecimenOrObservationBase<?>) object).getUuid());
37
                }
38
                else if(object instanceof IndividualsAssociation){
39
                    SpecimenOrObservationBase specimen = ((IndividualsAssociation) object).getAssociatedSpecimenOrObservation();
40
                    if(specimen!=null){
41
                        selectedElementUUIDs.add(specimen.getUuid());
26
        Set<UUID> selectedElementUUIDs = new HashSet<UUID>();
27
        //check if parameter is set
28
        Object parameter = event.getObjectParameterForExecution("eu.etaxonomy.taxeditor.specimenUuidParameter");
29
        if(parameter instanceof UUID){
30
            selectedElementUUIDs.add((UUID) parameter);
31
        }
32
        else{
33
            //if not, try with current selection
34
            ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
35
            if(currentSelection instanceof IStructuredSelection){
36
                Iterator<?> selectionIterator = ((IStructuredSelection) currentSelection).iterator();
37
                while(selectionIterator.hasNext()){
38
                    Object object = selectionIterator.next();
39
                    if(object instanceof SpecimenOrObservationBase<?>){
40
                        selectedElementUUIDs.add(((SpecimenOrObservationBase<?>) object).getUuid());
41
                    }
42
                    else if(object instanceof IndividualsAssociation){
43
                        SpecimenOrObservationBase specimen = ((IndividualsAssociation) object).getAssociatedSpecimenOrObservation();
44
                        if(specimen!=null){
45
                            selectedElementUUIDs.add(specimen.getUuid());
46
                        }
42 47
                    }
43 48
                }
44 49
            }
45
            if(!selectedElementUUIDs.isEmpty()){
46
                DerivateViewEditorInput input = new DerivateViewEditorInput(selectedElementUUIDs);
47
                try {
48
                    EditorUtil.open(input);
49
                } catch (PartInitException e) {
50
                    MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivative Editor", e);
51
                } catch (NullPointerException npe){
52
                    MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivative Editor. The derivate hierarchy is corrupted!", npe);
53
                }
54
            }
55
            else{
56
                MessagingUtils.informationDialog("Empty selection", "No Specimen selected.");
50
        }
51
        if(!selectedElementUUIDs.isEmpty()){
52
            DerivateViewEditorInput input = new DerivateViewEditorInput(selectedElementUUIDs);
53
            try {
54
                EditorUtil.open(input);
55
            } catch (PartInitException e) {
56
                MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivative Editor", e);
57
            } catch (NullPointerException npe){
58
                MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivative Editor. The derivate hierarchy is corrupted!", npe);
57 59
            }
58 60
        }
61
        else{
62
            MessagingUtils.informationDialog("Empty selection", "No Specimen selected.");
63
        }
59 64
        return null;
60 65
    }
61 66

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/UuidParameterConverter.java
1
package eu.etaxonomy.taxeditor.handler;
2

  
3
import java.util.UUID;
4

  
5
import org.eclipse.core.commands.AbstractParameterValueConverter;
6
import org.eclipse.core.commands.ParameterValueConversionException;
7

  
8
public class UuidParameterConverter extends AbstractParameterValueConverter {
9

  
10
    public UuidParameterConverter() {
11
        // TODO Auto-generated constructor stub
12
    }
13

  
14
    @Override
15
    public Object convertToObject(String parameterValue) throws ParameterValueConversionException {
16
        return UUID.fromString(parameterValue);
17
    }
18

  
19
    @Override
20
    public String convertToString(Object parameterValue) throws ParameterValueConversionException {
21
        return parameterValue.toString();
22
    }
23

  
24
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java
10 10

  
11 11
package eu.etaxonomy.taxeditor.newWizard;
12 12

  
13
import java.util.HashMap;
14
import java.util.Map;
15
import java.util.UUID;
16

  
17
import org.eclipse.core.commands.Command;
18
import org.eclipse.core.commands.ExecutionException;
19
import org.eclipse.core.commands.NotEnabledException;
20
import org.eclipse.core.commands.NotHandledException;
21
import org.eclipse.core.commands.ParameterizedCommand;
22
import org.eclipse.core.commands.common.NotDefinedException;
23
import org.eclipse.ui.IWorkbenchWindow;
24
import org.eclipse.ui.PlatformUI;
25
import org.eclipse.ui.commands.ICommandService;
26
import org.eclipse.ui.handlers.IHandlerService;
27

  
13 28
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
14 29
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
15 30
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
......
19 34
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
20 35
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
21 36
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
37
import eu.etaxonomy.taxeditor.model.AbstractUtility;
22 38
import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
39
import eu.etaxonomy.taxeditor.model.MessagingUtils;
23 40
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
24 41
import eu.etaxonomy.taxeditor.store.CdmStore;
25 42
import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseWizardPage;
......
27 44
import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralWizardPage;
28 45
import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitWizardPage;
29 46
import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage;
47
import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateSearchCompositeController;
30 48

  
31 49
/**
32 50
 * @author n.hoffmann
......
99 117
		return "Specimen";
100 118
	}
101 119

  
120
	/**
121
	 * {@inheritDoc}
122
	 */
123
	@Override
124
	public boolean performFinish() {
125
	    boolean performFinish = super.performFinish();
126

  
127
        IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
128

  
129
        //get the command from plugin.xml
130
        IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
131
        ICommandService cmdService = (ICommandService)window.getService(ICommandService.class);
132
        Command command = cmdService.getCommand("eu.etaxonomy.taxeditor.editor.openSpecimenEditor");
133
        Map<String, UUID> parameters = new HashMap<String, UUID>();
134
        parameters.put("eu.etaxonomy.taxeditor.specimenUuidParameter", getEntity().getUuid());
135
        ParameterizedCommand parameterizedCommand = ParameterizedCommand.generateCommand(command, parameters);
136

  
137
        //execute the command
138
        try {
139
            handlerService.executeCommand(parameterizedCommand, null);
140
        } catch (ExecutionException e) {
141
            MessagingUtils.error(DerivateSearchCompositeController.class, e);
142
        } catch (NotDefinedException e) {
143
            MessagingUtils.error(DerivateSearchCompositeController.class, e);
144
        } catch (NotEnabledException e) {
145
            MessagingUtils.error(DerivateSearchCompositeController.class, e);
146
        } catch (NotHandledException e) {
147
            MessagingUtils.error(DerivateSearchCompositeController.class, e);
148
        }
149

  
150
        return performFinish;
151
	}
152

  
102 153

  
103 154
}

Also available in: Unified diff