Changeset 2344 in josm for trunk/src


Ignore:
Timestamp:
2009-10-29T05:18:55+01:00 (15 years ago)
Author:
Gubaer
Message:

fixed #3525: Double-clicking on a bookmark should initiate its download
fixed #3802: Download button is not highlighted anymore in the download dialog
Improved bookmark tab in Download Dialog

Location:
trunk/src/org/openstreetmap/josm/gui
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/BookmarkList.java

    r2334 r2344  
    1010
    1111import javax.swing.DefaultListModel;
     12import javax.swing.ImageIcon;
    1213import javax.swing.JLabel;
    1314import javax.swing.JList;
     
    2021import org.openstreetmap.josm.data.Preferences;
    2122import org.openstreetmap.josm.data.Preferences.Bookmark;
     23import org.openstreetmap.josm.tools.ImageProvider;
    2224
    2325/**
     
    8385    class BookmarkCellRenderer extends JLabel implements ListCellRenderer {
    8486
     87        private ImageIcon icon;
     88       
    8589        public BookmarkCellRenderer() {
    8690            setOpaque(true);
     91            icon = ImageProvider.get("dialogs", "bookmark");
     92            setIcon(icon);
    8793        }
    8894       
  • trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java

    r2334 r2344  
    66import java.awt.GridBagConstraints;
    77import java.awt.GridBagLayout;
     8import java.awt.Insets;
    89import java.awt.event.ActionEvent;
     10import java.awt.event.MouseAdapter;
     11import java.awt.event.MouseEvent;
    912
    1013import javax.swing.AbstractAction;
     
    1417import javax.swing.JPanel;
    1518import javax.swing.JScrollPane;
     19import javax.swing.SwingUtilities;
    1620import javax.swing.event.ListSelectionEvent;
    1721import javax.swing.event.ListSelectionListener;
     
    2125import org.openstreetmap.josm.data.Preferences;
    2226import org.openstreetmap.josm.data.Preferences.Bookmark;
     27import org.openstreetmap.josm.data.coor.CoordinateFormat;
    2328import org.openstreetmap.josm.gui.BookmarkList;
     29import org.openstreetmap.josm.gui.JMultilineLabel;
    2430import org.openstreetmap.josm.tools.ImageProvider;
    2531
    2632/**
    27  * Bookmark selector.
    28  *
    29  * Provides selection, creation and deletion of bookmarks.
    30  * Extracted from old DownloadAction.
    31  *
    32  * @author Frederik Ramm <frederik@remote.org>
     33 * DownloadAreaSelector which manages a list of "bookmarks", i.e. a list of
     34 * name download areas.
    3335 *
    3436 */
    3537public class BookmarkSelection implements DownloadSelection {
    3638
     39    /** the currently selected download area. One can add bookmarks for this
     40     * area, if not null
     41     */
    3742    private Bounds currentArea;
     43    /** the list of bookmarks */
    3844    private BookmarkList bookmarks;
    3945   
     46    /** the parent download GUI */
     47    private DownloadDialog parent;
     48   
     49    /** displays information about the current download area */
     50    private JMultilineLabel lblCurrentDownloadArea;
     51    /** the add action */
     52    private AddAction actAdd;
     53   
     54    /**
     55     * Creates the panel with the action buttons on the left
     56     *
     57     * @return the panel with the action buttons on the left
     58     */
    4059    protected JPanel buildButtonPanel() {
    4160        JPanel pnl = new JPanel();
    4261        pnl.setLayout(new GridBagLayout());
    4362        GridBagConstraints gc = new GridBagConstraints();
    44         gc.fill = GridBagConstraints.HORIZONTAL;
    45         gc.weightx = 1.0;
    46         gc.weighty = 0.0;
    47         pnl.add(new JButton(new AddAction()), gc);
    48 
    49         gc.gridy = 1;
     63//        gc.fill = GridBagConstraints.HORIZONTAL;
     64//        gc.weightx = 1.0;
     65//        gc.weighty = 0.0;
     66//        pnl.add(new JButton(actAdd = new AddAction()), gc);
     67
     68        gc.gridy = 0;
    5069        RemoveAction removeAction = new RemoveAction();
    5170        bookmarks.addListSelectionListener(removeAction);
    5271        pnl.add(new JButton(removeAction), gc);
    5372
    54         gc.gridy = 2;
     73        gc.gridy = 1;
    5574        RenameAction renameAction = new RenameAction();
    5675        bookmarks.addListSelectionListener(renameAction);
     
    6281        gc.gridy = 3;
    6382        pnl.add(new JPanel(), gc); // just a filler
     83        return pnl;
     84    }
     85   
     86    protected JPanel buildDownloadAreaAddPanel() {
     87        JPanel pnl = new JPanel();
     88        pnl.setLayout(new GridBagLayout());
     89       
     90        GridBagConstraints  gc = new GridBagConstraints();
     91        gc.anchor = GridBagConstraints.NORTHWEST;
     92        gc.fill = GridBagConstraints.BOTH;
     93        gc.weightx = 1.0;
     94        gc.weighty = 1.0;
     95        gc.insets = new Insets(5,5,5,5);
     96       
     97        pnl.add(lblCurrentDownloadArea = new JMultilineLabel(""), gc);
     98       
     99        gc.anchor = GridBagConstraints.NORTHEAST;
     100        gc.fill = GridBagConstraints.HORIZONTAL;
     101        gc.weightx = 0.0;
     102        gc.weighty = 0.0;
     103        gc.insets = new Insets(5,5,5,5);
     104        pnl.add(new JButton(actAdd = new AddAction()), gc);
    64105        return pnl;
    65106    }
     
    80121            }
    81122        });
     123        bookmarks.addMouseListener(new DoubleClickAdapter());
     124       
     125        gc.fill = GridBagConstraints.HORIZONTAL;
     126        gc.weightx = 1.0;
     127        gc.weighty = 0.0;       
     128        gc.gridwidth = 2;
     129        dlg.add(buildDownloadAreaAddPanel(),gc);
    82130               
     131        gc.gridwidth = 1;
     132        gc.gridx = 0;
     133        gc.gridy = 1;
    83134        gc.fill = GridBagConstraints.VERTICAL;
    84135        gc.weightx = 0.0;
    85136        gc.weighty = 1.0;       
    86137        dlg.add(buildButtonPanel(),gc);
    87        
     138
     139        gc.gridwidth = 1;
     140        gc.gridx = 1;
     141        gc.gridy = 1;
    88142        gc.fill = GridBagConstraints.BOTH;
    89143        gc.weightx = 1.0;
    90144        gc.weighty = 1.0;   
    91145        gc.gridx = 1;
    92         dlg.add(new JScrollPane(bookmarks), gc);       
    93     }
    94    
     146        dlg.add(new JScrollPane(bookmarks), gc);       
     147       
     148        this.parent = gui;
     149    }
     150   
     151    protected void updateDownloadAreaLabel() {
     152        if (currentArea == null) {
     153            lblCurrentDownloadArea.setText(tr("<html>There is currently no download area selected.</html>"));
     154        } else {
     155            lblCurrentDownloadArea.setText(tr("<html><strong>Current download area</strong> (minlat,minlon, maxlat, maxlon): {0}, {1}, {2}, {3}</html>",
     156                    currentArea.getMin().latToString(CoordinateFormat.DECIMAL_DEGREES),
     157                    currentArea.getMin().lonToString(CoordinateFormat.DECIMAL_DEGREES),
     158                    currentArea.getMax().latToString(CoordinateFormat.DECIMAL_DEGREES),
     159                    currentArea.getMax().lonToString(CoordinateFormat.DECIMAL_DEGREES)
     160                    )
     161            );                   
     162        }
     163    }
     164   
     165    /**
     166     * Sets the current download area
     167     *
     168     * @param area the download area.
     169     */
    95170    public void setDownloadArea(Bounds area) {
    96171        if (area == null) return;
    97172        this.currentArea = area;
    98173        bookmarks.clearSelection();
    99     }
    100    
     174        updateDownloadAreaLabel();
     175        actAdd.setEnabled(area != null);
     176    }
     177   
     178    /**
     179     * The action to add a new bookmark for the current download area.
     180     *
     181     */
    101182    class AddAction extends AbstractAction {
    102183        public AddAction() {
    103             //putValue(NAME, tr("Add"));
    104             putValue(SMALL_ICON, ImageProvider.get("dialogs", "add"));
     184            putValue(NAME, tr("Create bookmark"));
     185            putValue(SMALL_ICON, ImageProvider.get("dialogs", "bookmark-new"));
    105186            putValue(SHORT_DESCRIPTION, tr("Add a bookmark for the currently selected download area"));
    106187        }
     
    193274        }       
    194275    }
    195    
     276   
     277    class DoubleClickAdapter extends MouseAdapter {
     278        @Override
     279        public void mouseClicked(MouseEvent e) {
     280            if (!(SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2))
     281                return;
     282            int idx = bookmarks.locationToIndex(e.getPoint());
     283            if (idx < 0 || idx >= bookmarks.getModel().getSize())
     284                return;
     285            Bookmark b = (Bookmark)bookmarks.getModel().getElementAt(idx);
     286            parent.startDownload(b.getArea());           
     287        }       
     288    }   
    196289}
  • trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java

    r2340 r2344  
    5555    static private DownloadDialog instance;
    5656   
     57   
    5758    /**
    5859     * Replies the unique instance of the download dialog
     
    7576    private JCheckBox cbDownloadOsmData = new JCheckBox(tr("OpenStreetMap data"), true);
    7677    private JCheckBox cbDownloadGpxData = new JCheckBox(tr("Raw GPS data"));
     78    /** the download action and button */
     79    private DownloadAction actDownload;
     80    private SideButton btnDownload;
    7781
    7882   
     
    124128        JPanel pnl = new JPanel();
    125129        pnl.setLayout(new FlowLayout());
    126        
    127         pnl.add(new SideButton(new DownloadAction()));
     130         
     131        pnl.add(btnDownload = new SideButton(actDownload = new DownloadAction()));
     132        btnDownload.setFocusable(true);
    128133        pnl.add(new SideButton(new CancelAction()));
    129134        pnl.add(new SideButton(new ContextSensitiveHelpAction(ht("/Dialog/DownloadDialog"))));
     
    199204        }
    200205        updateSizeCheck();
     206    }
     207   
     208    /**
     209     * Invoked by
     210     * @param b
     211     */
     212    public void startDownload(Bounds b) {
     213        this.currentBounds = b;
     214        actDownload.run();
    201215    }
    202216   
     
    343357        }
    344358       
    345         public void actionPerformed(ActionEvent e) {
     359        public void run() {
    346360            if (currentBounds == null) {
    347361                JOptionPane.showMessageDialog(
     
    367381            }
    368382            setCanceled(false);
    369             setVisible(false);           
     383            setVisible(false); 
     384        }
     385       
     386        public void actionPerformed(ActionEvent e) {
     387            run();
    370388        }       
    371389    }
     
    375393        public void windowClosing(WindowEvent e) {
    376394            new CancelAction().run();
     395        }
     396
     397        @Override
     398        public void windowActivated(WindowEvent e) {
     399            btnDownload.requestFocusInWindow();
    377400        }       
    378401    }
Note: See TracChangeset for help on using the changeset viewer.