[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