Project

General

Profile

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

    
3
import java.util.UUID;
4

    
5
import javax.inject.Inject;
6

    
7
import org.apache.commons.lang.StringUtils;
8
import org.eclipse.e4.core.services.log.Logger;
9
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
10
import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
11
import org.eclipse.e4.ui.workbench.modeling.EPartService;
12
import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
13
import org.eclipse.swt.widgets.Shell;
14

    
15
import eu.etaxonomy.cdm.api.service.IClassificationService;
16
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
17
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
18
import eu.etaxonomy.cdm.model.taxon.Classification;
19
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
20
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
21
import eu.etaxonomy.taxeditor.editor.AppModelId;
22
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
23
import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditorInput;
24
import eu.etaxonomy.taxeditor.editor.view.checklist.e4.ChecklistEditorE4;
25
import eu.etaxonomy.taxeditor.handler.defaultHandler.e4.DefaultOpenHandlerBaseE4;
26
import eu.etaxonomy.taxeditor.model.MessagingUtils;
27
import eu.etaxonomy.taxeditor.preference.EditorPreferencePredicate;
28
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
29
import eu.etaxonomy.taxeditor.store.CdmStore;
30
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
31

    
32
public class OpenChecklistEditorHandlerE4 extends DefaultOpenHandlerBaseE4<ITaxonTreeNode> {
33
    @Inject
34
    private Logger logger;
35
    private static final String COULD_NOT_OPEN_DISTRIBUTION_EDITOR_THE_HIERARCHY_IS_CORRUPTED = Messages.OpenChecklistEditorHandler_COULD_NOT_OPEN_MESSAGE;
36
    private static final String COULD_NOT_OPEN_DISTRIBUTION_EDITOR = Messages.OpenChecklistEditorHandler_COULD_NOT_OPEN_TITLE;
37

    
38
    @Override
39
	protected ITaxonTreeNode getEntity(UUID uuid) {
40
		ITaxonTreeNode taxonTreeNode = CdmStore.getService(ITaxonNodeService.class).load(uuid);
41
		if(taxonTreeNode==null){
42
			taxonTreeNode = CdmStore.getService(IClassificationService.class).load(uuid);
43
		}
44
		return taxonTreeNode;
45
	}
46

    
47
	@Override
48
	protected void open(ITaxonTreeNode entity, Shell shell, EPartService partService) {
49

    
50
		if (PreferencesUtil.getBooleanValue(EditorPreferencePredicate.DistributionEditorActivated.getKey())) {
51
			if (StringUtils.isBlank(PreferencesUtil.getStringValue(PreferencePredicate.AvailableDistributionAreaVocabularies.getKey()) )){
52

    
53
				MessagingUtils.informationDialog(Messages.OpenChecklistEditorHandler_NO_AREAS, Messages.OpenChecklistEditorHandler_CHOOSE_AREA
54
						+ Messages.OpenChecklistEditorHandler_GOTO_PREFERENCES);
55
				return;
56
			}
57
			if (entity instanceof Classification) {
58
				ChecklistEditorInput input = new ChecklistEditorInput(((Classification) entity));
59
				try {
60
					openChecklistEditor(input, partService);
61
				} catch (NullPointerException npe) {
62
					MessagingUtils.messageDialog(COULD_NOT_OPEN_DISTRIBUTION_EDITOR, OpenChecklistEditorHandlerE4.class,
63
							COULD_NOT_OPEN_DISTRIBUTION_EDITOR_THE_HIERARCHY_IS_CORRUPTED, npe);
64
				}
65
			} else if (entity instanceof TaxonNode) {
66
				ChecklistEditorInput input = new ChecklistEditorInput((TaxonNode) entity);
67
				try {
68
					openChecklistEditor(input, partService);
69
				} catch (NullPointerException npe) {
70
					MessagingUtils.messageDialog(COULD_NOT_OPEN_DISTRIBUTION_EDITOR, OpenChecklistEditorHandlerE4.class,
71
							COULD_NOT_OPEN_DISTRIBUTION_EDITOR_THE_HIERARCHY_IS_CORRUPTED, npe);
72
				}
73
			}
74
		}
75
	}
76

    
77
	private void openChecklistEditor(ChecklistEditorInput input, EPartService partService) {
78
		MPart part = partService.createPart(AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_CHECKLIST_E4_CHECKLISTEDITORE4);
79
		MPartStack editorAreaPartStack = WorkbenchUtility.getEditorAreaPartStack(application, modelService);
80
		if(editorAreaPartStack!=null){
81
		    editorAreaPartStack.getChildren().add(part);
82
		}
83
		part = partService.showPart(part, PartState.ACTIVATE);
84
		ChecklistEditorE4 checklistEditor = (ChecklistEditorE4) part.getObject();
85
		if (checklistEditor != null){
86
			checklistEditor.init(input);
87
		}else{
88
			logger.debug("Editor is null");
89
		}
90
	}
91

    
92
    /**
93
     * {@inheritDoc}
94
     */
95
    @Override
96
    protected boolean canExecute(ITaxonTreeNode entity) {
97
        return entity!=null && PreferencesUtil.getBooleanValue(EditorPreferencePredicate.DistributionEditorActivated.getKey());
98
    }
99

    
100
    @Override
101
    protected String getPartId() {
102
        return AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_CHECKLIST_E4_CHECKLISTEDITORE4;
103
    }
104
}
    (1-1/1)