import java.io.FileOutputStream;
import java.io.IOException;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.taxeditor.editor.IBulkEditor;
import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
/**
private BulkEditorQuery lastQuery = null;
private BulkEditorComposite bulkEditorComposite;
+
+ private Set<AbstractPostOperation> operations = new HashSet<>();
@Inject
public BulkEditor() {
}
public void save(IProgressMonitor monitor, boolean resetMerge) {
+ for(AbstractPostOperation<?> entry:operations){
+ IStatus status = Status.CANCEL_STATUS;
+ final IAdaptable uiInfoAdapter = WorkspaceUndoUtil
+ .getUIInfoAdapter(AbstractUtility.getShell());
+ String operationlabel = entry.getLabel();
+ try {
+ entry.addContext(IOperationHistory.GLOBAL_UNDO_CONTEXT);
+
+ status = entry.execute(new NullProgressMonitor(), uiInfoAdapter);
+ } catch (ExecutionException e) {
+ MessagingUtils.operationDialog(AbstractUtility.class, e, TaxeditorStorePlugin.PLUGIN_ID, operationlabel, null);
+ }
+
+ IPostOperationEnabled postOperationEnabled = entry
+ .getPostOperationEnabled();
+ if (postOperationEnabled != null) {
+ postOperationEnabled.onComplete();
+ }
+
+ //AbstractUtility.executeOperation(entry,sync);
+ }
+
+ operations.clear();
if (!input.getCdmEntitySession().isActive()){
input.getCdmEntitySession().bind();
}
@Override
public void addOperation(AbstractPostOperation operation) {
- // operations not yet used for bulk editor
+ operations.add(operation);
}
@Inject
}
public void refresh(){
+ IStructuredSelection sel = getSelection();
natTable.doCommand(new VisualRefreshCommand());
+ this.setSelection(sel);
}
public List<String> getColumnList() {
if(object instanceof CdmBase && bulkEditor.getEditorInput().getModel().contains(object)){
object = bulkEditor.getEditorInput().getModel().get(bulkEditor.getEditorInput().getModel().indexOf(object));
- bodyLayer.getSelectionLayer().selectRow(0, bodyDataProvider.indexOfRowObject((CdmBase) object), false, false);
+ bodyLayer.getSelectionLayer().selectRow(0, bodyDataProvider.indexOfRowObject((CdmBase) object), false, true);
}
}
}
return;
}
}
- bulkEditor.getSelService().setSelection(new StructuredSelection());
+// bulkEditor.getSelService().setSelection(new StructuredSelection());
}
}
DescriptionElementBase descriptionElement = (DescriptionElementBase) object;
DescriptionBase<?> description = descriptionElement.getInDescription();
FeatureNodeContainerTree containerTree = featureNodeContainerCache.get(description);
- FeatureNodeContainer featureNodeContainer = containerTree.getFeatureNodeContainerForDescriptionElement(descriptionElement);
- if (featureNodeContainer == null){
- containerTree = new FeatureNodeContainerTree(description, provider.getFeatureTree(description));
- featureNodeContainerCache.put(description, containerTree);
- featureNodeContainer = containerTree.getFeatureNodeContainerForDescriptionElement(descriptionElement);
+ if (containerTree != null){
+ FeatureNodeContainer featureNodeContainer = containerTree.getFeatureNodeContainerForDescriptionElement(descriptionElement);
+ if (featureNodeContainer == null){
+ containerTree = new FeatureNodeContainerTree(description, provider.getFeatureTree(description));
+ featureNodeContainerCache.put(description, containerTree);
+ featureNodeContainer = containerTree.getFeatureNodeContainerForDescriptionElement(descriptionElement);
+ }
+ ((AbstractTreeViewer) viewer).expandToLevel(featureNodeContainer, 2);
+ }
+ if (object != null){
+ StructuredSelection selection = new StructuredSelection(object);
+ viewer.setSelection(selection, true);
}
- ((AbstractTreeViewer) viewer).expandToLevel(featureNodeContainer, 2);
- StructuredSelection selection = new StructuredSelection(object);
- viewer.setSelection(selection, true);
+
}
import eu.etaxonomy.cdm.api.service.DeleteResult;
import eu.etaxonomy.cdm.api.service.IDescriptionService;
import eu.etaxonomy.cdm.api.service.UpdateResult.Status;
+import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
String label = menuItem.getLocalizedLabel();
IUndoContext undoContext = EditorUtil.getUndoContext();
+ CdmBase updateObject = null;
List<AbstractPostOperation> operations = new ArrayList();
AbstractPostOperation operation = null;
if(object instanceof TaxonDescription ){
operation = new DeleteTaxonDescriptionOperation(label, undoContext, (TaxonDescription) object, factualDataPart, cdmEntitySessionEnabled);
-
+ updateObject = ((TaxonDescription) object).getTaxon();
((TaxonDescription) object).getTaxon().removeDescription((TaxonDescription) object);
-
+
} else if(object instanceof TaxonNameDescription ){
operation = new DeleteTaxonNameDescriptionOperation(label, undoContext, (TaxonNameDescription) object, factualDataPart, cdmEntitySessionEnabled);
-
+ updateObject= ((TaxonNameDescription) object).getTaxonName();
((TaxonNameDescription) object).getTaxonName().removeDescription((TaxonNameDescription) object);
} else if(object instanceof SpecimenDescription){
operation = new DeleteSpecimenDescriptionOperation(label, undoContext, (SpecimenDescription) object, factualDataPart, cdmEntitySessionEnabled);
specimen = ((SpecimenDescription) object).getDescribedSpecimenOrObservation();
+ updateObject = specimen;
specimen.removeDescription((SpecimenDescription) object);
} else if(object instanceof DescriptionElementBase){
if (factualDataPart.getSelectionProvidingPart().getObject() instanceof BulkEditor){
((BulkEditor)factualDataPart.getSelectionProvidingPart().getObject()).addOperation(operation);
((BulkEditor)factualDataPart.getSelectionProvidingPart().getObject()).setDirty(true);
- if (object instanceof SpecimenDescription){
- ((BulkEditor)factualDataPart.getSelectionProvidingPart().getObject()).changed(((SpecimenDescription)object).getDescribedSpecimenOrObservation());
- }else if (object instanceof TaxonDescription){
- ((BulkEditor)factualDataPart.getSelectionProvidingPart().getObject()).changed(((TaxonDescription)object).getTaxon());
- }else if (object instanceof TaxonNameDescription){
- ((BulkEditor)factualDataPart.getSelectionProvidingPart().getObject()).changed(((TaxonNameDescription)object).getTaxonName());
+ if (object instanceof DescriptionBase){
+ ((BulkEditor)factualDataPart.getSelectionProvidingPart().getObject()).changed(updateObject);
}
}
monitor.worked(40);
// Redraw editor if exists
- return postExecute(description);
+ return postExecute(element);
}
@Override