Index: src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 0)
+++ src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 0)
@@ -0,0 +1,98 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Dimension;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.plugins.PluginHandler;
+import org.openstreetmap.josm.tools.Shortcut;
+
+/**
+ * @author xeen
+ * 
+ * Opens a dialog with useful status information like version numbers for Java, JOSM and plugins
+ * Also includes preferences with stripped username and password
+ */
+public final class ShowStatusReportAction extends JosmAction {
+    public ShowStatusReportAction() {
+        super(
+                tr("Show Status Report"),
+                "clock",
+                tr("Show status report with useful information that can be attached to bugs"),
+                Shortcut.registerShortcut("help:showstatusreport", tr("Help: {0}",
+                        tr("Show Status Report")), KeyEvent.VK_R, Shortcut.GROUP_NONE), true);
+
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        StringBuilder text = new StringBuilder();
+        text.append(AboutAction.getTextBlock());
+        text.append("\n\n");
+        text.append("Java version: " + System.getProperty("java.version"));
+        text.append("\n\n");
+        text.append(PluginHandler.getBugReportText());
+        text.append("\n\n");
+        try {
+            BufferedReader input = new BufferedReader(new FileReader(Main.pref
+                    .getPreferencesDirFile()
+                    + File.separator + "preferences"));
+            try {
+                String line = null;
+
+                while ((line = input.readLine()) != null) {
+                    // Skip potential private information
+                    if (line.trim().toLowerCase().startsWith("osm-server.username"))
+                        continue;
+                    if (line.trim().toLowerCase().startsWith("osm-server.password"))
+                        continue;
+                    if (line.trim().toLowerCase().startsWith("marker.show"))
+                        continue;
+                    
+                    text.append(line);
+                    text.append("\n");
+                }
+            } finally {
+                input.close();
+            }
+        } catch (Exception x) {
+            x.printStackTrace();
+        }
+        
+        JTextArea ta = new JTextArea(text.toString());
+        ta.setWrapStyleWord(true);
+        ta.setLineWrap(true);
+        ta.setEditable(false);
+        JScrollPane sp = new JScrollPane(ta);
+        sp.setPreferredSize(new Dimension(600, 500));
+
+        int result = new ExtendedDialog(Main.parent, tr(tr("Status Report")), sp,
+                new String[] {tr("Copy to clipboard and close"), tr("Close") },
+                new String[] {"copy.png", "cancel.png" }).getValue();
+        
+        if(result != 1) return;
+        try {
+            Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
+                    new StringSelection(text.toString()), new ClipboardOwner() {
+                        public void lostOwnership(Clipboard clipboard, Transferable contents) {}
+                    }
+             );
+        }
+        catch (RuntimeException x) {}
+    }
+}
Index: src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- src/org/openstreetmap/josm/gui/MainMenu.java	(revision 1406)
+++ src/org/openstreetmap/josm/gui/MainMenu.java	(working copy)
@@ -6,21 +6,19 @@
 
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
 
 import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JMenu;
 import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;
 import javax.swing.KeyStroke;
-import java.awt.event.KeyEvent;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AboutAction;
 import org.openstreetmap.josm.actions.AddNodeAction;
 import org.openstreetmap.josm.actions.AlignInCircleAction;
 import org.openstreetmap.josm.actions.AlignInLineAction;
-import org.openstreetmap.josm.actions.OpenLocationAction;
-import org.openstreetmap.josm.actions.OrthogonalizeAction;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.CombineWayAction;
 import org.openstreetmap.josm.actions.CopyAction;
@@ -38,6 +36,8 @@
 import org.openstreetmap.josm.actions.MergeNodesAction;
 import org.openstreetmap.josm.actions.NewAction;
 import org.openstreetmap.josm.actions.OpenFileAction;
+import org.openstreetmap.josm.actions.OpenLocationAction;
+import org.openstreetmap.josm.actions.OrthogonalizeAction;
 import org.openstreetmap.josm.actions.PasteAction;
 import org.openstreetmap.josm.actions.PasteTagsAction;
 import org.openstreetmap.josm.actions.PreferencesAction;
@@ -46,7 +46,9 @@
 import org.openstreetmap.josm.actions.SaveAction;
 import org.openstreetmap.josm.actions.SaveAsAction;
 import org.openstreetmap.josm.actions.SelectAllAction;
+import org.openstreetmap.josm.actions.ShowStatusReportAction;
 import org.openstreetmap.josm.actions.SplitWayAction;
+import org.openstreetmap.josm.actions.ToggleGPXLinesAction;
 import org.openstreetmap.josm.actions.UnGlueAction;
 import org.openstreetmap.josm.actions.UndoAction;
 import org.openstreetmap.josm.actions.UnselectAllAction;
@@ -61,8 +63,6 @@
 import org.openstreetmap.josm.actions.audio.AudioPrevAction;
 import org.openstreetmap.josm.actions.audio.AudioSlowerAction;
 import org.openstreetmap.josm.actions.search.SearchAction;
-import org.openstreetmap.josm.actions.ToggleGPXLinesAction;
-import org.openstreetmap.josm.data.DataSetChecker;
 import org.openstreetmap.josm.tools.Shortcut;
 
 /**
@@ -130,6 +130,7 @@
     /* Help menu */
     public final HelpAction help = new HelpAction();
     public final JosmAction about = new AboutAction();
+    public final JosmAction statusreport = new ShowStatusReportAction();
 
     public final JMenu fileMenu = new JMenu(tr("File"));
     public final JMenu editMenu = new JMenu(tr("Edit"));
@@ -267,7 +268,10 @@
             }
         });
         helpMenu.add(check);*/
-        current = helpMenu.add(help); // why is help not a JosmAction?
+        
+        helpMenu.add(statusreport);
+        
+        current = helpMenu.add(help); // FIXME why is help not a JosmAction?
         current.setAccelerator(Shortcut.registerShortcut("system:help", tr("Help"), KeyEvent.VK_F1,
                 Shortcut.GROUP_DIRECT).getKeyStroke());
         add(helpMenu, about);
