Index: trunk/src/org/openstreetmap/josm/actions/SaveAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SaveAction.java	(revision 5013)
+++ trunk/src/org/openstreetmap/josm/actions/SaveAction.java	(revision 5014)
@@ -2,6 +2,6 @@
 package org.openstreetmap.josm.actions;
 
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 
 import java.awt.event.KeyEvent;
@@ -20,4 +20,5 @@
  */
 public class SaveAction extends SaveActionBase {
+    private static SaveAction instance = new SaveAction();
 
     /**
@@ -25,9 +26,14 @@
      * @param layer Save this layer.
      */
-    public SaveAction() {
+    private SaveAction() {
         super(tr("Save"), "save", tr("Save the current data."),
                 Shortcut.registerShortcut("system:save", tr("File: {0}", tr("Save")), KeyEvent.VK_S, Shortcut.CTRL));
         putValue("help", ht("/Action/Save"));
     }
+
+    public static SaveAction getInstance() {
+        return instance;
+    }
+
 
     @Override public File getFile(Layer layer) {
Index: trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 5013)
+++ trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 5014)
@@ -10,4 +10,5 @@
 import java.util.LinkedList;
 import java.util.List;
+
 import javax.swing.JFileChooser;
 import javax.swing.JOptionPane;
@@ -33,7 +34,6 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        if (!isEnabled()) {
-            return;
-        }
+        if (!isEnabled())
+            return;
         boolean saved = doSave();
         if (saved) {
@@ -60,5 +60,5 @@
     }
 
-    public boolean doSave(Layer layer, File file) {
+    public static boolean doSave(Layer layer, File file) {
         if(!checkSaveConditions(layer))
             return false;
@@ -66,5 +66,5 @@
     }
 
-    private boolean doInternalSave(Layer layer, File file) {
+    private static boolean doInternalSave(Layer layer, File file) {
         if (file == null)
             return false;
@@ -104,5 +104,5 @@
      * @return <code>true</code>, if it is safe to save.
      */
-    public boolean checkSaveConditions(Layer layer) {
+    public static boolean checkSaveConditions(Layer layer) {
         if (layer instanceof GpxLayer)
             return ((GpxLayer)layer).data != null;
@@ -153,5 +153,5 @@
      * @return <code>true</code>, if a save result in an empty data set.
      */
-    private boolean isDataSetEmpty(OsmDataLayer layer) {
+    private static boolean isDataSetEmpty(OsmDataLayer layer) {
         for (OsmPrimitive osm : layer.data.allNonDeletedPrimitives())
             if (!osm.isDeleted() || !osm.isNewOrUndeleted())
Index: trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 5013)
+++ trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 5014)
@@ -120,5 +120,5 @@
     public final RecentlyOpenedFilesMenu recentlyOpened = new RecentlyOpenedFilesMenu();
     public final OpenLocationAction openLocation = new OpenLocationAction();
-    public final JosmAction save = new SaveAction();
+    public final JosmAction save = SaveAction.getInstance();
     public final JosmAction saveAs = new SaveAsAction();
     public JosmAction sessionLoad;
Index: trunk/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java	(revision 5013)
+++ trunk/src/org/openstreetmap/josm/gui/io/SaveLayerTask.java	(revision 5014)
@@ -48,5 +48,5 @@
         try {
             parentMonitor.subTask(tr("Saving layer to ''{0}'' ...", layerInfo.getFile().toString()));
-            if (!new SaveAction().doSave(layerInfo.getLayer(), layerInfo.getFile())) {
+            if (!SaveAction.doSave(layerInfo.getLayer(), layerInfo.getFile())) {
                 setFailed(true);
                 return;
Index: trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 5013)
+++ trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 5014)
@@ -29,4 +29,5 @@
 import javax.swing.ImageIcon;
 import javax.swing.JComponent;
+import javax.swing.JButton;
 import javax.swing.JDialog;
 import javax.swing.JLabel;
@@ -44,5 +45,4 @@
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.gui.ExceptionDialogUtil;
-import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.io.SaveLayersModel.Mode;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -94,5 +94,5 @@
     }
 
-    private SideButton saveAndProceedActionButton = null;
+    private JButton saveAndProceedActionButton = null;
 
     /**
@@ -107,12 +107,12 @@
         saveAndProceedAction = new SaveAndProceedAction();
         model.addPropertyChangeListener(saveAndProceedAction);
-        pnl.add(saveAndProceedActionButton = new SideButton(saveAndProceedAction));
+        pnl.add(saveAndProceedActionButton = new JButton(saveAndProceedAction));
 
         discardAndProceedAction = new DiscardAndProceedAction();
         model.addPropertyChangeListener(discardAndProceedAction);
-        pnl.add(new SideButton(discardAndProceedAction));
+        pnl.add(new JButton(discardAndProceedAction));
 
         cancelAction = new CancelAction();
-        pnl.add(new SideButton(cancelAction));
+        pnl.add(new JButton(cancelAction));
 
         JPanel pnl2 = new JPanel();
Index: trunk/src/org/openstreetmap/josm/gui/layer/Layer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 5013)
+++ trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 5014)
@@ -366,5 +366,5 @@
 
         public void actionPerformed(ActionEvent e) {
-            new SaveAction().doSave(layer);
+            SaveAction.getInstance().doSave(layer);
         }
     }
Index: trunk/src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java	(revision 5013)
+++ trunk/src/org/openstreetmap/josm/io/session/OsmDataSessionExporter.java	(revision 5014)
@@ -19,7 +19,7 @@
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
+import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URL;
-import java.net.MalformedURLException;
 import java.util.Collection;
 import java.util.Collections;
@@ -35,6 +35,4 @@
 import javax.swing.SwingConstants;
 
-import org.w3c.dom.Element;
-
 import org.openstreetmap.josm.actions.SaveAction;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -46,4 +44,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.w3c.dom.Element;
 
 public class OsmDataSessionExporter implements SessionLayerExporter {
@@ -75,5 +74,5 @@
 
         public void actionPerformed(ActionEvent e) {
-            new SaveAction().doSave(layer);
+            SaveAction.getInstance().doSave(layer);
             updateEnabledState();
         }
