From c55ec8067c5fbfeb29f66c1cad0d7782e4ba0479 Mon Sep 17 00:00:00 2001
From: Gautier Pelloux-Prayer <gautier+git@damsy.net>
Date: Mon, 5 Feb 2018 22:04:54 +0100
Subject: [PATCH] Zoom on element when double-clicking on elements of upload
 window

---
 .../josm/gui/io/UploadedObjectsSummaryPanel.java    | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java b/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java
index 7b00d51..c467cb7 100644
--- a/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java
+++ b/src/org/openstreetmap/josm/gui/io/UploadedObjectsSummaryPanel.java
@@ -4,9 +4,14 @@ package org.openstreetmap.josm.gui.io;
 import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trn;
 
+
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
 
@@ -16,6 +21,7 @@ import javax.swing.JList;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 
+import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 
@@ -52,10 +58,23 @@ public class UploadedObjectsSummaryPanel extends JPanel {
     protected void build() {
         setLayout(new GridBagLayout());
         OsmPrimitivRenderer renderer = new OsmPrimitivRenderer();
+        MouseAdapter mouseListener = new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent evt) {
+                if (evt.getButton() == MouseEvent.BUTTON1 && evt.getClickCount() == 2) {
+                    PrimitiveList list = (PrimitiveList)evt.getSource();
+                    int index = list.locationToIndex(evt.getPoint());
+                    Collection<OsmPrimitive> element = new HashSet<>();
+                    element.add(list.getModel().getElementAt(index));
+                    AutoScaleAction.zoomTo(element);
+                }
+            }
+        };
         // initialize the three lists for uploaded primitives, but don't add them to the dialog yet, see setUploadedPrimitives()
         //
         lstAdd = new PrimitiveList();
         lstAdd.setCellRenderer(renderer);
+        lstAdd.addMouseListener(mouseListener);
         lstAdd.setVisibleRowCount(Math.min(lstAdd.getModel().getSize(), 10));
         spAdd = new JScrollPane(lstAdd);
         lblAdd = new JLabel(tr("Objects to add:"));
@@ -63,6 +82,7 @@ public class UploadedObjectsSummaryPanel extends JPanel {
 
         lstUpdate = new PrimitiveList();
         lstUpdate.setCellRenderer(renderer);
+        lstUpdate.addMouseListener(mouseListener);
         lstUpdate.setVisibleRowCount(Math.min(lstUpdate.getModel().getSize(), 10));
         spUpdate = new JScrollPane(lstUpdate);
         lblUpdate = new JLabel(tr("Objects to modify:"));
@@ -70,6 +90,7 @@ public class UploadedObjectsSummaryPanel extends JPanel {
 
         lstDelete = new PrimitiveList();
         lstDelete.setCellRenderer(renderer);
+        lstDelete.addMouseListener(mouseListener);
         lstDelete.setVisibleRowCount(Math.min(lstDelete.getModel().getSize(), 10));
         spDelete = new JScrollPane(lstDelete);
         lblDelete = new JLabel(tr("Objects to delete:"));
-- 
2.15.1

