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

Christian Bauer christian at hibernate.org
Mon Mar 19 22:38:14 EDT 2007


  User: cbauer  
  Date: 07/03/19 22:38:14

  Modified:    examples/wiki/src/main/org/jboss/seam/wiki/core/ui   
                        WikiTextParser.java UIWikiFormattedText.java
                        Converters.java
  Log:
  Implemented moving of documents and files between directories
  
  Revision  Changes    Path
  1.4       +1 -0      jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/ui/WikiTextParser.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: WikiTextParser.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/main/org/jboss/seam/wiki/core/ui/WikiTextParser.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- WikiTextParser.java	19 Mar 2007 04:53:53 -0000	1.3
  +++ WikiTextParser.java	20 Mar 2007 02:38:14 -0000	1.4
  @@ -46,6 +46,7 @@
           method.invoke();
   
           WikiLink link = links.get((linkText));
  +        if (link == null) return "";
   
           String finalDescriptionText =
                   (descriptionText!=null && descriptionText.length() > 0 ? descriptionText : link.getDescription());
  
  
  
  1.7       +1 -0      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.6
  retrieving revision 1.7
  diff -u -b -r1.6 -r1.7
  --- UIWikiFormattedText.java	19 Mar 2007 12:11:24 -0000	1.6
  +++ UIWikiFormattedText.java	20 Mar 2007 02:38:14 -0000	1.7
  @@ -61,6 +61,7 @@
               parser.startRule();
           }
           catch (ANTLRException re) {
  +            // TODO: Do we ever get this exception?
               throw new RuntimeException(re);
           }
   
  
  
  
  1.4       +66 -3     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.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- Converters.java	18 Mar 2007 15:44:37 -0000	1.3
  +++ Converters.java	20 Mar 2007 02:38:14 -0000	1.4
  @@ -2,19 +2,24 @@
   
   import org.jboss.seam.annotations.Name;
   import org.jboss.seam.annotations.Transactional;
  +import org.jboss.seam.annotations.Factory;
   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.Component;
  -import org.jboss.seam.core.Expressions;
  -import org.jboss.seam.ui.EntityConverter;
  +import org.jboss.seam.ScopeType;
  +import org.jboss.seam.security.Identity;
  +import org.richfaces.component.TreeNode;
   
   import javax.faces.component.UIComponent;
   import javax.faces.context.FacesContext;
   import javax.faces.convert.Converter;
   import javax.faces.convert.ConverterException;
  -import javax.persistence.EntityManager;
   import java.io.Serializable;
   import java.util.List;
  +import java.util.Map;
  +import java.util.Iterator;
  +import java.util.LinkedHashMap;
   
   public class Converters {
    
  @@ -45,5 +50,63 @@
           }
       }
   
  +    @Name("treeNodeAdapter")
  +    public static class TreeNodeAdapter {
  +
  +        @Factory(value = "writableDirectoryTree", scope = ScopeType.CONVERSATION, autoCreate = true)
  +        public TreeNode loadWritableDirectoryTree() {
  +            Directory wikiroot = (Directory) Component.getInstance("restrictedWikiRoot");
  +            return new WikiTreeNode(wikiroot, true);
  +        }
  +        @Factory(value = "readableDirectoryTree", scope = ScopeType.CONVERSATION, autoCreate = true)
  +        public TreeNode loadReadableDirectoryTree() {
  +            Directory wikiroot = (Directory) Component.getInstance("restrictedWikiRoot");
  +            return new WikiTreeNode(wikiroot, false);
  +        }
  +        class WikiTreeNode implements TreeNode {
  +            boolean onlyWritableChildren;
  +            private Node wikiNode;
  +            private Map<Object, TreeNode> childrenMap = new LinkedHashMap<Object,TreeNode>();
  +
  +            public WikiTreeNode(Node wikiNode, boolean onlyWritableChildren) {
  +                if (wikiNode != null) {
  +                    this.wikiNode = wikiNode;
  +                    this.onlyWritableChildren = onlyWritableChildren;
  +                    for (Node childNode : wikiNode.getChildren()) {
  +                        if (!WikiUtil.isDirectory(childNode)) continue;
  +                        if (onlyWritableChildren && !Identity.instance().hasPermission("Node", "edit", childNode)) continue;
  +                        childrenMap.put(childNode.getId(), new WikiTreeNode(childNode, onlyWritableChildren));
  +                    }
  +                }
  +            }
  +            public Object getData() { return wikiNode; }
  +            public void setData(Object node) { this.wikiNode = (Node)node; }
  +
  +            public boolean isLeaf() {
  +                return childrenMap.size() == 0;
  +            }
  +            public Iterator getChildren() {
  +                return childrenMap.entrySet().iterator();
  +            }
  +            public TreeNode getChild(Object identifier) {
  +                return childrenMap.get( identifier );
  +            }
  +            public void addChild(Object identifier, TreeNode treeNode) {
  +                childrenMap.put(identifier, treeNode);
  +            }
  +            public void removeChild(Object identifier) {
  +                // Immutable
  +            }
  +
  +            public TreeNode getParent() {
  +                return new WikiTreeNode(wikiNode.getParent(), onlyWritableChildren);
  +            }
  +
  +            public void setParent(TreeNode treeNode) {
  +                // Immutable
  +            }
  +        }
  +
  +    }
   
   }
  
  
  



More information about the jboss-cvs-commits mailing list