Index: trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 2684)
+++ trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 2685)
@@ -28,5 +28,37 @@
 public class AutoScaleAction extends JosmAction {
 
-    public static final String[] modes = { marktr("data"), marktr("layer"), marktr("selection"), marktr("conflict"), marktr("download") };
+    public static final String[] MODES = { marktr("data"), marktr("layer"), marktr("selection"), marktr("conflict"), marktr("download") };
+
+    /**
+     * Zooms the current map view to the currently selected primitives.
+     * Does nothing if there either isn't a current map view or if there isn't a current data
+     * layer.
+     * 
+     */
+    public static void zoomToSelection() {
+        if (Main.main == null || Main.main.getEditLayer() == null) return;
+        if (Main.map == null || Main.map.mapView == null) return;
+        Collection<OsmPrimitive> sel = new HashSet<OsmPrimitive>();
+        sel = Main.main.getEditLayer().data.getSelected();
+        if (sel.isEmpty()) {
+            JOptionPane.showMessageDialog(
+                    Main.parent,
+                    tr("Nothing selected to zoom to."),
+                    tr("Information"),
+                    JOptionPane.INFORMATION_MESSAGE
+            );
+            return;
+        }
+        BoundingXYVisitor bboxCalculator = new BoundingXYVisitor();
+        bboxCalculator.computeBoundingBox(sel);
+        // increase bbox by 0.001 degrees on each side. this is required
+        // especially if the bbox contains one single node, but helpful
+        // in most other cases as well.
+        bboxCalculator.enlargeBoundingBox();
+        if (bboxCalculator.getBounds() != null) {
+            Main.map.mapView.recalculateCenterScale(bboxCalculator);
+        }
+    }
+
     private final String mode;
 
Index: trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java	(revision 2685)
+++ trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java	(revision 2685)
@@ -0,0 +1,92 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions;
+
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.ButtonModel;
+
+import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetCacheManager;
+import org.openstreetmap.josm.tools.Shortcut;
+/**
+ * This action toggles the visibility of the {@see ChangesetCacheManager} dialog.
+ * 
+ */
+public class ChangesetManagerToggleAction extends JosmAction {
+    private final List<ButtonModel> buttonModels = new ArrayList<ButtonModel>();
+    //FIXME: replace with property Action.SELECTED_KEY when migrating to
+    // Java 6
+    private boolean selected;
+    private WindowListener changesetCacheManagerClosedHandler;
+
+    public ChangesetManagerToggleAction() {
+        super(
+                tr("Changeset Manager"),
+                "dialogs/changeset/changesetmanager",
+                tr("Toggle visibility of Changeset Manager window"),
+                Shortcut.registerShortcut(
+                        "menu:view:changesetdialog",
+                        tr("Toggle visibility of Changeset Manager window"),
+                        KeyEvent.VK_C,
+                        Shortcut.GROUPS_ALT2 + Shortcut.GROUP_HOTKEY
+                ),
+                true /* register shortcut */
+        );
+        notifySelectedState();
+        changesetCacheManagerClosedHandler = new ChangesetCacheManagerClosedHandler();
+        putValue("help", ht("/Action/ToggleChangesetManager"));
+    }
+
+    public void addButtonModel(ButtonModel model) {
+        if (model != null && !buttonModels.contains(model)) {
+            buttonModels.add(model);
+        }
+    }
+
+    public void removeButtonModel(ButtonModel model) {
+        if (model != null && buttonModels.contains(model)) {
+            buttonModels.remove(model);
+        }
+    }
+
+    protected void notifySelectedState() {
+        for (ButtonModel model: buttonModels) {
+            if (model.isSelected() != selected) {
+                model.setSelected(selected);
+            }
+        }
+    }
+
+    protected void toggleSelectedState() {
+        selected = !selected;
+        notifySelectedState();
+        if (selected) {
+            ChangesetCacheManager.getInstance().addWindowListener(changesetCacheManagerClosedHandler);
+            ChangesetCacheManager.getInstance().setVisible(true);
+        } else {
+            ChangesetCacheManager.getInstance().removeWindowListener(changesetCacheManagerClosedHandler);
+            ChangesetCacheManager.destroyInstance();
+        }
+    }
+
+    public void actionPerformed(ActionEvent e) {
+        toggleSelectedState();
+    }
+
+    private class ChangesetCacheManagerClosedHandler extends WindowAdapter {
+        @Override
+        public void windowClosed(WindowEvent e) {
+            selected = false;
+            notifySelectedState();
+            ChangesetCacheManager.getInstance().removeWindowListener(changesetCacheManagerClosedHandler);
+        }
+    }
+}
Index: trunk/src/org/openstreetmap/josm/actions/CloseChangesetAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CloseChangesetAction.java	(revision 2684)
+++ trunk/src/org/openstreetmap/josm/actions/CloseChangesetAction.java	(revision 2685)
@@ -132,5 +132,5 @@
                     return;
                 reader = new OsmServerChangesetReader();
-                ChangesetQuery query = new ChangesetQuery().forUser(userInfo.getId()).beingOpen();
+                ChangesetQuery query = new ChangesetQuery().forUser(userInfo.getId()).beingOpen(true);
                 changesets = reader.queryChangesets(
                         query,
