Fixes #2422
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / AbstractCdmDetailElement.java
index 252402155bf2fd98a7a72e9f95b64daa3195e2f7..dac11ef17b9ada4aaa38089319a8f872c2ffcd62 100644 (file)
@@ -18,6 +18,8 @@ import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.forms.AbstractCdmFormElement;
@@ -169,6 +171,8 @@ public abstract class AbstractCdmDetailElement<T> extends
                        return;
                }
                
+               handleTitleCacheRelevantChange(event);
+               
                Object eventSource = event.getSource();
                
                if(eventSource instanceof ICdmFormElement){
@@ -183,12 +187,28 @@ public abstract class AbstractCdmDetailElement<T> extends
                                }
                                
                                handleEvent(eventSource);
-                               if(getParentElement() instanceof AbstractCdmDetailSection)
-                                       ((AbstractCdmDetailSection)getParentElement()).updateTitle();
+                               
+                               updateParentSection();
                        }
                }
        }
 
+       protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
+               boolean isRelevant = getEntity() instanceof TaxonNameBase || getEntity() instanceof TaxonBase;
+               isRelevant &= this instanceof AbstractIdentifiableEntityDetailElement; 
+               
+               if(isRelevant){
+                       ((AbstractIdentifiableEntityDetailElement) this).updateToggleableCacheField();
+                       updateParentSection();
+               }
+       }
+       
+       private void updateParentSection(){
+               if(getParentElement() instanceof AbstractCdmDetailSection){
+                       ((AbstractCdmDetailSection) getParentElement()).updateTitle();
+               }
+       }
+
        /**
         * <p>handleEvent</p>
         *