r1403 - in guix/trunk: . guix-compiler-swing guix-compiler-swing/src guix-compiler-swing/src/main guix-compiler-swing/src/main/java guix-compiler-swing/src/main/java/org guix-compiler-swing/src/main/java/org/nuiton guix-compiler-swing/src/main/java/org/nuiton/guix guix-compiler-swing/src/main/java/org/nuiton/guix/generator guix-compiler-swing/src/spring guix-compiler-swing/src/test
Author: kmorin Date: 2009-05-15 13:59:55 +0000 (Fri, 15 May 2009) New Revision: 1403 Added: guix/trunk/guix-compiler-swing/ guix/trunk/guix-compiler-swing/pom.xml guix/trunk/guix-compiler-swing/src/ guix/trunk/guix-compiler-swing/src/main/ guix/trunk/guix-compiler-swing/src/main/java/ guix/trunk/guix-compiler-swing/src/main/java/org/ guix/trunk/guix-compiler-swing/src/main/java/org/nuiton/ guix/trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/ guix/trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/ guix/trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingFileGenerator.java guix/trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingGenerator.java guix/trunk/guix-compiler-swing/src/main/resources/ guix/trunk/guix-compiler-swing/src/spring/ guix/trunk/guix-compiler-swing/src/spring/SwingAbstractClassGenerator.java guix/trunk/guix-compiler-swing/src/spring/SwingGenerator.java guix/trunk/guix-compiler-swing/src/spring/SwingImplementationGenerator.java guix/trunk/guix-compiler-swing/src/spring/SwingInterfaceGenerator.java guix/trunk/guix-compiler-swing/src/spring/SwingMainClassGenerator.java guix/trunk/guix-compiler-swing/src/test/ guix/trunk/guix-compiler-swing/src/test/java/ guix/trunk/guix-compiler-swing/src/test/resources/ Log: Ajout du module guix-compiler-swing Property changes on: guix/trunk/guix-compiler-swing ___________________________________________________________________ Name: svn:ignore + target Added: guix/trunk/guix-compiler-swing/pom.xml =================================================================== --- guix/trunk/guix-compiler-swing/pom.xml (rev 0) +++ guix/trunk/guix-compiler-swing/pom.xml 2009-05-15 13:59:55 UTC (rev 1403) @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + <parent> + <groupId>org.nuiton.guix</groupId> + <artifactId>guix</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + + <artifactId>guix-compiler-swing</artifactId> + + <dependencies> + <dependency> + <groupId>org.nuiton.guix</groupId> + <artifactId>guix-compiler</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.jdesktop</groupId> + <artifactId>beansbinding</artifactId> + <version>1.2.1</version> + </dependency> + <dependency> + <groupId>xpp3</groupId> + <artifactId>xpp3</artifactId> + <version>1.1.4c</version> + </dependency> + </dependencies> + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + <name>guix-compiler-swing</name> + <description>Guix compiler for swing</description> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + + <packaging>jar</packaging> + + <!-- ************************************************************* --> + <!-- *** Build Environment ************************************** --> + <!-- ************************************************************* --> + <scm> + <connection>scm:svn:svn://anonymous@labs.libre-entreprise.org/svnroot/buix/guix/trunk/guix-compiler-swing</connection> + <!--developerConnection>scm:svn:svn+ssh://sletellier@labs.libre-entreprise.org/svnroot/buix/guix/trunk</developerConnection--> + <!--url>http://labs.libre-entreprise.org/plugins/scmsvn/viewcvs.php/guix/trunk/?root=buix</url--> + </scm> + +</project> Added: guix/trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingFileGenerator.java =================================================================== --- guix/trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingFileGenerator.java (rev 0) +++ guix/trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingFileGenerator.java 2009-05-15 13:59:55 UTC (rev 1403) @@ -0,0 +1,153 @@ +package org.nuiton.guix.generator; + +//~--- non-JDK imports -------------------------------------------------------- +import java.util.logging.Level; +import java.util.logging.Logger; +import org.nuiton.guix.model.GuixModelObject; + +//~--- JDK imports ------------------------------------------------------------ + +import java.io.File; +import java.lang.reflect.Modifier; +import java.util.HashMap; +import java.util.Map; +import org.nuiton.guix.databinding.BindingUtils; +import org.nuiton.guix.model.AttributeDescriptor; + +/** + * + * @author morin + */ +public class SwingFileGenerator extends JavaFileGenerator { + + public SwingFileGenerator(GuixModelObject gmo) { + super(gmo); + jf = new JavaFile(gmo.getClassDescriptor().getPackageName(), + Modifier.PUBLIC, + gmo.getClassDescriptor().getName(), + null); + } + + @Override + public void generate(File out) { + super.generate(); + jf.addImport("javax.swing.*"); + jf.addImport("java.awt.*"); + + jf.setSuperClass(gmo.getClassDescriptor().getSuperClass().getPackageName() + "." + gmo.getClassDescriptor().getSuperClass().getName()); + + if (!gmo.getJavadoc().equals("")) { + sb.append("\n/**\n* "); + sb.append(gmo.getJavadoc()); + sb.append("\n*/"); + } + + jf.addField(new JavaField(Modifier.PRIVATE, + "org.jdesktop.beansbinding.BindingGroup", + "bindingGroup"), + true); + addFields(gmo); + + jf.addMethod(new JavaMethod(Modifier.PUBLIC, null, gmo.getClassDescriptor().getName(), + null, null, "initialize();")); + + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "initialize", null, null, "createComponents();\ninitComponents();\ninitDataBinding();")); + + Map<String, String> methodBodies = browseModelObjects(gmo); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "createComponents", null, null, + "this.setLayout(new FlowLayout());\n" + methodBodies.get("componentsCreation"))); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "initComponents", null, null, methodBodies.get("componentsTree"))); + + StringBuffer dataBinding = new StringBuffer("bindingGroup = new org.jdesktop.beansbinding.BindingGroup();\n"); + dataBinding.append(methodBodies.get("bindings")); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "initDataBinding", null, null, dataBinding.toString())); + + saveFile(out); + } + + private void addFields(GuixModelObject gmo) { + for (GuixModelObject child : gmo.getChildren()) { + jf.addField(new JavaField(Modifier.PRIVATE, + child.getClassDescriptor().getName(), + child.getId()), + true); + addFields(child); + } + } + + private Map<String, String> browseModelObjects(GuixModelObject gmo) { + StringBuffer componentsCreation = new StringBuffer(); + StringBuffer componentsTree = new StringBuffer(); + StringBuffer bindings = new StringBuffer(); + + if (gmo.getParent() != null) { + String capitalizedId = (gmo.getId().length() > 0) ? Character.toUpperCase(gmo.getId().charAt(0)) + gmo.getId().substring(1) : gmo.getId(); + StringBuffer creationMethod = new StringBuffer(gmo.getId()).append(" = new ").append(gmo.getClassDescriptor().getName()).append("();"); + jf.addMethod(new JavaMethod(Modifier.PRIVATE, "void", "create" + capitalizedId, null, null, creationMethod.toString())); + componentsCreation.append("create").append(capitalizedId).append("();\n"); + + + componentsTree.append(gmo.getParent().getId() == null ? "this" : gmo.getParent().getId()).append(".add(").append(gmo.getId()).append(");\n"); + + for (AttributeDescriptor attr : gmo.getAttributeDescriptors()) { + String binding = BindingUtils.processDataBindings(attr.getValue()); + if (binding != null) { + bindings.append("bindingGroup.addBinding(\n").append("org.jdesktop.beansbinding.Bindings.createAutoBinding(\norg.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ,").append("this").append(",org.jdesktop.beansbinding.ELProperty.create(\"${").append(binding).append("}\"),").append(gmo.getId()).append(",org.jdesktop.beansbinding.BeanProperty.create(\"").append(attr.getName()).append("\")").append("));\n").append("bindingGroup.bind();\n"); + } + else { + String capitalizedAttribute = (attr.getName().length() > 0) ? Character.toUpperCase(attr.getName().charAt(0)) + attr.getName().substring(1) : attr.getName(); + boolean addQuote = false; + try { + addQuote = Class.forName(gmo.getClassDescriptor().getPackageName() + "." + gmo.getClassDescriptor().getName()).getMethod("get" + capitalizedAttribute, null).getReturnType().equals(String.class); + } + catch (ClassNotFoundException ex) { + log.error(ex); + } + catch (NoSuchMethodException ex) { + try { + addQuote = Class.forName(gmo.getClassDescriptor().getPackageName() + "." + gmo.getClassDescriptor().getName()).getMethod("is" + capitalizedAttribute, null).getReturnType().equals(String.class); + } + catch (ClassNotFoundException ex2) { + log.error(ex2); + } + catch (NoSuchMethodException ex2) { + log.error(ex2); + } + } + componentsTree.append(gmo.getId()).append(".set").append(capitalizedAttribute).append("(").append(addQuote ? "\"" : "").append(attr.getValue()).append(addQuote ? "\"" : "").append(");\n"); + } + } + } + for (GuixModelObject child : gmo.getChildren()) { + Map<String, String> methodBodies = browseModelObjects(child); + componentsCreation.append(methodBodies.get("componentsCreation")); + componentsTree.append(methodBodies.get("componentsTree")); + bindings.append(methodBodies.get("bindings")); + } + Map<String, String> result = new HashMap<String, String>(); + result.put("componentsCreation", componentsCreation.toString()); + result.put("componentsTree", componentsTree.toString()); + result.put("bindings", bindings.toString()); + return result; + } + + public void addMainMethod() { + //public static void main(String[] arg) { + //SwingUtilities.invokeLater(new Runnable() { public void run() { new JAXXDemo().setVisible(true); } }); + //} + jf.addMethod(new JavaMethod(Modifier.PUBLIC | Modifier.STATIC, + "void", + "main", + new JavaArgument[]{new JavaArgument("String[]", "args")}, + null, + "SwingUtilities.invokeLater(" + + "new Runnable() {" + + "public void run() {" + + jf.getClassName() + + " main = new " + + jf.getClassName() + "();\n" + + "main.pack();\n" + + "main.setVisible(true);}});")); + } +} + Added: guix/trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingGenerator.java =================================================================== --- guix/trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingGenerator.java (rev 0) +++ guix/trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingGenerator.java 2009-05-15 13:59:55 UTC (rev 1403) @@ -0,0 +1,55 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.nuiton.guix.generator; + +import java.io.File; +import java.io.IOException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author kevin + */ +public class SwingGenerator extends GuixGenerator { + + protected Log log = LogFactory.getLog(SwingGenerator.class); + + public void generate() { + String gmoClassName = gmo.getClassDescriptor().getName(); + //File f = new File(destDir, mo.getClassDescriptor().getName() + "ModelTree.xml"); + File out = new File(destDir, gmoClassName + ".java"); + + if (lastModification > out.lastModified()) { + try { + if (log.isInfoEnabled()) { + log.info("Generation of " + gmo.getClassDescriptor().getName()); + } + if (!out.exists()) { + try { + out.createNewFile(); + } + catch (IOException ex) { + log.error(ex); + } + } + SwingFileGenerator ing = new SwingFileGenerator(gmo); + if (mainClass) { + ing.addMainMethod(); + } + ing.generate(out); + } + catch (IllegalArgumentException ex) { + log.error(ex); + } + catch (IllegalStateException ex) { + log.error(ex); + } + } + else if (log.isWarnEnabled()) { + log.warn(gmo.getClassDescriptor().getName() + " has already been generated and is up to date."); + } + } +} Added: guix/trunk/guix-compiler-swing/src/spring/SwingAbstractClassGenerator.java =================================================================== --- guix/trunk/guix-compiler-swing/src/spring/SwingAbstractClassGenerator.java (rev 0) +++ guix/trunk/guix-compiler-swing/src/spring/SwingAbstractClassGenerator.java 2009-05-15 13:59:55 UTC (rev 1403) @@ -0,0 +1,143 @@ +package org.nuiton.guix.generator.spring; + +//~--- non-JDK imports -------------------------------------------------------- + +import org.nuiton.guix.generator.*; +import org.nuiton.guix.model.GuixModelObject; + +//~--- JDK imports ------------------------------------------------------------ + +import java.io.File; +import java.lang.reflect.Modifier; +import java.util.HashMap; +import java.util.Map; +import javax.swing.JComponent; +import org.nuiton.guix.databinding.BindingUtils; +import org.nuiton.guix.model.AttributeDescriptor; + +/** + * + * @author morin + */ +public class SwingAbstractClassGenerator extends JavaFileGenerator { + public SwingAbstractClassGenerator(GuixModelObject gmo) { + super(gmo); + jf = new JavaFile(gmo.getClassDescriptor().getPackageName(), + Modifier.PUBLIC, + JavaFile.ABSTRACT_CLASS, + gmo.getClassDescriptor().getName() + "Abstract", + null); + } + + @Override + public void generate(File out) { + super.generate(); + + jf.setSuperClass(gmo.getClassDescriptor().getSuperClass().getPackageName() + + "." + gmo.getClassDescriptor().getSuperClass().getName()); + jf.addInterface(gmo.getClassDescriptor().getName()); + + if (!gmo.getJavadoc().equals("")) { + sb.append("\n/**\n* "); + sb.append(gmo.getJavadoc()); + sb.append("\n*/"); + } + + jf.addField(new JavaField(Modifier.PRIVATE, + "org.jdesktop.beansbinding.BindingGroup", + "bindingGroup"), + true); + addFields(gmo); + + jf.addMethod(new JavaMethod(Modifier.PUBLIC, null, gmo.getClassDescriptor().getName() + "Abstract", + null, null, "initialize();")); + + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "initialize", null, null, "createComponents();\ninitComponents();\ninitDataBinding();")); + + Map<String, String> methodBodies = browseModelObjects(gmo); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "createComponents", null, null, methodBodies.get("componentsCreation"))); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "initComponents", null, null, methodBodies.get("componentsTree"))); + + StringBuffer dataBinding = new StringBuffer("bindingGroup = new org.jdesktop.beansbinding.BindingGroup();\n"); + dataBinding.append(methodBodies.get("bindings")); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "initDataBinding", null, null, dataBinding.toString())); + + //sb.append("\n\npublic abstract void test();\n\n}"); + saveFile(out); + } + + private void addFields(GuixModelObject gmo) { + for (GuixModelObject child : gmo.getChildren()) { + jf.addField(new JavaField(Modifier.PRIVATE, + child.getClassDescriptor().getName(), + child.getId()), + true); + addFields(child); + } + } + + private Map<String,String> browseModelObjects(GuixModelObject gmo) { + StringBuffer componentsCreation = new StringBuffer(); + StringBuffer componentsTree = new StringBuffer(); + StringBuffer bindings = new StringBuffer(); + + if(gmo.getParent() != null) { + String capitalizedId = (gmo.getId().length()>0) ? + Character.toUpperCase(gmo.getId().charAt(0)) + gmo.getId().substring(1) : gmo.getId(); + StringBuffer creationMethod = new StringBuffer(gmo.getId()) + .append(" = new ") + .append(gmo.getClassDescriptor().getName()) + .append("();"); + jf.addMethod(new JavaMethod(Modifier.PRIVATE, "void", "create" + capitalizedId, null, null, creationMethod.toString())); + componentsCreation.append("create") + .append(capitalizedId) + .append("();\n"); + + + componentsTree.append(gmo.getParent().getId() == null ? "this" : gmo.getParent().getId()) + .append(".add(") + .append(gmo.getId()) + .append(");\n"); + + for(AttributeDescriptor attr : gmo.getAttributeDescriptors()) { + String binding = BindingUtils.processDataBindings(attr.getValue()); + if(binding != null) { + bindings.append("bindingGroup.addBinding(\n") + .append("org.jdesktop.beansbinding.Bindings.createAutoBinding(\norg.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ,") + .append("this") + .append(",org.jdesktop.beansbinding.ELProperty.create(\"${") + .append(binding) + .append("}\"),") + .append(gmo.getId()) + .append(",org.jdesktop.beansbinding.BeanProperty.create(\"") + .append(attr.getName()) + .append("\")") + .append("));\n") + .append("bindingGroup.bind();"); + } + else { + String capitalizedAttribute = (attr.getName().length()>0) ? + Character.toUpperCase(attr.getName().charAt(0)) + attr.getName().substring(1) : attr.getName(); + componentsTree.append(gmo.getId()) + .append(".set") + .append(capitalizedAttribute) + .append("(") + .append(attr.getValue()) + .append(");\n"); + } + } + } + for (GuixModelObject child : gmo.getChildren()) { + Map<String,String> methodBodies = browseModelObjects(child); + componentsCreation.append(methodBodies.get("componentsCreation")); + componentsTree.append(methodBodies.get("componentsTree")); + bindings.append(methodBodies.get("bindings")); + } + Map<String,String> result = new HashMap<String, String>(); + result.put("componentsCreation", componentsCreation.toString()); + result.put("componentsTree", componentsTree.toString()); + result.put("bindings", bindings.toString()); + return result; + } +} + Added: guix/trunk/guix-compiler-swing/src/spring/SwingGenerator.java =================================================================== --- guix/trunk/guix-compiler-swing/src/spring/SwingGenerator.java (rev 0) +++ guix/trunk/guix-compiler-swing/src/spring/SwingGenerator.java 2009-05-15 13:59:55 UTC (rev 1403) @@ -0,0 +1,116 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package org.nuiton.guix.generator.spring; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.guix.generator.GuixGenerator; + +/** + * + * @author kevin + */ +public class SwingGenerator extends GuixGenerator { + + protected Log log = LogFactory.getLog(SwingGenerator.class); + + public void generate() { + String gmoClassName = gmo.getClassDescriptor().getName(); + //File f = new File(destDir, mo.getClassDescriptor().getName() + "ModelTree.xml"); + File out = new File(destDir, gmoClassName + ".java"); + File outAbstract = new File(destDir, gmoClassName + "Abstract.java"); + File outImpl = new File(destDir, gmoClassName + "Impl.java"); + + if (lastModification > out.lastModified()) { + try { + if (log.isInfoEnabled()) { + log.info("Generation of " + gmo.getClassDescriptor().getName()); + } + if (!out.exists()) { + try { + out.createNewFile(); + } + catch (IOException ex) { + log.error(ex); + } + } + if (!outAbstract.exists()) { + try { + outAbstract.createNewFile(); + } + catch (IOException ex) { + log.error(ex); + } + } + if (!outImpl.exists()) { + try { + outImpl.createNewFile(); + } + catch (IOException ex) { + log.error(ex); + } + } + SwingInterfaceGenerator ing = new SwingInterfaceGenerator(gmo); + ing.generate(out); + SwingAbstractClassGenerator acg = new SwingAbstractClassGenerator(gmo); + acg.generate(outAbstract); + SwingImplementationGenerator img = new SwingImplementationGenerator(gmo); + img.generate(outImpl); + serializer.startTag("", "bean"); + serializer.attribute("", "id", gmoClassName.replace(gmoClassName.charAt(0), Character.toLowerCase(gmoClassName.charAt(0)))); + serializer.attribute("", "class", gmo.getClassDescriptor().getPackageName() + "." + gmoClassName + "Impl"); + serializer.attribute("", "singleton", "false"); + serializer.endTag("", "bean"); + if (mainClass) { + SwingMainClassGenerator mcg = new SwingMainClassGenerator(gmo, destDir); + FileWriter fw = null; + try { + fw = new FileWriter(new File(destDir, "Main.java")); + fw.write(mcg.getClassContent()); + fw.close(); + } + catch (IOException ex) { + if (log.isErrorEnabled()) { + log.error(ex); + } + } + finally { + try { + fw.close(); + } + catch (IOException ex) { + log.error(ex); + } + } + serializer.startTag("", "bean"); + serializer.attribute("", "id", "main"); + serializer.attribute("", "class", gmo.getClassDescriptor().getPackageName() + ".Main"); + serializer.startTag("", "property"); + serializer.attribute("", "name", gmoClassName.replace(gmoClassName.charAt(0), Character.toLowerCase(gmoClassName.charAt(0)))); + serializer.startTag("", "ref"); + serializer.attribute("", "bean", gmoClassName.replace(gmoClassName.charAt(0), Character.toLowerCase(gmoClassName.charAt(0)))); + serializer.endTag("", "ref"); + serializer.endTag("", "property"); + serializer.endTag("", "bean"); + } + } + catch (IOException ex) { + log.error(ex); + } + catch (IllegalArgumentException ex) { + log.error(ex); + } + catch (IllegalStateException ex) { + log.error(ex); + } + } + else if (log.isWarnEnabled()) { + log.warn(gmo.getClassDescriptor().getName() + " has already been generated and is up to date."); + } + } +} Added: guix/trunk/guix-compiler-swing/src/spring/SwingImplementationGenerator.java =================================================================== --- guix/trunk/guix-compiler-swing/src/spring/SwingImplementationGenerator.java (rev 0) +++ guix/trunk/guix-compiler-swing/src/spring/SwingImplementationGenerator.java 2009-05-15 13:59:55 UTC (rev 1403) @@ -0,0 +1,53 @@ + +/* +* To change this template, choose Tools | Templates +* and open the template in the editor. + */ +package org.nuiton.guix.generator.spring; + +//~--- non-JDK imports -------------------------------------------------------- + +import org.nuiton.guix.generator.*; +import org.nuiton.guix.model.GuixModelObject; + +//~--- JDK imports ------------------------------------------------------------ + +import java.io.File; +import java.lang.reflect.Modifier; + +/** + * + * @author morin + */ +public class SwingImplementationGenerator extends JavaFileGenerator { + public SwingImplementationGenerator(GuixModelObject gmo) { + super(gmo); + jf = new JavaFile(gmo.getClassDescriptor().getPackageName(), + Modifier.PUBLIC, + JavaFile.CLASS, + gmo.getClassDescriptor().getName() + "Impl", + gmo.getClassDescriptor().getName() + "Abstract"); + } + + @Override + public void generate(File out) { + super.generate(); + + if (!gmo.getJavadoc().equals("")) { + sb.append("\n/**\n * "); + sb.append(gmo.getJavadoc()); + sb.append("\n */"); + } + + jf.addMethod(new JavaMethod(Modifier.PUBLIC, null, gmo.getClassDescriptor().getName() + "Impl", + null, null, "super();")); + + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "initialize", null, null, "super.initialize();")); + + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "test", null, null, "setVisible(true);")); + + saveFile(out); + } + +} + Added: guix/trunk/guix-compiler-swing/src/spring/SwingInterfaceGenerator.java =================================================================== --- guix/trunk/guix-compiler-swing/src/spring/SwingInterfaceGenerator.java (rev 0) +++ guix/trunk/guix-compiler-swing/src/spring/SwingInterfaceGenerator.java 2009-05-15 13:59:55 UTC (rev 1403) @@ -0,0 +1,50 @@ +package org.nuiton.guix.generator.spring; + +//~--- non-JDK imports -------------------------------------------------------- + +import org.nuiton.guix.generator.*; +import org.nuiton.guix.model.GuixModelObject; + +//~--- JDK imports ------------------------------------------------------------ + +import java.io.File; +import java.lang.reflect.Modifier; + +/** + * Generator of interfaces + * + * @author morin + */ +public class SwingInterfaceGenerator extends JavaFileGenerator { + public SwingInterfaceGenerator(GuixModelObject gmo) { + super(gmo); + jf = new JavaFile(gmo.getClassDescriptor().getPackageName(), + Modifier.PUBLIC, + JavaFile.INTERFACE, + gmo.getClassDescriptor().getName(), + null); + } + + @Override + public void generate(File out) { + super.generate(); + addFields(gmo); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "void", "test", null, null, null)); + //sb.append("\n\npublic void test();\n\n}"); + saveFile(out); + } + + private void addFields(GuixModelObject gmo) { + for (GuixModelObject child : gmo.getChildren()) { + jf.addField(new JavaField(Modifier.PRIVATE, + child.getClassDescriptor().getName(), + child.getId()), + true); + addFields(child); + } + } + +} + + +//~ Formatted by Jindent --- http://www.jindent.com Added: guix/trunk/guix-compiler-swing/src/spring/SwingMainClassGenerator.java =================================================================== --- guix/trunk/guix-compiler-swing/src/spring/SwingMainClassGenerator.java (rev 0) +++ guix/trunk/guix-compiler-swing/src/spring/SwingMainClassGenerator.java 2009-05-15 13:59:55 UTC (rev 1403) @@ -0,0 +1,66 @@ +package org.nuiton.guix.generator.spring; + +//~--- non-JDK imports -------------------------------------------------------- + +import org.nuiton.guix.generator.*; +import org.nuiton.guix.model.GuixModelObject; + +//~--- JDK imports ------------------------------------------------------------ + +import java.io.File; +import java.lang.reflect.Modifier; + +/** + * Generator of interfaces + * + * @author morin + */ +public class SwingMainClassGenerator { + private JavaFile clazz; + + public SwingMainClassGenerator(GuixModelObject gmo, File destDir) { + String gmoClassName = gmo.getClassDescriptor().getName(); + String gmoAttributeName = gmoClassName.replace(gmoClassName.charAt(0), + Character.toLowerCase(gmoClassName.charAt(0))); + + clazz = new JavaFile(gmo.getClassDescriptor().getPackageName(), + Modifier.PUBLIC, + JavaFile.CLASS, "Main", null); + + clazz.addImport("java.io.File"); + clazz.addImport("org.springframework.beans.factory.ListableBeanFactory"); + clazz.addImport("org.springframework.beans.factory.xml.XmlBeanFactory"); + clazz.addImport("org.springframework.core.io.FileSystemResource"); + + StringBuffer mainMethod = new StringBuffer(); + mainMethod.append("//usine à beans\n") + .append("ListableBeanFactory bf = new XmlBeanFactory(") + .append("new FileSystemResource(new File(\"") + .append(destDir.getAbsolutePath()) + .append("/config.xml\")));\n") + .append(gmoClassName) + .append(" ") + .append(gmoAttributeName) + .append(" = (") + .append(gmoClassName) + .append(") bf.getBean(\"") + .append(gmoAttributeName) + .append("\");\n") + .append(gmoAttributeName) + .append(".test();"); + //SwingUtilities.invokeLater(new Runnable() { public void run() { new JAXXDemo().setVisible(true); } }); + + clazz.addMethod(new JavaMethod( + Modifier.PUBLIC | Modifier.STATIC, + "void", + "main", + new JavaArgument[]{new JavaArgument("String[]", "args")}, + null, + mainMethod.toString())); + } + + public String getClassContent() { + return clazz.toString("\n"); + } +} +
participants (1)
-
kmorin@users.labs.libre-entreprise.org