Revision: 8031
Author: [email protected]
Date: Mon May  3 15:39:10 2010
Log: Moved the showErrors method into the generator.

Patch by: amitmanjhi
Review by: rjrjr (desk review)

Review at http://gwt-code-reviews.appspot.com/451801

http://code.google.com/p/google-web-toolkit/source/detail?r=8031

Modified:
 /branches/2.1/bikeshed/src/com/google/gwt/app/client/EditorSupport.java
/branches/2.1/bikeshed/src/com/google/gwt/app/rebind/EditorSupportGenerator.java /branches/2.1/bikeshed/src/com/google/gwt/sample/expenses/gwt/ui/employee/EmployeeEditView.java /branches/2.1/bikeshed/src/com/google/gwt/sample/expenses/gwt/ui/report/ReportEditView.java

=======================================
--- /branches/2.1/bikeshed/src/com/google/gwt/app/client/EditorSupport.java Thu Apr 29 18:58:19 2010 +++ /branches/2.1/bikeshed/src/com/google/gwt/app/client/EditorSupport.java Mon May 3 15:39:10 2010
@@ -19,6 +19,7 @@
 import com.google.gwt.valuestore.shared.Record;
 import com.google.gwt.valuestore.ui.RecordEditView;

+import java.util.Map;
 import java.util.Set;

 /**
@@ -35,4 +36,6 @@
   void setEnabled(V view, boolean enabled);

   void setValue(V view, R value);
-}
+
+  void showErrors(V view, Map<String, String> errorMap);
+}
=======================================
--- /branches/2.1/bikeshed/src/com/google/gwt/app/rebind/EditorSupportGenerator.java Fri Apr 30 09:32:20 2010 +++ /branches/2.1/bikeshed/src/com/google/gwt/app/rebind/EditorSupportGenerator.java Mon May 3 15:39:10 2010
@@ -25,6 +25,10 @@
 import com.google.gwt.core.ext.typeinfo.JParameterizedType;
 import com.google.gwt.core.ext.typeinfo.JType;
 import com.google.gwt.core.ext.typeinfo.TypeOracle;
+import com.google.gwt.dom.client.DivElement;
+import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.SpanElement;
+import com.google.gwt.dom.client.Style.FontWeight;
 import com.google.gwt.event.logical.shared.ValueChangeEvent;
 import com.google.gwt.event.logical.shared.ValueChangeHandler;
 import com.google.gwt.uibinder.client.UiField;
@@ -140,8 +144,13 @@
     f.addImport(ValueChangeHandler.class.getName());
     f.addImport(superinterfaceType.recordType.getQualifiedSourceName());
     f.addImport(Property.class.getName());
+    f.addImport(DivElement.class.getName());
+    f.addImport(Document.class.getName());
+    f.addImport(SpanElement.class.getName());
+    f.addImport(FontWeight.class.getName().replace("$", "."));

     f.addImport(HashSet.class.getName());
+    f.addImport(Map.class.getName());
     f.addImport(Set.class.getName());
     f.addImplementedInterface(interfaceType.getName());

@@ -160,6 +169,7 @@
     writeSetEnabledMethod(sw, viewType, uiPropertyFields, takesValueType);
     writeSetValueMethod(sw, recordType, viewType, uiPropertyFields,
         generatorContext, logger);
+    writeShowErrorsMethod(sw, viewType, logger);

     sw.outdent();
     sw.println("}");
@@ -423,5 +433,45 @@
     sw.println("}");
     sw.outdent();
   }
+
+  private void writeShowErrorsMethod(SourceWriter sw, JClassType viewType,
+      TreeLogger logger) {
+    sw.indent();
+    sw.println("public void showErrors(" + viewType.getName()
+        + " view, Map<String, String> errorMap) {");
+    sw.indent();
+    sw.println("view.errors.setInnerText(\"\");");
+    sw.println("if (errorMap == null || errorMap.isEmpty()) {");
+    sw.indent();
+    sw.println("return;");
+    sw.outdent();
+    sw.println("}");
+    sw.println();
+
+    sw.println("Document doc = Document.get();");
+ sw.println("for (Map.Entry<String, String> entry : errorMap.entrySet()) {");
+    sw.println("  /*");
+ sw.println(" * Note that we are careful not to use setInnerHtml, to ensure we don't");
+    sw.println("   * render user created markup: xsite attack protection");
+    sw.println("   */");
+    sw.println("");
+    sw.indent();
+    sw.println("DivElement div = doc.createDivElement();");
+    sw.println("div.setInnerText(\" \" + entry.getValue());");
+    sw.println("");
+    sw.println("SpanElement name = doc.createSpanElement();");
+    sw.println("name.getStyle().setFontWeight(FontWeight.BOLD);");
+    sw.println("name.setInnerText(entry.getKey());");
+    sw.println("");
+    sw.println("div.insertFirst(name);");
+    sw.println("");
+    sw.println("view.errors.appendChild(div);");
+    sw.outdent();
+    sw.println("}");
+
+    sw.outdent();
+    sw.println("}");
+    sw.outdent();
+  }

 }
=======================================
--- /branches/2.1/bikeshed/src/com/google/gwt/sample/expenses/gwt/ui/employee/EmployeeEditView.java Mon May 3 13:28:30 2010 +++ /branches/2.1/bikeshed/src/com/google/gwt/sample/expenses/gwt/ui/employee/EmployeeEditView.java Mon May 3 15:39:10 2010
@@ -18,9 +18,6 @@
 import com.google.gwt.app.client.EditorSupport;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.DivElement;
-import com.google.gwt.dom.client.Document;
-import com.google.gwt.dom.client.SpanElement;
-import com.google.gwt.dom.client.Style.FontWeight;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.sample.expenses.gwt.request.EmployeeRecord;
 import com.google.gwt.uibinder.client.UiBinder;
@@ -114,30 +111,7 @@
   }

   public void showErrors(Map<String, String> errorMap) {
-    // TODO Make EditorSupport do this
-    errors.setInnerText("");
-    if (errorMap == null || errorMap.isEmpty()) {
-      return;
-    }
-
-    Document doc = Document.get();
-    for (Map.Entry<String, String> entry : errorMap.entrySet()) {
-      /*
- * Note that we are careful not to use setInnerHtml, to ensure we don't
-       * render user created markup: xsite attack protection
-       */
-
-      DivElement div = doc.createDivElement();
-      div.setInnerText(" " + entry.getValue());
-
-      SpanElement name = doc.createSpanElement();
-      name.getStyle().setFontWeight(FontWeight.BOLD);
-      name.setInnerText(entry.getKey());
-
-      div.insertFirst(name);
-
-      errors.appendChild(div);
-    }
+    DATA_BINDER.showErrors(this, errorMap);
   }

   @UiHandler("save")
=======================================
--- /branches/2.1/bikeshed/src/com/google/gwt/sample/expenses/gwt/ui/report/ReportEditView.java Mon May 3 09:01:39 2010 +++ /branches/2.1/bikeshed/src/com/google/gwt/sample/expenses/gwt/ui/report/ReportEditView.java Mon May 3 15:39:10 2010
@@ -18,9 +18,6 @@
 import com.google.gwt.app.client.EditorSupport;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.DivElement;
-import com.google.gwt.dom.client.Document;
-import com.google.gwt.dom.client.SpanElement;
-import com.google.gwt.dom.client.Style.FontWeight;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.sample.expenses.gwt.request.ReportRecord;
 import com.google.gwt.uibinder.client.UiBinder;
@@ -113,38 +110,13 @@
     this.record = value;
     DATA_BINDER.setValue(this, value);
   }
+
+  public void showErrors(Map<String, String> errorMap) {
+    DATA_BINDER.showErrors(this, errorMap);
+  }

   @UiHandler("save")
   void onSave(@SuppressWarnings("unused") ClickEvent event) {
     delegate.saveClicked();
   }
-
-  public void showErrors(Map<String, String> errorMap) {
-    // TODO Make EditorSupport do this
-
-    errors.setInnerText("");
-
-    if (errorMap == null || errorMap.isEmpty()) {
-      return;
-    }
-
-    Document doc = Document.get();
-    for (Map.Entry<String, String> entry : errorMap.entrySet()) {
-      /*
- * Note that we are careful not to use setInnerHtml, to ensure we don't
-       * render user created markup: xsite attack protection
-       */
-
-      DivElement div = doc.createDivElement();
-      div.setInnerText(" " + entry.getValue());
-
-      SpanElement name = doc.createSpanElement();
-      name.getStyle().setFontWeight(FontWeight.BOLD);
-      name.setInnerText(entry.getKey());
-
-      div.insertFirst(name);
-
-      errors.appendChild(div);
-    }
-  }
-}
+}

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to