Introduce Makefile for Java build
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / widgets / StyledControl.java
index 5dde1f63708e161a26428521d8749924341f52e1..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,14 +44,14 @@ 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 container = new Composite(this, SWT.INHERIT_DEFAULT);
                setContainerLayoutData(container);
-               container.setLayout(CmsUiUtils.noSpaceGridLayout());
+               container.setLayout(CmsSwtUtils.noSpaceGridLayout());
                return container;
        }
 
@@ -81,11 +83,14 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants
                clear(false);
                refreshControl(style);
        }
-       
+
        protected void refreshControl(String style) {
                control = createControl(box, style);
                setControlLayoutData(control);
-               getParent().layout(true, true);
+               if (ancestorToLayout != null)
+                       ancestorToLayout.layout(true, true);
+               else
+                       getParent().layout(true, true);
        }
 
        public void setStyle(String style) {
@@ -99,19 +104,19 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants
                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) {
@@ -140,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;
+       }
+
 }