Updated webAppCreator to include a much better error handling message when an RPC error occurs.

Patch by: jlabanca
Review by: bruce
Issue: 3395



git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4897 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/tools/AppClassTemplate.javasrc b/user/src/com/google/gwt/user/tools/AppClassTemplate.javasrc
index d18ab20..433a4d0 100644
--- a/user/src/com/google/gwt/user/tools/AppClassTemplate.javasrc
+++ b/user/src/com/google/gwt/user/tools/AppClassTemplate.javasrc
@@ -7,7 +7,6 @@
 import com.google.gwt.event.dom.client.KeyCodes;
 import com.google.gwt.event.dom.client.KeyUpEvent;
 import com.google.gwt.event.dom.client.KeyUpHandler;
-import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.DialogBox;
@@ -21,6 +20,13 @@
  * Entry point classes define <code>onModuleLoad()</code>.
  */
 public class @moduleShortName implements EntryPoint {
+  /**
+   * The message displayed to the user when the server cannot be reached or
+   * returns an error.
+   */
+  private static final String SERVER_ERROR = "An error occurred while "
+      + "attempting to contact the server. Please check your network "
+      + "connection and try again.";
 
   /**
    * Create a remote service proxy to talk to the server-side Greeting service.
@@ -103,11 +109,17 @@
         serverResponseLabel.setText("");
         greetingService.greetServer(textToServer, new AsyncCallback<String>() {
           public void onFailure(Throwable caught) {
-            Window.alert("Rpc failure");
-            sendButton.setEnabled(true);
+            // Show the RPC error message to the user
+            dialogBox.setText("Remote Procedure Call - Failure");
+            serverResponseLabel.addStyleName("serverResponseLabelError");
+            serverResponseLabel.setHTML(SERVER_ERROR);
+            dialogBox.center();
+            closeButton.setFocus(true);
           }
 
           public void onSuccess(String result) {
+            dialogBox.setText("Remote Procedure Call");
+            serverResponseLabel.removeStyleName("serverResponseLabelError");
             serverResponseLabel.setHTML(result);
             dialogBox.center();
             closeButton.setFocus(true);
diff --git a/user/src/com/google/gwt/user/tools/AppCss.csssrc b/user/src/com/google/gwt/user/tools/AppCss.csssrc
index d1e1ad4..7aca7ac 100644
--- a/user/src/com/google/gwt/user/tools/AppCss.csssrc
+++ b/user/src/com/google/gwt/user/tools/AppCss.csssrc
@@ -24,6 +24,10 @@
   margin: 5px;
 }
 
+.serverResponseLabelError {
+  color: red;
+}
+
 /** Set ids using widget.getElement().setId("idOfElement") */
 #closeButton {
   margin: 15px 6px 6px;