package eu.etaxonomy.taxeditor.workbench;
+import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import org.eclipse.core.commands.ParameterizedCommand;
import org.eclipse.e4.core.di.annotations.CanExecute;
}
Map parameterMap = commandParameters.getParameterMap();
String partId = parameterMap.get(AppModelId.COMMANDPARAMETER_EU_ETAXONOMY_TAXEDITOR_WORKBENCH_COMMANDPARAMETER_PARTNAME).toString();
- MPart part = partService.createPart(partId);
- part = partService.showPart(part, PartState.ACTIVATE);
- if(part.getObject() instanceof IEditorAreaPart){
+ List<MPart> alreadyOpenedEditors = partService.getParts().stream()
+ .filter(part->part.getElementId()!=null && part.getElementId().equals(partId))
+ .collect(Collectors.toList());
+ MPart partToOpen = partService.createPart(partId);
+
+ if (alreadyOpenedEditors.size() > 0){
+ partToOpen = alreadyOpenedEditors.iterator().next();
+ }
+ partToOpen = partService.showPart(partToOpen, PartState.ACTIVATE);
+
+ if(partToOpen.getObject() instanceof IEditorAreaPart){
MPartStack editorAreaPartStack = WorkbenchUtility.getEditorAreaPartStack(application, modelService);
if(editorAreaPartStack!=null){
- editorAreaPartStack.getChildren().add(part);
+ editorAreaPartStack.getChildren().add(partToOpen);
}
- part = partService.showPart(part, PartState.VISIBLE);
+ partToOpen = partService.showPart(partToOpen, PartState.VISIBLE);
}
}