Changeset 6026 in josm


Ignore:
Timestamp:
2013-06-26T11:09:17+02:00 (11 years ago)
Author:
akks
Message:

Change HighlightHelper methods, adopted DeteleAction to use the same code

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

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java

    r5909 r6026  
    2828import org.openstreetmap.josm.gui.layer.Layer;
    2929import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     30import org.openstreetmap.josm.gui.util.HighlightHelper;
    3031import org.openstreetmap.josm.tools.CheckParameterUtil;
    3132import org.openstreetmap.josm.tools.ImageProvider;
     
    5758     * set would have to be checked.
    5859     */
    59     private Set<OsmPrimitive> oldHighlights = new HashSet<OsmPrimitive>();
    6060    private WaySegment oldHighlightedWaySegment = null;
    6161
     62    private static final HighlightHelper highlightHelper = new HighlightHelper();
    6263    private boolean drawTargetHighlight;
    6364
     
    173174     */
    174175    private void removeHighlighting() {
    175         for(OsmPrimitive prim : oldHighlights) {
    176             prim.setHighlighted(false);
    177         }
    178         oldHighlights = new HashSet<OsmPrimitive>();
     176        highlightHelper.clear();
    179177        DataSet ds = getCurrentDataSet();
    180178        if(ds != null) {
     
    233231            oldHighlightedWaySegment = newHighlightedWaySegment;
    234232        }
    235 
    236         for(OsmPrimitive x : newHighlights) {
    237             if(oldHighlights.contains(x)) {
    238                 continue;
    239             }
    240             needsRepaint = true;
    241             x.setHighlighted(true);
    242         }
    243         oldHighlights.removeAll(newHighlights);
    244         for(OsmPrimitive x : oldHighlights) {
    245             x.setHighlighted(false);
    246             needsRepaint = true;
    247         }
    248         oldHighlights = newHighlights;
     233        needsRepaint |= highlightHelper.highlightOnly(newHighlights);
    249234        if(needsRepaint) {
    250235            Main.map.mapView.repaint();
  • trunk/src/org/openstreetmap/josm/gui/util/HighlightHelper.java

    r6025 r6026  
    33
    44import java.util.Collection;
     5import java.util.Collections;
    56import java.util.HashSet;
     7import java.util.Iterator;
    68import java.util.Set;
    79import org.openstreetmap.josm.Main;
     
    2022     * Highlight and remember given primitives
    2123     * @param prims - primitives to highlight/unhighlight
    22      * @param flag - true to highlight
    2324     */
    24     public void highlight(Collection <? extends OsmPrimitive> prims, boolean flag) {
     25    public boolean highlight(Collection <? extends OsmPrimitive> prims) {
     26        return highlight(prims, false);
     27    }
     28   
     29    /**
     30     * Highlight and remember given primitives
     31     * @param prims - primitives to highlight/unhighlight
     32     * @param only - remove previous highlighting
     33     */
     34    public boolean highlight(Collection <? extends OsmPrimitive> prims, boolean only) {
     35        boolean needsRepaint = false;
     36        if (only) {
     37            Iterator<OsmPrimitive> it = highlightedPrimitives.iterator();
     38            while (it.hasNext()) {
     39                OsmPrimitive p = it.next();
     40                if (!prims.contains(p)) {
     41                    p.setHighlighted(false);
     42                    it.remove();
     43                    needsRepaint = true;
     44                }
     45            }
     46        }
    2547        for (OsmPrimitive p: prims) {
    26             highlight(p, flag);
     48            needsRepaint |= setHighlight(p, true);
    2749        }
     50        //return true;
     51        return needsRepaint;
    2852    }
    2953   
     
    3256     * @param prims - primitives to highlight/unhighlight
    3357     */
    34     public void highlightOnly(Collection <? extends OsmPrimitive> prims) {
    35         clear();
    36         highlight(prims, true);
     58    public boolean highlightOnly(Collection <? extends OsmPrimitive> prims) {
     59        return highlight(prims, true);
    3760    }
    3861   
     
    4164     * @param p - primitives to highlight/unhighlight
    4265     */
    43     public void highlightOnly(OsmPrimitive p) {
    44         clear();
    45         highlight(p, true);
     66    public boolean highlightOnly(OsmPrimitive p) {
     67        return highlight(Collections.singleton(p), true);
    4668    }
    4769   
     
    5173     * @param flag - true to highlight
    5274     */
    53     public void highlight(OsmPrimitive p, boolean flag) {
     75    public boolean setHighlight(OsmPrimitive p, boolean flag) {
    5476        if (p instanceof Relation) {
     77            boolean needRepaint = false;
    5578            for (OsmPrimitive m: ((Relation) p).getMemberPrimitives()) {
    56                 highlight(m, flag);
     79                needRepaint |= setHighlight(m, flag);
    5780            }
     81            return needRepaint;
    5882        } else
    5983        if (flag) {
    6084            if (highlightedPrimitives.add(p)) {
    6185                p.setHighlighted(true);
     86                return true;
    6287            }
    6388        } else {
    6489            if (highlightedPrimitives.remove(p)) {
    6590                p.setHighlighted(false);
     91                return true;
    6692            }
    6793        }
     94        return false;
    6895    }
    6996   
     
    81108     * Slow method to import all currently highlighted primitives into this instance
    82109     */
    83     public void findAllHighligted() {
     110    public void findAllHighlighted() {
    84111        DataSet ds = Main.main.getCurrentDataSet();
    85112        if (ds!=null) {
     
    89116   
    90117    /**
    91      * Slow method to import all currently highlighted primitives into this instance
     118     * Slow method to remove highlights from all primitives
    92119     */
    93     public static void clearAllHighligted() {
     120    public static void clearAllHighlighted() {
    94121        DataSet ds = Main.main.getCurrentDataSet();
    95122        if (ds!=null) {
Note: See TracChangeset for help on using the changeset viewer.