Ticket #6250: undoSelection_v2.patch

File undoSelection_v2.patch, 10.4 KB (added by akks, 15 years ago)

patch for core - adds getSelectionHistory to DataSet

  • org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java

     
    131131        pnl.add(selectButton);
    132132        BasicArrowButton selectionHistoryMenuButton = createArrowButton(selectButton);
    133133        selectionHistoryMenuButton.addActionListener(new ActionListener() {
     134            @Override
    134135            public void actionPerformed(ActionEvent e) {
    135136                SelectionHistoryPopup.launch(selectButton, model.getSelectionHistory());
    136137            }
     
    142143
    143144        BasicArrowButton searchHistoryMenuButton = createArrowButton(searchButton);
    144145        searchHistoryMenuButton.addActionListener(new ActionListener() {
     146            @Override
    145147            public void actionPerformed(ActionEvent e) {
    146148                SearchPopupMenu.launch(searchButton);
    147149            }
     
    282284            setTitle(model.getJOSMSelectionSummary());
    283285        }
    284286
     287        @Override
    285288        public void contentsChanged(ListDataEvent e) {
    286289            updateTitle();
    287290        }
    288291
     292        @Override
    289293        public void intervalAdded(ListDataEvent e) {
    290294            updateTitle();
    291295        }
    292296
     297        @Override
    293298        public void intervalRemoved(ListDataEvent e) {
    294299            updateTitle();
    295300        }
     
    306311            updateEnabledState();
    307312        }
    308313
     314        @Override
    309315        public void actionPerformed(ActionEvent e) {
    310316            if (!isEnabled()) return;
    311317            org.openstreetmap.josm.actions.search.SearchAction.search();
     
    315321            setEnabled(Main.main != null && Main.main.getEditLayer() != null);
    316322        }
    317323
     324        @Override
    318325        public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
    319326            updateEnabledState();
    320327        }
     
    332339            updateEnabledState();
    333340        }
    334341
     342        @Override
    335343        public void actionPerformed(ActionEvent e) {
    336344            Collection<OsmPrimitive> sel = model.getSelected();
    337345            if (sel.isEmpty())return;
     
    343351            setEnabled(!model.getSelected().isEmpty());
    344352        }
    345353
     354        @Override
    346355        public void valueChanged(ListSelectionEvent e) {
    347356            updateEnabledState();
    348357        }
     
    361370            updateEnabledState();
    362371        }
    363372
     373        @Override
    364374        public void actionPerformed(ActionEvent e) {
    365375            AutoScaleAction.autoScale("selection");
    366376        }
     
    369379            setEnabled(model.getSize() > 0);
    370380        }
    371381
     382        @Override
    372383        public void contentsChanged(ListDataEvent e) {
    373384            updateEnabledState();
    374385        }
    375386
     387        @Override
    376388        public void intervalAdded(ListDataEvent e) {
    377389            updateEnabledState();
    378390        }
    379391
     392        @Override
    380393        public void intervalRemoved(ListDataEvent e) {
    381394            updateEnabledState();
    382395        }
     
    395408            updateEnabledState();
    396409        }
    397410
     411        @Override
    398412        public void actionPerformed(ActionEvent e) {
    399413            BoundingXYVisitor box = new BoundingXYVisitor();
    400414            Collection<OsmPrimitive> sel = model.getSelected();
     
    410424            setEnabled(!model.getSelected().isEmpty());
    411425        }
    412426
     427        @Override
    413428        public void valueChanged(ListSelectionEvent e) {
    414429            updateEnabledState();
    415430        }
     
    455470            updateEnabledState();
    456471        }
    457472
     473        @Override
    458474        public void actionPerformed(ActionEvent e) {
    459475            Relation relation = (Relation)model.getSelected().toArray()[0];
    460476            Main.map.relationListDialog.selectRelation(relation);
     
    465481            setEnabled(sel.length == 1 && sel[0] instanceof Relation);
    466482        }
    467483
     484        @Override
    468485        public void valueChanged(ListSelectionEvent e) {
    469486            updateEnabledState();
    470487        }
     
    481498
    482499        private static final int SELECTION_HISTORY_SIZE = 10;
    483500
    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;
    485503        private final List<OsmPrimitive> selection = new ArrayList<OsmPrimitive>();
    486504        private DefaultListSelectionModel selectionModel;
    487505
     
    552570            history.clear();
    553571        }
    554572
     573        @Override
    555574        public Object getElementAt(int index) {
    556575            return selection.get(index);
    557576        }
    558577
     578        @Override
    559579        public int getSize() {
    560580            return selection.size();
    561581        }
     
    686706        /* ------------------------------------------------------------------------ */
    687707        /* interface EditLayerChangeListener                                        */
    688708        /* ------------------------------------------------------------------------ */
     709        @Override
    689710        public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
    690711            if (newLayer == null) {
    691712                setJOSMSelection(null);
     
    697718        /* ------------------------------------------------------------------------ */
    698719        /* interface SelectionChangeListener                                        */
    699720        /* ------------------------------------------------------------------------ */
     721        @Override
    700722        public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
    701723            setJOSMSelection(newSelection);
    702724        }
     
    704726        /* ------------------------------------------------------------------------ */
    705727        /* interface DataSetListener                                                */
    706728        /* ------------------------------------------------------------------------ */
     729        @Override
    707730        public void dataChanged(DataChangedEvent event) {
     731            history = event.getDataset().getSelectionHistory();
    708732            // refresh the whole list
    709733            fireContentsChanged(this, 0, getSize());
    710734        }
    711735
     736        @Override
    712737        public void nodeMoved(NodeMovedEvent event) {
    713738            // may influence the display name of primitives, update the data
    714739            update(event.getPrimitives());
    715740        }
    716741
     742        @Override
    717743        public void otherDatasetChange(AbstractDatasetChangedEvent event) {
    718744            // may influence the display name of primitives, update the data
    719745            update(event.getPrimitives());
    720746        }
    721747
     748        @Override
    722749        public void relationMembersChanged(RelationMembersChangedEvent event) {
    723750            // may influence the display name of primitives, update the data
    724751            update(event.getPrimitives());
    725752        }
    726753
     754        @Override
    727755        public void tagsChanged(TagsChangedEvent event) {
    728756            // may influence the display name of primitives, update the data
    729757            update(event.getPrimitives());
    730758        }
    731759
     760        @Override
    732761        public void wayNodesChanged(WayNodesChangedEvent event) {
    733762            // may influence the display name of primitives, update the data
    734763            update(event.getPrimitives());
    735764        }
    736765
     766        @Override
    737767        public void primtivesAdded(PrimitivesAddedEvent event) {/* ignored - handled by SelectionChangeListener */}
     768        @Override
    738769        public void primtivesRemoved(PrimitivesRemovedEvent event) {/* ignored - handled by SelectionChangeListener*/}
    739770    }
    740771
     
    752783            addActionListener(this);
    753784        }
    754785
     786        @Override
    755787        public void actionPerformed(ActionEvent e) {
    756788            org.openstreetmap.josm.actions.search.SearchAction.searchWithoutHistory(s);
    757789        }
     
    827859            addActionListener(this);
    828860        }
    829861
     862        @Override
    830863        public void actionPerformed(ActionEvent e) {
    831864            Main.main.getCurrentDataSet().setSelected(sel);
    832865        }
     
    871904            return ret;
    872905        }
    873906
     907        @Override
    874908        public void actionPerformed(ActionEvent e) {
    875909            if (!isEnabled())
    876910                return;
     
    887921            setEnabled(!model.getSelectedRelationsWithIncompleteMembers().isEmpty());
    888922        }
    889923
     924        @Override
    890925        public void valueChanged(ListSelectionEvent e) {
    891926            updateEnabledState();
    892927        }
     
    910945            setEnabled(!model.getSelected().isEmpty());
    911946        }
    912947
     948        @Override
    913949        public void valueChanged(ListSelectionEvent e) {
    914950            updateEnabledState();
    915951        }
     
    953989            return -1;
    954990        }
    955991
     992        @Override
    956993        public int compare(OsmPrimitive a, OsmPrimitive b) {
    957994            if (a.getType().equals(b.getType()))
    958995                return compareName(a, b);
     
    9811018            return -1;
    9821019        }
    9831020
     1021        @Override
    9841022        public int compare(OsmPrimitive a, OsmPrimitive b) {
    9851023            if (a.getType().equals(b.getType()))
    9861024                return compareId(a, b);
  • org/openstreetmap/josm/data/osm/DataSet.java

     
    9595
    9696    private static class IdHash implements Hash<PrimitiveId,OsmPrimitive> {
    9797
     98        @Override
    9899        public int getHashCode(PrimitiveId k) {
    99100            return (int)k.getUniqueId() ^ k.getType().hashCode();
    100101        }
    101102
     103        @Override
    102104        public boolean equals(PrimitiveId key, OsmPrimitive value) {
    103105            if (key == null || value == null) return false;
    104106            return key.getUniqueId() == value.getUniqueId() && key.getType() == value.getType();
     
    133135    }
    134136
    135137    /**
     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    /**
    136150     * Maintain a list of used tags for autocompletion
    137151     */
    138152    private AutoCompletionManager autocomplete;