Ticket #3475: filters_core.diff

File filters_core.diff, 19.9 KB (added by Petr Dlouhý <petr.dlouhy@…>, 3 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    /**