Merge branch 'hotfix/5.44.1'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / element / TimePeriodElement.java
index 5acb8b5aab1034231146a779125471c085ab06be..141ca94a000d2ae50d08f414a348207b72980fe7 100644 (file)
 /**
  * Copyright (C) 2007 EDIT
 /**
  * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
+ * European Distributed Institute of Taxonomy
  * http://www.e-taxonomy.eu
  * http://www.e-taxonomy.eu
- * 
+ *
  * The contents of this file are subject to the Mozilla Public License Version 1.1
  * See LICENSE.TXT at the top of this package for the full license terms.
  */
  * The contents of this file are subject to the Mozilla Public License Version 1.1
  * See LICENSE.TXT at the top of this package for the full license terms.
  */
-
 package eu.etaxonomy.taxeditor.ui.element;
 
 package eu.etaxonomy.taxeditor.ui.element;
 
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.model.common.TimePeriod;
 
 /**
 
 import eu.etaxonomy.cdm.model.common.TimePeriod;
 
 /**
- * <p>
  * TimePeriodElement class.
  * TimePeriodElement class.
- * </p>
- * 
+ *
  * @author n.hoffmann
  * @created Nov 17, 2009
  * @author n.hoffmann
  * @created Nov 17, 2009
- * @version 1.0
  */
  */
-public class TimePeriodElement extends AbstractCdmFormElement implements ISelectable {
-
-       private TimePeriod timePeriod;
-       private final Label label;
-       private final DateDetailSection section_dateDetails;
-
-       /**
-        * <p>
-        * Constructor for TimePeriodElement.
-        * </p>
-        * 
-        * @param style
-        *            a int.
-        * @param formFactory
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-        *            object.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param timePeriod
-        *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
-        */
-       public TimePeriodElement(CdmFormFactory formFactory,
-                       ICdmFormElement parentElement, String labelString,
-                       TimePeriod timePeriod, final int style) {
-               super(formFactory, parentElement);
-
-               label = formFactory.createLabel(getLayoutComposite(), labelString);
-               addControl(label);
-
-               section_dateDetails = formFactory.createDateDetailSection(this,
-                               Section.TWISTIE);
-               addControl(section_dateDetails);
-
-               setTimePeriod(timePeriod);
+public class TimePeriodElement
+                       extends TimePeriodElementBase<TimePeriod> implements IEnableableFormElement{
+    boolean isEnabled = true;
 
 
-               formFactory.addPropertyChangeListener(this);
+    public TimePeriodElement(CdmFormFactory formFactory, ICdmFormElement parentElement, String labelString,
+                       TimePeriod timePeriod, int style) {
+               super(formFactory, parentElement, labelString, timePeriod, style);
        }
 
        }
 
-       /**
-        * <p>
-        * setEntity
-        * </p>
-        * 
-        * @param timePeriod
-        *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
-        */
-       public void setEntity(TimePeriod timePeriod) {
-               setTimePeriod(timePeriod);
-       }
-
-       /** {@inheritDoc} */
        @Override
        @Override
-       public void propertyChange(PropertyChangeEvent event) {
-               if (event == null) {
-                       return;
-               }
-               Object eventSource = event.getSource();
-
-               if (getElements().contains(eventSource)) {
-                       handleEvent(eventSource);
-               }
-       }
-
-       private void handleEvent(Object eventSource) {
-               if (eventSource == section_dateDetails) {
-                       timePeriod = section_dateDetails.getEntity();
-                       firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
-               }
-       }
-
-       /**
-        * <p>
-        * Setter for the field <code>timePeriod</code>.
-        * </p>
-        * 
-        * @param timePeriod
-        *            the timePeriod to set
-        */
-       public void setTimePeriod(TimePeriod timePeriod) {
-               this.timePeriod = timePeriod;
-               if (timePeriod != null) {
-                       section_dateDetails.setEntity(timePeriod);
-               }
-       }
-
-       /**
-        * <p>
-        * Getter for the field <code>timePeriod</code>.
-        * </p>
-        * 
-        * @return the timePeriod
-        */
-       public TimePeriod getTimePeriod() {
-               return timePeriod;
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void setBackground(Color color) {
-               label.setBackground(color);
-               section_dateDetails.setBackground(color);
-       }
-       
-       @Override
-       public void setSelected(boolean selected) {
-               setBackground(selected ? SELECTED : getPersistentBackground());
-       }
-
-       public void setLabel(String string) {
-               label.setText(string);
-       }
-}
+       protected DateDetailSection<TimePeriod> createDateDetailSection() {
+               return formFactory.createDateDetailSection(this,
+                               ExpandableComposite.TWISTIE);
+       }
+
+    @Override
+    public void setEnabled(boolean enabled) {
+        this.isEnabled = enabled;
+        for (ICdmFormElement element: getElements()){
+            if (element instanceof IEnableableFormElement){
+                IEnableableFormElement enableableElement = (IEnableableFormElement) element;
+                enableableElement.setEnabled(enabled);
+            }
+        }
+
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return isEnabled;
+    }
+    
+    public void setExpanded(boolean isExpanded) {
+       this.section_dateDetails.setExpanded(isExpanded);
+    }
+
+}
\ No newline at end of file