From 8c2c5268251c5dfc086fee9a3c3a6de6fa68736e Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Thu, 17 Jul 2014 14:46:40 +0000 Subject: [PATCH] Added custom widget git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-unionwizard-widget@98759 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/custom/IconButton.html | 4 + .../client/custom/IconButton.java | 47 ++++++++++++ .../client/custom/IconButtonAppearance.java | 16 ++++ .../custom/IconButtonAppearanceDefault.java | 75 +++++++++++++++++++ .../client/custom/IconButtonStyle.css | 17 +++++ .../client/custom/IconButton.html | 4 + .../client/custom/IconButtonStyle.css | 17 +++++ 7 files changed, 180 insertions(+) create mode 100644 src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.html create mode 100644 src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.java create mode 100644 src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonAppearance.java create mode 100644 src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonAppearanceDefault.java create mode 100644 src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonStyle.css create mode 100644 src/main/resources/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.html create mode 100644 src/main/resources/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonStyle.css diff --git a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.html b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.html new file mode 100644 index 0000000..9b36b96 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.html @@ -0,0 +1,4 @@ + +
+
+
\ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.java b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.java new file mode 100644 index 0000000..9b0b48b --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.java @@ -0,0 +1,47 @@ +package org.gcube.portlets.user.td.unionwizardwidget.client.custom; + + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.HasClickHandlers; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.resources.client.ImageResource; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.google.gwt.user.client.Event; +import com.sencha.gxt.core.client.dom.XDOM; +import com.sencha.gxt.widget.core.client.Component; + +/** + * + * @author "Giancarlo Panichi" + * g.panichi@isti.cnr.it + * + */ +public class IconButton extends Component implements HasClickHandlers { + + private IconButtonAppearance appearance; + + public IconButton() { + this((IconButtonAppearance) GWT.create(IconButtonAppearanceDefault.class)); + } + + public IconButton(IconButtonAppearance appearance) { + this.appearance = appearance; + + SafeHtmlBuilder sb = new SafeHtmlBuilder(); + this.appearance.render(sb); + + setElement(XDOM.create(sb.toSafeHtml())); + sinkEvents(Event.ONCLICK); + } + + public HandlerRegistration addClickHandler(ClickHandler handler) { + return addDomHandler(handler, ClickEvent.getType()); + } + + + public void setIcon(ImageResource icon) { + appearance.onUpdateIcon(getElement(), icon); + } +} diff --git a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonAppearance.java b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonAppearance.java new file mode 100644 index 0000000..15ea2ce --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonAppearance.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.user.td.unionwizardwidget.client.custom; + +import com.google.gwt.resources.client.ImageResource; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.sencha.gxt.core.client.dom.XElement; + +/** + * + * @author "Giancarlo Panichi" + * g.panichi@isti.cnr.it + * + */ +public interface IconButtonAppearance { + void render(SafeHtmlBuilder sb); + void onUpdateIcon(XElement parent, ImageResource icon); +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonAppearanceDefault.java b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonAppearanceDefault.java new file mode 100644 index 0000000..e2cbb4f --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonAppearanceDefault.java @@ -0,0 +1,75 @@ +package org.gcube.portlets.user.td.unionwizardwidget.client.custom; + + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Element; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; +import com.google.gwt.resources.client.ImageResource; +import com.google.gwt.safehtml.shared.SafeHtml; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.google.gwt.user.client.ui.Image; +import com.sencha.gxt.core.client.XTemplates; +import com.sencha.gxt.core.client.dom.XElement; + +/** + * + * @author "Giancarlo Panichi" + * g.panichi@isti.cnr.it + * + */ +public class IconButtonAppearanceDefault implements IconButtonAppearance { + + public interface Template extends XTemplates { + @XTemplate(source = "IconButton.html") + SafeHtml template(IconButtonStyle style); + } + + public interface IconButtonStyle extends CssResource { + @ClassName("iconButton") + public String getIconButton(); + + @ClassName("iconButtonImage") + public String getIconButtonImage(); + + @ClassName("iconButtonRef") + public String getIconButtonRef(); + + } + + private final IconButtonStyle style; + private final Template template; + + public interface IconButtonResources extends ClientBundle { + public static final IconButtonResources INSTANCE = GWT.create(IconButtonResources.class); + + @Source("IconButtonStyle.css") + IconButtonStyle style(); + } + + public IconButtonAppearanceDefault() { + this(IconButtonResources.INSTANCE); + } + + public IconButtonAppearanceDefault(IconButtonResources resources) { + this.style = resources.style(); + this.style.ensureInjected(); + + this.template = GWT.create(Template.class); + } + + + + public void onUpdateIcon(XElement parent, ImageResource icon) { + XElement element = parent.selectNode("." + style.getIconButtonImage()); + Image image=new Image(icon); + Element img=image.getElement(); + img.setClassName(style.getIconButtonRef()); + element.appendChild(img); + + } + + public void render(SafeHtmlBuilder sb) { + sb.append(template.template(style)); + } +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonStyle.css b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonStyle.css new file mode 100644 index 0000000..98ef72c --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonStyle.css @@ -0,0 +1,17 @@ +@CHARSET "UTF-8"; + +.iconButton { + border: none; + font-size: 12px; + margin: 0px; + padding: 0px; +} + +.iconButton .iconButtonImage { + vertical-align: center; +} + +.iconButtonRef { + vertical-align: center; + cursor: pointer; +} \ No newline at end of file diff --git a/src/main/resources/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.html b/src/main/resources/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.html new file mode 100644 index 0000000..9b36b96 --- /dev/null +++ b/src/main/resources/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButton.html @@ -0,0 +1,4 @@ + +
+
+
\ No newline at end of file diff --git a/src/main/resources/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonStyle.css b/src/main/resources/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonStyle.css new file mode 100644 index 0000000..98ef72c --- /dev/null +++ b/src/main/resources/org/gcube/portlets/user/td/unionwizardwidget/client/custom/IconButtonStyle.css @@ -0,0 +1,17 @@ +@CHARSET "UTF-8"; + +.iconButton { + border: none; + font-size: 12px; + margin: 0px; + padding: 0px; +} + +.iconButton .iconButtonImage { + vertical-align: center; +} + +.iconButtonRef { + vertical-align: center; + cursor: pointer; +} \ No newline at end of file