Index: trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 396)
+++ trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 397)
@@ -4,11 +4,16 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.BorderLayout;
+import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.util.Vector;
 
 import javax.swing.Action;
+import javax.swing.DefaultComboBoxModel;
 import javax.swing.JMenu;
 import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;
+import javax.swing.JPanel;
 
 import org.openstreetmap.josm.actions.AboutAction;
@@ -35,4 +40,9 @@
 import org.openstreetmap.josm.actions.search.SearchAction;
 import org.openstreetmap.josm.data.DataSetChecker;
+import org.openstreetmap.josm.gui.preferences.TaggingPresetPreference;
+import org.openstreetmap.josm.gui.tagging.ForwardActionListener;
+import org.openstreetmap.josm.gui.tagging.TaggingCellRenderer;
+import org.openstreetmap.josm.gui.tagging.TaggingPreset;
+import org.openstreetmap.josm.tools.GBC;
 
 /**
@@ -75,4 +85,5 @@
 	public final JMenu connectionMenu = new JMenu(tr("Connection"));
 	public final JMenu toolsMenu = new JMenu(tr("Tools"));
+	public final JMenu presetsMenu = new JMenu(tr("Presets"));
 
 	public final JMenu zoomToMenu = new JMenu(tr("Zoom To"));
@@ -128,4 +139,6 @@
 		layerMenu.setVisible(false);
 
+		add(presetsMenu);
+		
 		JMenuItem check = new JMenuItem("DEBUG: Check Dataset");
 		check.addActionListener(new ActionListener(){
@@ -140,4 +153,5 @@
 		helpMenu.add(about);
 		add(helpMenu);
+		
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 396)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 397)
@@ -321,4 +321,7 @@
 		super(tr("Properties/Memberships"), "propertiesdialog", tr("Properties for selected objects."), KeyEvent.VK_P, 150);
 
+		// ---------------------------------------
+		// This drop-down will probably be removed soon.
+		//
 		if (TaggingPresetPreference.taggingPresets.size() > 0) {
 			Vector<ActionListener> allPresets = new Vector<ActionListener>();
@@ -326,5 +329,7 @@
 				allPresets.add(new ForwardActionListener(this, p));
 
-			allPresets.add(0, new ForwardActionListener(this, new TaggingPreset()));
+			TaggingPreset empty = new TaggingPreset();
+			// empty.setName("this drop-down will be removed soon");
+			allPresets.add(0, new ForwardActionListener(this, empty));
 			taggingPresets.setModel(new DefaultComboBoxModel(allPresets));
 			JPanel north = new JPanel(new GridBagLayout());
@@ -341,4 +346,7 @@
 		});
 		taggingPresets.setRenderer(new TaggingCellRenderer());
+		
+		// End of "will be removed soon".
+		// --------------------------------------------
 
 		// setting up the properties table
Index: trunk/src/org/openstreetmap/josm/gui/preferences/ProjectionPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/ProjectionPreference.java	(revision 396)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/ProjectionPreference.java	(revision 397)
@@ -4,6 +4,11 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Color;
+import java.awt.GridBagLayout;
+
+import javax.swing.BorderFactory;
 import javax.swing.JComboBox;
 import javax.swing.JLabel;
+import javax.swing.JPanel;
 
 import org.openstreetmap.josm.Main;
@@ -26,8 +31,12 @@
 		}
 		projectionCombo.addActionListener(gui.requireRestartAction);
-
-		gui.map.add(new JLabel(tr("Projection method")), GBC.std());
-		gui.map.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL));
-		gui.map.add(projectionCombo, GBC.eop().fill(GBC.HORIZONTAL).insets(0,0,0,5));
+		
+		JPanel projPanel = new JPanel();
+		projPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.gray), tr("Map Projection")));
+		projPanel.setLayout(new GridBagLayout());
+		projPanel.add(new JLabel(tr("Projection method")), GBC.std().insets(5,5,0,5));
+		projPanel.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL));
+		projPanel.add(projectionCombo, GBC.eop().fill(GBC.HORIZONTAL).insets(0,5,5,5));
+		gui.map.add(projPanel, GBC.eol().insets(0,0,0,10).fill(GBC.HORIZONTAL));
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/preferences/TaggingPresetPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/TaggingPresetPreference.java	(revision 396)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/TaggingPresetPreference.java	(revision 397)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Color;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
@@ -10,12 +11,18 @@
 import java.util.StringTokenizer;
 
+import javax.swing.Action;
+import javax.swing.BorderFactory;
 import javax.swing.Box;
 import javax.swing.DefaultListModel;
 import javax.swing.JButton;
+import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JList;
+import javax.swing.JMenuItem;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
+import javax.swing.JSeparator;
+import javax.swing.border.BevelBorder;
 
 import org.openstreetmap.josm.Main;
@@ -27,7 +34,12 @@
 	public static Collection<TaggingPreset> taggingPresets;
 	private JList taggingPresetSources;
+	private JCheckBox enableDefault;
+	
+	public void addGui(final PreferenceDialog gui) {
+		
+		taggingPresetSources = new JList(new DefaultListModel());
+		enableDefault = new JCheckBox(tr("Enable built-in defaults"), 
+				Main.pref.getBoolean("taggingpreset.enable-defaults"));
 
-	public void addGui(final PreferenceDialog gui) {
-		taggingPresetSources = new JList(new DefaultListModel());
 		String annos = Main.pref.get("taggingpreset.sources");
 		StringTokenizer st = new StringTokenizer(annos, ";");
@@ -78,15 +90,21 @@
 		deleteAnno.setToolTipText(tr("Delete the selected source from the list."));
 
-		gui.map.add(new JLabel(tr("Tagging preset sources")), GBC.eol().insets(0,5,0,0));
-		gui.map.add(new JScrollPane(taggingPresetSources), GBC.eol().fill(GBC.BOTH));
+		JPanel tpPanel = new JPanel();
+		tpPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.gray), tr("Tagging Presets")));
+		tpPanel.setLayout(new GridBagLayout());
+		tpPanel.add(enableDefault, GBC.eol().insets(5,5,5,0));
+		tpPanel.add(new JLabel(tr("Tagging preset sources")), GBC.eol().insets(5,5,5,0));
+		tpPanel.add(new JScrollPane(taggingPresetSources), GBC.eol().insets(5,0,5,0).fill(GBC.BOTH));
 		JPanel buttonPanel = new JPanel(new GridBagLayout());
-		gui.map.add(buttonPanel, GBC.eol().fill(GBC.HORIZONTAL));
+		tpPanel.add(buttonPanel, GBC.eol().insets(5,0,5,5).fill(GBC.HORIZONTAL));
 		buttonPanel.add(Box.createHorizontalGlue(), GBC.std().fill(GBC.HORIZONTAL));
 		buttonPanel.add(addAnno, GBC.std().insets(0,5,0,0));
 		buttonPanel.add(editAnno, GBC.std().insets(5,5,5,0));
 		buttonPanel.add(deleteAnno, GBC.std().insets(0,5,0,0));
+		gui.map.add(tpPanel, GBC.eol().fill(GBC.BOTH));
 	}
 
 	public void ok() {
+		Main.pref.put("taggingpreset.enable-defaults", enableDefault.getSelectedObjects() != null);
 		if (taggingPresetSources.getModel().getSize() > 0) {
 			StringBuilder sb = new StringBuilder();
@@ -103,4 +121,11 @@
 	public static void initialize() {
 		taggingPresets = TaggingPreset.readFromPreferences();
+		for (final TaggingPreset p : taggingPresets) {
+			if (p.getValue(Action.NAME).equals(" ")) {
+				Main.main.menu.presetsMenu.add(new JSeparator());
+			} else {
+				Main.main.menu.presetsMenu.add(new JMenuItem(p));
+			}
+		}		
 	}
 }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 396)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 397)
@@ -167,4 +167,7 @@
 	/**
 	 * Called from the XML parser to set the icon
+	 * 
+	 * FIXME for Java 1.6 - use 24x24 icons for LARGE_ICON_KEY (button bar)
+	 * and the 16x16 icons for SMALL_ICON.
 	 */
 	public void setIcon(String iconName) {
@@ -172,6 +175,6 @@
 		if (icon == null)
 			icon = new ImageIcon(iconName);
-		if (Math.max(icon.getIconHeight(), icon.getIconWidth()) != 24)
-			icon = new ImageIcon(icon.getImage().getScaledInstance(24, 24, Image.SCALE_SMOOTH));
+		if (Math.max(icon.getIconHeight(), icon.getIconWidth()) != 16)
+			icon = new ImageIcon(icon.getImage().getScaledInstance(16, 16, Image.SCALE_SMOOTH));
 		putValue(Action.SMALL_ICON, icon);
 	}
@@ -225,4 +228,14 @@
 		LinkedList<TaggingPreset> allPresets = new LinkedList<TaggingPreset>();
 		String allTaggingPresets = Main.pref.get("taggingpreset.sources");
+		
+		if (Main.pref.getBoolean("taggingpreset.enable-defaults")) {
+			InputStream in = Main.class.getResourceAsStream("/presets/presets.xml");
+			try {
+				allPresets.addAll(TaggingPreset.readAll(in));
+			} catch (SAXException x) {
+				JOptionPane.showMessageDialog(Main.parent, tr("Error parsing presets.xml: ")+x.getMessage());
+			}
+		}
+		
 		StringTokenizer st = new StringTokenizer(allTaggingPresets, ";");
 		while (st.hasMoreTokens()) {
@@ -232,5 +245,5 @@
 				if (source.startsWith("http") || source.startsWith("ftp") || source.startsWith("file"))
 					in = new URL(source).openStream();
-				else if (source.startsWith("resource://"))
+				else if (source.startsWith("resource://")) 
 					in = Main.class.getResourceAsStream(source.substring("resource:/".length()));
 				else
@@ -248,5 +261,4 @@
 		return allPresets;
 	}
-
 
 	public JPanel createPanel() {
