[jboss-cvs] jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/ui ...
Christian Bauer
christian at hibernate.org
Thu Mar 22 08:16:07 EDT 2007
User: cbauer
Date: 07/03/22 08:16:07
Modified: examples/wiki/src/main/org/jboss/seam/wiki/core/ui
UIWikiFormattedText.java Converters.java
Removed: examples/wiki/src/main/org/jboss/seam/wiki/core/ui
WikiUtil.java WikiTextParser.java WikiLink.java
Log:
Cleaned up wiki core link engine
Revision Changes Path
1.10 +73 -30 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.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- UIWikiFormattedText.java 21 Mar 2007 19:38:47 -0000 1.9
+++ UIWikiFormattedText.java 22 Mar 2007 12:16:07 -0000 1.10
@@ -1,31 +1,33 @@
package org.jboss.seam.wiki.core.ui;
-import java.io.*;
import java.net.URL;
import java.util.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
+import java.io.*;
import javax.faces.component.UIOutput;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
-import org.jboss.seam.text.SeamTextLexer;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.util.Resources;
import org.jboss.seam.ui.JSF;
-import org.jboss.seam.ui.facelet.SeamExpressionFactory;
import org.jboss.seam.wiki.core.model.GlobalPreferences;
+import org.jboss.seam.wiki.core.model.File;
+import org.jboss.seam.wiki.core.links.WikiLink;
+import org.jboss.seam.wiki.core.links.WikiTextRenderer;
+import org.jboss.seam.wiki.core.links.WikiTextParser;
+import org.jboss.seam.wiki.util.WikiUtil;
import org.jboss.seam.Component;
import org.jboss.seam.core.Expressions;
-import antlr.ANTLRException;
import com.sun.facelets.Facelet;
import com.sun.facelets.impl.DefaultFaceletFactory;
import com.sun.facelets.impl.DefaultResourceResolver;
import com.sun.facelets.compiler.SAXCompiler;
-public class UIWikiFormattedText extends UIOutput {
+public class UIWikiFormattedText extends UIOutput implements WikiTextRenderer {
public static final String COMPONENT_FAMILY = "org.jboss.seam.wiki.core.ui.WikiFormattedText";
@@ -43,38 +45,82 @@
@Override
public void encodeBegin(FacesContext facesContext) throws IOException {
-
if (!isRendered() || getValue() == null) return;
- Reader r = new StringReader((String) getValue());
- SeamTextLexer lexer = new SeamTextLexer(r);
-
- // TODO: This getAttribute() stuff is not NPE safe!
// Use the WikiTextParser to resolve links
- WikiTextParser parser =
- new WikiTextParser(lexer,
- getAttributes().get("linkStyleClass").toString(),
- getAttributes().get("brokenLinkStyleClass").toString(),
- getAttributes().get("attachmentLinkStyleClass").toString(),
- getAttributes().get("inlineLinkStyleClass").toString(),
- this
- );
+ WikiTextParser parser = new WikiTextParser((String)getValue(), this);
+ parser.parse(true);
- try {
- parser.startRule();
+ facesContext.getResponseWriter().write(parser.toString());
}
- catch (ANTLRException re) {
- // TODO: Do we ever get this exception?
- throw new RuntimeException(re);
+
+ public void encodeChildren(FacesContext facesContext) throws IOException {
+ // Already done
}
- facesContext.getResponseWriter().write(parser.toString());
+ public String renderInlineLink(WikiLink inlineLink) {
+ return "<a href=\""
+ + (inlineLink.isBroken() ? inlineLink.getUrl() : WikiUtil.renderURL(inlineLink.getNode()))
+ + "\" class=\""
+ + (inlineLink.isBroken() ? getAttributes().get("brokenLinkStyleClass") : getAttributes().get("linkStyleClass"))
+ + "\">"
+ + inlineLink.getDescription()
+ + "</a>";
+ }
+
+ public String renderExternalLink(WikiLink externalLink) {
+ return "<a href=\""
+ + externalLink.getUrl()
+ + "\" class=\""
+ + (externalLink.isBroken() ? getAttributes().get("brokenLinkStyleClass") : getAttributes().get("linkStyleClass"))
+ + "\">"
+ + externalLink.getDescription()
+ + "</a>";
+ }
+
+ public String renderFileAttachmentLink(int attachmentNumber, WikiLink attachmentLink) {
+ return "<a href=\"#attachment"
+ + attachmentNumber
+ + "\" class=\""
+ + getAttributes().get("attachmentLinkStyleClass")
+ + "\">"
+ + attachmentLink.getDescription()
+ + "[" + attachmentNumber + "]"
+ + "</a>";
+ }
+
+ public String renderThumbnailImageInlineLink(WikiLink inlineLink) {
+ File file = (File)inlineLink.getNode();
+ int thumbnailWidth;
+ // TODO: We could make these sizes customizable, maybe as attributes of the JSF tag
+ switch(file.getImageMetaInfo().getThumbnail()) {
+ case 'S': thumbnailWidth = 80; break;
+ case 'M': thumbnailWidth = 160; break;
+ case 'L': thumbnailWidth = 320; break;
+ default: thumbnailWidth = file.getImageMetaInfo().getSizeX();
+ }
+ String thumbnailUrl = WikiUtil.renderURL(inlineLink.getNode()) + "&width=" + thumbnailWidth;
+
+ return "<a href=\""
+ + (inlineLink.isBroken() ? inlineLink.getUrl() : WikiUtil.renderURL(inlineLink.getNode()))
+ + "\" class=\""
+ + getAttributes().get("thumbnailLinkStyleClass")
+ + "\"><img src=\""
+ + thumbnailUrl
+ + "\"/></a>";
+ }
+ public void setAttachmentLinks(List<WikiLink> attachmentLinks) {
// Put attachments (wiki links...) into the event context for later rendering
- Contexts.getEventContext().set("wikiTextAttachments", parser.getAttachments());
+ Contexts.getEventContext().set("wikiTextAttachments", attachmentLinks);
+ }
+
+ public void setExternalLinks(List<WikiLink> externalLinks) {
+ // Put external links (to targets not on this wiki) into the event context for later rendering
+ Contexts.getEventContext().set("wikiTextExternalLinks", externalLinks);
}
- String renderMacro(String macroName) {
+ public String renderMacro(String macroName) {
if (macroName == null || macroName.length() == 0) return "";
String includeView = "/plugins/" + macroName + "/plugin.xhtml";
@@ -165,7 +211,4 @@
return output.toString();
}
- public void encodeChildren(FacesContext facesContext) throws IOException {
- // Already done
- }
}
1.5 +1 -0 jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/ui/Converters.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Converters.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/ui/Converters.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- Converters.java 20 Mar 2007 02:38:14 -0000 1.4
+++ Converters.java 22 Mar 2007 12:16:07 -0000 1.5
@@ -6,6 +6,7 @@
import org.jboss.seam.wiki.core.model.Role;
import org.jboss.seam.wiki.core.model.Node;
import org.jboss.seam.wiki.core.model.Directory;
+import org.jboss.seam.wiki.util.WikiUtil;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
import org.jboss.seam.security.Identity;
More information about the jboss-cvs-commits
mailing list