1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Mon Jan 21 17:04:45 2013 +0100
1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Tue Jan 22 09:19:47 2013 +0100
1.3 @@ -95,7 +95,7 @@
1.4 w.append("package " + pkg + ";\n");
1.5 w.append("import org.apidesign.bck2brwsr.htmlpage.api.*;\n");
1.6 w.append("final class ").append(className).append(" {\n");
1.7 - w.append(" private static boolean locked;\n");
1.8 + w.append(" private boolean locked;\n");
1.9 if (!initializeOnClick(className, (TypeElement) e, w, pp)) {
1.10 return false;
1.11 }
2.1 --- a/mojo/src/main/resources/META-INF/maven/archetype-metadata.xml Mon Jan 21 17:04:45 2013 +0100
2.2 +++ b/mojo/src/main/resources/META-INF/maven/archetype-metadata.xml Tue Jan 22 09:19:47 2013 +0100
2.3 @@ -23,7 +23,7 @@
2.4 <fileSet filtered="true" packaged="true">
2.5 <directory>src/main/java</directory>
2.6 <includes>
2.7 - <include>**/*.java</include>
2.8 + <include>**/App.java</include>
2.9 </includes>
2.10 </fileSet>
2.11 <fileSet filtered="true" packaged="true">
2.12 @@ -32,6 +32,12 @@
2.13 <include>**/*.xhtml</include>
2.14 </includes>
2.15 </fileSet>
2.16 + <fileSet filtered="true" packaged="true">
2.17 + <directory>src/test/java</directory>
2.18 + <includes>
2.19 + <include>**/AppTest.java</include>
2.20 + </includes>
2.21 + </fileSet>
2.22 <fileSet filtered="false" packaged="false">
2.23 <directory></directory>
2.24 <includes>
3.1 --- a/mojo/src/main/resources/archetype-resources/pom.xml Mon Jan 21 17:04:45 2013 +0100
3.2 +++ b/mojo/src/main/resources/archetype-resources/pom.xml Tue Jan 22 09:19:47 2013 +0100
3.3 @@ -53,5 +53,11 @@
3.4 <artifactId>javaquery.api</artifactId>
3.5 <version>0.3-SNAPSHOT</version>
3.6 </dependency>
3.7 + <dependency>
3.8 + <groupId>org.testng</groupId>
3.9 + <artifactId>testng</artifactId>
3.10 + <version>6.5.2</version>
3.11 + <scope>test</scope>
3.12 + </dependency>
3.13 </dependencies>
3.14 </project>
4.1 --- a/mojo/src/main/resources/archetype-resources/src/main/java/App.java Mon Jan 21 17:04:45 2013 +0100
4.2 +++ b/mojo/src/main/resources/archetype-resources/src/main/java/App.java Tue Jan 22 09:19:47 2013 +0100
4.3 @@ -3,15 +3,29 @@
4.4 import org.apidesign.bck2brwsr.htmlpage.api.*;
4.5 import static org.apidesign.bck2brwsr.htmlpage.api.OnEvent.*;
4.6 import org.apidesign.bck2brwsr.htmlpage.api.Page;
4.7 +import org.apidesign.bck2brwsr.htmlpage.api.Property;
4.8 +import org.apidesign.bck2brwsr.htmlpage.api.ComputedProperty;
4.9
4.10 /** Edit the index.xhtml file. Use 'id' to name certain HTML elements.
4.11 * Use this class to define behavior of the elements.
4.12 */
4.13 -@Page(xhtml="index.xhtml", className="Index")
4.14 +@Page(xhtml="index.xhtml", className="Index", properties={
4.15 + @Property(name="name", type=String.class)
4.16 +})
4.17 public class App {
4.18 + static {
4.19 + Index model = new Index();
4.20 + model.setName("World");
4.21 + model.applyBindings();
4.22 + }
4.23 +
4.24 @On(event = CLICK, id="hello")
4.25 - static void hello() {
4.26 - Index.HELLO.setDisabled(true);
4.27 - Element.alert("Hello World!");
4.28 + static void hello(Index m) {
4.29 + Element.alert(m.getHelloMessage());
4.30 + }
4.31 +
4.32 + @ComputedProperty
4.33 + static String helloMessage(String name) {
4.34 + return "Hello " + name + "!";
4.35 }
4.36 }
5.1 --- a/mojo/src/main/resources/archetype-resources/src/main/resources/index.xhtml Mon Jan 21 17:04:45 2013 +0100
5.2 +++ b/mojo/src/main/resources/archetype-resources/src/main/resources/index.xhtml Tue Jan 22 09:19:47 2013 +0100
5.3 @@ -5,12 +5,14 @@
5.4 <title>Bck2Brwsr's Hello World</title>
5.5 </head>
5.6 <body>
5.7 - <button id="hello">Hello World!</button>
5.8 + <h1 data-bind="text: helloMessage">Loading Bck2Brwsr's Hello World...</h1>
5.9 + Your name: <input data-bind="value: name, valueUpdate: 'afterkeydown'"></input>
5.10 + <button id="hello">Say Hello!</button>
5.11
5.12 <script src="/bck2brwsr.js"></script>
5.13 <script src="/vm.js"></script>
5.14 <script type="text/javascript">
5.15 - vm.loadClass('${package}.Index');
5.16 + vm.loadClass('${package}.App');
5.17 </script>
5.18 </body>
5.19 </html>
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2 +++ b/mojo/src/main/resources/archetype-resources/src/test/java/AppTest.java Tue Jan 22 09:19:47 2013 +0100
6.3 @@ -0,0 +1,24 @@
6.4 +package ${package};
6.5 +
6.6 +import static org.testng.Assert.*;
6.7 +import org.testng.annotations.BeforeMethod;
6.8 +import org.testng.annotations.Test;
6.9 +
6.10 +/** Demonstrating POJO testing of HTML page model.
6.11 + *
6.12 + * @author Jaroslav Tulach <jtulach@netbeans.org>
6.13 + */
6.14 +public class AppTest {
6.15 + private Index model;
6.16 +
6.17 +
6.18 + @BeforeMethod
6.19 + public void initModel() {
6.20 + model = new Index().applyBindings();
6.21 + }
6.22 +
6.23 + @Test public void testHelloMessage() {
6.24 + model.setName("Joe");
6.25 + assertEquals(model.getHelloMessage(), "Hello Joe!", "Cleared after pressing +");
6.26 + }
6.27 +}