Project

General

Profile

« Previous | Next » 

Revision 8b1819f2

Added by Patrick Plitzner almost 7 years ago

ref #6566 Migrate "Add Dna Sample" menu item

View differences:

eu.etaxonomy.taxeditor.editor/fragment.e4xmi
8 8
      <handlers xmi:id="_E5l4wDVqEee_b7RlBzTDRw" elementId="eu.etaxonomy.taxeditor.editor.view.derivate.handler.CreateFieldUnitHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.derivate.handler.CreateFieldUnitHandler" command="_BjF3ADVqEee_b7RlBzTDRw"/>
9 9
      <handlers xmi:id="_ha1I4DmBEeeOos_QXKSXcA" elementId="eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.derivate.handler.AddSpecimenHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.derivate.handler.AddSpecimenHandler" command="_qqMbcDmBEeeOos_QXKSXcA"/>
10 10
      <handlers xmi:id="_FOiO0DocEeecLdI14WMq7w" elementId="eu.etaxonomy.taxeditor.editor.view.derivate.handler.AddTissueSampleHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.derivate.handler.AddTissueSampleHandler" command="_I2LD4DocEeecLdI14WMq7w"/>
11
      <handlers xmi:id="_mrTfkDonEeecLdI14WMq7w" elementId="eu.etaxonomy.taxeditor.editor.view.derivate.handler.AddDnaSampleHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.derivate.handler.AddDnaSampleHandler" command="_jsbToDonEeecLdI14WMq7w"/>
11 12
      <menus xsi:type="menu:PopupMenu" xmi:id="_CYXZ0DQEEeeTNOFVGI4q2w" elementId="eu.etaxonomy.taxeditor.editor.popupmenu.specimeneditor">
12 13
        <children xsi:type="menu:HandledMenuItem" xmi:id="_um1oYDVpEee_b7RlBzTDRw" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.create_field_unit_for_taxon" label="Create Field Unit For ..." command="_BjF3ADVqEee_b7RlBzTDRw"/>
13 14
        <children xsi:type="menu:HandledMenuItem" xmi:id="_5GMRcDWQEeeNfoZ3nN0K8Q" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.createfieldunit" label="Create Field Unit" command="_BjF3ADVqEee_b7RlBzTDRw"/>
14 15
        <children xsi:type="menu:Menu" xmi:id="_cdjzEDmAEeeOos_QXKSXcA" elementId="eu.etaxonomy.taxeditor.editor.menu.add" label="Add...">
15 16
          <children xsi:type="menu:HandledMenuItem" xmi:id="_R27WIDmBEeeOos_QXKSXcA" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.specimen" label="Specimen" command="_qqMbcDmBEeeOos_QXKSXcA"/>
16 17
          <children xsi:type="menu:HandledMenuItem" xmi:id="_TKz_4DmBEeeOos_QXKSXcA" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.tissuesample" label="Tissue Sample" command="_I2LD4DocEeecLdI14WMq7w"/>
17
          <children xsi:type="menu:HandledMenuItem" xmi:id="_UukRoDmBEeeOos_QXKSXcA" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.dnasample" label="DNA Sample"/>
18
          <children xsi:type="menu:HandledMenuItem" xmi:id="_UukRoDmBEeeOos_QXKSXcA" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.dnasample" label="DNA Sample" command="_jsbToDonEeecLdI14WMq7w"/>
18 19
          <children xsi:type="menu:HandledMenuItem" xmi:id="_WwK9ADmBEeeOos_QXKSXcA" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.mediaspecimen" label="Media Specimen"/>
19 20
          <children xsi:type="menu:HandledMenuItem" xmi:id="_YYSxYDmBEeeOos_QXKSXcA" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.consensussequence" label="Consensus Sequence"/>
20 21
          <children xsi:type="menu:HandledMenuItem" xmi:id="_Z-LKEDmBEeeOos_QXKSXcA" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.singleread" label="Single Read"/>
......
32 33
    <elements xsi:type="commands:Command" xmi:id="_BjF3ADVqEee_b7RlBzTDRw" elementId="eu.etaxonomy.taxeditor.editor.command.specimeneditor.create_field_unit" commandName="Create Field Unit"/>
33 34
    <elements xsi:type="commands:Command" xmi:id="_qqMbcDmBEeeOos_QXKSXcA" elementId="eu.etaxonomy.taxeditor.editor.command.add_derivate.add_specimen" commandName="Add Specimen"/>
34 35
    <elements xsi:type="commands:Command" xmi:id="_I2LD4DocEeecLdI14WMq7w" elementId="eu.etaxonomy.taxeditor.editor.command.add_derivate.add_tissue_sample" commandName="Add Tissue Sample"/>
36
    <elements xsi:type="commands:Command" xmi:id="_jsbToDonEeecLdI14WMq7w" elementId="eu.etaxonomy.taxeditor.editor.command.add_derivate.add_dna_sample" commandName="Add DNA Sample"/>
35 37
  </fragments>
36 38
</fragment:ModelFragments>
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/AbstractAddDerivateHandler.java
1

  
2
package eu.etaxonomy.taxeditor.editor.view.derivate.handler;
3

  
4
import javax.inject.Named;
5

  
6
import org.eclipse.e4.core.di.annotations.CanExecute;
7
import org.eclipse.e4.core.di.annotations.Execute;
8
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
9
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
10
import org.eclipse.e4.ui.services.IServiceConstants;
11
import org.eclipse.jface.viewers.TreeNode;
12

  
13
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
14
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
15
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
16
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
17
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
18
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
19
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
20
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
21
import eu.etaxonomy.taxeditor.model.MessagingUtils;
22
import eu.etaxonomy.taxeditor.store.CdmStore;
23

  
24
public abstract class AbstractAddDerivateHandler {
25

  
26
	@Execute
27
	public void execute(@Named(IServiceConstants.ACTIVE_SELECTION) TreeNode node, @Named(IServiceConstants.ACTIVE_PART) MPart part) {
28
	    DerivateView derivateView = (DerivateView) part.getObject();
29

  
30
	    checkDirtyState(derivateView);
31

  
32
	    Object selectedDerivative = node.getValue();
33
	    if(isAllowed(selectedDerivative)){
34
	        Object createdElement = addElement(selectedDerivative);
35
	        refreshView(derivateView, createdElement);
36
	    }
37
	}
38

  
39
    @CanExecute
40
    public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION) TreeNode node, MHandledMenuItem item) {
41
        boolean canExecute = false;
42

  
43
        Object derivate = node.getValue();
44
        canExecute = isAllowed(derivate);
45
        item.setVisible(canExecute);
46
        return canExecute;
47
    }
48

  
49
    private void refreshView(DerivateView derivateView, Object createdElement) {
50
        if(derivateView!=null){
51
            derivateView.getConversationHolder().commit();
52
            derivateView.refreshTree(createdElement);
53
        }
54
    }
55

  
56
	private void checkDirtyState(DerivateView derivateView){
57
	        if(derivateView!=null){
58
	            if(derivateView.isDirty()){
59
	                MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
60
	                return;
61
	            }
62
	        }
63
	}
64

  
65
	private Object addElement(Object selectedDerivative){
66
	    Object createdElement = null;
67
	    SpecimenOrObservationBase<?> specimenOrObservationBase = (SpecimenOrObservationBase<?>) selectedDerivative;
68
	    DerivedUnit derivedUnit = DerivedUnit.NewInstance(getSpecimenType());
69
	    specimenOrObservationBase.addDerivationEvent(DerivationEvent.NewSimpleInstance(specimenOrObservationBase, derivedUnit, getDerivationeType()));
70
	    derivedUnit.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
71
	    derivedUnit.getTitleCache(); //update title cache
72
	    createdElement = derivedUnit;
73
	    CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase<?>) selectedDerivative, true);
74
	    return createdElement;
75
	}
76

  
77
	protected abstract SpecimenOrObservationType getSpecimenType();
78

  
79
	protected abstract DerivationEventType getDerivationeType();
80

  
81
    protected abstract boolean isAllowed(Object derivative);
82

  
83
}
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/AbstractAddDerivativeHandler.java
1

  
2
package eu.etaxonomy.taxeditor.editor.view.derivate.handler;
3

  
4
import javax.inject.Named;
5

  
6
import org.eclipse.e4.core.di.annotations.CanExecute;
7
import org.eclipse.e4.core.di.annotations.Execute;
8
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
9
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
10
import org.eclipse.e4.ui.services.IServiceConstants;
11
import org.eclipse.jface.viewers.TreeNode;
12

  
13
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
14
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
15
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
16
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
17
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
18
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
19
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
20
import eu.etaxonomy.taxeditor.model.MessagingUtils;
21
import eu.etaxonomy.taxeditor.store.CdmStore;
22

  
23
public abstract class AbstractAddDerivativeHandler {
24

  
25
	@Execute
26
	public void execute(@Named(IServiceConstants.ACTIVE_SELECTION) TreeNode node, @Named(IServiceConstants.ACTIVE_PART) MPart part) {
27
	    DerivateView derivateView = (DerivateView) part.getObject();
28

  
29
	    checkDirtyState(derivateView);
30

  
31
	    Object selectedDerivative = node.getValue();
32
	    if(isAllowed(selectedDerivative)){
33
	        Object createdElement = addElement(selectedDerivative);
34
	        refreshView(derivateView, createdElement);
35
	    }
36
	}
37

  
38
    @CanExecute
39
    public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION) TreeNode node, MHandledMenuItem item) {
40
        boolean canExecute = false;
41

  
42
        Object derivate = node.getValue();
43
        canExecute = isAllowed(derivate);
44
        item.setVisible(canExecute);
45
        return canExecute;
46
    }
47

  
48
    private void refreshView(DerivateView derivateView, Object createdElement) {
49
        if(derivateView!=null){
50
            derivateView.getConversationHolder().commit();
51
            derivateView.refreshTree(createdElement);
52
        }
53
    }
54

  
55
	private void checkDirtyState(DerivateView derivateView){
56
	        if(derivateView!=null){
57
	            if(derivateView.isDirty()){
58
	                MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
59
	                return;
60
	            }
61
	        }
62
	}
63

  
64
	private Object addElement(Object selectedDerivative){
65
	    Object createdElement = null;
66
	    SpecimenOrObservationBase<?> specimenOrObservationBase = (SpecimenOrObservationBase<?>) selectedDerivative;
67
	    DerivedUnit derivedUnit = createDerivative();
68
	    specimenOrObservationBase.addDerivationEvent(DerivationEvent.NewSimpleInstance(specimenOrObservationBase, derivedUnit, getDerivationeType()));
69
	    derivedUnit.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
70
	    derivedUnit.getTitleCache(); //update title cache
71
	    createdElement = derivedUnit;
72
	    CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase<?>) selectedDerivative, true);
73
	    return createdElement;
74
	}
75

  
76
	protected abstract DerivedUnit createDerivative();
77

  
78
	protected abstract DerivationEventType getDerivationeType();
79

  
80
    protected abstract boolean isAllowed(Object derivative);
81

  
82
}
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/AddDnaSampleHandler.java
1

  
2
package eu.etaxonomy.taxeditor.editor.view.derivate.handler;
3

  
4
import eu.etaxonomy.cdm.model.molecular.DnaSample;
5
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
6
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
7
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
8
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
9

  
10
public class AddDnaSampleHandler extends AbstractAddDerivativeHandler{
11

  
12
    @Override
13
    protected boolean isAllowed(Object derivative) {
14
        if(derivative instanceof FieldUnit || (derivative instanceof DerivedUnit
15
                && ((DerivedUnit) derivative).getRecordBasis().equals(SpecimenOrObservationType.PreservedSpecimen))
16
                || (derivative instanceof DerivedUnit
17
                        && ((DerivedUnit) derivative).getRecordBasis().equals(SpecimenOrObservationType.TissueSample))){
18
            return true;
19
        }
20
        return false;
21
    }
22

  
23
    /**
24
     * {@inheritDoc}
25
     */
26
    @Override
27
    protected DerivedUnit createDerivative() {
28
        return DnaSample.NewInstance();
29
    }
30

  
31
    /**
32
     * {@inheritDoc}
33
     */
34
    @Override
35
    protected DerivationEventType getDerivationeType() {
36
        return DerivationEventType.ACCESSIONING();
37
    }
38

  
39
}
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/AddSpecimenHandler.java
2 2
package eu.etaxonomy.taxeditor.editor.view.derivate.handler;
3 3

  
4 4
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
5
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
5 6
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
6 7
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
7 8

  
8
public class AddSpecimenHandler extends AbstractAddDerivateHandler{
9
public class AddSpecimenHandler extends AbstractAddDerivativeHandler{
9 10

  
10 11
    @Override
11 12
    protected boolean isAllowed(Object derivative) {
......
19 20
     * {@inheritDoc}
20 21
     */
21 22
    @Override
22
    protected SpecimenOrObservationType getSpecimenType() {
23
        return SpecimenOrObservationType.PreservedSpecimen;
23
    protected DerivedUnit createDerivative() {
24
        return DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
24 25
    }
25 26

  
26 27
    /**
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/AddTissueSampleHandler.java
6 6
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
7 7
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
8 8

  
9
public class AddTissueSampleHandler extends AbstractAddDerivateHandler{
9
public class AddTissueSampleHandler extends AbstractAddDerivativeHandler{
10 10

  
11 11
    @Override
12 12
    protected boolean isAllowed(Object derivative) {
......
17 17
        return false;
18 18
    }
19 19

  
20

  
20 21
    /**
21 22
     * {@inheritDoc}
22 23
     */
23 24
    @Override
24
    protected SpecimenOrObservationType getSpecimenType() {
25
        return SpecimenOrObservationType.TissueSample;
25
    protected DerivedUnit createDerivative() {
26
        return DerivedUnit.NewInstance(SpecimenOrObservationType.TissueSample);
26 27
    }
27 28

  
28 29
    /**

Also available in: Unified diff