*/
package eu.etaxonomy.taxeditor.handler.defaultHandler.e4;
-import java.util.UUID;
+import java.util.Collection;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
-import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
import eu.etaxonomy.taxeditor.event.EventUtility;
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.section.classification.EditTaxonNodeWizard;
* @date 22.03.2016
*
*/
-public class DefaultOpenTaxonNodeWizardHandlerE4 extends DefaultOpenHandlerBaseE4<TaxonNode> {
+public class DefaultOpenTaxonNodeWizardHandlerE4 extends DefaultOpenHandlerBaseE4<TaxonNodeDto> {
- @Override
- protected TaxonNode getEntity(UUID uuid) {
- return CdmStore.getService(ITaxonNodeService.class).load(uuid);
- }
+// @Override
+// protected TaxonNode getEntity(UUID uuid) {
+// return CdmStore.getService(ITaxonNodeService.class).load(uuid);
+// }
@Override
- protected void open(TaxonNode entity, Shell shell, EPartService partService) {
+ protected void open(TaxonNodeDto entity, Shell shell, EPartService partService) {
+ Collection<MPart> dirtyParts = partService.getDirtyParts();
+ if (!dirtyParts.isEmpty()){
+
+ for (MPart dirtyPart: dirtyParts){
+ if (dirtyPart.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4") && ((ITaxonEditor)dirtyPart.getObject()).getTaxonNode().getUuid().equals(entity.getUuid())){
+ boolean doSave = MessageDialog
+ .openConfirm(shell, "The taxonnode is in an unsaved mode",
+ "Do you want to save?");
+
+ if (!doSave) {
+ return ;
+ }
+
+ partService.savePart(dirtyPart, false);
+ }
+
+ }
+ }
EditTaxonNodeWizard taxonNodeWizard = ContextInjectionFactory.make(EditTaxonNodeWizard.class, context);
taxonNodeWizard.init(null, null);
- taxonNodeWizard.setEntity(entity);
+ taxonNodeWizard.setEntity(CdmStore.getService(ITaxonNodeService.class).load(entity.getUuid()));
WizardDialog dialog = new WizardDialog(shell, taxonNodeWizard);
dialog.open();
- EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, true);
+ EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, entity);
+ EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, entity.getTaxonUuid());
}
@Override
- public boolean canExecute(TaxonNode entity) {
- return entity.getTaxon()!=null;
+ public boolean canExecute(Object selection) {
+ if (((IStructuredSelection)selection).getFirstElement() instanceof TaxonNodeDto && ((IStructuredSelection)selection).size() == 1){
+ return ((TaxonNodeDto)((IStructuredSelection)selection).getFirstElement()).getTaxonUuid()!=null && PreferencesUtil.getBooleanValue(PreferencePredicate.ShowTaxonNodeWizard.getKey());
+ }
+ return false;
}
+
+
}
\ No newline at end of file