Ticket #6856: patch.diff
| File patch.diff, 13.2 KB (added by , 14 years ago) |
|---|
-
src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
20 20 import java.util.concurrent.Future; 21 21 22 22 import javax.swing.AbstractAction; 23 import javax.swing.Action; 23 24 import javax.swing.DefaultListSelectionModel; 24 25 import javax.swing.JCheckBox; 25 26 import javax.swing.JList; 27 import javax.swing.JMenuItem; 26 28 import javax.swing.JPanel; 27 import javax.swing.JPopupMenu;28 29 import javax.swing.JScrollPane; 29 30 import javax.swing.ListSelectionModel; 30 31 import javax.swing.SwingUtilities; … … 50 51 import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetsInActiveDataLayerListModel; 51 52 import org.openstreetmap.josm.gui.help.HelpUtil; 52 53 import org.openstreetmap.josm.gui.io.CloseChangesetTask; 54 import org.openstreetmap.josm.gui.widgets.ListPopupMenu; 53 55 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher; 54 56 import org.openstreetmap.josm.tools.BugReportExceptionHandler; 55 57 import org.openstreetmap.josm.tools.ImageProvider; … … 82 84 private ShowChangesetInfoAction showChangesetInfoAction; 83 85 private CloseOpenChangesetsAction closeChangesetAction; 84 86 private LaunchChangesetManagerAction launchChangesetManagerAction; 87 88 private ChangesetDialogPopup popupMenu; 85 89 86 90 protected void buildChangesetsLists() { 87 91 DefaultListSelectionModel selectionModel = new DefaultListSelectionModel(); … … 187 191 // -- select objects action 188 192 selectObjectsAction = new SelectObjectsAction(); 189 193 cbInSelectionOnly.addItemListener(selectObjectsAction); 190 lstInActiveDataLayer.getSelectionModel().addListSelectionListener(selectObjectsAction);191 lstInSelection.getSelectionModel().addListSelectionListener(selectObjectsAction);192 194 193 195 // -- read changesets action 194 196 readChangesetAction = new ReadChangesetsAction(); 195 197 cbInSelectionOnly.addItemListener(readChangesetAction); 196 lstInActiveDataLayer.getSelectionModel().addListSelectionListener(readChangesetAction);197 lstInSelection.getSelectionModel().addListSelectionListener(readChangesetAction);198 198 199 199 // -- close changesets action 200 200 closeChangesetAction = new CloseOpenChangesetsAction(); 201 201 cbInSelectionOnly.addItemListener(closeChangesetAction); 202 lstInActiveDataLayer.getSelectionModel().addListSelectionListener(closeChangesetAction);203 lstInSelection.getSelectionModel().addListSelectionListener(closeChangesetAction);204 202 205 203 // -- show info action 206 204 showChangesetInfoAction = new ShowChangesetInfoAction(); 207 205 cbInSelectionOnly.addItemListener(showChangesetInfoAction); 208 lstInActiveDataLayer.getSelectionModel().addListSelectionListener(showChangesetInfoAction);209 lstInSelection.getSelectionModel().addListSelectionListener(showChangesetInfoAction);210 206 211 207 // -- launch changeset manager action 212 208 launchChangesetManagerAction = new LaunchChangesetManagerAction(); 213 209 cbInSelectionOnly.addItemListener(launchChangesetManagerAction); 214 lstInActiveDataLayer.getSelectionModel().addListSelectionListener(launchChangesetManagerAction);215 lstInSelection.getSelectionModel().addListSelectionListener(launchChangesetManagerAction);210 211 popupMenu = new ChangesetDialogPopup(lstInActiveDataLayer, lstInSelection); 216 212 217 213 createLayout(pnl, false, Arrays.asList(new SideButton[] { 218 214 new SideButton(selectObjectsAction, false), … … 535 531 lst.getSelectionModel().addSelectionInterval(idx, idx); 536 532 } 537 533 } 538 ChangesetDialogPopup popup = new ChangesetDialogPopup(); 539 popup.show(lst, evt.getX(), evt.getY()); 540 534 popupMenu.show(lst, evt.getX(), evt.getY()); 541 535 } 542 536 } 543 537 544 class ChangesetDialogPopup extends JPopupMenu { 545 public ChangesetDialogPopup() { 538 class ChangesetDialogPopup extends ListPopupMenu { 539 public ChangesetDialogPopup(JList ... lists) { 540 super(lists); 546 541 add(selectObjectsAction); 547 542 addSeparator(); 548 543 add(readChangesetAction); … … 551 546 add(showChangesetInfoAction); 552 547 } 553 548 } 549 550 public void addPopupMenuSeparator() { 551 popupMenu.addSeparator(); 552 } 553 554 public JMenuItem addPopupMenuAction(Action a) { 555 return popupMenu.add(a); 556 } 554 557 } -
src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
4 4 import static org.openstreetmap.josm.gui.help.HelpUtil.ht; 5 5 import static org.openstreetmap.josm.tools.I18n.tr; 6 6 7 import java.awt.BorderLayout;8 7 import java.awt.Point; 9 8 import java.awt.event.ActionEvent; 10 9 import java.awt.event.KeyEvent; … … 21 20 22 21 import javax.swing.AbstractAction; 23 22 import javax.swing.AbstractListModel; 23 import javax.swing.Action; 24 24 import javax.swing.DefaultListSelectionModel; 25 25 import javax.swing.JList; 26 import javax.swing.J PopupMenu;26 import javax.swing.JMenuItem; 27 27 import javax.swing.KeyStroke; 28 28 import javax.swing.ListSelectionModel; 29 29 import javax.swing.SwingUtilities; … … 55 55 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor; 56 56 import org.openstreetmap.josm.gui.layer.Layer; 57 57 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 58 import org.openstreetmap.josm.gui.widgets.ListPopupMenu; 58 59 import org.openstreetmap.josm.tools.ImageProvider; 59 60 import org.openstreetmap.josm.tools.Shortcut; 60 61 … … 141 142 displaylist.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0), "deleteRelation"); 142 143 displaylist.getActionMap().put("deleteRelation", deleteAction); 143 144 144 popupMenu = new RelationDialogPopupMenu( );145 popupMenu = new RelationDialogPopupMenu(displaylist); 145 146 } 146 147 147 148 @Override public void showNotify() { … … 776 777 } 777 778 } 778 779 779 class RelationDialogPopupMenu extends JPopupMenu { 780 protected void build() { 780 class RelationDialogPopupMenu extends ListPopupMenu { 781 782 public RelationDialogPopupMenu(JList list) { 783 super(list); 784 781 785 // -- download members action 782 786 // 783 DownloadMembersAction downloadMembersAction = new DownloadMembersAction(); 784 displaylist.addListSelectionListener(downloadMembersAction); 785 add(downloadMembersAction); 787 add(new DownloadMembersAction()); 786 788 787 789 // -- download incomplete members action 788 790 // 789 DownloadSelectedIncompleteMembersAction downloadSelectedIncompleteMembers = new DownloadSelectedIncompleteMembersAction(); 790 displaylist.addListSelectionListener(downloadSelectedIncompleteMembers); 791 add(downloadSelectedIncompleteMembers); 791 add(new DownloadSelectedIncompleteMembersAction()); 792 792 793 793 addSeparator(); 794 794 795 795 // -- select members action 796 796 // 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)); 804 799 805 800 // -- select action 806 801 // 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)); 814 804 } 805 } 815 806 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); 819 813 } 820 814 821 815 /* ---------------------------------------------------------------------------------- */ -
src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
23 23 24 24 import javax.swing.AbstractAction; 25 25 import javax.swing.AbstractListModel; 26 import javax.swing.Action; 26 27 import javax.swing.DefaultListSelectionModel; 27 28 import javax.swing.JList; 28 29 import javax.swing.JMenuItem; … … 66 67 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask; 67 68 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor; 68 69 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 70 import org.openstreetmap.josm.gui.widgets.ListPopupMenu; 69 71 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher; 70 72 import org.openstreetmap.josm.tools.ImageProvider; 71 73 import org.openstreetmap.josm.tools.Shortcut; … … 86 88 private EditRelationSelection actEditRelationSelection; 87 89 private DownloadSelectedIncompleteMembersAction actDownloadSelectedIncompleteMembers; 88 90 91 private SelectionPopup popupMenu; 92 89 93 /** 90 94 * Builds the content panel for this dialog 91 95 */ … … 133 137 model.addListDataListener(actZoomToJOSMSelection); 134 138 135 139 actZoomToListSelection = new ZoomToListSelection(); 136 lstPrimitives.getSelectionModel().addListSelectionListener(actZoomToListSelection);137 138 140 actSetRelationSelection = new SetRelationSelection(); 139 lstPrimitives.getSelectionModel().addListSelectionListener(actSetRelationSelection);140 141 141 actEditRelationSelection = new EditRelationSelection(); 142 lstPrimitives.getSelectionModel().addListSelectionListener(actEditRelationSelection);143 144 142 actDownloadSelectedIncompleteMembers = new DownloadSelectedIncompleteMembersAction(); 145 lstPrimitives.getSelectionModel().addListSelectionListener(actDownloadSelectedIncompleteMembers);146 143 147 144 lstPrimitives.addMouseListener(new SelectionPopupMenuLauncher()); 148 145 lstPrimitives.addMouseListener(new DblClickHandler()); 146 147 popupMenu = new SelectionPopup(lstPrimitives); 149 148 } 150 149 151 150 @Override … … 189 188 * The popup menu launcher 190 189 */ 191 190 class SelectionPopupMenuLauncher extends PopupMenuLauncher { 192 private SelectionPopup popup = new SelectionPopup();193 191 194 192 @Override 195 193 public void launch(MouseEvent evt) { … … 198 196 if (idx < 0) return; 199 197 model.setSelected(Collections.singleton((OsmPrimitive)model.getElementAt(idx))); 200 198 } 201 popup .show(lstPrimitives, evt.getX(), evt.getY());199 popupMenu.show(lstPrimitives, evt.getX(), evt.getY()); 202 200 } 203 201 } 204 202 205 203 /** 206 204 * The popup menu for the selection list 207 205 */ 208 class SelectionPopup extends JPopupMenu { 209 public SelectionPopup() { 206 class SelectionPopup extends ListPopupMenu { 207 public SelectionPopup(JList list) { 208 super(list); 210 209 add(actZoomToJOSMSelection); 211 210 add(actZoomToListSelection); 212 211 addSeparator(); … … 217 216 } 218 217 } 219 218 219 public void addPopupMenuSeparator() { 220 popupMenu.addSeparator(); 221 } 222 223 public JMenuItem addPopupMenuAction(Action a) { 224 return popupMenu.add(a); 225 } 226 220 227 /** 221 228 * Updates the dialog title with a summary of the current JOSM selection 222 229 */ -
src/org/openstreetmap/josm/gui/widgets/ListPopupMenu.java
1 // License: GPL. For details, see LICENSE file. 2 package org.openstreetmap.josm.gui.widgets; 3 4 import javax.swing.Action; 5 import javax.swing.JList; 6 import javax.swing.JMenuItem; 7 import javax.swing.JPopupMenu; 8 import javax.swing.event.ListSelectionListener; 9 10 /** 11 * @author Vincent 12 * 13 */ 14 public 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 }
