Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 1418)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 1419)
@@ -40,4 +40,5 @@
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.gui.ConflictResolver;
+import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
@@ -50,4 +51,20 @@
     private final DefaultListModel model = new DefaultListModel();
     private final JList displaylist = new JList(model);
+    
+    private final SideButton sbSelect = new SideButton(marktr("Select"), "select", "Conflict",
+            tr("Set the selected elements on the map to the selected items in the list above."), new ActionListener(){
+                public void actionPerformed(ActionEvent e) {
+                    Collection<OsmPrimitive> sel = new LinkedList<OsmPrimitive>();
+                    for (Object o : displaylist.getSelectedValues())
+                        sel.add((OsmPrimitive)o);
+                    Main.ds.setSelected(sel);
+                }
+            });
+    private final SideButton sbResolve = new SideButton(marktr("Resolve"), "conflict", "Conflict",
+            tr("Open a merge dialog of all selected items in the list above."), new ActionListener(){
+        public void actionPerformed(ActionEvent e) {
+            resolve();
+        }
+    });
 
     public ConflictDialog() {
@@ -65,20 +82,6 @@
 
         JPanel buttonPanel = new JPanel(new GridLayout(1,2));
-        buttonPanel.add(new SideButton(marktr("Resolve"), "conflict", "Conflict",
-        tr("Open a merge dialog of all selected items in the list above."), new ActionListener(){
-            public void actionPerformed(ActionEvent e) {
-                resolve();
-            }
-        }));
-
-        buttonPanel.add(new SideButton(marktr("Select"), "select", "Conflict",
-        tr("Set the selected elements on the map to the selected items in the list above."), new ActionListener(){
-            public void actionPerformed(ActionEvent e) {
-                Collection<OsmPrimitive> sel = new LinkedList<OsmPrimitive>();
-                for (Object o : displaylist.getSelectedValues())
-                    sel.add((OsmPrimitive)o);
-                Main.ds.setSelected(sel);
-            }
-        }));
+        buttonPanel.add(sbResolve);
+        buttonPanel.add(sbSelect);
         add(buttonPanel, BorderLayout.SOUTH);
 
@@ -99,11 +102,14 @@
             }
         });
+        
+        rebuildList();
     }
 
     private final void resolve() {
-        if (displaylist.getSelectedIndex() == -1) {
-            JOptionPane.showMessageDialog(Main.parent,tr("Please select something from the conflict list."));
+        if(model.size() == 1)
+            displaylist.setSelectedIndex(0);
+        
+        if (displaylist.getSelectedIndex() == -1)
             return;
-        }
         Map<OsmPrimitive, OsmPrimitive> sel = new HashMap<OsmPrimitive, OsmPrimitive>();
         for (int i : displaylist.getSelectedIndices()) {
@@ -112,6 +118,12 @@
         }
         ConflictResolver resolver = new ConflictResolver(sel);
-        int answer = JOptionPane.showConfirmDialog(Main.parent, resolver, tr("Resolve Conflicts"), JOptionPane.OK_CANCEL_OPTION);
-        if (answer != JOptionPane.OK_OPTION)
+        int answer = new ExtendedDialog(Main.parent,
+                          tr("Resolve Conflicts"),
+                          resolver,
+                          new String[] { tr("Solve Conflict"), tr("Cancel") },
+                          new String[] { "dialogs/conflict.png", "cancel.png"} 
+        ).getValue(); 
+
+        if (answer != 1)
             return;
         Main.main.undoRedo.add(new ConflictResolveCommand(resolver.conflicts, sel));
@@ -136,4 +148,7 @@
             setTitle(tr("Conflicts"), false);
         }
+        
+        sbSelect.setEnabled(model.size() > 0);
+        sbResolve.setEnabled(model.size() > 0);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 1418)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 1419)
@@ -18,4 +18,5 @@
 import javax.swing.JScrollPane;
 import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import org.openstreetmap.josm.Main;
@@ -53,4 +54,25 @@
      */
     private JList displaylist = new JList(list);
+    
+    private SideButton sbEdit = new SideButton(marktr("Edit"), "edit", "Selection", tr( "Open an editor for the selected relation"), new ActionListener() {
+        public void actionPerformed(ActionEvent e) {
+            Relation toEdit = getSelected();
+            if (toEdit == null)
+                return;
+            
+            new RelationEditor(toEdit).setVisible(true);
+        }
+    });
+    
+    private SideButton sbDel = new SideButton(marktr("Delete"), "delete", "Selection", tr("Delete the selected relation"), new ActionListener() {
+        public void actionPerformed(ActionEvent e) {
+            Relation toDelete = getSelected();
+            if (toDelete == null)
+                return;
+            
+            Main.main.undoRedo.add(
+                    new DeleteCommand(Collections.singleton(toDelete)));
+        }
+    });
 
     public RelationListDialog() {
@@ -77,23 +99,16 @@
         }), GBC.std());
 
-        buttonPanel.add(new SideButton(marktr("Edit"), "edit", "Selection", tr( "Open an editor for the selected relation"), new ActionListener() {
-            public void actionPerformed(ActionEvent e) {
-                Relation toEdit = (Relation) displaylist.getSelectedValue();
-                if (toEdit != null)
-                    new RelationEditor(toEdit).setVisible(true);
-            }
-        }), GBC.std());
+        buttonPanel.add(sbEdit, GBC.std());
 
-        buttonPanel.add(new SideButton(marktr("Delete"), "delete", "Selection", tr("Delete the selected relation"), new ActionListener() {
-            public void actionPerformed(ActionEvent e) {
-                Relation toDelete = (Relation) displaylist.getSelectedValue();
-                if (toDelete != null) {
-                    Main.main.undoRedo.add(
-                        new DeleteCommand(Collections.singleton(toDelete)));
-                }
-            }
-        }), GBC.eol());
+        buttonPanel.add(sbDel, GBC.eol());
         Layer.listeners.add(this);
         add(buttonPanel, BorderLayout.SOUTH);
+        
+        displaylist.addListSelectionListener(new ListSelectionListener() {
+            public void valueChanged(ListSelectionEvent e) {
+               sbEdit.setEnabled(getSelected() != null);
+               sbDel.setEnabled(getSelected() != null);
+            }
+        });
     }
 
@@ -117,4 +132,7 @@
             setTitle(tr("Relations"), false);
         }
+        
+        sbEdit.setEnabled(list.size() > 0);
+        sbDel.setEnabled(list.size() > 0);
     }
 
@@ -169,3 +187,12 @@
         displaylist.removeListSelectionListener(listener);
     }
+    
+    /**
+     * @return The selected relation in the list
+     */
+    private Relation getSelected() {
+        if(list.size() == 1)
+            displaylist.setSelectedIndex(0);
+        return (Relation) displaylist.getSelectedValue();
+    }
 }
