[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/ui ...

Christian Bauer christian at hibernate.org
Mon Mar 19 08:11:25 EDT 2007


  User: cbauer  
  Date: 07/03/19 08:11:25

  Modified:    examples/wiki/src/main/org/jboss/seam/wiki/core/ui 
                        UIWikiFormattedText.java
  Log:
  Automatic CSS include for plugins
  
  Revision  Changes    Path
  1.6       +29 -8     jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/ui/UIWikiFormattedText.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: UIWikiFormattedText.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/ui/UIWikiFormattedText.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -b -r1.5 -r1.6
  --- UIWikiFormattedText.java	19 Mar 2007 04:53:53 -0000	1.5
  +++ UIWikiFormattedText.java	19 Mar 2007 12:11:24 -0000	1.6
  @@ -1,9 +1,6 @@
   package org.jboss.seam.wiki.core.ui;
   
  -import java.io.IOException;
  -import java.io.Reader;
  -import java.io.StringReader;
  -import java.io.StringWriter;
  +import java.io.*;
   import java.net.URL;
   import java.util.*;
   
  @@ -15,6 +12,9 @@
   import org.jboss.seam.contexts.Contexts;
   import org.jboss.seam.util.Resources;
   import org.jboss.seam.ui.JSF;
  +import org.jboss.seam.wiki.core.model.GlobalPreferences;
  +import org.jboss.seam.annotations.In;
  +import org.jboss.seam.Component;
   
   import antlr.ANTLRException;
   import com.sun.facelets.Facelet;
  @@ -86,13 +86,34 @@
           URL url = Resources.getResource(includeView);
           if (url == null) return "";
   
  +        // Try to get the CSS for it
  +        GlobalPreferences globalPrefs = (GlobalPreferences) Component.getInstance("globalPrefs");
  +        String includeViewCSS = "/themes/" + globalPrefs.getThemeName() + "/css/" + macroName + ".css";
  +
  +        // Prepare all the writers for rendering
           ResponseWriter originalResponseWriter = facesContext.getResponseWriter();
           StringWriter stringWriter = new StringWriter();
           ResponseWriter tempResponseWriter = originalResponseWriter.cloneWithWriter(stringWriter);
           facesContext.setResponseWriter(tempResponseWriter);
   
  -        String output;
  +        StringBuilder output = new StringBuilder();
  +
           try {
  +            // Render CSS
  +            InputStream is = Resources.getResourceAsStream(includeViewCSS);
  +            if (is != null) {
  +                output.append("<style type=\"text/css\">\n");
  +                BufferedReader reader = new BufferedReader(new InputStreamReader(is));
  +                String line;
  +                while ( (line = reader.readLine()) != null) {
  +                    output.append(line);
  +                    output.append("\n");
  +                }
  +                is.close();
  +                output.append("</style>\n");
  +            }
  +
  +            // Render XHTML
               Facelet f = new DefaultFaceletFactory(new SAXCompiler(), new DefaultResourceResolver()).getFacelet(url);
   
               // TODO: I'm not sure this is good...
  @@ -106,17 +127,17 @@
               // TODO: And back... it's definitely in the wrong order in the component tree but the ids look ok to me...
               getChildren().addAll(storedChildren);
   
  -            output = stringWriter.getBuffer().toString();
  +            output.append(stringWriter.getBuffer().toString());
  +
           } catch (Exception ex) {
               throw new RuntimeException(ex);
           } finally {
               includedViews.add(includeView);
               facesContext.setResponseWriter(originalResponseWriter);
           }
  -        return output;
  +        return output.toString();
       }
   
  -
       public void encodeChildren(FacesContext facesContext) throws IOException {
           // Already done
       }
  
  
  



More information about the jboss-cvs-commits mailing list