Ignore:
Timestamp:
2009-10-10T14:14:28+02:00 (17 years ago)
Author:
stoecker
Message:

applied #3676 - patch by Dave Hansen - cleanup selection handling interface

Location:
trunk/src/org/openstreetmap/josm/gui
Files:
2 edited

Legend:

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

    r2252 r2264  
    300300         */
    301301        private final void popupCycleSelection(Collection<OsmPrimitive> osms, int mods) {
     302            DataSet ds = Main.main.getCurrentDataSet();
    302303            // Find some items that are required for cycling through
    303304            OsmPrimitive firstItem = null;
     
    311312                    nextSelected = osm;
    312313                }
    313                 if(firstSelected == null && osm.isSelected()) {
     314                if(firstSelected == null && ds.isSelected(osm)) {
    314315                    firstSelected = osm;
    315316                }
     
    319320            // pressed. Cannot use "setSelected()" because it will cause a
    320321            // fireSelectionChanged event which is unnecessary at this point.
    321             if((mods & MouseEvent.SHIFT_DOWN_MASK) == 0) {
    322                 for(OsmPrimitive o : Main.main.getCurrentDataSet().getSelected()) {
    323                     o.setSelected(false);
    324                 }
    325             }
     322            if((mods & MouseEvent.SHIFT_DOWN_MASK) == 0)
     323                ds.clearSelection();
    326324
    327325            // This will cycle through the available items.
    328326            if(firstSelected == null) {
    329                 firstItem.setSelected(true);
     327                ds.addSelected(firstItem);
    330328            } else {
    331                 firstSelected.setSelected(false);
     329                ds.clearSelection(firstSelected);
    332330                if(nextSelected != null) {
    333                     nextSelected.setSelected(true);
    334                 }
    335             }
    336             DataSet.fireSelectionChanged(Main.main.getCurrentDataSet().getSelected());
     331                    ds.addSelected(nextSelected);
     332                }
     333            }
     334            DataSet.fireSelectionChanged(ds.getSelected());
    337335        }
    338336
     
    398396         */
    399397        private final void popupSetLabelColors(JLabel lbl, OsmPrimitive osm) {
    400             if(osm.isSelected()) {
     398            DataSet ds = Main.main.getCurrentDataSet();
     399            if(ds.isSelected(osm)) {
    401400                lbl.setBackground(SystemColor.textHighlight);
    402401                lbl.setForeground(SystemColor.textHighlightText);
     
    460459                }
    461460                @Override public void mouseClicked(MouseEvent e) {
     461                    DataSet ds = Main.main.getCurrentDataSet();
    462462                    // Let the user toggle the selection
    463                     osm.setSelected(!osm.isSelected());
    464                     DataSet.fireSelectionChanged(Main.main.getCurrentDataSet().getSelected());
     463                    ds.toggleSelected(osm);
     464                    DataSet.fireSelectionChanged(ds.getSelected());
    465465                    l.validate();
    466466                }
  • trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java

    r2252 r2264  
    318318            // when multiple nodes on one point, prefer new or selected nodes
    319319            else if(dist == minDistanceSq && minPrimitive != null
    320                     && ((n.getId() == 0 && n.isSelected())
    321                             || (!minPrimitive.isSelected() && (n.isSelected() || n.getId() == 0)))) {
     320                    && ((n.getId() == 0 && ds.isSelected(n))
     321                            || (!ds.isSelected(minPrimitive) && (ds.isSelected(n) || n.getId() == 0)))) {
    322322                minPrimitive = n;
    323323            }
     
    360360                double perDist = a-(a-b+c)*(a-b+c)/4/c; // perpendicular distance squared
    361361                if (perDist < snapDistance && a < c+snapDistance && b < c+snapDistance) {
    362                     if(w.isSelected()) {
     362                    if(ds.isSelected(w)) {
    363363                        perDist -= 0.00001;
    364364                    }
Note: See TracChangeset for help on using the changeset viewer.