Project

General

Profile

Download (3.67 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.swt.widgets.Shell;
15

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

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

    
35

    
36

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

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

    
43

    
44

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

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

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

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

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

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

    
85

    
86

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

    
93

    
94
}
    (1-1/1)