Massive Argeo APIs refactoring
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / widgets / StyledControl.java
index 1814131f4b39d5f8bc32dc73a572512ec2d405fb..e3a5cb473d588fa47254ddb752773f04fda823d1 100644 (file)
@@ -2,8 +2,8 @@ package org.argeo.cms.ui.widgets;
 
 import javax.jcr.Item;
 
-import org.argeo.cms.ui.CmsConstants;
-import org.argeo.cms.ui.util.CmsUiUtils;
+import org.argeo.cms.swt.CmsSwtUtils;
+import org.argeo.cms.ui.CmsUiConstants;
 import org.argeo.eclipse.ui.specific.EclipseUiSpecificUtils;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.FocusListener;
@@ -12,7 +12,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 
 /** Editable text part displaying styled text. */
-public abstract class StyledControl extends JcrComposite implements CmsConstants {
+public abstract class StyledControl extends JcrComposite implements CmsUiConstants {
        private static final long serialVersionUID = -6372283442330912755L;
        private Control control;
 
@@ -24,9 +24,11 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants
 
        private Boolean editing = Boolean.FALSE;
 
+       private Composite ancestorToLayout;
+
        public StyledControl(Composite parent, int swtStyle) {
                super(parent, swtStyle);
-               setLayout(CmsUiUtils.noSpaceGridLayout());
+               setLayout(CmsSwtUtils.noSpaceGridLayout());
        }
 
        public StyledControl(Composite parent, int style, Item item) {
@@ -42,15 +44,15 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants
        protected Composite createBox() {
                Composite box = new Composite(container, SWT.INHERIT_DEFAULT);
                setContainerLayoutData(box);
-               box.setLayout(CmsUiUtils.noSpaceGridLayout(3));
+               box.setLayout(CmsSwtUtils.noSpaceGridLayout(3));
                return box;
        }
 
        protected Composite createContainer() {
-               Composite box = new Composite(this, SWT.INHERIT_DEFAULT);
-               setContainerLayoutData(box);
-               box.setLayout(CmsUiUtils.noSpaceGridLayout());
-               return box;
+               Composite container = new Composite(this, SWT.INHERIT_DEFAULT);
+               setContainerLayoutData(container);
+               container.setLayout(CmsSwtUtils.noSpaceGridLayout());
+               return container;
        }
 
        public Control getControl() {
@@ -67,8 +69,7 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants
                // int height = control.getSize().y;
                String style = (String) EclipseUiSpecificUtils.getStyleData(control);
                clear(false);
-               control = createControl(box, style);
-               setControlLayoutData(control);
+               refreshControl(style);
 
                // add the focus listener to the newly created edition control
                if (focusListener != null)
@@ -80,8 +81,16 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants
                editing = false;
                String style = (String) EclipseUiSpecificUtils.getStyleData(control);
                clear(false);
+               refreshControl(style);
+       }
+
+       protected void refreshControl(String style) {
                control = createControl(box, style);
                setControlLayoutData(control);
+               if (ancestorToLayout != null)
+                       ancestorToLayout.layout(true, true);
+               else
+                       getParent().layout(true, true);
        }
 
        public void setStyle(String style) {
@@ -91,26 +100,23 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants
                if (currentStyle != null && currentStyle.equals(style))
                        return;
 
-               // Integer preferredHeight = control != null ? control.getSize().y :
-               // null;
                clear(true);
-               control = createControl(box, style);
-               setControlLayoutData(control);
+               refreshControl(style);
 
                if (style != null) {
-                       CmsUiUtils.style(box, style + "_box");
-                       CmsUiUtils.style(container, style + "_container");
+                       CmsSwtUtils.style(box, style + "_box");
+                       CmsSwtUtils.style(container, style + "_container");
                }
        }
 
        /** To be overridden */
        protected void setControlLayoutData(Control control) {
-               control.setLayoutData(CmsUiUtils.fillWidth());
+               control.setLayoutData(CmsSwtUtils.fillWidth());
        }
 
        /** To be overridden */
        protected void setContainerLayoutData(Composite composite) {
-               composite.setLayoutData(CmsUiUtils.fillWidth());
+               composite.setLayoutData(CmsSwtUtils.fillWidth());
        }
 
        protected void clear(boolean deep) {
@@ -139,4 +145,9 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants
                if (control != null && this.focusListener != null)
                        control.addFocusListener(focusListener);
        }
+
+       public void setAncestorToLayout(Composite ancestorToLayout) {
+               this.ancestorToLayout = ancestorToLayout;
+       }
+
 }