javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java
branchmodel
changeset 505 4198be34b516
parent 500 f9e80d48e9b4
child 508 46fc57ff6553
     1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java	Mon Jan 21 11:55:27 2013 +0100
     1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java	Mon Jan 21 13:43:40 2013 +0100
     1.3 @@ -94,28 +94,27 @@
     1.4                  try {
     1.5                      w.append("package " + pkg + ";\n");
     1.6                      w.append("import org.apidesign.bck2brwsr.htmlpage.api.*;\n");
     1.7 -                    w.append("class ").append(className).append(" {\n");
     1.8 +                    w.append("final class ").append(className).append(" {\n");
     1.9                      w.append("  private static boolean locked;\n");
    1.10 -                    w.append("  private ").append(className).append("() {}\n");
    1.11 -                    for (String id : pp.ids()) {
    1.12 -                        String tag = pp.tagNameForId(id);
    1.13 -                        String type = type(tag);
    1.14 -                        w.append("  ").append("public static final ").
    1.15 -                            append(type).append(' ').append(cnstnt(id)).append(" = new ").
    1.16 -                            append(type).append("(\"").append(id).append("\");\n");
    1.17 -                    }
    1.18 -                    w.append("  static {\n");
    1.19 +                    w.append("  public ").append(className).append("() {\n");
    1.20                      if (!initializeOnClick((TypeElement) e, w, pp)) {
    1.21                          return false;
    1.22                      }
    1.23                      w.append("  }\n");
    1.24 +                    for (String id : pp.ids()) {
    1.25 +                        String tag = pp.tagNameForId(id);
    1.26 +                        String type = type(tag);
    1.27 +                        w.append("  ").append("public final ").
    1.28 +                            append(type).append(' ').append(cnstnt(id)).append(" = new ").
    1.29 +                            append(type).append("(\"").append(id).append("\");\n");
    1.30 +                    }
    1.31                      List<String> propsGetSet = new ArrayList<String>();
    1.32                      Map<String,Collection<String>> propsDeps = new HashMap<String, Collection<String>>();
    1.33                      generateComputedProperties(w, e.getEnclosedElements(), propsGetSet, propsDeps);
    1.34                      generateProperties(w, p.properties(), propsGetSet, propsDeps);
    1.35 -                    w.append("  private static org.apidesign.bck2brwsr.htmlpage.Knockout ko;\n");
    1.36 +                    w.append("  private org.apidesign.bck2brwsr.htmlpage.Knockout ko;\n");
    1.37                      if (!propsGetSet.isEmpty()) {
    1.38 -                        w.write("public static void applyBindings() {\n");
    1.39 +                        w.write("public " + className + " applyBindings() {\n");
    1.40                          w.write("  ko = org.apidesign.bck2brwsr.htmlpage.Knockout.applyBindings(");
    1.41                          w.write(className + ".class, new " + className + "(), ");
    1.42                          w.write("new String[] {\n");
    1.43 @@ -129,8 +128,7 @@
    1.44                              }
    1.45                              sep = ",\n";
    1.46                          }
    1.47 -                        w.write("\n  });\n}\n");
    1.48 -                        //w.write("static { applyBindings(); }\n");
    1.49 +                        w.write("\n  });\n  return this;\n}\n");
    1.50                      }
    1.51                      w.append("}\n");
    1.52                  } finally {
    1.53 @@ -271,12 +269,12 @@
    1.54              final String tn = typeName(p);
    1.55              String[] gs = toGetSet(p.name(), tn);
    1.56  
    1.57 -            w.write("private static " + tn + " prop_" + p.name() + ";\n");
    1.58 -            w.write("public static " + tn + " " + gs[0] + "() {\n");
    1.59 +            w.write("private " + tn + " prop_" + p.name() + ";\n");
    1.60 +            w.write("public " + tn + " " + gs[0] + "() {\n");
    1.61              w.write("  if (locked) throw new IllegalStateException();\n");
    1.62              w.write("  return prop_" + p.name() + ";\n");
    1.63              w.write("}\n");
    1.64 -            w.write("public static void " + gs[1] + "(" + tn + " v) {\n");
    1.65 +            w.write("public void " + gs[1] + "(" + tn + " v) {\n");
    1.66              w.write("  if (locked) throw new IllegalStateException();\n");
    1.67              w.write("  prop_" + p.name() + " = v;\n");
    1.68              w.write("  if (ko != null) {\n");
    1.69 @@ -312,7 +310,7 @@
    1.70              final String sn = ee.getSimpleName().toString();
    1.71              String[] gs = toGetSet(sn, tn);
    1.72              
    1.73 -            w.write("public static " + tn + " " + gs[0] + "() {\n");
    1.74 +            w.write("public " + tn + " " + gs[0] + "() {\n");
    1.75              w.write("  if (locked) throw new IllegalStateException();\n");
    1.76              int arg = 0;
    1.77              for (VariableElement pe : ee.getParameters()) {