Merge branch 'release/5.4.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / element / AbstractCdmFormElement.java
index feb0d6da2e4a7e4bd049876cf04cec8e0c65dbd3..ec1f11e29f3d2a1279b8b594120e171c52807f8f 100644 (file)
@@ -5,6 +5,7 @@ package eu.etaxonomy.taxeditor.ui.element;
 
 import java.util.ConcurrentModificationException;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -20,8 +21,6 @@ import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 
 /**
- * <p>Abstract AbstractCdmFormElement class.</p>
- *
  * @author n.hoffmann
  * @version $Id: $
  */
@@ -41,23 +40,11 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
        private Color persistentBackgroundColor;
 
 
-       /**
-        * <p>Constructor for AbstractCdmFormElement.</p>
-        *
-        * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
-        * @param layoutComposite a {@link org.eclipse.swt.widgets.Composite} object.
-        */
        protected AbstractCdmFormElement(CdmFormFactory formFactory, Composite layoutComposite){
                this.layoutComposite = layoutComposite;
                this.formFactory = formFactory;
        }
 
-       /**
-        * <p>Constructor for AbstractCdmFormElement.</p>
-        *
-        * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
-        * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
-        */
        public AbstractCdmFormElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
                this(formFactory, formElement.getLayoutComposite());
                this.parentElement = formElement;
@@ -95,11 +82,6 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
                controls.add(child);
        }
 
-       /**
-        * <p>removeControl</p>
-        *
-        * @param child a {@link org.eclipse.swt.widgets.Control} object.
-        */
        protected void removeControl(Control child){
                controls.remove(child);
        }
@@ -130,15 +112,6 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
                elements.add(element);
        }
 
-       /**
-        * <p>removeElement</p>
-        *
-        * @param element a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
-        */
-       protected void removeElement(ICdmFormElement element){
-               elements.remove(element);
-       }
-
        /**
         * Remove all child {@link ICdmFormElement}s and child {@link Control}s
         * of the given and the element itself.
@@ -172,7 +145,8 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
         */
        @Override
     public void removeElements(){
-               for(ICdmFormElement childElement : getElements()){
+        for (Iterator<ICdmFormElement> iterator = getElements().iterator();iterator.hasNext();) {
+            ICdmFormElement childElement = iterator.next();
                        // recursion
                        childElement.removeElements();
 
@@ -190,6 +164,12 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
                        // dispose of the controls
                        removeControls(childElement);
                }
+               if(this instanceof ISelectableElement){
+            SelectionArbitrator selectionArbitrator = ((ISelectableElement) this).getSelectionArbitrator();
+            if(selectionArbitrator != null){
+                formFactory.destroySelectionArbitrator(selectionArbitrator);
+            }
+        }
                removeControls(this);
                elements.clear();
        }
@@ -231,9 +211,6 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
                this.layoutComposite = layoutComposite;
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.forms.ICdmFormComposite#getPropertyChangeListeners()
-        */
        /**
         * <p>Getter for the field <code>propertyChangeListeners</code>.</p>
         *
@@ -244,9 +221,6 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
                return propertyChangeListeners;
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.forms.ICdmFormComposite#setPropertyChangeListeners(org.eclipse.core.runtime.ListenerList)
-        */
        /** {@inheritDoc} */
        @Override
     public void setPropertyChangeListeners(List<IPropertyChangeListener> propertyChangeListeners){
@@ -323,13 +297,6 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
                }
        }
 
-       /*
-        * (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.forms.ICdmFormElement#refresh()
-        */
-       /**
-        * <p>refresh</p>
-        */
        @Override
     public void refresh() {
                // empty default implementation