Index: /applications/editors/josm/plugins/DirectUpload/.classpath
===================================================================
--- /applications/editors/josm/plugins/DirectUpload/.classpath	(revision 29717)
+++ /applications/editors/josm/plugins/DirectUpload/.classpath	(revision 29718)
@@ -2,5 +2,5 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/JOSM"/>
 	<classpathentry kind="output" path="bin"/>
Index: /applications/editors/josm/plugins/DirectUpload/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- /applications/editors/josm/plugins/DirectUpload/.settings/org.eclipse.jdt.core.prefs	(revision 29718)
+++ /applications/editors/josm/plugins/DirectUpload/.settings/org.eclipse.jdt.core.prefs	(revision 29718)
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
Index: /applications/editors/josm/plugins/DirectUpload/build.xml
===================================================================
--- /applications/editors/josm/plugins/DirectUpload/build.xml	(revision 29717)
+++ /applications/editors/josm/plugins/DirectUpload/build.xml	(revision 29718)
@@ -1,181 +1,23 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-** This is the build file for the DirectUpload plugin
-**
-** Maintaining versions
-** ====================
-** see README.template
-**
-** Usage
-** =====
-** To build it run
-**
-**    > ant  dist
-**
-** To install the generated plugin locally (in your default plugin directory) run
-**
-**    > ant  install
-**
-** To build against the core in ../../core, create a correct manifest and deploy to
-** SVN,
-**    set the properties commit.message and plugin.main.version
-** and run
-**    > ant  publish
-**
-**
--->
 <project name="DirectUpload" default="dist" basedir=".">
+
+    <!-- enter the SVN commit message -->
     <property name="commit.message" value="applied JOSM Ticket 4498 (patch by ax) - oauth support for gpx upload (I accidentally committed parts of the path in [24236])"/>
+    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
     <property name="plugin.main.version" value="5053"/>
-    <property name="josm" location="../../core/dist/josm-custom.jar"/>
-    <property name="plugin.dist.dir" value="../../dist"/>
-    <property name="plugin.build.dir" value="build"/>
-    <property name="plugin.jar" value="${plugin.dist.dir}/${ant.project.name}.jar"/>
-    <property name="ant.build.javac.target" value="1.5"/>
-    <target name="init">
-        <mkdir dir="${plugin.build.dir}"/>
-    </target>
-    <target name="compile" depends="init">
-        <echo message="creating ${plugin.jar}"/>
-        <javac srcdir="src" classpath="${josm}" debug="true" destdir="${plugin.build.dir}">
-            <compilerarg value="-Xlint:deprecation"/>
-            <compilerarg value="-Xlint:unchecked"/>
-        </javac>
-    </target>
-    <target name="dist" depends="compile,revision">
-        <copy todir="${plugin.build.dir}/images">
-            <fileset dir="images"/>
-        </copy>
-        <copy todir="${plugin.build.dir}/data">
-            <fileset dir="data"/>
-        </copy>
-        <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}">
-            <manifest>
-                <attribute name="Author" value="Subhodip Biswas"/>
-                <attribute name="Plugin-Class" value="org.openstreetmap.josm.plugins.DirectUpload.UploadDataGuiPlugin"/>
-                <attribute name="Plugin-Date" value="${version.entry.commit.date}"/>
-                <attribute name="Plugin-Description" value="This plugin directly upload GPS Traces from current active layer in JOSM to openstreetmap.org."/>
-                <attribute name="Plugin-Icon" value="images/UploadAction.png"/>
-                <attribute name="Plugin-Link" value="http://wiki.openstreetmap.org/index.php/User:Subhodip/GSoC_Doc#DirectUpload_Plugin_in_JOSM_:"/>
-                <attribute name="Plugin-Mainversion" value="${plugin.main.version}"/>
-                <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
-            </manifest>
-        </jar>
-    </target>
-    <target name="revision">
-        <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="info"/>
-            <arg value="--xml"/>
-            <arg value="."/>
-        </exec>
-        <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
-        <delete file="REVISION"/>
-    </target>
-    <target name="clean">
-        <delete dir="${plugin.build.dir}"/>
-        <delete file="${plugin.jar}"/>
-    </target>
-    <target name="install" depends="dist">
-        <property environment="env"/>
-        <condition property="josm.plugins.dir" value="${env.APPDATA}/JOSM/plugins" else="${user.home}/.josm/plugins">
-            <and>
-                <os family="windows"/>
-            </and>
-        </condition>
-        <copy file="${plugin.jar}" todir="${josm.plugins.dir}"/>
-    </target>
-    <!--
-     ************************** Publishing the plugin ***********************************
+
+    <!-- Configure these properties (replace "..." accordingly).
+         See http://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins
     -->
-    <!--
-    ** extracts the JOSM release for the JOSM version in ../core and saves it in the
-    ** property ${coreversion.info.entry.revision}
-    **
-    -->
-    <target name="core-info">
-        <exec append="false" output="core.info.xml" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="info"/>
-            <arg value="--xml"/>
-            <arg value="../../core"/>
-        </exec>
-        <xmlproperty file="core.info.xml" prefix="coreversion" keepRoot="true" collapseAttributes="true"/>
-        <echo>Building against core revision ${coreversion.info.entry.revision}.</echo>
-        <echo>Plugin-Mainversion is set to ${plugin.main.version}.</echo>
-        <delete file="core.info.xml"/>
-    </target>
-    <!--
-    ** commits the source tree for this plugin
-    -->
-    <target name="commit-current">
-        <echo>Commiting the plugin source with message '${commit.message}' ...</echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="commit"/>
-            <arg value="-m '${commit.message}'"/>
-            <arg value="."/>
-        </exec>
-    </target>
-    <!--
-    ** updates (svn up) the source tree for this plugin
-    -->
-    <target name="update-current">
-        <echo>Updating plugin source ...</echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="up"/>
-            <arg value="."/>
-        </exec>
-        <echo>Updating ${plugin.jar} ...</echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="up"/>
-            <arg value="../dist/${plugin.jar}"/>
-        </exec>
-    </target>
-    <!--
-    ** commits the plugin.jar
-    -->
-    <target name="commit-dist">
-        <echo>
-***** Properties of published ${plugin.jar} *****
-Commit message    : '${commit.message}'
-Plugin-Mainversion: ${plugin.main.version}
-JOSM build version: ${coreversion.info.entry.revision}
-Plugin-Version    : ${version.entry.commit.revision}
-***** / Properties of published ${plugin.jar} *****
+    <property name="plugin.author" value="Subhodip Biswas"/>
+    <property name="plugin.class" value="org.openstreetmap.josm.plugins.DirectUpload.UploadDataGuiPlugin"/>
+    <property name="plugin.description" value="This plugin directly upload GPS Traces from current active layer in JOSM to openstreetmap.org."/>
+    <property name="plugin.icon" value="images/UploadAction.png"/>
+    <property name="plugin.link" value="http://wiki.openstreetmap.org/index.php/User:Subhodip/GSoC_Doc#DirectUpload_Plugin_in_JOSM_:"/>
+    <!--<property name="plugin.early" value="..."/>-->
+    <!--<property name="plugin.requires" value="..."/>-->
+    <!--<property name="plugin.stage" value="..."/>-->
 
-Now commiting ${plugin.jar} ...
-</echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="-m '${commit.message}'"/>
-            <arg value="commit"/>
-            <arg value="${plugin.jar}"/>
-        </exec>
-    </target>
-    <!-- ** make sure svn is present as a command line tool ** -->
-    <target name="ensure-svn-present">
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false" failonerror="false" resultproperty="svn.exit.code">
-            <env key="LANG" value="C"/>
-            <arg value="--version"/>
-        </exec>
-        <fail message="Fatal: command 'svn --version' failed. Please make sure svn is installed on your system.">
-            <!-- return code not set at all? Most likely svn isn't installed -->
-            <condition>
-                <not>
-                    <isset property="svn.exit.code"/>
-                </not>
-            </condition>
-        </fail>
-        <fail message="Fatal: command 'svn --version' failed. Please make sure a working copy of svn is installed on your system.">
-            <!-- error code from SVN? Most likely svn is not what we are looking on this system -->
-            <condition>
-                <isfailure code="${svn.exit.code}"/>
-            </condition>
-        </fail>
-    </target>
-    <target name="publish" depends="ensure-svn-present,core-info,commit-current,update-current,clean,dist,commit-dist">
-    </target>
+    <!-- ** include targets that all plugins have in common ** -->
+    <import file="../build-common.xml"/>
 </project>
Index: /applications/editors/josm/plugins/DirectUpload/src/org/openstreetmap/josm/plugins/DirectUpload/UploadDataGui.java
===================================================================
--- /applications/editors/josm/plugins/DirectUpload/src/org/openstreetmap/josm/plugins/DirectUpload/UploadDataGui.java	(revision 29717)
+++ /applications/editors/josm/plugins/DirectUpload/src/org/openstreetmap/josm/plugins/DirectUpload/UploadDataGui.java	(revision 29718)
@@ -39,4 +39,5 @@
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.io.GpxWriter;
@@ -242,18 +243,30 @@
             if (canceled) {
                 conn.disconnect();
-                OutputDisplay.setText(tr("Upload canceled"));
-                buttons.get(0).setEnabled(true);
+                GuiHelper.runInEDT(new Runnable() {
+                    @Override public void run() {
+                        OutputDisplay.setText(tr("Upload canceled"));
+                        buttons.get(0).setEnabled(true);
+                    }
+                });
                 canceled = false;
             }
             else {
-                boolean success = finishUpConnection(conn);
-                buttons.get(0).setEnabled(!success);
-                if (success) {
-                    buttons.get(1).setText(tr("Close"));
+                final boolean success = finishUpConnection(conn);
+                GuiHelper.runInEDT(new Runnable() {
+                    @Override public void run() {
+                        buttons.get(0).setEnabled(!success);
+                        if (success) {
+                            buttons.get(1).setText(tr("Close"));
+                        }
+                    }
+                });
+            }
+        }
+        catch (Exception e) {
+            GuiHelper.runInEDT(new Runnable() {
+                @Override public void run() {
+                    OutputDisplay.setText(tr("Error while uploading"));
                 }
-            }
-        }
-        catch (Exception e) {
-            OutputDisplay.setText(tr("Error while uploading"));
+            });
             e.printStackTrace();
         }
@@ -300,5 +313,5 @@
     private boolean finishUpConnection(HttpURLConnection c) throws Exception {
         String returnMsg = c.getResponseMessage();
-        boolean success = returnMsg.equals("OK");
+        final boolean success = returnMsg.equals("OK");
 
         if (c.getResponseCode() != 200) {
@@ -306,8 +319,14 @@
                 returnMsg += "\n" + c.getHeaderField("Error");
         }
-
-        OutputDisplay.setText(success
-            ? tr("GPX upload was successful")
-            : tr("Upload failed. Server returned the following message: ") + returnMsg);
+        
+        final String returnMsgEDT = returnMsg;
+
+        GuiHelper.runInEDT(new Runnable() {
+            @Override public void run() {
+                OutputDisplay.setText(success
+                        ? tr("GPX upload was successful")
+                        : tr("Upload failed. Server returned the following message: ") + returnMsgEDT);
+            }
+        });
 
         c.disconnect();
@@ -385,5 +404,12 @@
             errors += tr("No GPX layer selected. Cannot upload a trace.");
 
-        OutputDisplay.setText(errors);
+        final String errorsEDT = errors;
+        
+        GuiHelper.runInEDT(new Runnable() {
+            @Override public void run() {
+                OutputDisplay.setText(errorsEDT);
+            }
+        });
+        
         return errors.length() > 0;
     }
