Merge branch 'release-0.15' into debian-release-0.15
[pithos-web-client] / src / gr / grnet / pithos / web / client / MessagePanel.java
index 385d026..0cc44e5 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * Copyright 2011 GRNET S.A. All rights reserved.\r
+ * Copyright 2011-2013 GRNET S.A. All rights reserved.\r
  *\r
  * Redistribution and use in source and binary forms, with or\r
  * without modification, are permitted provided that the following\r
  */\r
 package gr.grnet.pithos.web.client;\r
 \r
-import gr.grnet.pithos.web.client.animation.FadeIn;\r
-import gr.grnet.pithos.web.client.animation.FadeOut;\r
-\r
 import com.google.gwt.core.client.GWT;\r
 import com.google.gwt.event.dom.client.ClickEvent;\r
 import com.google.gwt.event.dom.client.ClickHandler;\r
 import com.google.gwt.resources.client.ClientBundle;\r
 import com.google.gwt.resources.client.ImageResource;\r
-import com.google.gwt.user.client.DOM;\r
+import com.google.gwt.user.client.Window;\r
 import com.google.gwt.user.client.ui.AbstractImagePrototype;\r
 import com.google.gwt.user.client.ui.Composite;\r
 import com.google.gwt.user.client.ui.HTML;\r
@@ -50,6 +47,7 @@ import com.google.gwt.user.client.ui.HasHorizontalAlignment;
 import com.google.gwt.user.client.ui.HasVerticalAlignment;\r
 import com.google.gwt.user.client.ui.HorizontalPanel;\r
 import com.google.gwt.user.client.ui.SimplePanel;\r
+import com.google.gwt.user.client.ui.VerticalPanel;\r
 \r
 /**\r
  * A panel that displays various system messages.\r
@@ -77,62 +75,82 @@ public class MessagePanel extends Composite {
        /**\r
         * The system message to be displayed.\r
         */\r
-       private HTML message = new HTML(" ");\r
-\r
-       /**\r
-        * A link to clear the displayed message.\r
-        */\r
-       private HTML clearMessageLink = new HTML("<a class='pithos-clearMessage' href='javascript:;'>Clear</a>");\r
+       private HTML message;\r
 \r
        /**\r
         * The panel that contains the messages.\r
         */\r
-       private HorizontalPanel inner = new HorizontalPanel();\r
+       private HorizontalPanel inner;\r
 \r
        /**\r
         * The panel that enables special effects for this widget.\r
         */\r
-       private SimplePanel simplePanel = new SimplePanel();\r
+       protected SimplePanel simplePanel;\r
 \r
        /**\r
+        * A link to send feedBack about the error.\r
+        */\r
+       private HTML feedbackLink;\r
+       \r
+       Pithos app;\r
+       \r
+       /**\r
         * The widget's constructor.\r
         *\r
         * @param newImages a bundle that provides the images for this widget\r
         */\r
-       public MessagePanel(final Images newImages) {\r
+       public MessagePanel(Pithos _app, final Images newImages) {\r
+               app = _app;\r
                images = newImages;\r
-               buildPanel();\r
+               simplePanel = new SimplePanel();\r
                simplePanel.setStyleName("effectPanel");\r
+               \r
+               inner = new HorizontalPanel();\r
                inner.setStyleName("effectPanel-inner");\r
-               DOM.setStyleAttribute(simplePanel.getElement(), "zoom", "1");\r
-               simplePanel.add(inner);\r
-               initWidget(simplePanel);\r
-       }\r
-\r
-       /**\r
-        * Build the panel that contains the icon, the message and the 'clear' link.\r
-        */\r
-       private void buildPanel() {\r
                inner.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);\r
                inner.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);\r
-               inner.setSpacing(4);\r
+               \r
+               message = new HTML("&nbsp;");\r
+               message.addClickHandler(new ClickHandler() {\r
+\r
+                       @Override\r
+                       public void onClick(ClickEvent event) {\r
+                               hideMessage();\r
+                       }\r
+               });\r
                inner.add(message);\r
-               inner.add(clearMessageLink);\r
                inner.setCellVerticalAlignment(message, HasVerticalAlignment.ALIGN_MIDDLE);\r
+\r
+               VerticalPanel linkPanel = new VerticalPanel();\r
+               linkPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);\r
+               /**\r
+                * A link to clear the displayed message.\r
+                */\r
+               HTML clearMessageLink = new HTML("<a class='pithos-clearMessage' href='javascript:;'>Clear</a>");\r
                clearMessageLink.addClickHandler(new ClickHandler() {\r
 \r
                        @Override\r
                        public void onClick(ClickEvent event) {\r
-                               FadeOut anim = new FadeOut(simplePanel){\r
-                                       @Override\r
-                                       protected void onComplete() {\r
-                                               super.onComplete();\r
-                                               hideMessage();\r
-                                       }\r
-                               };\r
-                               anim.run(500);\r
+                               hideMessage();\r
+                       }\r
+               });\r
+               linkPanel.add(clearMessageLink);\r
+\r
+               feedbackLink = new HTML("<a class='pithos-clearMessage' href='javascript:;'>Send feedback</a>");\r
+               feedbackLink.addClickHandler(new ClickHandler() {\r
+                       \r
+                       @Override\r
+                       public void onClick(ClickEvent event) {\r
+                               new FeedbackDialog(app, app.getErrorData()).center();\r
                        }\r
                });\r
+               feedbackLink.setVisible(false);\r
+               linkPanel.add(feedbackLink);\r
+\r
+               inner.add(linkPanel);\r
+               simplePanel.add(inner);\r
+               \r
+               initWidget(simplePanel);\r
        }\r
 \r
        /**\r
@@ -142,26 +160,9 @@ public class MessagePanel extends Composite {
         */\r
        public void displayError(final String msg) {\r
                GWT.log(msg, null);\r
-               message = new HTML("<table class='pithos-errorMessage'><tr><td>" + AbstractImagePrototype.create(images.error()).getHTML() + "</td><td>" + msg + "</td></tr></table>");\r
-               message.addClickHandler(new ClickHandler() {\r
-\r
-                       @Override\r
-                       public void onClick(ClickEvent event) {\r
-                               FadeOut anim = new FadeOut(simplePanel){\r
-\r
-                                       @Override\r
-                                       protected void onComplete() {\r
-                                               super.onComplete();\r
-                                               hideMessage();\r
-                                       }\r
-                               };\r
-                               anim.run(500);\r
-                       }\r
-               });\r
-               buildPanel();\r
+               message.setHTML("<table class='pithos-errorMessage'><tr><td>" + AbstractImagePrototype.create(images.error()).getHTML() + "</td><td>" + msg + "</td></tr></table>");\r
+               feedbackLink.setVisible(true);\r
                setVisible(true);\r
-               FadeIn anim = new FadeIn(simplePanel);\r
-               anim.run(500);\r
        }\r
 \r
        /**\r
@@ -170,27 +171,9 @@ public class MessagePanel extends Composite {
         * @param msg the message to display\r
         */\r
        public void displayWarning(final String msg) {\r
-               message = new HTML("<table class='pithos-warnMessage'><tr><td>" + AbstractImagePrototype.create(images.warn()).getHTML() + "</td><td>" + msg + "</td></tr></table>");\r
-               message.addClickHandler(new ClickHandler() {\r
-\r
-                       @Override\r
-                       public void onClick(ClickEvent event) {\r
-                               FadeOut anim = new FadeOut(simplePanel){\r
-\r
-                                       @Override\r
-                                       protected void onComplete() {\r
-                                               super.onComplete();\r
-                                               hideMessage();\r
-                                       }\r
-                               };\r
-                               anim.run(500);\r
-                       }\r
-               });\r
-\r
-               buildPanel();\r
+               message.setHTML("<table class='pithos-warnMessage'><tr><td>" + AbstractImagePrototype.create(images.warn()).getHTML() + "</td><td>" + msg + "</td></tr></table>");\r
+               feedbackLink.setVisible(false);\r
                setVisible(true);\r
-               FadeIn anim = new FadeIn(simplePanel);\r
-               anim.run(500);\r
        }\r
 \r
        /**\r
@@ -199,36 +182,17 @@ public class MessagePanel extends Composite {
         * @param msg the message to display\r
         */\r
        public void displayInformation(final String msg) {\r
-               message = new HTML("<table class='pithos-infoMessage'><tr><td>" + AbstractImagePrototype.create(images.info()).getHTML() + "</td><td>" + msg + "</td></tr></table>");\r
-               message.addClickHandler(new ClickHandler() {\r
-\r
-                       @Override\r
-                       public void onClick(ClickEvent event) {\r
-                               FadeOut anim = new FadeOut(simplePanel){\r
-\r
-                                       @Override\r
-                                       protected void onComplete() {\r
-                                               super.onComplete();\r
-                                               hideMessage();\r
-                                       }\r
-                               };\r
-                               anim.run(500);\r
-                       }\r
-               });\r
-\r
-               buildPanel();\r
+               message.setHTML("<table class='pithos-infoMessage'><tr><td>" + AbstractImagePrototype.create(images.info()).getHTML() + "</td><td>" + msg + "</td></tr></table>");\r
+               feedbackLink.setVisible(false);\r
                setVisible(true);\r
-               FadeIn anim = new FadeIn(simplePanel);\r
-               anim.run(500);\r
        }\r
 \r
        /**\r
         * Clear the displayed message and hide the panel.\r
         */\r
        public void hideMessage() {\r
-               inner.clear();\r
                message = new HTML("&nbsp;");\r
                this.setVisible(false);\r
+               app.onWindowResized(Window.getClientHeight());\r
        }\r
-\r
 }\r