Jaxx-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
November 2013
- 3 participants
- 22 discussions
The JAXX team is pleased to announce the jaxx-2.6 release!
JAXX Project
Documentation of the project can be found here:
http://maven-site.nuiton.org/jaxx
Changes
-------
Changes in this version include:
New features:
o Introduce a new *Simple* time editor. Issue: 2924. Thanks to Tony Chemit. Resolved by tchemit.
o Introduce some coordinate editors Issue: 2929. Thanks to Tony Chemit. Resolved by tchemit.
o Introduce UIHandler contract and a way to glue it to any generated jaxx object Issue: 2946. Thanks to Tony Chemit. Resolved by tchemit.
o Introduce a new jaxx-config module Issue: 2557. Thanks to Tony Chemit. Resolved by tchemit.
Fixed Bugs:
o Does not compile if an interface extends JAXXObject Issue: 2931. Thanks to Tony Chemit. Resolved by tchemit.
Changes:
o Updates nuiton-i18n to 2.5.2 Issue: 2947. Thanks to Tony Chemit. Resolved by tchemit.
o Updates eugene to 2.7.3 Issue: 2948. Thanks to Tony Chemit. Resolved by tchemit.
o Updates plexus-utils to 3.0.15 Issue: 2949. Thanks to Tony Chemit. Resolved by tchemit.
o Updates rsyntaxtextarea to 2.5.0 Issue: 2951. Thanks to Tony Chemit. Resolved by tchemit.
Downloads
---------
No release file deployed. (all files are deployed in the maven repository)
Maven artifacts
---------------
Artifacts are deployed in Maven Central Repository
http://repo1.maven.org/maven2/
Find us at
* http://search.maven.org/#artifactdetails|org.nuiton|jaxx|2.6|jar
Have fun!
-JAXX team
1
0
r2764 - in trunk: . jaxx-compiler jaxx-config jaxx-demo jaxx-maven-plugin jaxx-runtime jaxx-validator jaxx-widgets
by maven-release@users.nuiton.org 28 Nov '13
by maven-release@users.nuiton.org 28 Nov '13
28 Nov '13
Author: maven-release
Date: 2013-11-28 18:33:52 +0100 (Thu, 28 Nov 2013)
New Revision: 2764
Url: http://nuiton.org/projects/jaxx/repository/revisions/2764
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
trunk/jaxx-compiler/pom.xml
trunk/jaxx-config/pom.xml
trunk/jaxx-demo/pom.xml
trunk/jaxx-maven-plugin/pom.xml
trunk/jaxx-runtime/pom.xml
trunk/jaxx-validator/pom.xml
trunk/jaxx-widgets/pom.xml
trunk/pom.xml
Modified: trunk/jaxx-compiler/pom.xml
===================================================================
--- trunk/jaxx-compiler/pom.xml 2013-11-28 17:33:48 UTC (rev 2763)
+++ trunk/jaxx-compiler/pom.xml 2013-11-28 17:33:52 UTC (rev 2764)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6</version>
+ <version>2.7-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-config/pom.xml
===================================================================
--- trunk/jaxx-config/pom.xml 2013-11-28 17:33:48 UTC (rev 2763)
+++ trunk/jaxx-config/pom.xml 2013-11-28 17:33:52 UTC (rev 2764)
@@ -31,7 +31,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6</version>
+ <version>2.7-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-demo/pom.xml
===================================================================
--- trunk/jaxx-demo/pom.xml 2013-11-28 17:33:48 UTC (rev 2763)
+++ trunk/jaxx-demo/pom.xml 2013-11-28 17:33:52 UTC (rev 2764)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6</version>
+ <version>2.7-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-maven-plugin/pom.xml
===================================================================
--- trunk/jaxx-maven-plugin/pom.xml 2013-11-28 17:33:48 UTC (rev 2763)
+++ trunk/jaxx-maven-plugin/pom.xml 2013-11-28 17:33:52 UTC (rev 2764)
@@ -31,7 +31,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6</version>
+ <version>2.7-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-runtime/pom.xml
===================================================================
--- trunk/jaxx-runtime/pom.xml 2013-11-28 17:33:48 UTC (rev 2763)
+++ trunk/jaxx-runtime/pom.xml 2013-11-28 17:33:52 UTC (rev 2764)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6</version>
+ <version>2.7-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-validator/pom.xml
===================================================================
--- trunk/jaxx-validator/pom.xml 2013-11-28 17:33:48 UTC (rev 2763)
+++ trunk/jaxx-validator/pom.xml 2013-11-28 17:33:52 UTC (rev 2764)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6</version>
+ <version>2.7-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-widgets/pom.xml
===================================================================
--- trunk/jaxx-widgets/pom.xml 2013-11-28 17:33:48 UTC (rev 2763)
+++ trunk/jaxx-widgets/pom.xml 2013-11-28 17:33:52 UTC (rev 2764)
@@ -31,7 +31,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6</version>
+ <version>2.7-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-11-28 17:33:48 UTC (rev 2763)
+++ trunk/pom.xml 2013-11-28 17:33:52 UTC (rev 2764)
@@ -34,7 +34,7 @@
</parent>
<artifactId>jaxx</artifactId>
- <version>2.6</version>
+ <version>2.7-SNAPSHOT</version>
<modules>
<module>jaxx-runtime</module>
@@ -139,11 +139,11 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/jaxx/tags/jaxx-2.6</connection>
+ <connection>scm:svn:http://svn.nuiton.org/svn/jaxx/trunk</connection>
<developerConnection>
- scm:svn:http://svn.nuiton.org/svn/jaxx/tags/jaxx-2.6
+ scm:svn:http://svn.nuiton.org/svn/jaxx/trunk
</developerConnection>
- <url>http://nuiton.org/projects/jaxx/repository/show/tags/jaxx-2.6</url>
+ <url>http://nuiton.org/projects/jaxx/repository/show/trunk</url>
</scm>
<distributionManagement>
1
0
Author: maven-release
Date: 2013-11-28 18:33:48 +0100 (Thu, 28 Nov 2013)
New Revision: 2763
Url: http://nuiton.org/projects/jaxx/repository/revisions/2763
Log:
[maven-release-plugin] copy for tag jaxx-2.6
Added:
tags/jaxx-2.6/
1
0
r2762 - in trunk: . jaxx-compiler jaxx-config jaxx-demo jaxx-maven-plugin jaxx-runtime jaxx-validator jaxx-widgets
by maven-release@users.nuiton.org 28 Nov '13
by maven-release@users.nuiton.org 28 Nov '13
28 Nov '13
Author: maven-release
Date: 2013-11-28 18:33:42 +0100 (Thu, 28 Nov 2013)
New Revision: 2762
Url: http://nuiton.org/projects/jaxx/repository/revisions/2762
Log:
[maven-release-plugin] prepare release jaxx-2.6
Modified:
trunk/jaxx-compiler/pom.xml
trunk/jaxx-config/pom.xml
trunk/jaxx-demo/pom.xml
trunk/jaxx-maven-plugin/pom.xml
trunk/jaxx-runtime/pom.xml
trunk/jaxx-validator/pom.xml
trunk/jaxx-widgets/pom.xml
trunk/pom.xml
Modified: trunk/jaxx-compiler/pom.xml
===================================================================
--- trunk/jaxx-compiler/pom.xml 2013-11-28 17:13:41 UTC (rev 2761)
+++ trunk/jaxx-compiler/pom.xml 2013-11-28 17:33:42 UTC (rev 2762)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6-SNAPSHOT</version>
+ <version>2.6</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-config/pom.xml
===================================================================
--- trunk/jaxx-config/pom.xml 2013-11-28 17:13:41 UTC (rev 2761)
+++ trunk/jaxx-config/pom.xml 2013-11-28 17:33:42 UTC (rev 2762)
@@ -31,7 +31,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6-SNAPSHOT</version>
+ <version>2.6</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-demo/pom.xml
===================================================================
--- trunk/jaxx-demo/pom.xml 2013-11-28 17:13:41 UTC (rev 2761)
+++ trunk/jaxx-demo/pom.xml 2013-11-28 17:33:42 UTC (rev 2762)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6-SNAPSHOT</version>
+ <version>2.6</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-maven-plugin/pom.xml
===================================================================
--- trunk/jaxx-maven-plugin/pom.xml 2013-11-28 17:13:41 UTC (rev 2761)
+++ trunk/jaxx-maven-plugin/pom.xml 2013-11-28 17:33:42 UTC (rev 2762)
@@ -31,7 +31,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6-SNAPSHOT</version>
+ <version>2.6</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-runtime/pom.xml
===================================================================
--- trunk/jaxx-runtime/pom.xml 2013-11-28 17:13:41 UTC (rev 2761)
+++ trunk/jaxx-runtime/pom.xml 2013-11-28 17:33:42 UTC (rev 2762)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6-SNAPSHOT</version>
+ <version>2.6</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-validator/pom.xml
===================================================================
--- trunk/jaxx-validator/pom.xml 2013-11-28 17:13:41 UTC (rev 2761)
+++ trunk/jaxx-validator/pom.xml 2013-11-28 17:33:42 UTC (rev 2762)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6-SNAPSHOT</version>
+ <version>2.6</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-widgets/pom.xml
===================================================================
--- trunk/jaxx-widgets/pom.xml 2013-11-28 17:13:41 UTC (rev 2761)
+++ trunk/jaxx-widgets/pom.xml 2013-11-28 17:33:42 UTC (rev 2762)
@@ -31,7 +31,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.6-SNAPSHOT</version>
+ <version>2.6</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-11-28 17:13:41 UTC (rev 2761)
+++ trunk/pom.xml 2013-11-28 17:33:42 UTC (rev 2762)
@@ -34,7 +34,7 @@
</parent>
<artifactId>jaxx</artifactId>
- <version>2.6-SNAPSHOT</version>
+ <version>2.6</version>
<modules>
<module>jaxx-runtime</module>
@@ -139,11 +139,11 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/jaxx/trunk</connection>
+ <connection>scm:svn:http://svn.nuiton.org/svn/jaxx/tags/jaxx-2.6</connection>
<developerConnection>
- scm:svn:http://svn.nuiton.org/svn/jaxx/trunk
+ scm:svn:http://svn.nuiton.org/svn/jaxx/tags/jaxx-2.6
</developerConnection>
- <url>http://nuiton.org/projects/jaxx/repository/show/trunk</url>
+ <url>http://nuiton.org/projects/jaxx/repository/show/tags/jaxx-2.6</url>
</scm>
<distributionManagement>
1
0
Author: tchemit
Date: 2013-11-28 18:13:41 +0100 (Thu, 28 Nov 2013)
New Revision: 2761
Url: http://nuiton.org/projects/jaxx/repository/revisions/2761
Log:
refs #2946: Introduce UIHandler contract and a way to glue it to any generated jaxx object (fix doc)
Modified:
trunk/src/site/rst/index.rst
Modified: trunk/src/site/rst/index.rst
===================================================================
--- trunk/src/site/rst/index.rst 2013-11-28 17:07:12 UTC (rev 2760)
+++ trunk/src/site/rst/index.rst 2013-11-28 17:13:41 UTC (rev 2761)
@@ -50,12 +50,14 @@
Ce handler doit de plus implanter un nouveau contract *jaxx.runtime.spi.UIHandler*.
-Le contract contient deux méthodes
+Le contrat contient deux méthodes
-- *beforeInit* qui est appelé juste avant la méthode *$initialize* de chaque object jaxx
-- *afterInit* appelée après l'init de l'ojet jaxx, à savoir tout à la fin de la
- méthode *$completeSetup*.
+- *beforeInit* appelée au tout début de la méthode *$initialize*
+- *afterInit* appelée tout à la fin de la méthode *$initialize*
+En résumé, pendant la méthode *beforeInit* il ne faut pas toucher aux UIs,
+elles ne sont pas encore construites.
+
Voir http://nuiton.org/issues/2946.
Ajout de nouveaux éditeurs
1
0
r2760 - in trunk/jaxx-compiler/src/main/java/jaxx/compiler: finalizers tasks
by tchemit@users.nuiton.org 28 Nov '13
by tchemit@users.nuiton.org 28 Nov '13
28 Nov '13
Author: tchemit
Date: 2013-11-28 18:07:12 +0100 (Thu, 28 Nov 2013)
New Revision: 2760
Url: http://nuiton.org/projects/jaxx/repository/revisions/2760
Log:
refs #2946: Introduce UIHandler contract and a way to glue it to any generated jaxx object (still some bad code...)
Modified:
trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java
trunk/jaxx-compiler/src/main/java/jaxx/compiler/tasks/GenerateConstructorsTask.java
Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java
===================================================================
--- trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java 2013-11-28 15:45:30 UTC (rev 2759)
+++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java 2013-11-28 17:07:12 UTC (rev 2760)
@@ -1086,7 +1086,9 @@
code.append(" return;").append(eol);
code.append("}").append(eol);
code.append(JavaFileGenerator.addDebugLoggerInvocation(compiler, "this"));
- if (compiler.isUseHandler()) {
+ boolean useHandler = compiler.isUseHandler();
+
+ if (useHandler) {
code.append("handler." + METHOD_NAME$BEFORE_INIT + "(this);").append(eol);
}
code.append(FIELD_NAME_$OBJECT_MAP + ".put(");
@@ -1133,6 +1135,10 @@
}
code.append(METHOD_NAME_$COMPLETE_SETUP + "();");
code.append(eol);
+
+ if (useHandler) {
+ code.append("handler." + METHOD_NAME$AFTER_INIT + "(this);").append(eol);
+ }
JavaMethod method = JavaElementFactory.newMethod(PRIVATE,
TYPE_VOID,
METHOD_NAME_$INITIALIZE,
@@ -1170,17 +1176,12 @@
MethodDescriptor method =
compiler.getScriptMethod(METHOD_NAME_$AFTER_COMPLETE_SETUP);
- boolean useHandler = compiler.isUseHandler();
- if (useHandler) {
+ if (method != null) {
+ if (compiler.isUseHandler()) {
- code.append("handler." + METHOD_NAME$AFTER_INIT + "(this);").append(eol);
+ compiler.reportWarning("Should not use deprecated api $afterCompleteSetup, prefer declare a 'handler' attribute on root object.");
- if (method != null) {
- compiler.reportWarning("Should not use deprecated api $afterCompleteSetup, prefer declare a 'handler' attribute on root object.");
}
- }
-
- if (method != null) {
code.append(METHOD_NAME_$AFTER_COMPLETE_SETUP + "();").append(eol);
}
JavaMethod javaMethod = JavaElementFactory.newMethod(PRIVATE,
Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/tasks/GenerateConstructorsTask.java
===================================================================
--- trunk/jaxx-compiler/src/main/java/jaxx/compiler/tasks/GenerateConstructorsTask.java 2013-11-28 15:45:30 UTC (rev 2759)
+++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/tasks/GenerateConstructorsTask.java 2013-11-28 17:07:12 UTC (rev 2760)
@@ -422,7 +422,6 @@
code.append(");").append(eol);
}
- addHandlerBeforeInitInvocation(compiler, code);
code.append(DefaultFinalizer.METHOD_NAME_$INITIALIZE + "();");
code.append(eol);
JavaConstructor constructor = JavaElementFactory.newConstructor(PUBLIC,
@@ -433,12 +432,6 @@
compiler.getJavaFile().addConstructor(constructor);
}
- public void addHandlerBeforeInitInvocation(JAXXCompiler compiler, StringBuilder code) {
- if (compiler.isUseHandler()) {
- code.append("handler." + METHOD_NAME$BEFORE_INIT + "(this);");
- }
- }
-
protected void addConstructorWithInitialContext(JAXXCompiler compiler,
String className,
List<String> constructorTypes,
@@ -507,7 +500,6 @@
code.append(".initContext(this, " + PARAMETER_NAME_PARENT_CONTEXT + ");");
code.append(eol);
}
- addHandlerBeforeInitInvocation(compiler, code);
code.append(DefaultFinalizer.METHOD_NAME_$INITIALIZE + "();");
code.append(eol);
JavaConstructor constructor = JavaElementFactory.newConstructor(PUBLIC,
1
0
r2759 - in trunk/jaxx-compiler/src/main/java/jaxx/compiler: . finalizers
by tchemit@users.nuiton.org 28 Nov '13
by tchemit@users.nuiton.org 28 Nov '13
28 Nov '13
Author: tchemit
Date: 2013-11-28 16:45:30 +0100 (Thu, 28 Nov 2013)
New Revision: 2759
Url: http://nuiton.org/projects/jaxx/repository/revisions/2759
Log:
refs #2946: Introduce UIHandler contract and a way to glue it to any generated jaxx object (let's call beforeInit at the beginning of method $initialize
Modified:
trunk/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java
trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java
Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java
===================================================================
--- trunk/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java 2013-11-28 10:58:35 UTC (rev 2758)
+++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java 2013-11-28 15:45:30 UTC (rev 2759)
@@ -2104,11 +2104,4 @@
public boolean isUseHandler() {
return StringUtils.isNotBlank(uiHandler);
}
-
- public void addHandlerBeforeInitInvocation(StringBuilder code) {
- if (isUseHandler()) {
- code.append("handler." + METHOD_NAME$BEFORE_INIT + "(this);");
- code.append(JAXXCompiler.getLineSeparator());
- }
- }
}
Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java
===================================================================
--- trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java 2013-11-28 10:58:35 UTC (rev 2758)
+++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java 2013-11-28 15:45:30 UTC (rev 2759)
@@ -989,7 +989,6 @@
// code.append(" super();").append(eol);
// }
}
- compiler.addHandlerBeforeInitInvocation(code);
code.append(METHOD_NAME_$INITIALIZE + "();");
code.append(eol);
return JavaElementFactory.newMethod(PUBLIC,
@@ -1053,7 +1052,6 @@
code.append(".initContext(this, " + PARAMETER_NAME_PARENT_CONTEXT + ");");
code.append(eol);
}
- compiler.addHandlerBeforeInitInvocation(code);
code.append(METHOD_NAME_$INITIALIZE + "();");
code.append(eol);
JavaArgument argument = JavaElementFactory.newArgument(
@@ -1088,7 +1086,9 @@
code.append(" return;").append(eol);
code.append("}").append(eol);
code.append(JavaFileGenerator.addDebugLoggerInvocation(compiler, "this"));
-
+ if (compiler.isUseHandler()) {
+ code.append("handler." + METHOD_NAME$BEFORE_INIT + "(this);").append(eol);
+ }
code.append(FIELD_NAME_$OBJECT_MAP + ".put(");
String rootId = root.getId();
code.append(TypeManager.getJavaCode(rootId));
1
0
28 Nov '13
Author: tchemit
Date: 2013-11-28 11:58:35 +0100 (Thu, 28 Nov 2013)
New Revision: 2758
Url: http://nuiton.org/projects/jaxx/repository/revisions/2758
Log:
- improve jaxx demo
- fixes #2947: Updates nuiton-i18n to 2.5.2
- fixes #2948: Updates eugene to 2.7.3
- fixes #2949: Updates plexus-utils to 3.0.15
- fixes #2951: Updates rsyntaxtextarea to 2.5.0
Modified:
trunk/jaxx-demo/src/main/java/jaxx/demo/DemoPanel.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/DemoSources.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/DemoSourcesHandler.java
trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/BoxedDecoratorDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemoHandler.java
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemoHandler.java
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemoHandler.java
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/SimpleTimeEditorDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/SimpleTimeEditorDemoHandler.java
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/TimeEditorDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/databinding/BeanDataBindingDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/databinding/BindingExtremeDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoHandler.java
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/list/ListBeanValidationDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/list/ListBeanValidationDemoHandler.java
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/simple/SimpleBeanValidationByListDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/simple/SimpleBeanValidationByTableDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/fun/CalculatorDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/fun/LabelStyleDemo.jaxx
trunk/pom.xml
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoPanel.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoPanel.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoPanel.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -35,11 +35,11 @@
if (DemoPanel.class.equals(getClass())) {
return StringUtil.EMPTY_STRING_ARRAY;
}
- return new String[]{ getDefaultSource() };
+ return addDefaultSources();
}
-protected String getDefaultSource() {
- return getClass().getSimpleName() + ".jaxx";
+protected String[] addDefaultSources(String... sources) {
+ return DemoSourcesHandler.addDefaultSources(this, sources);
}
public String getLabel() {
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoSources.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoSources.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoSources.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -38,16 +38,6 @@
<script><![CDATA[
public void init() {
- //fontSizor.setDefaultFontSize(getConfig().getFontSize());
- fontSizor.init();
- fontSizor.setCallBack(new Runnable() {
-
- @Override
- public void run() {
- log.info("update font size : " + fontSizor.getFontSize());
- getConfig().setFontSize(fontSizor.getFontSize());
- }
- });
handler.init(this);
}
@@ -55,17 +45,10 @@
return getContextValue(DemoConfig.class);
}
-public void updateSource(ItemEvent event) {
- setCurrentSource((String) sourceTabs.getSelectedItem());
- editor.setText(handler.getSourceContent(this, getCurrentSource()));
- editor.setSyntaxEditingStyle(handler.getSourceEditingStyle(this, getCurrentSource()));
- editor.setCaretPosition(0);
-}
+
]]>
</script>
- <DemoSourcesHandler id='handler'/>
-
<Class id='incomingClass' javaBean='null' genericType='?'/>
<String id='currentSource' javaBean='null'/>
@@ -80,12 +63,11 @@
<JComboBox id='sourceTabs'
model='{new DefaultComboBoxModel()}'
- onItemStateChanged='if(event.getStateChange() == ItemEvent.SELECTED) { updateSource(event); }'/>
+ onItemStateChanged='if(event.getStateChange() == ItemEvent.SELECTED) { handler.updateSource(event); }'/>
<javax.swing.Box.Filler
constructorParams='SwingUtil.newMinDimension(), SwingUtil.newMinDimension(), SwingUtil.newMaxXDimension()'/>
<FontSizor id='fontSizor' opaque='false' showFontSize='true'
fontSize='{getConfig().getFontSize()}'/>
- <!--defaultFontSize='{getConfig().getFontSize()}' fontSize='{getConfig().getFontSize()}'/>-->
</JToolBar>
<JScrollPane id='editorPane' columnHeaderView='{editorPaneHeader}'
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoSourcesHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoSourcesHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoSourcesHandler.java 2013-11-28 10:58:35 UTC (rev 2758)
@@ -24,13 +24,20 @@
*/
package jaxx.demo;
+import com.google.common.collect.Lists;
+import jaxx.runtime.JAXXObject;
import jaxx.runtime.SwingUtil;
+import jaxx.runtime.spi.UIHandler;
+import jaxx.runtime.swing.FontSizor;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
+import java.awt.event.ItemEvent;
+import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@@ -44,13 +51,42 @@
* Mise a jour: $Date$ par :
* $Author$
*/
-public class DemoSourcesHandler {
+public class DemoSourcesHandler implements UIHandler<DemoSources> {
/** Logger */
private static final Log log = LogFactory.getLog(DemoSourcesHandler.class);
protected static Map<String, String> sourcesCache;
+ public static String[] addDefaultSources(JAXXObject ui, String... extraSources) {
+ List<String> sources = Lists.newArrayList();
+ String packageName = ui.getClass().getPackage().getName();
+ String simpleName = ui.getClass().getSimpleName();
+ addIfExist(ui, sources, packageName, simpleName + ".jaxx");
+ addIfExist(ui, sources, packageName, simpleName + ".css");
+ addIfExist(ui, sources, packageName, simpleName + "Handler.java");
+ addIfExist(ui, sources, packageName, simpleName + "Model.java");
+ Collections.addAll(sources, extraSources);
+ return sources.toArray(new String[sources.size()]);
+ }
+
+ private static void addIfExist(JAXXObject ui,
+ List<String> sources,
+ String packageName,
+ String resourcePath) {
+ String path = "/" + packageName.replaceAll("\\.", "/");
+ path += "/" + resourcePath;
+ InputStream resource = ui.getClass().getResourceAsStream(path);
+ try {
+ if (resource != null) {
+ sources.add(resourcePath);
+ }
+ } finally {
+ IOUtils.closeQuietly(resource);
+ }
+
+ }
+
public static Map<String, String> getSourcesCache() {
if (sourcesCache == null) {
sourcesCache = new TreeMap<String, String>();
@@ -58,7 +94,7 @@
return sourcesCache;
}
- public String getSourceContent(DemoSources ui, String name) {
+ public String getSourceContent(String name) {
if (name == null) {
return "";
}
@@ -69,7 +105,7 @@
log.debug(name + " from " + ui.getIncomingClass());
}
int lastDotIndex = name.lastIndexOf(".");
- String path = "/"+ name.substring(0, lastDotIndex).replaceAll("\\.", "/");
+ String path = "/" + name.substring(0, lastDotIndex).replaceAll("\\.", "/");
path += name.substring(lastDotIndex);
result = IOUtils.toString(ui.getIncomingClass().getResourceAsStream(path));
if (log.isDebugEnabled()) {
@@ -84,7 +120,7 @@
return result;
}
- public String getSourceEditingStyle(DemoSources ui, String source) {
+ public String getSourceEditingStyle(String source) {
if (source == null) {
return "";
@@ -104,7 +140,37 @@
return s;
}
- public void init(DemoSources ui) {
+ DemoSources ui;
+
+ @Override
+ public void beforeInit(DemoSources ui) {
+ this.ui = ui;
+ }
+
+ @Override
+ public void afterInit(final DemoSources ui) {
+
+ //fontSizor.setDefaultFontSize(getConfig().getFontSize());
+ final FontSizor fontSizor = ui.getFontSizor();
+ fontSizor.init();
+ fontSizor.setCallBack(new Runnable() {
+
+ @Override
+ public void run() {
+ log.info("update font size : " + fontSizor.getFontSize());
+ ui.getConfig().setFontSize(fontSizor.getFontSize());
+ }
+ });
+ }
+
+ public void updateSource(ItemEvent event) {
+ ui.setCurrentSource((String) ui.sourceTabs.getSelectedItem());
+ ui.editor.setText(getSourceContent(ui.getCurrentSource()));
+ ui.editor.setSyntaxEditingStyle(getSourceEditingStyle(ui.getCurrentSource()));
+ ui.editor.setCaretPosition(0);
+ }
+
+ public void init(final DemoSources ui) {
List<String> sources = ui.getSources();
if (sources == null) {
return;
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUI.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -23,10 +23,8 @@
#L%
-->
-
<JFrame id='mainFrame' width='1024' height='800'
- decorator='help'
- onWindowClosing='getHandler().close(mainFrame)'>
+ decorator='help' onWindowClosing='handler.close(mainFrame)'>
<import>
jaxx.demo.tree.DemoTreeHelper
@@ -44,9 +42,6 @@
<DemoConfig id='config' initializer='getContextValue(DemoConfig.class)'/>
- <DemoUIHandler id='handler'
- initializer='getContextValue(DemoUIHandler.class)'/>
-
<DemoTreeHelper id='treeHelper'
initializer='getContextValue(DemoTreeHelper.class)'/>
@@ -56,10 +51,6 @@
public boolean acceptLocale(Locale l, String expected) {
return l !=null && l.toString().equals(expected);
}
-
-private void $afterCompleteSetup() {
- getHandler().initUI(this);
-}
]]>
</script>
@@ -67,32 +58,32 @@
<JMenu id='menuFile'>
<JMenuItem id='menuFileConfiguration'
- onActionPerformed="getHandler().showConfig(this)"/>
+ onActionPerformed="handler.showConfig(this)"/>
<JMenu id='menuFileLanguage'>
<JMenuItem id='menuFileLanguageFR'
- onActionPerformed="getHandler().changeLanguage(this, Locale.FRANCE)"/>
+ onActionPerformed="handler.changeLanguage(this, Locale.FRANCE)"/>
<JMenuItem id='menuFileLanguageUK'
- onActionPerformed="getHandler().changeLanguage(this, Locale.UK)"/>
+ onActionPerformed="handler.changeLanguage(this, Locale.UK)"/>
</JMenu>
<JSeparator/>
<JMenuItem id='menuFileFullscreen'
- onActionPerformed="getHandler().changeScreen(this, true)"/>
+ onActionPerformed="handler.changeScreen(this, true)"/>
<JMenuItem id='menuFileNormalscreen'
- onActionPerformed="getHandler().changeScreen(this, false)"/>
+ onActionPerformed="handler.changeScreen(this, false)"/>
<JSeparator/>
<JMenuItem id='menuFileExit'
- onActionPerformed="getHandler().close(this)"/>
+ onActionPerformed="handler.close(this)"/>
</JMenu>
<JMenu id='menuHelp'>
<JMenuItem id='menuHelpLogs'
- onActionPerformed="getHandler().showLogs(this)"/>
+ onActionPerformed="handler.showLogs(this)"/>
<JMenuItem id='menuHelpHelp'
- onActionPerformed="getHandler().showHelp(this, null)"/>
+ onActionPerformed="handler.showHelp(this, null)"/>
<JMenuItem id='menuHelpSite'
- onActionPerformed="getHandler().gotoSite(this)"/>
+ onActionPerformed="handler.gotoSite(this)"/>
<JMenuItem id='menuHelpAbout'
- onActionPerformed="getHandler().showAbout(this)"/>
+ onActionPerformed="handler.showAbout(this)"/>
</JMenu>
</JMenuBar>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/DemoUIHandler.java 2013-11-28 10:58:35 UTC (rev 2758)
@@ -33,6 +33,7 @@
import jaxx.runtime.context.DefaultApplicationContext;
import jaxx.runtime.context.JAXXContextEntryDef;
import jaxx.runtime.context.JAXXInitialContext;
+import jaxx.runtime.spi.UIHandler;
import jaxx.runtime.swing.AboutPanel;
import jaxx.runtime.swing.ErrorDialogUI;
import jaxx.runtime.swing.config.ConfigUIHelper;
@@ -40,8 +41,8 @@
import jaxx.runtime.swing.renderer.DecoratorProviderListCellRenderer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.decorator.DecoratorProvider;
import org.nuiton.i18n.I18n;
-import org.nuiton.decorator.DecoratorProvider;
import javax.swing.AbstractAction;
import javax.swing.InputMap;
@@ -72,7 +73,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @see DemoUI
*/
-public class DemoUIHandler { //implements JAXXHelp {
+public class DemoUIHandler implements UIHandler<DemoUI>{
/** Logger */
static private Log log = LogFactory.getLog(DemoUIHandler.class);
@@ -171,8 +172,14 @@
inputMap.put(keyStroke, OPEN_CONFIG_ACTION);
}
- public void initUI(final DemoUI ui) {
+ @Override
+ public void beforeInit(DemoUI ui) {
+ }
+
+ @Override
+ public void afterInit(final DemoUI ui) {
+
// Creation of selection listener to open ui when tree selection change
TreeSelectionListener listener = new TreeSelectionListener() {
@Override
@@ -459,37 +466,37 @@
helper.addCategory(n_("jaxxdemo.config.category.other"),
n_("jaxxdemo.config.category.other.description"));
- helper.addOption(DemoConfig.Option.FULL_SCREEN,
- DemoConfig.PROPERTY_FULLSCREEN);
- helper.setOptionCallBack("ui");
+ helper.addOption(DemoConfig.Option.FULL_SCREEN).
+ setOptionPropertyName(DemoConfig.PROPERTY_FULLSCREEN).
+ setOptionCallBack("ui");
- helper.addOption(DemoConfig.Option.FONT_SIZE,
- DemoConfig.PROPERTY_FONT_SIZE);
- helper.setOptionCallBack("ui");
+ helper.addOption(DemoConfig.Option.FONT_SIZE).
+ setOptionPropertyName(DemoConfig.PROPERTY_FONT_SIZE).
+ setOptionCallBack("ui");
- helper.addOption(DemoConfig.Option.LOCALE,
- DemoConfig.PROPERTY_LOCALE);
- helper.setOptionCallBack("ui");
+ helper.addOption(DemoConfig.Option.LOCALE).
+ setOptionPropertyName(DemoConfig.PROPERTY_LOCALE).
+ setOptionCallBack("ui");
- helper.addOption(DemoConfig.Option.DEMO_COLOR,
- DemoConfig.PROPERTY_DEMO_COLOR);
- helper.setOptionCallBack("ui");
+ helper.addOption(DemoConfig.Option.DEMO_COLOR).
+ setOptionPropertyName(DemoConfig.PROPERTY_DEMO_COLOR).
+ setOptionCallBack("ui");
- helper.addOption(DemoConfig.Option.DEMO_CLASS,
- DemoConfig.PROPERTY_DEMO_CLASS);
- helper.setOptionCallBack("ui");
+ helper.addOption(DemoConfig.Option.DEMO_CLASS).
+ setOptionPropertyName(DemoConfig.PROPERTY_DEMO_CLASS).
+ setOptionCallBack("ui");
- helper.addOption(DemoConfig.Option.KEY_OPEN_CONFIG,
- DemoConfig.PROPERTY_KEY_OPEN_CONFIG);
- helper.setOptionCallBack("ui");
+ helper.addOption(DemoConfig.Option.KEY_OPEN_CONFIG).
+ setOptionPropertyName(DemoConfig.PROPERTY_KEY_OPEN_CONFIG).
+ setOptionCallBack("ui");
- helper.addOption(DemoConfig.Option.LOG_LEVEL,
- DemoConfig.PROPERTY_LOG_LEVEL);
- helper.setOptionCallBack("log");
+ helper.addOption(DemoConfig.Option.LOG_LEVEL).
+ setOptionPropertyName(DemoConfig.PROPERTY_LOG_LEVEL).
+ setOptionCallBack("log");
- helper.addOption(DemoConfig.Option.LOG_PATTERN_LAYOUT,
- DemoConfig.PROPERTY_LOG_PATTERN_LAYOUT);
- helper.setOptionCallBack("log");
+ helper.addOption(DemoConfig.Option.LOG_PATTERN_LAYOUT).
+ setOptionPropertyName(DemoConfig.PROPERTY_LOG_PATTERN_LAYOUT).
+ setOptionCallBack("log");
helper.buildUI(context, "jaxxdemo.config.category.other");
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/BoxedDecoratorDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/BoxedDecoratorDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/BoxedDecoratorDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -56,12 +56,6 @@
}}'/>
<script><![CDATA[
-
-@Override
-protected String[] getSources() {
- return new String[]{ getDefaultSource(), "BoxedDecoratorDemo.css" };
-}
-
void $afterCompleteSetup() {
for (JComponent boxed : SwingUtil.getLayeredComponents(this)) {
if (boxed == buttonD) {
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -28,8 +28,6 @@
jaxx.runtime.swing.editor.bean.BeanComboBox
</import>
- <BeanComboBoxDemoHandler id='handler' constructorParams='this'/>
-
<Table insets='0' fill='both' weightx='1' constraints='BorderLayout.NORTH'>
<row>
<cell>
@@ -54,22 +52,4 @@
</row>
</Table>
- <script><![CDATA[
-
-protected void $afterCompleteSetup() {
- handler.init();
-}
-
-@Override
-protected String[] getSources() {
- return new String[]{
- getDefaultSource(),
- "BeanComboBoxDemo.css",
- "BeanComboBoxDemo.java",
- "BeanComboBoxDemoHandler.java"
- };
-}
-
-]]></script>
-
</jaxx.demo.DemoPanel>
\ No newline at end of file
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemoHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemoHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemoHandler.java 2013-11-28 10:58:35 UTC (rev 2758)
@@ -27,6 +27,7 @@
import jaxx.demo.entities.DemoDataProvider;
import jaxx.demo.entities.DemoDecoratorProvider;
import jaxx.demo.entities.People;
+import jaxx.runtime.spi.UIHandler;
import org.nuiton.decorator.JXPathDecorator;
import java.util.List;
@@ -40,19 +41,18 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 2.5.9
*/
-public class BeanComboBoxDemoHandler {
+public class BeanComboBoxDemoHandler implements UIHandler<BeanComboBoxDemo> {
- private final BeanComboBoxDemo ui;
+ private JXPathDecorator<People> decorator;
- private final JXPathDecorator<People> decorator;
-
- public BeanComboBoxDemoHandler(BeanComboBoxDemo ui) {
- this.ui = ui;
+ @Override
+ public void beforeInit(BeanComboBoxDemo ui) {
this.decorator = (JXPathDecorator<People>)
new DemoDecoratorProvider().getDecoratorByType(People.class);
}
- public void init() {
+ @Override
+ public void afterInit(BeanComboBoxDemo ui) {
List<People> data = new DemoDataProvider().getPeoples();
ui.getComboBox().init(decorator, data);
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -28,8 +28,6 @@
jaxx.runtime.swing.editor.bean.BeanDoubleList
</import>
- <BeanDoubleListDemoHandler id='handler' constructorParams='this'/>
-
<Table fill='both'>
<row>
<cell>
@@ -49,20 +47,4 @@
</row>
</Table>
- <script><![CDATA[
-
-protected void $afterCompleteSetup() {
- handler.init();
-}
-
-@Override
-protected String[] getSources() {
- return new String[]{
- getDefaultSource(),
- "BeanDoubleListDemoHandler.java",
- };
-}
-
-]]></script>
-
</jaxx.demo.DemoPanel>
\ No newline at end of file
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemoHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemoHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemoHandler.java 2013-11-28 10:58:35 UTC (rev 2758)
@@ -29,30 +29,34 @@
*/
import com.google.common.base.Predicate;
-import java.util.List;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
import jaxx.demo.entities.DemoDataProvider;
import jaxx.demo.entities.DemoDecoratorProvider;
import jaxx.demo.entities.Movie;
import jaxx.demo.entities.People;
+import jaxx.runtime.spi.UIHandler;
import org.nuiton.decorator.JXPathDecorator;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import java.util.List;
+
/** @author kmorin */
-public class BeanDoubleListDemoHandler {
+public class BeanDoubleListDemoHandler implements UIHandler<BeanDoubleListDemo> {
private BeanDoubleListDemo ui;
- public BeanDoubleListDemoHandler(BeanDoubleListDemo ui) {
+ @Override
+ public void beforeInit(BeanDoubleListDemo ui) {
this.ui = ui;
}
- public void init() {
+ @Override
+ public void afterInit(BeanDoubleListDemo ui) {
DemoDataProvider demoDataProvider = new DemoDataProvider();
List<People> data = demoDataProvider.getPeoples();
JXPathDecorator<People> decorator = (JXPathDecorator<People>) new DemoDecoratorProvider().getDecoratorByType(People.class);
ui.getDoubleList().init(decorator, data, data.subList(0, 1));
-
+
final Movie nacho = demoDataProvider.getMovie("0");
final Predicate<People> filter = new Predicate<People>() {
@@ -63,15 +67,13 @@
ui.getFilterOnNachoButton().addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
- if (ui.getFilterOnNachoButton().isSelected()) {
- ui.getDoubleList().getHandler().addFilter(filter);
-
+ if (BeanDoubleListDemoHandler.this.ui.getFilterOnNachoButton().isSelected()) {
+ BeanDoubleListDemoHandler.this.ui.getDoubleList().getHandler().addFilter(filter);
+
} else {
- ui.getDoubleList().getHandler().clearFilters();
+ BeanDoubleListDemoHandler.this.ui.getDoubleList().getHandler().clearFilters();
}
}
});
-
}
-
}
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -28,8 +28,6 @@
jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
</import>
- <BeanFilterableComboBoxDemoHandler id='handler' constructorParams='this'/>
-
<Table insets='0' fill='both' weightx='1' constraints='BorderLayout.NORTH'>
<row>
<cell>
@@ -55,22 +53,4 @@
</row>
</Table>
- <script><![CDATA[
-
-protected void $afterCompleteSetup() {
- handler.init();
-}
-
-@Override
-protected String[] getSources() {
- return new String[]{
- getDefaultSource(),
- "BeanFilterableComboBoxDemo.css",
- "BeanFilterableComboBoxDemo.java",
- "BeanFilterableComboBoxDemoHandler.java"
- };
-}
-
-]]></script>
-
</jaxx.demo.DemoPanel>
\ No newline at end of file
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemoHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemoHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemoHandler.java 2013-11-28 10:58:35 UTC (rev 2758)
@@ -27,6 +27,7 @@
import jaxx.demo.entities.DemoDataProvider;
import jaxx.demo.entities.DemoDecoratorProvider;
import jaxx.demo.entities.People;
+import jaxx.runtime.spi.UIHandler;
import org.nuiton.decorator.JXPathDecorator;
import java.util.List;
@@ -40,19 +41,20 @@
* @author kmorin <kmorin(a)codelutin.com>
* @since 2.5.12
*/
-public class BeanFilterableComboBoxDemoHandler {
+public class BeanFilterableComboBoxDemoHandler implements UIHandler<BeanFilterableComboBoxDemo> {
- private final BeanFilterableComboBoxDemo ui;
+ private JXPathDecorator<People> decorator;
- private final JXPathDecorator<People> decorator;
- public BeanFilterableComboBoxDemoHandler(BeanFilterableComboBoxDemo ui) {
- this.ui = ui;
+ @Override
+ public void beforeInit(BeanFilterableComboBoxDemo ui) {
this.decorator = (JXPathDecorator<People>)
new DemoDecoratorProvider().getDecoratorByType(People.class);
}
- public void init() {
+ @Override
+ public void afterInit(BeanFilterableComboBoxDemo ui) {
+
List<People> data = new DemoDataProvider().getPeoples();
ui.getComboBox().init(decorator, data);
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -1,5 +1,4 @@
<jaxx.demo.DemoPanel layout='{new BorderLayout()}'>
- <!--handler='jaxx.demo.component.jaxx.editor.CoordinateDemoHandler'>-->
<import>
jaxx.runtime.swing.editor.NumberEditor
@@ -12,24 +11,14 @@
<!-- model -->
<CoordinateDemoModel id='model'/>
+ <!-- internal editor models -->
<DmsCoordinate id='latitudeDms'/>
<DmdCoordinate id='latitudeDmd'/>
<Float id='latitudeDd' javaBean='null'/>
-
<DmsCoordinate id='longitudeDms'/>
<DmdCoordinate id='longitudeDmd'/>
<Float id='longitudeDd' javaBean='null'/>
- <script><![CDATA[
-
-@Override
-protected String[] getSources() {
- return new String[]{ getDefaultSource(), "CoordinateDemoModel.java", "CoordinateDemoHandler.java" };
-}
-
-]]>
- </script>
-
<Table insets='0' fill='both' weightx='1' constraints='BorderLayout.NORTH'>
<row>
<cell>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/NumberEditorDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -34,11 +34,6 @@
<script><![CDATA[
-@Override
-protected String[] getSources() {
- return new String[]{ getDefaultSource(), "NumberEditorDemoModel.java" };
-}
-
public void changeNumberPattern() {
editor.setNumberPattern(numberPattern.getText());
}
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/SimpleTimeEditorDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/SimpleTimeEditorDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/SimpleTimeEditorDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -9,28 +9,6 @@
<!-- model -->
<SimpleTimeEditorDemoModel id='demoModel'/>
- <script><![CDATA[
-
-@Override
-protected String[] getSources() {
- return new String[]{ getDefaultSource(),
- "SimpleTimeEditorModel.java",
- "SimpleTimeEditorDemo.css"
- };
-}
-
-void $afterCompleteSetup() {
-
- // init time editor
- editor.init();
-
- // set current time in model
- demoModel.setTime(new java.util.Date());
-}
-]]>
- </script>
-
-
<Table insets='0' fill='both' weightx='1' constraints='BorderLayout.NORTH'>
<row>
<cell>
@@ -63,9 +41,6 @@
<cell>
<SimpleTimeEditor id='editor' constructorParams='this'
border='{new TitledBorder(_("jaxxdemo.timeeditor.editor"))}'/>
- <!--property='time'-->
- <!--bean='{demoModel}'-->
- <!--date="{demoModel.getTime()}"/>-->
</cell>
</row>
<row>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/SimpleTimeEditorDemoHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/SimpleTimeEditorDemoHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/SimpleTimeEditorDemoHandler.java 2013-11-28 10:58:35 UTC (rev 2758)
@@ -1,10 +1,25 @@
package jaxx.demo.component.jaxx.editor;
+import jaxx.runtime.spi.UIHandler;
+
/**
* Created on 11/22/13.
*
* @author Tony CHEMIT <chemit(a)codelutin.com>
* @since 2.6
*/
-public class SimpleTimeEditorDemoHandler {
+public class SimpleTimeEditorDemoHandler implements UIHandler<SimpleTimeEditorDemo> {
+ @Override
+ public void beforeInit(SimpleTimeEditorDemo ui) {
+
+ }
+
+ @Override
+ public void afterInit(SimpleTimeEditorDemo ui) {
+ // init time editor
+ ui.editor.init();
+
+ // set current time in model
+ ui.demoModel.setTime(new java.util.Date());
+ }
}
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/TimeEditorDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/TimeEditorDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/TimeEditorDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -33,14 +33,6 @@
<script><![CDATA[
-@Override
-protected String[] getSources() {
- return new String[]{ getDefaultSource(),
- "TimeEditorDemoModel.java",
- "TimeEditorDemo.css"
- };
-}
-
void $afterCompleteSetup() {
// init time editor
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/databinding/BeanDataBindingDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/databinding/BeanDataBindingDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/databinding/BeanDataBindingDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -29,7 +29,7 @@
<script><![CDATA[
@Override
protected String[] getSources() {
- return new String[]{ getDefaultSource(), "BaseBeanDataBinding.jaxx" };
+ return addDefaultSources( "BaseBeanDataBinding.jaxx" );
}
]]>
</script>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/databinding/BindingExtremeDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/databinding/BindingExtremeDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/databinding/BindingExtremeDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -66,7 +66,7 @@
}
@Override
protected String[] getSources() {
- return new String[]{ getDefaultSource(), "DemoUIModel.java", "DefaultDemoUIModel.java" };
+ return addDefaultSources( "DemoUIModel.java", "DefaultDemoUIModel.java" );
}
]]>
</script>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -40,14 +40,11 @@
<NavDemoTreeTableHelper id='treeTableHelper'
constructorParams='getDataProvider()'/>
- <NavDemoHandler id='handler' constructorParams='this'/>
-
<script><![CDATA[
@Override
protected String[] getSources() {
- return new String[]{ getDefaultSource(),
- "NavDemoHandler.java",
+ return addDefaultSources(
"tree/NavDemoTreeNode.java",
"tree/NavDemoTreeHelper.java",
"tree/NavDemoTreeCellRenderer.java",
@@ -57,12 +54,8 @@
"treetable/NavDemoTreeTableHelper.java",
"treetable/ActorsTreeTableNodeLoador.java",
"treetable/MoviesTreeTableNodeLoador.java"
- };
+ );
}
-
-private void $afterCompleteSetup() {
- getHandler().$afterCompleteSetup();
-}
]]>
</script>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/NavDemoHandler.java 2013-11-28 10:58:35 UTC (rev 2758)
@@ -38,6 +38,7 @@
import jaxx.demo.feature.nav.treetable.NavDemoTreeTableNode;
import jaxx.runtime.JAXXContext;
import jaxx.runtime.SwingUtil;
+import jaxx.runtime.spi.UIHandler;
import jaxx.runtime.swing.CardLayout2;
import jaxx.runtime.swing.ErrorDialogUI;
import jaxx.runtime.swing.nav.NavNode;
@@ -67,58 +68,23 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 2.2
*/
-public class NavDemoHandler {
+public class NavDemoHandler implements UIHandler<NavDemo> {
private static final Log log = LogFactory.getLog(NavDemoHandler.class);
- protected final NavDemo ui;
+ protected NavDemo ui;
public static String MOVIES_CATEGORY_NODE = n_("jaxxdemo.common.movies");
public static String ACTORS_CATEGORY_NODE = n_("jaxxdemo.common.actors");
- public NavDemoHandler(NavDemo ui) {
+ @Override
+ public void beforeInit(NavDemo ui) {
this.ui = ui;
}
- public void initUI(MoviesContentUI contentUI) {
- DecoratorProvider provider =
- contentUI.getContextValue(DecoratorProvider.class);
- JXPathDecorator<Movie> decorator =
- (JXPathDecorator<Movie>) provider.getDecoratorByType(Movie.class);
- contentUI.getListHeader().init(decorator, new ArrayList<Movie>());
- }
-
- public void initUI(ActorsContentUI contentUI) {
- DecoratorProvider provider =
- contentUI.getContextValue(DecoratorProvider.class);
- JXPathDecorator<People> decorator =
- (JXPathDecorator<People>) provider.getDecoratorByType(People.class);
- contentUI.getListHeader().init(decorator, new ArrayList<People>());
- }
-
- public void selectChild(AbstractContentUI<?> contentUI,
- AbstractDemoBean selected) {
- contentUI.getTreeHelper().selectNode(selected.getId());
- contentUI.getTreeTableHelper().selectNode(selected.getId());
- }
-
- public String getContent(AbstractDemoBean data) {
- if (data == null) {
- return "no content";
- }
- StringBuilder buffer = new StringBuilder();
- buffer.append(data);
- return buffer.toString();
- }
-
- public ImageIcon getImage(AbstractDemoBean data) {
- return data == null ? null : SwingUtil.createIcon(data.getImage());
- }
-
- /** To init the {@link NavDemo} ui. */
- public void $afterCompleteSetup() {
-
+ @Override
+ public void afterInit(final NavDemo ui) {
// share in context
ui.setContextValue(this);
@@ -199,6 +165,41 @@
SwingUtil.addExpandOnClickListener(table);
}
+ public void initUI(MoviesContentUI contentUI) {
+ DecoratorProvider provider =
+ contentUI.getContextValue(DecoratorProvider.class);
+ JXPathDecorator<Movie> decorator =
+ (JXPathDecorator<Movie>) provider.getDecoratorByType(Movie.class);
+ contentUI.getListHeader().init(decorator, new ArrayList<Movie>());
+ }
+
+ public void initUI(ActorsContentUI contentUI) {
+ DecoratorProvider provider =
+ contentUI.getContextValue(DecoratorProvider.class);
+ JXPathDecorator<People> decorator =
+ (JXPathDecorator<People>) provider.getDecoratorByType(People.class);
+ contentUI.getListHeader().init(decorator, new ArrayList<People>());
+ }
+
+ public void selectChild(AbstractContentUI<?> contentUI,
+ AbstractDemoBean selected) {
+ contentUI.getTreeHelper().selectNode(selected.getId());
+ contentUI.getTreeTableHelper().selectNode(selected.getId());
+ }
+
+ public String getContent(AbstractDemoBean data) {
+ if (data == null) {
+ return "no content";
+ }
+ StringBuilder buffer = new StringBuilder();
+ buffer.append(data);
+ return buffer.toString();
+ }
+
+ public ImageIcon getImage(AbstractDemoBean data) {
+ return data == null ? null : SwingUtil.createIcon(data.getImage());
+ }
+
protected void openUI(NavNode<?, ?> demoNode) {
// Get demoNode type
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/list/ListBeanValidationDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/list/ListBeanValidationDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/list/ListBeanValidationDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -37,26 +37,20 @@
</import>
<script><![CDATA[
-void $afterCompleteSetup() {
- handler.initUI();
-}
-
@Override
protected String[] getSources() {
- return new String[]{ getDefaultSource(), "ListBeanValidationDemo.css",
+ return addDefaultSources(
+ "ListBeanValidationDemo.css",
"/jaxx.demo.entities.People.java",
"/jaxx.demo.entities.People-error-validation.xml",
"/jaxx.demo.entities.People-info-validation.xml",
"/jaxx.demo.entities.People-warning-validation.xml",
"ListBeanValidationDemoHandler.java",
"PeopleTableModel.java"
- };
+ );
}
]]></script>
- <!-- Handler of this ui -->
- <ListBeanValidationDemoHandler id='handler' constructorParams='this'/>
-
<!-- model -->
<PeopleTableModel id='model'/>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/list/ListBeanValidationDemoHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/list/ListBeanValidationDemoHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/list/ListBeanValidationDemoHandler.java 2013-11-28 10:58:35 UTC (rev 2758)
@@ -26,6 +26,7 @@
import jaxx.demo.entities.DemoDecoratorProvider;
import jaxx.demo.entities.People;
import jaxx.runtime.SwingUtil;
+import jaxx.runtime.spi.UIHandler;
import jaxx.runtime.validator.swing.SwingListValidatorDataLocator;
import jaxx.runtime.validator.swing.SwingListValidatorMessageTableRenderer;
import jaxx.runtime.validator.swing.SwingValidatorUtil;
@@ -50,15 +51,17 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 2.5.3
*/
-public class ListBeanValidationDemoHandler {
+public class ListBeanValidationDemoHandler implements UIHandler<ListBeanValidationDemo>{
- private final ListBeanValidationDemo ui;
+ private ListBeanValidationDemo ui;
- public ListBeanValidationDemoHandler(ListBeanValidationDemo ui) {
+ @Override
+ public void beforeInit(ListBeanValidationDemo ui) {
this.ui = ui;
}
- public void initUI() {
+ @Override
+ public void afterInit(ListBeanValidationDemo ui) {
// customize data table
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/simple/SimpleBeanValidationByListDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/simple/SimpleBeanValidationByListDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/simple/SimpleBeanValidationByListDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -38,13 +38,10 @@
</import>
<script><![CDATA[
-
-void $afterCompleteSetup() {
-}
-
@Override
protected String[] getSources() {
- return new String[]{ getDefaultSource(), "Validation.css",
+ return addDefaultSources(
+ "Validation.css",
"/jaxx.demo.entities.Identity.java",
"/jaxx.demo.entities.Identity-error-validation.xml",
"/jaxx.demo.entities.Identity-info-validation.xml",
@@ -53,7 +50,7 @@
"/jaxx.demo.entities.Model-error-validation.xml",
"/jaxx.demo.entities.Model-info-validation.xml",
"/jaxx.demo.entities.Model-warning-validation.xml"
- };
+ );
}
]]>
</script>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/simple/SimpleBeanValidationByTableDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/simple/SimpleBeanValidationByTableDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/validation/simple/SimpleBeanValidationByTableDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -45,7 +45,8 @@
@Override
protected String[] getSources() {
- return new String[]{ getDefaultSource(), "Validation.css",
+ return addDefaultSources (
+ "Validation.css",
"/jaxx.demo.entities.Identity.java",
"/jaxx.demo.entities.Identity-error-validation.xml",
"/jaxx.demo.entities.Identity-info-validation.xml",
@@ -54,7 +55,7 @@
"/jaxx.demo.entities.Model-error-validation.xml",
"/jaxx.demo.entities.Model-info-validation.xml",
"/jaxx.demo.entities.Model-warning-validation.xml"
- };
+ );
}
]]></script>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/fun/CalculatorDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/fun/CalculatorDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/fun/CalculatorDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -38,7 +38,7 @@
@Override
protected String[] getSources() {
- return new String[]{ getDefaultSource(), "CalculatorDemo.css", "CalculatorEngine.java" };
+ return addDefaultSources( "CalculatorEngine.java" );
}
]]>
</script>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/fun/LabelStyleDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/fun/LabelStyleDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/fun/LabelStyleDemo.jaxx 2013-11-28 10:58:35 UTC (rev 2758)
@@ -30,15 +30,6 @@
javax.swing.BorderFactory
</import>
- <!--<style source="LabelStyleDemo.css"/>-->
- <script><![CDATA[
-@Override
-protected String[] getSources() {
- return new String[]{ getDefaultSource(), "LabelStyleDemo.css" };
-}
-
-]]>
- </script>
<Table id='demoPanel' anchor='north' fill='both'>
<row>
<cell weightx='1' weighty='1' insets='6, 3, 0, 0'>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-11-28 09:29:10 UTC (rev 2757)
+++ trunk/pom.xml 2013-11-28 10:58:35 UTC (rev 2758)
@@ -117,12 +117,12 @@
<nuitonValidatorVersion>3.0-alpha-1</nuitonValidatorVersion>
<nuitonConfigVersion>3.0-alpha-1</nuitonConfigVersion>
<nuitonDecoratorVersion>3.0-alpha-2</nuitonDecoratorVersion>
- <nuitonI18nVersion>2.5.1</nuitonI18nVersion>
- <eugeneVersion>2.6.3</eugeneVersion>
+ <nuitonI18nVersion>2.5.2</nuitonI18nVersion>
+ <eugeneVersion>2.7.3</eugeneVersion>
<jxLayerVersion>3.0.4</jxLayerVersion>
<javaHelpVersion>2.0.05</javaHelpVersion>
<swingXVersion>1.6.5-1</swingXVersion>
- <plexusUtilVersion>3.0.10</plexusUtilVersion>
+ <plexusUtilVersion>3.0.15</plexusUtilVersion>
<!-- i18n configuration -->
<i18n.bundles>fr_FR,en_GB,es_ES</i18n.bundles>
@@ -294,7 +294,8 @@
<dependency>
<groupId>com.fifesoft</groupId>
<artifactId>rsyntaxtextarea</artifactId>
- <version>2.0.7</version>
+ <!--<version>2.0.7</version>-->
+ <version>2.5.0</version>
</dependency>
<!-- swinglabs dependencies -->
1
0
Author: tchemit
Date: 2013-11-28 10:29:10 +0100 (Thu, 28 Nov 2013)
New Revision: 2757
Url: http://nuiton.org/projects/jaxx/repository/revisions/2757
Log:
fixes #2946: Introduce UIHandler contract and a way to glue it to any generated jaxx object
- update jaxx demo
- update doc
Added:
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.css
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemoHandler.java
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemoModel.java
trunk/jaxx-runtime/src/main/java/jaxx/runtime/spi/
trunk/jaxx-runtime/src/main/java/jaxx/runtime/spi/UIHandler.java
Modified:
trunk/jaxx-compiler/src/main/java/jaxx/compiler/CompilerConfiguration.java
trunk/jaxx-compiler/src/main/java/jaxx/compiler/DefaultCompilerConfiguration.java
trunk/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java
trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java
trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultObjectHandler.java
trunk/jaxx-compiler/src/main/java/jaxx/compiler/tasks/GenerateConstructorsTask.java
trunk/jaxx-demo/pom.xml
trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java
trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties
trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties
trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties
trunk/jaxx-maven-plugin/src/main/java/org/nuiton/jaxx/plugin/GenerateMojo.java
trunk/jaxx-widgets/pom.xml
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditor.jaxx
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorHandler.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditor.jaxx
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorHandler.java
trunk/src/site/rst/index.rst
Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/CompilerConfiguration.java
===================================================================
--- trunk/jaxx-compiler/src/main/java/jaxx/compiler/CompilerConfiguration.java 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/CompilerConfiguration.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -28,6 +28,7 @@
import jaxx.compiler.finalizers.JAXXCompilerFinalizer;
import jaxx.compiler.spi.Initializer;
import jaxx.runtime.JAXXContext;
+import jaxx.runtime.spi.UIHandler;
import java.io.File;
import java.util.Map;
@@ -136,6 +137,20 @@
*/
boolean isShowClassDescriptorLoading();
+ /**
+ *
+ * @return {@code true} to detect and add {@link UIHandler} if found in class-path.
+ * @since 2.6
+ */
+ boolean isAddAutoHandlerUI();
+
+ /**
+ *
+ * @param addAutoHandlerUI
+ * @since 2.6
+ */
+ void setAddAutoHandlerUI(boolean addAutoHandlerUI);
+
/** @return the encoding to use to write files */
String getEncoding();
Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/DefaultCompilerConfiguration.java
===================================================================
--- trunk/jaxx-compiler/src/main/java/jaxx/compiler/DefaultCompilerConfiguration.java 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/DefaultCompilerConfiguration.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -29,6 +29,7 @@
import jaxx.compiler.spi.Initializer;
import jaxx.runtime.JAXXContext;
import jaxx.runtime.JAXXObject;
+import jaxx.runtime.spi.UIHandler;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.apache.commons.logging.Log;
@@ -106,6 +107,7 @@
/**
* Fully qualified name of validator factory.
+ *
* @since 2.6
*/
private String validatorFactoryFQN;
@@ -133,6 +135,13 @@
*/
private boolean showClassDescriptorLoading;
+ /**
+ * To detect {@link UIHandler} if found.
+ *
+ * @since 2.6
+ */
+ private boolean addAutoHandlerUI;
+
@Override
public File getTargetDirectory() {
return targetDirectory;
@@ -153,6 +162,17 @@
return showClassDescriptorLoading;
}
+ @Override
+ public boolean isAddAutoHandlerUI() {
+ return addAutoHandlerUI;
+ }
+
+ @Override
+ public void setAddAutoHandlerUI(boolean addAutoHandlerUI) {
+ this.addAutoHandlerUI = addAutoHandlerUI;
+ }
+
+
public void setVerbose(boolean verbose) {
this.verbose = verbose;
}
Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java
===================================================================
--- trunk/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/JAXXCompiler.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -46,6 +46,7 @@
import jaxx.runtime.JAXXObjectDescriptor;
import jaxx.runtime.css.Rule;
import jaxx.runtime.css.Stylesheet;
+import jaxx.runtime.spi.UIHandler;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -95,6 +96,8 @@
import java.util.Set;
import java.util.Stack;
+import static jaxx.compiler.finalizers.DefaultFinalizer.METHOD_NAME$BEFORE_INIT;
+
/**
* Compiles a given {@link #jaxxFile} into a {@link #javaFile}.
*
@@ -294,8 +297,8 @@
*
* @since 2.4
* @deprecated since 2.4.1, will be removed in version 3.0, it is not a good
- * idea to do special treatment for a particular class, to use SwingUtil,
- * do like for other class : import it!
+ * idea to do special treatment for a particular class, to use SwingUtil,
+ * do like for other class : import it!
*/
@Deprecated
protected boolean needSwingUtil;
@@ -466,7 +469,7 @@
Modifier.PUBLIC,
fullClassName,
EMPTY_STRING_ARRAY,
- classLoader
+ getClassLoader()
);
symbolTable.getScriptMethods().add(methodDescriptor);
if (Boolean.class.getName().equals(fullClassName)) {
@@ -475,7 +478,7 @@
Modifier.PUBLIC,
fullClassName,
EMPTY_STRING_ARRAY,
- classLoader
+ getClassLoader()
);
symbolTable.getScriptMethods().add(methodDescriptor);
}
@@ -484,7 +487,7 @@
Modifier.PUBLIC,
JAXXCompilerFinalizer.TYPE_VOID,
new String[]{fullClassName},
- classLoader
+ getClassLoader()
);
symbolTable.getScriptMethods().add(methodDescriptor);
} else {
@@ -496,7 +499,7 @@
Modifier.PUBLIC,
fullClassName,
EMPTY_STRING_ARRAY,
- classLoader
+ getClassLoader()
);
symbolTable.getScriptMethods().add(methodDescriptor);
}
@@ -656,7 +659,69 @@
InputStream in = new FileInputStream(src);
try {
document = parseDocument(in);
- compileFirstPass(document.getDocumentElement());
+
+ Element documentElement = document.getDocumentElement();
+
+ boolean addAutoHandlerUI =
+ getEngine().getConfiguration().isAddAutoHandlerUI();
+
+ String uiHandlerFullClassName;
+
+ if (addAutoHandlerUI) {
+
+ // try to find the
+
+ uiHandlerFullClassName = getOutputClassName() + "Handler";
+ ClassDescriptor uiHandlerClass = null;
+ try {
+ uiHandlerClass = ClassDescriptorHelper.getClassDescriptor(uiHandlerFullClassName, getClassLoader());
+ if (uiHandlerClass != null && !ClassDescriptorHelper.isAssignableFrom(uiHandlerClass, UIHandler.class)) {
+ reportWarning(
+ "Found a handler " + uiHandlerFullClassName
+ + " which does not implements " + UIHandler.class.getName());
+ uiHandlerClass = null;
+ }
+
+ } catch (ClassNotFoundException e) {
+ // not found
+ }
+
+ if (uiHandlerClass == null) {
+ uiHandlerFullClassName = null;
+ }
+ } else {
+
+ uiHandlerFullClassName = documentElement.getAttribute(
+ DefaultObjectHandler.HANDLER_ATTRIBUTE);
+ if (StringUtils.isNotBlank(uiHandlerFullClassName)) {
+
+ // get his class descriptor
+ ClassDescriptor uiHandlerClass = null;
+ try {
+ uiHandlerClass = ClassDescriptorHelper.getClassDescriptor(uiHandlerFullClassName, getClassLoader());
+
+ // check if implements UIHandler
+ if (uiHandlerClass != null && !ClassDescriptorHelper.isAssignableFrom(uiHandlerClass, UIHandler.class)) {
+ reportError(
+ "Found a handler " + uiHandlerFullClassName
+ + " which does not implements " + UIHandler.class.getName());
+ uiHandlerClass = null;
+ }
+ } catch (ClassNotFoundException e) {
+ reportError("Could not find type " + uiHandlerFullClassName);
+ }
+ if (uiHandlerClass == null) {
+ uiHandlerFullClassName = null;
+ }
+ }
+ }
+
+ if (uiHandlerFullClassName != null) {
+
+ setUiHandler(uiHandlerFullClassName);
+ }
+
+ compileFirstPass(documentElement);
} catch (SAXParseException e) {
reportError(e.getLineNumber(), "Invalid XML: " + e.getMessage());
} catch (SAXException e) {
@@ -672,6 +737,20 @@
"Internal error: starting pass two, but tagsBeingCompiled" +
" is not empty: " + tagsBeingCompiled);
}
+
+ if (isUseHandler()) {
+
+ String handler = getUiHandler();
+
+ JavaField field = JavaElementFactory.newField(
+ Modifier.PROTECTED | Modifier.FINAL,
+ handler,
+ DefaultObjectHandler.HANDLER_ATTRIBUTE,
+ false,
+ "new " + getImportedType(handler) + "()"
+ );
+ javaFile.addField(field, false);
+ }
compileSecondPass(document.getDocumentElement());
}
@@ -1242,7 +1321,7 @@
*
* @param type the type to check against super class
* @return {@code true} if super class exists and is assignable against the
- * given type, {@code false} otherwise
+ * given type, {@code false} otherwise
* @throws ClassNotFoundException if could not find class descriptor for
* super-class
*/
@@ -1476,7 +1555,7 @@
*
* @param javaCode the Java code snippet to test
* @return a "cooked" version of the string which has enclosing curly
- * braces removed.
+ * braces removed.
* @throws CompilerException if the code cannot be parsed
*/
public String checkJavaCode(String javaCode) {
@@ -1494,7 +1573,7 @@
* @param attribute (if not null reference the attribute where is defined
* the reference)
* @return <code>true</code> if reference was found, <code>false</code>
- * otherwise and add an error in compiler
+ * otherwise and add an error in compiler
*/
public boolean checkReference(Element tag,
String reference,
@@ -1769,7 +1848,7 @@
*
* @param raw the raw string to be escape
* @return a string in which all 'dangerous' characters have been replaced
- * by equivalent Java escape sequences
+ * by equivalent Java escape sequences
*/
public static String escapeJavaString(String raw) {
StringBuilder out = new StringBuilder(raw);
@@ -1959,8 +2038,8 @@
}
public String getImportedTypeForSimpleName(String type) {
- String suffix = "."+type;
- String result=null;
+ String suffix = "." + type;
+ String result = null;
for (String importedClass : getImportedClasses()) {
if (importedClass.endsWith(suffix)) {
result = importedClass;
@@ -1974,8 +2053,8 @@
* @return the javafile import manager
* @since 2.4
* @deprecated since 2.4.1, will be removed in version 3.0 : do not want
- * to expose eugene export manager in rest of api, this is purpose of
- * JavaFile only
+ * to expose eugene export manager in rest of api, this is purpose of
+ * JavaFile only
*/
@Deprecated
public ImportsManager getImportManager() {
@@ -2011,4 +2090,25 @@
}
return false;
}
+
+ protected String uiHandler;
+
+ public String getUiHandler() {
+ return uiHandler;
+ }
+
+ public void setUiHandler(String uiHandler) {
+ this.uiHandler = uiHandler;
+ }
+
+ public boolean isUseHandler() {
+ return StringUtils.isNotBlank(uiHandler);
+ }
+
+ public void addHandlerBeforeInitInvocation(StringBuilder code) {
+ if (isUseHandler()) {
+ code.append("handler." + METHOD_NAME$BEFORE_INIT + "(this);");
+ code.append(JAXXCompiler.getLineSeparator());
+ }
+ }
}
Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java
===================================================================
--- trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/DefaultFinalizer.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -498,7 +498,10 @@
private static final String PARAMETER_NAME_PARENT_CONTEXT = "parentContext";
+ public static final String METHOD_NAME$BEFORE_INIT = "beforeInit";
+ private static final String METHOD_NAME$AFTER_INIT = "afterInit";
+
@Override
public boolean accept(JAXXCompiler compiler) {
@@ -986,6 +989,7 @@
// code.append(" super();").append(eol);
// }
}
+ compiler.addHandlerBeforeInitInvocation(code);
code.append(METHOD_NAME_$INITIALIZE + "();");
code.append(eol);
return JavaElementFactory.newMethod(PUBLIC,
@@ -1049,6 +1053,7 @@
code.append(".initContext(this, " + PARAMETER_NAME_PARENT_CONTEXT + ");");
code.append(eol);
}
+ compiler.addHandlerBeforeInitInvocation(code);
code.append(METHOD_NAME_$INITIALIZE + "();");
code.append(eol);
JavaArgument argument = JavaElementFactory.newArgument(
@@ -1164,6 +1169,17 @@
//TC-20090313 add an extra method after complete setup
MethodDescriptor method =
compiler.getScriptMethod(METHOD_NAME_$AFTER_COMPLETE_SETUP);
+
+ boolean useHandler = compiler.isUseHandler();
+ if (useHandler) {
+
+ code.append("handler." + METHOD_NAME$AFTER_INIT + "(this);").append(eol);
+
+ if (method != null) {
+ compiler.reportWarning("Should not use deprecated api $afterCompleteSetup, prefer declare a 'handler' attribute on root object.");
+ }
+ }
+
if (method != null) {
code.append(METHOD_NAME_$AFTER_COMPLETE_SETUP + "();").append(eol);
}
Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultObjectHandler.java
===================================================================
--- trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultObjectHandler.java 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultObjectHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -87,6 +87,8 @@
/** Logger. */
private static final Log log = LogFactory.getLog(DefaultObjectHandler.class);
+ public static final String HANDLER_ATTRIBUTE = "handler";
+
public static final String ABSTRACT_ATTRIBUTE = "abstract";
public static final String CONSTRAINTS_ATTRIBUTE = "constraints";
@@ -242,7 +244,7 @@
/**
* @return the <code>JAXXBeanInfo</code> for the class which this <code>DefaultObjectHandler</code>
- * supports.
+ * supports.
*/
public JAXXBeanInfo getJAXXBeanInfo() {
try {
@@ -290,10 +292,10 @@
/**
* @param name name of the property
* @return <code>true</code> if the named member is <i>bound</i> (fires <code>PropertyChangeEvent</code>
- * when modified). Members are either fields (represented by the simple name of the field) or <code>get/is</code>
- * methods (represented by the simple name of the method, <b>not</b> the simplified JavaBeans-style name).
- * Methods which are not actually bound in their native class, but for which proxy events have been
- * configured (such as <code>JTextField.getText</code>, return <code>true</code>.
+ * when modified). Members are either fields (represented by the simple name of the field) or <code>get/is</code>
+ * methods (represented by the simple name of the method, <b>not</b> the simplified JavaBeans-style name).
+ * Methods which are not actually bound in their native class, but for which proxy events have been
+ * configured (such as <code>JTextField.getText</code>, return <code>true</code>.
* @throws UnsupportedAttributeException if attribute is not supported
*/
public boolean isMemberBound(String name) throws UnsupportedAttributeException {
@@ -542,7 +544,7 @@
/**
* @param property property name to test
* @return <code>true</code> if the specified property should be inherited by child components when specified
- * via CSS.
+ * via CSS.
* @throws UnsupportedAttributeException if attribute is not supported
*/
public boolean isPropertyInherited(String property) throws UnsupportedAttributeException {
@@ -552,7 +554,7 @@
/**
* @param name name of event
* @return <code>true</code> if the specified name has the form of an event handler attribute
- * (e.g. "onActionPerformed").
+ * (e.g. "onActionPerformed").
*/
public boolean isEventHandlerName(String name) {
return name.length() > 2 &&
@@ -634,6 +636,7 @@
name.equals(CONSTRUCTOR_PARAMS_ATTRIBUTE) ||
name.equals(STYLE_CLASS_ATTRIBUTE) ||
name.startsWith(XMLNS_ATTRIBUTE) ||
+ name.startsWith(HANDLER_ATTRIBUTE) ||
JAXXCompiler.JAXX_INTERNAL_NAMESPACE.equals(attribute.getNamespaceURI())) {
// ignore, already handled
continue;
@@ -733,7 +736,7 @@
}
if (ClassDescriptorHelper.getClassDescriptor(BeanTypeAware.class).isAssignableFrom(object.getObjectClass())) {
String fqn = compiler.getImportedTypeForSimpleName(value);
- if (fqn!=null) {
+ if (fqn != null) {
// add beanType from genericType
if (log.isDebugEnabled()) {
log.debug("Add beanType property: " + value + " to " + object);
Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/tasks/GenerateConstructorsTask.java
===================================================================
--- trunk/jaxx-compiler/src/main/java/jaxx/compiler/tasks/GenerateConstructorsTask.java 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/tasks/GenerateConstructorsTask.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -48,6 +48,7 @@
import java.util.List;
import static java.lang.reflect.Modifier.PUBLIC;
+import static jaxx.compiler.finalizers.DefaultFinalizer.METHOD_NAME$BEFORE_INIT;
/**
* Task to execute just after finalize task to create all constructors for any
@@ -421,6 +422,7 @@
code.append(");").append(eol);
}
+ addHandlerBeforeInitInvocation(compiler, code);
code.append(DefaultFinalizer.METHOD_NAME_$INITIALIZE + "();");
code.append(eol);
JavaConstructor constructor = JavaElementFactory.newConstructor(PUBLIC,
@@ -431,6 +433,12 @@
compiler.getJavaFile().addConstructor(constructor);
}
+ public void addHandlerBeforeInitInvocation(JAXXCompiler compiler, StringBuilder code) {
+ if (compiler.isUseHandler()) {
+ code.append("handler." + METHOD_NAME$BEFORE_INIT + "(this);");
+ }
+ }
+
protected void addConstructorWithInitialContext(JAXXCompiler compiler,
String className,
List<String> constructorTypes,
@@ -499,6 +507,7 @@
code.append(".initContext(this, " + PARAMETER_NAME_PARENT_CONTEXT + ");");
code.append(eol);
}
+ addHandlerBeforeInitInvocation(compiler, code);
code.append(DefaultFinalizer.METHOD_NAME_$INITIALIZE + "();");
code.append(eol);
JavaConstructor constructor = JavaElementFactory.newConstructor(PUBLIC,
Modified: trunk/jaxx-demo/pom.xml
===================================================================
--- trunk/jaxx-demo/pom.xml 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-demo/pom.xml 2013-11-28 09:29:10 UTC (rev 2757)
@@ -47,6 +47,7 @@
<jaxx.addSourcesToClassPath>true</jaxx.addSourcesToClassPath>
<jaxx.autoImportCss>true</jaxx.autoImportCss>
<jaxx.autoRecurseInCss>false</jaxx.autoRecurseInCss>
+ <jaxx.addAutoHandlerUI>true</jaxx.addAutoHandlerUI>
<!-- generate license bundled files -->
<license.generateBundle>true</license.generateBundle>
Added: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.css
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.css (rev 0)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.css 2013-11-28 09:29:10 UTC (rev 2757)
@@ -0,0 +1,125 @@
+
+#config {
+ border: {new TitledBorder(_("jaxxdemo.numbereditor.configuration"))};
+}
+
+#latitudeShowReset {
+ text: "jaxxdemo.numbereditor.showReset";
+ selected: true;
+}
+
+#latitudeUseDms {
+ text: "jaxxdemo.coordinate.latitudeDms";
+ value: DMS;
+ buttonGroup: latitudeEditor;
+ selected: true;
+}
+
+#latitudeUseDmd {
+ text: "jaxxdemo.coordinate.latitudeDmd";
+ value: DMD;
+ buttonGroup: latitudeEditor;
+}
+
+#latitudeUseDd {
+ text: "jaxxdemo.coordinate.latitudeDd";
+ value: "DD";
+ buttonGroup: latitudeEditor;
+ selected: true;
+}
+
+#longitudeShowReset {
+ text: "jaxxdemo.numbereditor.showReset";
+ selected: true;
+}
+
+#longitudeUseDms {
+ text: "jaxxdemo.coordinate.longitudeDms";
+ value: DMS;
+ buttonGroup: longitudeEditor;
+ selected: true;
+}
+
+#longitudeUseDmd {
+ text: "jaxxdemo.coordinate.longitudeDmd";
+ value: DMD;
+ buttonGroup: longitudeEditor;
+}
+
+#longitudeUseDd {
+ text: "jaxxdemo.coordinate.longitudeDd";
+ value: "DD";
+ buttonGroup: longitudeEditor;
+}
+
+#latitudePane {
+ border: {new TitledBorder(_("jaxxdemo.coordinate.latitude"))};
+}
+
+#latitudeDmsEditor {
+ bean: {latitudeDms};
+ propertySign: sign;
+ propertyDegree: degree;
+ propertyMinute: minute;
+ propertySecond: second;
+ showReset: {latitudeShowReset.isSelected()};
+}
+
+#latitudeDmdEditor {
+ bean: {latitudeDmd};
+ propertySign: sign;
+ propertyDegree: degree;
+ propertyMinute: minute;
+ propertyDecimal: decimal;
+ showReset: {latitudeShowReset.isSelected()};
+}
+
+#latitudeDdEditor {
+ bean: {this};
+ property: latitudeDd;
+ showReset: {latitudeShowReset.isSelected()};
+ useFloat: true;
+ useSign: true;
+}
+
+#longitudePane {
+ border: {new TitledBorder(_("jaxxdemo.coordinate.longitude"))};
+}
+
+#longitudeDmsEditor {
+ bean: {longitudeDms};
+ propertySign: sign;
+ propertyDegree: degree;
+ propertyMinute: minute;
+ propertySecond: second;
+ showReset: {longitudeShowReset.isSelected()};
+}
+
+#longitudeDmdEditor {
+ bean: {longitudeDmd};
+ propertySign: sign;
+ propertyDegree: degree;
+ propertyMinute: minute;
+ propertyDecimal: decimal;
+ showReset: {longitudeShowReset.isSelected()};
+}
+
+#longitudeDdEditor {
+ bean: {this};
+ property: longitudeDd;
+ showReset: {longitudeShowReset.isSelected()};
+ useFloat: true;
+ useSign: true;
+}
+
+#result {
+ border: {new TitledBorder(_("jaxxdemo.coordinate.result"))};
+}
+
+#resultLatitude {
+ text: {handler.getLatitudeText(model.getLatitude())};
+}
+
+#resultLongitude {
+ text: {handler.getLongitudeText(model.getLongitude())};
+}
Property changes on: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.jaxx (rev 0)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
@@ -0,0 +1,87 @@
+<jaxx.demo.DemoPanel layout='{new BorderLayout()}'>
+ <!--handler='jaxx.demo.component.jaxx.editor.CoordinateDemoHandler'>-->
+
+ <import>
+ jaxx.runtime.swing.editor.NumberEditor
+ jaxx.runtime.swing.editor.gis.DmsCoordinate
+ jaxx.runtime.swing.editor.gis.DmsCoordinateEditor
+ jaxx.runtime.swing.editor.gis.DmdCoordinate
+ jaxx.runtime.swing.editor.gis.DmdCoordinateEditor
+ </import>
+
+ <!-- model -->
+ <CoordinateDemoModel id='model'/>
+
+ <DmsCoordinate id='latitudeDms'/>
+ <DmdCoordinate id='latitudeDmd'/>
+ <Float id='latitudeDd' javaBean='null'/>
+
+ <DmsCoordinate id='longitudeDms'/>
+ <DmdCoordinate id='longitudeDmd'/>
+ <Float id='longitudeDd' javaBean='null'/>
+
+ <script><![CDATA[
+
+@Override
+protected String[] getSources() {
+ return new String[]{ getDefaultSource(), "CoordinateDemoModel.java", "CoordinateDemoHandler.java" };
+}
+
+]]>
+ </script>
+
+ <Table insets='0' fill='both' weightx='1' constraints='BorderLayout.NORTH'>
+ <row>
+ <cell>
+ <JPanel id='config' layout='{new GridLayout(1,0)}'>
+
+ <JPanel id='configLatitude' layout='{new GridLayout(0,1)}'>
+ <JCheckBox id='latitudeShowReset'/>
+ <JRadioButton id='latitudeUseDms'
+ onActionPerformed='handler.useLatitudeDmsEditor()'/>
+ <JRadioButton id='latitudeUseDmd'
+ onActionPerformed='handler.useLatitudeDmdEditor()'/>
+ <JRadioButton id='latitudeUseDd'
+ onActionPerformed='handler.useLatitudeDdEditor()'/>
+ </JPanel>
+ <JPanel id='configLongitude' layout='{new GridLayout(0,1)}'>
+ <JCheckBox id='longitudeShowReset'/>
+ <JRadioButton id='longitudeUseDms'
+ onActionPerformed='handler.useLongitudeDmsEditor()'/>
+ <JRadioButton id='longitudeUseDmd'
+ onActionPerformed='handler.useLongitudeDmdEditor()'/>
+ <JRadioButton id='longitudeUseDd'
+ onActionPerformed='handler.useLongitudeDdEditor()'/>
+ </JPanel>
+ </JPanel>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JPanel layout='{new GridLayout(1,0)}'>
+ <JPanel id='latitudePane' layout='{new GridLayout(0,1)}'>
+ <DmsCoordinateEditor id='latitudeDmsEditor' constructorParams='this'/>
+ <DmdCoordinateEditor id='latitudeDmdEditor' constructorParams='this'/>
+ <NumberEditor id='latitudeDdEditor' constructorParams='this'/>
+ </JPanel>
+ <JPanel id='longitudePane' layout='{new GridLayout(0,1)}'>
+ <DmsCoordinateEditor id='longitudeDmsEditor'
+ constructorParams='this'/>
+ <DmdCoordinateEditor id='longitudeDmdEditor'
+ constructorParams='this'/>
+ <NumberEditor id='longitudeDdEditor' constructorParams='this'/>
+ </JPanel>
+ </JPanel>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <JPanel id='result' layout='{new GridLayout(0,1)}'>
+ <JLabel id='resultLatitude'/>
+ <JLabel id='resultLongitude'/>
+
+ </JPanel>
+ </cell>
+ </row>
+ </Table>
+</jaxx.demo.DemoPanel>
\ No newline at end of file
Property changes on: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemo.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemoHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemoHandler.java (rev 0)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemoHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -0,0 +1,153 @@
+package jaxx.demo.component.jaxx.editor;
+
+import jaxx.runtime.spi.UIHandler;
+import jaxx.runtime.swing.editor.gis.DmdCoordinate;
+import jaxx.runtime.swing.editor.gis.DmsCoordinate;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * Created on 11/26/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.6
+ */
+public class CoordinateDemoHandler implements UIHandler<CoordinateDemo> {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(CoordinateDemoHandler.class);
+
+ private CoordinateDemo ui;
+
+ @Override
+ public void beforeInit(CoordinateDemo ui) {
+ if (log.isInfoEnabled()) {
+ log.info("BeforeInit " + ui.getName());
+ }
+ this.ui = ui;
+ }
+
+ @Override
+ public void afterInit(CoordinateDemo ui) {
+
+ if (log.isInfoEnabled()) {
+ log.info("AfterInit " + ui.getName());
+ }
+
+ ui.getLatitudeDmsEditor().init(false);
+ ui.getLatitudeDmdEditor().init(false);
+ ui.getLatitudeDdEditor().init();
+ ui.getLongitudeDmsEditor().init(true);
+ ui.getLongitudeDmdEditor().init(true);
+ ui.getLongitudeDdEditor().init();
+
+ ui.getLatitudeDms().addPropertyChangeListener(new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ DmsCoordinate source = (DmsCoordinate) evt.getSource();
+ getModel().setLatitude(source.toDecimal());
+ }
+ });
+ ui.getLatitudeDmd().addPropertyChangeListener(new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ DmdCoordinate source = (DmdCoordinate) evt.getSource();
+ getModel().setLatitude(source.toDecimal());
+ }
+ });
+
+ ui.addPropertyChangeListener("latitudeDd", new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ Float source = (Float) evt.getNewValue();
+ getModel().setLatitude(source);
+ }
+ });
+
+ ui.getLongitudeDms().addPropertyChangeListener(new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ DmsCoordinate source = (DmsCoordinate) evt.getSource();
+ getModel().setLongitude(source.toDecimal());
+ }
+ });
+ ui.getLongitudeDmd().addPropertyChangeListener(new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ DmdCoordinate source = (DmdCoordinate) evt.getSource();
+ getModel().setLongitude(source.toDecimal());
+ }
+ });
+
+ ui.addPropertyChangeListener("longitudeDd", new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ Float source = (Float) evt.getNewValue();
+ getModel().setLongitude(source);
+ }
+ });
+
+ useLatitudeDmsEditor();
+ useLongitudeDmsEditor();
+ }
+
+ public void useLatitudeDmsEditor() {
+ ui.getLatitudeDmsEditor().setValue(DmsCoordinate.valueOf(getModel().getLatitude()));
+ ui.getLatitudeDmsEditor().setEnabled(true);
+ ui.getLatitudeDmdEditor().setEnabled(false);
+ ui.getLatitudeDdEditor().setEnabled(false);
+ }
+
+ public void useLatitudeDmdEditor() {
+ ui.getLatitudeDmdEditor().setValue(DmdCoordinate.valueOf(getModel().getLatitude()));
+ ui.getLatitudeDmsEditor().setEnabled(false);
+ ui.getLatitudeDmdEditor().setEnabled(true);
+ ui.getLatitudeDdEditor().setEnabled(false);
+ }
+
+ public void useLatitudeDdEditor() {
+ ui.getLatitudeDdEditor().setModel(getModel().getLatitude());
+ ui.getLatitudeDmsEditor().setEnabled(false);
+ ui.getLatitudeDmdEditor().setEnabled(false);
+ ui.getLatitudeDdEditor().setEnabled(true);
+ }
+
+ public void useLongitudeDmsEditor() {
+ ui.getLongitudeDmsEditor().setValue(DmsCoordinate.valueOf(getModel().getLongitude()));
+ ui.getLongitudeDmsEditor().setEnabled(true);
+ ui.getLongitudeDmdEditor().setEnabled(false);
+ ui.getLongitudeDdEditor().setEnabled(false);
+ }
+
+ public void useLongitudeDmdEditor() {
+ ui.getLongitudeDmdEditor().setValue(DmdCoordinate.valueOf(getModel().getLongitude()));
+ ui.getLongitudeDmsEditor().setEnabled(false);
+ ui.getLongitudeDmdEditor().setEnabled(true);
+ ui.getLongitudeDdEditor().setEnabled(false);
+ }
+
+ public void useLongitudeDdEditor() {
+ ui.getLongitudeDdEditor().setModel(getModel().getLongitude());
+ ui.getLongitudeDmsEditor().setEnabled(false);
+ ui.getLongitudeDmdEditor().setEnabled(false);
+ ui.getLongitudeDdEditor().setEnabled(true);
+ }
+
+ public String getLatitudeText(Float latitude) {
+ return _("jaxxdemo.coordinate.result.latitude", latitude);
+ }
+
+ public String getLongitudeText(Float longitude) {
+ return _("jaxxdemo.coordinate.result.longitude", longitude);
+ }
+
+ protected CoordinateDemoModel getModel() {
+ return ui.getModel();
+ }
+}
Property changes on: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemoHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemoModel.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemoModel.java (rev 0)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemoModel.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -0,0 +1,42 @@
+package jaxx.demo.component.jaxx.editor;
+
+import org.jdesktop.beans.AbstractSerializableBean;
+
+/**
+ * Created on 11/26/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.6
+ */
+public class CoordinateDemoModel extends AbstractSerializableBean {
+
+ public static final String PROPERTY_LONGITUDE = "longitude";
+
+ public static final String PROPERTY_LATITUDE = "latitude";
+
+ private static final long serialVersionUID = 1L;
+
+ protected Float latitude;
+
+ protected Float longitude;
+
+ public Float getLongitude() {
+ return longitude;
+ }
+
+ public void setLongitude(Float longitude) {
+ Object oldValue = getLongitude();
+ this.longitude = longitude;
+ firePropertyChange(PROPERTY_LONGITUDE, oldValue, longitude);
+ }
+
+ public Float getLatitude() {
+ return latitude;
+ }
+
+ public void setLatitude(Float latitude) {
+ Object oldValue = getLatitude();
+ this.latitude = latitude;
+ firePropertyChange(PROPERTY_LATITUDE, oldValue, latitude);
+ }
+}
Property changes on: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/CoordinateDemoModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -29,6 +29,7 @@
import jaxx.demo.component.jaxx.StatusMessagePanelDemo;
import jaxx.demo.component.jaxx.editor.BeanComboBoxDemo;
import jaxx.demo.component.jaxx.editor.ComboEditorDemo;
+import jaxx.demo.component.jaxx.editor.CoordinateDemo;
import jaxx.demo.component.jaxx.editor.DatePickerDemo;
import jaxx.demo.component.jaxx.editor.FileEditorDemo;
import jaxx.demo.component.jaxx.editor.I18nEditorDemo;
@@ -167,7 +168,8 @@
ListSelectorDemo.class,
BeanComboBoxDemo.class,
BeanFilterableComboBoxDemo.class,
- BeanDoubleListDemo.class
+ BeanDoubleListDemo.class,
+ CoordinateDemo.class
);
addMapping(n_("jaxxdemo.feature"),
Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties
===================================================================
--- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2013-11-28 09:29:10 UTC (rev 2757)
@@ -235,6 +235,20 @@
jaxxdemo.config.ui.locale=Language used in application
jaxxdemo.config.ui.logLevel=Log level
jaxxdemo.config.ui.logPatternLayout=Log pattern
+jaxxdemo.coordinate.latitude=
+jaxxdemo.coordinate.latitudeDd=
+jaxxdemo.coordinate.latitudeDmd=
+jaxxdemo.coordinate.latitudeDms=
+jaxxdemo.coordinate.longitude=
+jaxxdemo.coordinate.longitudeDd=
+jaxxdemo.coordinate.longitudeDmd=
+jaxxdemo.coordinate.longitudeDms=
+jaxxdemo.coordinate.model=
+jaxxdemo.coordinate.model.latitude=
+jaxxdemo.coordinate.model.longitude=
+jaxxdemo.coordinate.result=
+jaxxdemo.coordinate.result.latitude=
+jaxxdemo.coordinate.result.longitude=
jaxxdemo.datePickerEditor.dateResult=Result display
jaxxdemo.datePickerEditor.patternLayout=Date pattern
jaxxdemo.datePickerEditor.showPopupButton=Display popup button
@@ -283,6 +297,8 @@
jaxxdemo.numbereditor.model=Result
jaxxdemo.numbereditor.model.float=Float result \: %1$s
jaxxdemo.numbereditor.model.int=Integer result \: %1$s
+jaxxdemo.numbereditor.model.latitude=
+jaxxdemo.numbereditor.model.longitude=
jaxxdemo.numbereditor.model.numberPattern=Editor pattern \: %s
jaxxdemo.numbereditor.numberPattern.configuration=Number Pattern
jaxxdemo.numbereditor.showPopupButton=Show Popup button
Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties
===================================================================
--- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2013-11-28 09:29:10 UTC (rev 2757)
@@ -236,6 +236,20 @@
jaxxdemo.config.ui.locale=La langue utilisée par l'application
jaxxdemo.config.ui.logLevel=Level de log
jaxxdemo.config.ui.logPatternLayout=Pattern des log
+jaxxdemo.coordinate.latitude=
+jaxxdemo.coordinate.latitudeDd=
+jaxxdemo.coordinate.latitudeDmd=
+jaxxdemo.coordinate.latitudeDms=
+jaxxdemo.coordinate.longitude=
+jaxxdemo.coordinate.longitudeDd=
+jaxxdemo.coordinate.longitudeDmd=
+jaxxdemo.coordinate.longitudeDms=
+jaxxdemo.coordinate.model=
+jaxxdemo.coordinate.model.latitude=
+jaxxdemo.coordinate.model.longitude=
+jaxxdemo.coordinate.result=
+jaxxdemo.coordinate.result.latitude=
+jaxxdemo.coordinate.result.longitude=
jaxxdemo.datePickerEditor.dateResult=Affichage du résultat
jaxxdemo.datePickerEditor.patternLayout=Pattern de date
jaxxdemo.datePickerEditor.showPopupButton=Afficher le boutton pour ouvrir la popup
@@ -286,6 +300,8 @@
jaxxdemo.numbereditor.model=Résultat
jaxxdemo.numbereditor.model.float=Valeur décimale \: %1$s
jaxxdemo.numbereditor.model.int=Valeur entière \: %1$s
+jaxxdemo.numbereditor.model.latitude=
+jaxxdemo.numbereditor.model.longitude=
jaxxdemo.numbereditor.model.numberPattern=Format de l'éditeur \: %s
jaxxdemo.numbereditor.numberPattern.configuration=Pattern du nombre
jaxxdemo.numbereditor.showPopupButton=Afficher le boutton de popup
Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties
===================================================================
--- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2013-11-28 09:29:10 UTC (rev 2757)
@@ -235,6 +235,17 @@
jaxxdemo.config.ui.locale=La langue utilisée par l'application
jaxxdemo.config.ui.logLevel=Level de log
jaxxdemo.config.ui.logPatternLayout=Pattern des log
+jaxxdemo.coordinate.latitude=Latitude
+jaxxdemo.coordinate.latitudeDd=Latitude (au format DD)
+jaxxdemo.coordinate.latitudeDmd=Latitude (au format DMD)
+jaxxdemo.coordinate.latitudeDms=Latitude (au format DMS)
+jaxxdemo.coordinate.longitude=Longitude
+jaxxdemo.coordinate.longitudeDd=Longitude (au format DD)
+jaxxdemo.coordinate.longitudeDmd=Longitude (au format DMD)
+jaxxdemo.coordinate.longitudeDms=Longitude (au format DMS)
+jaxxdemo.coordinate.result=Résultat
+jaxxdemo.coordinate.result.latitude=<html>Latitude <strong>%s</strong>
+jaxxdemo.coordinate.result.longitude=<html>Longitude <strong>%s</strong>
jaxxdemo.datePickerEditor.dateResult=Affichage du résultat
jaxxdemo.datePickerEditor.patternLayout=Pattern de date
jaxxdemo.datePickerEditor.showPopupButton=Afficher le boutton pour ouvrir la popup
Modified: trunk/jaxx-maven-plugin/src/main/java/org/nuiton/jaxx/plugin/GenerateMojo.java
===================================================================
--- trunk/jaxx-maven-plugin/src/main/java/org/nuiton/jaxx/plugin/GenerateMojo.java 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-maven-plugin/src/main/java/org/nuiton/jaxx/plugin/GenerateMojo.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -38,6 +38,7 @@
import jaxx.compiler.spi.Initializer;
import jaxx.runtime.JAXXContext;
import jaxx.runtime.JAXXObject;
+import jaxx.runtime.spi.UIHandler;
import jaxx.runtime.swing.help.JAXXHelpBroker;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -302,6 +303,16 @@
private boolean showClassDescriptorLoading;
/**
+ * For each jaxx file, try to add a {@link UIHandler} on it.
+ *
+ * The fqn of the handler must be jaxxFileName{@code Handler}.
+ *
+ * @since 2.6
+ */
+ @Parameter(property = "jaxx.addAutoHandlerUI", defaultValue = "false")
+ private boolean addAutoHandlerUI;
+
+ /**
* Decorators available in engine.
*
* @since 2.0.2
@@ -570,6 +581,16 @@
}
@Override
+ public boolean isAddAutoHandlerUI() {
+ return addAutoHandlerUI;
+ }
+
+ @Override
+ public void setAddAutoHandlerUI(boolean addAutoHandlerUI) {
+ this.addAutoHandlerUI = addAutoHandlerUI;
+ }
+
+ @Override
public Class<? extends JAXXContext> getJaxxContextClass() {
return jaxxContextClass;
}
Added: trunk/jaxx-runtime/src/main/java/jaxx/runtime/spi/UIHandler.java
===================================================================
--- trunk/jaxx-runtime/src/main/java/jaxx/runtime/spi/UIHandler.java (rev 0)
+++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/spi/UIHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -0,0 +1,40 @@
+package jaxx.runtime.spi;
+
+/*
+ * #%L
+ * JAXX :: Runtime
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2008 - 2013 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+
+import jaxx.runtime.JAXXObject;
+
+/**
+ * Created on 11/26/13.
+ *
+ * @author Tony Chemit <chemit(a)codelutin.com>
+ * @since 2.6
+ */
+public interface UIHandler<UI extends JAXXObject> {
+
+ void beforeInit(UI ui);
+
+ void afterInit(UI ui);
+}
Property changes on: trunk/jaxx-runtime/src/main/java/jaxx/runtime/spi/UIHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/jaxx-widgets/pom.xml
===================================================================
--- trunk/jaxx-widgets/pom.xml 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-widgets/pom.xml 2013-11-28 09:29:10 UTC (rev 2757)
@@ -44,17 +44,9 @@
<properties>
<jaxx.addSourcesToClassPath>true</jaxx.addSourcesToClassPath>
<jaxx.autoImportCss>true</jaxx.autoImportCss>
+ <jaxx.addAutoHandlerUI>true</jaxx.addAutoHandlerUI>
<!--jaxx.useUIManagerForIcon>true</jaxx.useUIManagerForIcon-->
</properties>
-
- <!-- Source control management. -->
- <scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/jaxx/trunk/jaxx-widgets</connection>
- <developerConnection>
- scm:svn:http://svn.nuiton.org/svn/jaxx/trunk/jaxx-widgets
- </developerConnection>
- <url>http://nuiton.org/projects/jaxx/repository/show/trunkjaxx-widgets</url>
- </scm>
<dependencies>
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditor.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditor.jaxx 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditor.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
@@ -38,8 +38,8 @@
<!-- model -->
<DmdCoordinateEditorModel id='model'/>
- <!-- handler -->
- <DmdCoordinateEditorHandler id='handler' constructorParams='this'/>
+ <!--<!– handler –>-->
+ <!--<DmdCoordinateEditorHandler id='handler' constructorParams='this'/>-->
<script><![CDATA[
public void init(boolean longitudeEditor) { handler.init(longitudeEditor); }
@@ -48,7 +48,7 @@
public void setPropertyDegree(String property ) { model.setPropertyDegree(property); }
public void setPropertyMinute(String property ) { model.setPropertyMinute(property); }
public void setPropertyDecimal(String property ) { model.setPropertyDecimal(property); }
-public void setValue(DmdCoordinate value) { handler.setValue(value, false); }
+public void setValue(DmdCoordinate value) { handler.setValue(value, true); }
]]>
</script>
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorHandler.java 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -25,6 +25,7 @@
*/
import com.google.common.base.Preconditions;
+import jaxx.runtime.spi.UIHandler;
import jaxx.runtime.swing.editor.bean.BeanUIUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -43,13 +44,13 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 2.6
*/
-public class DmdCoordinateEditorHandler {
+public class DmdCoordinateEditorHandler implements UIHandler<DmdCoordinateEditor>{
/** Logger. */
private static final Log log =
LogFactory.getLog(DmdCoordinateEditorHandler.class);
- private final DmdCoordinateEditor ui;
+ private DmdCoordinateEditor ui;
protected Method signMutator;
@@ -63,33 +64,35 @@
protected boolean valueModelIsAdjusting;
- protected final DmdCoordinateConverter signedConverter;
+ protected DmdCoordinateConverter signedConverter;
- protected final DmdCoordinateConverter unsignedConverter;
+ protected DmdCoordinateConverter unsignedConverter;
protected DefaultFormatterFactory signedFormatterFactory;
protected DefaultFormatterFactory unsignedFormatterFactory;
- public DmdCoordinateEditorHandler(DmdCoordinateEditor ui) {
- this.ui = ui;
+// public DmdCoordinateEditorHandler(DmdCoordinateEditor ui) {
+// this.ui = ui;
+//
+// // can't use the one from ConverterUtil since we deal with some internal states
+// this.signedConverter = new DmdCoordinateConverter();
+// this.signedConverter.setUseSign(true);
+// this.unsignedConverter = new DmdCoordinateConverter();
+// }
+ @Override
+ public void beforeInit(DmdCoordinateEditor ui) {
+ this.ui=ui;
// can't use the one from ConverterUtil since we deal with some internal states
this.signedConverter = new DmdCoordinateConverter();
this.signedConverter.setUseSign(true);
this.unsignedConverter = new DmdCoordinateConverter();
}
- public String getMaskFormatterPattern(boolean longitudeEditor, boolean useSign) {
- String pattern = "**°**''**";
- if (longitudeEditor) {
- // add one more degre
- pattern = "*" + pattern;
- }
- if (useSign) {
- pattern = "-" + pattern;
- }
- return pattern;
+ @Override
+ public void afterInit(DmdCoordinateEditor ui) {
+ // nothing special to do here
}
public void init(boolean longitudeEditor) {
@@ -267,6 +270,18 @@
}
}
+ protected String getMaskFormatterPattern(boolean longitudeEditor, boolean useSign) {
+ String pattern = "**°**''**";
+ if (longitudeEditor) {
+ // add one more degre
+ pattern = "*" + pattern;
+ }
+ if (useSign) {
+ pattern = "-" + pattern;
+ }
+ return pattern;
+ }
+
private class ModelPropertyChangeListener implements PropertyChangeListener {
private final DmdCoordinateEditorModel model;
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditor.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditor.jaxx 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditor.jaxx 2013-11-28 09:29:10 UTC (rev 2757)
@@ -39,8 +39,8 @@
<!-- model -->
<DmsCoordinateEditorModel id='model'/>
- <!-- handler -->
- <DmsCoordinateEditorHandler id='handler' constructorParams='this'/>
+ <!--<!– handler –>-->
+ <!--<DmsCoordinateEditorHandler id='handler' constructorParams='this'/>-->
<script><![CDATA[
public void init(boolean longitudeEditor) { handler.init(longitudeEditor); }
@@ -49,7 +49,7 @@
public void setPropertyDegree(String property ) { model.setPropertyDegree(property); }
public void setPropertyMinute(String property ) { model.setPropertyMinute(property); }
public void setPropertySecond(String property ) { model.setPropertySecond(property); }
-public void setValue(DmsCoordinate value) { handler.setValue(value, false); }
+public void setValue(DmsCoordinate value) { handler.setValue(value, true); }
]]>
</script>
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorHandler.java 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorHandler.java 2013-11-28 09:29:10 UTC (rev 2757)
@@ -25,6 +25,7 @@
*/
import com.google.common.base.Preconditions;
+import jaxx.runtime.spi.UIHandler;
import jaxx.runtime.swing.editor.bean.BeanUIUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -43,13 +44,13 @@
* @author Tony Chemit <chemit(a)codelutin.com>
* @since 2.6
*/
-public class DmsCoordinateEditorHandler {
+public class DmsCoordinateEditorHandler implements UIHandler<DmsCoordinateEditor>{
/** Logger. */
private static final Log log =
LogFactory.getLog(DmsCoordinateEditorHandler.class);
- private final DmsCoordinateEditor ui;
+ protected DmsCoordinateEditor ui;
protected Method signMutator;
@@ -63,23 +64,37 @@
protected boolean valueModelIsAdjusting;
- protected final DmsCoordinateConverter signedConverter;
+ protected DmsCoordinateConverter signedConverter;
- protected final DmsCoordinateConverter unsignedConverter;
+ protected DmsCoordinateConverter unsignedConverter;
protected DefaultFormatterFactory signedFormatterFactory;
protected DefaultFormatterFactory unsignedFormatterFactory;
- public DmsCoordinateEditorHandler(DmsCoordinateEditor ui) {
- this.ui = ui;
+// public DmsCoordinateEditorHandler(DmsCoordinateEditor ui) {
+// this.ui = ui;
+//
+// // can't use the one from ConverterUtil since we deal with some internal states
+// this.signedConverter = new DmsCoordinateConverter();
+// this.signedConverter.setUseSign(true);
+// this.unsignedConverter = new DmsCoordinateConverter();
+// }
+ @Override
+ public void beforeInit(DmsCoordinateEditor ui) {
+ this.ui=ui;
// can't use the one from ConverterUtil since we deal with some internal states
this.signedConverter = new DmsCoordinateConverter();
this.signedConverter.setUseSign(true);
this.unsignedConverter = new DmsCoordinateConverter();
}
+ @Override
+ public void afterInit(DmsCoordinateEditor ui) {
+ // nothing special to do here
+ }
+
public void init(boolean longitudeEditor) {
final DmsCoordinateEditorModel model = ui.getModel();
@@ -256,6 +271,19 @@
}
}
+ protected String getMaskFormatterPattern(boolean longitudeEditor,
+ boolean useSign) {
+ String pattern = "**°**''**''''";
+ if (longitudeEditor) {
+ // add one more degre
+ pattern = "*" + pattern;
+ }
+ if (useSign) {
+ pattern = "-" + pattern;
+ }
+ return pattern;
+ }
+
private class ModelPropertyChangeListener implements PropertyChangeListener {
private final DmsCoordinateEditorModel model;
@@ -286,18 +314,6 @@
}
}
}
- }
- protected String getMaskFormatterPattern(boolean longitudeEditor,
- boolean useSign) {
- String pattern = "**°**''**''''";
- if (longitudeEditor) {
- // add one more degre
- pattern = "*" + pattern;
- }
- if (useSign) {
- pattern = "-" + pattern;
- }
- return pattern;
}
}
Modified: trunk/src/site/rst/index.rst
===================================================================
--- trunk/src/site/rst/index.rst 2013-11-26 14:10:47 UTC (rev 2756)
+++ trunk/src/site/rst/index.rst 2013-11-28 09:29:10 UTC (rev 2757)
@@ -38,6 +38,36 @@
english translation at the same time. To help you wait, you can have a look to
the demo_.
+Nouveautés de la version 2.6
+----------------------------
+
+Ajout de l'option addAutoUIHandler
+__________________________________
+
+Cette option permet de détecter un handler associé à chaque fichier jaxx.
+
+Le handler doit porter le nom du fichier java associé au fichier jaxx suffixé par Handler.
+
+Ce handler doit de plus implanter un nouveau contract *jaxx.runtime.spi.UIHandler*.
+
+Le contract contient deux méthodes
+
+- *beforeInit* qui est appelé juste avant la méthode *$initialize* de chaque object jaxx
+- *afterInit* appelée après l'init de l'ojet jaxx, à savoir tout à la fin de la
+ méthode *$completeSetup*.
+
+Voir http://nuiton.org/issues/2946.
+
+Ajout de nouveaux éditeurs
+__________________________
+
+De nouveaux éditeurs sont intégrés dans JAXX, à savoir :
+
+- éditeur de temps (http://nuiton.org/issues/2924)
+- éditeurs de coordonnées spatiales (http://nuiton.org/issues/2929)
+
+Ils sont intégrés dans la démo de JAXX.
+
Nouveautés de la version 2.5
----------------------------
1
0
r2756 - in trunk/jaxx-widgets/src: main/java/jaxx/runtime/swing/editor/gis test/java/jaxx/runtime/swing/editor/gis test/resources
by tchemit@users.nuiton.org 26 Nov '13
by tchemit@users.nuiton.org 26 Nov '13
26 Nov '13
Author: tchemit
Date: 2013-11-26 15:10:47 +0100 (Tue, 26 Nov 2013)
New Revision: 2756
Url: http://nuiton.org/projects/jaxx/repository/revisions/2756
Log:
fixes #2929: Introduce some coordinate editors
Modified:
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinate.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateConverter.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditor.jaxx
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorHandler.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorModel.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinate.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateConverter.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditor.jaxx
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorHandler.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorModel.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/MaskFormatterFromConverter.java
trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateConverterTest.java
trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorTest.java
trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateTest.java
trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateConverterTest.java
trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorTest.java
trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateTest.java
trunk/jaxx-widgets/src/test/resources/log4j.properties
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinate.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinate.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinate.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -67,6 +67,27 @@
}
/**
+ * Methode statique de fabrique de position a partir d'un autre {@link DmdCoordinate}.
+ * <p/>
+ * Note : Si la valeur vaut <code>null</code>, alors on
+ * reinitialise les composants de la position a <code>null</code> et la
+ * methode {@link #isNull()} vaudra alors {@code true}.
+ *
+ * @param decimal la valeur au format decimal
+ * @return une nouvelle instance de position convertie
+ */
+ public static DmdCoordinate valueOf(DmdCoordinate decimal) {
+ DmdCoordinate r = empty();
+ if (decimal != null) {
+ r.setSign(decimal.isSign());
+ r.setDegree(decimal.getDegree());
+ r.setMinute(decimal.getMinute());
+ r.setDecimal(decimal.getDecimal());
+ }
+ return r;
+ }
+
+ /**
* Methode statique de fabrique de position a partir d'une valeur du format
* decimal.
* <p/>
@@ -92,7 +113,10 @@
* @param dc la valeur des décimales de minutes
* @return une nouvelle instance de position convertie
*/
- public static DmdCoordinate valueOf(boolean sign, int d, int m, int dc) {
+ public static DmdCoordinate valueOf(boolean sign,
+ Integer d,
+ Integer m,
+ Integer dc) {
DmdCoordinate r = new DmdCoordinate();
r.setSign(sign);
r.setDegree(d);
@@ -185,39 +209,17 @@
if (rest > 0) {
m = rest / 100;
dc = (rest - m * 100);
-
- // clean not used values
- if (m == 0) {
- m = null;
- }
- if (dc == 0) {
- dc = null;
- }
}
- if (d == 0) {
- d = null;
- }
-
- if (d != null || m != null || dc != null) {
-
- // fill with 0 other null values
- // if one value is not null, then put zero everywhere
- if (d == null) {
- d = 0;
- }
- if (m == null) {
- m = 0;
- }
- if (dc == null) {
- dc = 0;
- }
- }
}
degree = d;
minute = m;
decimal = dc;
sign = si;
+
+ if (decimal != null) {
+ removeTrailingZero();
+ }
}
public Float toDecimal() {
@@ -235,6 +237,31 @@
return result;
}
+ public void addTrailingZero() {
+
+ if (degree == null) {
+ degree = 0;
+ }
+ if (minute == null) {
+ minute = 0;
+ }
+ if (decimal == null) {
+ decimal = 0;
+ }
+ }
+
+ public void removeTrailingZero() {
+ if (degree != null && degree == 0) {
+ degree = null;
+ }
+ if (minute != null && minute == 0) {
+ minute = null;
+ }
+ if (decimal != null && decimal == 0) {
+ decimal = null;
+ }
+ }
+
public Integer getSignedDegree() {
Integer result = null;
if (!isDegreeNull()) {
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateConverter.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateConverter.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateConverter.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -44,10 +44,6 @@
protected boolean forLongitude;
- public boolean isUseSign() {
- return useSign;
- }
-
public void setUseSign(boolean useSign) {
this.useSign = useSign;
}
@@ -59,15 +55,26 @@
@Override
public Object convert(Class aClass, Object value) {
+ if (!isEnabled(aClass)) {
+ throw new ConversionException(
+ _("jaxx.error.no.convertor.coordinateDmd", value));
+ }
+
Object result = null;
- if (value != null) {
+ if (value == null) {
- if (!isEnabled(aClass)) {
- throw new ConversionException(
- _("jaxx.error.no.convertor.coordinateDmd", value));
+ if (aClass.equals(String.class)) {
+
+ result = String.format(
+ DmdCoordinate.COORDINATE_STRING_PATTERN,
+ useSign ? "-" : "",
+ StringUtils.leftPad("", forLongitude ? 3 : 2, ' '),
+ StringUtils.leftPad("", 2, ' '),
+ StringUtils.leftPad("", 2, ' '));
}
-
+ } else {
+
if (aClass.equals(value.getClass())) {
// same class, no convertion to do
@@ -84,16 +91,15 @@
String minutesStr = matcher.group(2).replaceAll("\\s", "");
String decimalesStr = matcher.group(3).replaceAll("\\s", "");
- Integer degre = degresStr.isEmpty() || "-".equals(degresStr) ? 0 : Integer.valueOf(degresStr);
- Integer minutes = minutesStr.isEmpty() ? 0 : Integer.valueOf(minutesStr);
- Integer decimal = decimalesStr.isEmpty() ? 0 : Integer.valueOf(decimalesStr);
+ Integer degre = degresStr.isEmpty() || "-".equals(degresStr) ? null : Math.abs(Integer.valueOf(degresStr));
+ Integer minutes = minutesStr.isEmpty() ? null : Integer.valueOf(minutesStr);
+ Integer decimal = decimalesStr.isEmpty() ? null : Integer.valueOf(decimalesStr);
boolean signed = degresStr.contains("-");
- result =
- DmdCoordinate.valueOf(signed,
- Math.abs(degre),
- minutes,
- decimal);
+ result = DmdCoordinate.valueOf(signed,
+ degre,
+ minutes,
+ decimal);
}
} else if (value instanceof DmdCoordinate) {
@@ -120,7 +126,6 @@
StringUtils.leftPad(degreeStr, forLongitude ? 3 : 2, ' '),
StringUtils.leftPad(minuteStr, 2, ' '),
StringUtils.leftPad(decimalStr, 2, ' '));
-
}
}
return result;
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditor.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditor.jaxx 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditor.jaxx 2013-11-26 14:10:47 UTC (rev 2756)
@@ -42,13 +42,12 @@
<DmdCoordinateEditorHandler id='handler' constructorParams='this'/>
<script><![CDATA[
-public void init() { handler.init(); }
+public void init(boolean longitudeEditor) { handler.init(longitudeEditor); }
public void setBean(Serializable bean) { model.setBean(bean); }
public void setPropertySign(String property ) { model.setPropertySign(property); }
public void setPropertyDegree(String property ) { model.setPropertyDegree(property); }
public void setPropertyMinute(String property ) { model.setPropertyMinute(property); }
public void setPropertyDecimal(String property ) { model.setPropertyDecimal(property); }
-public void setLongitudeEditor(boolean longitudeEditor) { model.setLongitudeEditor(longitudeEditor); }
public void setValue(DmdCoordinate value) { handler.setValue(value, false); }
]]>
</script>
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorHandler.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorHandler.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -31,7 +31,6 @@
import javax.swing.JFormattedTextField;
import javax.swing.text.DefaultFormatterFactory;
-import javax.swing.text.MaskFormatter;
import java.awt.event.KeyEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -64,17 +63,37 @@
protected boolean valueModelIsAdjusting;
- private final DmdCoordinateConverter converter;
+ protected final DmdCoordinateConverter signedConverter;
+ protected final DmdCoordinateConverter unsignedConverter;
+
+ protected DefaultFormatterFactory signedFormatterFactory;
+
+ protected DefaultFormatterFactory unsignedFormatterFactory;
+
public DmdCoordinateEditorHandler(DmdCoordinateEditor ui) {
this.ui = ui;
// can't use the one from ConverterUtil since we deal with some internal states
- this.converter = new DmdCoordinateConverter();
+ this.signedConverter = new DmdCoordinateConverter();
+ this.signedConverter.setUseSign(true);
+ this.unsignedConverter = new DmdCoordinateConverter();
}
- public void init() {
+ public String getMaskFormatterPattern(boolean longitudeEditor, boolean useSign) {
+ String pattern = "**°**''**";
+ if (longitudeEditor) {
+ // add one more degre
+ pattern = "*" + pattern;
+ }
+ if (useSign) {
+ pattern = "-" + pattern;
+ }
+ return pattern;
+ }
+ public void init(boolean longitudeEditor) {
+
final DmdCoordinateEditorModel model = ui.getModel();
Preconditions.checkNotNull(model.getBean(), "could not find bean in " + ui);
@@ -83,8 +102,6 @@
Preconditions.checkNotNull(model.getPropertyMinute(), "could not find propertyMinute in " + ui);
Preconditions.checkNotNull(model.getPropertyDecimal(), "could not find propertyDecimal in " + ui);
- converter.setForLongitude(model.isLongitudeEditor());
-
Object bean = model.getBean();
signMutator = BeanUIUtil.getMutator(bean, model.getPropertySign());
Preconditions.checkNotNull(signMutator, "could not find mutator for " + model.getPropertySign());
@@ -98,23 +115,46 @@
decimalMutator = BeanUIUtil.getMutator(bean, model.getPropertyDecimal());
Preconditions.checkNotNull(decimalMutator, "could not find mutator for " + model.getPropertyDecimal());
- MaskFormatter maskFormatter;
- try {
+ signedConverter.setForLongitude(longitudeEditor);
+ unsignedConverter.setForLongitude(longitudeEditor);
- String pattern = model.getMaskFormatterPattern();
- maskFormatter = new MaskFormatterFromConverter<DmdCoordinate>(
- DmdCoordinate.class, pattern, converter);
- maskFormatter.setValidCharacters(" 01234567890");
- } catch (ParseException e) {
- // can't happen here
- throw new RuntimeException(e);
+ {
+ // prepare unsigned formatter factory
+ String pattern = getMaskFormatterPattern(longitudeEditor, false);
+ MaskFormatterFromConverter<DmdCoordinate> maskFormatter;
+ try {
+ maskFormatter = MaskFormatterFromConverter.newFormatter(
+ DmdCoordinate.class,
+ pattern, unsignedConverter);
+ maskFormatter.setValidCharacters(" 01234567890");
+ maskFormatter.setCommitsOnValidEdit(true);
+ unsignedFormatterFactory = new DefaultFormatterFactory(maskFormatter);
+ } catch (ParseException e) {
+ // can't happen here
+ throw new RuntimeException(e);
+ }
}
+ {
+ // prepare signed formatter factory
+ String pattern = getMaskFormatterPattern(longitudeEditor, true);
+ MaskFormatterFromConverter<DmdCoordinate> maskFormatter;
+ try {
+ maskFormatter = MaskFormatterFromConverter.newFormatter(
+ DmdCoordinate.class,
+ pattern, signedConverter);
+ maskFormatter.setValidCharacters(" 01234567890");
+ maskFormatter.setCommitsOnValidEdit(true);
+ signedFormatterFactory = new DefaultFormatterFactory(maskFormatter);
+ } catch (ParseException e) {
+ // can't happen here
+ throw new RuntimeException(e);
+ }
+ }
- DefaultFormatterFactory formatterFactory =
- new DefaultFormatterFactory(maskFormatter);
-
JFormattedTextField editor = ui.getEditor();
- editor.setFormatterFactory(formatterFactory);
+ editor.setFormatterFactory(model.isSign() ?
+ signedFormatterFactory :
+ unsignedFormatterFactory);
editor.setFocusLostBehavior(JFormattedTextField.COMMIT);
// When editor changes his value, propagate it to model
@@ -129,18 +169,6 @@
}
});
- // When longitudeEditor property changed, propagate to the converter
- model.addPropertyChangeListener(
- DmdCoordinateEditorModel.PROPERTY_LONGITUDE_EDITOR,
- new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- Boolean newValue = (Boolean) evt.getNewValue();
- converter.setForLongitude(newValue != null && newValue);
- }
- }
- );
-
// When model sign changed, let's push it back in bean
model.addPropertyChangeListener(
DmdCoordinateEditorModel.PROPERTY_SIGN,
@@ -183,7 +211,7 @@
setValue(null, true);
// use back unsigned format
- converter.setUseSign(false);
+ ui.getEditor().setFormatterFactory(unsignedFormatterFactory);
}
public void onKeyReleased(KeyEvent e) {
@@ -196,21 +224,23 @@
log.debug("Key pressed: " + keyChar + " (caret position: " + caretPosition + ")");
}
- String newValue = null;
- DefaultFormatterFactory newFactory = null;
if (keyChar == '-') {
+ DmdCoordinate value = (DmdCoordinate) source.getValue();
+
+ DefaultFormatterFactory newFactory;
+
// try to switch unsigned to signed
- boolean useSign = converter.isUseSign();
+ boolean useSign = ui.getModel().isSign();
+
if (useSign) {
if (log.isDebugEnabled()) {
log.debug("Switch to unsigned");
}
- converter.setUseSign(false);
- source.setText(source.getText().substring(1).trim());
+ newFactory = unsignedFormatterFactory;
// remove a sign
caretPosition--;
@@ -219,26 +249,20 @@
if (log.isDebugEnabled()) {
log.debug("Switch to signed");
}
- converter.setUseSign(true);
+ newFactory = signedFormatterFactory;
- source.setText("-" + source.getText());
-
// add a sign
caretPosition++;
}
- try {
- source.commitEdit();
- } catch (ParseException e1) {
- // ignore it
- if (log.isErrorEnabled()) {
- log.error("Could not commit edit of " + source.getText(), e1);
- }
- }
- if (log.isDebugEnabled()) {
- log.debug("Key pressed: newValue " + source.getValue());
- }
+ DmdCoordinate newValue = DmdCoordinate.valueOf(value);
+ newValue.setSign(!useSign);
+
+ source.setFormatterFactory(newFactory);
+ source.setValue(newValue);
+
e.consume();
+
source.setCaretPosition(caretPosition);
}
}
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorModel.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorModel.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorModel.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -44,8 +44,6 @@
public static final String PROPERTY_PROPERTY_DECIMAL = "propertyDecimal";
- public static final String PROPERTY_LONGITUDE_EDITOR = "longitudeEditor";
-
private static final long serialVersionUID = 1L;
/** Bean where to push data. */
@@ -63,11 +61,6 @@
/** Name of the property of the bean to fire the change of the {@link #decimal}. */
protected String propertyDecimal;
- /**
- * {@code true} if longitude editor, {@code false} for latitude editor.
- */
- protected boolean longitudeEditor;
-
public Serializable getBean() {
return bean;
}
@@ -118,16 +111,6 @@
firePropertyChange(PROPERTY_PROPERTY_DECIMAL, oldValue, propertyDecimal);
}
- public boolean isLongitudeEditor() {
- return longitudeEditor;
- }
-
- public void setLongitudeEditor(boolean longitudeEditor) {
- Object oldValue = isLongitudeEditor();
- this.longitudeEditor = longitudeEditor;
- firePropertyChange(PROPERTY_BEAN, oldValue, longitudeEditor);
- }
-
public void setValue(DmdCoordinate value) {
setSign(value != null && value.isSign());
setDegree(value == null ? null : value.getDegree());
@@ -135,15 +118,6 @@
setDecimal(value == null ? null : value.getDecimal());
}
- public String getMaskFormatterPattern() {
- String pattern = "**°**''**";
- if (isLongitudeEditor()) {
- // add one more degre
- pattern = "*" + pattern;
- }
- return pattern;
- }
-
public String getStringPattern() {
String pattern = COORDINATE_STRING_PATTERN;
return pattern;
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinate.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinate.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinate.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -67,6 +67,27 @@
}
/**
+ * Methode statique de fabrique de position a partir d'un autre {@link DmsCoordinate}.
+ * <p/>
+ * Note : Si la valeur vaut <code>null</code>, alors on
+ * reinitialise les composants de la position a <code>null</code> et la
+ * methode {@link #isNull()} vaudra alors {@code true}.
+ *
+ * @param decimal la valeur au format decimal
+ * @return une nouvelle instance de position convertie
+ */
+ public static DmsCoordinate valueOf(DmsCoordinate decimal) {
+ DmsCoordinate r = new DmsCoordinate();
+ if (decimal != null) {
+ r.setSign(decimal.isSign());
+ r.setDegree(decimal.getDegree());
+ r.setMinute(decimal.getMinute());
+ r.setSecond(decimal.getSecond());
+ }
+ return r;
+ }
+
+ /**
* Methode statique de fabrique de position a partir d'une valeur du format
* decimal.
* <p/>
@@ -92,7 +113,7 @@
* @param s la valeur des secondes
* @return une nouvelle instance de position convertie
*/
- public static DmsCoordinate valueOf(boolean sign, int d, int m, int s) {
+ public static DmsCoordinate valueOf(boolean sign, Integer d, Integer m, Integer s) {
DmsCoordinate r = new DmsCoordinate();
r.setSign(sign);
r.setDegree(d);
@@ -204,39 +225,16 @@
d++;
m = 0;
}
-
- // clean not used values
- if (m == 0) {
- m = null;
- }
- if (s == 0) {
- s = null;
- }
-
- if (d != null || m != null || s != null) {
-
- // if one value is not null, then put zero everywhere
- if (d == null) {
- d = 0;
- }
- if (m == null) {
- m = 0;
- }
- if (s == null) {
- s = 0;
- }
- }
}
-// if (d != null && d == 0) {
-// d = null;
-// }
-
degree = d;
minute = m;
second = s;
sign = si;
+ if (decimal != null) {
+ removeTrailingZero();
+ }
}
public Float toDecimal() {
@@ -266,6 +264,32 @@
return result;
}
+ public DmsCoordinate addTrailingZero() {
+ if (degree == null) {
+ degree = 0;
+ }
+ if (minute == null) {
+ minute = 0;
+ }
+ if (second == null) {
+ second = 0;
+ }
+ return this;
+ }
+
+ public DmsCoordinate removeTrailingZero() {
+ if (degree != null && degree == 0) {
+ degree = null;
+ }
+ if (minute != null && minute == 0) {
+ minute = null;
+ }
+ if (second != null && second == 0) {
+ second = null;
+ }
+ return this;
+ }
+
public Integer getSignedDegree() {
Integer result = null;
if (!isDegreeNull()) {
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateConverter.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateConverter.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateConverter.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -44,10 +44,6 @@
protected boolean forLongitude;
- public boolean isUseSign() {
- return useSign;
- }
-
public void setUseSign(boolean useSign) {
this.useSign = useSign;
}
@@ -59,14 +55,25 @@
@Override
public Object convert(Class aClass, Object value) {
+ if (!isEnabled(aClass)) {
+ throw new ConversionException(
+ _("jaxx.error.no.convertor.coordinateDms", value));
+ }
+
Object result = null;
- if (value != null) {
+ if (value == null) {
- if (!isEnabled(aClass)) {
- throw new ConversionException(
- _("jaxx.error.no.convertor.coordinateDmd", value));
+ if (aClass.equals(String.class)) {
+
+ result = String.format(
+ DmsCoordinate.COORDINATE_STRING_PATTERN,
+ useSign ? "-" : "",
+ StringUtils.leftPad("", forLongitude ? 3 : 2, ' '),
+ StringUtils.leftPad("", 2, ' '),
+ StringUtils.leftPad("", 2, ' '));
}
+ } else {
if (aClass.equals(value.getClass())) {
@@ -84,13 +91,13 @@
String minutesStr = matcher.group(2).replaceAll("\\s", "");
String secondsStr = matcher.group(3).replaceAll("\\s", "");
- Integer degre = degresStr.isEmpty() || "-".equals(degresStr) ? 0 : Integer.valueOf(degresStr);
- Integer minutes = minutesStr.isEmpty() ? 0 : Integer.valueOf(minutesStr);
- Integer seconds = secondsStr.isEmpty() ? 0 : Integer.valueOf(secondsStr);
+ Integer degre = degresStr.isEmpty() || "-".equals(degresStr) ? null : Math.abs(Integer.valueOf(degresStr));
+ Integer minutes = minutesStr.isEmpty() ? null : Integer.valueOf(minutesStr);
+ Integer seconds = secondsStr.isEmpty() ? null : Integer.valueOf(secondsStr);
boolean signed = degresStr.contains("-");
result = DmsCoordinate.valueOf(signed,
- Math.abs(degre),
+ degre,
minutes,
seconds);
}
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditor.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditor.jaxx 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditor.jaxx 2013-11-26 14:10:47 UTC (rev 2756)
@@ -43,13 +43,12 @@
<DmsCoordinateEditorHandler id='handler' constructorParams='this'/>
<script><![CDATA[
-public void init() { handler.init(); }
+public void init(boolean longitudeEditor) { handler.init(longitudeEditor); }
public void setBean(Serializable bean) { model.setBean(bean); }
public void setPropertySign(String property ) { model.setPropertySign(property); }
public void setPropertyDegree(String property ) { model.setPropertyDegree(property); }
public void setPropertyMinute(String property ) { model.setPropertyMinute(property); }
public void setPropertySecond(String property ) { model.setPropertySecond(property); }
-public void setLongitudeEditor(boolean longitudeEditor) { model.setLongitudeEditor(longitudeEditor); }
public void setValue(DmsCoordinate value) { handler.setValue(value, false); }
]]>
</script>
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorHandler.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorHandler.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -31,7 +31,6 @@
import javax.swing.JFormattedTextField;
import javax.swing.text.DefaultFormatterFactory;
-import javax.swing.text.MaskFormatter;
import java.awt.event.KeyEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -64,16 +63,24 @@
protected boolean valueModelIsAdjusting;
- private final DmsCoordinateConverter converter;
+ protected final DmsCoordinateConverter signedConverter;
+ protected final DmsCoordinateConverter unsignedConverter;
+
+ protected DefaultFormatterFactory signedFormatterFactory;
+
+ protected DefaultFormatterFactory unsignedFormatterFactory;
+
public DmsCoordinateEditorHandler(DmsCoordinateEditor ui) {
this.ui = ui;
// can't use the one from ConverterUtil since we deal with some internal states
- this.converter = new DmsCoordinateConverter();
+ this.signedConverter = new DmsCoordinateConverter();
+ this.signedConverter.setUseSign(true);
+ this.unsignedConverter = new DmsCoordinateConverter();
}
- public void init() {
+ public void init(boolean longitudeEditor) {
final DmsCoordinateEditorModel model = ui.getModel();
@@ -96,24 +103,46 @@
secondMutator = BeanUIUtil.getMutator(bean, model.getPropertySecond());
Preconditions.checkNotNull(secondMutator, "could not find mutator for " + model.getPropertySecond());
- converter.setForLongitude(model.isLongitudeEditor());
+ signedConverter.setForLongitude(longitudeEditor);
+ unsignedConverter.setForLongitude(longitudeEditor);
- MaskFormatter maskFormatter;
- try {
-
- String pattern = model.getMaskFormatterPattern();
- maskFormatter = new MaskFormatterFromConverter<DmsCoordinate>(
- DmsCoordinate.class,
- pattern, converter);
- maskFormatter.setValidCharacters(" 01234567890");
- } catch (ParseException e) {
- // can't happen here
- throw new RuntimeException(e);
+ {
+ // prepare unsigned formatter factory
+ String pattern = getMaskFormatterPattern(longitudeEditor, false);
+ MaskFormatterFromConverter<DmsCoordinate> maskFormatter;
+ try {
+ maskFormatter = MaskFormatterFromConverter.newFormatter(
+ DmsCoordinate.class,
+ pattern, unsignedConverter);
+ maskFormatter.setValidCharacters(" 01234567890");
+ maskFormatter.setCommitsOnValidEdit(true);
+ unsignedFormatterFactory = new DefaultFormatterFactory(maskFormatter);
+ } catch (ParseException e) {
+ // can't happen here
+ throw new RuntimeException(e);
+ }
}
- DefaultFormatterFactory formatterFactory = new DefaultFormatterFactory(maskFormatter);
+ {
+ // prepare signed formatter factory
+ String pattern = getMaskFormatterPattern(longitudeEditor, true);
+ MaskFormatterFromConverter<DmsCoordinate> maskFormatter;
+ try {
+ maskFormatter = MaskFormatterFromConverter.newFormatter(
+ DmsCoordinate.class,
+ pattern, signedConverter);
+ maskFormatter.setValidCharacters(" 01234567890");
+ maskFormatter.setCommitsOnValidEdit(true);
+ signedFormatterFactory = new DefaultFormatterFactory(maskFormatter);
+ } catch (ParseException e) {
+ // can't happen here
+ throw new RuntimeException(e);
+ }
+ }
JFormattedTextField editor = ui.getEditor();
- editor.setFormatterFactory(formatterFactory);
+ editor.setFormatterFactory(model.isSign() ?
+ signedFormatterFactory :
+ unsignedFormatterFactory);
editor.setFocusLostBehavior(JFormattedTextField.COMMIT);
// When editor changes his value, propagate it to model
@@ -128,18 +157,6 @@
}
});
- // When longitudeEditor property changed, propagate to the converter
- model.addPropertyChangeListener(
- DmsCoordinateEditorModel.PROPERTY_LONGITUDE_EDITOR,
- new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- Boolean newValue = (Boolean) evt.getNewValue();
- converter.setForLongitude(newValue != null && newValue);
- }
- }
- );
-
// When model sign changed, let's push it back in bean
model.addPropertyChangeListener(
DmsCoordinateEditorModel.PROPERTY_SIGN,
@@ -178,11 +195,12 @@
}
public void resetEditor() {
+
// set null value to model
setValue(null, true);
// use back unsigned format
- converter.setUseSign(false);
+ ui.getEditor().setFormatterFactory(unsignedFormatterFactory);
}
public void onKeyReleased(KeyEvent e) {
@@ -195,21 +213,23 @@
log.debug("Key pressed: " + keyChar + " (caret position: " + caretPosition + ")");
}
- boolean needConsume = false;
if (keyChar == '-') {
+ DmsCoordinate value = (DmsCoordinate) source.getValue();
+
+ DefaultFormatterFactory newFactory;
+
// try to switch unsigned to signed
- boolean useSign = converter.isUseSign();
+ boolean useSign = ui.getModel().isSign();
if (useSign) {
if (log.isDebugEnabled()) {
log.debug("Switch to unsigned");
}
- converter.setUseSign(false);
- source.setText(source.getText().substring(1).trim());
+ newFactory = unsignedFormatterFactory;
// remove a sign
caretPosition--;
@@ -218,32 +238,20 @@
if (log.isDebugEnabled()) {
log.debug("Switch to signed");
}
- converter.setUseSign(true);
+ newFactory = signedFormatterFactory;
- source.setText("-" + source.getText());
-
// add a sign
caretPosition++;
}
- needConsume = useSign != converter.isUseSign();
- }
+ DmsCoordinate newValue = DmsCoordinate.valueOf(value);
+ newValue.setSign(!useSign);
- try {
- source.commitEdit();
- } catch (ParseException e1) {
- // ignore it
- if (log.isErrorEnabled()) {
- log.error("Could not commit edit of " + source.getText(), e1);
- }
- }
+ source.setFormatterFactory(newFactory);
+ source.setValue(newValue);
- if (log.isDebugEnabled()) {
- log.debug("Key pressed: newValue " + source.getValue());
- }
+ e.consume();
- if (needConsume) {
- e.consume();
source.setCaretPosition(caretPosition);
}
}
@@ -279,4 +287,17 @@
}
}
}
+
+ protected String getMaskFormatterPattern(boolean longitudeEditor,
+ boolean useSign) {
+ String pattern = "**°**''**''''";
+ if (longitudeEditor) {
+ // add one more degre
+ pattern = "*" + pattern;
+ }
+ if (useSign) {
+ pattern = "-" + pattern;
+ }
+ return pattern;
+ }
}
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorModel.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorModel.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorModel.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -44,8 +44,6 @@
public static final String PROPERTY_PROPERTY_SECOND = "propertySecond";
- public static final String PROPERTY_LONGITUDE_EDITOR = "longitudeEditor";
-
private static final long serialVersionUID = 1L;
/** Bean where to push data. */
@@ -63,11 +61,6 @@
/** Name of the property of the bean to fire the change of the {@link #second}. */
protected String propertySecond;
- /**
- * {@code true} if longitude editor, {@code false} for latitude editor.
- */
- protected boolean longitudeEditor;
-
public Serializable getBean() {
return bean;
}
@@ -118,16 +111,6 @@
firePropertyChange(PROPERTY_PROPERTY_SECOND, oldValue, propertySecond);
}
- public boolean isLongitudeEditor() {
- return longitudeEditor;
- }
-
- public void setLongitudeEditor(boolean longitudeEditor) {
- Object oldValue = isLongitudeEditor();
- this.longitudeEditor = longitudeEditor;
- firePropertyChange(PROPERTY_BEAN, oldValue, longitudeEditor);
- }
-
public void setValue(DmsCoordinate value) {
setSign(value != null && value.isSign());
setDegree(value == null ? null : value.getDegree());
@@ -135,15 +118,6 @@
setSecond(value == null ? null : value.getSecond());
}
- public String getMaskFormatterPattern() {
- String pattern = "**°**''**''''";
- if (isLongitudeEditor()) {
- // add one more degre
- pattern = "*" + pattern;
- }
- return pattern;
- }
-
public String getStringPattern() {
return COORDINATE_STRING_PATTERN;
}
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/MaskFormatterFromConverter.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/MaskFormatterFromConverter.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/gis/MaskFormatterFromConverter.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -43,7 +43,13 @@
private final Class<O> type;
- public MaskFormatterFromConverter(Class<O> type,
+ public static <O> MaskFormatterFromConverter<O> newFormatter(Class<O> type,
+ String pattern,
+ Converter converter) throws ParseException {
+ return new MaskFormatterFromConverter<O>(type, pattern, converter);
+ }
+
+ protected MaskFormatterFromConverter(Class<O> type,
String pattern,
Converter converter) throws ParseException {
super(pattern);
Modified: trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateConverterTest.java
===================================================================
--- trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateConverterTest.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateConverterTest.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -36,19 +36,28 @@
*/
public class DmdCoordinateConverterTest {
-
@Test
public void testConvert() throws Exception {
ConverterUtil.initConverters();
- testConversion(false, "- 0° 0'44", DmdCoordinate.valueOf(-0.007333f));
- testConversion(false, " 0° 0'44", DmdCoordinate.valueOf(0.007333f));
+ testConversion(false, "- ° '44", DmdCoordinate.valueOf(-0.007333f));
+ testConversion(false, " ° '44", DmdCoordinate.valueOf(0.007333f));
+ testConversion(false, " ° '99", DmdCoordinate.valueOf(false, null, null, 99));
+ testConversion(false, " ° ' ", DmdCoordinate.empty());
+ testConversion(false, " °39'99", DmdCoordinate.valueOf(false, null, 39, 99));
+ testConversion(false, " °39' ", DmdCoordinate.valueOf(false, null, 39, null));
testConversion(false, " 0°39'99", DmdCoordinate.valueOf(false, 0, 39, 99));
+ testConversion(false, " 0° ' ", DmdCoordinate.valueOf(false, 0, null, null));
- testConversion(true, "- 0° 0'44", DmdCoordinate.valueOf(-0.007333f));
- testConversion(true, " 0° 0'44", DmdCoordinate.valueOf(0.007333f));
+ testConversion(true, "- ° '44", DmdCoordinate.valueOf(-0.007333f));
+ testConversion(true, " ° '44", DmdCoordinate.valueOf(0.007333f));
+ testConversion(true, " ° ' ", DmdCoordinate.empty());
+ testConversion(true, " ° '99", DmdCoordinate.valueOf(false, null, null, 99));
+ testConversion(true, " °39'99", DmdCoordinate.valueOf(false, null, 39, 99));
+ testConversion(true, " °39' ", DmdCoordinate.valueOf(false, null, 39, null));
testConversion(true, " 0°39'99", DmdCoordinate.valueOf(false, 0, 39, 99));
+ testConversion(true, " 0° ' ", DmdCoordinate.valueOf(false, 0, null, null));
}
protected void testConversion(boolean forLongitude, String expectedString, DmdCoordinate expectedCoordinate) {
@@ -61,6 +70,7 @@
DmdCoordinate actualCoordinate;
// String -> DmdCoordinate
+
actualCoordinate = (DmdCoordinate) converter.convert(DmdCoordinate.class, expectedString);
Assert.assertNotNull(actualCoordinate);
Assert.assertEquals(actualCoordinate.isSign(), expectedCoordinate.isSign());
@@ -83,6 +93,7 @@
Assert.assertEquals(expectedString, actualStr);
// DmdCoordinate -> DmdCoordinate
+
actualCoordinate = (DmdCoordinate) converter.convert(DmdCoordinate.class, expectedCoordinate);
Assert.assertNotNull(actualCoordinate);
Assert.assertEquals(actualCoordinate.isSign(), expectedCoordinate.isSign());
Modified: trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorTest.java
===================================================================
--- trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorTest.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateEditorTest.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -153,9 +153,8 @@
longitudeEditor.setPropertyDegree(EditorBean.PROPERTY_LONGITUDE_DEGREE);
longitudeEditor.setPropertyMinute(EditorBean.PROPERTY_LONGITUDE_MINUTE);
longitudeEditor.setPropertyDecimal(EditorBean.PROPERTY_LONGITUDE_DECIMAL);
- longitudeEditor.setLongitudeEditor(true);
longitudeEditor.setShowReset(true);
- longitudeEditor.init();
+ longitudeEditor.init(true);
DmdCoordinateEditor latitudeEditor = new DmdCoordinateEditor();
latitudeEditor.setBean(bean);
@@ -163,9 +162,8 @@
latitudeEditor.setPropertyDegree(EditorBean.PROPERTY_LATITUDE_DEGREE);
latitudeEditor.setPropertyMinute(EditorBean.PROPERTY_LATITUDE_MINUTE);
latitudeEditor.setPropertyDecimal(EditorBean.PROPERTY_LATITUDE_DECIMAL);
- latitudeEditor.setLongitudeEditor(false);
latitudeEditor.setShowReset(true);
- latitudeEditor.init();
+ latitudeEditor.init(false);
final JLabel latitudeResult = new JLabel();
final JLabel longitudeResult = new JLabel();
Modified: trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateTest.java
===================================================================
--- trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateTest.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmdCoordinateTest.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -43,7 +43,15 @@
coordinate.fromDecimal(42.7f);
- assertDmdCoordinate(coordinate, false, 42,42,0);
+ assertDmdCoordinate(coordinate, false, 42, 42, null);
+
+ coordinate.addTrailingZero();
+
+ assertDmdCoordinate(coordinate, false, 42, 42, 0);
+
+ coordinate.removeTrailingZero();
+
+ assertDmdCoordinate(coordinate, false, 42, 42, null);
}
{
@@ -52,7 +60,7 @@
float decimalExcepted = 42.707f;
coordinate.fromDecimal(decimalExcepted);
- assertDmdCoordinate(coordinate, false, 42,42,42);
+ assertDmdCoordinate(coordinate, false, 42, 42, 42);
Float decimal = coordinate.toDecimal();
Assert.assertEquals(decimalExcepted, decimal, 0.001);
@@ -82,7 +90,7 @@
coordinate.fromDecimal(expected);
- assertDmdCoordinate(coordinate, false, 12,12,0);
+ assertDmdCoordinate(coordinate, false, 12, 12, null);
}
{
@@ -96,7 +104,7 @@
component.fromDecimal(expected);
- assertDmdCoordinate(component, false, 12,12,20);
+ assertDmdCoordinate(component, false, 12, 12, 20);
}
}
@@ -113,7 +121,7 @@
Assert.assertTrue(coordinate.isMinuteValid());
Assert.assertTrue(coordinate.isDecimalValid());
- assertDmdCoordinate(coordinate, true, 0, 0, 44);
+ assertDmdCoordinate(coordinate, true, null, null, 44);
}
public static void assertDmdCoordinate(DmdCoordinate coordinate,
Modified: trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateConverterTest.java
===================================================================
--- trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateConverterTest.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateConverterTest.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -42,16 +42,28 @@
ConverterUtil.initConverters();
- testConversion(false, "- 0° 0'26''", DmsCoordinate.valueOf(-0.007333f));
- testConversion(false, " 0° 0'26''", DmsCoordinate.valueOf(0.007333f));
+ testConversion(false, "- ° '26''", DmsCoordinate.valueOf(-0.007333f));
+ testConversion(false, " ° '26''", DmsCoordinate.valueOf(0.007333f));
+ testConversion(false, " ° '59''", DmsCoordinate.valueOf(false, null, null, 59));
+ testConversion(false, " ° ' ''", DmsCoordinate.empty());
+ testConversion(false, " °39'59''", DmsCoordinate.valueOf(false, null, 39, 59));
+ testConversion(false, " °39' ''", DmsCoordinate.valueOf(false, null, 39, null));
testConversion(false, " 0°39'59''", DmsCoordinate.valueOf(false, 0, 39, 59));
+ testConversion(false, " 0° ' ''", DmsCoordinate.valueOf(false, 0, null, null));
- testConversion(true, "- 0° 0'26''", DmsCoordinate.valueOf(-0.007333f));
- testConversion(true, " 0° 0'26''", DmsCoordinate.valueOf(0.007333f));
+ testConversion(true, "- ° '26''", DmsCoordinate.valueOf(-0.007333f));
+ testConversion(true, " ° '26''", DmsCoordinate.valueOf(0.007333f));
+ testConversion(true, " ° ' ''", DmsCoordinate.empty());
+ testConversion(true, " ° '59''", DmsCoordinate.valueOf(false, null, null, 59));
+ testConversion(true, " °39'59''", DmsCoordinate.valueOf(false, null, 39, 59));
+ testConversion(true, " °39' ''", DmsCoordinate.valueOf(false, null, 39, null));
testConversion(true, " 0°39'59''", DmsCoordinate.valueOf(false, 0, 39, 59));
+ testConversion(true, " 0° ' ''", DmsCoordinate.valueOf(false, 0, null, null));
}
- protected void testConversion(boolean forLongitude, String expectedString, DmsCoordinate expectedCoordinate) {
+ protected void testConversion(boolean forLongitude,
+ String expectedString,
+ DmsCoordinate expectedCoordinate) {
DmsCoordinateConverter converter = (DmsCoordinateConverter) ConverterUtil.getConverter(DmsCoordinate.class);
converter.setForLongitude(forLongitude);
@@ -61,6 +73,7 @@
DmsCoordinate actualCoordinate;
// String -> DmsCoordinate
+
actualCoordinate = (DmsCoordinate) converter.convert(DmsCoordinate.class, expectedString);
Assert.assertNotNull(actualCoordinate);
Assert.assertEquals(actualCoordinate.isSign(), expectedCoordinate.isSign());
@@ -83,6 +96,7 @@
Assert.assertEquals(expectedString, actualStr);
// DmsCoordinate -> DmsCoordinate
+
actualCoordinate = (DmsCoordinate) converter.convert(DmsCoordinate.class, expectedCoordinate);
Assert.assertNotNull(actualCoordinate);
Assert.assertEquals(actualCoordinate.isSign(), expectedCoordinate.isSign());
Modified: trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorTest.java
===================================================================
--- trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorTest.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateEditorTest.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -81,7 +81,7 @@
return longitude;
}
- public void setLongitudeDegre(Integer degre) {
+ public void setLongitudeDegree(Integer degre) {
Object oldValue = longitude.getDegree();
longitude.setDegree(degre);
firePropertyChange(PROPERTY_LONGITUDE_DEGREE, oldValue, degre);
@@ -110,7 +110,7 @@
return latitude;
}
- public void setLatitudeDegre(Integer degre) {
+ public void setLatitudeDegree(Integer degre) {
Object oldValue = latitude.getDegree();
latitude.setDegree(degre);
firePropertyChange(PROPERTY_LATITUDE_DEGREE, oldValue, degre);
@@ -155,9 +155,8 @@
longitudeEditor.setPropertyDegree(EditorBean.PROPERTY_LONGITUDE_DEGREE);
longitudeEditor.setPropertyMinute(EditorBean.PROPERTY_LONGITUDE_MINUTE);
longitudeEditor.setPropertySecond(EditorBean.PROPERTY_LONGITUDE_SECOND);
- longitudeEditor.setLongitudeEditor(true);
longitudeEditor.setShowReset(true);
- longitudeEditor.init();
+ longitudeEditor.init(true);
DmsCoordinateEditor latitudeEditor = new DmsCoordinateEditor();
latitudeEditor.setBean(bean);
@@ -165,9 +164,8 @@
latitudeEditor.setPropertyDegree(EditorBean.PROPERTY_LATITUDE_DEGREE);
latitudeEditor.setPropertyMinute(EditorBean.PROPERTY_LATITUDE_MINUTE);
latitudeEditor.setPropertySecond(EditorBean.PROPERTY_LATITUDE_SECOND);
- latitudeEditor.setLongitudeEditor(false);
latitudeEditor.setShowReset(true);
- latitudeEditor.init();
+ latitudeEditor.init(false);
final JLabel latitudeResult = new JLabel();
final JLabel longitudeResult = new JLabel();
Modified: trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateTest.java
===================================================================
--- trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateTest.java 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/test/java/jaxx/runtime/swing/editor/gis/DmsCoordinateTest.java 2013-11-26 14:10:47 UTC (rev 2756)
@@ -43,7 +43,7 @@
actual.fromDecimal(42.7f);
- assertDmsCoordinate(actual, false, 42, 42, 0);
+ assertDmsCoordinate(actual, false, 42, 42, null);
}
{
@@ -82,7 +82,7 @@
Assert.assertEquals(expected, floatValue, 0.001);
coordinate.fromDecimal(expected);
- assertDmsCoordinate(coordinate, false, 12, 12, 0);
+ assertDmsCoordinate(coordinate, false, 12, 12, null);
}
@@ -116,7 +116,7 @@
Assert.assertTrue(coordinate.isMinuteValid());
Assert.assertTrue(coordinate.isSecondValid());
- assertDmsCoordinate(coordinate, true, 0, 0, 26);
+ assertDmsCoordinate(coordinate, true, null, null, 26);
}
public static void assertDmsCoordinate(DmsCoordinate coordinate,
Modified: trunk/jaxx-widgets/src/test/resources/log4j.properties
===================================================================
--- trunk/jaxx-widgets/src/test/resources/log4j.properties 2013-11-25 15:54:51 UTC (rev 2755)
+++ trunk/jaxx-widgets/src/test/resources/log4j.properties 2013-11-26 14:10:47 UTC (rev 2756)
@@ -29,6 +29,6 @@
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n
-log4j.logger.jaxx.swing=INFO
+log4j.logger.jaxx.runtime.swing=DEBUG
#log4j.logger.jaxx.runtime.swing.editor.config.model.ConfigUIModelBuilder=DEBUG
log4j.logger.org.nuiton=WARN
1
0