Index: trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java	(revision 11848)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.Utils;
 
 public abstract class AbstractMergeAction extends JosmAction {
@@ -100,5 +101,6 @@
     protected void warnNoTargetLayersForSourceLayer(Layer sourceLayer) {
         JOptionPane.showMessageDialog(Main.parent,
-                tr("<html>There are no layers the source layer<br>''{0}''<br>could be merged to.</html>", sourceLayer.getName()),
+                tr("<html>There are no layers the source layer<br>''{0}''<br>could be merged to.</html>",
+                        Utils.escapeReservedCharactersHTML(sourceLayer.getName())),
                 tr("No target layers"), JOptionPane.WARNING_MESSAGE);
     }
Index: trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 11848)
@@ -130,5 +130,8 @@
                         "<b>This is not the recommended way of merging such data</b>.<br />"+
                         "You should instead check and merge each object, one by one, by using ''<i>Merge selection</i>''.<br /><br />"+
-                        "Are you sure you want to continue?", sourceLayer.getName(), targetLayer.getName(), targetLayer.getName())+
+                        "Are you sure you want to continue?",
+                        Utils.escapeReservedCharactersHTML(sourceLayer.getName()),
+                        Utils.escapeReservedCharactersHTML(targetLayer.getName()),
+                        Utils.escapeReservedCharactersHTML(targetLayer.getName()))+
                 "</html>",
                 ImageProvider.get("dialogs", "mergedown"), tr("Ignore this hint and merge anyway"));
Index: trunk/src/org/openstreetmap/josm/actions/MergeSelectionAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeSelectionAction.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/actions/MergeSelectionAction.java	(revision 11848)
@@ -18,4 +18,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -90,5 +91,7 @@
                         "You should instead check and merge each object, <b>one by one</b>.<br /><br />"+
                         "Are you sure you want to continue?",
-                        getLayerManager().getEditLayer().getName(), targetLayer.getName(), targetLayer.getName())+
+                        Utils.escapeReservedCharactersHTML(getLayerManager().getEditLayer().getName()),
+                        Utils.escapeReservedCharactersHTML(targetLayer.getName()),
+                        Utils.escapeReservedCharactersHTML(targetLayer.getName()))+
                 "</html>",
                 ImageProvider.get("dialogs", "mergedown"), tr("Ignore this hint and merge anyway"));
Index: trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 11848)
@@ -39,4 +39,5 @@
 import org.openstreetmap.josm.tools.MultiMap;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
@@ -182,5 +183,5 @@
                         files.size(),
                         files.size(),
-                        importer.filter.getDescription()
+                        Utils.escapeReservedCharactersHTML(importer.filter.getDescription())
                     )
             ).append("<br><ul>");
Index: trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java	(revision 11848)
@@ -190,5 +190,5 @@
                     Main.parent,
                     tr("<html>Could not load session file ''{0}''.<br>Error is:<br>{1}</html>",
-                            uri != null ? uri : file.getName(), e.getMessage()),
+                            uri != null ? uri : file.getName(), Utils.escapeReservedCharactersHTML(e.getMessage())),
                     dialogTitle,
                     JOptionPane.ERROR_MESSAGE,
Index: trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/actions/SessionSaveAsAction.java	(revision 11848)
@@ -170,5 +170,6 @@
             HelpAwareOptionPane.showMessageDialogInEDT(
                     Main.parent,
-                    tr("<html>Could not save session file ''{0}''.<br>Error is:<br>{1}</html>", file.getName(), ex.getMessage()),
+                    tr("<html>Could not save session file ''{0}''.<br>Error is:<br>{1}</html>",
+                            file.getName(), Utils.escapeReservedCharactersHTML(ex.getMessage())),
                     tr("IO Error"),
                     JOptionPane.ERROR_MESSAGE,
Index: trunk/src/org/openstreetmap/josm/actions/UploadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 11848)
@@ -29,4 +29,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -154,5 +155,5 @@
                 Main.parent,
                 tr("<html>The data to be uploaded participates in unresolved conflicts of layer ''{0}''.<br>"
-                        + "You have to resolve them first.</html>", layer.getName()
+                        + "You have to resolve them first.</html>", Utils.escapeReservedCharactersHTML(layer.getName())
                 ),
                 tr("Warning"),
@@ -173,5 +174,5 @@
                     "Sending data from this layer is <b>strongly discouraged</b>. If you continue,<br />"+
                     "it may require you subsequently have to revert your changes, or force other contributors to.<br /><br />"+
-                    "Are you sure you want to continue?", layer.getName())+
+                    "Are you sure you want to continue?", Utils.escapeReservedCharactersHTML(layer.getName()))+
                 "</html>",
                 ImageProvider.get("upload"), tr("Ignore this hint and upload anyway"));
Index: trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/command/conflict/ConflictAddCommand.java	(revision 11848)
@@ -17,4 +17,5 @@
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -41,6 +42,6 @@
                         + "''{1}''.<br>"
                         + "This conflict cannot be added.</html>",
-                        getLayer().getName(),
-                        conflict.getMy().getDisplayName(DefaultNameFormatter.getInstance())
+                        Utils.escapeReservedCharactersHTML(getLayer().getName()),
+                        Utils.escapeReservedCharactersHTML(conflict.getMy().getDisplayName(DefaultNameFormatter.getInstance()))
                 ),
                 tr("Double conflict"),
Index: trunk/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/corrector/ReverseWayNoTagCorrector.java	(revision 11848)
@@ -86,5 +86,5 @@
                 + "Do you really want to change the way direction, thus its semantic meaning?</html>",
                 tags.size(),
-                way.getDisplayName(DefaultNameFormatter.getInstance()),
+                Utils.escapeReservedCharactersHTML(way.getDisplayName(DefaultNameFormatter.getInstance())),
                 Utils.joinAsHtmlUnorderedList(tags)
             );
Index: trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 11848)
@@ -35,4 +35,5 @@
 import org.openstreetmap.josm.tools.LanguageInfo;
 import org.openstreetmap.josm.tools.MultiMap;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -872,5 +873,5 @@
         String desc = getDescription();
         if (desc != null && !desc.isEmpty()) {
-            res.append("<br>").append(desc);
+            res.append("<br>").append(Utils.escapeReservedCharactersHTML(desc));
             html = true;
         }
Index: trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 11848)
@@ -79,4 +79,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -587,5 +588,5 @@
         private JLabel popupBuildPrimitiveLabels(final OsmPrimitive osm) {
             final StringBuilder text = new StringBuilder(32);
-            String name = osm.getDisplayName(DefaultNameFormatter.getInstance());
+            String name = Utils.escapeReservedCharactersHTML(osm.getDisplayName(DefaultNameFormatter.getInstance()));
             if (osm.isNewOrUndeleted() || osm.isModified()) {
                 name = "<i><b>"+ name + "*</b></i>";
@@ -601,5 +602,6 @@
 
             if (osm.getUser() != null) {
-                text.append(" [").append(tr("User:")).append(' ').append(osm.getUser().getName()).append(']');
+                text.append(" [").append(tr("User:")).append(' ')
+                    .append(Utils.escapeReservedCharactersHTML(osm.getUser().getName())).append(']');
             }
 
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(revision 11848)
@@ -29,4 +29,5 @@
 import org.openstreetmap.josm.gui.history.VersionInfoPanel;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -315,5 +316,5 @@
         StringBuilder str = new StringBuilder("<html>");
         for (OsmPrimitive r: referrers) {
-            str.append(r.getDisplayName(DefaultNameFormatter.getInstance())).append("<br>");
+            str.append(Utils.escapeReservedCharactersHTML(r.getDisplayName(DefaultNameFormatter.getInstance()))).append("<br>");
         }
         str.append("</html>");
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java	(revision 11848)
@@ -67,5 +67,7 @@
                 JOptionPane.showMessageDialog(
                         Main.parent,
-                        tr("<html>Error in filter <code>{0}</code>:<br>{1}", Utils.shortenString(filter.text, 80), e.getMessage()),
+                        tr("<html>Error in filter <code>{0}</code>:<br>{1}",
+                                Utils.escapeReservedCharactersHTML(Utils.shortenString(filter.text, 80)),
+                                Utils.escapeReservedCharactersHTML(e.getMessage())),
                         tr("Error in filter"),
                         JOptionPane.ERROR_MESSAGE);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 11848)
@@ -55,4 +55,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
+import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
 
@@ -199,5 +200,5 @@
                         + "edit layer ''{0}''.</html>",
                         primitives.size(),
-                        Main.getLayerManager().getEditLayer().getName()
+                        Utils.escapeReservedCharactersHTML(Main.getLayerManager().getEditLayer().getName())
                 ),
                 title, JOptionPane.WARNING_MESSAGE, helpTopic
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java	(revision 11848)
@@ -43,4 +43,5 @@
 import org.openstreetmap.josm.io.OnlineResource;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -340,5 +341,5 @@
                             + "edit layer ''{1}''.</html>",
                             currentChangeset.getId(),
-                            Main.getLayerManager().getEditLayer().getName()
+                            Utils.escapeReservedCharactersHTML(Main.getLayerManager().getEditLayer().getName())
                     ),
                     tr("Nothing to select"),
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 11848)
@@ -46,4 +46,5 @@
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
@@ -347,5 +348,5 @@
                     + "{0}<br>"
                     + "is deleted on the server. It cannot be loaded</html>",
-                    r.getDisplayName(DefaultNameFormatter.getInstance())
+                    Utils.escapeReservedCharactersHTML(r.getDisplayName(DefaultNameFormatter.getInstance()))
             );
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 11848)
@@ -98,4 +98,5 @@
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.WindowGeometry;
 
@@ -872,5 +873,5 @@
                 + "<br>"
                 + "Do you really want to add another relation member?</html>",
-                primitive.getDisplayName(DefaultNameFormatter.getInstance())
+                Utils.escapeReservedCharactersHTML(primitive.getDisplayName(DefaultNameFormatter.getInstance()))
             );
         int ret = ConditionalOptionPaneUtil.showOptionDialog(
@@ -906,5 +907,5 @@
                 + "This creates circular references and is therefore discouraged.<br>"
                 + "Skipping relation ''{0}''.</html>",
-                primitive.getDisplayName(DefaultNameFormatter.getInstance()));
+                Utils.escapeReservedCharactersHTML(primitive.getDisplayName(DefaultNameFormatter.getInstance())));
         JOptionPane.showMessageDialog(
                 Main.parent,
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 11848)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -152,6 +153,6 @@
                         + "''{1}''.<br>"
                         + "Please resolve this conflict first, then try again.</html>",
-                        layer.getName(),
-                        editor.getRelation().getDisplayName(DefaultNameFormatter.getInstance())
+                        Utils.escapeReservedCharactersHTML(layer.getName()),
+                        Utils.escapeReservedCharactersHTML(editor.getRelation().getDisplayName(DefaultNameFormatter.getInstance()))
                 ),
                 tr("Double conflict"),
Index: trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 11848)
@@ -152,5 +152,5 @@
             text = tr("<html>Version <strong>{0}</strong> currently edited in layer ''{1}''</html>",
                     Long.toString(version),
-                    editLayer == null ? tr("unknown") : editLayer.getName()
+                    editLayer == null ? tr("unknown") : Utils.escapeReservedCharactersHTML(editLayer.getName())
                     );
         } else {
Index: trunk/src/org/openstreetmap/josm/gui/io/ChangesetCellRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/ChangesetCellRenderer.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/io/ChangesetCellRenderer.java	(revision 11848)
@@ -15,4 +15,5 @@
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -42,5 +43,6 @@
         String comment = cs.get("comment");
         if (comment != null) {
-            sb.append("<strong>").append(tr("Changeset comment:")).append("</strong>").append(comment).append("<br>");
+            sb.append("<strong>").append(tr("Changeset comment:")).append("</strong>")
+              .append(Utils.escapeReservedCharactersHTML(comment)).append("<br>");
         }
         return sb.toString();
Index: trunk/src/org/openstreetmap/josm/gui/io/SaveLayersTableColumnModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/SaveLayersTableColumnModel.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/io/SaveLayersTableColumnModel.java	(revision 11848)
@@ -16,4 +16,5 @@
 
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Utils;
 
 class SaveLayersTableColumnModel extends DefaultTableColumnModel {
@@ -42,7 +43,8 @@
             sb.append("<html>");
             if (info != null) {
+                String htmlInfoName = Utils.escapeReservedCharactersHTML(info.getName());
                 if (info.getLayer().requiresUploadToServer() && !info.getLayer().isUploadDiscouraged()) {
                     panel.add(needsUpload, defaultCellStyle);
-                    sb.append(tr("Layer ''{0}'' has modifications which should be uploaded to the server.", info.getName()));
+                    sb.append(tr("Layer ''{0}'' has modifications which should be uploaded to the server.", htmlInfoName));
 
                 } else {
@@ -51,7 +53,7 @@
                     }
                     if (info.getLayer().requiresUploadToServer()) {
-                        sb.append(tr("Layer ''{0}'' has modifications which are discouraged to be uploaded.", info.getName()));
+                        sb.append(tr("Layer ''{0}'' has modifications which are discouraged to be uploaded.", htmlInfoName));
                     } else {
-                        sb.append(tr("Layer ''{0}'' has no modifications to be uploaded.", info.getName()));
+                        sb.append(tr("Layer ''{0}'' has no modifications to be uploaded.", htmlInfoName));
                     }
                 }
@@ -61,10 +63,10 @@
                     panel.add(needsSave, defaultCellStyle);
                     sb.append(tr("Layer ''{0}'' has modifications which should be saved to its associated file ''{1}''.",
-                            info.getName(), info.getFile().toString()));
+                            htmlInfoName, info.getFile().toString()));
                 } else {
                     if (info.isSavable()) {
                         panel.add(pnlEmpty, defaultCellStyle);
                     }
-                    sb.append(tr("Layer ''{0}'' has no modifications to be saved.", info.getName()));
+                    sb.append(tr("Layer ''{0}'' has no modifications to be saved.", htmlInfoName));
                 }
             }
Index: trunk/src/org/openstreetmap/josm/gui/layer/Layer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 11848)
@@ -553,5 +553,6 @@
         if (!isProjectionSupported(newValue)) {
             final String message = "<html><body><p>" +
-                    tr("The layer {0} does not support the new projection {1}.", getName(), newValue.toCode()) + "</p>" +
+                    tr("The layer {0} does not support the new projection {1}.",
+                            Utils.escapeReservedCharactersHTML(getName()), newValue.toCode()) + "</p>" +
                     "<p style='width: 450px;'>" + tr("Supported projections are: {0}", nameSupportedProjections()) + "</p>" +
                     tr("Change the projection again or remove the layer.");
Index: trunk/src/org/openstreetmap/josm/gui/layer/WMSLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/WMSLayer.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/layer/WMSLayer.java	(revision 11848)
@@ -31,4 +31,5 @@
 import org.openstreetmap.josm.gui.layer.imagery.TileSourceDisplaySettings;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -138,5 +139,6 @@
         if (!isProjectionSupported(newValue)) {
             String message =
-                    "<html><body><p>" + tr("The layer {0} does not support the new projection {1}.", getName(), newValue.toCode()) +
+                    "<html><body><p>" + tr("The layer {0} does not support the new projection {1}.",
+                            Utils.escapeReservedCharactersHTML(getName()), newValue.toCode()) +
                     "<p style='width: 450px; position: absolute; margin: 0px;'>" +
                             tr("Supported projections are: {0}", nameSupportedProjections()) + "</p>" +
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 11848)
@@ -275,5 +275,5 @@
             sb.append("<html>");
             if (errorMessages.size() == 1) {
-                sb.append(errorMessages.iterator().next());
+                sb.append(Utils.escapeReservedCharactersHTML(errorMessages.iterator().next()));
             } else {
                 sb.append(Utils.joinAsHtmlUnorderedList(errorMessages));
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 11848)
@@ -151,7 +151,6 @@
         JPanel msg = new JPanel(new GridBagLayout());
         msg.add(new JLabel(
-                // CHECKSTYLE.OFF: LineLength
-                tr("<html>Upload of unprocessed GPS data as map data is considered harmful.<br>If you want to upload traces, look here:</html>")),
-                // CHECKSTYLE.ON: LineLength
+                tr("<html>Upload of unprocessed GPS data as map data is considered harmful.<br>"
+                        + "If you want to upload traces, look here:</html>")),
                 GBC.eol());
         msg.add(new UrlLabel(Main.getOSMWebsite() + "/traces", 2), GBC.eop());
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 11848)
@@ -71,5 +71,5 @@
         String msg = tr("<html>The data in the GPX layer ''{0}'' has been downloaded from the server.<br>" +
                 "Because its way points do not include a timestamp we cannot correlate them with audio data.</html>",
-                layer.getName());
+                Utils.escapeReservedCharactersHTML(layer.getName()));
         HelpAwareOptionPane.showOptionDialog(Main.parent, msg, tr("Import not possible"),
                 JOptionPane.WARNING_MESSAGE, ht("/Action/ImportAudio#CantImportIntoGpxLayerFromServer"));
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java	(revision 11848)
@@ -36,5 +36,5 @@
         String msg = tr("<html>The data in the GPX layer ''{0}'' has been downloaded from the server.<br>"+
                 "Because its way points do not include a timestamp we cannot correlate them with images.</html>",
-                layer.getName());
+                Utils.escapeReservedCharactersHTML(layer.getName()));
         HelpAwareOptionPane.showOptionDialog(Main.parent, msg, tr("Import not possible"),
                 JOptionPane.WARNING_MESSAGE, ht("/Action/ImportImages#CantImportIntoGpxLayerFromServer"));
Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 11848)
@@ -51,4 +51,5 @@
 import org.openstreetmap.josm.tools.AudioPlayer;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -247,5 +248,6 @@
 
     @Override public Object getInfoComponent() {
-        return "<html>"+trn("{0} consists of {1} marker", "{0} consists of {1} markers", data.size(), getName(), data.size()) + "</html>";
+        return "<html>"+trn("{0} consists of {1} marker", "{0} consists of {1} markers",
+                data.size(), Utils.escapeReservedCharactersHTML(getName()), data.size()) + "</html>";
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/oauth/FullyAutomaticAuthorizationUI.java	(revision 11848)
@@ -50,4 +50,5 @@
 import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 
@@ -456,5 +457,5 @@
                             +"</html>",
                             loginUrl,
-                            getOsmUserName()),
+                            Utils.escapeReservedCharactersHTML(getOsmUserName())),
                     tr("OAuth authorization failed"),
                     JOptionPane.ERROR_MESSAGE,
Index: trunk/src/org/openstreetmap/josm/gui/oauth/TestAccessTokenTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/oauth/TestAccessTokenTask.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/oauth/TestAccessTokenTask.java	(revision 11848)
@@ -147,5 +147,5 @@
                         token.getKey(),
                         apiUrl,
-                        userInfo.getDisplayName(),
+                        Utils.escapeReservedCharactersHTML(userInfo.getDisplayName()),
                         userInfo.getId()
                 ),
Index: trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 11848)
@@ -826,5 +826,5 @@
 
         private static void appendRow(StringBuilder s, String th, String td) {
-            s.append("<tr><th>").append(th).append("</th><td>").append(td).append("</td</tr>");
+            s.append("<tr><th>").append(th).append("</th><td>").append(Utils.escapeReservedCharactersHTML(td)).append("</td</tr>");
         }
 
@@ -1621,5 +1621,5 @@
             StringBuilder s = new StringBuilder(128).append("<html><b>");
             if (entry.title != null) {
-                s.append(entry.title).append("</b> <span color=\"gray\">");
+                s.append(Utils.escapeReservedCharactersHTML(entry.title)).append("</b> <span color=\"gray\">");
             }
             s.append(entry.url);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreference.java	(revision 11848)
@@ -35,4 +35,5 @@
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
 import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.Utils;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
@@ -89,9 +90,9 @@
                                 errorMessage = tr("<html>Tagging preset source {0} can be loaded but it contains errors. " +
                                         "Do you really want to use it?<br><br><table width=600>Error is: [{1}:{2}] {3}</table></html>",
-                                        source, e.getLineNumber(), e.getColumnNumber(), e.getMessage());
+                                        source, e.getLineNumber(), e.getColumnNumber(), Utils.escapeReservedCharactersHTML(e.getMessage()));
                             } else {
                                 errorMessage = tr("<html>Unable to parse tagging preset source: {0}. " +
                                         "Do you really want to use it?<br><br><table width=400>Error is: [{1}:{2}] {3}</table></html>",
-                                        source, e.getLineNumber(), e.getColumnNumber(), e.getMessage());
+                                        source, e.getLineNumber(), e.getColumnNumber(), Utils.escapeReservedCharactersHTML(e.getMessage()));
                             }
                             Main.warn(e, errorMessage);
@@ -100,9 +101,9 @@
                                 errorMessage = tr("<html>Tagging preset source {0} can be loaded but it contains errors. " +
                                         "Do you really want to use it?<br><br><table width=600>Error is: {1}</table></html>",
-                                        source, e.getMessage());
+                                        source, Utils.escapeReservedCharactersHTML(e.getMessage()));
                             } else {
                                 errorMessage = tr("<html>Unable to parse tagging preset source: {0}. " +
                                         "Do you really want to use it?<br><br><table width=600>Error is: {1}</table></html>",
-                                        source, e.getMessage());
+                                        source, Utils.escapeReservedCharactersHTML(e.getMessage()));
                             }
                             Main.warn(e, errorMessage);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginCheckBox.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginCheckBox.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginCheckBox.java	(revision 11848)
@@ -88,5 +88,5 @@
                 "Plugin {0} is still required by these {1} plugins:",
                 otherPlugins.size(),
-                plugin,
+                Utils.escapeReservedCharactersHTML(plugin),
                 otherPlugins.size()))
           .append(Utils.joinAsHtmlUnorderedList(otherPlugins))
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetReader.java	(revision 11848)
@@ -43,4 +43,5 @@
 import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.io.UTFInputStreamReader;
+import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.XmlObjectParser;
 import org.xml.sax.SAXException;
@@ -377,5 +378,6 @@
                 JOptionPane.showMessageDialog(
                         Main.parent,
-                        "<html>" + tr("Error parsing {0}: ", source) + "<br><br><table width=600>" + e.getMessage() + "</table></html>",
+                        "<html>" + tr("Error parsing {0}: ", source) + "<br><br><table width=600>" +
+                                Utils.escapeReservedCharactersHTML(e.getMessage()) + "</table></html>",
                         tr("Error"),
                         JOptionPane.ERROR_MESSAGE
Index: trunk/src/org/openstreetmap/josm/io/FileImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/FileImporter.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/io/FileImporter.java	(revision 11848)
@@ -16,4 +16,5 @@
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -108,5 +109,6 @@
         HelpAwareOptionPane.showMessageDialogInEDT(
                 Main.parent,
-                tr("<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>", f.getName(), e.getMessage()),
+                tr("<html>Could not read file ''{0}''.<br>Error is:<br>{1}</html>",
+                        f.getName(), Utils.escapeReservedCharactersHTML(e.getMessage())),
                 tr("Error"),
                 JOptionPane.ERROR_MESSAGE, null
@@ -138,5 +140,5 @@
             HelpAwareOptionPane.showMessageDialogInEDT(
                     Main.parent,
-                    tr("<html>Could not read files.<br>Error is:<br>{0}</html>", e.getMessage()),
+                    tr("<html>Could not read files.<br>Error is:<br>{0}</html>", Utils.escapeReservedCharactersHTML(e.getMessage())),
                     tr("Error"),
                     JOptionPane.ERROR_MESSAGE, null
Index: trunk/src/org/openstreetmap/josm/io/OsmExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 11848)
@@ -94,5 +94,6 @@
             JOptionPane.showMessageDialog(
                     Main.parent,
-                    tr("<html>An error occurred while saving.<br>Error is:<br>{0}</html>", e.getMessage()),
+                    tr("<html>An error occurred while saving.<br>Error is:<br>{0}</html>",
+                            Utils.escapeReservedCharactersHTML(e.getMessage())),
                     tr("Error"),
                     JOptionPane.ERROR_MESSAGE
@@ -108,5 +109,6 @@
                 JOptionPane.showMessageDialog(
                         Main.parent,
-                        tr("<html>An error occurred while restoring backup file.<br>Error is:<br>{0}</html>", e2.getMessage()),
+                        tr("<html>An error occurred while restoring backup file.<br>Error is:<br>{0}</html>",
+                                Utils.escapeReservedCharactersHTML(e2.getMessage())),
                         tr("Error"),
                         JOptionPane.ERROR_MESSAGE
Index: trunk/src/org/openstreetmap/josm/io/session/SessionReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/io/session/SessionReader.java	(revision 11848)
@@ -507,5 +507,7 @@
                         dialog.show(
                                 tr("Error loading layer"),
-                                tr("<html>Could not load layer {0} ''{1}''.<br>Error is:<br>{2}</html>", idx, name, exception.getMessage()),
+                                tr("<html>Could not load layer {0} ''{1}''.<br>Error is:<br>{2}</html>", idx,
+                                        Utils.escapeReservedCharactersHTML(name),
+                                        Utils.escapeReservedCharactersHTML(exception.getMessage())),
                                 JOptionPane.ERROR_MESSAGE,
                                 progressMonitor
Index: trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 11848)
@@ -350,5 +350,6 @@
             String msg = tr("<html>Loading of the plugin \"{0}\" was requested."
                     + "<br>This plugin is no longer developed and very likely will produce errors."
-                    +"<br>It should be disabled.<br>Delete from preferences?</html>", unmaintained);
+                    +"<br>It should be disabled.<br>Delete from preferences?</html>",
+                    Utils.escapeReservedCharactersHTML(unmaintained));
             if (confirmDisablePlugin(parent, msg, unmaintained)) {
                 Main.pref.removeFromCollection("plugins", unmaintained);
@@ -506,5 +507,5 @@
                 "Plugin {0} requires {1} plugins which were not found. The missing plugins are:",
                 missingRequiredPlugin.size(),
-                plugin,
+                Utils.escapeReservedCharactersHTML(plugin),
                 missingRequiredPlugin.size()))
           .append(Utils.joinAsHtmlUnorderedList(missingRequiredPlugin))
@@ -723,5 +724,5 @@
             if (e.getCause() instanceof ClassNotFoundException) {
                 msg = tr("<html>Could not load plugin {0} because the plugin<br>main class ''{1}'' was not found.<br>"
-                        + "Delete from preferences?</html>", plugin.name, plugin.className);
+                        + "Delete from preferences?</html>", Utils.escapeReservedCharactersHTML(plugin.name), plugin.className);
             }
         } catch (RuntimeException e) { // NOPMD
@@ -919,5 +920,5 @@
           .append("<ul>");
         for (PluginInformation pi: plugins) {
-            sb.append("<li>").append(pi.name).append("</li>");
+            sb.append("<li>").append(Utils.escapeReservedCharactersHTML(pi.name)).append("</li>");
         }
         sb.append("</ul>")
@@ -1270,8 +1271,10 @@
         final StringBuilder msg = new StringBuilder(256);
         msg.append("<html>")
-           .append(tr("An unexpected exception occurred that may have come from the ''{0}'' plugin.", plugin.getPluginInformation().name))
+           .append(tr("An unexpected exception occurred that may have come from the ''{0}'' plugin.",
+                   Utils.escapeReservedCharactersHTML(plugin.getPluginInformation().name)))
            .append("<br>");
         if (plugin.getPluginInformation().author != null) {
-            msg.append(tr("According to the information within the plugin, the author is {0}.", plugin.getPluginInformation().author))
+            msg.append(tr("According to the information within the plugin, the author is {0}.",
+                    Utils.escapeReservedCharactersHTML(plugin.getPluginInformation().author)))
                .append("<br>");
         }
Index: trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java
===================================================================
--- trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 11847)
+++ trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 11848)
@@ -298,5 +298,5 @@
         StringBuilder sb = new StringBuilder(128);
         sb.append("<html><body>")
-          .append(description == null ? tr("no description available") : description);
+          .append(description == null ? tr("no description available") : Utils.escapeReservedCharactersHTML(description));
         if (link != null) {
             sb.append(" <a href=\"").append(link).append("\">").append(tr("More info...")).append("</a>");
