Ignore:
Timestamp:
2011-07-05T19:52:57+02:00 (13 years ago)
Author:
akks
Message:

FastDraw plugin: added settings dialog (Q button), and point count info. Utilsplugin2: shortcut conflict with Measurer.

Location:
applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/DrawnPolyLine.java

    r26111 r26264  
    9999    Point getPoint(LatLon p) {
    100100        return mv.getPoint(p);
     101    }
     102   
     103    int getSimplePointsCount() {
     104        if (simplePoints!=null)return simplePoints.size(); else return -1;
    101105    }
    102106   
  • applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java

    r26163 r26264  
    5757    tr("Click or Click&drag to continue, Ctrl-Click to add fixed node, Shift-Click to delete, Enter to simplify or save, Ctrl-Shift-Click to start new line");
    5858
    59     private Color COLOR_FIXED;
    60     private Color COLOR_NORMAL;
    61     private Color COLOR_DELETE;
    62     private Color COLOR_SELECTEDFRAGMENT;
    63     private Color COLOR_EDITEDFRAGMENT;
    64 
    65     private double maxDist;
    66     private double epsilonMult;
    67     //private double deltaLatLon;
    68     /// When drawing line, distance between points will be this
    69     private double minPixelsBetweenPoints;
    70     /// Initial tolerance for Douglas-Pecker algorithm
    71     private double startingEps;
     59    private FDSettings settings;
    7260
    7361    private DrawnPolyLine line;
     
    9684    FastDrawingMode(MapFrame mapFrame) {
    9785        super(tr("FastDrawing"), "turbopen.png", tr("Fast drawing mode"), Shortcut.registerShortcut(
    98                 "mapmode:FastDraw",
     86                "mapmode/building",
    9987                tr("Mode: {0}", tr("Fast drawing mode")),
    10088                KeyEvent.VK_T, Shortcut.GROUP_EDIT), mapFrame, Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
     
    118106        if (!isEnabled()) return;
    119107        super.enterMode();
    120         loadPrefs();
     108        settings=new FDSettings();
     109        settings.loadPrefs();
     110        settings.savePrefs();
     111       
     112        eps=settings.startingEps;
    121113        mv = Main.map.mapView;
    122114        line.setMv(mv);
     
    150142        } catch (SecurityException ex) {
    151143        }
    152         savePrefs();
     144        settings.savePrefs();
    153145        Main.map.mapView.setCursor(cursorDraw);
    154146        repaint();
     
    182174        LatLon pp1, pp2;
    183175        p1 = line.getPoint(pts.get(0));
    184         g.setColor(COLOR_FIXED);
     176        g.setColor(settings.COLOR_FIXED);
    185177        g.fillOval(p1.x - 3, p1.y - 3, 7, 7);
    186         Color lineColor=COLOR_NORMAL;
     178        Color lineColor=settings.COLOR_NORMAL;
    187179        if (pts.size() > 1) {
    188180        Iterator<LatLon> it1,it2;
     
    194186                pp2 = it2.next();
    195187                p2 = line.getPoint(pp2);
    196                 if (shift && highlighted==pp1 && nearestIdx<0) {lineColor=COLOR_SELECTEDFRAGMENT;}
    197                 if (!shift && line.isLastPoint(i)) { lineColor=COLOR_EDITEDFRAGMENT; }
     188                if (shift && highlighted==pp1 && nearestIdx<0) {lineColor=settings.COLOR_SELECTEDFRAGMENT;}
     189                if (!shift && line.isLastPoint(i)) { lineColor=settings.COLOR_EDITEDFRAGMENT; }
    198190                g.setColor(lineColor);
    199191                g.drawLine(p1.x, p1.y, p2.x, p2.y);
    200192  //                  g.fillOval(p2.x - 5, p2.y - 5, 11, 11);
    201193                if (line.isFixed(pp2)) {
    202                     lineColor=COLOR_NORMAL;
    203                     g.setColor(COLOR_FIXED);
     194                    lineColor=settings.COLOR_NORMAL;
     195                    g.setColor(settings.COLOR_FIXED);
    204196                    g.fillOval(p2.x - 3, p2.y - 3, 7, 7);
    205197                } else {
     
    210202                        // highlight node to delete
    211203                        g.setStroke(strokeForDelete);
    212                         g.setColor(COLOR_DELETE);
     204                        g.setColor(settings.COLOR_DELETE);
    213205                        g.drawLine(p2.x - 5, p2.y - 5,p2.x + 5, p2.y + 5);
    214206                        g.drawLine(p2.x - 5, p2.y + 5,p2.x + 5, p2.y - 5);
     
    218210                        // highlight node to toggle fixation
    219211                        g.setStroke(strokeForDelete);
    220                         g.setColor( line.isFixed(pp2) ? COLOR_NORMAL: COLOR_FIXED);
     212                        g.setColor( line.isFixed(pp2) ? settings.COLOR_NORMAL: settings.COLOR_FIXED);
    221213                        g.drawOval(p2.x - 5, p2.y - 5, 11, 11);
    222214                        g.setStroke(strokeForOriginal);
     
    248240
    249241
    250         int idx=line.findClosestPoint(e.getPoint(),maxDist);
     242        int idx=line.findClosestPoint(e.getPoint(),settings.maxDist);
    251243        if (idx==0 && !line.isClosed()) {
    252244            line.closeLine();
     
    258250        }
    259251
    260         if (ctrl && shift) newDrawing();
     252        if (ctrl && shift) {newDrawing();repaint();return;}
    261253        if (!ctrl && shift) {
    262254            if (idx>=0) {line.deleteNode(idx); nearestIdx=-1;}
     
    278270
    279271        LatLon p = getLatLon(e);
    280         Node nd1 = getNearestNode(e.getPoint(), maxDist);
     272        Node nd1 = getNearestNode(e.getPoint(), settings.maxDist);
    281273        if (nd1!=null) {
    282274            // found node, make it fixed point of the line
     
    314306    public void mouseMoved(MouseEvent e) {
    315307        if (!isEnabled()) return;
    316         Node nd1 = getNearestNode(e.getPoint(), maxDist);
     308        Node nd1 = getNearestNode(e.getPoint(), settings.maxDist);
    317309        boolean nearpoint2=nd1!=null;
    318310        if (nearpoint!=nearpoint2) {nearpoint=nearpoint2;updateCursor();}
    319311
    320         nearestIdx=line.findClosestPoint(e.getPoint(),maxDist);
     312        nearestIdx=line.findClosestPoint(e.getPoint(),settings.maxDist);
    321313
    322314        if (!drawing) {
     
    350342            }
    351343        } else {
    352             if (Math.hypot(e.getX() - lastP.x, e.getY() - lastP.y) > minPixelsBetweenPoints) {
     344            if (Math.hypot(e.getX() - lastP.x, e.getY() - lastP.y) > settings.minPixelsBetweenPoints) {
    353345                line.addLast(getLatLon(e)); // free mouse-drawing
    354346                repaint();
     
    365357                line.clearSimplifiedVersion();
    366358                repaint();
    367                 eps=startingEps;
     359                eps=settings.startingEps;
    368360            }
    369361            back();
     
    373365            if (!line.wasSimplified()) {
    374366                line.simplify(eps);
    375                 setStatusLine(SIMPLIFYMODE_MESSAGE);
     367                setStatusLine(tr("Eps={0}, {1} points", eps, line.getSimplePointsCount())+" "+SIMPLIFYMODE_MESSAGE);
    376368            } else saveAsWay();
    377369        }
     
    379371            // more details
    380372            e.consume();
    381             changeEpsilon(epsilonMult);
     373            changeEpsilon(settings.epsilonMult);
    382374        }
    383375        if (e.getKeyCode() == KeyEvent.VK_UP) {
    384376            // less details
    385377            e.consume();
    386             changeEpsilon(1/epsilonMult);
     378            changeEpsilon(1/settings.epsilonMult);
    387379        }
    388380        if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
     
    391383            line.moveToTheEnd();
    392384        }
    393 
    394 
     385        if (e.getKeyCode() == KeyEvent.VK_Q) {
     386            // less details
     387            e.consume();
     388            try {
     389                Toolkit.getDefaultToolkit().removeAWTEventListener(this);
     390                new FastDrawConfigDialog(settings);
     391                Toolkit.getDefaultToolkit().addAWTEventListener(this,
     392                    AWTEvent.KEY_EVENT_MASK);
     393            } catch (SecurityException ex) {  }
     394            eps=settings.startingEps;
     395        }
    395396    }
    396397
     
    414415// <editor-fold defaultstate="collapsed" desc="Different action helper methods">
    415416    public void newDrawing() {
    416         eps=startingEps;
     417        eps=settings.startingEps;
    417418        line.clear();
    418419    }
     
    482483        //System.out.println(tr("Eps={0}", eps));
    483484        eps*=k;
    484         /* I18N: Eps = Epsilon, the tolerance parameter */ setStatusLine(tr("Eps={0}", eps));
    485485        line.simplify(eps);
     486        /* I18N: Eps = Epsilon, the tolerance parameter */
     487        setStatusLine(tr("Eps={0}, {1} points", eps, line.getSimplePointsCount()));
    486488        repaint();
    487489    }
     
    510512
    511513
    512     void loadPrefs() {
    513         COLOR_DELETE = Main.pref.getColor("fastdraw.color.delete", Color.red);
    514         COLOR_EDITEDFRAGMENT = Main.pref.getColor("fastdraw.color.edit", Color.orange);
    515         COLOR_FIXED = Main.pref.getColor("fastdraw.color.fixed", Color.green);
    516         COLOR_NORMAL = Main.pref.getColor("fastdraw.color.normal", Color.red);
    517         COLOR_SELECTEDFRAGMENT = Main.pref.getColor("fastdraw.color.select", Color.blue);
    518         maxDist = Main.pref.getDouble("fastdraw.maxdist", 5);
    519         epsilonMult = Main.pref.getDouble("fastdraw.epsilonmult", 1.1);
    520         //deltaLatLon = Main.pref.getDouble("fastdraw.deltasearch", 0.01);
    521         minPixelsBetweenPoints = Main.pref.getDouble("fastdraw.mindelta", 20);
    522         startingEps = Main.pref.getDouble("fastdraw.startingEps", 20);
    523         eps=startingEps;
    524     }
    525 
    526     void savePrefs() {
    527          Main.pref.putColor("fastdraw.color.delete", COLOR_DELETE );
    528          Main.pref.putColor("fastdraw.color.edit", COLOR_EDITEDFRAGMENT);
    529          Main.pref.putColor("fastdraw.color.fixed", COLOR_FIXED);
    530          Main.pref.putColor("fastdraw.color.normal", COLOR_NORMAL);
    531          Main.pref.putColor("fastdraw.color.select", COLOR_SELECTEDFRAGMENT);
    532          Main.pref.putDouble("fastdraw.maxdist", maxDist);
    533          Main.pref.putDouble("fastdraw.epsilonmult", epsilonMult);
    534          //Main.pref.putDouble("fastdraw.deltasearch", deltaLatLon);
    535          Main.pref.putDouble("fastdraw.mindelta",minPixelsBetweenPoints);
    536          Main.pref.putDouble("fastdraw.startingEps",startingEps);
    537          try {Main.pref.save();} catch (IOException e) {
    538              System.err.println(tr("Can not save preferences"));
    539          }
    540     }
     514
    541515
    542516    private void updateCursor() {
Note: See TracChangeset for help on using the changeset viewer.