- update parent scroll form on property change (fixes #4881)
authorPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 22 Jun 2015 12:38:25 +0000 (14:38 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Mon, 22 Jun 2015 12:58:54 +0000 (14:58 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java

index 9d3a362b4b2ef7a9ae6fd25d99e94c9067379c47..950452bd34ac285bc7183e9ad83511729a18e66d 100644 (file)
@@ -21,6 +21,7 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.widgets.ScrolledForm;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
@@ -106,11 +107,6 @@ public abstract class AbstractCdmDetailElement<T> extends AbstractCdmFormElement
         updateContent();
        }
 
         updateContent();
        }
 
-       /*
-        * (non-Javadoc)
-        *
-        * @see eu.etaxonomy.taxeditor.forms.IEntityElement#getEntity()
-        */
        /**
         * <p>
         * Getter for the field <code>entity</code>.
        /**
         * <p>
         * Getter for the field <code>entity</code>.
@@ -129,17 +125,23 @@ public abstract class AbstractCdmDetailElement<T> extends AbstractCdmFormElement
        protected void updateContent() {
                removeElements();
                createControls(this, entity, SWT.WRAP);
        protected void updateContent() {
                removeElements();
                createControls(this, entity, SWT.WRAP);
-               getLayoutComposite().layout();
+               reflowParentScrolledForm(true);
 
                updateControlStates();
        }
 
 
                updateControlStates();
        }
 
-       /*
-        * (non-Javadoc)
-        *
-        * @see
-        * eu.etaxonomy.taxeditor.forms.ISelectableComposite#setSelected(boolean)
-        */
+       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);
+           }
+       }
+
        /** {@inheritDoc} */
        @Override
     public void setSelected(boolean selected) {
        /** {@inheritDoc} */
        @Override
     public void setSelected(boolean selected) {
@@ -171,9 +173,6 @@ public abstract class AbstractCdmDetailElement<T> extends AbstractCdmFormElement
                }
        }
 
                }
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled()
-        */
        @Override
        public boolean isEnabled() {
            return enabled;
        @Override
        public boolean isEnabled() {
            return enabled;
@@ -283,6 +282,7 @@ public abstract class AbstractCdmDetailElement<T> extends AbstractCdmFormElement
                if (getParentElement() instanceof AbstractCdmDetailSection) {
                        ((AbstractCdmDetailSection) getParentElement()).updateTitle();
                }
                if (getParentElement() instanceof AbstractCdmDetailSection) {
                        ((AbstractCdmDetailSection) getParentElement()).updateTitle();
                }
+               reflowParentScrolledForm(true);
        }
 
        /**
        }
 
        /**