Add no marker without a markerType (#4588)
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / supplemental / MarkerElement.java
1 package eu.etaxonomy.taxeditor.ui.section.supplemental;
2
3 import org.eclipse.swt.events.SelectionListener;
4
5 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
6 import eu.etaxonomy.cdm.model.common.Marker;
7 import eu.etaxonomy.cdm.model.common.MarkerType;
8 import eu.etaxonomy.cdm.model.common.TermType;
9 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
10 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
11 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
12 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
13 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
14 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
15
16 /**
17 * @author n.hoffmann
18 * @created Nov 16, 2009
19 * @version 1.0
20 */
21 public class MarkerElement extends AbstractEntityCollectionElement<Marker>{
22
23
24 private TermComboElement<MarkerType> combo_markerType;
25 private CheckboxElement checkbox_markerState;
26
27 public MarkerElement(CdmFormFactory cdmFormFactory, AbstractFormSection formElement, Marker element,
28 SelectionListener removeListener, int style) {
29 super(cdmFormFactory, formElement, element, removeListener, null, style);
30 }
31
32 /** {@inheritDoc} */
33 @Override
34 public void createControls(ICdmFormElement element, int style) {
35 checkbox_markerState = formFactory.createCheckbox(this, null, false, style);
36 combo_markerType = formFactory.createDefinedTermComboElement(TermType.MarkerType, this, null, null, style);
37 }
38
39 /** {@inheritDoc} */
40 @Override
41 public void setEntity(Marker element) {
42 this.entity = element;
43 checkbox_markerState.setSelection(element.getFlag());
44 combo_markerType.setSelection(element.getMarkerType());
45 combo_markerType.removeEmptyElement();
46 }
47
48 /** {@inheritDoc} */
49 @Override
50 public void handleEvent(Object eventSource) {
51 if(eventSource == combo_markerType && getParentElement() instanceof MarkerSection){
52 MarkerSection markerSection = (MarkerSection)getParentElement();
53 AnnotatableEntity annotatableEntity = markerSection.getEntity();
54 annotatableEntity.removeMarker(entity);
55 MarkerType markerType = combo_markerType.getSelection();
56 entity.setMarkerType(markerType);
57 annotatableEntity.addMarker(entity);
58 }
59 else if(eventSource == checkbox_markerState){
60 getEntity().setFlag(checkbox_markerState.getSelection());
61 }
62 }
63 }