Resolves #2376
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / forms / AbstractFormSection.java
index f20c07468baeba8cbf9b5c684079a7de3222f94e..311d7b0cfa64f2a43dcea45c11b1dd7ad70f6fd9 100644 (file)
@@ -3,6 +3,7 @@
  */
 package eu.etaxonomy.taxeditor.ui.forms;
 
+import java.util.ConcurrentModificationException;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -24,6 +25,7 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.TypedListener;
 import org.eclipse.swt.widgets.Widget;
+import org.eclipse.ui.editors.text.EditorsUI;
 import org.eclipse.ui.forms.widgets.Section;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
 import org.eclipse.ui.forms.widgets.ToggleHyperlink;
@@ -31,6 +33,7 @@ import org.eclipse.ui.forms.widgets.ToggleHyperlink;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
 
 /**
  * <p>Abstract AbstractFormSection class.</p>
@@ -56,6 +59,8 @@ public abstract class AbstractFormSection<ENTITY> extends Section implements ISe
        
        private ConversationHolder conversation;
 
+       private boolean handlingPropertyChange;
+
        /**
         * <p>Constructor for AbstractFormSection.</p>
         *
@@ -163,8 +168,13 @@ public abstract class AbstractFormSection<ENTITY> extends Section implements ISe
        /** {@inheritDoc} */
        public void firePropertyChangeEvent(CdmPropertyChangeEvent event) {
                Assert.isNotNull(propertyChangeListeners, "No property change listeners.");
-               for(Object listener : propertyChangeListeners){
-                       ((IPropertyChangeListener) listener).propertyChange(event);
+               try{
+                       for(Object listener : propertyChangeListeners){
+                               ((IPropertyChangeListener) listener).propertyChange(event);
+                       }
+               }catch(ConcurrentModificationException e){
+                       StoreUtil.warn(getClass(), "ConcurrentModificationException while handling PropertyChangeEvents." +
+                                       " It seems like this is not critical");
                }
        }