return null;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void update() {
+ input.performSearch(lastQuery, getSelection());
+
+ }
+
}
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4;
+import eu.etaxonomy.taxeditor.bulkeditor.input.TaxonEditorInput;
import eu.etaxonomy.taxeditor.editor.descriptiveDataSet.DescriptiveDataSetEditor;
import eu.etaxonomy.taxeditor.editor.descriptiveDataSet.matrix.CharacterMatrixPart;
import eu.etaxonomy.taxeditor.editor.e4.TaxonEditorInputE4;
return dirtyParts;
}
+ public static Collection<MPart> checkForTaxonChanges(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) {
+ if(part.getObject() instanceof TaxonNameEditorE4
+ && ((TaxonNameEditorE4) part.getObject()).getTaxon()!=null
+ && ((TaxonNameEditorE4) part.getObject()).getTaxon().getUuid().equals(taxonUUID)){
+ if (part.isDirty()){
+ dirtyParts.add(part);
+ }
+
+ break;
+ }else if (taxonUUID == null){
+ if (part.isDirty() && (part.getObject() instanceof TaxonNameEditorE4 || (part.getObject() instanceof BulkEditorE4 && ((BulkEditorE4)part.getObject()).getEditorInput() instanceof TaxonEditorInput))){
+ dirtyParts.add(part);
+ }
+ }
+ }
+ return dirtyParts;
+ }
+
/**
* An uninitialized taxon is one that hasn't been saved yet. As such, it
* should appear in neither the list of recent names nor in the taxonomic
}
}
+
}
import org.eclipse.e4.ui.di.Persist;
import org.eclipse.e4.ui.di.UIEventTopic;
import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.MDirtyable;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.services.EMenuService;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import eu.etaxonomy.taxeditor.editor.ISecuredEditor;
import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
import eu.etaxonomy.taxeditor.editor.e4.TaxonEditorInputE4;
+import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.editor.name.e4.container.AbstractGroupE4;
import eu.etaxonomy.taxeditor.editor.name.e4.container.AbstractGroupedContainerE4;
@Inject
private MDirtyable dirty;
+ @Inject
+ private MApplication application;
+
private MPart thisPart;
private TaxonEditorInputE4 input;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void update() {
+ EPartService partService = TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(EPartService.class);
+ EModelService modelService = TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(EModelService.class);
+ EditorUtil.openTaxonBaseE4(this.getTaxon().getUuid(), modelService, partService, application);
+
+ }
+
}
public static String TaxonNavigatorLabels_SET_PUBLISH_FOR_CHILDREN;
public static String TaxonNavigatorLabels_ACCEPTED_TAXA_NEED_TO_BE_FROM_SAME_CLASSIFICATION;
public static String TaxonNavigatorLabels_SET_UNPLACED;
+ public static String NO;
+ public static String YES;
+ public static String SetPublishFlagForSubtreeHandlerE4_UnsavedChanges;
+ public static String SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
SetPublishForSubtreeOperation_CHANGE_PUBLISH_OP=Change publish flag for all children
TaxonNavigatorLabels_SET_PUBLISH_FOR_CHILDREN=Change publish flag for all children
TaxonNavigatorLabels_SET_UNPLACED=Set unplaced flag for taxonnode(s)
+NO=No
+YES=Yes
+SetPublishFlagForSubtreeHandlerE4_UnsavedChanges=There are unsaved changes
+SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion=There are changes, do you want to save them? \nIf you do not save, the changes may be overwritten.
SetPublishForSubtreeOperation_CHANGE_PUBLISH_OP=Publish Flag für alle Kinder ändern
TaxonNavigatorLabels_SET_PUBLISH_FOR_CHILDREN=Ändere Publish Flag für alle Kinder
TaxonNavigatorLabels_SET_UNPLACED=Setze unplaced Flag für den/die Taxonknoten
+
+NO=Nein
+YES=Ja
+
+SetPublishFlagForSubtreeHandlerE4_UnsavedChanges=Es gibt ungespeicherte Änderungen
+SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion=Es gibt Änderungen, wollen Sie diese speichern? \nWenn Sie nicht speichern, könnten diese Änderungen verloren gehen.
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.l10n.Messages;
import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigatorLabels;
import eu.etaxonomy.taxeditor.navigation.navigator.operation.SetPublishForSubtreeOperation;
import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4;
public SetPublishFlagForSubtreeHandlerE4() {
//FIXME add missing l10n property
// super(TaxonNavigatorLabels.CHANGE_PUBLISH_FOR_SUBTREE);
- super("");
+ super(""); //$NON-NLS-1$
}
private TaxonNodeDto taxonNode;
private PublishForSubtreeConfigurator configurator;
-
+ private static final String NO = Messages.NO;
+ private static final String CANCEL = Messages.RemotingMoveTaxonNodeHandler_CANCEL;
+ private static final String YES = Messages.YES;
@Override
public IStatus allowOperations(IStructuredSelection selection, Shell shell, MPart activePart,
"unknown", //$NON-NLS-1$
TaxonNavigatorLabels.SELECTED_OBJECT_NOT_TREE_NODE_MESSAGE);
}
- Collection<MPart> dirtyParts = EditorUtil.checkForChanges(null, partService);
+ Collection<MPart> dirtyParts = EditorUtil.checkForTaxonChanges(null, partService);
if (dirtyParts != null && !dirtyParts.isEmpty()){
- boolean proceed = MessageDialog.openQuestion(null,
- "There are unsaved changes", "Do you want to save the changes?");
+ String[] buttonLables = {YES, NO,CANCEL};
+ MessageDialog dialog = new MessageDialog(null, Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChanges, null, Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion, MessageDialog.QUESTION_WITH_CANCEL, buttonLables, 0);
+ dialog.open();
+ int returnCode = dialog.getReturnCode();
+ boolean proceed = false;
+ if (returnCode == 0){
+ proceed = true;
+ }else if (returnCode == 2){
+ return Status.CANCEL_STATUS;
+ }
+
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")){
+ if (part.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")){ //$NON-NLS-1$
TaxonNameEditorE4 targetEditor = (TaxonNameEditorE4) WorkbenchUtility.getE4WrappedPart(part);
targetEditor.save(new NullProgressMonitor());
- }else if (part.getElementId().equals("bulkeditor.editor")){
+ }else if (part.getElementId().equals("bulkeditor.editor")){ //$NON-NLS-1$
BulkEditorE4 targetEditor = (BulkEditorE4) WorkbenchUtility.getE4WrappedPart(part);
targetEditor.save(new NullProgressMonitor());
}
*/
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.SecundumForSubtreeConfigurator;
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.l10n.Messages;
import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigatorLabels;
import eu.etaxonomy.taxeditor.navigation.navigator.operation.SetSecundumForSubtreeOperation;
import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4;
import eu.etaxonomy.taxeditor.ui.dialog.configurator.SetSecundumForSubtreeConfigurationWizard;
+import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
/**
* @author k.luther
"unknown", //$NON-NLS-1$
TaxonNavigatorLabels.SELECTED_OBJECT_NOT_TREE_NODE_MESSAGE);
}
+ Collection<MPart> dirtyParts = EditorUtil.checkForTaxonChanges(null, partService);
+
+ if (dirtyParts != null && !dirtyParts.isEmpty()){
+ String[] buttonLables = {Messages.YES, Messages.NO,Messages.TreeNodeDropAdapter_CANCEL};
+ MessageDialog dialog = new MessageDialog(null, Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChanges, null, Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion, MessageDialog.QUESTION_WITH_CANCEL, buttonLables, 0);
+ dialog.open();
+ int returnCode = dialog.getReturnCode();
+ boolean proceed = false;
+ if (returnCode == 0){
+ proceed = true;
+ }else if (returnCode == 2){
+ return Status.CANCEL_STATUS;
+ }
+
+ 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")){ //$NON-NLS-1$
+ TaxonNameEditorE4 targetEditor = (TaxonNameEditorE4) WorkbenchUtility.getE4WrappedPart(part);
+ targetEditor.save(new NullProgressMonitor());
+ }else if (part.getElementId().equals("bulkeditor.editor")){ //$NON-NLS-1$
+ BulkEditorE4 targetEditor = (BulkEditorE4) WorkbenchUtility.getE4WrappedPart(part);
+ targetEditor.save(new NullProgressMonitor());
+ }
+
+ }
+
+ }
+ }
+ }
configurator = new SecundumForSubtreeConfigurator(taxonNode.getUuid());
SetSecundumForSubtreeConfigurationWizard wizard = new SetSecundumForSubtreeConfigurationWizard(configurator);
import java.util.UUID;
import org.apache.log4j.Logger;
-import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.swt.widgets.Display;
-import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.api.service.config.PublishForSubtreeConfigurator;
import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
-import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* @author k.luther
}
- private Job createJob(IProgressMonitor monitor){
- Assert.isNotNull(config, "Configuration may not be null");
-
- final Display display = Display.getDefault();
- taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
- Job job = new Job(Messages.SetPublishFlagForSubtreeOperation_SET_SEC_TASK) {
-
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- if (config instanceof PublishForSubtreeConfigurator){
- updateResult = taxonNodeService.setPublishForSubtree(config.getSubtreeUuid(), ((PublishForSubtreeConfigurator)config).isPublish(), config.isIncludeAcceptedTaxa(), config.isIncludeSynonyms(), config.isIncludeSharedTaxa(), null);
- }else {
- return Status.CANCEL_STATUS;
- }
- updateNameEditors();
- return Status.OK_STATUS;
-
- }
- };
- return job;
- }
+// private Job createJob(IProgressMonitor monitor){
+// Assert.isNotNull(config, "Configuration may not be null");
+//
+// final Display display = Display.getDefault();
+// taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
+// Job job = new Job(Messages.SetPublishFlagForSubtreeOperation_SET_SEC_TASK) {
+//
+//
+// @Override
+// protected IStatus run(IProgressMonitor monitor) {
+// if (config instanceof PublishForSubtreeConfigurator){
+// updateResult = taxonNodeService.setPublishForSubtree(config.getSubtreeUuid(), ((PublishForSubtreeConfigurator)config).isPublish(), config.isIncludeAcceptedTaxa(), config.isIncludeSynonyms(), config.isIncludeSharedTaxa(), null);
+// }else {
+// return Status.CANCEL_STATUS;
+// }
+// updateNameEditors();
+// return Status.OK_STATUS;
+//
+// }
+// };
+// return job;
+// }
public void runMoniteredOperation() {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
- AbstractUtility.executeMoniteredOperation("Set Publish Flag for Subtree: ",
+ EditorUtil.executeMoniteredOperation("Set Publish Flag for Subtree: ",
uuid,
1000,
false,
SetPublishForSubtreeOperation.this,
null,
true);
- updateNameEditors();
+ //updateNameEditors();
}
});
import javax.inject.Inject;
import org.apache.log4j.Logger;
-import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.e4.ui.di.UISynchronize;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
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;
}
- private Job createJob(IProgressMonitor monitor){
- Assert.isNotNull(config, "Configuration may not be null");
-
- final Display display = Display.getDefault();
-
- Job job = new Job(Messages.SetSecundumForSubtreeOperation_SET_SEC_TASK) {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- if (config instanceof SecundumForSubtreeConfigurator){
- updateResult = taxonNodeService.setSecundumForSubtree((SecundumForSubtreeConfigurator)config);
- }else{
- return Status.CANCEL_STATUS;
- }
-
- return Status.OK_STATUS;
-
- }
- };
- return job;
- }
+// private Job createJob(IProgressMonitor monitor){
+// Assert.isNotNull(config, "Configuration may not be null");
+//
+// final Display display = Display.getDefault();
+//
+// Job job = new Job(Messages.SetSecundumForSubtreeOperation_SET_SEC_TASK) {
+// @Override
+// protected IStatus run(IProgressMonitor monitor) {
+// if (config instanceof SecundumForSubtreeConfigurator){
+// updateResult = taxonNodeService.setSecundumForSubtree((SecundumForSubtreeConfigurator)config);
+// }else{
+// return Status.CANCEL_STATUS;
+// }
+//
+// return Status.OK_STATUS;
+//
+// }
+// };
+// return job;
+// }
public void runMoniteredOperation() {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
- AbstractUtility.executeMoniteredOperation("Set Secundum Reference for Subtree: ",
+ EditorUtil.executeMoniteredOperation("Set Secundum Reference for Subtree: ",
uuid,
1000,
false,
SetSecundumForSubtreeOperation.this,
null,
true);
- updateNameEditors();
+ // updateNameEditors();
}
});
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.bulkeditor.input.TaxonEditorInput;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
import eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation;
subtreeNode = CdmStore.getService(ITaxonNodeService.class).load(config.getSubtreeUuid());
}
public void updateNameEditors(){
- List<TaxonNode> nodesToUpdate = new ArrayList();
+ List<Taxon> taxaToUpdate = new ArrayList();
for (CdmBase object: updateResult.getUpdatedObjects()){
Taxon taxon = null;
TaxonNode node = null;
taxon = syn.getAcceptedTaxon();
node = taxon.getTaxonNode(subtreeNode.getClassification());
}
- nodesToUpdate.add(node);
+ taxaToUpdate.add(taxon);
}
Display.getDefault().asyncExec(new Runnable() {
setFocus = true;
}
if (object instanceof TaxonNameEditorE4){
- if (object != null){
- EditorUtil.openTaxonBaseE4(((TaxonNameEditorE4)object).getTaxon().getUuid(), modelService, partService, application);
+ if (object != null ){
+ if (taxaToUpdate.contains(((TaxonNameEditorE4)object).getTaxon())){
+ EditorUtil.openTaxonBaseE4(((TaxonNameEditorE4)object).getTaxon().getUuid(), modelService, partService, application);
+ }
}
}
- if (object instanceof BulkEditorE4){
+ if (object instanceof BulkEditorE4 && ((BulkEditorE4)object).getEditorInput() instanceof TaxonEditorInput){
((BulkEditorE4)object).getEditorInput().performSearch( ((BulkEditorE4)object).getLastQuery(), ((BulkEditorE4)object).getSelection());
}
}
public interface ITaxonEditor {
/**
- *
+ *
* @return the @Taxon of the editor
- *
+ *
*/
public abstract Taxon getTaxon();
+
+ public abstract void update();
}