package eu.etaxonomy.taxeditor.editor;
import java.util.Collection;
+import java.util.HashSet;
import java.util.UUID;
import org.eclipse.core.commands.ExecutionEvent;
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;
import eu.etaxonomy.taxeditor.editor.group.authority.CdmAuthorityEditorInput;
import eu.etaxonomy.taxeditor.editor.group.authority.e4.CdmAuthorityEditorE4;
import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
+import eu.etaxonomy.taxeditor.editor.view.checklist.e4.DistributionEditorPart;
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
-import eu.etaxonomy.taxeditor.editor.workingSet.WorkingSetEditor;
-import eu.etaxonomy.taxeditor.editor.workingSet.matrix.CharacterMatrixPart;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
/**
* Utility for the editor package
public class EditorUtil extends AbstractUtility {
private static final String NAME_EDITOR_ID = "eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4";
- private static boolean isSaving = false;
- public static void openWorkingSetEditor(UUID workingSetUuid, EModelService modelService, EPartService partService, MApplication application){
- String partId = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_WORKINGSET_WORKINGSETEDITOR;
+ public static void openDescriptiveDataSetEditor(UUID descriptiveDataSetUuid, EModelService modelService, EPartService partService, MApplication application){
+ Collection<MPart> parts = partService.getParts();
+ for (MPart part : parts) {
+ if(part.getObject() instanceof DescriptiveDataSetEditor
+ && ((DescriptiveDataSetEditor) part.getObject()).getDescriptiveDataSet().getUuid().equals(descriptiveDataSetUuid)){
+ partService.showPart(part, PartState.ACTIVATE);
+ return;
+ }
+ }
+ String partId = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DESCRIPTIVEDATASET_DESCRIPTIVEDATASETEDITOR;
MPart part = showPart(partId, modelService, partService, application);
- WorkingSetEditor editor = (WorkingSetEditor) part.getObject();
- editor.init(workingSetUuid);
+ DescriptiveDataSetEditor editor = (DescriptiveDataSetEditor) part.getObject();
+ editor.init(descriptiveDataSetUuid);
}
- public static void openCharacterMatrix(UUID workingSetUuid, EModelService modelService, EPartService partService, MApplication application){
- String partId = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_WORKINGSET_MATRIX_CHARACTERMATRIXPART;
+ public static void openCharacterMatrix(UUID descriptiveDataSetUuid, EModelService modelService, EPartService partService, MApplication application){
+ Collection<MPart> parts = partService.getParts();
+ for (MPart part : parts) {
+ if(part.getObject() instanceof CharacterMatrixPart
+ && ((CharacterMatrixPart) part.getObject()).getDescriptiveDataSet().getUuid().equals(descriptiveDataSetUuid)){
+ partService.showPart(part, PartState.ACTIVATE);
+ return;
+ }
+ }
+ String partId = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_DESCRIPTIVEDATASET_MATRIX_CHARACTERMATRIXPART;
MPart part = showPart(partId, modelService, partService, application);
CharacterMatrixPart editor = (CharacterMatrixPart) part.getObject();
- editor.init(workingSetUuid, true);
+ editor.init(descriptiveDataSetUuid, true);
}
+ public static void openDistributionEditor(UUID parentTaxonUuid, EModelService modelService, EPartService partService, MApplication application){
+ Collection<MPart> parts = partService.getParts();
+ String partId = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_CHECKLIST_E4_DISTRIBUTIONEDITORPART;
+ String partIdFactualData = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DESCRIPTIVE_E4_FACTUALDATAPARTE4;
+ String partIdMedia = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_MEDIA_E4_MEDIAVIEWPARTE4;
+ closePart(partIdMedia, partService);
+ closePart(partIdFactualData, partService);
+ MPart part = showPart(partId, modelService, partService, application);
+ DistributionEditorPart editor = (DistributionEditorPart) part.getObject();
+ editor.init(parentTaxonUuid);
+ }
+
+
public static void openSpecimenEditor(DerivateViewEditorInput input, EModelService modelService, EPartService partService, MApplication application){
String partId = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DERIVATE_DERIVATEVIEW;
MPart part = showPart(partId, modelService, partService, application);
}
public static void openRightsEditor(CdmAuthorityEditorInput input, EModelService modelService, EPartService partService, MApplication application){
+ Collection<MPart> parts = partService.getParts();
+ for (MPart part : parts) {
+ if(part.getObject() instanceof CdmAuthorityEditorE4
+ && ((CdmAuthorityEditorE4) part.getObject()).getInput().getGroup().equals(input.getGroup())){
+ partService.showPart(part, PartState.ACTIVATE);
+ return;
+ }
+ }
String partId = AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_GROUP_AUTHORITY_E4_CDMAUTHORITYEDITORE4;
MPart part = showPart(partId, modelService, partService, application);
CdmAuthorityEditorE4 authorityView = (CdmAuthorityEditorE4) part.getObject();
authorityView.init(input);
}
- private static MPart showPart(String partId, EModelService modelService, EPartService partService, MApplication application){
+ public static MPart showPart(String partId, EModelService modelService, EPartService partService, MApplication application){
MPart part = partService.findPart(partId);
if(part==null || modelService.getPartDescriptor(partId).isAllowMultiple()){
part = partService.createPart(partId);
return partService.showPart(part, PartState.ACTIVATE);
}
+ public static MPart showPart(String partId, EModelService modelService, EPartService partService){
+ MPart part = partService.findPart(partId);
+ if(part==null || modelService.getPartDescriptor(partId).isAllowMultiple()){
+ part = partService.createPart(partId);
+ partService.activate(part);
+ }else{
+ partService.activate(part);
+ }
+
+ return part;
+ }
+
public static void openTaxonNodeE4(UUID taxonNodeUuid, EModelService modelService, EPartService partService, MApplication application) {
TaxonEditorInputE4 input = TaxonEditorInputE4.NewInstance(taxonNodeUuid);
openNameEditor_internal(input, modelService, partService, application);
if(part.getObject() instanceof TaxonNameEditorE4
&& ((TaxonNameEditorE4) part.getObject()).getTaxon()!=null
&& ((TaxonNameEditorE4) part.getObject()).getTaxon().getUuid().equals(input.getTaxon().getUuid())){
+ if (part.isDirty()){
+ forceUserSaveE4Editor(((TaxonNameEditorE4) part.getObject()), getShell());
+ }
partService.hidePart(part);
break;
}
}
MPart part = showPart(NAME_EDITOR_ID, modelService, partService, application);
+
TaxonNameEditorE4 editor = (TaxonNameEditorE4) part.getObject();
editor.init(input);
+ 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 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) {
+ 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()){
+ dirtyParts.add(part);
+ }
+ }
+ }
+ return dirtyParts;
+ }
+
+ public static Collection<IE4SavablePart> checkForTaxonChanges(UUID taxonUUID, EPartService partService ){
+ Collection<MPart> parts = partService.getParts();
+ Collection<IE4SavablePart> dirtyParts = new HashSet<>();
+ //check if part is already opened
+ 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((IE4SavablePart) 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((IE4SavablePart) part);
+ }
+ }
+ }
+ return dirtyParts;
}
/**
editor.init(input);
}
- /**
- * <p>
- * setSaving
- * </p>
- *
- * @param isSaving
- * a boolean.
- */
- public static void setSaving(boolean isSaving) {
- EditorUtil.isSaving = isSaving;
- }
-
- /**
- * <p>
- * isSaving
- * </p>
- *
- * @return a boolean.
- */
- public static boolean isSaving() {
- return isSaving;
- }
-
/**
* <p>
* getUndoContext
TaxonNode node = taxonEditor.getEditorInput().getTaxonNode();
if (node.treeIndex()!= null){
if(node.treeIndex().startsWith(treeIndex)){
+ if (part.isDirty()){
+ forceUserSaveE4Editor(taxonEditor, getShell());
+ }
partService.hidePart(part);
}
}else{
}
}
+
+ public static void closePart(String partID, EPartService partService){
+
+ Collection<MPart> parts = partService.getParts();
+ for (MPart part : parts) {
+ String elementId = part.getElementId();
+ if (elementId.equals(partID)){
+ partService.hidePart(part);
+ }
+ }
+ }
+
public static void updateEditor(TaxonNode taxonNode, TaxonNameEditorE4 editor){
String treeIndex = taxonNode.treeIndex();
TaxonNode node = editor.getEditorInput().getTaxonNode();
}
}
+
}