Project

General

Profile

« Previous | Next » 

Revision 5e966d50

Added by Katja Luther about 5 years ago

ref #8197: fix delete of media in media view

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/DeleteHandlerE4.java
26 26
import org.eclipse.e4.ui.services.IServiceConstants;
27 27
import org.eclipse.jface.viewers.ISelection;
28 28
import org.eclipse.jface.viewers.IStructuredSelection;
29
import org.eclipse.jface.viewers.TreePath;
30
import org.eclipse.jface.viewers.TreeSelection;
31 29
import org.eclipse.swt.widgets.Shell;
32 30

  
33
import eu.etaxonomy.cdm.api.service.config.MediaDeletionConfigurator;
34
import eu.etaxonomy.cdm.model.description.DescriptionBase;
35 31
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
36 32
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
37 33
import eu.etaxonomy.cdm.model.description.TaxonDescription;
38 34
import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
39
import eu.etaxonomy.cdm.model.media.Media;
40 35
import eu.etaxonomy.taxeditor.editor.EditorUtil;
41 36
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
37
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
42 38
import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
43 39
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteDescriptionElementOperation;
44 40
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteSpecimenDescriptionOperation;
45 41
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonDescriptionOperation;
46 42
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonNameDescriptionOperation;
47
import eu.etaxonomy.taxeditor.editor.view.media.operation.DeleteMediaOperation;
48
import eu.etaxonomy.taxeditor.editor.view.media.operation.RemoveImageFromDescriptionElementOperation;
49 43
import eu.etaxonomy.taxeditor.model.AbstractUtility;
50 44
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
51 45
import eu.etaxonomy.taxeditor.model.MessagingUtils;
52 46
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
53 47
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
54
import eu.etaxonomy.taxeditor.ui.dialog.configurator.deleteConfigurator.DeleteConfiguratorDialog;
55 48

  
56 49
/**
57 50
 *
......
79 72

  
80 73
        IUndoContext undoContext = EditorUtil.getUndoContext();
81 74

  
82
        List<AbstractPostOperation<?>> operations = new ArrayList<AbstractPostOperation<?>>();
75
        List<AbstractPostOperation> operations = new ArrayList();
83 76

  
84 77
        for(Iterator iter = selection.iterator();iter.hasNext();){
85 78
            Object object = iter.next();
86 79

  
87 80
            // TaxonDescription
88 81
            if(object instanceof TaxonDescription ){
89
                operations.add(new DeleteTaxonDescriptionOperation(label, undoContext, (TaxonDescription) object, factualDataPart, cdmEntitySessionEnabled));
82
                DeleteTaxonDescriptionOperation operation = new DeleteTaxonDescriptionOperation(label, undoContext, (TaxonDescription) object, factualDataPart, cdmEntitySessionEnabled);
83

  
84
                operations.add(operation);
85
                ((TaxonDescription) object).getTaxon().removeDescription((TaxonDescription) object);
86
                operation.getPostOperationEnabled().postOperation(object);
90 87
            }
91 88
            if(object instanceof TaxonNameDescription ){
92
                operations.add(new DeleteTaxonNameDescriptionOperation(label, undoContext, (TaxonNameDescription) object, factualDataPart, cdmEntitySessionEnabled));
89
                DeleteTaxonNameDescriptionOperation operation = new DeleteTaxonNameDescriptionOperation(label, undoContext, (TaxonNameDescription) object, factualDataPart, cdmEntitySessionEnabled);
90
                operations.add(operation);
91
                ((TaxonNameDescription) object).getTaxonName().removeDescription((TaxonNameDescription) object);
92
                operation.getPostOperationEnabled().postOperation(object);
93 93
            }
94 94
            else if(object instanceof SpecimenDescription){
95
                operations.add(new DeleteSpecimenDescriptionOperation(label, undoContext, (SpecimenDescription) object, factualDataPart, cdmEntitySessionEnabled)) ;
95
                DeleteSpecimenDescriptionOperation operation = new DeleteSpecimenDescriptionOperation(label, undoContext, (SpecimenDescription) object, factualDataPart, cdmEntitySessionEnabled);
96
                operations.add(operation) ;
97
                ((SpecimenDescription) object).getDescribedSpecimenOrObservation().removeDescription((SpecimenDescription) object);
98

  
96 99
            }
97 100
            // DescriptionElementBase
98 101
            else if(object instanceof DescriptionElementBase){
99
                operations.add(new DeleteDescriptionElementOperation(label, undoContext, (DescriptionElementBase) object, factualDataPart, cdmEntitySessionEnabled));
102
                DeleteDescriptionElementOperation operation = new DeleteDescriptionElementOperation(label, undoContext, (DescriptionElementBase) object, factualDataPart, cdmEntitySessionEnabled);
103
                AbstractUtility.executeOperation(operation, sync);
100 104
            }
101 105
            else if(object instanceof FeatureNodeContainer){
102 106
                List<DescriptionElementBase> descriptions = ((FeatureNodeContainer) object).getDescriptionElementsForEntireBranch();
103 107

  
104 108
                for(DescriptionElementBase description : descriptions){
105
                    operations.add(new DeleteDescriptionElementOperation(label, undoContext, description, factualDataPart, cdmEntitySessionEnabled));
106
                }
107
            }
108
            // Media
109
            else if(object instanceof Media){
110

  
111
                TreeSelection treeSelection = (TreeSelection) factualDataPart.getViewer().getSelection();
112

  
113
                TreePath[] path = treeSelection.getPathsFor(object);
114

  
115
                DescriptionBase<?> imageGallery = (DescriptionBase<?>) path[0].getFirstSegment();
109
                    DeleteDescriptionElementOperation operation = new DeleteDescriptionElementOperation(label, undoContext, description, factualDataPart, cdmEntitySessionEnabled);
116 110

  
117
                MediaDeletionConfigurator config = new MediaDeletionConfigurator();
118
                config.setDeleteFromDescription(true);
119
                config.setOnlyRemoveFromGallery(false);
120

  
121
                if (imageGallery instanceof SpecimenDescription){
122
                    config.setDeleteFrom(((SpecimenDescription)imageGallery).getDescribedSpecimenOrObservation());
123
                } else if (imageGallery instanceof TaxonDescription){
124
                    config.setDeleteFrom(((TaxonDescription)imageGallery).getTaxon());
125
                }else if (imageGallery instanceof TaxonNameDescription){
126
                    config.setDeleteFrom(((TaxonNameDescription)imageGallery).getTaxonName());
127
                }
128
                if (!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, shell, Messages.DeleteHandler_CONFIRM_DELETION,  Messages.DeleteHandler_CONFIRM_DELETION_MESSAGE)){
129
                    return;
130
                }
131
                if (config.isOnlyRemoveFromGallery() || ((Media)object).getId() == 0){
132
                    operations.add(new RemoveImageFromDescriptionElementOperation(label, undoContext,  (Media) object, imageGallery, factualDataPart));
133
                }else{
134
                    operations.add(new DeleteMediaOperation(label, undoContext, imageGallery, (Media) object, config, factualDataPart));
111
                    AbstractUtility.executeOperation(operation, sync);
135 112
                }
136 113
            }
114

  
137 115
            else{
138 116
                MessagingUtils.error(getClass(), Messages.DeleteHandler_INVALID_SELECTION, null);
139 117
            }
140 118
        }
141 119

  
142 120
        // execute all cumulated operations
143
        for(AbstractPostOperation<?> operation : operations){
144
        	AbstractUtility.executeOperation(operation, sync);
121
        for(AbstractPostOperation operation : operations){
122
            if (factualDataPart.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4){
123
                ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).getEditorInput().addOperation(operation);
124
                ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).setDirty();
125
                ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).redraw();
126
            }
127

  
128
           // AbstractUtility.executeOperation(operation, sync);
145 129
        }
130

  
146 131
	}
147 132

  
148 133

  

Also available in: Unified diff