Index: trunk/src/org/openstreetmap/josm/actions/UploadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 2073)
+++ trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 2074)
@@ -19,4 +19,5 @@
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.logging.Logger;
 import java.util.regex.Matcher;
@@ -246,11 +247,11 @@
         );
         switch(ret) {
-        case JOptionPane.CLOSED_OPTION: return;
-        case JOptionPane.CANCEL_OPTION: return;
-        case 0: synchronizePrimitive(id); break;
-        case 1: synchronizeDataSet(); break;
-        default:
-            // should not happen
-            throw new IllegalStateException(tr("unexpected return value. Got {0}", ret));
+            case JOptionPane.CLOSED_OPTION: return;
+            case JOptionPane.CANCEL_OPTION: return;
+            case 0: synchronizePrimitive(id); break;
+            case 1: synchronizeDataSet(); break;
+            default:
+                // should not happen
+                throw new IllegalStateException(tr("unexpected return value. Got {0}", ret));
         }
     }
@@ -286,10 +287,10 @@
         );
         switch(ret) {
-        case JOptionPane.CLOSED_OPTION: return;
-        case 1: return;
-        case 0: synchronizeDataSet(); break;
-        default:
-            // should not happen
-            throw new IllegalStateException(tr("unexpected return value. Got {0}", ret));
+            case JOptionPane.CLOSED_OPTION: return;
+            case 1: return;
+            case 0: synchronizeDataSet(); break;
+            default:
+                // should not happen
+                throw new IllegalStateException(tr("unexpected return value. Got {0}", ret));
         }
     }
@@ -936,4 +937,7 @@
                 southTabbedPane.setTitleAt(1, tr("Tags of new changeset"));
                 Changeset cs = new Changeset();
+                Properties sysProp = System.getProperties();
+                Object ua = sysProp.get("http.agent");
+                cs.put("created_by", (ua == null) ? "JOSM" : ua.toString());
                 tagEditorPanel.getModel().initFromPrimitive(cs);
             } else {
Index: trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 2073)
+++ trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 2074)
@@ -278,44 +278,18 @@
     }
 
-    /**
-     * Creates the changeset to be used for subsequent uploads.
+
+    /**
+     * Creates a new changeset based on the keys in <code>changeset</code>
      * 
-     * If changesetProcessingType is {@see ChangesetProcessingType#USE_NEW} creates a new changeset based
-     * on <code>changeset</code>. Otherwise uses the changeset given by {@see OsmApi#getCurrentChangeset()}.
-     * If this changeset is null or has an id of value 0, a new changeset is created too.
-     * 
-     * @param changeset the changeset to be used for uploading if <code>changesetProcessingType</code> is
-     *   {@see ChangesetProcessingType#USE_NEW}
-     * @param changesetProcessingType  how to handel changesets; set to {@see ChangesetProcessingType#USE_NEW} if null
+     * @param changeset the changeset to be used for uploading
      * @param progressMonitor the progress monitor
      * @throws OsmTransferException signifying a non-200 return code, or connection errors
      */
-    public void createChangeset(Changeset changeset, ChangesetProcessingType changesetProcessingType, ProgressMonitor progressMonitor) throws OsmTransferException {
-        if (changesetProcessingType == null) {
-            changesetProcessingType = ChangesetProcessingType.USE_NEW_AND_CLOSE;
-        }
+    public void createChangeset(Changeset changeset, ProgressMonitor progressMonitor) throws OsmTransferException {
         try {
             progressMonitor.beginTask((tr("Creating changeset...")));
-            if (changesetProcessingType.isUseNew()) {
-                Properties sysProp = System.getProperties();
-                Object ua = sysProp.get("http.agent");
-                changeset.put("created_by", (ua == null) ? "JOSM" : ua.toString());
-                createPrimitive(changeset, progressMonitor);
-                this.changeset = changeset;
-                progressMonitor.setCustomText((tr("Successfully opened changeset {0}",changeset.getId())));
-            } else {
-                if (this.changeset == null || this.changeset.getId() == 0) {
-                    progressMonitor.setCustomText((tr("No currently open changeset. Opening a new changeset...")));
-                    System.out.println(tr("Warning: could not reuse an existing changeset as requested. Opening a new one."));
-                    Properties sysProp = System.getProperties();
-                    Object ua = sysProp.get("http.agent");
-                    changeset.put("created_by", (ua == null) ? "JOSM" : ua.toString());
-                    createPrimitive(changeset, progressMonitor);
-                    this.changeset = changeset;
-                    progressMonitor.setCustomText((tr("Successfully opened changeset {0}",this.changeset.getId())));
-                } else {
-                    progressMonitor.setCustomText((tr("Reusing existing changeset {0}", this.changeset.getId())));
-                }
-            }
+            createPrimitive(changeset, progressMonitor);
+            this.changeset = changeset;
+            progressMonitor.setCustomText((tr("Successfully opened changeset {0}",this.changeset.getId())));
         } finally {
             progressMonitor.finishTask();
@@ -324,29 +298,28 @@
 
     /**
-     * Update a changeset on the server.
-     *
-     * @param changeset the changeset to update
+     * Updates the current changeset with the keys in  <code>changesetUpdate</code>.
+     *
+     * @param changesetUpdate the changeset to update
      * @param progressMonitor the progress monitor
      * 
      * @throws OsmTransferException if something goes wrong.
      */
-    public void updateChangeset(Changeset changeset, ProgressMonitor progressMonitor) throws OsmTransferException {
+    public void updateChangeset(Changeset changesetUpdate, ProgressMonitor progressMonitor) throws OsmTransferException {
         try {
             progressMonitor.beginTask(tr("Updating changeset..."));
             initialize(progressMonitor);
             if (this.changeset != null && this.changeset.getId() > 0) {
-                if (this.changeset.hasEqualSemanticAttributes(changeset)) {
-                    progressMonitor.setCustomText(tr("Changeset {0} is unchanged. Skipping update.", changeset.getId()));
+                if (this.changeset.hasEqualSemanticAttributes(changesetUpdate)) {
+                    progressMonitor.setCustomText(tr("Changeset {0} is unchanged. Skipping update.", changesetUpdate.getId()));
                     return;
                 }
-                this.changeset.setKeys(changeset.getKeys());
-                progressMonitor.setCustomText(tr("Updating changeset {0}...", changeset.getId()));
+                this.changeset.setKeys(changesetUpdate.getKeys());
+                progressMonitor.setCustomText(tr("Updating changeset {0}...", this.changeset.getId()));
                 sendRequest(
                         "PUT",
-                        OsmPrimitiveType.from(changeset).getAPIName() + "/" + changeset.getId(),
-                        toXml(changeset, true),
+                        OsmPrimitiveType.from(changesetUpdate).getAPIName() + "/" + this.changeset.getId(),
+                        toXml(this.changeset, true),
                         progressMonitor
                 );
-                this.changeset = changeset;
             } else
                 throw new OsmTransferException(tr("Failed to update changeset. Either there is no current changeset or the id of the current changeset is 0"));
Index: trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 2073)
+++ trunk/src/org/openstreetmap/josm/io/OsmServerWriter.java	(revision 2074)
@@ -92,5 +92,5 @@
             progressMonitor.setTicksCount(primitives.size());
             if (changesetProcessingType.isUseNew()) {
-                api.createChangeset(changeset, changesetProcessingType,progressMonitor.createSubTaskMonitor(0, false));
+                api.createChangeset(changeset,progressMonitor.createSubTaskMonitor(0, false));
             } else {
                 api.updateChangeset(changeset,progressMonitor.createSubTaskMonitor(0, false));
@@ -102,7 +102,7 @@
                 String msg = "";
                 switch(OsmPrimitiveType.from(osm)) {
-                case NODE: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading node ''{4}'' (id: {5})"); break;
-                case WAY: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading way ''{4}'' (id: {5})"); break;
-                case RELATION: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading relation ''{4}'' (id: {5})"); break;
+                    case NODE: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading node ''{4}'' (id: {5})"); break;
+                    case WAY: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading way ''{4}'' (id: {5})"); break;
+                    case RELATION: msg = marktr("{0}% ({1}/{2}), {3} left. Uploading relation ''{4}'' (id: {5})"); break;
                 }
                 progressMonitor.subTask(
@@ -151,5 +151,5 @@
         try {
             if (changesetProcessingType.isUseNew()) {
-                api.createChangeset(changeset, changesetProcessingType,progressMonitor.createSubTaskMonitor(0, false));
+                api.createChangeset(changeset,progressMonitor.createSubTaskMonitor(0, false));
             } else {
                 api.updateChangeset(changeset,progressMonitor.createSubTaskMonitor(0, false));
