diff -r 5dc21ce7269d -r 3e023bea2da4 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Sun Mar 31 05:43:38 2013 +0200 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Sun Mar 31 06:46:25 2013 +0200 @@ -128,12 +128,23 @@ w.append("package " + pkg + ";\n"); w.append("import org.apidesign.bck2brwsr.htmlpage.api.*;\n"); w.append("import org.apidesign.bck2brwsr.htmlpage.KOList;\n"); + w.append("import org.apidesign.bck2brwsr.core.JavaScriptOnly;\n"); w.append("final class ").append(className).append(" {\n"); w.append(" private Object json;\n"); w.append(" private boolean locked;\n"); w.append(" private org.apidesign.bck2brwsr.htmlpage.Knockout ko;\n"); w.append(body.toString()); w.append(" private static Class<" + e.getSimpleName() + "> modelFor() { return null; }\n"); + for (int i = 0; i < propsGetSet.size(); i += 4) { + w.append(" @JavaScriptOnly(name=\"" + propsGetSet.get(i) + "\",\n"); + w.append(" value=\"function() { "); + final String setter = propsGetSet.get(i + 2); + if (setter != null) { + w.append("if (arguments.length == 1) this." + setter + "(arguments[0]); "); + } + w.append("return this." + propsGetSet.get(i + 1) + "();}\")\n"); + w.append(" private static native void __accessor" + i + "();"); + } w.append("}\n"); } finally { w.close();