changed output dir to classes
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / description / DescriptionElementDetailSection.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.ui.section.description;
12
13 import org.eclipse.jface.action.Action;
14 import org.eclipse.jface.action.ToolBarManager;
15 import org.eclipse.jface.viewers.ISelectionProvider;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.widgets.Control;
18
19 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
20 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
21 import eu.etaxonomy.cdm.model.description.TextData;
22 import eu.etaxonomy.taxeditor.model.MessagingUtils;
23 import eu.etaxonomy.taxeditor.store.CdmStore;
24 import eu.etaxonomy.taxeditor.store.StoreUtil;
25 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
26 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
27 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
28 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
29 import eu.etaxonomy.taxeditor.ui.section.description.operation.ChangeDescriptionElementType;
30
31 /**
32 * <p>DescriptionElementDetailSection class.</p>
33 *
34 * @author n.hoffmann
35 * @created Mar 5, 2010
36 * @version 1.0
37 */
38 public class DescriptionElementDetailSection extends
39 AbstractCdmDetailSection<DescriptionElementBase> {
40
41 /**
42 * <p>Constructor for DescriptionElementDetailSection.</p>
43 *
44 * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
45 * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
46 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
47 * @param selectionProvider a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
48 * @param style a int.
49 */
50 public DescriptionElementDetailSection(CdmFormFactory cdmFormFactory, ConversationHolder conversation,
51 ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
52 super(cdmFormFactory, conversation, parentElement, selectionProvider, style);
53 }
54
55
56 @Override
57 protected Control createToolbar() {
58 if(! hasSpecificElement()){
59 return null;
60 }
61
62 ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
63
64 final String destinationString = (getEntity() instanceof TextData) ? "the specific element" : "free text";
65
66 final String label = "Change to " + destinationString;
67
68 Action addAction = new Action("Change Type", Action.AS_PUSH_BUTTON) {
69 /* (non-Javadoc)
70 * @see org.eclipse.jface.action.Action#run()
71 */
72 @Override
73 public void run() {
74 boolean confirmed = MessagingUtils.confirmDialog("Confirmation", "Do you really want to change to "
75 + destinationString + "? Current data will be lost.");
76 if (confirmed) {
77 // FIXME
78 ChangeDescriptionElementType operation = new ChangeDescriptionElementType(label,
79 getEntity(), StoreUtil.getDetailsView(), StoreUtil.getUndoContext());
80 StoreUtil.executeOperation(operation);
81 }
82 }
83 };
84 // TODO enable this once a proper icon has been found
85 // addAction.setImageDescriptor(new ImageDescriptor() {
86 //
87 // @Override
88 // public ImageData getImageData() {
89 // return ImageResources.getImage(ImageResources.ADD_ICON).getImageData();
90 // }
91 // });
92 addAction.setToolTipText(label);
93
94 toolBarManager.add(addAction);
95
96 return toolBarManager.createControl(this);
97 }
98
99 /** {@inheritDoc} */
100 @Override
101 public String getHeading() {
102 return "Description Element";
103 }
104
105 /** {@inheritDoc} */
106 @Override
107 protected void setSectionTitle() {
108 this.setText(getHeading() + ": " + getEntity().getFeature().getLabel(CdmStore.getDefaultLanguage()));
109 setTextClient(createToolbar());
110 }
111
112 private boolean hasSpecificElement(){
113 return getEntity().getFeature().isSupportsCategoricalData()
114 || getEntity().getFeature().isSupportsCommonTaxonName()
115 || getEntity().getFeature().isSupportsDistribution()
116 || getEntity().getFeature().isSupportsIndividualAssociation()
117 || getEntity().getFeature().isSupportsQuantitativeData()
118 || getEntity().getFeature().isSupportsTaxonInteraction();
119 }
120
121 /* (non-Javadoc)
122 * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
123 */
124 @Override
125 protected AbstractCdmDetailElement<DescriptionElementBase> createCdmDetailElement(AbstractCdmDetailSection<DescriptionElementBase> parentElement, int style) {
126 return formFactory.createDescriptionElementDetailElement(parentElement, style);
127 }
128 }