Index: /trunk/data/defaultpresets.xml
===================================================================
--- /trunk/data/defaultpresets.xml	(revision 6197)
+++ /trunk/data/defaultpresets.xml	(revision 6198)
@@ -19,4 +19,6 @@
                  see http://josm.openstreetmap.de/wiki/NameTemplate
 
+group: a group of items (same syntax as "item")
+
 link: link to the relating map features website
   href: the URL
@@ -24,4 +26,13 @@
 label: simple static text label
   text: the text to display
+
+space: empty line
+
+optional: optional tags, short for "label" plus "space"
+  text: the text to display (defaults to "Optional Attributes:")
+
+separator: separator line in menus
+
+item_separator: horizontal separator line between items (in window)
 
 key: fixed key/value pair to be set
Index: /trunk/data/tagging-preset.xsd
===================================================================
--- /trunk/data/tagging-preset.xsd	(revision 6197)
+++ /trunk/data/tagging-preset.xsd	(revision 6198)
@@ -85,4 +85,5 @@
             <element name="checkgroup" type="tns:checkgroup" />
 			<element name="check" type="tns:check" />
+			<element name="item_separator" type="tns:separator" />
 		</choice>
 	</group>
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItem.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItem.java	(revision 6197)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItem.java	(revision 6198)
@@ -5,5 +5,7 @@
 import java.util.List;
 import java.util.Map;
+
 import javax.swing.JPanel;
+
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -30,6 +32,17 @@
     }
 
+    /**
+     * Called by {@link TaggingPreset#createPanel} during tagging preset panel creation.
+     * All components defining this tagging preset item must be added to given panel.
+     * @param p The panel where components must be added
+     * @param sel The related selected OSM primitives
+     * @return {@code true} if this item adds semantic tagging elements, {@code false} otherwise.
+     */
     abstract boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel);
 
+    /**
+     * Adds the new tags to apply to selected OSM primitives when the preset holding this item is applied.
+     * @param changedTags The list of changed tags to modify if needed
+     */
     abstract void addCommands(List<Tag> changedTags);
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 6197)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java	(revision 6198)
@@ -1,4 +1,7 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.tagging;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
 
 import java.awt.Component;
@@ -34,9 +37,9 @@
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
+import javax.swing.JSeparator;
 import javax.swing.JToggleButton;
 import javax.swing.ListCellRenderer;
 import javax.swing.ListModel;
 
-import org.xml.sax.SAXException;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.search.SearchCompiler;
@@ -51,11 +54,9 @@
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
+import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.UrlLabel;
 import org.openstreetmap.josm.tools.Utils;
-import org.openstreetmap.josm.tools.GBC;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.tools.I18n.trc;
+import org.xml.sax.SAXException;
 
 /**
@@ -444,4 +445,25 @@
     }
 
+    /**
+     * Class used to represent a {@link JSeparator} inside tagging preset window.
+     * @since 6198
+     */
+    public static class ItemSeparator extends TaggingPresetItem {
+
+        @Override
+        public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+            p.add(new JSeparator(), GBC.eol().fill(GBC.HORIZONTAL).insets(0, 5, 0, 5));
+            return false;
+        }
+
+        @Override
+        public void addCommands(List<Tag> changedTags) {
+        }
+
+        @Override
+        public String toString() {
+            return "ItemSeparator";
+        }
+    }
 
     public static abstract class KeyedItem extends TaggingPresetItem {
@@ -703,5 +725,5 @@
         boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
             Integer cols = new Integer(columns);
-            int rows = (int) Math.ceil((double)checks.size()/cols.doubleValue());
+            int rows = (int) Math.ceil(checks.size()/cols.doubleValue());
             JPanel panel = new JPanel(new GridLayout(rows, cols));
             
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetReader.java	(revision 6197)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetReader.java	(revision 6198)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.tagging;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.io.BufferedReader;
@@ -15,5 +17,4 @@
 import javax.swing.JOptionPane;
 
-import org.xml.sax.SAXException;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.preferences.SourceEntry;
@@ -22,6 +23,5 @@
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.XmlObjectParser;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
+import org.xml.sax.SAXException;
 
 /**
@@ -67,4 +67,5 @@
         parser.map("key", TaggingPresetItems.Key.class);
         parser.map("list_entry", TaggingPresetItems.PresetListEntry.class);
+        parser.map("item_separator", TaggingPresetItems.ItemSeparator.class);
         
         LinkedList<TaggingPreset> all = new LinkedList<TaggingPreset>();
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSeparator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSeparator.java	(revision 6197)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSeparator.java	(revision 6198)
@@ -2,4 +2,8 @@
 package org.openstreetmap.josm.gui.tagging;
 
+/**
+ * Class used to represent a {@link javax.swing.JSeparator} inside tagging preset menu.
+ * @since 895
+ */
 public class TaggingPresetSeparator extends TaggingPreset {
     @Override
