Project

General

Profile

Download (4.38 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.taxon.Classification;
18
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
19
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
20
import eu.etaxonomy.taxeditor.editor.AppModelId;
21
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
22
import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditorInput;
23
import eu.etaxonomy.taxeditor.editor.view.checklist.e4.ChecklistEditorE4;
24
import eu.etaxonomy.taxeditor.handler.defaultHandler.e4.DefaultOpenHandlerBaseE4;
25
import eu.etaxonomy.taxeditor.model.MessagingUtils;
26
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
27
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
28
import eu.etaxonomy.taxeditor.store.CdmStore;
29
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
30

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

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

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

    
49
		if (PreferencesUtil.getBooleanValue(IPreferenceKeys.DISTRIBUTION_AREA_PREFRENCES_ACTIVE)) {
50
			if (StringUtils.isBlank(PreferencesUtil.getStringValue(IPreferenceKeys.DISTRIBUTION_VOCABULARIES) )){
51

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

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

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

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