X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Futil%2FCmsUiUtils.java;fp=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Futil%2FCmsUiUtils.java;h=ef4f7fa44b6de9f30fdff4af79ba7d37eb80f454;hb=b7683883512d924a039a43c2e1102290aa49f64d;hp=2bfeb43cfb593e7f62e6686acfe3cc55d308576c;hpb=03f646fd0d7e7ce393694c836c779bc67a4eef55;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/util/CmsUiUtils.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/util/CmsUiUtils.java index 2bfeb43cf..ef4f7fa44 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/util/CmsUiUtils.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/util/CmsUiUtils.java @@ -6,8 +6,6 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; -import java.util.HashMap; -import java.util.Map; import java.util.StringTokenizer; import javax.jcr.Node; @@ -15,74 +13,39 @@ import javax.jcr.RepositoryException; import javax.servlet.http.HttpServletRequest; import org.argeo.api.NodeConstants; +import org.argeo.api.cms.Cms2DSize; +import org.argeo.api.cms.CmsView; import org.argeo.cms.jcr.CmsJcrUtils; +import org.argeo.cms.swt.CmsSwtUtils; import org.argeo.cms.ui.CmsConstants; -import org.argeo.cms.ui.CmsView; -import org.argeo.eclipse.ui.Selected; -import org.argeo.eclipse.ui.specific.EclipseUiSpecificUtils; -import org.argeo.jcr.JcrException; import org.argeo.jcr.JcrUtils; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.service.ResourceManager; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.FormAttachment; -import org.eclipse.swt.layout.FormData; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowData; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.Text; -import org.eclipse.swt.widgets.Widget; /** Static utilities for the CMS framework. */ -public class CmsUiUtils implements CmsConstants { +public class CmsUiUtils { // private final static Log log = LogFactory.getLog(CmsUiUtils.class); /* * CMS VIEW */ - /** Sends an event via {@link CmsView#sendEvent(String, Map)}. */ - public static void sendEventOnSelect(Control control, String topic, Map properties) { - SelectionListener listener = (Selected) (e) -> { - CmsView.getCmsView(control.getParent()).sendEvent(topic, properties); - }; - if (control instanceof Button) { - ((Button) control).addSelectionListener(listener); - } else - throw new UnsupportedOperationException("Control type " + control.getClass() + " is not supported."); - } - - /** - * Convenience method to sends an event via - * {@link CmsView#sendEvent(String, Map)}. - */ - public static void sendEventOnSelect(Control control, String topic, String key, Object value) { - Map properties = new HashMap<>(); - properties.put(key, value); - sendEventOnSelect(control, topic, properties); - } - /** * The CMS view related to this display, or null if none is available from this * call. * - * @deprecated Use {@link CmsView#getCmsView(Composite)} instead. + * @deprecated Use {@link CmsSwtUtils#getCmsView(Composite)} instead. */ @Deprecated public static CmsView getCmsView() { // return UiContext.getData(CmsView.class.getName()); - return CmsView.getCmsView(Display.getCurrent().getActiveShell()); + return CmsSwtUtils.getCmsView(Display.getCurrent().getActiveShell()); } public static StringBuilder getServerBaseUrl(HttpServletRequest request) { @@ -99,7 +62,7 @@ public class CmsUiUtils implements CmsConstants { } // - public static String getDataUrl(Node node, HttpServletRequest request) throws RepositoryException { + public static String getDataUrl(Node node, HttpServletRequest request) { try { StringBuilder buf = getServerBaseUrl(request); buf.append(getDataPath(node)); @@ -110,21 +73,21 @@ public class CmsUiUtils implements CmsConstants { } /** A path in the node repository */ - public static String getDataPath(Node node) throws RepositoryException { + public static String getDataPath(Node node) { return getDataPath(NodeConstants.EGO_REPOSITORY, node); } - public static String getDataPath(String cn, Node node) throws RepositoryException { + public static String getDataPath(String cn, Node node) { return CmsJcrUtils.getDataPath(cn, node); } /** Clean reserved URL characters for use in HTTP links. */ - public static String getDataPathForUrl(Node node) throws RepositoryException { + public static String getDataPathForUrl(Node node) { return cleanPathForUrl(getDataPath(node)); } /** Clean reserved URL characters for use in HTTP links. */ - public static String cleanPathForUrl(String path) throws RepositoryException { + public static String cleanPathForUrl(String path) { StringTokenizer st = new StringTokenizer(path, "/"); StringBuilder sb = new StringBuilder(); while (st.hasMoreElements()) { @@ -141,162 +104,19 @@ public class CmsUiUtils implements CmsConstants { @Deprecated public static RowData ROW_DATA_16px = new RowData(16, 16); - /* - * GRID LAYOUT - */ - public static GridLayout noSpaceGridLayout() { - return noSpaceGridLayout(new GridLayout()); - } - - public static GridLayout noSpaceGridLayout(int columns) { - return noSpaceGridLayout(new GridLayout(columns, false)); - } - - /** @return the same layout, with spaces removed. */ - public static GridLayout noSpaceGridLayout(GridLayout layout) { - layout.horizontalSpacing = 0; - layout.verticalSpacing = 0; - layout.marginWidth = 0; - layout.marginHeight = 0; - return layout; - } - - public static GridData fillAll() { - return new GridData(SWT.FILL, SWT.FILL, true, true); - } - - public static GridData fillWidth() { - return grabWidth(SWT.FILL, SWT.FILL); - } - - public static GridData grabWidth(int horizontalAlignment, int verticalAlignment) { - return new GridData(horizontalAlignment, horizontalAlignment, true, false); - } - - public static GridData fillHeight() { - return grabHeight(SWT.FILL, SWT.FILL); - } - - public static GridData grabHeight(int horizontalAlignment, int verticalAlignment) { - return new GridData(horizontalAlignment, horizontalAlignment, false, true); - } - - /* - * ROW LAYOUT - */ - /** @return the same layout, with margins removed. */ - public static RowLayout noMarginsRowLayout(RowLayout rowLayout) { - rowLayout.marginTop = 0; - rowLayout.marginBottom = 0; - rowLayout.marginLeft = 0; - rowLayout.marginRight = 0; - return rowLayout; - } - - public static RowLayout noMarginsRowLayout(int type) { - return noMarginsRowLayout(new RowLayout(type)); - } - - public static RowData rowData16px() { - return new RowData(16, 16); - } + /* * FORM LAYOUT */ - public static FormData coverAll() { - FormData fdLabel = new FormData(); - fdLabel.top = new FormAttachment(0, 0); - fdLabel.left = new FormAttachment(0, 0); - fdLabel.right = new FormAttachment(100, 0); - fdLabel.bottom = new FormAttachment(100, 0); - return fdLabel; - } - - /* - * STYLING - */ - - /** Style widget */ - public static T style(T widget, String style) { - if (style == null) - return widget;// does nothing - EclipseUiSpecificUtils.setStyleData(widget, style); - if (widget instanceof Control) { - CmsView cmsView = CmsView.getCmsView((Control) widget); - if (cmsView != null) - cmsView.applyStyles(widget); - } - return widget; - } - - /** Style widget */ - public static T style(T widget, CmsStyle style) { - return style(widget, style.toStyleClass()); - } - - /** Enable markups on widget */ - public static T markup(T widget) { - EclipseUiSpecificUtils.setMarkupData(widget); - return widget; - } - - /** Disable markup validation. */ - public static T disableMarkupValidation(T widget) { - EclipseUiSpecificUtils.setMarkupValidationDisabledData(widget); - return widget; - } - - /** - * Apply markup and set text on {@link Label}, {@link Button}, {@link Text}. - * - * @param widget the widget to style and to use in order to display text - * @param txt the object to display via its toString() method. - * This argument should not be null, but if it is null and - * assertions are disabled "" is displayed instead; if - * assertions are enabled the call will fail. - * - * @see #markup(Widget) - */ - public static T text(T widget, Object txt) { - assert txt != null; - String str = txt != null ? txt.toString() : ""; - markup(widget); - if (widget instanceof Label) - ((Label) widget).setText(str); - else if (widget instanceof Button) - ((Button) widget).setText(str); - else if (widget instanceof Text) - ((Text) widget).setText(str); - else - throw new IllegalArgumentException("Unsupported widget type " + widget.getClass()); - return widget; - } - - /** A {@link Label} with markup activated. */ - public static Label lbl(Composite parent, Object txt) { - return text(new Label(parent, SWT.NONE), txt); - } - - /** A read-only {@link Text} whose content can be copy/pasted. */ - public static Text txt(Composite parent, Object txt) { - return text(new Text(parent, SWT.NONE), txt); - } + @Deprecated public static void setItemHeight(Table table, int height) { table.setData(CmsConstants.ITEM_HEIGHT, height); } - /** Dispose all children of a Composite */ - public static void clear(Composite composite) { - if (composite.isDisposed()) - return; - for (Control child : composite.getChildren()) - child.dispose(); - } - // // JCR // @@ -328,6 +148,7 @@ public class CmsUiUtils implements CmsConstants { } // IMAGES + public static String img(Node fileNode, String width, String height) { return img(null, fileNode, width, height); } @@ -335,11 +156,7 @@ public class CmsUiUtils implements CmsConstants { public static String img(String serverBase, Node fileNode, String width, String height) { // String src = (serverBase != null ? serverBase : "") + NodeUtils.getDataPath(fileNode); String src; - try { - src = (serverBase != null ? serverBase : "") + getDataPathForUrl(fileNode); - } catch (RepositoryException e) { - throw new JcrException("Cannot get URL data path for " + fileNode, e); - } + src = (serverBase != null ? serverBase : "") + getDataPathForUrl(fileNode); return imgBuilder(src, width, height).append("/>").toString(); } @@ -347,8 +164,8 @@ public class CmsUiUtils implements CmsConstants { return imgBuilder(src, width, height).append("/>").toString(); } - public static String img(String src, Point size) { - return img(src, Integer.toString(size.x), Integer.toString(size.y)); + public static String img(String src, Cms2DSize size) { + return img(src, Integer.toString(size.getWidth()), Integer.toString(size.getHeight())); } public static StringBuilder imgBuilder(String src, String width, String height) { @@ -356,22 +173,22 @@ public class CmsUiUtils implements CmsConstants { .append("' src='").append(src).append("'"); } - public static String noImg(Point size) { + public static String noImg(Cms2DSize size) { ResourceManager rm = RWT.getResourceManager(); - return CmsUiUtils.img(rm.getLocation(NO_IMAGE), size); + return CmsUiUtils.img(rm.getLocation(CmsConstants.NO_IMAGE), size); } public static String noImg() { - return noImg(NO_IMAGE_SIZE); + return noImg(CmsConstants.NO_IMAGE_SIZE); } - public static Image noImage(Point size) { + public static Image noImage(Cms2DSize size) { ResourceManager rm = RWT.getResourceManager(); InputStream in = null; try { - in = rm.getRegisteredContent(NO_IMAGE); + in = rm.getRegisteredContent(CmsConstants.NO_IMAGE); ImageData id = new ImageData(in); - ImageData scaled = id.scaledTo(size.x, size.y); + ImageData scaled = id.scaledTo(size.getWidth(), size.getHeight()); Image image = new Image(Display.getCurrent(), scaled); return image; } finally {