X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Futil%2FCmsLink.java;fp=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Futil%2FCmsLink.java;h=4cad1de60fa74eb2f2fb487a6bd6dd008d5b7b63;hb=043d226a5504a212eb5673c3ed4441c1167724d7;hp=b3c4a8a579914f665469004d2ba4cafe9150e74a;hpb=cdc0e2725f4ec174309c3fdcd060f80753210c00;p=lgpl%2Fargeo-commons.git
diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/util/CmsLink.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/util/CmsLink.java
index b3c4a8a57..4cad1de60 100644
--- a/org.argeo.cms.ui/src/org/argeo/cms/ui/util/CmsLink.java
+++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/util/CmsLink.java
@@ -1,5 +1,6 @@
package org.argeo.cms.ui.util;
+import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
@@ -7,14 +8,12 @@ import java.net.URL;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
-import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.argeo.api.NodeUtils;
-import org.argeo.cms.CmsException;
import org.argeo.cms.auth.CurrentUser;
-import org.argeo.cms.ui.CmsStyles;
import org.argeo.cms.ui.CmsUiProvider;
+import org.argeo.jcr.JcrException;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.rap.rwt.service.ResourceManager;
import org.eclipse.swt.SWT;
@@ -32,9 +31,10 @@ public class CmsLink implements CmsUiProvider {
private BundleContext bundleContext;
private String label;
- private String custom;
+ private String style;
private String target;
private String image;
+ private boolean openNew = false;
private MouseListener mouseListener;
private int horizontalAlignment = SWT.CENTER;
@@ -52,14 +52,18 @@ public class CmsLink implements CmsUiProvider {
}
public CmsLink(String label, String target) {
- this(label, target, null);
+ this(label, target, (String) null);
}
- public CmsLink(String label, String target, String custom) {
+ public CmsLink(String label, String target, CmsStyle style) {
+ this(label, target, style != null ? style.style() : null);
+ }
+
+ public CmsLink(String label, String target, String style) {
super();
this.label = label;
this.target = target;
- this.custom = custom;
+ this.style = style;
init();
}
@@ -89,7 +93,7 @@ public class CmsLink implements CmsUiProvider {
comp.setLayout(CmsUiUtils.noSpaceGridLayout());
Label link = new Label(comp, SWT.NONE);
- link.setData(RWT.MARKUP_ENABLED, Boolean.TRUE);
+ CmsUiUtils.markup(link);
GridData layoutData = new GridData(horizontalAlignment, verticalAlignment, false, false);
if (image != null) {
if (imageHeight != null)
@@ -100,13 +104,8 @@ public class CmsLink implements CmsUiProvider {
}
link.setLayoutData(layoutData);
- if (custom != null) {
- comp.setData(RWT.CUSTOM_VARIANT, custom);
- link.setData(RWT.CUSTOM_VARIANT, custom);
- } else {
- comp.setData(RWT.CUSTOM_VARIANT, CmsStyles.CMS_LINK);
- link.setData(RWT.CUSTOM_VARIANT, CmsStyles.CMS_LINK);
- }
+ CmsUiUtils.style(comp, style != null ? style : getDefaultStyle());
+ CmsUiUtils.style(link, style != null ? style : getDefaultStyle());
// label
StringBuilder labelText = new StringBuilder();
@@ -118,16 +117,19 @@ public class CmsLink implements CmsUiProvider {
String homePath = homeNode.getPath();
labelText.append("/#" + homePath);
} catch (RepositoryException e) {
- throw new CmsException("Cannot get home path", e);
+ throw new JcrException("Cannot get home path", e);
}
} else {
labelText.append(loggedInTarget);
}
labelText.append("\">");
} else if (target != null) {
- labelText.append("");
+ labelText.append("");
}
if (image != null) {
registerImageIfNeeded();
@@ -162,17 +164,12 @@ public class CmsLink implements CmsUiProvider {
ResourceManager resourceManager = RWT.getResourceManager();
if (!resourceManager.isRegistered(image)) {
URL res = getImageUrl();
- InputStream inputStream = null;
- try {
- IOUtils.closeQuietly(inputStream);
- inputStream = res.openStream();
+ try (InputStream inputStream = res.openStream()) {
resourceManager.register(image, inputStream);
if (log.isTraceEnabled())
log.trace("Registered image " + image);
- } catch (Exception e) {
- throw new CmsException("Cannot load image " + image, e);
- } finally {
- IOUtils.closeQuietly(inputStream);
+ } catch (IOException e) {
+ throw new RuntimeException("Cannot load image " + image, e);
}
}
}
@@ -180,16 +177,12 @@ public class CmsLink implements CmsUiProvider {
private ImageData loadImage() {
URL url = getImageUrl();
ImageData result = null;
- InputStream inputStream = null;
- try {
- inputStream = url.openStream();
+ try (InputStream inputStream = url.openStream()) {
result = new ImageData(inputStream);
if (log.isTraceEnabled())
log.trace("Loaded image " + image);
- } catch (Exception e) {
- throw new CmsException("Cannot load image " + image, e);
- } finally {
- IOUtils.closeQuietly(inputStream);
+ } catch (IOException e) {
+ throw new RuntimeException("Cannot load image " + image, e);
}
return result;
}
@@ -204,7 +197,7 @@ public class CmsLink implements CmsUiProvider {
}
if (url == null)
- throw new CmsException("No image " + image + " available.");
+ throw new IllegalStateException("No image " + image + " available.");
return url;
}
@@ -217,8 +210,14 @@ public class CmsLink implements CmsUiProvider {
this.label = label;
}
+ public void setStyle(String style) {
+ this.style = style;
+ }
+
+ /** @deprecated Use {@link #setStyle(String)} instead. */
+ @Deprecated
public void setCustom(String custom) {
- this.custom = custom;
+ this.style = custom;
}
public void setTarget(String target) {
@@ -255,7 +254,8 @@ public class CmsLink implements CmsUiProvider {
} else if ("center".equals(vAlign)) {
verticalAlignment = SWT.CENTER;
} else {
- throw new CmsException("Unsupported vertical allignment " + vAlign + " (must be: top, bottom or center)");
+ throw new IllegalArgumentException(
+ "Unsupported vertical alignment " + vAlign + " (must be: top, bottom or center)");
}
}
@@ -271,4 +271,11 @@ public class CmsLink implements CmsUiProvider {
this.imageHeight = imageHeight;
}
+ public void setOpenNew(boolean openNew) {
+ this.openNew = openNew;
+ }
+
+ protected String getDefaultStyle() {
+ return SimpleStyle.link.name();
+ }
}