Revision 5e966d50
Added by Katja Luther about 5 years ago
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
ref #8197: fix delete of media in media view