/*\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
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
/**\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(" ");\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
*/\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
* @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
* @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(" ");\r
this.setVisible(false);\r
+ app.onWindowResized(Window.getClientHeight());\r
}\r
-\r
}\r