X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/blobdiff_plain/ab40ab80d8cf8e754e7e21dbc05697ee5bcc489e..d365bbdad96d3a9fce13b4f7122bdba3d4c8f0be:/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java index 53760480e..695c5f684 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java @@ -32,6 +32,7 @@ import org.eclipse.ui.IEditorPart; import org.eclipse.ui.handlers.HandlerUtil; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; +import eu.etaxonomy.cdm.model.description.DescriptiveDataSet; import eu.etaxonomy.cdm.model.occurrence.DerivedUnit; import eu.etaxonomy.cdm.model.occurrence.FieldUnit; import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; @@ -55,6 +56,8 @@ import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView; import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput; import eu.etaxonomy.taxeditor.model.AbstractUtility; import eu.etaxonomy.taxeditor.model.MessagingUtils; +import eu.etaxonomy.taxeditor.security.RequiredPermissions; +import eu.etaxonomy.taxeditor.store.CdmStore; import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility; import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart; @@ -125,13 +128,13 @@ public class EditorUtil extends AbstractUtility { String partIdFactualData = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DESCRIPTIVE_E4_FACTUALDATAPARTE4; String partIdMedia = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_MEDIA_E4_MEDIAVIEWPARTE4; MPart part1 = partService.findPart(AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DESCRIPTIVE_E4_FACTUALDATAPARTE4); - if (factsVisible || part1!=null && part1.getWidget() != null ){ + if (factsVisible || (part1!=null && part1.getWidget() != null && partService.isPartVisible(part1))){ factsVisible = true; }else{ factsVisible = false; } part1 = partService.findPart(AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_MEDIA_E4_MEDIAVIEWPARTE4); - if (mediaVisible || part1!=null && part1.getWidget() != null){ + if (mediaVisible || (part1!=null && part1.getWidget() != null && partService.isPartVisible(part1))){ mediaVisible = true; }else{ mediaVisible = false; @@ -172,7 +175,9 @@ public class EditorUtil extends AbstractUtility { if(editorAreaPartStack!=null){ editorAreaPartStack.getChildren().add(part); } + return partService.showPart(part, PartState.ACTIVATE); + } public static MPart showPart(String partId, EModelService modelService, EPartService partService){ @@ -214,7 +219,7 @@ public class EditorUtil extends AbstractUtility { } boolean hasPermission = false; // if (node != null){ -// hasPermission = CdmStore.currentAuthentiationHasPermission(node, RequiredPermissions.TAXON_EDIT); + hasPermission = CdmStore.currentAuthentiationHasPermission(node, RequiredPermissions.TAXON_EDIT); // } // if (!hasPermission){ // MessagingUtils.warningDialog(Messages.EditorUtil_MISSING_PERMISSION, TaxonEditorInputE4.class, Messages.EditorUtil_MISSING_PERMISSION_MESSAGE); @@ -248,22 +253,21 @@ public class EditorUtil extends AbstractUtility { MPart part = showPart(NAME_EDITOR_ID, modelService, partService, application); TaxonNameEditorE4 editor = (TaxonNameEditorE4) part.getObject(); +// editor.setDisabled(); editor.init(input); - MPart part1 = partService.findPart(AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DESCRIPTIVE_E4_FACTUALDATAPARTE4); +// editor.setEnabled(); + editor.setFocus(); if (factsVisible){ showFacts(modelService, partService); factsVisible = false; } - part1 = partService.findPart(AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_MEDIA_E4_MEDIAVIEWPARTE4); + if (mediaVisible){ showMedia(modelService, partService); mediaVisible = false; } -// String partIdFactualData = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DESCRIPTIVE_E4_FACTUALDATAPARTE4; -// String partIdMedia = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_MEDIA_E4_MEDIAVIEWPARTE4; -// showPart(partIdMedia, modelService, partService); -// showPart(partIdFactualData, modelService, partService); - editor.setFocus(); + + } public static void showMedia(EModelService modelService, EPartService partService) { @@ -396,7 +400,7 @@ public class EditorUtil extends AbstractUtility { return true; } - public static boolean forceUserSaveE4Editor(TaxonNameEditorE4 editor, Shell shell) { + public static boolean forceUserSaveE4Editor(IE4SavablePart editor, Shell shell) { if (editor.isDirty()) { boolean doSave = MessageDialog @@ -501,6 +505,48 @@ public class EditorUtil extends AbstractUtility { } } + public static void closeObsoleteEditorWithChildren(TaxonNodeDto taxonNode, EPartService partService){ + String treeIndex = taxonNode.getTreeIndex(); + Collection parts = partService.getParts(); + for (MPart part : parts) { + Object object = part.getObject(); + if(object instanceof TaxonNameEditorE4){ + TaxonNameEditorE4 taxonEditor = (TaxonNameEditorE4)object; + TaxonNode node = taxonEditor.getEditorInput().getTaxonNode(); + if (node.treeIndex()!= null){ + if(node.treeIndex().startsWith(treeIndex)){ + if (part.isDirty()){ + forceUserSaveE4Editor(taxonEditor, getShell()); + } + partService.hidePart(part); + } + }else{ + logger.debug("The taxonnode of taxon " + node.getTaxon().getTitleCache() + " uuid: " + node.getUuid() + " has no treeindex");; + } + } + } + } + + + public static void closeObsoleteDescriptiveDatasetEditor(UUID datasetUuid, EPartService partService){ + + Collection parts = partService.getParts(); + for (MPart part : parts) { + Object object = part.getObject(); + if(object instanceof DescriptiveDataSetEditor){ + DescriptiveDataSetEditor editor = (DescriptiveDataSetEditor)object; + DescriptiveDataSet descDataSet = editor.getDescriptiveDataSet(); + if(descDataSet.getUuid().equals(datasetUuid)){ + if (part.isDirty()){ + forceUserSaveE4Editor(editor, getShell()); + } + partService.hidePart(part); + } + + } + } + } + public static void closePart(String partID, EPartService partService){ @@ -519,8 +565,6 @@ public class EditorUtil extends AbstractUtility { if(node.treeIndex().equals(treeIndex)){ TaxonEditorInputE4 input = TaxonEditorInputE4.NewInstance(node.getUuid()); editor.init(input); - - } }