*/
package eu.etaxonomy.taxeditor.editor.definedterm.e4.handler;
+import java.util.List;
import java.util.UUID;
+import java.util.stream.Collectors;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.model.application.MApplication;
String commandId = menuItem.getCommand().getElementId();
UUID termTypeUuid = (UUID) menuItem.getTransientData().get(commandId+".termTypeUuid");
- TermEditorInput termEditorInput = new TermEditorInput(TermType.getByUuid(termTypeUuid));
- MPart part = partService.createPart(eu.etaxonomy.taxeditor.store.AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_DEFINEDTERM);
- MPartStack editorAreaPartStack = WorkbenchUtility.getEditorAreaPartStack(application, modelService);
- if(editorAreaPartStack!=null){
- editorAreaPartStack.getChildren().add(part);
+ TermType termType = TermType.getByUuid(termTypeUuid);
+ TermEditorInput termEditorInput = new TermEditorInput(termType);
+ List<MPart> alreadyOpenedEditors = partService.getParts().stream()
+ .filter(part->part.getObject()!=null && part.getObject() instanceof DefinedTermEditorE4)
+ .filter(part->((DefinedTermEditorE4)part.getObject()).getDefinedTermEditorInput().getTermType().equals(termType))
+ .collect(Collectors.toList());
+ if(!alreadyOpenedEditors.isEmpty()){
+ //there should never be more than one already opened editor
+ //so we just open the first
+ partService.activate(alreadyOpenedEditors.iterator().next());
+ }
+ else{
+ MPart part = partService.createPart(eu.etaxonomy.taxeditor.store.AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_DEFINEDTERM);
+ MPartStack editorAreaPartStack = WorkbenchUtility.getEditorAreaPartStack(application, modelService);
+ if(editorAreaPartStack!=null){
+ editorAreaPartStack.getChildren().add(part);
+ }
+ part = partService.showPart(part, PartState.ACTIVATE);
+ DefinedTermEditorE4 termEditor = (DefinedTermEditorE4) part.getObject();
+ termEditor.init(termEditorInput);
}
- part = partService.showPart(part, PartState.ACTIVATE);
- DefinedTermEditorE4 termEditor = (DefinedTermEditorE4) part.getObject();
- termEditor.init(termEditorInput);
}
}