X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fwidgets%2FEditableText.java;h=5fadbc07ba436b0a0a867f4c602e3b68d3ba51df;hb=be5b6f089e1562db7344d70ff019c3f564b308c7;hp=1ae44d0f74147843243ddb54710fc45a7d819c1b;hpb=4f6cfbd6862813e917883ea93e13ee95edc1c024;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/EditableText.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/EditableText.java index 1ae44d0f7..5fadbc07b 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/EditableText.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/widgets/EditableText.java @@ -5,8 +5,7 @@ import javax.jcr.RepositoryException; import org.argeo.cms.ui.util.CmsUiUtils; import org.eclipse.swt.SWT; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.FocusListener; +import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; @@ -19,9 +18,13 @@ public class EditableText extends StyledControl { private boolean editable = true; + private Color highlightColor; + private Composite highlight; + public EditableText(Composite parent, int style) { super(parent, style); editable = !(SWT.READ_ONLY == (style & SWT.READ_ONLY)); + highlightColor = parent.getDisplay().getSystemColor(SWT.COLOR_GRAY); } public EditableText(Composite parent, int style, Item item) throws RepositoryException { @@ -31,6 +34,7 @@ public class EditableText extends StyledControl { public EditableText(Composite parent, int style, Item item, boolean cacheImmediately) throws RepositoryException { super(parent, style, item, cacheImmediately); editable = !(SWT.READ_ONLY == (style & SWT.READ_ONLY)); + highlightColor = parent.getDisplay().getSystemColor(SWT.COLOR_GRAY); } @Override @@ -46,7 +50,8 @@ public class EditableText extends StyledControl { protected Label createLabel(Composite box, String style) { Label lbl = new Label(box, getStyle() | SWT.WRAP); lbl.setLayoutData(CmsUiUtils.fillWidth()); - CmsUiUtils.style(lbl, style); + if (style != null) + CmsUiUtils.style(lbl, style); CmsUiUtils.markup(lbl); if (mouseListener != null) lbl.addMouseListener(mouseListener); @@ -54,16 +59,31 @@ public class EditableText extends StyledControl { } protected Text createText(Composite box, String style, boolean editable) { + highlight = new Composite(box, SWT.NONE); + highlight.setBackground(highlightColor); + GridData highlightGd = new GridData(SWT.FILL, SWT.FILL, false, false); + highlightGd.widthHint = 5; + highlightGd.heightHint = 3; + highlight.setLayoutData(highlightGd); + final Text text = new Text(box, getStyle() | SWT.MULTI | SWT.WRAP); text.setEditable(editable); GridData textLayoutData = CmsUiUtils.fillWidth(); // textLayoutData.heightHint = preferredHeight; text.setLayoutData(textLayoutData); - CmsUiUtils.style(text, style); + if (style != null) + CmsUiUtils.style(text, style); text.setFocus(); return text; } + @Override + protected void clear(boolean deep) { + if (highlight != null) + highlight.dispose(); + super.clear(deep); + } + public void setText(String text) { Control child = getControl(); if (child instanceof Label) @@ -82,7 +102,7 @@ public class EditableText extends StyledControl { public String getText() { Control child = getControl(); - + if (child instanceof Label) return ((Label) child).getText(); else if (child instanceof Text)