[jboss-cvs] JBossBlog SVN: r26 - in trunk: . blog-core/src/etc/META-INF blog-core/src/java/org/jboss/blog/model blog-core/src/java/org/jboss/blog/service/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/tools 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
Sat Nov 11 09:26:04 EST 2006


Author: adamw
Date: 2006-11-11 09:25:51 -0500 (Sat, 11 Nov 2006)
New Revision: 26

Added:
   trunk/blog-core/src/java/org/jboss/blog/ui/SelectableBlogName.java
   trunk/blog-core/src/web/views/post_new.xhtml
Modified:
   trunk/blog-core/src/etc/META-INF/acl-mapping.xml
   trunk/blog-core/src/etc/META-INF/jboss-service.xml
   trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java
   trunk/blog-core/src/java/org/jboss/blog/model/BlogPost.java
   trunk/blog-core/src/java/org/jboss/blog/service/model/RomeParsingBlogModelService.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/HBlogModelPost.hbm.xml
   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/service/store/model/ModifiableBlogPost.java
   trunk/blog-core/src/java/org/jboss/blog/tools/UITools.java
   trunk/blog-core/src/java/org/jboss/blog/ui/BlogEdit.java
   trunk/blog-core/src/java/org/jboss/blog/ui/BlogView.java
   trunk/blog-core/src/java/org/jboss/blog/ui/PostEdit.java
   trunk/blog-core/src/web/WEB-INF/faces-config.xml
   trunk/blog-core/src/web/views/blog_view.xhtml
   trunk/blog-core/src/web/views/post_edit.xhtml
   trunk/blog-core/src/web/views/post_mod.xhtml
   trunk/blog-core/src/web/views/post_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-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/etc/META-INF/acl-mapping.xml	2006-11-11 14:25:51 UTC (rev 26)
@@ -118,6 +118,10 @@
 				<class>org.jboss.blog.ui.PostEdit</class>
 				<method>save</method>
 			</resource>
+			<resource type="jsfAction" criteriaId="managePost://action">
+				<class>org.jboss.blog.ui.PostEdit</class>
+				<method>saveNew</method>
+			</resource>
             <implies>manageComment</implies>
         </function>
 	</module>

Modified: trunk/blog-core/src/etc/META-INF/jboss-service.xml
===================================================================
--- trunk/blog-core/src/etc/META-INF/jboss-service.xml	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/etc/META-INF/jboss-service.xml	2006-11-11 14:25:51 UTC (rev 26)
@@ -116,7 +116,7 @@
         <attribute name="QueryCacheEnabled">false</attribute>
 
         <!-- Logging -->
-        <attribute name="ShowSqlEnabled">true</attribute>
+        <attribute name="ShowSqlEnabled">false</attribute>
 
         <!-- Mapping files -->
         <attribute name="MapResources">

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-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -19,7 +19,7 @@
     /**
      * 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.
+     * @return Sorted, immutable list of {@link BlogPost} - posts for this blog model.
      */
     public List getPosts();
 
@@ -37,7 +37,7 @@
 
     /**
      *
-     * @return Set of {@link java.lang.String} - name of categories to
+     * @return Immutable set of {@link java.lang.String} - name of categories to
      * which this model belongs.
      */
     public Set getCategories();

Modified: trunk/blog-core/src/java/org/jboss/blog/model/BlogPost.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/BlogPost.java	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/model/BlogPost.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -27,7 +27,7 @@
 
     /**
      *
-     * @return Set of {@link java.lang.String} - name of categories to
+     * @return Immutable set of {@link java.lang.String} - name of categories to
      * which this post belongs.
      */
     public Set getCategories();

Modified: trunk/blog-core/src/java/org/jboss/blog/service/model/RomeParsingBlogModelService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/model/RomeParsingBlogModelService.java	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/service/model/RomeParsingBlogModelService.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -85,7 +85,8 @@
                     BlogTools.isEmpty(author) ? defaultAuthor : author,
                     post.getTitle(), post.getDescription().getValue(),
                     post.getPublishedDate(), post.getLink(),
-                    post.getUri(), getStringCategories(post.getCategories()),
+                    post.getUri(),
+                    Collections.unmodifiableSet(getStringCategories(post.getCategories())),
                     commentsRss));
         }
 

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-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -3,8 +3,6 @@
 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;
 
@@ -79,38 +77,6 @@
     public void deleteBlogModel(ModifiableBlogModel model)
             throws IllegalArgumentException;
 
-    /**
-     * Adds the given post to the given blog model. This method should be used
-     * instead of modifying the {@link ModifiableBlogModel#getPosts()}
-     * list.
-     * @param model Model to which the post should be added.
-     * @param post Post to add.
-     * @throws IllegalArgumentException If either model or post is null, or
-     * they haven't been obtained from this store service.
-     */
-    public void addPost(ModifiableBlogModel model, ModifiableBlogPost post)
-            throws IllegalArgumentException;
-
-    /**
-     * Removes the given post from the given blog model. This method should be used
-     * instead of modifying the {@link ModifiableBlogModel#getPosts()}
-     * list.
-     * @param model Model from which the post should be removed.
-     * @param post Post to remove.
-     * @throws IllegalArgumentException If either model or post is null, or
-     * they haven't been obtained from this store service.
-     */
-    public void removePost(ModifiableBlogModel model, ModifiableBlogPost post)
-            throws IllegalArgumentException;
-
-    /**
-     * Deletes the given post from all blog models.
-     * @param post Post to delete.
-     * @throws IllegalArgumentException If either model or post is null, or
-     * they haven't been obtained from this store service.
-     */
-    public void deletePost(ModifiableBlogPost post);
-
     // Factory methods
 
     /**
@@ -119,9 +85,11 @@
      * @param blogName Name of the new blog model.
      * @return A new blog model, which can be later saved.
      * @throws IllegalArgumentException If blog name is null.
+     * @throws BlogModelAlreadyExistsException If a model with the given
+     * blog name already exists.
      */
     public ModifiableBlogModel newBlogModel(BlogName blogName)
-            throws IllegalArgumentException;
+            throws IllegalArgumentException, BlogModelAlreadyExistsException;
 
     /**
      * Creates a new blog post, with an empty set of categories. To later

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-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -2,10 +2,12 @@
 
 import org.jboss.blog.service.store.model.ModifiableBlogModel;
 import org.jboss.blog.service.store.model.ModifiableBlogPost;
+import org.jboss.blog.service.store.model.BlogModelAlreadyExistsException;
 import org.jboss.blog.model.AbstractBlogModel;
 import org.jboss.blog.model.BlogPost;
 import org.jboss.blog.model.BlogPostDoesNotExistException;
 import org.jboss.blog.BlogName;
+import org.jboss.blog.tools.BlogTools;
 
 import java.util.*;
 
@@ -46,7 +48,11 @@
 
     public void setBlogName(BlogName blogName) {
         this.blogName = blogName;
-        categories = Collections.singleton(blogName.getCategory());
+        if (blogName.getCategory() == null) {
+            categories = Collections.emptySet();
+        } else {
+            categories = Collections.singleton(blogName.getCategory());
+        }
     }
 
     public String getAuthor() {
@@ -89,6 +95,23 @@
         this.created = created;
     }
 
+    public String getCategory() {
+        return getBlogName().getCategory();
+    }
+
+    public void setCategory(String category)
+            throws IllegalArgumentException, BlogModelAlreadyExistsException {
+        if (BlogTools.isEmpty(category)) {
+            throw new IllegalArgumentException("Category cannot be null or empty.");
+        }
+
+        /* Trying to create a new model with a given category name, to check
+         * if it doesn't already exist. */
+        getStoreService().newBlogModel(new BlogName(getBlogName().getId(), category));
+
+        getBlogName().setCategory(category);
+    }
+
     //
 
     public List getModelPosts() {
@@ -99,7 +122,6 @@
         this.modelPosts = posts;
     }
 
-
     public HibernateBlogStoreService getStoreService() {
         return storeService;
     }
@@ -110,22 +132,6 @@
 
     //
 
-    public void setCategories(Set categories) {
-        if ((categories != null) && (categories.size() > 1)) {
-            throw new IllegalArgumentException("Only one categorty per model is supported");
-        }
-
-        if ((categories == null) || (categories.size() == 0)) {
-            getBlogName().setCategory(null);
-            this.categories = Collections.singleton(null);
-            return;
-        }
-
-        String cat = (String) categories.iterator().next();
-        getBlogName().setCategory(cat);
-        this.categories = Collections.singleton(cat);
-    }
-
     public Set getCategories() {
         return categories;
     }
@@ -143,32 +149,15 @@
             Collections.sort(posts);
         }
 
-        return posts;
+        return Collections.unmodifiableList(posts);
     }
 
-    public void setPosts(List posts) {
-        // Craeting a list of HBlogModelPost instances from the given list of posts.
-        List l = new ArrayList();
-        for (Iterator iter = posts.iterator(); iter.hasNext();) {
-            Object post = iter.next();
-            if (!(post instanceof HBlogPost)) {
-                throw new IllegalArgumentException("Trying to add posts to the store service " +
-                        "which were not obtained from it.");
-            }
-
-            l.add(new HBlogModelPost(this, (HBlogPost) post));
-        }
-
-        setModelPosts(l);
-    }
-
     //
 
     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);
@@ -183,4 +172,18 @@
             throws BlogPostDoesNotExistException {
         return getModifiableBlogPostByTitleAsId(titleAsId);
     }
+
+    public void addPost(ModifiableBlogPost post) throws IllegalArgumentException {
+        HibernateBlogStoreService storeService = getStoreService();
+        HBlogPost hpost = storeService.castAndAssertBlogPost(post);
+
+        storeService.addPost(this, hpost);
+    }
+
+    public void removePost(ModifiableBlogPost post) throws IllegalArgumentException {
+        HibernateBlogStoreService storeService = getStoreService();
+        HBlogPost hpost = storeService.castAndAssertBlogPost(post);
+
+        storeService.removePost(this, hpost);
+    }
 }
\ No newline at end of file

Modified: trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.hbm.xml
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.hbm.xml	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.hbm.xml	2006-11-11 14:25:51 UTC (rev 26)
@@ -12,7 +12,7 @@
         
         <natural-id>
             <many-to-one name="model" class="HBlogModel" column="BLOG_ID" />
-            <many-to-one name="post" class="HBlogPost" column="POST_ID" />
+            <many-to-one name="post" class="HBlogPost" column="POST_ID" cascade="persist,merge,save-update" />
         </natural-id>
     </class>
 </hibernate-mapping>
\ 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-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml	2006-11-11 14:25:51 UTC (rev 26)
@@ -27,9 +27,9 @@
 
         <property name="description" column="DESCRIPTION" type="text" />
 
-        <set name="categories" table="BLOG_POST_CATEGORIES">
+        <bag name="modelPosts" inverse="true">
             <key column="POST_ID" not-null="true" />
-            <element column="POST_CATEGORY" type="string" />
-        </set>
+            <one-to-many class="HBlogModelPost" />
+        </bag>
     </class>
 </hibernate-mapping>
\ No newline at end of file

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-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -4,8 +4,7 @@
 import org.jboss.blog.model.AbstractBlogPost;
 import org.jboss.blog.tools.BlogTools;
 
-import java.util.Date;
-import java.util.Set;
+import java.util.*;
 
 /**
  * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
@@ -20,7 +19,8 @@
     private String commentLink;
     private String titleAsId;
     private Date created;
-    
+
+    private List modelPosts;
     private Set categories;
 
     public HBlogPost() {
@@ -104,11 +104,22 @@
         this.created = created;
     }
 
-    public Set getCategories() {
-        return categories;
+    public List getModelPosts() {
+        return modelPosts;
     }
 
-    public void setCategories(Set categories) {
-        this.categories = categories;
+    public void setModelPosts(List modelPosts) {
+        this.modelPosts = modelPosts;
     }
+
+    public Set getCategories() {
+        if (categories == null) {
+            categories = new HashSet();
+            for (Iterator iter = getModelPosts().iterator(); iter.hasNext();) {
+                categories.add(((HBlogModelPost) iter.next()).getModel().getCategory());
+            }
+        }
+
+        return Collections.unmodifiableSet(categories);
+    }
 }

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-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -13,7 +13,6 @@
 import javax.naming.InitialContext;
 import java.util.List;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.Iterator;
 
 /**
@@ -46,7 +45,7 @@
         BlogTools.assertNotNull(blogName, "Blog name cannot be null.");
     }
 
-    private HBlogModel castAndAssertBlogModel(ModifiableBlogModel model) {
+    HBlogModel castAndAssertBlogModel(ModifiableBlogModel model) {
         BlogTools.assertNotNull(model, "Blog model cannot be null.");
         if (!(model instanceof HBlogModel)) {
             throw new IllegalArgumentException("Model must be obtained from this store service.");
@@ -55,7 +54,7 @@
         return (HBlogModel) model;
     }
 
-    private HBlogPost castAndAssertBlogPost(ModifiableBlogPost post) {
+    HBlogPost castAndAssertBlogPost(ModifiableBlogPost post) {
         BlogTools.assertNotNull(post, "Blog post cannot be null.");
         if (!(post instanceof HBlogPost)) {
             throw new IllegalArgumentException("Post must be obtained from this store service.");
@@ -87,14 +86,14 @@
         assertBlogNameNotNull(blogName);
         return sf.getCurrentSession().createQuery(
                 "select model.blogName from HBlogModel as model " +
-                "where model.blogName.id = :id")
+                        "where model.blogName.id = :id")
                 .setParameter("id", blogName.getId()).list();
     }
 
     private boolean blogExists(BlogName blogName) {
         Long count = (Long) sf.getCurrentSession().createQuery(
                 "select count(*) from HBlogModel as model where " +
-                "model.blogName = :name")
+                        "model.blogName = :name")
                 .setParameter("name", blogName)
                 .uniqueResult();
 
@@ -129,18 +128,26 @@
         hbm.setStoreService(this);
 
         return hbm;
-    }    
+    }
 
     /**
      * @jmx.managed-operation
      * @jmx.managed-parameter type="org.jboss.blog.BlogName"
      */
-    public ModifiableBlogModel newBlogModel(BlogName blogName) {
+    public ModifiableBlogModel newBlogModel(BlogName blogName) throws BlogModelAlreadyExistsException {
         assertBlogNameNotNull(blogName);
 
-        HBlogModel hbm = new HBlogModel();
+        HBlogModel hbm = (HBlogModel) sf.getCurrentSession()
+                .createQuery("from HBlogModel as model where model.blogName = :name")
+                .setParameter("name", blogName).uniqueResult();
+
+        if (hbm != null) {
+            // Blog model already exists.
+            throw new BlogModelAlreadyExistsException(blogName.toString());
+        }
+
+        hbm = new HBlogModel();
         hbm.setBlogName(blogName);
-        hbm.setPosts(new ArrayList());
         hbm.setStoreService(this);
 
         return hbm;
@@ -150,10 +157,10 @@
      * @jmx.managed-operation
      */
     public ModifiableBlogPost newBlogPost() {
-        ModifiableBlogPost mbp = new HBlogPost();
-        mbp.setCategories(new HashSet());
+        HBlogPost post = new HBlogPost();
+        post.setModelPosts(new ArrayList());
 
-        return mbp;
+        return post;
     }
 
     /**
@@ -182,52 +189,44 @@
         sf.getCurrentSession().delete(hmodel);
     }
 
-    /**
-     * @jmx.managed-operation
-     * @jmx.managed-parameter type="org.jboss.blog.service.store.model.ModifiableBlogModel"
-     * @jmx.managed-parameter type="org.jboss.blog.service.store.model.ModifiableBlogPost"
-     */
-    public void addPost(ModifiableBlogModel model, ModifiableBlogPost post) {
+    //
+
+    void addPost(HBlogModel model, HBlogPost post) {
         HBlogModel hmodel = castAndAssertBlogModel(model);
         HBlogPost hpost = castAndAssertBlogPost(post);
 
         // TODO Thread-unsafe checking
-        if (((Integer) sf.getCurrentSession().createQuery("select count(*) from " +
-            "HBlogModelPost as bmp where bmp.model = :model and bmp.post = :post")
-            .setEntity("model", hmodel).setEntity("post", hpost).uniqueResult()).intValue() == 0) {
-            hmodel.getPosts().add(hpost);
-            sf.getCurrentSession().save(new HBlogModelPost(hmodel, hpost));
+        if ((hpost.getId() == null) ||
+            ((Long) sf.getCurrentSession().createQuery("select count(*) from " +
+                    "HBlogModelPost as bmp where bmp.model = :model and bmp.post = :post")
+                    .setEntity("model", hmodel).setEntity("post", hpost).uniqueResult()).longValue() == 0) {
+
+            HBlogModelPost hbmp = new HBlogModelPost(hmodel, hpost);
+            hmodel.getModelPosts().add(hbmp);
+            hpost.getModelPosts().add(hbmp);
+            sf.getCurrentSession().save(hbmp);
         }
     }
 
-    /**
-     * @jmx.managed-operation
-     * @jmx.managed-parameter type="org.jboss.blog.service.store.model.ModifiableBlogModel"
-     * @jmx.managed-parameter type="org.jboss.blog.service.store.model.ModifiableBlogPost"
-     */
-    public void removePost(ModifiableBlogModel model, ModifiableBlogPost post) {
+    void removePost(HBlogModel model, HBlogPost post) {
         HBlogModel hmodel = castAndAssertBlogModel(model);
         HBlogPost hpost = castAndAssertBlogPost(post);
 
-        hmodel.getPosts().remove(hpost);
-        sf.getCurrentSession().createQuery("delete from HBlogModelPost as bmp " +
-                "where bmp.model = :model and bmp.post = :post")
-                .setEntity("model", hmodel).setEntity("post", hpost).executeUpdate();
-    }
+        HBlogModelPost hbmp = (HBlogModelPost) sf.getCurrentSession().createQuery(
+                "from HBlogModelPost as bmp where bmp.model = :model " +
+                "and bmp.post = :post").setEntity("model", hmodel)
+                .setEntity("post", hpost).uniqueResult();
 
-    /**
-     * @jmx.managed-operation
-     * @jmx.managed-parameter type="org.jboss.blog.service.store.model.ModifiableBlogPost"
-     */
-    public void deletePost(ModifiableBlogPost post) {
-        HBlogPost hpost = castAndAssertBlogPost(post);
+        if (hbmp == null) {
+            // Nothing to delete.
+            return;
+        }
 
-        sf.getCurrentSession().createQuery("delete from HBlogModelPost as bmp " +
-                "where bmp.post = :post").setEntity("post", hpost).executeUpdate();
+        hmodel.getModelPosts().remove(hbmp);
+        hpost.getModelPosts().remove(hbmp);
+        sf.getCurrentSession().delete(hbmp);
     }
 
-    //
-
     /**
      * Gets posts for the given model which, when sorted, are between the given
      * indexes in the list of all posts.
@@ -240,7 +239,7 @@
     List getPosts(HBlogModel model, int from, int to) {
         return sf.getCurrentSession().createQuery(
                 "select bmp.post from HBlogModelPost bmp where bmp.model = :model " +
-                "order by bmp.post.created desc")
+                        "order by bmp.post.created desc")
                 .setEntity("model", model).setFirstResult(from).setMaxResults(to-from).list();
     }
 
@@ -254,7 +253,7 @@
     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)
+                        "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-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogModel.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -16,8 +16,54 @@
     public void setDescription(String description);
     public void setLink(String link);
     public void setCreated(Date created);
-    public void setPosts(List posts);
-    public void setCategories(Set categories);
 
-    public ModifiableBlogPost getModifiableBlogPostByTitleAsId(String titleAsId) throws BlogPostDoesNotExistException;
+    /**
+     *
+     * @return Set containg {@link ModifiableBlogModel#getCategory()} - name of
+     * the category to which this model belongs.
+     */
+    public Set getCategories();
+
+    /**
+     *
+     * @return Name of the category, to which this model belongs. An empty string
+     * denotes the root category.
+     */
+    public String getCategory();
+
+    /**
+     * Sets the name of the category, to which this model belongs. The name of
+     * the root category cannot be changed.
+     * @param category New name of the category. Must not be empty or null.
+     * @throws IllegalArgumentException If category name is null or empty.
+     * @throws BlogModelAlreadyExistsException If a model with this category name
+     * already exists.
+     */
+    public void setCategory(String category)
+            throws IllegalArgumentException, BlogModelAlreadyExistsException;
+
+    public ModifiableBlogPost getModifiableBlogPostByTitleAsId(String titleAsId)
+            throws BlogPostDoesNotExistException;
+
+    /**
+     * Adds the given post to this blog model. This method should be used
+     * instead of modifying the {@link ModifiableBlogModel#getPosts()}
+     * list.
+     * @param post Post to add.
+     * @throws IllegalArgumentException If post is null, or
+     * it hasn't been obtained in a proper way.
+     */
+    public void addPost(ModifiableBlogPost post)
+            throws IllegalArgumentException;
+
+    /**
+     * Removes the given post from this blog model. This method should be used
+     * instead of modifying the {@link ModifiableBlogModel#getPosts()}
+     * list.
+     * @param post Post to remove.
+     * @throws IllegalArgumentException If either post is null, or
+     * it hasn't been obtained in a proper way.
+     */
+    public void removePost(ModifiableBlogPost post)
+            throws IllegalArgumentException;
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogPost.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogPost.java	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogPost.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -16,5 +16,4 @@
     public void setLink(String link);
     public void setGuid(String guid);
     public void setCommentLink(String commentLink);
-    public void setCategories(Set categories);
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/tools/UITools.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/tools/UITools.java	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/tools/UITools.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -9,6 +9,12 @@
  * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
  */
 public class UITools {
+    public static final String BLOG_VIEW    = "blog_view";
+    public static final String POST_VIEW    = "post_view";
+    public static final String BLOG_EDIT    = "blog_edit";
+    public static final String POST_EDIT    = "post_edit";
+    public static final String POST_NEW     = "post_new";
+
     public static void addInfoMessage(String message) {
         FacesContext.getCurrentInstance().addMessage(null,
                 new FacesMessage(FacesMessage.SEVERITY_INFO, message, ""));

Modified: trunk/blog-core/src/java/org/jboss/blog/ui/BlogEdit.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/ui/BlogEdit.java	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/ui/BlogEdit.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -99,11 +99,6 @@
 
     // Actions
 
-    private String getReturnTo() {
-        String viewName = state.getReturnTo();
-        return viewName == null ? "blog_view" : viewName;
-    }
-
     public String save() {
         try {
             ModifiableBlogModel mbm = BlogTools.getBlogService().getStoreService().getBlogModel(
@@ -132,10 +127,10 @@
             UITools.addMessageBlogDoesntExist(blogView.getBlogName());
         }
 
-        return getReturnTo();
+        return blogView.getReturnTo();
     }
 
     public String back() {
-        return getReturnTo();
+        return blogView.getReturnTo();
     }
 }

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-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/ui/BlogView.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -7,18 +7,12 @@
 import org.jboss.blog.model.impl.EmptyBlogPost;
 import org.jboss.blog.model.impl.EmptyBlogModel;
 import org.jboss.blog.BlogName;
-import org.jboss.blog.service.store.BlogStoreService;
-import org.jboss.blog.service.store.model.ModifiableBlogModel;
-import org.jboss.blog.service.store.model.BlogModelAlreadyExistsException;
 import org.jboss.blog.tools.BlogTools;
 import org.jboss.blog.tools.UITools;
 
 import javax.faces.context.FacesContext;
 import javax.faces.component.UIData;
-import javax.faces.event.ActionEvent;
 import java.util.List;
-import java.util.Iterator;
-import java.util.Date;
 
 /**
  * A request-scoped bean allowing to access current view setup - what and how
@@ -59,7 +53,7 @@
     private Boolean viewAllPosts;
     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;
@@ -139,7 +133,6 @@
 
         return postsExpandable;
     }
-
     public Boolean getBlogModifiable() {
         if (blogModifiable == null) {
             blogModifiable = Boolean.valueOf(BlogTools.getBlogService().getStoreService().
@@ -251,82 +244,77 @@
     }
 
     public String postView() {
+        postSelect();
+
         if (getViewPostsOnSeparatePage().booleanValue()) {
-            return "post_view";
+            return UITools.POST_VIEW;
         } else {
             return null;
         }
     }
 
-    // Action listeners
+    public String blogView() {
+        postClear();
 
-    public void postSelect(ActionEvent e) {
-        BlogPost selected = (BlogPost) postsData.getRowData();
-        setSelectedPostTitleAsId(selected.getTitleAsId());
+        return UITools.BLOG_VIEW;
     }
 
-    public void backFromPostView(ActionEvent e) {
-        setSelectedPostTitleAsId(null);
+    public String postEditFromBlogView() {
+        postSelect();
+        exitFromBlogView();
+        
+        return UITools.POST_EDIT;
     }
 
-    public void exitFromBlogView(ActionEvent e) {
-        getState().setReturnTo("blog_view");
+    public String postEditFromPostView() {
+        exitFromPostView();
+        
+        return UITools.POST_EDIT;
     }
 
-    public void exitFromPostView(ActionEvent e) {
-        getState().setReturnTo("post_view");
-    }
+    public String postNew() {
 
-    public void exitFromBlogViewAndPostSelect(ActionEvent e) {
-        exitFromBlogView(e);
-        postSelect(e);
+        return UITools.POST_NEW;
     }
 
-    //
+    public String blogEditFromBlogView() {
+        exitFromBlogView();
 
-    public String testAdd() {
-        int number = (int) (Math.random() * 10);
+        return UITools.BLOG_EDIT;
+    }
 
-        System.out.println("Adding " + number + ".");
+    public String blogEditFromPostView() {
+        exitFromPostView();
 
-        try {
-            BlogStoreService bss = BlogTools.getBlogService().getStoreService();
-            ModifiableBlogModel mbm = bss.newBlogModel(
-                    new BlogName("id0", "cat" + number));
+        return UITools.BLOG_EDIT;
+    }
 
-            mbm.setAuthor("author" + number);
-            mbm.setCreated(new Date());
-            mbm.setTitle("title" + number);
+    // Helper methods
 
-            try {
-                bss.saveNewBlogModel(mbm);
-            } catch (BlogModelAlreadyExistsException e) {
-                System.out.println("Not added " + number + ".");
-                return null;
-            }
+    private void postSelect() {
+        BlogPost selected = (BlogPost) postsData.getRowData();
+        setSelectedPostTitleAsId(selected.getTitleAsId());
+    }
 
-            System.out.println("Added " + number + ".");
+    private void postClear() {
+        setSelectedPostTitleAsId(null);
+    }
 
-            return null;
-        } catch (RuntimeException e) {
-            e.printStackTrace();
-            throw e;
-        }
+    private void exitFromBlogView() {
+        getState().setReturnTo(UITools.BLOG_VIEW);
     }
 
-    public String testList() {
-        try {
-            List l = BlogTools.getBlogService().getStoreService().getAllBlogs();
+    private void exitFromPostView() {
+        getState().setReturnTo(UITools.POST_VIEW);
+    }
 
-            for (Iterator iter = l.iterator(); iter.hasNext();) {
-                System.out.print(iter.next());
-            }
-            System.out.println("---");
-        } catch (RuntimeException e) {
-            e.printStackTrace();
-            throw e;
+    String getReturnTo() {
+        String viewName = state.getReturnTo();
+        if ((viewName == null) || (UITools.BLOG_VIEW.equals(viewName))) {
+            viewName = UITools.BLOG_VIEW;
+            postClear();
         }
 
-        return null;
+        return viewName;
     }
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/ui/PostEdit.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/ui/PostEdit.java	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/ui/PostEdit.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -7,7 +7,10 @@
 import org.jboss.blog.tools.UITools;
 import org.jboss.blog.service.store.model.ModifiableBlogModel;
 import org.jboss.blog.service.store.model.ModifiableBlogPost;
+import org.jboss.blog.BlogName;
 
+import java.util.*;
+
 /**
  * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
  */
@@ -22,7 +25,10 @@
     private String description;
     private String link;
     private String guid;
+    private String commentLink;
 
+    private List blogs;
+
     public PostEdit() {
         initDone = false;
     }
@@ -68,6 +74,15 @@
         return guid;
     }
 
+    public String getCommentLink() {
+        if (!initDone) { init(); }
+        return commentLink;
+    }
+
+    public void setCommentLink(String commentLink) {
+        this.commentLink = commentLink;
+    }
+
     public void setGuid(String guid) {
         this.guid = guid;
     }
@@ -88,51 +103,174 @@
         this.blogView = blogView;
     }
 
+    public List getBlogs() {
+        if (blogs == null) {
+            List blogNames = BlogTools.getBlogService().getStoreService().getAllCategories(
+                    blogView.getBlogName());
+            blogs = new ArrayList();
+
+            // Constructing a set of category names to which the post currently belongs.
+            Set currentCategories;
+            if (blogView.getSelectedPostTitleAsId() == null) {
+                currentCategories = new HashSet();
+                currentCategories.add(blogView.getBlogName().getCategory());
+            } else {
+                currentCategories = blogView.getSelectedPost().getCategories();
+            }
+
+            for (Iterator iter=blogNames.iterator(); iter.hasNext();) {
+                blogs.add(new SelectableBlogName((BlogName) iter.next(), currentCategories));
+            }
+        }
+
+        return blogs;
+    }
+
     //
 
     private void init() {
-        BlogPost post = blogView.getSelectedPost();
+        if (blogView.getSelectedPostTitleAsId() != null) {
+            BlogPost post = blogView.getSelectedPost();
 
-        author = post.getAuthor();
-        title = post.getTitle();
-        description = post.getDescription();
-        link = post.getLink();
-        guid = post.getGuid(); 
+            author = post.getAuthor();
+            title = post.getTitle();
+            description = post.getDescription();
+            link = post.getLink();
+            guid = post.getGuid();
+            commentLink = post.getCommentLink();
+        }
 
         initDone = true;
     }
 
     // Actions
 
-    private String getReturnTo() {
-        String viewName = state.getReturnTo();
-        return viewName == null ? "blog_view" : viewName;
+    private Set getCurrentCategories() {
+        Set currentCategories = new HashSet();
+        if (blogView.getSelectedPostTitleAsId() == null) {
+            currentCategories.add(blogView.getBlogName());
+        } else {
+            String id = blogView.getBlogName().getId();
+            for (Iterator iter = blogView.getSelectedPost().getCategories().iterator();
+                 iter.hasNext();) {
+                currentCategories.add(new BlogName(id, (String) iter.next()));
+            }
+        }
+
+        return currentCategories;
     }
 
+    private Set getSelectedCategories() {
+        List blogs = getBlogs();
+        Set selected = new HashSet();
+        for (Iterator iter = blogs.iterator(); iter.hasNext();) {
+            SelectableBlogName sbn = (SelectableBlogName) iter.next();
+            if (sbn.isSelected()) {
+                selected.add(sbn.getBlogName());
+            }
+        }
+
+        return selected;
+    }
+
+    public String saveNew() {
+        Set selectedCategories = getSelectedCategories();
+        if (selectedCategories.size() == 0) {
+            UITools.addErrorMessage("You must select at least one category.");
+            return null;
+        }
+
+        //try {
+            ModifiableBlogPost post;
+
+            post = BlogTools.getBlogService().getStoreService().newBlogPost();
+
+            post.setAuthor(author);
+
+            post.setTitle(title);
+            post.setLink(link);
+            post.setDescription(description);
+            post.setGuid(guid);
+            post.setCreated(new Date());
+            post.setCommentLink(commentLink);
+
+            for (Iterator iter = selectedCategories.iterator(); iter.hasNext();) {
+                try {
+                ModifiableBlogModel blog = BlogTools.getBlogService().getStoreService().getBlogModel(
+                        (BlogName) iter.next());
+                blog.addPost(post);
+                } catch (Throwable t) {
+                    t.printStackTrace();
+                    throw new RuntimeException(t);
+                }
+            }
+
+            UITools.addInfoMessage("New post saved.");
+        //} catch (BlogModelDoesNotExistException e) {
+        //    UITools.addMessageBlogDoesntExist(blogView.getBlogName());
+        //}
+
+        return UITools.BLOG_VIEW;
+    }
+
     public String save() {
+        // Calculating the added & removed categories sets.
+        Set selectedCategories = getSelectedCategories();
+        if (selectedCategories.size() == 0) {
+            UITools.addErrorMessage("DELETE: not yet supported!");
+            return null;
+        }
+
+        Set currentCategories = getCurrentCategories();
+        
+        Set addedCategories = new HashSet(selectedCategories);
+        addedCategories.removeAll(currentCategories);
+
+        Set removedCategories = new HashSet(currentCategories);
+        removedCategories.removeAll(selectedCategories);
+
         try {
-            ModifiableBlogModel mbm = BlogTools.getBlogService().getStoreService().getBlogModel(
+            ModifiableBlogModel model = BlogTools.getBlogService().getStoreService().getBlogModel(
                     blogView.getBlogName());
-            ModifiableBlogPost mbp = mbm.getModifiableBlogPostByTitleAsId(
+            ModifiableBlogPost post = model.getModifiableBlogPostByTitleAsId(
                     blogView.getSelectedPostTitleAsId());
 
             boolean changed = false;
 
-            if (!BlogTools.objectsEqual(author, mbp.getAuthor())) {
-                changed = true; mbp.setAuthor(author); }
+            // Changing post properties.
+            if (!BlogTools.objectsEqual(author, post.getAuthor())) {
+                changed = true; post.setAuthor(author); }
 
-            if (!BlogTools.objectsEqual(title, mbp.getTitle())) {
-                changed = true; mbp.setTitle(title); }
+            if (!BlogTools.objectsEqual(title, post.getTitle())) {
+                changed = true; post.setTitle(title); }
 
-            if (!BlogTools.objectsEqual(link, mbp.getLink())) {
-                changed = true; mbp.setLink(link); }
+            if (!BlogTools.objectsEqual(link, post.getLink())) {
+                changed = true; post.setLink(link); }
 
-            if (!BlogTools.objectsEqual(description, mbp.getDescription())) {
-                changed = true; mbp.setDescription(description); }
+            if (!BlogTools.objectsEqual(description, post.getDescription())) {
+                changed = true; post.setDescription(description); }
 
-            if (!BlogTools.objectsEqual(guid, mbp.getGuid())) {
-                changed = true; mbp.setGuid(guid); }
+            if (!BlogTools.objectsEqual(guid, post.getGuid())) {
+                changed = true; post.setGuid(guid); }
 
+            if (!BlogTools.objectsEqual(commentLink, post.getCommentLink())) {
+                changed = true; post.setCommentLink(commentLink); }
+
+            // Adding & removing posts from categories.
+            for (Iterator iter = addedCategories.iterator(); iter.hasNext();) {
+                changed = true;
+                model = BlogTools.getBlogService().getStoreService().getBlogModel(
+                        (BlogName) iter.next());
+                model.addPost(post);
+            }
+
+            for (Iterator iter = removedCategories.iterator(); iter.hasNext();) {
+                changed = true;
+                model = BlogTools.getBlogService().getStoreService().getBlogModel(
+                        (BlogName) iter.next());
+                model.removePost(post);
+            }
+
             if (changed) {
                 UITools.addInfoMessage("Post properties saved.");
             } else {
@@ -144,10 +282,10 @@
             UITools.addMessagePostDoesntExist(blogView.getSelectedPostTitleAsId());
         }
 
-        return getReturnTo();
+        return blogView.getReturnTo();
     }
 
     public String back() {
-        return getReturnTo();
+        return blogView.getReturnTo();
     }
-}
+}
\ No newline at end of file

Added: trunk/blog-core/src/java/org/jboss/blog/ui/SelectableBlogName.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/ui/SelectableBlogName.java	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/java/org/jboss/blog/ui/SelectableBlogName.java	2006-11-11 14:25:51 UTC (rev 26)
@@ -0,0 +1,34 @@
+package org.jboss.blog.ui;
+
+import org.jboss.blog.BlogName;
+
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class SelectableBlogName {
+    private BlogName blogName;
+    private boolean selected;
+
+    public SelectableBlogName(BlogName blogName, Set currentCategories) {
+        this.blogName = blogName;
+        this.selected = currentCategories.contains(blogName.getCategory());
+    }
+
+    public String getCategory() {
+        return blogName.getCategory();
+    }
+
+    public boolean isSelected() {
+        return selected;
+    }
+
+    public void setSelected(boolean selected) {
+        this.selected = selected;
+    }
+
+    public BlogName getBlogName() {
+        return blogName;
+    }
+}

Modified: trunk/blog-core/src/web/WEB-INF/faces-config.xml
===================================================================
--- trunk/blog-core/src/web/WEB-INF/faces-config.xml	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/web/WEB-INF/faces-config.xml	2006-11-11 14:25:51 UTC (rev 26)
@@ -105,4 +105,12 @@
             <to-view-id>/views/post_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_new</from-outcome>
+            <to-view-id>/views/post_new.xhtml</to-view-id>
+        </navigation-case>
+    </navigation-rule>
 </faces-config>

Modified: trunk/blog-core/src/web/views/blog_view.xhtml
===================================================================
--- trunk/blog-core/src/web/views/blog_view.xhtml	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/web/views/blog_view.xhtml	2006-11-11 14:25:51 UTC (rev 26)
@@ -6,9 +6,7 @@
       xmlns:blog="http://www.jboss.org/portal/jbossblog">
 <ui:composition template="view.xhtml">
     <ui:define name="editlink">
-        <h:commandLink value="Edit"
-                       action="blog_edit"
-                       actionListener="#{blogView.exitFromBlogView}" />
+        <h:commandLink value="Edit" action="#{blogView.blogEditFromBlogView}" />
     </ui:define>
 
     <ui:define name="viewmain">
@@ -20,7 +18,6 @@
                 <h:form>
                     <b>
                     <h:commandLink value="#{post.title}"
-                                   actionListener="#{blogView.postSelect}"
                                    action="#{blogView.postView}"
                                    rendered="#{blogView.postsExpandable}" />
 
@@ -31,8 +28,7 @@
 
                     <blog:isAllowed fragment="acl://managePost" contextData="#{blogView.blogName}">
                         <h:commandLink value="Edit"
-                                       action="post_edit"
-                                       actionListener="#{blogView.exitFromBlogViewAndPostSelect}" />
+                                       action="#{blogView.postEditFromBlogView}" />
                     </blog:isAllowed>
                 </h:form>
 
@@ -61,6 +57,12 @@
                 <h:commandLink action="#{blogView.next}">Next</h:commandLink>
             </h:form>
         </h:panelGroup>
+
+        <blog:isAllowed fragment="acl://managePost" contextData="#{blogView.blogName}">
+            <h:form>
+                <h:commandLink value="New post" action="#{blogView.postNew}" />
+            </h:form>
+        </blog:isAllowed>
     </ui:define>
 </ui:composition>
 </div>

Modified: trunk/blog-core/src/web/views/post_edit.xhtml
===================================================================
--- trunk/blog-core/src/web/views/post_edit.xhtml	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/web/views/post_edit.xhtml	2006-11-11 14:25:51 UTC (rev 26)
@@ -14,5 +14,9 @@
         <ui:define name="edittableheader">
             Change post properties:
         </ui:define>
+
+        <ui:define name="savelink">
+            <h:commandLink value="Save" action="#{postEdit.save}" />
+        </ui:define>
     </ui:composition>
 </div>
\ No newline at end of file

Modified: trunk/blog-core/src/web/views/post_mod.xhtml
===================================================================
--- trunk/blog-core/src/web/views/post_mod.xhtml	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/web/views/post_mod.xhtml	2006-11-11 14:25:51 UTC (rev 26)
@@ -32,17 +32,32 @@
 
                     <h:panelGroup>Guid: (*)</h:panelGroup>
                     <h:panelGroup>
-                        <h:inputTextarea value="#{postEdit.guid}" required="true" />
+                        <h:inputText value="#{postEdit.guid}" required="true" />
                     </h:panelGroup>
 
                     <h:panelGroup>Description:</h:panelGroup>
                     <h:panelGroup>
                         <h:inputTextarea value="#{postEdit.description}" />
                     </h:panelGroup>
+
+                    <h:panelGroup>Comment link:</h:panelGroup>
+                    <h:panelGroup>
+                        <h:inputText value="#{postEdit.commentLink}" />
+                    </h:panelGroup>
                 </h:panelGrid>
 
+                <h3>Post categories:</h3>
+                <h:dataTable value="#{postEdit.blogs}" var="blog">
+                    <h:column>
+                        <h:selectBooleanCheckbox value="#{blog.selected}" />
+                    </h:column>
+                    <h:column>
+                        #{blog.category}
+                    </h:column>
+                </h:dataTable>
+
                 <h:commandLink value="Back" action="#{postEdit.back}" immediate="true"/> <br  />
-                <h:commandLink value="Save" action="#{postEdit.save}" />
+                <ui:insert name="savelink" />
             </h:form>
         </ui:define>
     </ui:composition>

Added: trunk/blog-core/src/web/views/post_new.xhtml
===================================================================
--- trunk/blog-core/src/web/views/post_new.xhtml	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/web/views/post_new.xhtml	2006-11-11 14:25:51 UTC (rev 26)
@@ -0,0 +1,22 @@
+<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">
+            New post
+        </ui:define>
+
+        <ui:define name="edittableheader">
+            Input new post properties:
+        </ui:define>
+
+        <ui:define name="savelink">
+            <h:commandLink value="Save" action="#{postEdit.saveNew}" />
+        </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-10 21:42:57 UTC (rev 25)
+++ trunk/blog-core/src/web/views/post_view.xhtml	2006-11-11 14:25:51 UTC (rev 26)
@@ -6,9 +6,7 @@
       xmlns:blog="http://www.jboss.org/portal/jbossblog">
 <ui:composition template="view.xhtml">
     <ui:define name="editlink">
-        <h:commandLink value="Edit"
-                       action="blog_edit"
-                       actionListener="#{blogView.exitFromPostView}" />
+        <h:commandLink value="Edit" action="#{blogView.blogEditFromPostView}" />
     </ui:define>
 
     <ui:define name="viewmain">
@@ -21,15 +19,14 @@
         <h:form>
         <p>
         <h:commandLink value="Edit"
-                       action="post_edit"
-                       actionListener="#{blogView.exitFromPostView}" />
+                       action="#{blogView.postEditFromPostView}" />
         </p>
         </h:form>
         </blog:isAllowed>
 
         <h2>Navigation</h2>
         <h:form>
-            <h:commandLink action="blog_view" actionListener="#{blogView.backFromPostView}">
+            <h:commandLink action="#{blogView.blogView}">
                 Back
             </h:commandLink>
         </h:form>

Modified: trunk/jbossblog.iws
===================================================================
--- trunk/jbossblog.iws	2006-11-10 21:42:57 UTC (rev 25)
+++ trunk/jbossblog.iws	2006-11-11 14:25:51 UTC (rev 26)
@@ -17,27 +17,30 @@
   </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/java/org/jboss/blog/ui/PostEdit.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/PostEdit.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogPost.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogPost.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/etc/META-INF/jboss-service.xml" afterPath="$PROJECT_DIR$/blog-core/src/etc/META-INF/jboss-service.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/SelectableBlogName.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/web/views/post_new.xhtml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/model/RomeParsingBlogModelService.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/model/RomeParsingBlogModelService.java" />
+      <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/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/java/org/jboss/blog/ui/BlogEdit.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/BlogEdit.java" />
       <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.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/web/views/post_mod.xhtml" afterPath="$PROJECT_DIR$/blog-core/src/web/views/post_mod.xhtml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogPost.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogPost.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" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/tools/UITools.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/tools/UITools.java" />
+      <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="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/views/post_edit.xhtml" afterPath="$PROJECT_DIR$/blog-core/src/web/views/post_edit.xhtml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.hbm.xml" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.hbm.xml" />
       <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" />
@@ -165,7 +168,7 @@
       <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">
+            <state line="168" column="46" selection-start="4470" selection-end="4470" vertical-scroll-proportion="0.6217949">
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -173,78 +176,68 @@
           </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">
+      <file leaf-file-name="HBlogPost.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/HBlogPost.hbm.xml">
           <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 line="29" column="29" selection-start="1036" selection-end="1036" vertical-scroll-proportion="0.69711536">
+              <folding />
             </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="HBlogModel.java" pinned="false" current="false" current-in-tab="false">
+        <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="38" column="43" selection-start="1656" selection-end="1656" vertical-scroll-proportion="0.82901555">
+            <state line="186" column="27" selection-start="4910" selection-end="4910" vertical-scroll-proportion="1.1394231">
               <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">
+      <file leaf-file-name="HBlogPost.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="17" column="22" selection-start="765" selection-end="765" vertical-scroll-proportion="0.44041452">
+            <state line="122" column="54" selection-start="2702" selection-end="2702" vertical-scroll-proportion="1.1153846">
               <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">
+      <file leaf-file-name="HibernateBlogStoreService.java" pinned="false" current="true" current-in-tab="true">
+        <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="32" column="44" selection-start="1162" selection-end="1162" vertical-scroll-proportion="0.8080808">
-              <folding />
+            <state line="205" column="42" selection-start="6828" selection-end="6828" vertical-scroll-proportion="0.525641">
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
-          <provider editor-type-id="HtmlPreview">
-            <state />
-          </provider>
         </entry>
       </file>
-      <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">
+      <file leaf-file-name="ModifiableBlogModel.java" pinned="false" current="false" current-in-tab="false">
+        <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="221" column="21" selection-start="7539" selection-end="7539" vertical-scroll-proportion="0.22479339">
+            <state line="17" column="41" selection-start="550" selection-end="550" vertical-scroll-proportion="0.28846154">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <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">
+      <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="33" column="39" selection-start="1386" selection-end="1386" vertical-scroll-proportion="0.8549223">
-              <folding />
+            <state line="193" column="73" selection-start="5497" selection-end="5497" vertical-scroll-proportion="-0.011217949">
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
-          <provider editor-type-id="HtmlPreview">
-            <state />
-          </provider>
         </entry>
       </file>
       <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="43" column="51" selection-start="1798" selection-end="1798" vertical-scroll-proportion="1.0708117">
+            <state line="51" column="71" selection-start="2161" selection-end="2161" vertical-scroll-proportion="0.89464885">
               <folding />
             </state>
           </provider>
@@ -253,18 +246,6 @@
           </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">
@@ -835,6 +816,44 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/model" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+      </PATH>
+      <PATH>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="jbossblog.ipr" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
           <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
@@ -938,7 +957,7 @@
       <showLibraryContents />
       <hideEmptyPackages />
       <abbreviatePackageNames />
-      <showStructure ProjectPane="false" Scope="false" PackagesPane="false" Favorites="false" />
+      <showStructure Favorites="false" Scope="false" PackagesPane="false" ProjectPane="false" />
       <autoscrollToSource />
       <autoscrollFromSource />
       <sortByType />
@@ -974,13 +993,6 @@
   </component>
   <component name="RestoreUpdateTree" />
   <component name="RunManager">
-    <configuration default="true" type="Remote" factoryName="Remote">
-      <option name="USE_SOCKET_TRANSPORT" value="true" />
-      <option name="SERVER_MODE" value="false" />
-      <option name="SHMEM_ADDRESS" value="javadebug" />
-      <option name="HOST" value="localhost" />
-      <option name="PORT" value="5005" />
-    </configuration>
     <configuration default="true" type="Application" factoryName="Application" enabled="false" merge="false">
       <option name="MAIN_CLASS_NAME" />
       <option name="VM_PARAMETERS" />
@@ -991,18 +1003,6 @@
       <option name="ENABLE_SWING_INSPECTOR" value="false" />
       <module name="" />
     </configuration>
-    <configuration default="true" type="Applet" factoryName="Applet">
-      <module name="" />
-      <option name="MAIN_CLASS_NAME" />
-      <option name="HTML_FILE_NAME" />
-      <option name="HTML_USED" value="false" />
-      <option name="WIDTH" value="400" />
-      <option name="HEIGHT" value="300" />
-      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
-      <option name="VM_PARAMETERS" />
-      <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" />
@@ -1022,6 +1022,25 @@
         <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" />
+      <option name="SHMEM_ADDRESS" value="javadebug" />
+      <option name="HOST" value="localhost" />
+      <option name="PORT" value="5005" />
+    </configuration>
+    <configuration default="true" type="Applet" factoryName="Applet">
+      <module name="" />
+      <option name="MAIN_CLASS_NAME" />
+      <option name="HTML_FILE_NAME" />
+      <option name="HTML_USED" value="false" />
+      <option name="WIDTH" value="400" />
+      <option name="HEIGHT" value="300" />
+      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
+      <option name="VM_PARAMETERS" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+    </configuration>
   </component>
   <component name="ScopeViewComponent">
     <subPane subId="Project">
@@ -1096,22 +1115,22 @@
     </todo-panel>
   </component>
   <component name="ToolWindowManager">
-    <frame x="0" y="25" width="1680" height="1000" extended-state="0" />
+    <frame x="0" y="25" width="1690" height="1005" extended-state="6" />
     <editor active="true" />
     <layout>
       <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="2" />
       <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.26156694" order="0" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.25567138" 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" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.22727273" order="9" />
       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39977092" order="6" />
       <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.26280075" order="1" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.21336603" 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" />
@@ -1214,73 +1233,74 @@
     <option name="myLastEditedConfigurable" value="Project Default" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/AbstractBlogModel.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="221" column="21" selection-start="7539" selection-end="7539" vertical-scroll-proportion="0.22479339">
+        <state line="9" column="22" selection-start="207" selection-end="207" vertical-scroll-proportion="0.1923077">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogModel.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/model/ModifiableBlogPost.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="11" column="49" selection-start="270" selection-end="270" vertical-scroll-proportion="0.16935484">
+        <state line="17" column="51" selection-start="555" selection-end="555" vertical-scroll-proportion="0.33653846">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogPost.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">
+        <state line="29" column="26" selection-start="734" selection-end="734" vertical-scroll-proportion="0.6730769">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/blog_edit.xhtml">
+    <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="10" column="36" selection-start="470" selection-end="470" vertical-scroll-proportion="0.25252524">
+        <state line="21" column="33" selection-start="641" selection-end="641" vertical-scroll-proportion="0.45673078">
           <folding />
         </state>
       </provider>
-      <provider editor-type-id="HtmlPreview">
-        <state />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/model/RomeParsingBlogModelService.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="88" column="90" selection-start="3147" selection-end="3147" vertical-scroll-proportion="0.6394231">
+          <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/service/store/hibernate/HBlogPost.hbm.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="33" column="39" selection-start="1386" selection-end="1386" vertical-scroll-proportion="0.8549223">
+        <state line="29" column="29" selection-start="1036" selection-end="1036" vertical-scroll-proportion="0.69711536">
           <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">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="117" column="49" selection-start="4790" selection-end="4790" vertical-scroll-proportion="0.69335604">
+        <state line="122" column="54" selection-start="2702" selection-end="2702" vertical-scroll-proportion="1.1153846">
           <folding />
         </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/java/org/jboss/blog/service/store/hibernate/HBlogModel.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="14" column="67" selection-start="689" selection-end="689" vertical-scroll-proportion="0.35775128">
+        <state line="186" column="27" selection-start="4910" selection-end="4910" vertical-scroll-proportion="1.1394231">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/PostEdit.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.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">
+        <state line="4" column="44" selection-start="175" selection-end="175" vertical-scroll-proportion="-1.4759616">
           <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/post_mod.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">
+        <state line="51" column="71" selection-start="2161" selection-end="2161" vertical-scroll-proportion="0.89464885">
           <folding />
         </state>
       </provider>
@@ -1288,62 +1308,49 @@
         <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/post_edit.xhtml">
+    <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="10" column="20" selection-start="465" selection-end="465" vertical-scroll-proportion="0.25252524">
-          <folding />
+        <state line="193" column="73" selection-start="5497" selection-end="5497" vertical-scroll-proportion="-0.011217949">
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
-      <provider editor-type-id="HtmlPreview">
-        <state />
-      </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/post_mod.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="43" column="51" selection-start="1798" selection-end="1798" vertical-scroll-proportion="1.0708117">
+        <state line="17" column="41" selection-start="550" selection-end="550" vertical-scroll-proportion="0.28846154">
           <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">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/SelectableBlogName.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">
+        <state line="29" column="0" selection-start="672" selection-end="672" vertical-scroll-proportion="0.69711536">
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/blog_view.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="38" column="43" selection-start="1656" selection-end="1656" vertical-scroll-proportion="0.82901555">
-          <folding />
+        <state line="168" column="46" selection-start="4470" selection-end="4470" vertical-scroll-proportion="0.6217949">
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
-      <provider editor-type-id="HtmlPreview">
-        <state />
-      </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogModel.java">
+    <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="11" column="17" selection-start="286" selection-end="286" vertical-scroll-proportion="-0.016129032">
-          <folding />
+        <state line="205" column="42" selection-start="6828" selection-end="6828" vertical-scroll-proportion="0.525641">
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <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>
   </component>
 </project>
 




More information about the jboss-cvs-commits mailing list