Less calls to JavaScript when initialing JSON model objects
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sat, 24 Aug 2013 18:00:08 +0200
changeset 254ec06d7725d5b
parent 253 7c8bbc652f04
child 255 62f7dafef4cf
Less calls to JavaScript when initialing JSON model objects
json/src/main/java/org/apidesign/html/json/impl/JSONList.java
json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java
ko-fx/src/main/java/org/apidesign/html/kofx/FXContext.java
     1.1 --- a/json/src/main/java/org/apidesign/html/json/impl/JSONList.java	Sat Aug 24 16:56:40 2013 +0200
     1.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/JSONList.java	Sat Aug 24 18:00:08 2013 +0200
     1.3 @@ -21,6 +21,7 @@
     1.4  package org.apidesign.html.json.impl;
     1.5  
     1.6  import java.util.ArrayList;
     1.7 +import java.util.Arrays;
     1.8  import java.util.Collection;
     1.9  import java.util.Iterator;
    1.10  
    1.11 @@ -38,6 +39,16 @@
    1.12          this.name = name;
    1.13          this.deps = deps;
    1.14      }
    1.15 +    
    1.16 +    public void init(T... values) {
    1.17 +        if (values == null || values.length == 0) {
    1.18 +            return;
    1.19 +        }
    1.20 +        if (this.model != null || !isEmpty()) {
    1.21 +            throw new IllegalStateException();
    1.22 +        }
    1.23 +        super.addAll(Arrays.asList(values));
    1.24 +    }
    1.25  
    1.26      public void assign(Bindings model) {
    1.27          if (this.model == null && isEmpty()) {
     2.1 --- a/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java	Sat Aug 24 16:56:40 2013 +0200
     2.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java	Sat Aug 24 18:00:08 2013 +0200
     2.3 @@ -245,11 +245,7 @@
     2.4                      w.write("    this.prop_" + p.name() + " = " + p.name() + ";\n");
     2.5                  }
     2.6                  if (firstArray != null) {
     2.7 -                    String tn = typeName(e, firstArray);
     2.8 -                    String[] gs = toGetSet(firstArray.name(), tn, true);
     2.9 -                    w.write("    for(" + tn + " $item : " + firstArray.name() + ") {\n");
    2.10 -                    w.write("      " + gs[0] + "().add($item);\n");
    2.11 -                    w.write("    }\n");
    2.12 +                    w.write("    this.prop_" + firstArray.name() + ".init(" + firstArray.name() + ");\n");
    2.13                  }
    2.14                  w.append("  };\n");
    2.15                  w.append("  private org.apidesign.html.json.impl.Bindings intKnckt() {\n");
     3.1 --- a/ko-fx/src/main/java/org/apidesign/html/kofx/FXContext.java	Sat Aug 24 16:56:40 2013 +0200
     3.2 +++ b/ko-fx/src/main/java/org/apidesign/html/kofx/FXContext.java	Sat Aug 24 18:00:08 2013 +0200
     3.3 @@ -47,10 +47,18 @@
     3.4  public final class FXContext
     3.5  implements Technology<JSObject>, Transfer, Contexts.Provider {
     3.6      static final Logger LOG = Logger.getLogger(FXContext.class.getName());
     3.7 +    private static Boolean javaScriptEnabled;
     3.8      
     3.9      @JavaScriptBody(args = {}, body = "return true;")
    3.10 +    private static boolean isJavaScriptEnabledJs() {
    3.11 +        return false;
    3.12 +    }
    3.13 +    
    3.14      private static boolean isJavaScriptEnabled() {
    3.15 -        return false;
    3.16 +        if (javaScriptEnabled != null) {
    3.17 +            return javaScriptEnabled;
    3.18 +        }
    3.19 +        return javaScriptEnabled = isJavaScriptEnabledJs();
    3.20      }
    3.21  
    3.22      @Override