Ticket #3475: filters_core.diff

File filters_core.diff, 19.9 KB (added by PetrDlouhy, 15 years ago)
  • src/org/openstreetmap/josm/actions/SplitWayAction.java

     
    101101            HashMap<Way, Integer> wayOccurenceCounter = new HashMap<Way, Integer>();
    102102            for (Node n : selectedNodes) {
    103103                for (Way w : getCurrentDataSet().ways) {
    104                     if (w.isDeleted() || w.incomplete) {
     104                    if (!w.isUsable()) {
    105105                        continue;
    106106                    }
    107107                    int last = w.getNodesCount()-1;
     
    292292        // now copy all relations to new way also
    293293
    294294        for (Relation r : getCurrentDataSet().relations) {
    295             if (r.isDeleted() || r.incomplete) {
     295            if (!r.isUsable()) {
    296296                continue;
    297297            }
    298298            Relation c = null;
  • src/org/openstreetmap/josm/actions/UnGlueAction.java

     
    6565        if (checkSelection(selection)) {
    6666            int count = 0;
    6767            for (Way w : getCurrentDataSet().ways) {
    68                 if (w.isDeleted() || w.incomplete || w.getNodesCount() < 1) {
     68                if (!w.isUsable() || w.getNodesCount() < 1) {
    6969                    continue;
    7070                }
    7171                if (!w.containsNode(selectedNode)) {
  • src/org/openstreetmap/josm/actions/mapmode/DrawAction.java

     
    766766    public Way getWayForNode(Node n) {
    767767        Way way = null;
    768768        for (Way w : getCurrentDataSet().ways) {
    769             if (w.isDeleted() || w.incomplete || w.getNodesCount() < 1) {
     769            if (!w.isUsable() || w.getNodesCount() < 1) {
    770770                continue;
    771771            }
    772772            Node firstNode = w.getNode(0);
  • src/org/openstreetmap/josm/actions/CombineWayAction.java

     
    285285         */
    286286        public void build(DataSet ds) {
    287287            for (Relation r: ds.relations) {
    288                 if (r.isDeleted() || r.incomplete) {
     288                if (!r.isUsable()) {
    289289                    continue;
    290290                }
    291291                Set<Way> referringWays = OsmPrimitive.getFilteredSet(r.getMemberPrimitives(), Way.class);
  • src/org/openstreetmap/josm/gui/SelectionManager.java

     
    285285        } else {
    286286            // nodes
    287287            for (Node n : nc.getCurrentDataSet().nodes) {
    288                 if (!n.isDeleted() && !n.incomplete && r.contains(nc.getPoint(n))) {
     288                if (n.isUsable() && r.contains(nc.getPoint(n))) {
    289289                    selection.add(n);
    290290                }
    291291            }
    292292
    293293            // ways
    294294            for (Way w : nc.getCurrentDataSet().ways) {
    295                 if (w.isDeleted() || w.getNodesCount() == 0 || w.incomplete) {
     295                if (!w.isUsable() || w.getNodesCount() == 0){
    296296                    continue;
    297297                }
    298298                if (alt) {
  • src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

     
    317317
    318318    @Override public void visitBoundingBox(final BoundingXYVisitor v) {
    319319        for (final Node n : data.nodes)
    320             if (!n.isDeleted() && !n.incomplete) {
     320            if (n.isUsable()) {
    321321                v.visit(n);
    322322            }
    323323    }
     
    440440        gpxData.storageFile = file;
    441441        HashSet<Node> doneNodes = new HashSet<Node>();
    442442        for (Way w : data.ways) {
    443             if (w.incomplete || w.isDeleted()) {
     443            if (!w.isUsable()) {
    444444                continue;
    445445            }
    446446            GpxTrack trk = new GpxTrack();
     
    452452
    453453            ArrayList<WayPoint> trkseg = null;
    454454            for (Node n : w.getNodes()) {
    455                 if (n.incomplete || n.isDeleted()) {
     455                if (!n.isUsable()) {
    456456                    trkseg = null;
    457457                    continue;
    458458                }
  • src/org/openstreetmap/josm/gui/NavigatableComponent.java

     
    306306        if(ds == null)
    307307            return null;
    308308        for (Node n : ds.nodes) {
    309             if (n.isDeleted() || n.incomplete) {
     309            if (!n.isUsable()) {
    310310                continue;
    311311            }
    312312            Point sp = getPoint(n);
     
    337337        if(ds == null)
    338338            return null;
    339339        for (Way w : ds.ways) {
    340             if (w.isDeleted() || w.incomplete) {
     340            if (!w.isUsable()) {
    341341                continue;
    342342            }
    343343            Node lastN = null;
     
    461461        if(ds == null)
    462462            return null;
    463463        for (Way w : ds.ways) {
    464             if (w.isDeleted() || w.incomplete) {
     464            if (!w.isUsable()) {
    465465                continue;
    466466            }
    467467            Node lastN = null;
    468468            for (Node n : w.getNodes()) {
    469                 if (n.isDeleted() || n.incomplete) {
     469                if (!n.isUsable()) {
    470470                    continue;
    471471                }
    472472                if (lastN == null) {
     
    487487            }
    488488        }
    489489        for (Node n : ds.nodes) {
    490             if (!n.isDeleted() && !n.incomplete
     490            if (n.isUsable()
    491491                    && getPoint(n).distanceSq(p) < snapDistance) {
    492492                nearest.add(n);
    493493            }
     
    509509        if(ds == null)
    510510            return null;
    511511        for (Node n : ds.nodes) {
    512             if (!n.isDeleted() && !n.incomplete
     512            if (n.isUsable()
    513513                    && getPoint(n).distanceSq(p) < snapDistance) {
    514514                nearest.add(n);
    515515            }
  • src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java

     
    134134        if (getNumRelations() > 0 ) {
    135135            int i = 0;
    136136            for (OsmPrimitive e : DataSet.sort(Main.main.getCurrentDataSet().relations)) {
    137                 if (!e.isDeleted() && !e.incomplete) {
     137                if (e.isUsable()){
    138138                    list.setElementAt(e, i++);
    139139                }
    140140            }
  • src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java

     
    749749        Map<Relation, Collection<RelationMember>> roles = new HashMap<Relation, Collection<RelationMember>>();
    750750        if (Main.main.getCurrentDataSet() != null) {
    751751            for (Relation r : Main.main.getCurrentDataSet().relations) {
    752                 if (!r.isDeleted() && !r.incomplete) {
     752                if (!r.isFiltered() && r.isUsable()) {
    753753                    for (RelationMember m : r.getMembers()) {
    754754                        if (newSelection.contains(m.getMember())) {
    755755                            Collection<RelationMember> value = roles.get(r);
  • src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java

     
    148148           require changing the colour while painting... */
    149149        //profilerN = 0;
    150150        for (final OsmPrimitive osm : data.relations)
    151             if (!osm.isDeleted() && !osm.isSelected())
     151            if (!osm.isDeleted() && !osm.isSelected() && !osm.isFiltered())
    152152            {
    153153                osm.visit(this);
    154154                //        profilerN++;
     
    162162
    163163        //profilerN = 0;
    164164        for (final OsmPrimitive osm : data.ways)
    165             if (!osm.isDeleted() && !osm.isSelected() && osm.isTagged())
     165            if (!osm.isDeleted() && !osm.isSelected() && !osm.isFiltered() && osm.isTagged())
    166166            {
    167167                osm.visit(this);
    168168                //        profilerN++;
     
    170170        displaySegments();
    171171
    172172        for (final OsmPrimitive osm : data.ways)
    173             if (!osm.isDeleted() && !osm.isSelected() && !osm.isTagged())
     173            if (!osm.isDeleted() && !osm.isSelected() && !osm.isFiltered() && !osm.isTagged())
    174174            {
    175175                osm.visit(this);
    176176                //        profilerN++;
     
    201201
    202202        //profilerN = 0;
    203203        for (final OsmPrimitive osm : data.nodes)
    204             if (!osm.isDeleted() && !osm.isSelected())
     204            if (!osm.isDeleted() && !osm.isSelected() && !osm.isFiltered())
    205205            {
    206206                osm.visit(this);
    207207                //        profilerN++;
     
    219219            //    profilerN = 0;
    220220            currentColor = nodeColor;
    221221            for (final OsmPrimitive osm : data.ways)
    222                 if (!osm.isDeleted())
     222                if (!osm.isDeleted() && !osm.isDisabled() && !osm.isFiltered())
    223223                {
    224224                    visitVirtual((Way)osm);
    225225                    //                profilerN++;
     
    248248    public void visit(Node n) {
    249249        if (n.incomplete) return;
    250250
    251         if (inactive) {
     251        if (inactive || n.isDisabled()) {
    252252            drawNode(n, inactiveColor, unselectedNodeSize, unselectedNodeRadius, fillUnselectedNode);
    253253        } else if (n.highlighted) {
    254254            drawNode(n, highlightColor, selectedNodeSize, selectedNodeRadius, fillSelectedNode);
     
    311311        boolean showOnlyHeadArrowOnly = showThisDirectionArrow && !w.isSelected() && showHeadArrowOnly;
    312312        Color wayColor;
    313313
    314         if (inactive) {
     314        if (inactive || w.isDisabled()) {
    315315            wayColor = inactiveColor;
    316316        } else if(w.highlighted) {
    317317            wayColor = highlightColor;
     
    344344        if (r.incomplete) return;
    345345
    346346        Color col;
    347         if (inactive) {
     347        if (inactive || r.isDisabled()) {
    348348            col = inactiveColor;
    349349        } else if (r.isSelected()) {
    350350            col = selectedColor;
  • src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java

     
    158158            drawNode(n, selectedColor, selectedNodeSize, selectedNodeRadius, fillSelectedNode);
    159159        } else if (n.isTagged()) {
    160160            drawNode(n, nodeColor, taggedNodeSize, taggedNodeRadius, fillUnselectedNode);
     161        } else if (n.isDisabled()) {
     162            drawNode(n, inactiveColor, unselectedNodeSize, unselectedNodeRadius, fillUnselectedNode);
    161163        } else {
    162164            drawNode(n, nodeColor, unselectedNodeSize, unselectedNodeRadius, fillUnselectedNode);
    163165        }
     
    306308            color = highlightColor;
    307309        } else if(w.isSelected()) {
    308310            color = selectedColor;
     311        } else if(w.isDisabled()) {
     312            color = inactiveColor;
    309313        }
    310314
    311315        /* draw overlays under the way */
     
    529533        {
    530534            for (RelationMember m : r.getMembers())
    531535            {
    532                 if (m.isNode() && !m.getMember().incomplete && !m.getMember().isDeleted())
     536                if (m.isNode() && !m.getMember().incomplete && !m.getMember().isDeleted() && !m.getMember().isFiltered())
    533537                {
    534538                    drawSelectedMember(m.getMember(), styles != null ? getPrimitiveStyle(m.getMember()) : null, true, true);
    535539                }
     
    13941398            //    profilerN = 0;
    13951399            for (final Relation osm : data.relations)
    13961400            {
    1397                 if(!osm.isDeleted() && !osm.incomplete && osm.mappaintVisibleCode != viewid)
     1401                if(!osm.isDeleted() && !osm.isFiltered() && !osm.incomplete && osm.mappaintVisibleCode != viewid)
    13981402                {
    13991403                    osm.visit(this);
    14001404                    //            profilerN++;
     
    14111415            //    profilerN = 0;
    14121416            for (final Way osm : data.ways)
    14131417            {
    1414                 if (!osm.incomplete && !osm.isDeleted()
     1418                if (!osm.incomplete && !osm.isDeleted() && !osm.isFiltered()
    14151419                        && osm.mappaintVisibleCode != viewid && osm.mappaintDrawnCode != paintid)
    14161420                {
    14171421                    if(isPrimitiveArea(osm) && osm.mappaintDrawnAreaCode != paintid)
     
    14521456            /*** WAYS (filling disabled)  ***/
    14531457            //    profilerN = 0;
    14541458            for (final OsmPrimitive osm : data.ways)
    1455                 if (!osm.incomplete && !osm.isDeleted() && !osm.isSelected()
     1459                if (!osm.incomplete && !osm.isDeleted() && !osm.isFiltered() && !osm.isSelected()
    14561460                        && osm.mappaintVisibleCode != viewid )
    14571461                {
    14581462                    osm.visit(this);
     
    14911495        /*** NODES ***/
    14921496        //profilerN = 0;
    14931497        for (final OsmPrimitive osm : data.nodes)
    1494             if (!osm.incomplete && !osm.isDeleted()
     1498            if (!osm.incomplete && !osm.isDeleted() && (osm.isSelected() || !osm.isFiltered())
    14951499                    && osm.mappaintVisibleCode != viewid && osm.mappaintDrawnCode != paintid)
    14961500            {
    14971501                osm.visit(this);
     
    15111515            //    profilerN = 0;
    15121516            currentColor = nodeColor;
    15131517            for (final OsmPrimitive osm : data.ways)
    1514                 if (!osm.incomplete && !osm.isDeleted()
     1518                if (osm.isUsable() && !osm.isFiltered()
    15151519                        && osm.mappaintVisibleCode != viewid )
    15161520                {
    15171521                    /* TODO: move this into the SimplePaint code? */
  • src/org/openstreetmap/josm/data/osm/DataSet.java

     
    183183        return getSelected(relations);
    184184    }
    185185
     186    public void setFiltered(Collection<? extends OsmPrimitive> selection) {
     187        clearFiltered(nodes);
     188        clearFiltered(ways);
     189        clearFiltered(relations);
     190        for (OsmPrimitive osm : selection) {
     191            osm.setFiltered(true);
     192        }
     193    }
     194
     195    public void setFiltered(OsmPrimitive... osm) {
     196        if (osm.length == 1 && osm[0] == null) {
     197            setFiltered();
     198            return;
     199        }
     200        clearFiltered(nodes);
     201        clearFiltered(ways);
     202        clearFiltered(relations);
     203        for (OsmPrimitive o : osm)
     204            if (o != null) {
     205                o.setFiltered(true);
     206            }
     207    }
     208
     209    public void setDisabled(Collection<? extends OsmPrimitive> selection) {
     210        clearDisabled(nodes);
     211        clearDisabled(ways);
     212        clearDisabled(relations);
     213        for (OsmPrimitive osm : selection) {
     214            osm.setDisabled(true);
     215        }
     216    }
     217
     218    public void setDisabled(OsmPrimitive... osm) {
     219        if (osm.length == 1 && osm[0] == null) {
     220            setDisabled();
     221            return;
     222        }
     223        clearDisabled(nodes);
     224        clearDisabled(ways);
     225        clearDisabled(relations);
     226        for (OsmPrimitive o : osm)
     227            if (o != null) {
     228                o.setDisabled(true);
     229            }
     230    }
     231
    186232    public void setSelected(Collection<? extends OsmPrimitive> selection) {
    187233        clearSelection(nodes);
    188234        clearSelection(ways);
     
    209255    }
    210256
    211257    /**
     258     * Remove the filtered parameter from every value in the collection.
     259     * @param list The collection to remove the filtered parameter from.
     260     */
     261    private void clearFiltered(Collection<? extends OsmPrimitive> list) {
     262        if (list == null)
     263            return;
     264        for (OsmPrimitive osm : list) {
     265            osm.setFiltered(false);
     266        }
     267    }
     268    /**
     269     * Remove the disabled parameter from every value in the collection.
     270     * @param list The collection to remove the disabled parameter from.
     271     */
     272    private void clearDisabled(Collection<? extends OsmPrimitive> list) {
     273        if (list == null)
     274            return;
     275        for (OsmPrimitive osm : list) {
     276            osm.setDisabled(false);
     277        }
     278    }
     279
     280    /**
    212281     * Remove the selection from every value in the collection.
    213282     * @param list The collection to remove the selection from.
    214283     */
  • src/org/openstreetmap/josm/data/osm/OsmPrimitive.java

     
    123123    private boolean visible = true;
    124124
    125125    /**
     126     * <code>true</code>, if the object has been set inactive
     127     *
     128     */
     129    public boolean disabled = false;
     130
     131    /**
     132     * <code>true</code>, if the object has been filtered out
     133     *
     134     */
     135    public boolean filtered = false;
     136
     137    /**
    126138     * User that last modified this primitive, as specified by the server.
    127139     * Never changed by JOSM.
    128140     */
     
    172184    /* ------------------------------------------------------------------------------------ */
    173185    /* accessors                                                                            */
    174186    /* ------------------------------------------------------------------------------------ */
     187    /**
     188     * Sets whether this primitive is disabled or not.
     189     *
     190     * @param selected  true, if this primitive is disabled; false, otherwise
     191     */
     192    public void setDisabled(boolean disabled) {
     193        this.disabled = disabled;
     194    }
    175195
    176196    /**
     197     * Replies true, if this primitive is disabled.
     198     *
     199     * @return true, if this primitive is disabled
     200     */
     201    public boolean isDisabled() {
     202        return disabled;
     203    }
     204    /**
     205     * Sets whether this primitive is filtered out or not.
     206     *
     207     * @param selected  true, if this primitive is filtered out; false, otherwise
     208     */
     209    public void setFiltered(boolean filtered) {
     210        this.filtered = filtered;
     211    }
     212    /**
     213     * Replies true, if this primitive is filtered out.
     214     *
     215     * @return true, if this primitive is filtered out
     216     */
     217    public boolean isFiltered() {
     218        return filtered;
     219    }
     220
     221    /**
    177222     * Sets whether this primitive is selected or not.
    178223     *
    179224     * @param selected  true, if this primitive is selected; false, otherwise
     
    229274     * @see #delete(boolean)
    230275     */
    231276    public boolean isUsable() {
    232         return !deleted && !incomplete;
     277        return !deleted && !incomplete && !disabled;
    233278    }
    234279
    235280    /**