2 * Copyright 2011-2012 GRNET S.A. All rights reserved.
\r
4 * Redistribution and use in source and binary forms, with or
\r
5 * without modification, are permitted provided that the following
\r
6 * conditions are met:
\r
8 * 1. Redistributions of source code must retain the above
\r
9 * copyright notice, this list of conditions and the following
\r
12 * 2. Redistributions in binary form must reproduce the above
\r
13 * copyright notice, this list of conditions and the following
\r
14 * disclaimer in the documentation and/or other materials
\r
15 * provided with the distribution.
\r
17 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
\r
18 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
\r
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
\r
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
\r
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
\r
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
\r
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
\r
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
\r
25 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
\r
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
\r
27 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
\r
28 * POSSIBILITY OF SUCH DAMAGE.
\r
30 * The views and conclusions contained in the software and
\r
31 * documentation are those of the authors and should not be
\r
32 * interpreted as representing official policies, either expressed
\r
33 * or implied, of GRNET S.A.
\r
35 package gr.grnet.pithos.web.client;
\r
37 import gr.grnet.pithos.web.client.animation.FadeIn;
\r
38 import gr.grnet.pithos.web.client.animation.FadeOut;
\r
40 import com.google.gwt.core.client.GWT;
\r
41 import com.google.gwt.event.dom.client.ClickEvent;
\r
42 import com.google.gwt.event.dom.client.ClickHandler;
\r
43 import com.google.gwt.resources.client.ClientBundle;
\r
44 import com.google.gwt.resources.client.ImageResource;
\r
45 import com.google.gwt.user.client.Window;
\r
46 import com.google.gwt.user.client.ui.AbstractImagePrototype;
\r
47 import com.google.gwt.user.client.ui.Composite;
\r
48 import com.google.gwt.user.client.ui.HTML;
\r
49 import com.google.gwt.user.client.ui.HasHorizontalAlignment;
\r
50 import com.google.gwt.user.client.ui.HasVerticalAlignment;
\r
51 import com.google.gwt.user.client.ui.HorizontalPanel;
\r
52 import com.google.gwt.user.client.ui.SimplePanel;
\r
53 import com.google.gwt.user.client.ui.VerticalPanel;
\r
56 * A panel that displays various system messages.
\r
58 public class MessagePanel extends Composite {
\r
60 * An image bundle for this widget's images.
\r
62 public interface Images extends ClientBundle {
\r
63 @Source("gr/grnet/pithos/resources/messagebox_info.png")
\r
64 ImageResource info();
\r
66 @Source("gr/grnet/pithos/resources/messagebox_warning.png")
\r
67 ImageResource warn();
\r
69 @Source("gr/grnet/pithos/resources/messagebox_critical.png")
\r
70 ImageResource error();
\r
74 * The widget's images.
\r
76 public static Images images;
\r
79 * The system message to be displayed.
\r
81 private HTML message;
\r
84 * The panel that contains the messages.
\r
86 private HorizontalPanel inner;
\r
89 * The panel that enables special effects for this widget.
\r
91 protected SimplePanel simplePanel;
\r
94 * A link to send feedBack about the error.
\r
96 private HTML feedbackLink;
\r
101 * The widget's constructor.
\r
103 * @param newImages a bundle that provides the images for this widget
\r
105 public MessagePanel(Pithos _app, final Images newImages) {
\r
107 images = newImages;
\r
108 simplePanel = new SimplePanel();
\r
109 simplePanel.setStyleName("effectPanel");
\r
111 inner = new HorizontalPanel();
\r
112 inner.setStyleName("effectPanel-inner");
\r
113 inner.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
\r
114 inner.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
\r
116 message = new HTML(" ");
\r
117 message.addClickHandler(new ClickHandler() {
\r
120 public void onClick(ClickEvent event) {
\r
121 FadeOut anim = new FadeOut(simplePanel){
\r
124 protected void onComplete() {
\r
125 super.onComplete();
\r
132 inner.add(message);
\r
133 inner.setCellVerticalAlignment(message, HasVerticalAlignment.ALIGN_MIDDLE);
\r
135 VerticalPanel linkPanel = new VerticalPanel();
\r
136 linkPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
\r
138 * A link to clear the displayed message.
\r
140 HTML clearMessageLink = new HTML("<a class='pithos-clearMessage' href='javascript:;'>Clear</a>");
\r
141 clearMessageLink.addClickHandler(new ClickHandler() {
\r
144 public void onClick(ClickEvent event) {
\r
145 FadeOut anim = new FadeOut(simplePanel){
\r
147 protected void onComplete() {
\r
148 super.onComplete();
\r
155 linkPanel.add(clearMessageLink);
\r
157 feedbackLink = new HTML("<a class='pithos-clearMessage' href='javascript:;'>Send feedback</a>");
\r
158 feedbackLink.addClickHandler(new ClickHandler() {
\r
161 public void onClick(ClickEvent event) {
\r
162 new FeedbackDialog(app, app.getErrorData()).center();
\r
165 feedbackLink.setVisible(false);
\r
166 linkPanel.add(feedbackLink);
\r
168 inner.add(linkPanel);
\r
169 simplePanel.add(inner);
\r
171 initWidget(simplePanel);
\r
175 * Display an error message.
\r
177 * @param msg the message to display
\r
179 public void displayError(final String msg) {
\r
180 GWT.log(msg, null);
\r
181 message.setHTML("<table class='pithos-errorMessage'><tr><td>" + AbstractImagePrototype.create(images.error()).getHTML() + "</td><td>" + msg + "</td></tr></table>");
\r
182 feedbackLink.setVisible(true);
\r
184 FadeIn anim = new FadeIn(simplePanel);
\r
189 * Display a warning message.
\r
191 * @param msg the message to display
\r
193 public void displayWarning(final String msg) {
\r
194 message.setHTML("<table class='pithos-warnMessage'><tr><td>" + AbstractImagePrototype.create(images.warn()).getHTML() + "</td><td>" + msg + "</td></tr></table>");
\r
195 feedbackLink.setVisible(false);
\r
197 FadeIn anim = new FadeIn(simplePanel);
\r
202 * Display an informational message.
\r
204 * @param msg the message to display
\r
206 public void displayInformation(final String msg) {
\r
207 message.setHTML("<table class='pithos-infoMessage'><tr><td>" + AbstractImagePrototype.create(images.info()).getHTML() + "</td><td>" + msg + "</td></tr></table>");
\r
208 feedbackLink.setVisible(false);
\r
210 FadeIn anim = new FadeIn(simplePanel);
\r
215 * Clear the displayed message and hide the panel.
\r
217 public void hideMessage() {
\r
218 message = new HTML(" ");
\r
219 this.setVisible(false);
\r
220 app.onWindowResized(Window.getClientHeight());
\r