X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fwidgets%2FStyledControl.java;h=b413faf3e59352c439ea32d69db3ac830ed44cb0;hb=c927a4902014165349575f9621bfe690c70cf67f;hp=9d7037c25a9ef315427eb0e0624d474c17fc1f01;hpb=32315b6eea1e2284e4269536b5fb7fee8cc03b8d;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/StyledControl.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/StyledControl.java index 9d7037c25..b413faf3e 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/StyledControl.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/StyledControl.java @@ -1,10 +1,10 @@ package org.argeo.cms.ui.widgets; import javax.jcr.Item; -import javax.jcr.RepositoryException; import org.argeo.cms.ui.CmsConstants; import org.argeo.cms.ui.util.CmsUiUtils; +import org.argeo.eclipse.ui.specific.EclipseUiSpecificUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.events.MouseListener; @@ -24,6 +24,8 @@ 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()); @@ -39,14 +41,20 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants protected abstract Control createControl(Composite box, String style); - protected Composite createBox(Composite parent) { - Composite box = new Composite(parent, SWT.INHERIT_DEFAULT); + protected Composite createBox() { + Composite box = new Composite(container, SWT.INHERIT_DEFAULT); setContainerLayoutData(box); - box.setLayout(CmsUiUtils.noSpaceGridLayout()); - // new Label(box, SWT.NONE).setText("BOX"); + box.setLayout(CmsUiUtils.noSpaceGridLayout(3)); return box; } + protected Composite createContainer() { + Composite container = new Composite(this, SWT.INHERIT_DEFAULT); + setContainerLayoutData(container); + container.setLayout(CmsUiUtils.noSpaceGridLayout()); + return container; + } + public Control getControl() { return control; } @@ -59,10 +67,9 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants assert !isEditing(); editing = true; // int height = control.getSize().y; - String style = (String) control.getData(STYLE); + 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) @@ -72,27 +79,34 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants public synchronized void stopEditing() { assert isEditing(); editing = false; - String style = (String) control.getData(STYLE); + 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) { Object currentStyle = null; if (control != null) - currentStyle = control.getData(STYLE); + currentStyle = EclipseUiSpecificUtils.getStyleData(control); 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); - control.getParent().setData(STYLE, style + "_box"); - control.getParent().getParent().setData(STYLE, style + "_container"); + if (style != null) { + CmsUiUtils.style(box, style + "_box"); + CmsUiUtils.style(container, style + "_container"); + } } /** To be overridden */ @@ -109,8 +123,8 @@ public abstract class StyledControl extends JcrComposite implements CmsConstants if (deep) { for (Control control : getChildren()) control.dispose(); - container = createBox(this); - box = createBox(container); + container = createContainer(); + box = createBox(); } else { control.dispose(); } @@ -131,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; + } + }