2 * Copyright (c) 2011 Greek Research and Technology Network
\r
4 package gr.grnet.pithos.web.client;
\r
6 import gr.grnet.pithos.web.client.animation.FadeIn;
\r
7 import gr.grnet.pithos.web.client.animation.FadeOut;
\r
9 import com.google.gwt.core.client.GWT;
\r
10 import com.google.gwt.event.dom.client.ClickEvent;
\r
11 import com.google.gwt.event.dom.client.ClickHandler;
\r
12 import com.google.gwt.resources.client.ClientBundle;
\r
13 import com.google.gwt.resources.client.ImageResource;
\r
14 import com.google.gwt.user.client.DOM;
\r
15 import com.google.gwt.user.client.ui.AbstractImagePrototype;
\r
16 import com.google.gwt.user.client.ui.Composite;
\r
17 import com.google.gwt.user.client.ui.HTML;
\r
18 import com.google.gwt.user.client.ui.HasHorizontalAlignment;
\r
19 import com.google.gwt.user.client.ui.HasVerticalAlignment;
\r
20 import com.google.gwt.user.client.ui.HorizontalPanel;
\r
21 import com.google.gwt.user.client.ui.SimplePanel;
\r
24 * A panel that displays various system messages.
\r
26 public class MessagePanel extends Composite {
\r
28 * An image bundle for this widget's images.
\r
30 public interface Images extends ClientBundle {
\r
31 @Source("gr/grnet/pithos/resources/messagebox_info.png")
\r
32 ImageResource info();
\r
34 @Source("gr/grnet/pithos/resources/messagebox_warning.png")
\r
35 ImageResource warn();
\r
37 @Source("gr/grnet/pithos/resources/messagebox_critical.png")
\r
38 ImageResource error();
\r
42 * The widget's images.
\r
44 public static Images images;
\r
47 * The system message to be displayed.
\r
49 private HTML message = new HTML(" ");
\r
52 * A link to clear the displayed message.
\r
54 private HTML clearMessageLink = new HTML("<a class='pithos-clearMessage' href='javascript:;'>Clear</a>");
\r
57 * The panel that contains the messages.
\r
59 private HorizontalPanel inner = new HorizontalPanel();
\r
62 * The panel that enables special effects for this widget.
\r
64 private SimplePanel simplePanel = new SimplePanel();
\r
67 * The widget's constructor.
\r
69 * @param newImages a bundle that provides the images for this widget
\r
71 public MessagePanel(final Images newImages) {
\r
74 simplePanel.setStyleName("effectPanel");
\r
75 inner.setStyleName("effectPanel-inner");
\r
76 DOM.setStyleAttribute(simplePanel.getElement(), "zoom", "1");
\r
77 simplePanel.add(inner);
\r
78 initWidget(simplePanel);
\r
82 * Build the panel that contains the icon, the message and the 'clear' link.
\r
84 private void buildPanel() {
\r
85 inner.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
\r
86 inner.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
\r
87 inner.setSpacing(4);
\r
89 inner.add(clearMessageLink);
\r
90 inner.setCellVerticalAlignment(message, HasVerticalAlignment.ALIGN_MIDDLE);
\r
91 clearMessageLink.addClickHandler(new ClickHandler() {
\r
94 public void onClick(ClickEvent event) {
\r
95 FadeOut anim = new FadeOut(simplePanel){
\r
97 protected void onComplete() {
\r
108 * Display an error message.
\r
110 * @param msg the message to display
\r
112 public void displayError(final String msg) {
\r
113 GWT.log(msg, null);
\r
114 message = new HTML("<table class='pithos-errorMessage'><tr><td>" + AbstractImagePrototype.create(images.error()).getHTML() + "</td><td>" + msg + "</td></tr></table>");
\r
115 message.addClickHandler(new ClickHandler() {
\r
118 public void onClick(ClickEvent event) {
\r
119 FadeOut anim = new FadeOut(simplePanel){
\r
122 protected void onComplete() {
\r
123 super.onComplete();
\r
132 FadeIn anim = new FadeIn(simplePanel);
\r
137 * Display a warning message.
\r
139 * @param msg the message to display
\r
141 public void displayWarning(final String msg) {
\r
142 message = new HTML("<table class='pithos-warnMessage'><tr><td>" + AbstractImagePrototype.create(images.warn()).getHTML() + "</td><td>" + msg + "</td></tr></table>");
\r
143 message.addClickHandler(new ClickHandler() {
\r
146 public void onClick(ClickEvent event) {
\r
147 FadeOut anim = new FadeOut(simplePanel){
\r
150 protected void onComplete() {
\r
151 super.onComplete();
\r
161 FadeIn anim = new FadeIn(simplePanel);
\r
166 * Display an informational message.
\r
168 * @param msg the message to display
\r
170 public void displayInformation(final String msg) {
\r
171 message = new HTML("<table class='pithos-infoMessage'><tr><td>" + AbstractImagePrototype.create(images.info()).getHTML() + "</td><td>" + msg + "</td></tr></table>");
\r
172 message.addClickHandler(new ClickHandler() {
\r
175 public void onClick(ClickEvent event) {
\r
176 FadeOut anim = new FadeOut(simplePanel){
\r
179 protected void onComplete() {
\r
180 super.onComplete();
\r
190 FadeIn anim = new FadeIn(simplePanel);
\r
195 * Clear the displayed message and hide the panel.
\r
197 public void hideMessage() {
\r
199 message = new HTML(" ");
\r
200 this.setVisible(false);
\r