X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Futil%2FCmsUtils.java;h=f4004e493123c75426e3a82b10289ef7491dc516;hb=2aa6142e53fcd55622c7d58d772e76d17e916dda;hp=3bb984b6a86bfff20ec7a6d2d5aea92ead954859;hpb=b45e59192a4bb34a6b38a9bfa416b3dc3f6b7892;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/util/CmsUtils.java b/org.argeo.cms.ui/src/org/argeo/cms/util/CmsUtils.java index 3bb984b6a..f4004e493 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/util/CmsUtils.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/util/CmsUtils.java @@ -1,5 +1,6 @@ package org.argeo.cms.util; +import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; @@ -8,9 +9,7 @@ import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.servlet.http.HttpServletRequest; -import org.apache.commons.io.IOUtils; import org.argeo.cms.CmsException; -import org.argeo.cms.auth.CmsAuthenticated; import org.argeo.cms.ui.CmsConstants; import org.argeo.cms.ui.CmsView; import org.argeo.eclipse.ui.specific.UiContext; @@ -26,10 +25,13 @@ import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowData; +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. */ @@ -37,11 +39,11 @@ public class CmsUtils implements CmsConstants { // private final static Log log = LogFactory.getLog(CmsUtils.class); /** - * The CMS view related to this display, or null if none is available from - * this call. + * The CMS view related to this display, or null if none is available from this + * call. */ public static CmsView getCmsView() { - return UiContext.getData(CmsAuthenticated.KEY); + return UiContext.getData(CmsView.KEY); } public static StringBuilder getServerBaseUrl(HttpServletRequest request) { @@ -68,10 +70,6 @@ public class CmsUtils implements CmsConstants { } } - // private final static String PATH_DATA = "/data"; - // private final static String WEBDAV_PUBLIC = PATH_DATA + "/public"; - // private final static String WEBDAV_PRIVATE = PATH_DATA + "/files"; - /** A path in the node repository */ public static String getDataPath(Node node) throws RepositoryException { return getDataPath(NodeConstants.NODE, node); @@ -79,43 +77,7 @@ public class CmsUtils implements CmsConstants { public static String getDataPath(String cn, Node node) throws RepositoryException { return NodeUtils.getDataPath(cn, node); - // assert node != null; - // String userId = node.getSession().getUserID(); - // if (log.isTraceEnabled()) - // log.trace(userId + " : " + node.getPath()); - // StringBuilder buf = new StringBuilder(); - // boolean isAnonymous = - // userId.equalsIgnoreCase(NodeConstants.ROLE_ANONYMOUS); - // if (isAnonymous) - // buf.append(WEBDAV_PUBLIC); - // else - // buf.append(WEBDAV_PRIVATE); - // Session session = node.getSession(); - // Repository repository = session.getRepository(); - // String cn; - // if (repository.isSingleValueDescriptor(NodeConstants.CN)) { - // cn = repository.getDescriptor(NodeConstants.CN); - // } else { - // log.warn("No cn defined in repository, using " + NodeConstants.NODE); - // cn = NodeConstants.NODE; - // } - // return - // buf.append('/').append(cn).append('/').append(session.getWorkspace().getName()).append(node.getPath()) - // .toString(); } - // - // public static String getCanonicalUrl(Node node, HttpServletRequest - // request) throws RepositoryException { - // try { - // StringBuilder buf = getServerBaseUrl(request); - // buf.append('/').append('!').append(node.getPath()); - // return new URL(buf.toString()).toString(); - // } catch (MalformedURLException e) { - // throw new CmsException("Cannot build data URL for " + node, e); - // } - // // return request.getRequestURL().append('!').append(node.getPath()) - // // .toString(); - // } /** @deprecated Use rowData16px() instead. GridData should not be reused. */ @Deprecated @@ -125,6 +87,10 @@ public class CmsUtils implements CmsConstants { return noSpaceGridLayout(new GridLayout()); } + public static GridLayout noSpaceGridLayout(int columns) { + return noSpaceGridLayout(new GridLayout(columns, false)); + } + public static GridLayout noSpaceGridLayout(GridLayout layout) { layout.horizontalSpacing = 0; layout.verticalSpacing = 0; @@ -153,41 +119,39 @@ public class CmsUtils implements CmsConstants { } /** Style widget */ - public static void style(Widget widget, String style) { + public static T style(T widget, String style) { widget.setData(CmsConstants.STYLE, style); + return widget; } /** Enable markups on widget */ - public static void markup(Widget widget) { + public static T markup(T widget) { widget.setData(CmsConstants.MARKUP, true); + return widget; + } + + /** + * Apply markup and set text on {@link Label}, {@link Button}, {@link Text}. + * + * @see #markup(Widget) + */ + public static T text(T widget, String txt) { + markup(widget); + if (widget instanceof Label) + ((Label) widget).setText(txt); + else if (widget instanceof Button) + ((Button) widget).setText(txt); + else if (widget instanceof Text) + ((Text) widget).setText(txt); + else + throw new IllegalArgumentException("Unsupported widget type " + widget.getClass()); + return widget; } public static void setItemHeight(Table table, int height) { table.setData(CmsConstants.ITEM_HEIGHT, height); } - // /** @return the path or null if not instrumented */ - // @Deprecated - // public static String getDataPath(Widget widget) { - // // JCR item - // Object data = widget.getData(); - // if (data != null && data instanceof Item) { - // try { - // return ((Item) data).getPath(); - // } catch (RepositoryException e) { - // throw new CmsException("Cannot find data path of " + data + " for " + - // widget); - // } - // } - // - // // JCR path - // data = widget.getData(Property.JCR_PATH); - // if (data != null) - // return data.toString(); - // - // return null; - // } - /** Dispose all children of a Composite */ public static void clear(Composite composite) { for (Control child : composite.getChildren()) @@ -257,10 +221,28 @@ public class CmsUtils implements CmsConstants { Image image = new Image(Display.getCurrent(), scaled); return image; } finally { - IOUtils.closeQuietly(in); + try { + in.close(); + } catch (IOException e) { + // silent + } } } + /** Lorem ipsum text to be used during development. */ + public final static String LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Etiam eleifend hendrerit sem, ac ultricies massa ornare ac." + + " Cras aliquam sodales risus, vitae varius lacus molestie quis." + + " Vivamus consequat, leo id lacinia volutpat, eros diam efficitur urna, finibus interdum risus turpis at nisi." + + " Curabitur vulputate nulla quis scelerisque fringilla. Integer consectetur turpis id lobortis accumsan." + + " Pellentesque commodo turpis ac diam ultricies dignissim." + + " Curabitur sit amet dolor volutpat lacus aliquam ornare quis sed velit." + + " Integer varius quis est et tristique." + + " Suspendisse pharetra porttitor purus, eget condimentum magna." + + " Duis vitae turpis eros. Sed tincidunt lacinia rutrum." + + " Aliquam velit velit, rutrum ut augue sed, condimentum lacinia augue."; + + /** Singleton. */ private CmsUtils() { } }