Index: trunk/src/org/openstreetmap/josm/actions/UploadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 6653)
+++ trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 6654)
@@ -234,5 +234,5 @@
                 final HashMap<String, String> tags = new HashMap<String, String>(layer.data.getChangeSetTags());
                 if (!tags.containsKey("source")) {
-                    tags.put("source", Main.map.mapView.getLayerInformationForSourceTag());
+                    tags.put("source", dialog.getLastChangesetSourceFromHistory());
                 }
                 if (!tags.containsKey("comment")) {
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 6653)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 6654)
@@ -45,4 +45,5 @@
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.imagery.ImageryInfo;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DataSource;
@@ -979,5 +980,5 @@
         }
         for (final ImageryLayer i : getLayersOfType(ImageryLayer.class)) {
-            layerInfo.add(i.getName());
+            layerInfo.add(ImageryInfo.ImageryType.BING.equals(i.getInfo().getImageryType()) ? "Bing" : i.getName());
         }
         return Utils.join("; ", layerInfo);
Index: trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java	(revision 6653)
+++ trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java	(revision 6654)
@@ -21,10 +21,13 @@
 import javax.swing.Action;
 import javax.swing.BorderFactory;
-import javax.swing.JLabel;
+import javax.swing.JEditorPane;
 import javax.swing.JPanel;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkListener;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
+import org.openstreetmap.josm.gui.widgets.JosmEditorPane;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
@@ -54,5 +57,7 @@
         pnl.setLayout(new GridBagLayout());
 
-        pnl.add(new JLabel(tr("Provide a brief comment for the changes you are uploading:")), GBC.eol().insets(0, 5, 10, 3));
+        final JEditorPane commentLabel = JosmEditorPane.createJLabelLikePane();
+        commentLabel.setText("<html><b>" + tr("Provide a brief comment for the changes you are uploading:"));
+        pnl.add(commentLabel, GBC.eol().insets(0, 5, 10, 3));
         hcbUploadComment.setToolTipText(tr("Enter an upload comment"));
         hcbUploadComment.setMaxTextLength(Changeset.MAX_COMMENT_LENGTH);
@@ -65,7 +70,19 @@
         pnl.add(hcbUploadComment, GBC.eol().fill(GBC.HORIZONTAL));
 
-        pnl.add(new JLabel(tr("Specify the data source for the changes:")), GBC.eol().insets(0, 8, 10, 3));
+        final JEditorPane sourceLabel = JosmEditorPane.createJLabelLikePane();
+        sourceLabel.setText("<html><b>" + tr("Specify the data source for the changes")
+                + "</b> (<a href=\"urn:changeset-source\">" + tr("obtain from current layers") + "</a>)<b>:</b>");
+        sourceLabel.addHyperlinkListener(new HyperlinkListener() {
+            @Override
+            public void hyperlinkUpdate(HyperlinkEvent e) {
+                if (HyperlinkEvent.EventType.ACTIVATED.equals(e.getEventType())) {
+                    hcbUploadSource.setText(Main.map.mapView.getLayerInformationForSourceTag());
+                }
+            }
+        });
+        pnl.add(sourceLabel, GBC.eol().insets(0, 8, 10, 3));
+
         hcbUploadSource.setToolTipText(tr("Enter a source"));
-        List<String> sourceHistory = new LinkedList<String>(Main.pref.getCollection(SOURCE_HISTORY_KEY, Arrays.asList("knowledge", "survey")));
+        List<String> sourceHistory = new LinkedList<String>(Main.pref.getCollection(SOURCE_HISTORY_KEY, Arrays.asList("knowledge", "survey", "Bing")));
         Collections.reverse(sourceHistory); // we have to reverse the history, because ComboBoxHistory will reverse it again in addElement()
         hcbUploadSource.setPossibleItems(sourceHistory);
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 6653)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 6654)
@@ -590,6 +590,6 @@
     }
 
-    public String getLastChangesetCommentFromHistory() {
-        Collection<String> history = Main.pref.getCollection(BasicUploadSettingsPanel.HISTORY_KEY, new ArrayList<String>());
+    private String getLastChangesetTagFromHistory(String historyKey) {
+        Collection<String> history = Main.pref.getCollection(historyKey, new ArrayList<String>());
         int age = (int) (System.currentTimeMillis() / 1000 - Main.pref.getInteger(BasicUploadSettingsPanel.HISTORY_LAST_USED_KEY, 0));
         if (age < Main.pref.getInteger(BasicUploadSettingsPanel.HISTORY_MAX_AGE_KEY, 4 * 3600 * 1000) && history != null && !history.isEmpty()) {
@@ -599,3 +599,11 @@
         }
     }
+
+    public String getLastChangesetCommentFromHistory() {
+        return getLastChangesetTagFromHistory(BasicUploadSettingsPanel.HISTORY_KEY);
+    }
+
+    public String getLastChangesetSourceFromHistory() {
+        return getLastChangesetTagFromHistory(BasicUploadSettingsPanel.SOURCE_HISTORY_KEY);
+    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java	(revision 6653)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadParameterSummaryPanel.java	(revision 6654)
@@ -6,20 +6,15 @@
 
 import java.awt.BorderLayout;
-import java.awt.Font;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
-import java.text.MessageFormat;
 
 import javax.swing.BorderFactory;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.UIManager;
 import javax.swing.event.HyperlinkEvent;
 import javax.swing.event.HyperlinkListener;
-import javax.swing.text.html.StyleSheet;
 
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.gui.widgets.JosmEditorPane;
-import org.openstreetmap.josm.gui.widgets.JosmHTMLEditorKit;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -104,31 +99,6 @@
 
     protected void build() {
-        jepMessage = new JosmEditorPane("text/html", "");
-        jepMessage.setOpaque(false);
-        jepMessage.setEditable(false);
+        jepMessage = JosmEditorPane.createJLabelLikePane();
         jepMessage.addHyperlinkListener(this);
-        Font f = UIManager.getFont("Label.font");
-        StyleSheet ss = new StyleSheet();
-        String rule = MessageFormat.format(
-                "font-family: ''{0}'';font-size: {1,number}pt; font-weight: {2}; font-style: {3}",
-                f.getName(),
-                f.getSize(),
-                f.isBold() ? "bold" : "normal",
-                        f.isItalic() ? "italic" : "normal"
-        );
-        rule = "body {" + rule + "}";
-        rule = MessageFormat.format(
-                "font-family: ''{0}'';font-size: {1,number}pt; font-weight: {2}; font-style: {3}",
-                f.getName(),
-                f.getSize(),
-                "bold",
-                f.isItalic() ? "italic" : "normal"
-        );
-        rule = "strong {" + rule + "}";
-        ss.addRule(rule);
-        ss.addRule("a {text-decoration: underline; color: blue}");
-        JosmHTMLEditorKit kit = new JosmHTMLEditorKit();
-        kit.setStyleSheet(ss);
-        jepMessage.setEditorKit(kit);
 
         setLayout(new BorderLayout());
Index: trunk/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java	(revision 6653)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/JosmEditorPane.java	(revision 6654)
@@ -2,10 +2,14 @@
 package org.openstreetmap.josm.gui.widgets;
 
+import java.awt.Font;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.net.URLConnection;
+import java.text.MessageFormat;
 
 import javax.swing.JEditorPane;
+import javax.swing.UIManager;
+import javax.swing.text.html.StyleSheet;
 
 import org.openstreetmap.josm.tools.Utils;
@@ -75,3 +79,29 @@
         return result;
     }
+
+    /**
+     * Creates a {@link JosmEditorPane} which is meant to be used as a powerful replacement of {@link javax.swing.JLabel}.
+     */
+    public static JosmEditorPane createJLabelLikePane() {
+        final JosmEditorPane pane = new JosmEditorPane("text/html", "");
+        pane.setOpaque(false);
+        pane.setEditable(false);
+
+        JosmHTMLEditorKit kit = new JosmHTMLEditorKit();
+        final Font f = UIManager.getFont("Label.font");
+        final StyleSheet ss = new StyleSheet();
+        final String rule = MessageFormat.format(
+                "font-family: ''{0}'';font-size: {1,number}pt; font-weight: {2}; font-style: {3}",
+                f.getName(),
+                f.getSize(),
+                "bold",
+                f.isItalic() ? "italic" : "normal"
+        );
+        ss.addRule("strong {" + rule + "}");
+        ss.addRule("a {text-decoration: underline; color: blue}");
+        kit.setStyleSheet(ss);
+        pane.setEditorKit(kit);
+
+        return pane;
+    }
 }
