Changeset 5720 in josm for trunk


Ignore:
Timestamp:
2013-02-15T22:56:49+01:00 (7 years ago)
Author:
Don-vip
Message:

fix #8424 - Relation dialog: Operate on correct relation when selecting a context menu action with a filter

File:
1 edited

Legend:

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

    r5712 r5720  
    698698        private ArrayList<Relation> filteredRelations;
    699699        private DefaultListSelectionModel selectionModel;
    700         //private SearchCompiler.Match filter;
     700        private SearchCompiler.Match filter;
    701701
    702702        public RelationListModel(DefaultListSelectionModel selectionModel) {
     
    727727                fireContentsChanged(this,0,getSize());
    728728                return;
    729 
    730729            }
    731730            for (Relation r: relations) {
     
    737736            fireIntervalAdded(this, 0, getSize());
    738737            setSelectedRelations(sel);
     738            updateFilteredRelations();
    739739        }
    740740
     
    767767                fireIntervalAdded(this, 0, getSize());
    768768                setSelectedRelations(sel);
     769                updateFilteredRelations();
    769770            }
    770771        }
     
    818819            return ret;
    819820        }
     821       
     822        private void updateFilteredRelations() {
     823            if (filter != null) {
     824                filteredRelations = new ArrayList<Relation>(Utils.filter(relations, new Predicate<Relation>() {
     825                    @Override
     826                    public boolean evaluate(Relation r) {
     827                        return filter.match(r);
     828                    }
     829                }));
     830            } else if (filteredRelations != null) {
     831                filteredRelations = null;
     832            }
     833        }
    820834
    821835        public void setFilter(final SearchCompiler.Match filter) {
    822             //this.filter = filter;
    823             this.filteredRelations = new ArrayList<Relation>(Utils.filter(relations, new Predicate<Relation>() {
    824                 @Override
    825                 public boolean evaluate(Relation r) {
    826                     return filter.match(r);
    827                 }
    828             }));
     836            this.filter = filter;
     837            updateFilteredRelations();
    829838            List<Relation> sel = getSelectedRelations();
    830839            fireContentsChanged(this, 0, getSize());
     
    864873                    continue;
    865874                }
    866                 if (relations.get(i).isNew()) {
     875                if (getVisibleRelation(i).isNew()) {
    867876                    continue;
    868877                }
    869                 ret.add(relations.get(i));
     878                ret.add(getVisibleRelation(i));
    870879            }
    871880            return ret;
     
    884893                    continue;
    885894                }
    886                 ret.add(relations.get(i));
     895                ret.add(getVisibleRelation(i));
    887896            }
    888897            return ret;
Note: See TracChangeset for help on using the changeset viewer.