Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 6938)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 6939)
@@ -143,11 +143,16 @@
     private final JTable membershipTable = new JTable(membershipData);
 
+    /** JPanel containing both previous tables */
+    private final JPanel bothTables = new JPanel();
+
     // Popup menus
     private final JPopupMenu tagMenu = new JPopupMenu();
     private final JPopupMenu membershipMenu = new JPopupMenu();
+    private final JPopupMenu blankSpaceMenu = new JPopupMenu();
 
     // Popup menu handlers
     private final PopupMenuHandler tagMenuHandler = new PopupMenuHandler(tagMenu);
     private final PopupMenuHandler membershipMenuHandler = new PopupMenuHandler(membershipMenu);
+    private final PopupMenuHandler blankSpaceMenuHandler = new PopupMenuHandler(blankSpaceMenu);
 
     private final Map<String, Map<String, Integer>> valueCount = new TreeMap<String, Map<String, Integer>>();
@@ -235,5 +240,4 @@
 
         // combine both tables and wrap them in a scrollPane
-        JPanel bothTables = new JPanel();
         boolean top = Main.pref.getBoolean("properties.presets.top", true);
         bothTables.setLayout(new GridBagLayout());
@@ -251,8 +255,9 @@
             bothTables.add(presets, GBC.eol().fill(GBC.HORIZONTAL).insets(5, 2, 5, 2));
         }
-
+        
+        setupBlankSpaceMenu();
         setupKeyboardShortcuts();
 
-        // Let the action know when selection in the tables change
+        // Let the actions know when selection in the tables change
         tagTable.getSelectionModel().addListSelectionListener(editAction);
         membershipTable.getSelectionModel().addListSelectionListener(editAction);
@@ -260,5 +265,4 @@
         membershipTable.getSelectionModel().addListSelectionListener(deleteAction);
 
-
         JScrollPane scrollPane = (JScrollPane) createLayout(bothTables, true, Arrays.asList(new SideButton[] {
                 this.btnAdd, this.btnEdit, this.btnDel
@@ -280,5 +284,4 @@
     private void buildTagsTable() {
         // setting up the tags table
-
         tagData.setColumnIdentifiers(new String[]{tr("Key"),tr("Value")});
         tagTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
@@ -353,8 +356,33 @@
 
     /**
-     * creates the popup menu @field membershipMenu and its launcher on membership table
+     * Creates the popup menu @field blankSpaceMenu and its launcher on main panel.
+     */
+    private void setupBlankSpaceMenu() {
+        if (Main.pref.getBoolean("properties.menu.add_edit_delete", true)) {
+            blankSpaceMenuHandler.addAction(addAction);
+            PopupMenuLauncher launcher = new PopupMenuLauncher(blankSpaceMenu) {
+                @Override
+                protected boolean checkSelection(Component component, Point p) {
+                    if (component instanceof JTable) {
+                        return ((JTable) component).rowAtPoint(p) == -1;
+                    }
+                    return true;
+                }
+            };
+            bothTables.addMouseListener(launcher);
+            tagTable.addMouseListener(launcher);
+        }
+    }
+
+    /**
+     * Creates the popup menu @field membershipMenu and its launcher on membership table.
      */
     private void setupMembershipMenu() {
         // setting up the membership table
+        if (Main.pref.getBoolean("properties.menu.add_edit_delete", true)) {
+            membershipMenuHandler.addAction(editAction);
+            membershipMenuHandler.addAction(deleteAction);
+            membershipMenu.addSeparator();
+        }
         membershipMenuHandler.addAction(setRelationSelectionAction);
         membershipMenuHandler.addAction(selectRelationAction);
@@ -402,7 +430,13 @@
 
     /**
-     * creates the popup menu @field tagMenu and its launcher on tag table
+     * Creates the popup menu @field tagMenu and its launcher on tag table.
      */
     private void setupTagsMenu() {
+        if (Main.pref.getBoolean("properties.menu.add_edit_delete", true)) {
+            tagMenu.add(addAction);
+            tagMenu.add(editAction);
+            tagMenu.add(deleteAction);
+            tagMenu.addSeparator();
+        }
         tagMenu.add(pasteValueAction);
         tagMenu.add(copyValueAction);
@@ -418,5 +452,5 @@
 
     /**
-     * Assignas all needed keys like Enter and Spacebar to most important actions
+     * Assigns all needed keys like Enter and Spacebar to most important actions.
      */
     private void setupKeyboardShortcuts() {
@@ -649,7 +683,7 @@
         boolean hasTags = hasSelection && tagData.getRowCount() > 0;
         boolean hasMemberships = hasSelection && membershipData.getRowCount() > 0;
-        btnAdd.setEnabled(hasSelection);
-        btnEdit.setEnabled(hasTags || hasMemberships);
-        btnDel.setEnabled(hasTags || hasMemberships);
+        addAction.setEnabled(hasSelection);
+        editAction.setEnabled(hasTags || hasMemberships);
+        deleteAction.setEnabled(hasTags || hasMemberships);
         tagTable.setVisible(hasTags);
         tagTable.getTableHeader().setVisible(hasTags);
@@ -707,4 +741,8 @@
     }
 
+    /**
+     * Returns the selected tag.
+     * @return The current selected tag
+     */
     @SuppressWarnings("unchecked")
     public Tag getSelectedProperty() {
@@ -725,4 +763,8 @@
     }
 
+    /**
+     * Returns the selected relation membership.
+     * @return The current selected relation membership
+     */
     public IRelation getSelectedMembershipRelation() {
         int row = membershipTable.getSelectedRow();
@@ -774,5 +816,4 @@
             }
         }
-
     }
 
