Project

General

Profile

Download (3.74 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.editor.view.checklist.e4.handler;
2

    
3
import java.util.List;
4

    
5
import javax.inject.Inject;
6
import javax.inject.Named;
7

    
8
import org.eclipse.e4.core.di.annotations.CanExecute;
9
import org.eclipse.e4.core.services.log.Logger;
10
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
11
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
12
import org.eclipse.e4.ui.services.IServiceConstants;
13
import org.eclipse.e4.ui.workbench.modeling.EPartService;
14
import org.eclipse.jface.viewers.IStructuredSelection;
15
import org.eclipse.swt.widgets.Shell;
16

    
17
import eu.etaxonomy.cdm.model.description.Distribution;
18
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
19
import eu.etaxonomy.cdm.model.permission.Operation;
20
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
21
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
22
import eu.etaxonomy.taxeditor.editor.AppModelId;
23
import eu.etaxonomy.taxeditor.editor.EditorUtil;
24
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
25
import eu.etaxonomy.taxeditor.handler.defaultHandler.e4.DefaultOpenSetBaseHandler;
26
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
27
import eu.etaxonomy.taxeditor.security.RequiredPermissions;
28
import eu.etaxonomy.taxeditor.store.CdmStore;
29

    
30
public class OpenChecklistEditorHandlerE4 extends DefaultOpenSetBaseHandler<List<UuidAndTitleCache>> {
31
    @Inject
32
    private Logger logger;
33
    private static final String COULD_NOT_OPEN_DISTRIBUTION_EDITOR_THE_HIERARCHY_IS_CORRUPTED = Messages.OpenChecklistEditorHandler_COULD_NOT_OPEN_MESSAGE;
34
    private static final String COULD_NOT_OPEN_DISTRIBUTION_EDITOR = Messages.OpenChecklistEditorHandler_COULD_NOT_OPEN_TITLE;
35

    
36

    
37

    
38
	@Override
39
	protected void open(List<UuidAndTitleCache> entities, Shell shell, EPartService partService) {
40

    
41
	    EditorUtil.openDistributionEditor(entities, modelService, partService, application);
42
	}
43

    
44

    
45

    
46
    /**
47
     * {@inheritDoc}
48
     */
49
    @CanExecute
50
    @Override
51
    public boolean canExecute(MHandledMenuItem menuItem,
52
            @Named(IServiceConstants.ACTIVE_PART) MPart activePart) {
53

    
54
        Distribution instance = Distribution.NewInstance();
55
        boolean hasDescriptionPermission = CdmStore.currentAuthentiationHasPermission(instance, Operation.ALL);
56
        if (!hasDescriptionPermission){
57
            return false;
58
        }
59
        return PreferencesUtil.getBooleanValue(PreferencePredicate.DistributionEditorActivated.getKey());
60
        //check whether the user has subtree rights
61
    //    CdmStore.getCurrentAuthentiation().getAuthorities()
62
     //   boolean  hasPermission =  ((TaxonNode)entity).hasChildNodes() ? checkPermission(((TaxonNode)entity).getChildNodes(), false) || CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT):CdmStore.currentAuthentiationHasPermission(((TaxonNode) entity), RequiredPermissions.TAXONNODE_EDIT);
63
    //    return hasPermission &&  PreferencesUtil.getBooleanValue(PreferencePredicate.DistributionEditorActivated.getKey());
64
    }
65

    
66
    @Override
67
    protected String getPartId() {
68
        return AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_CHECKLIST_E4_DISTRIBUTIONEDITORPART;
69
    }
70

    
71
    private boolean checkPermission(List<TaxonNode> nodes, boolean result){
72

    
73
        for (TaxonNode node:nodes){
74
            if (node.hasChildNodes() && !result){
75
                result = result ||checkPermission(node.getChildNodes(), result);
76

    
77
            }
78
            result = result || CdmStore.currentAuthentiationHasPermission(node, RequiredPermissions.TAXONNODE_EDIT);
79
            if (result){
80
                return result;
81
            }
82
        }
83
        return result;
84
    }
85

    
86

    
87

    
88
    @Override
89
    protected boolean canExecute(IStructuredSelection entity) {
90
        // TODO Auto-generated method stub
91
        return true;
92
    }
93

    
94

    
95
}
    (1-1/1)