Index: /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/DrawnPolyLine.java
===================================================================
--- /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/DrawnPolyLine.java	(revision 26263)
+++ /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/DrawnPolyLine.java	(revision 26264)
@@ -99,4 +99,8 @@
     Point getPoint(LatLon p) {
         return mv.getPoint(p);
+    }
+    
+    int getSimplePointsCount() {
+        if (simplePoints!=null)return simplePoints.size(); else return -1;
     }
     
Index: /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FDSettings.java
===================================================================
--- /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FDSettings.java	(revision 26264)
+++ /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FDSettings.java	(revision 26264)
@@ -0,0 +1,52 @@
+package org.openstreetmap.josm.plugins.fastdraw;
+
+import java.awt.Color;
+import java.io.IOException;
+import org.openstreetmap.josm.Main;
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+public class FDSettings {
+    public Color COLOR_FIXED;
+    public Color COLOR_NORMAL;
+    public Color COLOR_DELETE;
+    public Color COLOR_SELECTEDFRAGMENT;
+    public Color COLOR_EDITEDFRAGMENT;
+
+    public double maxDist;
+    public double epsilonMult;
+    //public double deltaLatLon;
+    /// When drawing line, distance between points will be this
+    public double minPixelsBetweenPoints;
+    /// Initial tolerance for Douglas-Pecker algorithm
+    public double startingEps;    
+    
+    public void loadPrefs() {
+        COLOR_DELETE = Main.pref.getColor("fastdraw.color.delete", Color.red);
+        COLOR_EDITEDFRAGMENT = Main.pref.getColor("fastdraw.color.edit", Color.orange);
+        COLOR_FIXED = Main.pref.getColor("fastdraw.color.fixed", Color.green);
+        COLOR_NORMAL = Main.pref.getColor("fastdraw.color.normal", Color.red);
+        COLOR_SELECTEDFRAGMENT = Main.pref.getColor("fastdraw.color.select", Color.blue);
+        maxDist = Main.pref.getDouble("fastdraw.maxdist", 5);
+        epsilonMult = Main.pref.getDouble("fastdraw.epsilonmult", 1.1);
+        //deltaLatLon = Main.pref.getDouble("fastdraw.deltasearch", 0.01);
+        minPixelsBetweenPoints = Main.pref.getDouble("fastdraw.mindelta", 20);
+        startingEps = Main.pref.getDouble("fastdraw.startingEps", 20);
+    }
+
+    public void savePrefs() {
+         Main.pref.putColor("fastdraw.color.delete", COLOR_DELETE );
+         Main.pref.putColor("fastdraw.color.edit", COLOR_EDITEDFRAGMENT);
+         Main.pref.putColor("fastdraw.color.fixed", COLOR_FIXED);
+         Main.pref.putColor("fastdraw.color.normal", COLOR_NORMAL);
+         Main.pref.putColor("fastdraw.color.select", COLOR_SELECTEDFRAGMENT);
+         Main.pref.putDouble("fastdraw.maxdist", maxDist);
+         Main.pref.putDouble("fastdraw.epsilonmult", epsilonMult);
+         //Main.pref.putDouble("fastdraw.deltasearch", deltaLatLon);
+         Main.pref.putDouble("fastdraw.mindelta",minPixelsBetweenPoints);
+         Main.pref.putDouble("fastdraw.startingEps",startingEps);
+         try {Main.pref.save();} catch (IOException e) {
+             System.err.println(tr("Can not save preferences"));
+         }
+    
+    }
+}
Index: /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawConfigDialog.java
===================================================================
--- /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawConfigDialog.java	(revision 26264)
+++ /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawConfigDialog.java	(revision 26264)
@@ -0,0 +1,82 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.openstreetmap.josm.plugins.fastdraw;
+
+import javax.swing.JOptionPane;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import javax.swing.GroupLayout;
+import javax.swing.JFormattedTextField;
+import javax.swing.JPanel;
+import javax.swing.JLabel;
+import javax.swing.JTextField;
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+public class FastDrawConfigDialog extends ExtendedDialog {
+
+    public FastDrawConfigDialog(FDSettings settings) {
+        super(Main.parent,tr("FastDraw configuration"),new String[] {tr("Ok"), tr("Cancel")});
+        JPanel all = new JPanel();
+        GroupLayout layout = new GroupLayout(all);
+        all.setLayout(layout);
+        layout.setAutoCreateGaps(true);
+        layout.setAutoCreateContainerGaps(true);
+        
+        JLabel label1=new JLabel(tr("Epsilon multiplier"));
+        JLabel label2=new JLabel(tr("Starting Epsilon"));
+        JFormattedTextField text1=new JFormattedTextField(NumberFormat.getInstance());
+        JFormattedTextField text2=new  JFormattedTextField(NumberFormat.getInstance());
+        layout.setHorizontalGroup(
+            layout.createSequentialGroup()
+                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
+                    .addComponent(label1)
+                    .addComponent(label2))
+                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
+                    .addComponent(text1)
+                    .addComponent(text2)
+                )
+                );
+        layout.setVerticalGroup(
+            layout.createSequentialGroup()
+                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
+                    .addComponent(label1)
+                    .addComponent(text1))
+                .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
+                    .addComponent(label2)
+                    .addComponent(text2))
+                );
+        
+        text1.setValue(settings.epsilonMult);
+        text2.setValue(settings.startingEps);
+        
+        ExtendedDialog dialog = new ExtendedDialog(Main.parent,
+                tr("FastDraw settings"),
+                new String[] {tr("Ok"), tr("Cancel")}
+        );
+        setContent(all, false);
+        setButtonIcons(new String[] {"ok.png", "cancel.png"});
+        setToolTipTexts(new String[] {
+                tr("Save settings"),
+                tr("Cancel")
+        });
+        setDefaultButton(1);
+        //configureContextsensitiveHelp("/Action/DownloadObject", true /* show help button */);
+        showDialog();
+        if (dialog.getValue() == 0) {
+            try {
+            settings.epsilonMult=NumberFormat.getInstance().parse(text1.getText()).doubleValue();
+            settings.startingEps=NumberFormat.getInstance().parse(text2.getText()).doubleValue();
+            settings.savePrefs();
+            } catch (ParseException e) {
+              JOptionPane.showMessageDialog(Main.parent,
+                  tr("Can not read settings"));
+            }
+        }
+            
+    }
+    
+}
Index: /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java
===================================================================
--- /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 26263)
+++ /applications/editors/josm/plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 26264)
@@ -57,17 +57,5 @@
     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");
 
-    private Color COLOR_FIXED;
-    private Color COLOR_NORMAL;
-    private Color COLOR_DELETE;
-    private Color COLOR_SELECTEDFRAGMENT;
-    private Color COLOR_EDITEDFRAGMENT;
-
-    private double maxDist;
-    private double epsilonMult;
-    //private double deltaLatLon;
-    /// When drawing line, distance between points will be this
-    private double minPixelsBetweenPoints;
-    /// Initial tolerance for Douglas-Pecker algorithm
-    private double startingEps;
+    private FDSettings settings;
 
     private DrawnPolyLine line;
@@ -96,5 +84,5 @@
     FastDrawingMode(MapFrame mapFrame) {
         super(tr("FastDrawing"), "turbopen.png", tr("Fast drawing mode"), Shortcut.registerShortcut(
-                "mapmode:FastDraw",
+                "mapmode/building",
                 tr("Mode: {0}", tr("Fast drawing mode")),
                 KeyEvent.VK_T, Shortcut.GROUP_EDIT), mapFrame, Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
@@ -118,5 +106,9 @@
         if (!isEnabled()) return;
         super.enterMode();
-        loadPrefs();
+        settings=new FDSettings();
+        settings.loadPrefs();
+        settings.savePrefs();
+        
+        eps=settings.startingEps;
         mv = Main.map.mapView;
         line.setMv(mv);
@@ -150,5 +142,5 @@
         } catch (SecurityException ex) {
         }
-        savePrefs();
+        settings.savePrefs();
         Main.map.mapView.setCursor(cursorDraw);
         repaint();
@@ -182,7 +174,7 @@
         LatLon pp1, pp2;
         p1 = line.getPoint(pts.get(0));
-        g.setColor(COLOR_FIXED);
+        g.setColor(settings.COLOR_FIXED);
         g.fillOval(p1.x - 3, p1.y - 3, 7, 7);
-        Color lineColor=COLOR_NORMAL;
+        Color lineColor=settings.COLOR_NORMAL;
         if (pts.size() > 1) {
         Iterator<LatLon> it1,it2;
@@ -194,12 +186,12 @@
                 pp2 = it2.next();
                 p2 = line.getPoint(pp2);
-                if (shift && highlighted==pp1 && nearestIdx<0) {lineColor=COLOR_SELECTEDFRAGMENT;}
-                if (!shift && line.isLastPoint(i)) { lineColor=COLOR_EDITEDFRAGMENT; }
+                if (shift && highlighted==pp1 && nearestIdx<0) {lineColor=settings.COLOR_SELECTEDFRAGMENT;}
+                if (!shift && line.isLastPoint(i)) { lineColor=settings.COLOR_EDITEDFRAGMENT; }
                 g.setColor(lineColor);
                 g.drawLine(p1.x, p1.y, p2.x, p2.y);
   //                  g.fillOval(p2.x - 5, p2.y - 5, 11, 11);
                 if (line.isFixed(pp2)) {
-                    lineColor=COLOR_NORMAL;
-                    g.setColor(COLOR_FIXED);
+                    lineColor=settings.COLOR_NORMAL;
+                    g.setColor(settings.COLOR_FIXED);
                     g.fillOval(p2.x - 3, p2.y - 3, 7, 7);
                 } else {
@@ -210,5 +202,5 @@
                         // highlight node to delete
                         g.setStroke(strokeForDelete);
-                        g.setColor(COLOR_DELETE);
+                        g.setColor(settings.COLOR_DELETE);
                         g.drawLine(p2.x - 5, p2.y - 5,p2.x + 5, p2.y + 5);
                         g.drawLine(p2.x - 5, p2.y + 5,p2.x + 5, p2.y - 5);
@@ -218,5 +210,5 @@
                         // highlight node to toggle fixation
                         g.setStroke(strokeForDelete);
-                        g.setColor( line.isFixed(pp2) ? COLOR_NORMAL: COLOR_FIXED);
+                        g.setColor( line.isFixed(pp2) ? settings.COLOR_NORMAL: settings.COLOR_FIXED);
                         g.drawOval(p2.x - 5, p2.y - 5, 11, 11);
                         g.setStroke(strokeForOriginal);
@@ -248,5 +240,5 @@
 
 
-        int idx=line.findClosestPoint(e.getPoint(),maxDist);
+        int idx=line.findClosestPoint(e.getPoint(),settings.maxDist);
         if (idx==0 && !line.isClosed()) {
             line.closeLine();
@@ -258,5 +250,5 @@
         }
 
-        if (ctrl && shift) newDrawing();
+        if (ctrl && shift) {newDrawing();repaint();return;}
         if (!ctrl && shift) {
             if (idx>=0) {line.deleteNode(idx); nearestIdx=-1;}
@@ -278,5 +270,5 @@
 
         LatLon p = getLatLon(e);
-        Node nd1 = getNearestNode(e.getPoint(), maxDist);
+        Node nd1 = getNearestNode(e.getPoint(), settings.maxDist);
         if (nd1!=null) {
             // found node, make it fixed point of the line
@@ -314,9 +306,9 @@
     public void mouseMoved(MouseEvent e) {
         if (!isEnabled()) return;
-        Node nd1 = getNearestNode(e.getPoint(), maxDist);
+        Node nd1 = getNearestNode(e.getPoint(), settings.maxDist);
         boolean nearpoint2=nd1!=null;
         if (nearpoint!=nearpoint2) {nearpoint=nearpoint2;updateCursor();}
 
-        nearestIdx=line.findClosestPoint(e.getPoint(),maxDist);
+        nearestIdx=line.findClosestPoint(e.getPoint(),settings.maxDist);
 
         if (!drawing) {
@@ -350,5 +342,5 @@
             }
         } else {
-            if (Math.hypot(e.getX() - lastP.x, e.getY() - lastP.y) > minPixelsBetweenPoints) {
+            if (Math.hypot(e.getX() - lastP.x, e.getY() - lastP.y) > settings.minPixelsBetweenPoints) {
                 line.addLast(getLatLon(e)); // free mouse-drawing
                 repaint();
@@ -365,5 +357,5 @@
                 line.clearSimplifiedVersion();
                 repaint();
-                eps=startingEps;
+                eps=settings.startingEps;
             }
             back();
@@ -373,5 +365,5 @@
             if (!line.wasSimplified()) {
                 line.simplify(eps);
-                setStatusLine(SIMPLIFYMODE_MESSAGE);
+                setStatusLine(tr("Eps={0}, {1} points", eps, line.getSimplePointsCount())+" "+SIMPLIFYMODE_MESSAGE);
             } else saveAsWay();
         }
@@ -379,10 +371,10 @@
             // more details
             e.consume();
-            changeEpsilon(epsilonMult);
+            changeEpsilon(settings.epsilonMult);
         }
         if (e.getKeyCode() == KeyEvent.VK_UP) {
             // less details
             e.consume();
-            changeEpsilon(1/epsilonMult);
+            changeEpsilon(1/settings.epsilonMult);
         }
         if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
@@ -391,6 +383,15 @@
             line.moveToTheEnd();
         }
-
-
+        if (e.getKeyCode() == KeyEvent.VK_Q) {
+            // less details
+            e.consume();
+            try {
+                Toolkit.getDefaultToolkit().removeAWTEventListener(this);
+                new FastDrawConfigDialog(settings);
+                Toolkit.getDefaultToolkit().addAWTEventListener(this,
+                    AWTEvent.KEY_EVENT_MASK);
+            } catch (SecurityException ex) {  }
+            eps=settings.startingEps;
+        }
     }
 
@@ -414,5 +415,5 @@
 // <editor-fold defaultstate="collapsed" desc="Different action helper methods">
     public void newDrawing() {
-        eps=startingEps;
+        eps=settings.startingEps;
         line.clear();
     }
@@ -482,6 +483,7 @@
         //System.out.println(tr("Eps={0}", eps));
         eps*=k;
-        /* I18N: Eps = Epsilon, the tolerance parameter */ setStatusLine(tr("Eps={0}", eps));
         line.simplify(eps);
+        /* I18N: Eps = Epsilon, the tolerance parameter */ 
+        setStatusLine(tr("Eps={0}, {1} points", eps, line.getSimplePointsCount()));
         repaint();
     }
@@ -510,33 +512,5 @@
 
 
-    void loadPrefs() {
-        COLOR_DELETE = Main.pref.getColor("fastdraw.color.delete", Color.red);
-        COLOR_EDITEDFRAGMENT = Main.pref.getColor("fastdraw.color.edit", Color.orange);
-        COLOR_FIXED = Main.pref.getColor("fastdraw.color.fixed", Color.green);
-        COLOR_NORMAL = Main.pref.getColor("fastdraw.color.normal", Color.red);
-        COLOR_SELECTEDFRAGMENT = Main.pref.getColor("fastdraw.color.select", Color.blue);
-        maxDist = Main.pref.getDouble("fastdraw.maxdist", 5);
-        epsilonMult = Main.pref.getDouble("fastdraw.epsilonmult", 1.1);
-        //deltaLatLon = Main.pref.getDouble("fastdraw.deltasearch", 0.01);
-        minPixelsBetweenPoints = Main.pref.getDouble("fastdraw.mindelta", 20);
-        startingEps = Main.pref.getDouble("fastdraw.startingEps", 20);
-        eps=startingEps;
-    }
-
-    void savePrefs() {
-         Main.pref.putColor("fastdraw.color.delete", COLOR_DELETE );
-         Main.pref.putColor("fastdraw.color.edit", COLOR_EDITEDFRAGMENT);
-         Main.pref.putColor("fastdraw.color.fixed", COLOR_FIXED);
-         Main.pref.putColor("fastdraw.color.normal", COLOR_NORMAL);
-         Main.pref.putColor("fastdraw.color.select", COLOR_SELECTEDFRAGMENT);
-         Main.pref.putDouble("fastdraw.maxdist", maxDist);
-         Main.pref.putDouble("fastdraw.epsilonmult", epsilonMult);
-         //Main.pref.putDouble("fastdraw.deltasearch", deltaLatLon);
-         Main.pref.putDouble("fastdraw.mindelta",minPixelsBetweenPoints);
-         Main.pref.putDouble("fastdraw.startingEps",startingEps);
-         try {Main.pref.save();} catch (IOException e) {
-             System.err.println(tr("Can not save preferences"));
-         }
-    }
+
 
     private void updateCursor() {
Index: /applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/UtilsPlugin2.java
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/UtilsPlugin2.java	(revision 26263)
+++ /applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/UtilsPlugin2.java	(revision 26264)
@@ -40,5 +40,5 @@
         super(info);
 
-        JMenu toolsMenu = Main.main.menu.addMenu(marktr("More tools"), KeyEvent.VK_M, 4, "help");
+        JMenu toolsMenu = Main.main.menu.addMenu(marktr("More tools"), KeyEvent.VK_X, 4, "help");
         unglueRelation = MainMenu.add(toolsMenu, new UnGlueRelationAction());
         addIntersections = MainMenu.add(toolsMenu, new AddIntersectionsAction());
