Ticket #6856: patch.diff

File patch.diff, 13.2 KB (added by Don-vip, 14 years ago)
  • src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java

     
    2020import java.util.concurrent.Future;
    2121
    2222import javax.swing.AbstractAction;
     23import javax.swing.Action;
    2324import javax.swing.DefaultListSelectionModel;
    2425import javax.swing.JCheckBox;
    2526import javax.swing.JList;
     27import javax.swing.JMenuItem;
    2628import javax.swing.JPanel;
    27 import javax.swing.JPopupMenu;
    2829import javax.swing.JScrollPane;
    2930import javax.swing.ListSelectionModel;
    3031import javax.swing.SwingUtilities;
     
    5051import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetsInActiveDataLayerListModel;
    5152import org.openstreetmap.josm.gui.help.HelpUtil;
    5253import org.openstreetmap.josm.gui.io.CloseChangesetTask;
     54import org.openstreetmap.josm.gui.widgets.ListPopupMenu;
    5355import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
    5456import org.openstreetmap.josm.tools.BugReportExceptionHandler;
    5557import org.openstreetmap.josm.tools.ImageProvider;
     
    8284    private ShowChangesetInfoAction showChangesetInfoAction;
    8385    private CloseOpenChangesetsAction closeChangesetAction;
    8486    private LaunchChangesetManagerAction launchChangesetManagerAction;
     87   
     88    private ChangesetDialogPopup popupMenu;
    8589
    8690    protected void buildChangesetsLists() {
    8791        DefaultListSelectionModel selectionModel = new DefaultListSelectionModel();
     
    187191        // -- select objects action
    188192        selectObjectsAction = new SelectObjectsAction();
    189193        cbInSelectionOnly.addItemListener(selectObjectsAction);
    190         lstInActiveDataLayer.getSelectionModel().addListSelectionListener(selectObjectsAction);
    191         lstInSelection.getSelectionModel().addListSelectionListener(selectObjectsAction);
    192194
    193195        // -- read changesets action
    194196        readChangesetAction = new ReadChangesetsAction();
    195197        cbInSelectionOnly.addItemListener(readChangesetAction);
    196         lstInActiveDataLayer.getSelectionModel().addListSelectionListener(readChangesetAction);
    197         lstInSelection.getSelectionModel().addListSelectionListener(readChangesetAction);
    198198
    199199        // -- close changesets action
    200200        closeChangesetAction = new CloseOpenChangesetsAction();
    201201        cbInSelectionOnly.addItemListener(closeChangesetAction);
    202         lstInActiveDataLayer.getSelectionModel().addListSelectionListener(closeChangesetAction);
    203         lstInSelection.getSelectionModel().addListSelectionListener(closeChangesetAction);
    204202
    205203        // -- show info action
    206204        showChangesetInfoAction = new ShowChangesetInfoAction();
    207205        cbInSelectionOnly.addItemListener(showChangesetInfoAction);
    208         lstInActiveDataLayer.getSelectionModel().addListSelectionListener(showChangesetInfoAction);
    209         lstInSelection.getSelectionModel().addListSelectionListener(showChangesetInfoAction);
    210206
    211207        // -- launch changeset manager action
    212208        launchChangesetManagerAction = new LaunchChangesetManagerAction();
    213209        cbInSelectionOnly.addItemListener(launchChangesetManagerAction);
    214         lstInActiveDataLayer.getSelectionModel().addListSelectionListener(launchChangesetManagerAction);
    215         lstInSelection.getSelectionModel().addListSelectionListener(launchChangesetManagerAction);
     210       
     211        popupMenu = new ChangesetDialogPopup(lstInActiveDataLayer, lstInSelection);
    216212
    217213        createLayout(pnl, false, Arrays.asList(new SideButton[] {
    218214            new SideButton(selectObjectsAction, false),
     
    535531                    lst.getSelectionModel().addSelectionInterval(idx, idx);
    536532                }
    537533            }
    538             ChangesetDialogPopup popup = new ChangesetDialogPopup();
    539             popup.show(lst, evt.getX(), evt.getY());
    540 
     534            popupMenu.show(lst, evt.getX(), evt.getY());
    541535        }
    542536    }
    543537
    544     class ChangesetDialogPopup extends JPopupMenu {
    545         public ChangesetDialogPopup() {
     538    class ChangesetDialogPopup extends ListPopupMenu {
     539        public ChangesetDialogPopup(JList ... lists) {
     540            super(lists);
    546541            add(selectObjectsAction);
    547542            addSeparator();
    548543            add(readChangesetAction);
     
    551546            add(showChangesetInfoAction);
    552547        }
    553548    }
     549
     550    public void addPopupMenuSeparator() {
     551        popupMenu.addSeparator();
     552    }
     553
     554    public JMenuItem addPopupMenuAction(Action a) {
     555        return popupMenu.add(a);
     556    }
    554557}
  • src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java

     
    44import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
    55import static org.openstreetmap.josm.tools.I18n.tr;
    66
    7 import java.awt.BorderLayout;
    87import java.awt.Point;
    98import java.awt.event.ActionEvent;
    109import java.awt.event.KeyEvent;
     
    2120
    2221import javax.swing.AbstractAction;
    2322import javax.swing.AbstractListModel;
     23import javax.swing.Action;
    2424import javax.swing.DefaultListSelectionModel;
    2525import javax.swing.JList;
    26 import javax.swing.JPopupMenu;
     26import javax.swing.JMenuItem;
    2727import javax.swing.KeyStroke;
    2828import javax.swing.ListSelectionModel;
    2929import javax.swing.SwingUtilities;
     
    5555import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
    5656import org.openstreetmap.josm.gui.layer.Layer;
    5757import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     58import org.openstreetmap.josm.gui.widgets.ListPopupMenu;
    5859import org.openstreetmap.josm.tools.ImageProvider;
    5960import org.openstreetmap.josm.tools.Shortcut;
    6061
     
    141142        displaylist.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0), "deleteRelation");
    142143        displaylist.getActionMap().put("deleteRelation", deleteAction);
    143144
    144         popupMenu = new RelationDialogPopupMenu();
     145        popupMenu = new RelationDialogPopupMenu(displaylist);
    145146    }
    146147
    147148    @Override public void showNotify() {
     
    776777        }
    777778    }
    778779
    779     class RelationDialogPopupMenu extends JPopupMenu {
    780         protected void build() {
     780    class RelationDialogPopupMenu extends ListPopupMenu {
     781
     782        public RelationDialogPopupMenu(JList list) {
     783            super(list);
     784           
    781785            // -- download members action
    782786            //
    783             DownloadMembersAction downloadMembersAction = new DownloadMembersAction();
    784             displaylist.addListSelectionListener(downloadMembersAction);
    785             add(downloadMembersAction);
     787            add(new DownloadMembersAction());
    786788
    787789            // -- download incomplete members action
    788790            //
    789             DownloadSelectedIncompleteMembersAction downloadSelectedIncompleteMembers = new DownloadSelectedIncompleteMembersAction();
    790             displaylist.addListSelectionListener(downloadSelectedIncompleteMembers);
    791             add(downloadSelectedIncompleteMembers);
     791            add(new DownloadSelectedIncompleteMembersAction());
    792792
    793793            addSeparator();
    794794
    795795            // -- select members action
    796796            //
    797             SelectMembersAction selectMembersAction = new SelectMembersAction(false);
    798             displaylist.addListSelectionListener(selectMembersAction);
    799             add(selectMembersAction);
    800 
    801             selectMembersAction = new SelectMembersAction(true);
    802             displaylist.addListSelectionListener(selectMembersAction);
    803             add(selectMembersAction);
     797            add(new SelectMembersAction(false));
     798            add(new SelectMembersAction(true));
    804799
    805800            // -- select action
    806801            //
    807             SelectAction selectAction = new SelectAction(false);
    808             displaylist.addListSelectionListener(selectAction);
    809             add(selectAction);
    810 
    811             selectAction = new SelectAction(true);
    812             displaylist.addListSelectionListener(selectAction);
    813             add(selectAction);
     802            add(new SelectAction(false));
     803            add(new SelectAction(true));
    814804        }
     805    }
    815806
    816         public RelationDialogPopupMenu() {
    817             build();
    818         }
     807    public void addPopupMenuSeparator() {
     808        popupMenu.addSeparator();
     809    }
     810
     811    public JMenuItem addPopupMenuAction(Action a) {
     812        return popupMenu.add(a);
    819813    }
    820814
    821815    /* ---------------------------------------------------------------------------------- */
  • src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java

     
    2323
    2424import javax.swing.AbstractAction;
    2525import javax.swing.AbstractListModel;
     26import javax.swing.Action;
    2627import javax.swing.DefaultListSelectionModel;
    2728import javax.swing.JList;
    2829import javax.swing.JMenuItem;
     
    6667import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
    6768import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
    6869import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     70import org.openstreetmap.josm.gui.widgets.ListPopupMenu;
    6971import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
    7072import org.openstreetmap.josm.tools.ImageProvider;
    7173import org.openstreetmap.josm.tools.Shortcut;
     
    8688    private EditRelationSelection actEditRelationSelection;
    8789    private DownloadSelectedIncompleteMembersAction actDownloadSelectedIncompleteMembers;
    8890
     91    private SelectionPopup popupMenu;
     92
    8993    /**
    9094     * Builds the content panel for this dialog
    9195     */
     
    133137        model.addListDataListener(actZoomToJOSMSelection);
    134138
    135139        actZoomToListSelection = new ZoomToListSelection();
    136         lstPrimitives.getSelectionModel().addListSelectionListener(actZoomToListSelection);
    137 
    138140        actSetRelationSelection = new SetRelationSelection();
    139         lstPrimitives.getSelectionModel().addListSelectionListener(actSetRelationSelection);
    140 
    141141        actEditRelationSelection = new EditRelationSelection();
    142         lstPrimitives.getSelectionModel().addListSelectionListener(actEditRelationSelection);
    143 
    144142        actDownloadSelectedIncompleteMembers = new DownloadSelectedIncompleteMembersAction();
    145         lstPrimitives.getSelectionModel().addListSelectionListener(actDownloadSelectedIncompleteMembers);
    146143
    147144        lstPrimitives.addMouseListener(new SelectionPopupMenuLauncher());
    148145        lstPrimitives.addMouseListener(new DblClickHandler());
     146       
     147        popupMenu = new SelectionPopup(lstPrimitives);
    149148    }
    150149
    151150    @Override
     
    189188     * The popup menu launcher
    190189     */
    191190    class SelectionPopupMenuLauncher extends PopupMenuLauncher {
    192         private SelectionPopup popup = new SelectionPopup();
    193191
    194192        @Override
    195193        public void launch(MouseEvent evt) {
     
    198196                if (idx < 0) return;
    199197                model.setSelected(Collections.singleton((OsmPrimitive)model.getElementAt(idx)));
    200198            }
    201             popup.show(lstPrimitives, evt.getX(), evt.getY());
     199            popupMenu.show(lstPrimitives, evt.getX(), evt.getY());
    202200        }
    203201    }
    204202
    205203    /**
    206204     * The popup menu for the selection list
    207205     */
    208     class SelectionPopup extends JPopupMenu {
    209         public SelectionPopup() {
     206    class SelectionPopup extends ListPopupMenu {
     207        public SelectionPopup(JList list) {
     208            super(list);
    210209            add(actZoomToJOSMSelection);
    211210            add(actZoomToListSelection);
    212211            addSeparator();
     
    217216        }
    218217    }
    219218
     219    public void addPopupMenuSeparator() {
     220        popupMenu.addSeparator();
     221    }
     222
     223    public JMenuItem addPopupMenuAction(Action a) {
     224        return popupMenu.add(a);
     225    }
     226
    220227    /**
    221228     * Updates the dialog title with a summary of the current JOSM selection
    222229     */
  • src/org/openstreetmap/josm/gui/widgets/ListPopupMenu.java

     
     1// License: GPL. For details, see LICENSE file.
     2package org.openstreetmap.josm.gui.widgets;
     3
     4import javax.swing.Action;
     5import javax.swing.JList;
     6import javax.swing.JMenuItem;
     7import javax.swing.JPopupMenu;
     8import javax.swing.event.ListSelectionListener;
     9
     10/**
     11 * @author Vincent
     12 *
     13 */
     14public class ListPopupMenu extends JPopupMenu {
     15   
     16    private JList[] lists;
     17
     18    /**
     19     *
     20     */
     21    public ListPopupMenu(JList ... lists) {
     22        this.lists = lists;
     23    }
     24
     25    /* (non-Javadoc)
     26     * @see javax.swing.JPopupMenu#add(javax.swing.Action)
     27     */
     28    @Override
     29    public JMenuItem add(Action a) {
     30        if (lists != null && a instanceof ListSelectionListener) {
     31            for (JList list : lists) {
     32                list.addListSelectionListener((ListSelectionListener) a);
     33            }
     34        }
     35        return super.add(a);
     36    }
     37}