[jboss-cvs] JBossBlog SVN: r25 - in trunk: . blog-core/src/etc/META-INF blog-core/src/java/org/jboss/blog/model blog-core/src/java/org/jboss/blog/service/store blog-core/src/java/org/jboss/blog/service/store/hibernate blog-core/src/java/org/jboss/blog/service/store/model blog-core/src/java/org/jboss/blog/ui blog-core/src/web/WEB-INF blog-core/src/web/views

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 10 16:43:09 EST 2006


Author: adamw
Date: 2006-11-10 16:42:57 -0500 (Fri, 10 Nov 2006)
New Revision: 25

Added:
   trunk/blog-core/src/java/org/jboss/blog/ui/PostEdit.java
   trunk/blog-core/src/web/views/post_edit.xhtml
   trunk/blog-core/src/web/views/post_mod.xhtml
Modified:
   trunk/blog-core/src/etc/META-INF/acl-mapping.xml
   trunk/blog-core/src/etc/META-INF/acl-permissions.xml
   trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogModel.java
   trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java
   trunk/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java
   trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java
   trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml
   trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java
   trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java
   trunk/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogModel.java
   trunk/blog-core/src/java/org/jboss/blog/ui/BlogView.java
   trunk/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java
   trunk/blog-core/src/web/WEB-INF/faces-config.xml
   trunk/blog-core/src/web/views/blog_mod.xhtml
   trunk/blog-core/src/web/views/blog_view.xhtml
   trunk/blog-core/src/web/views/common.xhtml
   trunk/blog-core/src/web/views/post_view.xhtml
   trunk/blog-core/src/web/views/view.xhtml
   trunk/jbossblog.iws
Log:
http://jira.jboss.com/jira/browse/JBBLOG-12

Modified: trunk/blog-core/src/etc/META-INF/acl-mapping.xml
===================================================================
--- trunk/blog-core/src/etc/META-INF/acl-mapping.xml	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/etc/META-INF/acl-mapping.xml	2006-11-10 21:42:57 UTC (rev 25)
@@ -99,7 +99,7 @@
         <function id="manageComment" name="Manage Comment">
 			<!-- ui protection -->
 			<resource type="fragment" criteriaId="manageComment://ui">
-				<id>acl://moveTopics</id>
+				<id>acl://manageComment</id>
 			</resource>
 			<!-- action protection -->
 			<!--<resource type="jsfAction" criteriaId="manageComments://action">				
@@ -111,13 +111,13 @@
         <function id="managePost" name="Manage Post">
 			<!-- ui protection -->
 			<resource type="fragment" criteriaId="managePost://ui">
-				<id>acl://managePosts</id>
+				<id>acl://managePost</id>
 			</resource>
 			<!-- action protection -->
-			<!--<resource type="jsfAction" criteriaId="managePosts://action">
-				<class>org.jboss.portlet.Blogs.ui.action.ModeratorAction</class>
-				<method>managePosts</method>
-			</resource>-->
+			<resource type="jsfAction" criteriaId="managePost://action">
+				<class>org.jboss.blog.ui.PostEdit</class>
+				<method>save</method>
+			</resource>
             <implies>manageComment</implies>
         </function>
 	</module>

Modified: trunk/blog-core/src/etc/META-INF/acl-permissions.xml
===================================================================
--- trunk/blog-core/src/etc/META-INF/acl-permissions.xml	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/etc/META-INF/acl-permissions.xml	2006-11-10 21:42:57 UTC (rev 25)
@@ -30,6 +30,7 @@
 		</permission-->	
 		<permission action="viewComment"/>
         <permission action="manageCategory"/>
+        <permission action="managePost"/>
         <!-- <permission action="all"/>	-->
 
         <!-- Owner Module permissions -->

Modified: trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogModel.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogModel.java	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogModel.java	2006-11-10 21:42:57 UTC (rev 25)
@@ -8,7 +8,7 @@
  * @author Adam Warski (adamw at aster.pl)
  */
 public abstract class AbstractBlogModel implements BlogModel {
-    public BlogPost getPost(String guid)
+    public BlogPost getPostByGuid(String guid)
             throws BlogPostDoesNotExistException {
         for (Iterator iter = getPosts().iterator(); iter.hasNext();) {
             BlogPost post = (BlogPost) iter.next();
@@ -20,6 +20,18 @@
         throw new BlogPostDoesNotExistException(guid);
     }
 
+    public BlogPost getPostByTitleAsId(String titleAsId)
+            throws BlogPostDoesNotExistException {
+        for (Iterator iter = getPosts().iterator(); iter.hasNext();) {
+            BlogPost post = (BlogPost) iter.next();
+            if (post.getTitleAsId().equals(titleAsId)) {
+                return post;
+            }
+        }
+
+        throw new BlogPostDoesNotExistException(titleAsId);
+    }
+
     public List getPosts(int from, int to) {
         List posts = getPosts();
         to = Math.min(posts.size(), to);

Modified: trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java	2006-11-10 21:42:57 UTC (rev 25)
@@ -17,7 +17,8 @@
     public Date getCreated();
 
     /**
-     *
+     * Gets all posts that are in this model. Invoking this method is
+     * discouraged. If possible, use {@link BlogModel#getPosts(int, int)}.
      * @return Sorted list of {@link BlogPost} - posts for this blog model.
      */
     public List getPosts();
@@ -41,5 +42,6 @@
      */
     public Set getCategories();
 
-    public BlogPost getPost(String guid) throws BlogPostDoesNotExistException;
+    public BlogPost getPostByGuid(String guid) throws BlogPostDoesNotExistException;
+    public BlogPost getPostByTitleAsId(String titleAsId) throws BlogPostDoesNotExistException;
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java	2006-11-10 21:42:57 UTC (rev 25)
@@ -3,6 +3,8 @@
 import org.jboss.blog.BlogName;
 import org.jboss.blog.model.BlogModelDoesNotExistException;
 import org.jboss.blog.service.store.model.*;
+import org.jboss.blog.service.store.hibernate.HBlogPost;
+import org.jboss.blog.service.store.hibernate.HBlogModel;
 
 import java.util.List;
 

Modified: trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java	2006-11-10 21:42:57 UTC (rev 25)
@@ -1,7 +1,10 @@
 package org.jboss.blog.service.store.hibernate;
 
 import org.jboss.blog.service.store.model.ModifiableBlogModel;
+import org.jboss.blog.service.store.model.ModifiableBlogPost;
 import org.jboss.blog.model.AbstractBlogModel;
+import org.jboss.blog.model.BlogPost;
+import org.jboss.blog.model.BlogPostDoesNotExistException;
 import org.jboss.blog.BlogName;
 
 import java.util.*;
@@ -21,6 +24,7 @@
     private List modelPosts;
 
     private Set categories;
+    private List posts;
 
     private HibernateBlogStoreService storeService;
 
@@ -128,13 +132,18 @@
 
     public List getPosts() {
         // Creating a list of posts from the a list of HBlogModelPost.
-        List l = new ArrayList();
-        for (Iterator iter = getModelPosts().iterator(); iter.hasNext();) {
-            HBlogModelPost hbmp = (HBlogModelPost) iter.next();
-            l.add(hbmp.getPost());
+        if (posts == null) {
+            posts = new ArrayList();
+            modelPosts = getModelPosts();
+
+            for (Iterator iter = modelPosts.iterator(); iter.hasNext();) {
+                posts.add(((HBlogModelPost) iter.next()).getPost());
+            }
+
+            Collections.sort(posts);
         }
 
-        return l;
+        return posts;
     }
 
     public void setPosts(List posts) {
@@ -147,7 +156,7 @@
                         "which were not obtained from it.");
             }
 
-            l.add(new HBlogModelPost(this, (HBlogPost) post));            
+            l.add(new HBlogModelPost(this, (HBlogPost) post));
         }
 
         setModelPosts(l);
@@ -157,5 +166,21 @@
 
     public List getPosts(int from, int to) {
         return storeService.getPosts(this, from, to);
-    } 
-}
+    }
+
+
+    public ModifiableBlogPost getModifiableBlogPostByTitleAsId(String titleAsId)
+            throws BlogPostDoesNotExistException {
+        HBlogPost p = storeService.getPostByTitleAsId(this, titleAsId);
+        if (p == null) {
+            throw new BlogPostDoesNotExistException(titleAsId);
+        }
+
+        return p;
+    }
+
+    public BlogPost getPostByTitleAsId(String titleAsId)
+            throws BlogPostDoesNotExistException {
+        return getModifiableBlogPostByTitleAsId(titleAsId);
+    }
+}
\ No newline at end of file

Modified: trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml	2006-11-10 21:42:57 UTC (rev 25)
@@ -17,6 +17,8 @@
 
         <property name="title" column="TITLE" not-null="true" />
 
+        <property name="titleAsId" column="TITLE_AS_ID" not-null="true" index="titleAsIdIndex" />
+
         <property name="guid" column="GUID" not-null="true" />
 
         <property name="link" column="LINK" />

Modified: trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java	2006-11-10 21:42:57 UTC (rev 25)
@@ -2,6 +2,7 @@
 
 import org.jboss.blog.service.store.model.ModifiableBlogPost;
 import org.jboss.blog.model.AbstractBlogPost;
+import org.jboss.blog.tools.BlogTools;
 
 import java.util.Date;
 import java.util.Set;
@@ -17,6 +18,7 @@
     private String link;
     private String guid;
     private String commentLink;
+    private String titleAsId;
     private Date created;
     
     private Set categories;
@@ -47,8 +49,21 @@
 
     public void setTitle(String title) {
         this.title = title;
+
+        String newTitleAsId = BlogTools.convertToId(title);
+        if (!BlogTools.objectsEqual(titleAsId, newTitleAsId)) {
+            setTitleAsId(newTitleAsId);
+        }
     }
 
+    public String getTitleAsId() {
+        return titleAsId;
+    }
+
+    public void setTitleAsId(String titleAsId) {
+        this.titleAsId = titleAsId;
+    }
+
     public String getDescription() {
         return description;
     }

Modified: trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java	2006-11-10 21:42:57 UTC (rev 25)
@@ -228,9 +228,33 @@
 
     //
 
+    /**
+     * Gets posts for the given model which, when sorted, are between the given
+     * indexes in the list of all posts.
+     * @param model Model for which to get the posts.
+     * @param from Index from which to get the posts.
+     * @param to Index of post after the last post to get.
+     * @return A list of posts, which, when sorted, are between the given indexes
+     * in the list of all posts.
+     */
     List getPosts(HBlogModel model, int from, int to) {
         return sf.getCurrentSession().createQuery(
-                "select bmp.post from HBlogModelPost bmp where bmp.model = :model")
+                "select bmp.post from HBlogModelPost bmp where bmp.model = :model " +
+                "order by bmp.post.created desc")
                 .setEntity("model", model).setFirstResult(from).setMaxResults(to-from).list();
     }
+
+    /**
+     * Gets a post with the specified title.
+     * @param model Model to which the post should belong.
+     * @param titleAsId Title converted to an id of the post.
+     * @return Post with the given title in the given model or null, if no such
+     * post exists.
+     */
+    HBlogPost getPostByTitleAsId(HBlogModel model, String titleAsId) {
+        return (HBlogPost) sf.getCurrentSession().createQuery(
+                "select bmp.post from HBlogModelPost bmp where bmp.model = :model " +
+                "and bmp.post.titleAsId = :titleAsId").setEntity("model", model)
+                .setParameter("titleAsId", titleAsId).uniqueResult();
+    }
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogModel.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogModel.java	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogModel.java	2006-11-10 21:42:57 UTC (rev 25)
@@ -1,6 +1,7 @@
 package org.jboss.blog.service.store.model;
 
 import org.jboss.blog.model.BlogModel;
+import org.jboss.blog.model.BlogPostDoesNotExistException;
 
 import java.util.Date;
 import java.util.Set;
@@ -17,4 +18,6 @@
     public void setCreated(Date created);
     public void setPosts(List posts);
     public void setCategories(Set categories);
+
+    public ModifiableBlogPost getModifiableBlogPostByTitleAsId(String titleAsId) throws BlogPostDoesNotExistException;
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/ui/BlogView.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/ui/BlogView.java	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/java/org/jboss/blog/ui/BlogView.java	2006-11-10 21:42:57 UTC (rev 25)
@@ -3,6 +3,7 @@
 import org.jboss.blog.model.BlogModel;
 import org.jboss.blog.model.BlogModelDoesNotExistException;
 import org.jboss.blog.model.BlogPost;
+import org.jboss.blog.model.BlogPostDoesNotExistException;
 import org.jboss.blog.model.impl.EmptyBlogPost;
 import org.jboss.blog.model.impl.EmptyBlogModel;
 import org.jboss.blog.BlogName;
@@ -59,6 +60,12 @@
     private Boolean postsExpandable;
     private Boolean blogModifiable;
 
+    /* A list of posts to show in the current view, plus the next post,
+     * if such a post exists (used to checking if there is a next page). */
+    private List postsWithNext;
+    // A list of posts to show in the current view.
+    private List posts;
+
     private Object getRequest() {
         return FacesContext.getCurrentInstance().getExternalContext().getRequest();
     }
@@ -79,7 +86,7 @@
         if (blogModel == null) {
             try {
                 blogModel = BlogTools.getBlogService().getModelService().getBlogModel(
-                    getBlogName());
+                        getBlogName());
             } catch (BlogModelDoesNotExistException e) {
                 UITools.addMessageBlogDoesntExist(getBlogName());
                 blogModel = new EmptyBlogModel();
@@ -142,34 +149,53 @@
         return blogModifiable;
     }
 
+    private void resetPosts() {
+        postsWithNext = null;
+        posts = null;
+    }
+
+    private List getPostsWithNext() {
+        if (postsWithNext == null) {
+            postsWithNext = getBlogModel().getPosts(getFrom(), getTo()+1);
+        }
+
+        return postsWithNext;
+    }
+
+    public List getPosts() {
+        if (posts == null) {
+            List postsWithNext = getPostsWithNext();
+            posts = postsWithNext.subList(0, Math.min(postsWithNext.size(),
+                    getNumberOfPostsPerPage().intValue()));
+        }
+
+        return posts;
+    }
+
     //
 
     public boolean getHasPrevious() {
-        return getFrom().intValue() > 0;
+        return getFrom() > 0;
     }
 
     public boolean getHasNext() {
-        return getTo().intValue() < getBlogModel().getPosts().size()-1;
+        return getPostsWithNext().size() > getTo() - getFrom();
     }
 
-    public Integer getTo() {
-        return new Integer(getFrom().intValue() + getNumberOfPostsPerPage().intValue());
+    public int getTo() {
+        return getFrom() + getNumberOfPostsPerPage().intValue();
     }
 
-    public Integer getFrom() {
+    public int getFrom() {
         return getBlogViewState().getFrom();
     }
 
-    private void setFrom(Integer from) {
+    private void setFrom(int from) {
         BlogViewState bvs = getBlogViewState();
         bvs.setFrom(from);
         setSelectedPostTitleAsId(null);
     }
 
-    public List getPosts() {
-        return getBlogModel().getPosts(getFrom().intValue(), getTo().intValue());
-    }
-
     public String getSelectedPostTitleAsId() {
         return getBlogViewState().getSelectedPostTitleAsId();
     }
@@ -178,68 +204,53 @@
         getBlogViewState().setSelectedPostTitleAsId(selectedPostId);
     }
 
-    private BlogPost searchForBlogPost(List entries, String id, int from, int to) {
-        for (int i=from; i<=to; i++) {
-            BlogPost current = (BlogPost) entries.get(i);
-            if (id.equals(current.getTitleAsId())) {
-                return current;
-            }
-        }
-
-        return null;
-    }
-
     private BlogPost postDoesNotExist(String id) {
         UITools.addMessagePostDoesntExist(id);
         return new EmptyBlogPost();
     }
 
     public BlogPost getSelectedPost() {
-        String id = getSelectedPostTitleAsId();
-        List entries = getBlogModel().getPosts();
+        String titleAsId = getSelectedPostTitleAsId();
 
-        if (id == null) {
-            return postDoesNotExist(id);
+        if (titleAsId == null) {
+            return postDoesNotExist(titleAsId);
         }
 
-        BlogPost ret;
-
         // First looking in the specified range.
-        ret = searchForBlogPost(entries, id, Math.max(getFrom().intValue(), 0),
-                Math.min(getTo().intValue(), entries.size()-1));
+        List posts = getPostsWithNext();
+        for (int i=0; i<posts.size(); i++) {
+            BlogPost current = (BlogPost) posts.get(i);
+            if (titleAsId.equals(current.getTitleAsId())) {
+                return current;
+            }
+        }
 
         // If unsuccessfull, looking in all entries (we may find something if
         // after selecting the entry, new entries have been added/ remvoed).
-        if (ret == null) {
-            ret = searchForBlogPost(entries, id, 0, entries.size()-1);
+        try {
+            return blogModel.getPostByTitleAsId(titleAsId);
+        } catch (BlogPostDoesNotExistException e) {
+            return postDoesNotExist(titleAsId);
         }
-
-        if (ret == null) {
-            return postDoesNotExist(id);
-        }
-
-        return ret;
     }
 
     // Actions
 
     public String next() {
-        setFrom(new Integer(getFrom().intValue() + getNumberOfPostsPerPage().intValue()));
+        setFrom(getFrom() + getNumberOfPostsPerPage().intValue());
+        resetPosts();
 
         return null;
     }
 
     public String previous() {
-        setFrom(new Integer(Math.max(getFrom().intValue() - getNumberOfPostsPerPage().intValue(), 0)));
+        setFrom(Math.max(getFrom() - getNumberOfPostsPerPage().intValue(), 0));
+        resetPosts();
 
         return null;
     }
 
     public String postView() {
-        BlogPost selected = (BlogPost) postsData.getRowData();
-
-        setSelectedPostTitleAsId(selected.getTitleAsId());
-
         if (getViewPostsOnSeparatePage().booleanValue()) {
             return "post_view";
         } else {
@@ -249,18 +260,28 @@
 
     // Action listeners
 
+    public void postSelect(ActionEvent e) {
+        BlogPost selected = (BlogPost) postsData.getRowData();
+        setSelectedPostTitleAsId(selected.getTitleAsId());
+    }
+
     public void backFromPostView(ActionEvent e) {
         setSelectedPostTitleAsId(null);
     }
 
-    public void blogEditFromBlogView(ActionEvent e) {
+    public void exitFromBlogView(ActionEvent e) {
         getState().setReturnTo("blog_view");
     }
 
-    public void blogEditFromPostView(ActionEvent e) {
+    public void exitFromPostView(ActionEvent e) {
         getState().setReturnTo("post_view");
     }
 
+    public void exitFromBlogViewAndPostSelect(ActionEvent e) {
+        exitFromBlogView(e);
+        postSelect(e);
+    }
+
     //
 
     public String testAdd() {

Modified: trunk/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java	2006-11-10 21:42:57 UTC (rev 25)
@@ -7,18 +7,18 @@
  * @author Adam Warski (adamw at aster.pl)
  */
 public class BlogViewState {
-    private Integer from;
+    private int from;
     private String selectedPostTitleAsId;
 
     public BlogViewState() {
-        from = new Integer(0);
+        from = 0;
     }
 
-    public Integer getFrom() {
+    public int getFrom() {
         return from;
     }
 
-    public void setFrom(Integer from) {
+    public void setFrom(int from) {
         this.from = from;
     }
 

Added: trunk/blog-core/src/java/org/jboss/blog/ui/PostEdit.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/ui/PostEdit.java	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/java/org/jboss/blog/ui/PostEdit.java	2006-11-10 21:42:57 UTC (rev 25)
@@ -0,0 +1,153 @@
+package org.jboss.blog.ui;
+
+import org.jboss.blog.model.BlogModelDoesNotExistException;
+import org.jboss.blog.model.BlogPost;
+import org.jboss.blog.model.BlogPostDoesNotExistException;
+import org.jboss.blog.tools.BlogTools;
+import org.jboss.blog.tools.UITools;
+import org.jboss.blog.service.store.model.ModifiableBlogModel;
+import org.jboss.blog.service.store.model.ModifiableBlogPost;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class PostEdit {
+    private State state;
+    private BlogView blogView;
+
+    private boolean initDone;
+
+    private String title;
+    private String author;
+    private String description;
+    private String link;
+    private String guid;
+
+    public PostEdit() {
+        initDone = false;
+    }
+
+    public String getTitle() {
+        if (!initDone) { init(); }
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getAuthor() {
+        if (!initDone) { init(); }
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    public String getDescription() {
+        if (!initDone) { init(); }
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getLink() {
+        if (!initDone) { init(); }
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getGuid() {
+        if (!initDone) { init(); }
+        return guid;
+    }
+
+    public void setGuid(String guid) {
+        this.guid = guid;
+    }
+
+    public State getState() {
+        return state;
+    }
+
+    public void setState(State state) {
+        this.state = state;
+    }
+
+    public BlogView getBlogView() {
+        return blogView;
+    }
+
+    public void setBlogView(BlogView blogView) {
+        this.blogView = blogView;
+    }
+
+    //
+
+    private void init() {
+        BlogPost post = blogView.getSelectedPost();
+
+        author = post.getAuthor();
+        title = post.getTitle();
+        description = post.getDescription();
+        link = post.getLink();
+        guid = post.getGuid(); 
+
+        initDone = true;
+    }
+
+    // Actions
+
+    private String getReturnTo() {
+        String viewName = state.getReturnTo();
+        return viewName == null ? "blog_view" : viewName;
+    }
+
+    public String save() {
+        try {
+            ModifiableBlogModel mbm = BlogTools.getBlogService().getStoreService().getBlogModel(
+                    blogView.getBlogName());
+            ModifiableBlogPost mbp = mbm.getModifiableBlogPostByTitleAsId(
+                    blogView.getSelectedPostTitleAsId());
+
+            boolean changed = false;
+
+            if (!BlogTools.objectsEqual(author, mbp.getAuthor())) {
+                changed = true; mbp.setAuthor(author); }
+
+            if (!BlogTools.objectsEqual(title, mbp.getTitle())) {
+                changed = true; mbp.setTitle(title); }
+
+            if (!BlogTools.objectsEqual(link, mbp.getLink())) {
+                changed = true; mbp.setLink(link); }
+
+            if (!BlogTools.objectsEqual(description, mbp.getDescription())) {
+                changed = true; mbp.setDescription(description); }
+
+            if (!BlogTools.objectsEqual(guid, mbp.getGuid())) {
+                changed = true; mbp.setGuid(guid); }
+
+            if (changed) {
+                UITools.addInfoMessage("Post properties saved.");
+            } else {
+                UITools.addInfoMessage("No post properties were modified.");
+            }
+        } catch (BlogModelDoesNotExistException e) {
+            UITools.addMessageBlogDoesntExist(blogView.getBlogName());
+        } catch (BlogPostDoesNotExistException e) {
+            UITools.addMessagePostDoesntExist(blogView.getSelectedPostTitleAsId());
+        }
+
+        return getReturnTo();
+    }
+
+    public String back() {
+        return getReturnTo();
+    }
+}

Modified: trunk/blog-core/src/web/WEB-INF/faces-config.xml
===================================================================
--- trunk/blog-core/src/web/WEB-INF/faces-config.xml	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/web/WEB-INF/faces-config.xml	2006-11-10 21:42:57 UTC (rev 25)
@@ -39,6 +39,20 @@
     </managed-bean>
 
     <managed-bean>
+        <managed-bean-name>postEdit</managed-bean-name>
+        <managed-bean-class>org.jboss.blog.ui.PostEdit</managed-bean-class>
+        <managed-bean-scope>request</managed-bean-scope>
+        <managed-property>
+            <property-name>state</property-name>
+            <value>#{state}</value>
+        </managed-property>
+        <managed-property>
+            <property-name>blogView</property-name>
+            <value>#{blogView}</value>
+        </managed-property>
+    </managed-bean>
+
+    <managed-bean>
         <managed-bean-name>state</managed-bean-name>
         <managed-bean-class>org.jboss.blog.ui.State</managed-bean-class>
         <managed-bean-scope>session</managed-bean-scope>
@@ -75,4 +89,20 @@
             <to-view-id>/views/blog_edit.xhtml</to-view-id>
         </navigation-case>
     </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/views/index.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>post_edit</from-outcome>
+            <to-view-id>/views/post_edit.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
+
+    <navigation-rule>
+        <from-view-id>/views/post_view.xhtml</from-view-id>
+        <navigation-case>
+            <from-outcome>post_edit</from-outcome>
+            <to-view-id>/views/post_edit.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
 </faces-config>

Modified: trunk/blog-core/src/web/views/blog_mod.xhtml
===================================================================
--- trunk/blog-core/src/web/views/blog_mod.xhtml	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/web/views/blog_mod.xhtml	2006-11-10 21:42:57 UTC (rev 25)
@@ -6,42 +6,39 @@
       xmlns:blog="http://www.jboss.org/portal/jbossblog">
     <ui:composition template="common.xhtml">
         <ui:define name="content">
-            <blog:isAllowed fragment="#{requiredPermission}" contextData="#{blogView.blogName}">
-                <h2><ui:insert name="editheader" /></h2>
+            <h2><ui:insert name="editheader" /></h2>
 
-                <h:messages />
+            <h:messages />
 
-                <h:form>
-                    <h:panelGrid columns="2">
-                        <f:facet name="header">
-                            <ui:insert name="edittableheader" />
-                        </f:facet>
-                        <h:panelGroup>Title: (*)</h:panelGroup>
-                        <h:panelGroup>
-                            <h:inputText value="#{blogEdit.title}" required="true" />
-                        </h:panelGroup>
+            <h:form>
+                <h:panelGrid columns="2">
+                    <f:facet name="header">
+                        <ui:insert name="edittableheader" />
+                    </f:facet>
+                    <h:panelGroup>Title: (*)</h:panelGroup>
+                    <h:panelGroup>
+                        <h:inputText value="#{blogEdit.title}" required="true" />
+                    </h:panelGroup>
 
-                        <h:panelGroup>Author: (*)</h:panelGroup>
-                        <h:panelGroup>
-                            <h:inputText value="#{blogEdit.author}" required="true" />
-                        </h:panelGroup>
+                    <h:panelGroup>Author: (*)</h:panelGroup>
+                    <h:panelGroup>
+                        <h:inputText value="#{blogEdit.author}" required="true" />
+                    </h:panelGroup>
 
-                        <h:panelGroup>Link: (*)</h:panelGroup>
-                        <h:panelGroup>
-                            <h:inputText value="#{blogEdit.link}" required="true" />
-                        </h:panelGroup>
+                    <h:panelGroup>Link: (*)</h:panelGroup>
+                    <h:panelGroup>
+                        <h:inputText value="#{blogEdit.link}" required="true" />
+                    </h:panelGroup>
 
-                        <h:panelGroup>Description:</h:panelGroup>
-                        <h:panelGroup>
-                            <h:inputTextarea value="#{blogEdit.description}" />
-                        </h:panelGroup>
-                    </h:panelGrid>
+                    <h:panelGroup>Description:</h:panelGroup>
+                    <h:panelGroup>
+                        <h:inputTextarea value="#{blogEdit.description}" />
+                    </h:panelGroup>
+                </h:panelGrid>
 
-
-                    <h:commandLink value="Back" action="#{blogEdit.back}" immediate="true"/> <br  />
-                    <h:commandLink value="Save" action="#{blogEdit.save}" />
-                </h:form>
-            </blog:isAllowed>
+                <h:commandLink value="Back" action="#{blogEdit.back}" immediate="true"/> <br  />
+                <h:commandLink value="Save" action="#{blogEdit.save}" />
+            </h:form>
         </ui:define>
     </ui:composition>
 </div>
\ No newline at end of file

Modified: trunk/blog-core/src/web/views/blog_view.xhtml
===================================================================
--- trunk/blog-core/src/web/views/blog_view.xhtml	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/web/views/blog_view.xhtml	2006-11-10 21:42:57 UTC (rev 25)
@@ -8,7 +8,7 @@
     <ui:define name="editlink">
         <h:commandLink value="Edit"
                        action="blog_edit"
-                       actionListener="#{blogView.blogEditFromBlogView}" />
+                       actionListener="#{blogView.exitFromBlogView}" />
     </ui:define>
 
     <ui:define name="viewmain">
@@ -20,16 +20,25 @@
                 <h:form>
                     <b>
                     <h:commandLink value="#{post.title}"
+                                   actionListener="#{blogView.postSelect}"
                                    action="#{blogView.postView}"
                                    rendered="#{blogView.postsExpandable}" />
 
                     <h:outputText value="#{post.title}"
                                   rendered="#{!blogView.postsExpandable}" />
-                    </b><br />
+                    </b>
+                    <br />
+
+                    <blog:isAllowed fragment="acl://managePost" contextData="#{blogView.blogName}">
+                        <h:commandLink value="Edit"
+                                       action="post_edit"
+                                       actionListener="#{blogView.exitFromBlogViewAndPostSelect}" />
+                    </blog:isAllowed>
                 </h:form>
 
-                <h:panelGroup rendered="#{blogView.viewAllPosts ||
-                        (blogView.selectedPostTitleAsId == post.titleAsId)}">
+                <h:panelGroup rendered="#{!blogView.viewPostsOnSeparatePage and
+                        (blogView.viewAllPosts ||
+                            (blogView.selectedPostTitleAsId == post.titleAsId))}">
                     #{post.description}
                 </h:panelGroup>
 

Modified: trunk/blog-core/src/web/views/common.xhtml
===================================================================
--- trunk/blog-core/src/web/views/common.xhtml	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/web/views/common.xhtml	2006-11-10 21:42:57 UTC (rev 25)
@@ -8,5 +8,7 @@
 
     <f:loadBundle basename="Messages" var="messages"/>
 
-    <ui:insert name="content" />
+    <blog:isAllowed fragment="#{requiredPermission}" contextData="#{blogView.blogName}">
+        <ui:insert name="content" />
+    </blog:isAllowed>
 </div>
\ No newline at end of file

Added: trunk/blog-core/src/web/views/post_edit.xhtml
===================================================================
--- trunk/blog-core/src/web/views/post_edit.xhtml	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/web/views/post_edit.xhtml	2006-11-10 21:42:57 UTC (rev 25)
@@ -0,0 +1,18 @@
+<div  xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jstl/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:blog="http://www.jboss.org/portal/jbossblog">
+    <ui:composition template="post_mod.xhtml">
+        <ui:param name="requiredPermission" value="acl://managePost" />
+
+        <ui:define name="editheader">
+            Edit post
+        </ui:define>
+
+        <ui:define name="edittableheader">
+            Change post properties:
+        </ui:define>
+    </ui:composition>
+</div>
\ No newline at end of file

Added: trunk/blog-core/src/web/views/post_mod.xhtml
===================================================================
--- trunk/blog-core/src/web/views/post_mod.xhtml	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/web/views/post_mod.xhtml	2006-11-10 21:42:57 UTC (rev 25)
@@ -0,0 +1,49 @@
+<div  xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jstl/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:blog="http://www.jboss.org/portal/jbossblog">
+    <ui:composition template="common.xhtml">
+        <ui:define name="content">
+            <h2><ui:insert name="editheader" /></h2>
+
+            <h:messages />
+
+            <h:form>
+                <h:panelGrid columns="2">
+                    <f:facet name="header">
+                        <ui:insert name="edittableheader" />
+                    </f:facet>
+                    <h:panelGroup>Title: (*)</h:panelGroup>
+                    <h:panelGroup>
+                        <h:inputText value="#{postEdit.title}" required="true" />
+                    </h:panelGroup>
+
+                    <h:panelGroup>Author: (*)</h:panelGroup>
+                    <h:panelGroup>
+                        <h:inputText value="#{postEdit.author}" required="true" />
+                    </h:panelGroup>
+
+                    <h:panelGroup>Link: (*)</h:panelGroup>
+                    <h:panelGroup>
+                        <h:inputText value="#{postEdit.link}" required="true" />
+                    </h:panelGroup>
+
+                    <h:panelGroup>Guid: (*)</h:panelGroup>
+                    <h:panelGroup>
+                        <h:inputTextarea value="#{postEdit.guid}" required="true" />
+                    </h:panelGroup>
+
+                    <h:panelGroup>Description:</h:panelGroup>
+                    <h:panelGroup>
+                        <h:inputTextarea value="#{postEdit.description}" />
+                    </h:panelGroup>
+                </h:panelGrid>
+
+                <h:commandLink value="Back" action="#{postEdit.back}" immediate="true"/> <br  />
+                <h:commandLink value="Save" action="#{postEdit.save}" />
+            </h:form>
+        </ui:define>
+    </ui:composition>
+</div>
\ No newline at end of file

Modified: trunk/blog-core/src/web/views/post_view.xhtml
===================================================================
--- trunk/blog-core/src/web/views/post_view.xhtml	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/web/views/post_view.xhtml	2006-11-10 21:42:57 UTC (rev 25)
@@ -8,7 +8,7 @@
     <ui:define name="editlink">
         <h:commandLink value="Edit"
                        action="blog_edit"
-                       actionListener="#{blogView.blogEditFromPostView}" />
+                       actionListener="#{blogView.exitFromPostView}" />
     </ui:define>
 
     <ui:define name="viewmain">
@@ -17,6 +17,16 @@
         <b>#{blogView.selectedPost.title}</b><br />
         #{blogView.selectedPost.description}
 
+        <blog:isAllowed fragment="acl://managePost" contextData="#{blogView.blogName}">
+        <h:form>
+        <p>
+        <h:commandLink value="Edit"
+                       action="post_edit"
+                       actionListener="#{blogView.exitFromPostView}" />
+        </p>
+        </h:form>
+        </blog:isAllowed>
+
         <h2>Navigation</h2>
         <h:form>
             <h:commandLink action="blog_view" actionListener="#{blogView.backFromPostView}">

Modified: trunk/blog-core/src/web/views/view.xhtml
===================================================================
--- trunk/blog-core/src/web/views/view.xhtml	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/blog-core/src/web/views/view.xhtml	2006-11-10 21:42:57 UTC (rev 25)
@@ -5,26 +5,28 @@
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:blog="http://www.jboss.org/portal/jbossblog">
     <ui:composition template="common.xhtml">
+        <ui:param name="requiredPermission" value="acl://viewCategory" />
         <ui:define name="content">
-            <blog:isAllowed fragment="acl://viewCategory" contextData="#{blogView.blogName}">
-                <h2>Info</h2>
+            <h2>Info</h2>
 
-                <h:messages />
+            <h:messages />
 
-                Title: #{blogView.blogModel.title} <br />
-                Description: #{blogView.blogModel.description} <br />
-                Author: #{blogView.blogModel.author}
+            Title: #{blogView.blogModel.title} <br />
+            Description: #{blogView.blogModel.description} <br />
+            Author: #{blogView.blogModel.author}
+            <h:panelGroup rendered="#{not empty blogView.blogName.category}">
+                <br />Category: #{blogView.blogName.category}
+            </h:panelGroup>
 
-                <h:panelGroup rendered="#{blogView.blogModifiable}">
-                    <blog:isAllowed fragment="acl://manageCategory" contextData="#{blogView.blogName}">
-                        <h:form>
-                            <p>Click here to edit: <ui:insert name="editlink" /></p>
-                        </h:form>
-                    </blog:isAllowed>
-                </h:panelGroup>                
+            <h:panelGroup rendered="#{blogView.blogModifiable}">
+                <blog:isAllowed fragment="acl://manageCategory" contextData="#{blogView.blogName}">
+                    <h:form>
+                        <p>Click here to edit: <ui:insert name="editlink" /></p>
+                    </h:form>
+                </blog:isAllowed>
+            </h:panelGroup>
 
-                <ui:insert name="viewmain" />
-            </blog:isAllowed>
+            <ui:insert name="viewmain" />
         </ui:define>
     </ui:composition>
 </div>
\ No newline at end of file

Modified: trunk/jbossblog.iws
===================================================================
--- trunk/jbossblog.iws	2006-11-09 16:01:06 UTC (rev 24)
+++ trunk/jbossblog.iws	2006-11-10 21:42:57 UTC (rev 25)
@@ -17,9 +17,27 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" name="Default" comment="">
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/views/common.xhtml" afterPath="$PROJECT_DIR$/blog-core/src/web/views/common.xhtml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogModel.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogModel.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogModel.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogModel.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/web/views/post_mod.xhtml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/WEB-INF/faces-config.xml" afterPath="$PROJECT_DIR$/blog-core/src/web/WEB-INF/faces-config.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/BlogView.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/BlogView.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/web/views/post_edit.xhtml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/views/post_view.xhtml" afterPath="$PROJECT_DIR$/blog-core/src/web/views/post_view.xhtml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/views/blog_mod.xhtml" afterPath="$PROJECT_DIR$/blog-core/src/web/views/blog_mod.xhtml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-mapping.xml" afterPath="$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-mapping.xml" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.hbm.xml" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.hbm.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/views/view.xhtml" afterPath="$PROJECT_DIR$/blog-core/src/web/views/view.xhtml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-permissions.xml" afterPath="$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-permissions.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/AbstractBlogModel.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/AbstractBlogModel.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/PostEdit.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/views/blog_view.xhtml" afterPath="$PROJECT_DIR$/blog-core/src/web/views/blog_view.xhtml" />
     </list>
   </component>
   <component name="ChangeListSynchronizer" />
@@ -144,10 +162,21 @@
   </component>
   <component name="FileEditorManager">
     <leaf>
+      <file leaf-file-name="PostEdit.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/PostEdit.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="122" column="12" selection-start="2875" selection-end="2875" vertical-scroll-proportion="0.4231405">
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
       <file leaf-file-name="BlogView.java" pinned="false" current="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/BlogView.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="207" column="30" selection-start="5975" selection-end="5975" vertical-scroll-proportion="0.5634029">
+            <state line="107" column="45" selection-start="3263" selection-end="3286" vertical-scroll-proportion="0.43966943">
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -155,10 +184,34 @@
           </provider>
         </entry>
       </file>
+      <file leaf-file-name="blog_view.xhtml" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/blog_view.xhtml">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="38" column="43" selection-start="1656" selection-end="1656" vertical-scroll-proportion="0.82901555">
+              <folding />
+            </state>
+          </provider>
+          <provider editor-type-id="HtmlPreview">
+            <state />
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="view.xhtml" pinned="false" current="true" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/view.xhtml">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="17" column="22" selection-start="765" selection-end="765" vertical-scroll-proportion="0.44041452">
+              <folding />
+            </state>
+          </provider>
+          <provider editor-type-id="HtmlPreview">
+            <state />
+          </provider>
+        </entry>
+      </file>
       <file leaf-file-name="post_view.xhtml" pinned="false" current="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/post_view.xhtml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="17" column="40" selection-start="677" selection-end="677" vertical-scroll-proportion="0.41666666">
+            <state line="32" column="44" selection-start="1162" selection-end="1162" vertical-scroll-proportion="0.8080808">
               <folding />
             </state>
           </provider>
@@ -167,28 +220,31 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="HBlogModel.java" pinned="false" current="true" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java">
+      <file leaf-file-name="HibernateBlogStoreService.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="133" column="35" selection-start="3150" selection-end="3150" vertical-scroll-proportion="0.37460816">
+            <state line="221" column="21" selection-start="7539" selection-end="7539" vertical-scroll-proportion="0.22479339">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="HBlogModel.hbm.xml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.hbm.xml">
+      <file leaf-file-name="blog_mod.xhtml" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/blog_mod.xhtml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="30" column="25" selection-start="1123" selection-end="1123" vertical-scroll-proportion="0.7053292">
+            <state line="33" column="39" selection-start="1386" selection-end="1386" vertical-scroll-proportion="0.8549223">
               <folding />
             </state>
           </provider>
+          <provider editor-type-id="HtmlPreview">
+            <state />
+          </provider>
         </entry>
       </file>
-      <file leaf-file-name="blog_view.xhtml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/blog_view.xhtml">
+      <file leaf-file-name="post_mod.xhtml" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/post_mod.xhtml">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
+            <state line="43" column="51" selection-start="1798" selection-end="1798" vertical-scroll-proportion="1.0708117">
               <folding />
             </state>
           </provider>
@@ -197,6 +253,18 @@
           </provider>
         </entry>
       </file>
+      <file leaf-file-name="post_edit.xhtml" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/post_edit.xhtml">
+          <provider selected="true" editor-type-id="text-editor">
+            <state line="10" column="20" selection-start="465" selection-end="465" vertical-scroll-proportion="0.25252524">
+              <folding />
+            </state>
+          </provider>
+          <provider editor-type-id="HtmlPreview">
+            <state />
+          </provider>
+        </entry>
+      </file>
     </leaf>
   </component>
   <component name="FindManager">
@@ -870,7 +938,7 @@
       <showLibraryContents />
       <hideEmptyPackages />
       <abbreviatePackageNames />
-      <showStructure Favorites="false" Scope="false" PackagesPane="false" ProjectPane="false" />
+      <showStructure ProjectPane="false" Scope="false" PackagesPane="false" Favorites="false" />
       <autoscrollToSource />
       <autoscrollFromSource />
       <sortByType />
@@ -891,6 +959,7 @@
   </component>
   <component name="RecentsManager">
     <key name="CopyClassDialog.RECENTS_KEY">
+      <recent name="org.jboss.blog.ui" />
       <recent name="org.jboss.blog.model.impl" />
       <recent name="org.jboss.blog.model" />
       <recent name="org.jboss.blog.service.name" />
@@ -905,25 +974,6 @@
   </component>
   <component name="RestoreUpdateTree" />
   <component name="RunManager">
-    <configuration default="true" type="JUnit" factoryName="JUnit" enabled="false" merge="false">
-      <module name="" />
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="PACKAGE_NAME" />
-      <option name="MAIN_CLASS_NAME" />
-      <option name="METHOD_NAME" />
-      <option name="TEST_OBJECT" value="class" />
-      <option name="VM_PARAMETERS" />
-      <option name="PARAMETERS" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
-      <option name="ADDITIONAL_CLASS_PATH" />
-      <option name="TEST_SEARCH_SCOPE">
-        <value defaultName="wholeProject" />
-      </option>
-      <method>
-        <option name="Make" value="true" />
-      </method>
-    </configuration>
     <configuration default="true" type="Remote" factoryName="Remote">
       <option name="USE_SOCKET_TRANSPORT" value="true" />
       <option name="SERVER_MODE" value="false" />
@@ -953,6 +1003,25 @@
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH" />
     </configuration>
+    <configuration default="true" type="JUnit" factoryName="JUnit" enabled="false" merge="false">
+      <module name="" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="PACKAGE_NAME" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="METHOD_NAME" />
+      <option name="TEST_OBJECT" value="class" />
+      <option name="VM_PARAMETERS" />
+      <option name="PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="ADDITIONAL_CLASS_PATH" />
+      <option name="TEST_SEARCH_SCOPE">
+        <value defaultName="wholeProject" />
+      </option>
+      <method>
+        <option name="Make" value="true" />
+      </method>
+    </configuration>
   </component>
   <component name="ScopeViewComponent">
     <subPane subId="Project">
@@ -1034,7 +1103,7 @@
       <window_info id="CVS" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="13" />
       <window_info id="IDEtalk" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="3" />
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3298969" order="7" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.28130785" order="0" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.26156694" order="0" />
       <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32914287" order="1" />
       <window_info id="Structure" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24367674" order="7" />
       <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.22742857" order="9" />
@@ -1042,7 +1111,7 @@
       <window_info id="Module Dependencies" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="4" />
       <window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="10" />
       <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="5" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.22640346" order="1" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.26280075" order="1" />
       <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3298969" order="11" />
       <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="2" />
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24984577" order="2" />
@@ -1145,26 +1214,30 @@
     <option name="myLastEditedConfigurable" value="Project Default" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="jar://$PROJECT_DIR$/lib/myfaces/myfaces-api.jar!/javax/faces/application/FacesMessage.class">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="20" column="11" selection-start="1017" selection-end="1017" vertical-scroll-proportion="0.33226323">
+        <state line="221" column="21" selection-start="7539" selection-end="7539" vertical-scroll-proportion="0.22479339">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/view.xhtml">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogModel.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="15" column="67" selection-start="704" selection-end="704" vertical-scroll-proportion="0.38860103">
+        <state line="11" column="49" selection-start="270" selection-end="270" vertical-scroll-proportion="0.16935484">
           <folding />
         </state>
       </provider>
-      <provider editor-type-id="HtmlPreview">
-        <state />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="183" column="59" selection-start="4672" selection-end="4672" vertical-scroll-proportion="0.8016529">
+          <folding />
+        </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/blog_edit.xhtml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="8" column="58" selection-start="410" selection-end="410" vertical-scroll-proportion="0.2020202">
+        <state line="10" column="36" selection-start="470" selection-end="470" vertical-scroll-proportion="0.25252524">
           <folding />
         </state>
       </provider>
@@ -1172,30 +1245,42 @@
         <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-permissions.xml">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/blog_mod.xhtml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="31" column="8" selection-start="1258" selection-end="1258" vertical-scroll-proportion="0.76859504">
+        <state line="33" column="39" selection-start="1386" selection-end="1386" vertical-scroll-proportion="0.8549223">
           <folding />
         </state>
       </provider>
+      <provider editor-type-id="HtmlPreview">
+        <state />
+      </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-mapping.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="46" column="28" selection-start="2436" selection-end="2436" vertical-scroll-proportion="0.54545456">
+        <state line="117" column="49" selection-start="4790" selection-end="4790" vertical-scroll-proportion="0.69335604">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/tools/UITools.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-permissions.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="9" column="64" selection-start="217" selection-end="217" vertical-scroll-proportion="0.14106584">
+        <state line="14" column="67" selection-start="689" selection-end="689" vertical-scroll-proportion="0.35775128">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/blog_mod.xhtml">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/PostEdit.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="20" column="39" selection-start="915" selection-end="915" vertical-scroll-proportion="0.5025126">
+        <state line="122" column="12" selection-start="2875" selection-end="2875" vertical-scroll-proportion="0.4231405">
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/post_view.xhtml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="32" column="44" selection-start="1162" selection-end="1162" vertical-scroll-proportion="0.8080808">
           <folding />
         </state>
       </provider>
@@ -1203,9 +1288,9 @@
         <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/blog_view.xhtml">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/post_edit.xhtml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
+        <state line="10" column="20" selection-start="465" selection-end="465" vertical-scroll-proportion="0.25252524">
           <folding />
         </state>
       </provider>
@@ -1213,18 +1298,28 @@
         <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/BlogEdit.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/post_mod.xhtml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="12" column="31" selection-start="406" selection-end="406" vertical-scroll-proportion="0.28213167">
+        <state line="43" column="51" selection-start="1798" selection-end="1798" vertical-scroll-proportion="1.0708117">
+          <folding />
+        </state>
+      </provider>
+      <provider editor-type-id="HtmlPreview">
+        <state />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/BlogView.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="107" column="45" selection-start="3263" selection-end="3286" vertical-scroll-proportion="0.43966943">
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/post_view.xhtml">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/blog_view.xhtml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="17" column="40" selection-start="677" selection-end="677" vertical-scroll-proportion="0.41666666">
+        <state line="38" column="43" selection-start="1656" selection-end="1656" vertical-scroll-proportion="0.82901555">
           <folding />
         </state>
       </provider>
@@ -1234,41 +1329,21 @@
     </entry>
     <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogModel.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="22" column="16" selection-start="570" selection-end="570" vertical-scroll-proportion="0.33225808">
+        <state line="11" column="17" selection-start="286" selection-end="286" vertical-scroll-proportion="-0.016129032">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.hbm.xml">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/view.xhtml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="30" column="25" selection-start="1123" selection-end="1123" vertical-scroll-proportion="0.7053292">
+        <state line="17" column="22" selection-start="765" selection-end="765" vertical-scroll-proportion="0.44041452">
           <folding />
         </state>
       </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogModel.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="17" column="16" selection-start="508" selection-end="508" vertical-scroll-proportion="0.31451613">
-          <folding />
-        </state>
+      <provider editor-type-id="HtmlPreview">
+        <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/BlogView.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="207" column="30" selection-start="5975" selection-end="5975" vertical-scroll-proportion="0.5634029">
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="133" column="35" selection-start="3150" selection-end="3150" vertical-scroll-proportion="0.37460816">
-          <folding />
-        </state>
-      </provider>
-    </entry>
   </component>
 </project>
 




More information about the jboss-cvs-commits mailing list