automated build configuration is on its way
[taxeditor.git] / taxeditor-editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / handler / GroupBasionymContributionItem.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.editor.name.handler;
5
6 import org.apache.log4j.Logger;
7 import org.eclipse.jface.action.IContributionItem;
8 import org.eclipse.jface.viewers.ISelection;
9 import org.eclipse.jface.viewers.IStructuredSelection;
10 import org.eclipse.swt.SWT;
11 import org.eclipse.ui.ISelectionService;
12 import org.eclipse.ui.IWorkbenchWindow;
13 import org.eclipse.ui.PlatformUI;
14 import org.eclipse.ui.actions.CompoundContributionItem;
15 import org.eclipse.ui.menus.CommandContributionItem;
16 import org.eclipse.ui.menus.CommandContributionItemParameter;
17
18 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
19 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
20 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
21 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
22 import eu.etaxonomy.taxeditor.labels.ILabelImageStrategy;
23 import eu.etaxonomy.taxeditor.labels.LabelImageProvider;
24
25 /**
26 * <p>GroupBasionymContributionItem class.</p>
27 *
28 * @author p.ciardelli
29 * @version $Id: $
30 */
31 public class GroupBasionymContributionItem extends CompoundContributionItem {
32 private static final Logger logger = Logger.getLogger(GroupBasionymContributionItem.class);
33
34 /**
35 * <p>Constructor for GroupBasionymContributionItem.</p>
36 */
37 public GroupBasionymContributionItem() {}
38
39 /**
40 * <p>Constructor for GroupBasionymContributionItem.</p>
41 *
42 * @param id a {@link java.lang.String} object.
43 */
44 public GroupBasionymContributionItem(String id) {
45 super(id);
46 }
47
48
49 /* (non-Javadoc)
50 * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
51 */
52 /** {@inheritDoc} */
53 @Override
54 protected IContributionItem[] getContributionItems() {
55
56 IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
57
58 ISelectionService selectionService = window.getSelectionService();
59
60 ISelection selection = selectionService.getSelection();
61
62 if(selection instanceof IStructuredSelection){
63 Object selectedObject = ((IStructuredSelection) selection).getFirstElement();
64
65 if(selectedObject != null && selectedObject instanceof TaxonBase){
66
67 TaxonNameBase name = (TaxonNameBase) HibernateProxyHelper.deproxy(((TaxonBase) selectedObject).getName());
68
69 if(name.getHomotypicalGroup().getTypifiedNames().size() > 1){
70
71 CommandContributionItemParameter parameter =
72 new CommandContributionItemParameter(
73 window, null, getCommand(name), SWT.NONE);
74
75 parameter.label = getLabel(name);
76
77 return new IContributionItem[] {
78 new CommandContributionItem(parameter)
79 };
80 }
81
82 }
83 }
84
85 return new IContributionItem[]{};
86 }
87
88 /**
89 * @param name
90 * @return
91 */
92 private String getCommand(TaxonNameBase name) {
93 if(name.isGroupsBasionym()){
94 return "eu.etaxonomy.taxeditor.editor.name.removeBasionym" ;
95 }
96 return "eu.etaxonomy.taxeditor.editor.name.setBasionym";
97 }
98
99 /**
100 * @param name
101 * @return
102 */
103 private String getLabel(TaxonNameBase name) {
104 ILabelImageStrategy strategy = LabelImageProvider.getLabelStrategy(name);
105 LabelImageProvider labelProvider = new LabelImageProvider(strategy);
106 return (name.isGroupsBasionym() ? "Remove" : "Set")
107 + " as " + labelProvider.getNameRelationTypeDescription(NameRelationshipType.BASIONYM()) + " for Homotypic Group";
108 }
109 }