Project

General

Profile

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

    
3
import java.util.UUID;
4

    
5
import org.apache.commons.lang.StringUtils;
6
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
7
import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
8
import org.eclipse.e4.ui.workbench.modeling.EPartService;
9
import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
10
import org.eclipse.swt.widgets.Shell;
11

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

    
28
public class OpenChecklistEditorHandlerE4 extends DefaultOpenHandlerBaseE4<ITaxonTreeNode> {
29

    
30
    private static final String COULD_NOT_OPEN_DISTRIBUTION_EDITOR_THE_HIERARCHY_IS_CORRUPTED = Messages.OpenChecklistEditorHandler_COULD_NOT_OPEN_MESSAGE;
31
    private static final String COULD_NOT_OPEN_DISTRIBUTION_EDITOR = Messages.OpenChecklistEditorHandler_COULD_NOT_OPEN_TITLE;
32

    
33
    @Override
34
	protected ITaxonTreeNode getEntity(UUID uuid) {
35
		ITaxonTreeNode taxonTreeNode = CdmStore.getService(ITaxonNodeService.class).load(uuid);
36
		if(taxonTreeNode==null){
37
			taxonTreeNode = CdmStore.getService(IClassificationService.class).load(uuid);
38
		}
39
		return taxonTreeNode;
40
	}
41

    
42
	@Override
43
	protected void open(ITaxonTreeNode entity, Shell shell, EPartService partService) {
44
		if (PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.DISTRIBUTION_AREA_PREFRENCES_ACTIVE)) {
45
			if (StringUtils.isBlank(PreferencesUtil.getPreferenceStore().getString(IPreferenceKeys.DISTRIBUTION_VOCABULARIES) )){
46
				MessagingUtils.informationDialog(Messages.OpenChecklistEditorHandler_NO_AREAS, Messages.OpenChecklistEditorHandler_CHOOSE_AREA
47
						+ Messages.OpenChecklistEditorHandler_GOTO_PREFERENCES);
48
				return;
49
			}
50
			if (entity instanceof Classification) {
51
				ChecklistEditorInput input = new ChecklistEditorInput(((Classification) entity));
52
				try {
53
					openChecklistEditor(input, partService);
54
				} catch (NullPointerException npe) {
55
					MessagingUtils.messageDialog(COULD_NOT_OPEN_DISTRIBUTION_EDITOR, OpenChecklistEditorHandlerE4.class,
56
							COULD_NOT_OPEN_DISTRIBUTION_EDITOR_THE_HIERARCHY_IS_CORRUPTED, npe);
57
				}
58
			} else if (entity instanceof TaxonNode) {
59
				ChecklistEditorInput input = new ChecklistEditorInput((TaxonNode) entity);
60
				try {
61
					openChecklistEditor(input, partService);
62
				} catch (NullPointerException npe) {
63
					MessagingUtils.messageDialog(COULD_NOT_OPEN_DISTRIBUTION_EDITOR, OpenChecklistEditorHandlerE4.class,
64
							COULD_NOT_OPEN_DISTRIBUTION_EDITOR_THE_HIERARCHY_IS_CORRUPTED, npe);
65
				}
66
			}
67
		}
68
	}
69

    
70
	private void openChecklistEditor(ChecklistEditorInput input, EPartService partService) {
71
		MPart part = partService.createPart(AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_CHECKLIST_E4_CHECKLISTEDITORE4);
72
		MPartStack editorAreaPartStack = WorkbenchUtility.getEditorAreaPartStack(application, modelService);
73
		if(editorAreaPartStack!=null){
74
		    editorAreaPartStack.getChildren().add(part);
75
		}
76
		part = partService.showPart(part, PartState.ACTIVATE);
77
		ChecklistEditorE4 checklistEditor = (ChecklistEditorE4) part.getObject();
78
		if (checklistEditor != null){
79
			checklistEditor.init(input);
80
		}else{
81
			System.err.println("Editor is null");
82
		}
83
	}
84

    
85
    /**
86
     * {@inheritDoc}
87
     */
88
    @Override
89
    protected boolean canExecute(ITaxonTreeNode entity) {
90
        return entity!=null && PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.DISTRIBUTION_AREA_PREFRENCES_ACTIVE);
91
    }
92

    
93
    @Override
94
    protected String getPartId() {
95
        return AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_CHECKLIST_E4_CHECKLISTEDITORE4;
96
    }
97
}
    (1-1/1)