Merge branch 'release/5.4.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / element / AbstractCdmFormElement.java
index fb46d4fa2361e62e8d020c8412a483db84874963..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;
 
@@ -14,7 +15,6 @@ import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.forms.widgets.ScrolledForm;
 import org.eclipse.ui.forms.widgets.Section;
 
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
@@ -112,10 +112,6 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
                elements.add(element);
        }
 
-       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.
@@ -149,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();
 
@@ -167,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();
        }
@@ -294,18 +297,6 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
                }
        }
 
-       protected void reflowParentScrolledForm(boolean flushCashes){
-           ScrolledForm scrolledForm = null;
-           Composite parent = getLayoutComposite().getParent();
-           while(parent!=null && !(parent instanceof ScrolledForm)){
-               parent = parent.getParent();
-           }
-           scrolledForm = (ScrolledForm)parent;
-           if(scrolledForm!=null){
-               scrolledForm.reflow(flushCashes);
-           }
-       }
-
        @Override
     public void refresh() {
                // empty default implementation