9da735212efc0aabac87eeed3cf11eda00e16f99
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / e4 / handler / CreateClassificationHierarchyHandlerE4.java
1 package eu.etaxonomy.taxeditor.navigation.navigator.e4.handler;
2
3 import javax.inject.Named;
4
5 import org.eclipse.e4.core.di.annotations.CanExecute;
6 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
7 import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
8 import org.eclipse.e4.ui.services.IServiceConstants;
9 import org.eclipse.jface.viewers.TreeSelection;
10
11 import eu.etaxonomy.cdm.model.taxon.Classification;
12 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
13 import eu.etaxonomy.taxeditor.model.AbstractUtility;
14 import eu.etaxonomy.taxeditor.model.MessagingUtils;
15 import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
16 import eu.etaxonomy.taxeditor.navigation.navigator.e4.TaxonNavigatorE4;
17 import eu.etaxonomy.taxeditor.navigation.operation.CreateNewTaxonHierarchyOperation;
18 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
19 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
20 import eu.etaxonomy.taxeditor.store.StoreUtil;
21
22 /**
23 *
24 * @author pplitzner
25 * @date 05.09.2017
26 *
27 */
28 public class CreateClassificationHierarchyHandlerE4 {
29
30 public void execute(@Named(IServiceConstants.ACTIVE_SELECTION)TreeSelection selection,
31 @Named(IServiceConstants.ACTIVE_PART)MPart activePart) {
32
33 TaxonNavigatorE4 taxonNavigator = (TaxonNavigatorE4) activePart.getObject();
34
35 Object selectedElement = selection.getFirstElement();
36 if (selectedElement instanceof TaxonNode && !((TaxonNode)selectedElement).hasTaxon()) {
37 Classification classification = ((TaxonNode) selectedElement).getClassification();
38 try {
39 CreateNewTaxonHierarchyOperation operation = new CreateNewTaxonHierarchyOperation(Messages.CreateClassificationHierarchyHandler_CREATE_HIERARCHY, StoreUtil.getUndoContext(),classification, taxonNavigator, taxonNavigator);
40 AbstractUtility.executeOperation(operation);
41 taxonNavigator.refresh();
42 } catch (Exception e) {
43 MessagingUtils.messageDialog(Messages.CreateClassificationHierarchyHandler_FAILED, CreateClassificationHierarchyHandlerE4.class,
44 Messages.CreateClassificationHierarchyHandler_FAILED_MESSAGE, e);
45 }
46 }
47 }
48
49 @CanExecute
50 private boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)TreeSelection selection, MHandledMenuItem menuItem){
51 boolean canExecute = false;
52 menuItem.setVisible(canExecute);
53 canExecute = selection.getFirstElement() instanceof Classification && PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_EXPERIMENTAL_FEATURES);
54 return canExecute;
55 }
56
57 }