Project

General

Profile

« Previous | Next » 

Revision 0307d72a

Added by Katja Luther over 3 years ago

ref #8774: open termTree editors only once

View differences:

eu.etaxonomy.taxeditor.workbench/src/main/java/eu/etaxonomy/taxeditor/workbench/OpenPartHandler.java
1 1

  
2 2
package eu.etaxonomy.taxeditor.workbench;
3 3

  
4
import java.util.List;
4 5
import java.util.Map;
6
import java.util.stream.Collectors;
5 7

  
6 8
import org.eclipse.core.commands.ParameterizedCommand;
7 9
import org.eclipse.e4.core.di.annotations.CanExecute;
......
25 27
        }
26 28
        Map parameterMap = commandParameters.getParameterMap();
27 29
        String partId = parameterMap.get(AppModelId.COMMANDPARAMETER_EU_ETAXONOMY_TAXEDITOR_WORKBENCH_COMMANDPARAMETER_PARTNAME).toString();
28
        MPart part = partService.createPart(partId);
29
        part = partService.showPart(part, PartState.ACTIVATE);
30
        if(part.getObject() instanceof IEditorAreaPart){
30
        List<MPart> alreadyOpenedEditors = partService.getParts().stream()
31
                .filter(part->part.getElementId()!=null && part.getElementId().equals(partId))
32
                .collect(Collectors.toList());
33
        MPart partToOpen = partService.createPart(partId);
34

  
35
        if (alreadyOpenedEditors.size() > 0){
36
            partToOpen = alreadyOpenedEditors.iterator().next();
37
        }
38
        partToOpen = partService.showPart(partToOpen, PartState.ACTIVATE);
39

  
40
        if(partToOpen.getObject() instanceof IEditorAreaPart){
31 41
            MPartStack editorAreaPartStack = WorkbenchUtility.getEditorAreaPartStack(application, modelService);
32 42
            if(editorAreaPartStack!=null){
33
                editorAreaPartStack.getChildren().add(part);
43
                editorAreaPartStack.getChildren().add(partToOpen);
34 44
            }
35
            part = partService.showPart(part, PartState.VISIBLE);
45
            partToOpen = partService.showPart(partToOpen, PartState.VISIBLE);
36 46
        }
37 47
    }
38 48

  

Also available in: Unified diff