Ticket #6250: undoSelection_v2.patch
| File undoSelection_v2.patch, 10.4 KB (added by , 15 years ago) |
|---|
-
org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
131 131 pnl.add(selectButton); 132 132 BasicArrowButton selectionHistoryMenuButton = createArrowButton(selectButton); 133 133 selectionHistoryMenuButton.addActionListener(new ActionListener() { 134 @Override 134 135 public void actionPerformed(ActionEvent e) { 135 136 SelectionHistoryPopup.launch(selectButton, model.getSelectionHistory()); 136 137 } … … 142 143 143 144 BasicArrowButton searchHistoryMenuButton = createArrowButton(searchButton); 144 145 searchHistoryMenuButton.addActionListener(new ActionListener() { 146 @Override 145 147 public void actionPerformed(ActionEvent e) { 146 148 SearchPopupMenu.launch(searchButton); 147 149 } … … 282 284 setTitle(model.getJOSMSelectionSummary()); 283 285 } 284 286 287 @Override 285 288 public void contentsChanged(ListDataEvent e) { 286 289 updateTitle(); 287 290 } 288 291 292 @Override 289 293 public void intervalAdded(ListDataEvent e) { 290 294 updateTitle(); 291 295 } 292 296 297 @Override 293 298 public void intervalRemoved(ListDataEvent e) { 294 299 updateTitle(); 295 300 } … … 306 311 updateEnabledState(); 307 312 } 308 313 314 @Override 309 315 public void actionPerformed(ActionEvent e) { 310 316 if (!isEnabled()) return; 311 317 org.openstreetmap.josm.actions.search.SearchAction.search(); … … 315 321 setEnabled(Main.main != null && Main.main.getEditLayer() != null); 316 322 } 317 323 324 @Override 318 325 public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) { 319 326 updateEnabledState(); 320 327 } … … 332 339 updateEnabledState(); 333 340 } 334 341 342 @Override 335 343 public void actionPerformed(ActionEvent e) { 336 344 Collection<OsmPrimitive> sel = model.getSelected(); 337 345 if (sel.isEmpty())return; … … 343 351 setEnabled(!model.getSelected().isEmpty()); 344 352 } 345 353 354 @Override 346 355 public void valueChanged(ListSelectionEvent e) { 347 356 updateEnabledState(); 348 357 } … … 361 370 updateEnabledState(); 362 371 } 363 372 373 @Override 364 374 public void actionPerformed(ActionEvent e) { 365 375 AutoScaleAction.autoScale("selection"); 366 376 } … … 369 379 setEnabled(model.getSize() > 0); 370 380 } 371 381 382 @Override 372 383 public void contentsChanged(ListDataEvent e) { 373 384 updateEnabledState(); 374 385 } 375 386 387 @Override 376 388 public void intervalAdded(ListDataEvent e) { 377 389 updateEnabledState(); 378 390 } 379 391 392 @Override 380 393 public void intervalRemoved(ListDataEvent e) { 381 394 updateEnabledState(); 382 395 } … … 395 408 updateEnabledState(); 396 409 } 397 410 411 @Override 398 412 public void actionPerformed(ActionEvent e) { 399 413 BoundingXYVisitor box = new BoundingXYVisitor(); 400 414 Collection<OsmPrimitive> sel = model.getSelected(); … … 410 424 setEnabled(!model.getSelected().isEmpty()); 411 425 } 412 426 427 @Override 413 428 public void valueChanged(ListSelectionEvent e) { 414 429 updateEnabledState(); 415 430 } … … 455 470 updateEnabledState(); 456 471 } 457 472 473 @Override 458 474 public void actionPerformed(ActionEvent e) { 459 475 Relation relation = (Relation)model.getSelected().toArray()[0]; 460 476 Main.map.relationListDialog.selectRelation(relation); … … 465 481 setEnabled(sel.length == 1 && sel[0] instanceof Relation); 466 482 } 467 483 484 @Override 468 485 public void valueChanged(ListSelectionEvent e) { 469 486 updateEnabledState(); 470 487 } … … 481 498 482 499 private static final int SELECTION_HISTORY_SIZE = 10; 483 500 484 private final LinkedList<Collection<? extends OsmPrimitive>> history = new LinkedList<Collection<? extends OsmPrimitive>>(); 501 // Variable to store history from currentDataSet() 502 private LinkedList<Collection<? extends OsmPrimitive>> history; 485 503 private final List<OsmPrimitive> selection = new ArrayList<OsmPrimitive>(); 486 504 private DefaultListSelectionModel selectionModel; 487 505 … … 552 570 history.clear(); 553 571 } 554 572 573 @Override 555 574 public Object getElementAt(int index) { 556 575 return selection.get(index); 557 576 } 558 577 578 @Override 559 579 public int getSize() { 560 580 return selection.size(); 561 581 } … … 686 706 /* ------------------------------------------------------------------------ */ 687 707 /* interface EditLayerChangeListener */ 688 708 /* ------------------------------------------------------------------------ */ 709 @Override 689 710 public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) { 690 711 if (newLayer == null) { 691 712 setJOSMSelection(null); … … 697 718 /* ------------------------------------------------------------------------ */ 698 719 /* interface SelectionChangeListener */ 699 720 /* ------------------------------------------------------------------------ */ 721 @Override 700 722 public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) { 701 723 setJOSMSelection(newSelection); 702 724 } … … 704 726 /* ------------------------------------------------------------------------ */ 705 727 /* interface DataSetListener */ 706 728 /* ------------------------------------------------------------------------ */ 729 @Override 707 730 public void dataChanged(DataChangedEvent event) { 731 history = event.getDataset().getSelectionHistory(); 708 732 // refresh the whole list 709 733 fireContentsChanged(this, 0, getSize()); 710 734 } 711 735 736 @Override 712 737 public void nodeMoved(NodeMovedEvent event) { 713 738 // may influence the display name of primitives, update the data 714 739 update(event.getPrimitives()); 715 740 } 716 741 742 @Override 717 743 public void otherDatasetChange(AbstractDatasetChangedEvent event) { 718 744 // may influence the display name of primitives, update the data 719 745 update(event.getPrimitives()); 720 746 } 721 747 748 @Override 722 749 public void relationMembersChanged(RelationMembersChangedEvent event) { 723 750 // may influence the display name of primitives, update the data 724 751 update(event.getPrimitives()); 725 752 } 726 753 754 @Override 727 755 public void tagsChanged(TagsChangedEvent event) { 728 756 // may influence the display name of primitives, update the data 729 757 update(event.getPrimitives()); 730 758 } 731 759 760 @Override 732 761 public void wayNodesChanged(WayNodesChangedEvent event) { 733 762 // may influence the display name of primitives, update the data 734 763 update(event.getPrimitives()); 735 764 } 736 765 766 @Override 737 767 public void primtivesAdded(PrimitivesAddedEvent event) {/* ignored - handled by SelectionChangeListener */} 768 @Override 738 769 public void primtivesRemoved(PrimitivesRemovedEvent event) {/* ignored - handled by SelectionChangeListener*/} 739 770 } 740 771 … … 752 783 addActionListener(this); 753 784 } 754 785 786 @Override 755 787 public void actionPerformed(ActionEvent e) { 756 788 org.openstreetmap.josm.actions.search.SearchAction.searchWithoutHistory(s); 757 789 } … … 827 859 addActionListener(this); 828 860 } 829 861 862 @Override 830 863 public void actionPerformed(ActionEvent e) { 831 864 Main.main.getCurrentDataSet().setSelected(sel); 832 865 } … … 871 904 return ret; 872 905 } 873 906 907 @Override 874 908 public void actionPerformed(ActionEvent e) { 875 909 if (!isEnabled()) 876 910 return; … … 887 921 setEnabled(!model.getSelectedRelationsWithIncompleteMembers().isEmpty()); 888 922 } 889 923 924 @Override 890 925 public void valueChanged(ListSelectionEvent e) { 891 926 updateEnabledState(); 892 927 } … … 910 945 setEnabled(!model.getSelected().isEmpty()); 911 946 } 912 947 948 @Override 913 949 public void valueChanged(ListSelectionEvent e) { 914 950 updateEnabledState(); 915 951 } … … 953 989 return -1; 954 990 } 955 991 992 @Override 956 993 public int compare(OsmPrimitive a, OsmPrimitive b) { 957 994 if (a.getType().equals(b.getType())) 958 995 return compareName(a, b); … … 981 1018 return -1; 982 1019 } 983 1020 1021 @Override 984 1022 public int compare(OsmPrimitive a, OsmPrimitive b) { 985 1023 if (a.getType().equals(b.getType())) 986 1024 return compareId(a, b); -
org/openstreetmap/josm/data/osm/DataSet.java
95 95 96 96 private static class IdHash implements Hash<PrimitiveId,OsmPrimitive> { 97 97 98 @Override 98 99 public int getHashCode(PrimitiveId k) { 99 100 return (int)k.getUniqueId() ^ k.getType().hashCode(); 100 101 } 101 102 103 @Override 102 104 public boolean equals(PrimitiveId key, OsmPrimitive value) { 103 105 if (key == null || value == null) return false; 104 106 return key.getUniqueId() == value.getUniqueId() && key.getType() == value.getType(); … … 133 135 } 134 136 135 137 /** 138 * History of selections - shared by plugins and SelectionListDialog 139 */ 140 private final LinkedList<Collection<? extends OsmPrimitive>> selectionHistory = new LinkedList<Collection<? extends OsmPrimitive>>(); 141 142 /** 143 * Gets history of selections 144 */ 145 public LinkedList<Collection<? extends OsmPrimitive>> getSelectionHistory() { 146 return selectionHistory; 147 } 148 149 /** 136 150 * Maintain a list of used tags for autocompletion 137 151 */ 138 152 private AutoCompletionManager autocomplete;
