import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import org.argeo.api.NodeConstants;
import org.argeo.api.NodeUtils;
-import org.argeo.cms.CmsException;
import org.argeo.cms.ui.CmsConstants;
import org.argeo.cms.ui.CmsView;
-import org.argeo.eclipse.ui.specific.UiContext;
+import org.argeo.eclipse.ui.Selected;
+import org.argeo.eclipse.ui.specific.EclipseUiSpecificUtils;
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;
public class CmsUiUtils implements CmsConstants {
// 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<String, Object> 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<String, Object> 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
public static CmsView getCmsView() {
- return UiContext.getData(CmsView.KEY);
+// return UiContext.getData(CmsView.class.getName());
+ return CmsView.getCmsView(Display.getCurrent().getActiveShell());
}
public static StringBuilder getServerBaseUrl(HttpServletRequest request) {
buf.append(':').append(url.getPort());
return buf;
} catch (MalformedURLException e) {
- throw new CmsException("Cannot extract server base URL from " + request.getRequestURL(), e);
+ throw new IllegalArgumentException("Cannot extract server base URL from " + request.getRequestURL(), e);
}
}
buf.append(getDataPath(node));
return new URL(buf.toString()).toString();
} catch (MalformedURLException e) {
- throw new CmsException("Cannot build data URL for " + node, e);
+ throw new IllegalArgumentException("Cannot build data URL for " + node, e);
}
}
@Deprecated
public static RowData ROW_DATA_16px = new RowData(16, 16);
+ /*
+ * GRID LAYOUT
+ */
public static GridLayout noSpaceGridLayout() {
return noSpaceGridLayout(new GridLayout());
}
return layout;
}
- //
- // GRID DATA
- //
public static GridData fillAll() {
return new GridData(SWT.FILL, SWT.FILL, true, true);
}
}
public static GridData fillHeight() {
- return grabWidth(SWT.FILL, SWT.FILL);
+ return grabHeight(SWT.FILL, SWT.FILL);
}
public static GridData grabHeight(int horizontalAlignment, int verticalAlignment) {
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 extends Widget> T style(T widget, String style) {
- widget.setData(CmsConstants.STYLE, style);
+ if (style == null)
+ return widget;// does nothing
+ EclipseUiSpecificUtils.setStyleData(widget, style);
+ if (widget instanceof Control) {
+ CmsView.getCmsView((Control) widget).applyStyles(widget);
+ }
return widget;
}
+ /** Style widget */
+ public static <T extends Widget> T style(T widget, CmsStyle style) {
+ return style(widget, style.toStyleClass());
+ }
+
/** Enable markups on widget */
public static <T extends Widget> T markup(T widget) {
- widget.setData(CmsConstants.MARKUP, true);
+ EclipseUiSpecificUtils.setMarkupData(widget);
return widget;
}
return text(new Text(parent, SWT.NONE), txt);
}
+ @Deprecated
public static void setItemHeight(Table table, int height) {
table.setData(CmsConstants.ITEM_HEIGHT, height);
}
}
// IMAGES
+ public static String img(Node fileNode, String width, String height) {
+ String src = NodeUtils.getDataPath(fileNode);
+ return imgBuilder(src, width, height).append("/>").toString();
+ }
+
public static String img(String src, String width, String height) {
return imgBuilder(src, width, height).append("/>").toString();
}