[Buix-commits] r1549 - trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator
Author: kmorin Date: 2009-07-31 16:43:26 +0200 (Fri, 31 Jul 2009) New Revision: 1549 Modified: trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingAbstractClassGenerator.java Log: Look in the source dirctory the guix files corresponding to tags without compiled classes Modified: trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingAbstractClassGenerator.java =================================================================== --- trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingAbstractClassGenerator.java 2009-07-31 14:43:13 UTC (rev 1548) +++ trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingAbstractClassGenerator.java 2009-07-31 14:43:26 UTC (rev 1549) @@ -558,13 +558,14 @@ } /** + * Generates the code to set the attributes of the gmo when gmo's class is an uncompiled java file * - * @param jFile - * @param gmo - * @param creationMethod + * @param jFile the JavaFile describing th uncompiled java file + * @param gmo the GuixModelObject instance of the clas represented by jFile + * @param creationMethod the StringBuffer containing the creation method */ private void processAttributes(JavaFile jFile, GuixModelObject gmo, StringBuffer creationMethod) { - //processCSSAttributes(gmo, seh, clazz); + processCSSAttributes(gmo, jFile); //browses the attributes for (AttributeDescriptor attr : gmo.getAttributeDescriptors()) { boolean addQuote = false; @@ -703,6 +704,92 @@ gmo.getAttributeDescriptors().addAll(ads); } + /** + * Transform the css attributes into AttributeDescriptors + * + * @param gmo the GuixModelObject which has got the css attributes + * @param jFile the JavaFile describing th uncompiled java file + */ + private void processCSSAttributes(GuixModelObject gmo, JavaFile jFile) { + Map<String, String> cssIds = new HashMap<String, String>(); + Map<String, String> cssStyleClasses = new HashMap<String, String>(); + Map<String, String> cssJavaClasses = new HashMap<String, String>(); + List<AttributeDescriptor> ads = new ArrayList<AttributeDescriptor>(); + for (StyleSheet ss : styleSheets) { + for (Selector sel : ss.getSelectors()) { + if((sel.getId() == null || sel.getId().equals(gmo.getId())) + && (sel.getStyleClass() == null || sel.getStyleClass().equals(gmo.getStyleClass())) + && (sel.getJavaClassName() == null || sel.getJavaClassName().equals(gmo.getClassDescriptor().getName()))) { + boolean realAttribute = true; + if (sel.getPseudoClass() != null && sel.getPseudoClass().startsWith("on") && Character.isUpperCase(sel.getPseudoClass().charAt(2))) { + //the swing event does not start by "on" + String lowerCaseAttribute = (sel.getPseudoClass().length() > 2) ? Character.toLowerCase(sel.getPseudoClass().charAt(2)) + sel.getPseudoClass().substring(3) : sel.getPseudoClass(); + StringBuffer eventAction = new StringBuffer(); + + for (Rule rule : sel.getRules()) { + for (Entry<String, String> entry : rule.getProperties().entrySet()) { + String capitalizedAttribute = (entry.getKey().length() > 0) ? Character.toUpperCase(entry.getKey().charAt(0)) + entry.getKey().substring(1) : entry.getKey(); + //checks if the setter for this attribute exists + JavaMethod method = null; + for(JavaMethod m : jFile.getMethods()) { + if(m.getName().equals("set" + capitalizedAttribute)) { + method = m; + break; + } + } + //if yes + if(method != null) { + //checks if the parameter of the setter is a String + boolean addQuote = method.getArguments()[0].getType().equals(String.class.getName()); + //generates the code to set the attribute to object + eventAction.append(gmo.getId()).append(".set").append(capitalizedAttribute).append("(").append(addQuote ? "\"" : "").append(entry.getValue()).append(addQuote ? "\"" : "").append(");\n"); + } + else if(log.isErrorEnabled()) { + log.error(entry.getKey() + " cannot be set."); + } + } + } + } + if (sel.getId() != null && sel.getId().equals(gmo.getId())) { + for (Rule rule : sel.getRules()) { + for (Entry<String, String> entry : rule.getProperties().entrySet()) { + cssIds.put(entry.getKey(), entry.getValue()); + } + } + } + else if (sel.getStyleClass() != null && sel.getStyleClass().equals(gmo.getStyleClass())) { + for (Rule rule : sel.getRules()) { + for (Entry<String, String> entry : rule.getProperties().entrySet()) { + cssStyleClasses.put(entry.getKey(), entry.getValue()); + } + } + } + else if (sel.getJavaClassName() != null && sel.getJavaClassName().equals(gmo.getClassDescriptor().getName())) { + for (Rule rule : sel.getRules()) { + for (Entry<String, String> entry : rule.getProperties().entrySet()) { + cssJavaClasses.put(entry.getKey(), entry.getValue()); + } + } + } + } + } + } + for(Entry<String, String> entry : cssIds.entrySet()) { + ads.add(new AttributeDescriptor(entry.getKey(), entry.getValue())); + } + for(Entry<String, String> entry : cssStyleClasses.entrySet()) { + if(!cssIds.containsKey(entry.getKey())) { + ads.add(new AttributeDescriptor(entry.getKey(), entry.getValue())); + } + } + for(Entry<String, String> entry : cssJavaClasses.entrySet()) { + if(!cssIds.containsKey(entry.getKey()) && !cssStyleClasses.containsKey(entry.getKey())) { + ads.add(new AttributeDescriptor(entry.getKey(), entry.getValue())); + } + } + gmo.getAttributeDescriptors().addAll(ads); + } + public Map<String, Map<String, String>> getBindings2Generate() { return bindings2Generate; }
participants (1)
-
kmorin@users.labs.libre-entreprise.org