[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