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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.