package eu.etaxonomy.taxeditor.editor;
import java.util.Collection;
+import java.util.HashSet;
import java.util.UUID;
import org.eclipse.core.commands.ExecutionEvent;
editor.setFocus();
}
- public static MPart checkForChanges(UUID taxonUUID, EPartService partService ){
+ public static Collection<MPart> checkForChanges(UUID taxonUUID, EPartService partService ){
Collection<MPart> parts = partService.getParts();
+ Collection<MPart> dirtyParts = new HashSet();
//check if part is already opened
boolean isDirty = false;
for (MPart part : parts) {
&& ((TaxonNameEditorE4) part.getObject()).getTaxon()!=null
&& ((TaxonNameEditorE4) part.getObject()).getTaxon().getUuid().equals(taxonUUID)){
if (part.isDirty()){
- return part;
+ dirtyParts.add(part);
}
break;
+ }else if (taxonUUID == null){
+ if (part.isDirty()){
+ dirtyParts.add(part);
+ }
}
}
- return null;
+ return dirtyParts;
}
/**
import java.util.Set;
import java.util.UUID;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.e4.ui.di.UISynchronize;
+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.CdmEntitySessionInput;
import eu.etaxonomy.taxeditor.editor.ChooseFromMultipleAcceptedTaxaDialog;
import eu.etaxonomy.taxeditor.editor.ChooseFromMultipleTaxonNodesDialog;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.DataChangeBridge;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
/**
}
toDeletes.clear();
for(AbstractPostOperation entry:operations){
- EditorUtil.executeOperation(entry,sync);
+ 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(null, uiInfoAdapter);
+ } catch (ExecutionException e) {
+
+ MessagingUtils.operationDialog(AbstractUtility.class, e, TaxeditorStorePlugin.PLUGIN_ID, operationlabel, null);
+
+ }
+
+ String statusString = status.equals(Status.OK_STATUS) ? "completed"
+ : "cancelled";
+
+ IPostOperationEnabled postOperationEnabled = entry
+ .getPostOperationEnabled();
+ if (postOperationEnabled != null) {
+ postOperationEnabled.onComplete();
+ }
+
+
+ //AbstractUtility.executeOperation(entry,sync);
}
- operations.clear();
+ operations.clear();
for (Synonym syn: toSaveNewSynonyms){
for (HybridRelationship rel : syn.getName().getHybridChildRelations()){
// if (!rel.getParentName().isPersited()) {
CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true);
+
}
/**
package eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
}
newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
- MPart targetEditor = EditorUtil.checkForChanges(targetTaxon.getUuid(), partService);
+ Collection<MPart> targetEditors = EditorUtil.checkForChanges(targetTaxon.getUuid(), partService);
- if ((targetEditor != null && targetEditor.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")) || this.editor.isDirty()){
+ if (targetEditors != null || this.editor.isDirty()){
boolean proceed = MessageDialog.openQuestion(null,
Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE);
- if (proceed) {
- if (targetEditor != null){
- e4WrappedPart = WorkbenchUtility.getE4WrappedPart(targetEditor);
- ((TaxonNameEditorE4)e4WrappedPart).save(AbstractUtility.getMonitor());
+ if( targetEditors.iterator().hasNext() ){
+ MPart part = targetEditors.iterator().next();
+ if (proceed) {
+ if (part != null){
+ if (part.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")){
+ TaxonNameEditorE4 targetEditor = (TaxonNameEditorE4) WorkbenchUtility.getE4WrappedPart(part);
+
+ targetEditor.save(AbstractUtility.getMonitor());
+ }
+ if (editor.isDirty()){
+ editor.save(AbstractUtility.getMonitor());
+ }
+ } else {
+ return;
+ }
}
- if (editor.isDirty()){
- editor.save(AbstractUtility.getMonitor());
- }
- } else {
- return;
}
}
+// if ((targetEditor != null && targetEditor.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")) || this.editor.isDirty()){
+// boolean proceed = MessageDialog.openQuestion(null,
+// Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE);
+// if (proceed) {
+// if (targetEditor != null){
+// e4WrappedPart = WorkbenchUtility.getE4WrappedPart(targetEditor);
+// ((TaxonNameEditorE4)e4WrappedPart).save(AbstractUtility.getMonitor());
+// }
+// if (editor.isDirty()){
+// editor.save(AbstractUtility.getMonitor());
+// }
+// } else {
+// return;
+// }
+// }
+
String moveMessage = String.format(Messages.MoveDescriptionElementsHandler_ELEMENTS_MOVED, editor.getTaxon());
AbstractPostOperation operation = new MoveDescriptionElementsOperation(
package eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
newAcceptedTaxonUuid = newAcceptedTaxonNode.getTaxon().getUuid();
- MPart targetEditor = EditorUtil.checkForChanges(newAcceptedTaxonUuid, partService);
- if ((targetEditor != null && targetEditor.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")) || this.editor.isDirty()){
+ Collection<MPart> targetEditors = EditorUtil.checkForChanges(newAcceptedTaxonUuid, partService);
+
+ if (targetEditors != null || this.editor.isDirty()){
boolean proceed = MessageDialog.openQuestion(null,
Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE);
- if (proceed) {
- if (targetEditor != null){
- e4WrappedPart = WorkbenchUtility.getE4WrappedPart(targetEditor);
- ((TaxonNameEditorE4)e4WrappedPart).save(AbstractUtility.getMonitor());
- }
- if (editor.isDirty()){
- editor.save(AbstractUtility.getMonitor());
+ if( targetEditors.iterator().hasNext() ){
+ MPart part = targetEditors.iterator().next();
+ if (proceed) {
+ if (part != null){
+ if (part.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")){
+ TaxonNameEditorE4 targetEditor = (TaxonNameEditorE4) WorkbenchUtility.getE4WrappedPart(part);
+ targetEditor.save(AbstractUtility.getMonitor());
+ }
+ if (editor.isDirty()){
+ editor.save(AbstractUtility.getMonitor());
+ }
+ } else {
+ return;
+ }
}
- } else {
- return;
}
}
*/
package eu.etaxonomy.taxeditor.navigation.navigator.e4.handler;
+import java.util.Collection;
+import java.util.Iterator;
+
import javax.inject.Named;
import org.eclipse.core.commands.operations.AbstractOperation;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.jface.window.Window;
import eu.etaxonomy.cdm.api.service.config.PublishForSubtreeConfigurator;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigatorLabels;
import eu.etaxonomy.taxeditor.navigation.navigator.operation.SetPublishForSubtreeOperation;
import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4;
import eu.etaxonomy.taxeditor.ui.dialog.configurator.SetPublishForSubtreeWizard;
+import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
/**
* @author k.luther
"unknown", //$NON-NLS-1$
TaxonNavigatorLabels.SELECTED_OBJECT_NOT_TREE_NODE_MESSAGE);
}
+ Collection<MPart> dirtyParts = EditorUtil.checkForChanges(null, partService);
+
+ if (dirtyParts != null && !dirtyParts.isEmpty()){
+ boolean proceed = MessageDialog.openQuestion(null,
+ "There are unsaved changes", "Do you want to save the changes?");
+ Iterator<MPart> partIterator = dirtyParts.iterator();
+ while( partIterator.hasNext() ){
+ MPart part = partIterator.next();
+ if (proceed) {
+ if (part != null){
+ if (part.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")){
+ TaxonNameEditorE4 targetEditor = (TaxonNameEditorE4) WorkbenchUtility.getE4WrappedPart(part);
+ targetEditor.save(new NullProgressMonitor());
+ }else if (part.getElementId().equals("bulkeditor.editor")){
+ BulkEditorE4 targetEditor = (BulkEditorE4) WorkbenchUtility.getE4WrappedPart(part);
+ targetEditor.save(new NullProgressMonitor());
+ }
+
+ }
+
+ }
+ }
+ }
+
+
configurator = new PublishForSubtreeConfigurator(taxonNode.getUuid());
SetPublishForSubtreeWizard wizard = new SetPublishForSubtreeWizard(configurator);
}
public void runMoniteredOperation() {
- ITaxonNodeService nodeService;
+
final UUID uuid = longRunningTaskService.monitLongRunningTask(config);
Display.getDefault().asyncExec(new Runnable() {
@Override
import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.api.service.config.SecundumForSubtreeConfigurator;
import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
*/
@Override
protected UpdateResult doUpdateExecute(IProgressMonitor monitor, IAdaptable info) throws Exception {
+ EditorUtil.checkForChanges(null, partService);
+
// runMoniteredOperation();
runMoniteredOperation();
// updateNameEditors();
import eu.etaxonomy.cdm.model.taxon.Synonym;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
import eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation;
if (object != null){
EditorUtil.openTaxonBaseE4(((TaxonNameEditorE4)object).getTaxon().getUuid(), modelService, partService, application);
}
-// Set<TaxonNode> nodes = ((TaxonNameEditorE4)object).getTaxon().getTaxonNodes();
-// for (TaxonNode node: nodes){
-// if (nodesToUpdate.contains(node)){
-//// EditorUtil.closeObsoleteEditor(node, partService);
-// EditorUtil.openTaxonNodeE4(node.getUuid(), modelService, partService, application);
-// }
-//
-// }
+ }
+ if (object instanceof BulkEditorE4){
+ ((BulkEditorE4)object).getEditorInput().performSearch( ((BulkEditorE4)object).getLastQuery(), ((BulkEditorE4)object).getSelection());
}
}
}