Ticket #15598: josm-handle-doubleclick-coherent-in-ChildRelationBrowser-and-ReferringRelationsBrowser.patch

File josm-handle-doubleclick-coherent-in-ChildRelationBrowser-and-ReferringRelationsBrowser.patch, 4.4 KB (added by cmuelle8, 9 years ago)

josm-handle-doubleclick-coherent-in-ChildRelationBrowser-and-ReferringRelationsBrowser.patch

  • src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java

     
    99import java.awt.Dialog;
    1010import java.awt.FlowLayout;
    1111import java.awt.event.ActionEvent;
     12import java.awt.event.MouseAdapter;
     13import java.awt.event.MouseEvent;
    1214import java.io.IOException;
    1315import java.net.HttpURLConnection;
    1416import java.util.HashSet;
     
    6567    /** the osm data layer this browser is related to */
    6668    private transient OsmDataLayer layer;
    6769
     70    /** the editAction used in the bottom panel and for doubleClick */
     71    private EditAction editAction;
     72
    6873    /**
    6974     * Replies the {@link OsmDataLayer} this editor is related to
    7075     *
     
    8489        add(pane, BorderLayout.CENTER);
    8590
    8691        add(buildButtonPanel(), BorderLayout.SOUTH);
     92        childTree.setToggleClickCount(0);
     93        childTree.addMouseListener(new MouseAdapter() {
     94            @Override
     95            public void mouseClicked(MouseEvent e) {
     96                if (e.getClickCount() == 2 && !e.isAltDown() && !e.isAltGraphDown() &&
     97                    !e.isControlDown() && !e.isMetaDown() && !e.isShiftDown() &&
     98                    childTree.getRowForLocation(e.getX(), e.getY()) ==
     99                    childTree.getMinSelectionRow()) {
     100                    Relation r = (Relation) childTree.getLastSelectedPathComponent();
     101                    if (r.isIncomplete()) {
     102                        childTree.expandPath(childTree.getSelectionPath());
     103                    } else {
     104                        editAction.actionPerformed(
     105                           new ActionEvent(e.getSource(), ActionEvent.ACTION_PERFORMED, null));
     106                    }
     107                }
     108            }
     109        });
    87110    }
    88111
    89112    /**
     
    104127        pnl.add(new JButton(downloadSelectedAction));
    105128
    106129        // ---
    107         EditAction editAction = new EditAction();
     130        editAction = new EditAction();
    108131        childTree.addTreeSelectionListener(editAction);
    109132        pnl.add(new JButton(editAction));
    110133
  • src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java

     
    4444    /**
    4545     * Constructs a new {@code ReferringRelationsBrowser}.
    4646     * @param layer OSM data layer
    47      * @param model referrinf relations browser model
     47     * @param model referring relations browser model
    4848     */
    4949    public ReferringRelationsBrowser(OsmDataLayer layer, ReferringRelationsBrowserModel model) {
    5050        this.model = model;
     
    6161        referrers.setCellRenderer(new OsmPrimitivRenderer());
    6262        add(new JScrollPane(referrers), BorderLayout.CENTER);
    6363        referrers.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    64         referrers.addMouseListener(new DblClickMouseAdapter());
    6564
    6665        JPanel pnl = new JPanel(new FlowLayout(FlowLayout.LEFT));
    6766
     
    7473        referrers.getSelectionModel().addListSelectionListener(editAction);
    7574        pnl.add(new JButton(editAction));
    7675        add(pnl, BorderLayout.SOUTH);
     76
     77        referrers.addMouseListener(new MouseAdapter() {
     78            @Override
     79            public void mouseClicked(MouseEvent e) {
     80                if (e.getClickCount() == 2 && !e.isAltDown() && !e.isAltGraphDown() &&
     81                    !e.isControlDown() && !e.isMetaDown() && !e.isShiftDown() &&
     82                    referrers.getCellBounds(referrers.getSelectedIndex(),
     83                        referrers.getSelectedIndex()).contains(e.getPoint())) {
     84                    editAction.actionPerformed(
     85                        new ActionEvent(e.getSource(), ActionEvent.ACTION_PERFORMED, null));
     86                }
     87            }
     88        });
    7789    }
    7890
    7991    public void init() {
     
    170182            refreshEnabled();
    171183        }
    172184    }
    173 
    174     class DblClickMouseAdapter extends MouseAdapter {
    175         @Override
    176         public void mouseClicked(MouseEvent e) {
    177             if (e.getClickCount() == 2) {
    178                 editAction.run();
    179             }
    180         }
    181     }
    182185}