Index: applications/editors/josm/plugins/relcontext/TODO
===================================================================
--- applications/editors/josm/plugins/relcontext/TODO	(revision 25747)
+++ applications/editors/josm/plugins/relcontext/TODO	(revision 25748)
@@ -3,9 +3,5 @@
 - Draw icons for multipoly settings menu
 - Solve width problem for narrows buttons when "fix" and "download" appear simultaneously
-- Doubleclick on a relation list member should either select a relation or
-  open relation editor for that relation (and choose it) (preferences?)
-- Add "Open editor" to relation context menu
 - "Reverse multipolygon": create a closed area out of outer members, move tags, delete relation and empty ways
-- Remove "single multipolygon" from relation settings, there will be single relation in all cases
 
 == NEW ALGORITHM ==
Index: applications/editors/josm/plugins/relcontext/src/relcontext/ChosenRelation.java
===================================================================
--- applications/editors/josm/plugins/relcontext/src/relcontext/ChosenRelation.java	(revision 25747)
+++ applications/editors/josm/plugins/relcontext/src/relcontext/ChosenRelation.java	(revision 25748)
@@ -44,4 +44,13 @@
     public void clear() {
         set(null);
+    }
+
+    public boolean isSame( Object r ) {
+        if( r == null )
+            return chosenRelation == null;
+        else if( !(r instanceof Relation) )
+            return false;
+        else
+            return chosenRelation != null && r.equals(chosenRelation);
     }
     
Index: applications/editors/josm/plugins/relcontext/src/relcontext/RelContextDialog.java
===================================================================
--- applications/editors/josm/plugins/relcontext/src/relcontext/RelContextDialog.java	(revision 25747)
+++ applications/editors/josm/plugins/relcontext/src/relcontext/RelContextDialog.java	(revision 25748)
@@ -180,13 +180,37 @@
         relationsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         relationsTable.setTableHeader(null);
-        relationsTable.addMouseListener(new PopupMenuLauncher() {
-            @Override
-            public void launch(MouseEvent evt) {
-                Point p = evt.getPoint();
+        relationsTable.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked( MouseEvent e ) {
+                Point p = e.getPoint();
                 int row = relationsTable.rowAtPoint(p);
-                if (row > -1) {
+                if( SwingUtilities.isLeftMouseButton(e) && row >= 0 ) {
                     Relation relation = (Relation)relationsData.getValueAt(row, 0);
-                    JPopupMenu menu = new ChosenRelationPopupMenu(new StaticChosenRelation(relation));
-                    menu.show(relationsTable, p.x, p.y-5);
+                    if( e.getClickCount() > 1 ) {
+                        Main.map.mapView.getEditLayer().data.setSelected(relation);
+                    }
+                }
+            }
+
+            @Override
+            public void mousePressed( MouseEvent e ) {
+                checkPopup(e);
+            }
+
+            @Override
+            public void mouseReleased( MouseEvent e ) {
+                checkPopup(e);
+            }
+
+            public void checkPopup( MouseEvent e ) {
+                if( e.isPopupTrigger() ) {
+                    Point p = e.getPoint();
+                    int row = relationsTable.rowAtPoint(p);
+                    if (row > -1) {
+                        Relation relation = (Relation)relationsData.getValueAt(row, 0);
+                        JPopupMenu menu = chosenRelation.isSame(relation) ? popupMenu
+                                : new ChosenRelationPopupMenu(new StaticChosenRelation(relation));
+                        menu.show(relationsTable, p.x, p.y-5);
+                    }
                 }
             }
@@ -203,5 +227,5 @@
             public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column ) {
                 Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
-                if( !isSelected && value instanceof Relation && chosenRelation.get() != null && value.equals(chosenRelation.get()) )
+                if( !isSelected && value instanceof Relation && chosenRelation.isSame(value) )
                     c.setBackground(CHOSEN_RELATION_COLOR);
                 else
@@ -215,5 +239,5 @@
             public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column ) {
                 Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
-                if( !isSelected && chosenRelation.get() != null && table.getValueAt(row, 0).equals(chosenRelation.get()) )
+                if( !isSelected && chosenRelation.isSame(table.getValueAt(row, 0)) )
                     c.setBackground(CHOSEN_RELATION_COLOR);
                 else
@@ -310,5 +334,5 @@
         }
         for( OsmPrimitive element : newSelection )
-            if( element instanceof Relation && (chosenRelation.get() == null || !chosenRelation.get().equals(element) ) )
+            if( element instanceof Relation && !chosenRelation.isSame(element) )
                 relationsData.addRow(new Object[] {element, ""});
     }
@@ -489,5 +513,4 @@
             addMenuItem("boundaryways", "Add tags boundary and admin_level to boundary relation ways");
             addMenuItem("tags", "Move area tags from contour to relation");
-            addMenuItem("single", "Create a single multipolygon for multiple outer contours").setEnabled(false);
         }
 
