Index: topia/src/java/org/codelutin/topia/generators/ui/ObjectModelToEntityUIModel.java diff -u topia/src/java/org/codelutin/topia/generators/ui/ObjectModelToEntityUIModel.java:1.7 topia/src/java/org/codelutin/topia/generators/ui/ObjectModelToEntityUIModel.java:1.8 --- topia/src/java/org/codelutin/topia/generators/ui/ObjectModelToEntityUIModel.java:1.7 Wed Jun 9 16:08:22 2004 +++ topia/src/java/org/codelutin/topia/generators/ui/ObjectModelToEntityUIModel.java Thu Jun 10 14:08:51 2004 @@ -23,9 +23,9 @@ * * @author Benjamin Poussin * Copyright Code Lutin - * @version $Revision: 1.7 $ + * @version $Revision: 1.8 $ * - * Mise a jour: $Date: 2004/06/09 16:08:22 $ + * Mise a jour: $Date: 2004/06/10 14:08:51 $ * par : $Author: mazelier $ */ @@ -79,7 +79,6 @@ - }*/ int counterArguments =0; Index: topia/src/java/org/codelutin/topia/generators/ui/UIModelToUICallbackSwingGenerator.java diff -u topia/src/java/org/codelutin/topia/generators/ui/UIModelToUICallbackSwingGenerator.java:1.2 topia/src/java/org/codelutin/topia/generators/ui/UIModelToUICallbackSwingGenerator.java:1.3 --- topia/src/java/org/codelutin/topia/generators/ui/UIModelToUICallbackSwingGenerator.java:1.2 Wed Jun 9 16:08:22 2004 +++ topia/src/java/org/codelutin/topia/generators/ui/UIModelToUICallbackSwingGenerator.java Thu Jun 10 14:08:51 2004 @@ -23,9 +23,9 @@ * * @author Benjamin Poussin * Copyright Code Lutin - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ * - * Mise a jour: $Date: 2004/06/09 16:08:22 $ + * Mise a jour: $Date: 2004/06/10 14:08:51 $ * par : $Author: mazelier $ */ @@ -62,7 +62,6 @@ */ public void generateFromUIModel(Writer output, UIModel model) throws IOException { - // ------------- File Header if (!model.getPackage().equals("")) { /*{ Index: topia/src/java/org/codelutin/topia/generators/ui/UIModelToUISwingGenerator.java diff -u topia/src/java/org/codelutin/topia/generators/ui/UIModelToUISwingGenerator.java:1.2 topia/src/java/org/codelutin/topia/generators/ui/UIModelToUISwingGenerator.java:1.3 --- topia/src/java/org/codelutin/topia/generators/ui/UIModelToUISwingGenerator.java:1.2 Wed Jun 9 16:08:22 2004 +++ topia/src/java/org/codelutin/topia/generators/ui/UIModelToUISwingGenerator.java Thu Jun 10 14:08:51 2004 @@ -23,9 +23,9 @@ * * @author Benjamin Poussin * Copyright Code Lutin -* @version $Revision: 1.2 $ +* @version $Revision: 1.3 $ * -* Mise a jour: $Date: 2004/06/09 16:08:22 $ +* Mise a jour: $Date: 2004/06/10 14:08:51 $ * par : $Author: mazelier $ */ @@ -50,6 +50,8 @@ */ public class UIModelToUISwingGenerator extends UIModelGenerator { //UIModelToUISwingGenerator + private String objectName; + /** * Methode qui permet de generer une classe UI a partir de UIModel * @@ -66,10 +68,17 @@ */ public void generateFromUIModel(Writer output, UIModel model) throws IOException { + generateForRoot(output, model.getRoot()); for(Iterator o = model.getObjects().iterator(); o.hasNext();){ UIModelObject object = (UIModelObject)o.next(); - generateForUIModelObject(output, object); + if(object.getParent() != null){ + generateForUIModelObject(output, object); + } } +// accolade de fin de classe +/*{ + } +}*/ } /** @@ -95,8 +104,10 @@ import org.codelutin.topia.TopiaException; import java.util.ArrayList; + import java.awt.Component; + import javax.swing.RootPaneContainer; - public abstract class <%= Util.toUpperCaseFirstLetter(object.getName()) %>UI extends <%=object.getType()%> implements <%=Util.toUpperCaseFirstLetter(object.getName())%>UICallback { + public abstract class <%=Util.toUpperCaseFirstLetter(object.getName())%>UI extends <%=object.getType()%> implements <%=Util.toUpperCaseFirstLetter(object.getName())%>UICallback { }*/ //creation des constructeurs selon le type de l'objet if (object.getType().equals("javax.swing.JDialog")){ @@ -118,27 +129,29 @@ }else if (object.getType().equals("javax.swing.JFrame")){ /*{ - public <%=Util.toUpperCaseFirstLetter(object.getName())%>UI(){ + public <%=Util.toUpperCaseFirstLetter(object.getName())%>UI(){ super(i18n._("<%=object.getProperty("title").getStringValue()%>")); - } + } }*/ - }else{ -/*{ + } - public <%=Util.toUpperCaseFirstLetter(object.getName())%>UI(){ - super(); - } + generateConstructorStatement(output, object); + +/*{ + public void init() { + Component result = this; }*/ - } + generateAllStatement(output, object); + + // accolade de fin de init +/*{ + } +}*/ // creation de la methode qui permettra de recuperer les enfants de cet objet generateChildStatement(output, object); // creation de la methode qui permettra de recuperer les constraints des enfants de cet objet generateConstraintStatement(output, object); - // accolade de fin de classe -/*{ - } -}*/ } /** @@ -149,113 +162,127 @@ throws IOException { if(object.getParent() == null){ + objectName = "this"; // appel a l'entete de la classe generateForRoot(output, object); }else{ + objectName = "__" + object.getName() + "__"; +/*{ - /*{ // declaration de l'objet - private <%=object.getType()%> __<%=object.getName()%>__ = null; + private <%=object.getType()%> <%=objectName%> = null; public <%=object.getType()%> get<%=Util.toUpperCaseFirstLetter(object.getName())%>() { // test si deja instancier - if(__<%= object.getName() %>__ == null){ - // creation de l'objet avec les arguments de construction + if(<%=objectName%> == null){ }*/ generateCreationStatement(output, object); -/*{ - // applications des proprietes -}*/ - generateSetStatement(output, object); -/*{ - // recuperation des differentes donnees concernant l'objet - ArrayList childs = get<%=Util.toUpperCaseFirstLetter(object.getName())%>Childs(); - - ArrayList constraints = get<%=Util.toUpperCaseFirstLetter(object.getName())%>Constraints(); - - // ajout des enfants avec leur contrainte - Iterator iConstraints = constraints.iterator(); - for(Iterator iChilds = childs.iterator(); iChilds.hasNext(); ){ - Component c = (Component)iChilds.next(); - result.add(c, iConstraints.next()); -}*/ - if (object.getType().equals("javax.swing.JTabbedPane")){ -/*{ - result.setTitleAt(i, c.getName()); -}*/ - } -/*{ - } -}*/ - generateHandlerEventStatement(output, object); -/*{ - __<%= object.getName() %>__ = result; + generateAllStatement(output, object); + /*{ + <%=objectName%> = result; } - return __<%= object.getName() %>__ ; + return <%=objectName%> ; } }*/ - // generation de la methode pour recuperer les enfants de cet objet - generateChildStatement(output, object); - // generation de la methode pour recuperer les constraints des enfants de cet objet - generateConstraintStatement(output, object); + // creation de la methode qui permettra de recuperer les enfants de cet objet + generateChildStatement(output, object); + // creation de la methode qui permettra de recuperer les constraints des enfants de cet objet + generateConstraintStatement(output, object); + } } + /** - * Methode pour creer l'objet avec les arguments definis dans l'uimodel + * Methode qui renvoie une liste de String des arguments */ - public void generateCreationStatement(Writer output, UIModelObject object) + public String generateArgumentStatement(Writer output, UIModelObject object) throws IOException { + String argList = ""; ArrayList args = (ArrayList)object.getArguments(); - if (args.size() == 0 ){ -/*{ - <%= object.getType() %> result = new <%= object.getType() %>(); -}*/ - }else{ -/*{ - - <%= object.getType() %> result = new <%= object.getType() %>( -}*/ - for(Iterator i=args.iterator(); i.hasNext();){ + for(Iterator i=args.iterator(); i.hasNext();){ - Object arg = i.next(); + Object arg = i.next(); if (arg instanceof UIModelObject){ UIModelObject objectArg = (UIModelObject)arg; - generateForUIModelObject(output, objectArg); -/*{ - __<%= objectArg.getName() %>__ -}*/ + if (objectArg.getName() != null) { + argList = argList + "__" + objectArg.getName() + "__"; + }else{ + argList = argList + "null"; + } }else if (arg instanceof String){ String argString = (String)arg; -/*{ - <%= "argString" %> -}*/ + argList = argList + "\"" + argString + "\"" ; }else if (arg instanceof Character){ char argChar = ((Character)arg).charValue(); + argList = argList + "\'" + argChar + "\'" ; + + }else{ + argList = argList + arg.toString(); + + } + if (i.hasNext()){ + argList = argList + ","; + + } + } + return argList; + } + + /** + * Methode pour creer le constructeur de la classe avec les arguments + * definis dans l'uimodel + */ + public void generateConstructorStatement(Writer output, UIModelObject object) + throws IOException { + + ArrayList args = (ArrayList)object.getArguments(); + if (args.size() == 0 ){ /*{ - '<%= argChar %>' + + public <%=Util.toUpperCaseFirstLetter(object.getName())%>UI(){ + super(); + } + }*/ - }else{ + }else{ /*{ - <%= arg.toString() %> + /*{ + + public <%=Util.toUpperCaseFirstLetter(object.getName())%>UI(<%=generateArgumentStatement(output, object)%>){ + super(<%=generateArgumentStatement(output, object)%>); + } }*/ - } - if (i.hasNext()){ + } + + } + + /** + * Methode pour creer l'objet avec les arguments definis dans l'uimodel + */ + public void generateCreationStatement(Writer output, UIModelObject object) + throws IOException { + + ArrayList args = (ArrayList)object.getArguments(); + if (args.size() == 0 ){ /*{ - , + + // instanciation de l'objet + <%=object.getType()%> result = new <%=object.getType()%>(); }*/ - } - } + }else{ /*{ - ); + + // creation de l'objet avec les arguments de construction + <%=object.getType()%> result = new <%=object.getType()%>(<%=generateArgumentStatement(output, object)%>); }*/ } } @@ -266,7 +293,10 @@ */ public void generateSetStatement(Writer output, UIModelObject object) throws IOException { +/*{ + // application des proprietes +}*/ ArrayList properties = (ArrayList)object.getProperties(); for(Iterator i=properties.iterator(); i.hasNext();){ @@ -275,43 +305,49 @@ Object arg = property.getValue(); String propertyName = property.getName(); - try{ - // cas ou la propriete est indexee - String index = (property.isIndexed()) ? new String(property.getIndex()+", "):""; + if (! propertyName.equals("layout")){ + try{ + // cas ou la propriete est indexee + String index = (property.isIndexed()) ? new String(property.getIndex()+", "):""; - // cas ou la propriete est un objet - if (arg instanceof UIModelObject){ + // cas ou la propriete est un objet + if (arg instanceof UIModelObject){ + + UIModelObject objectArg = (UIModelObject)arg; - UIModelObject objectArg = (UIModelObject)arg; - generateForUIModelObject(output, objectArg); /*{ - __<%=object.getName()%>__.set<%=Util.toUpperCaseFirstLetter(propertyName)%>(<%=index%>get<%=Util.toUpperCaseFirstLetter(objectArg.getName())%>()); + result.set<%=Util.toUpperCaseFirstLetter(propertyName)%>(<%=index%>get<%=Util.toUpperCaseFirstLetter(objectArg.getName())%>()); }*/ - // cas ou la propriete est de type string - }else if (arg instanceof String){ + // cas ou la propriete est de type string + }else if (arg instanceof String){ /*{ - __<%=object.getName()%>__.set<%=Util.toUpperCaseFirstLetter(propertyName)%>(<%=index%>"<%=property.getStringValue()%>"); + result.set<%=Util.toUpperCaseFirstLetter(propertyName)%>(<%=index%>"<%=property.getStringValue()%>"); }*/ - // cas ou la propriete est de type char - }else if (arg instanceof Character){ + // cas ou la propriete est de type char + }else if (arg instanceof Character){ /*{ - __<%=object.getName()%>__.set<%=Util.toUpperCaseFirstLetter(propertyName)%>(<%=index%>'<%=property.getCharValue()%>'); + result.set<%=Util.toUpperCaseFirstLetter(propertyName)%>(<%=index%>'<%=property.getCharValue()%>'); }*/ -}else{ + }else{ /*{ - __<%=object.getName()%>__.set<%=Util.toUpperCaseFirstLetter(propertyName)%>(<%=index%><%=property.getValue().toString()%>); + result.set<%=Util.toUpperCaseFirstLetter(propertyName)%>(<%=index%><%=property.getValue().toString()%>); }*/ + } + }catch(Exception eee){ + System.out.println("Impossible d'acceder a l'index de la propriete " + propertyName); + System.out.println(eee); } - }catch(Exception eee){ - System.out.println("Impossible d'acceder a l'index de la propriete " + propertyName); - System.out.println(eee); + }else if (arg instanceof UIModelObject){ + UIModelObject objectArg = (UIModelObject)arg; +/*{ + result.setLayout(new <%= objectArg.getType()%>(<%=generateArgumentStatement(output, objectArg)%>)); +}*/ } } } - /** * Methode pour affecter les events a l'objet */ @@ -325,9 +361,9 @@ /*{ //ajout des events - Object l = EventHandler.create(<%= event.getSource() %>.class, __<%=object.getName()%>__, "<%=event.getHandler()%>", "<%=event.getArgument()%>", "<%=event.getAction()%>"); + Object l = EventHandler.create(<%=event.getSource()%>.class, result, "<%=event.getHandler()%>", "<%=event.getArgument()%>", "<%=event.getAction()%>"); - __<%=object.getName()%>__.<%=event.getAddMethod()%>((<%=event.getSource()%>)l); + result.<%=event.getAddMethod()%>((<%=event.getSource()%>)l); }*/ } } @@ -346,9 +382,8 @@ for(Iterator i=object.getChildren().iterator(); i.hasNext();){ UIModelObject objectChild = (UIModelObject) i.next(); - generateForUIModelObject(output, objectChild); /*{ - children.add(__<%= objectChild.getName() %>__); + children.add(get<%=Util.toUpperCaseFirstLetter(objectChild.getName())%>()); }*/ } /*{ @@ -375,18 +410,19 @@ // recuperation de l'objet de l'enfant UIModelObject objectChild = (UIModelObject) i.next(); // recuperation de la constrainte pour cet objet - UIModelConstraint objectConstraint = objectChild.getConstraint(); + Object objectConstraint = objectChild.getConstraint().getValue(); // la contrainte peut etre de 2 types : un objet ou une string if (objectConstraint instanceof UIModelObject) { - UIModelObject constraint = (UIModelObject)objectConstraint.getValue(); - generateForUIModelObject(output, constraint); + UIModelObject constraint = (UIModelObject)objectConstraint; + /*{ - constraints.add(__<%=constraint.getName()%>__); + + constraints.add(new <%=constraint.getType()%>(<%=generateArgumentStatement(output, constraint)%>)); }*/ - }else{ + }else if (objectConstraint instanceof String) { /*{ - constraints.add(<%=objectConstraint.getStringValue()%>); + constraints.add(<%=objectChild.getConstraint().getStringValue()%>); }*/ } } @@ -395,6 +431,42 @@ } }*/ + } + + /** + * Methode pour "construire" l'objet (events, properties, child ...) + */ + public void generateAllStatement(Writer output, UIModelObject object) + throws IOException { + // generation des proprietes + generateSetStatement(output, object); +/*{ + + // recuperation des differentes donnees concernant l'objet + ArrayList childs = get<%=Util.toUpperCaseFirstLetter(object.getName())%>Childs(); + ArrayList constraints = get<%=Util.toUpperCaseFirstLetter(object.getName())%>Constraints(); + + // ajout des enfants avec leur contrainte + Iterator iConstraints = constraints.iterator(); + for(Iterator iChilds = childs.iterator(); iChilds.hasNext(); ){ + Component c = (Component)iChilds.next(); + if (result instanceof RootPaneContainer) { + result.getContentPane().add(c, iConstraints.next()); + }else{ + result.add(c, iConstraints.next()); + } +}*/ + if (object.getType().equals("javax.swing.JTabbedPane")){ +/*{ + result.setTitleAt(i, c.getName()); +}*/ + } +/*{ + } +}*/ + + // creation des events + generateHandlerEventStatement(output, object); } } // UIModelToUISwingGenerator