Index: /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 7012)
@@ -96,4 +96,5 @@
         int shortcut = -1;
 
+        // TODO: convert this to switch/case and make sure the parsing still works
         /* leave as single line for shortcut overview parsing! */
         if (mode.equals("data")) { shortcut = KeyEvent.VK_1; }
@@ -130,21 +131,30 @@
         putValue("help", "Action/AutoScale/" + modeHelp);
         this.mode = mode;
-        if (mode.equals("data")) {
+        switch (mode) {
+        case "data":
             putValue("help", ht("/Action/ZoomToData"));
-        } else if (mode.equals("layer")) {
+            break;
+        case "layer":
             putValue("help", ht("/Action/ZoomToLayer"));
-        } else if (mode.equals("selection")) {
+            break;
+        case "selection":
             putValue("help", ht("/Action/ZoomToSelection"));
-        } else if (mode.equals("conflict")) {
+            break;
+        case "conflict":
             putValue("help", ht("/Action/ZoomToConflict"));
-        } else if (mode.equals("problem")) {
+            break;
+        case "problem":
             putValue("help", ht("/Action/ZoomToProblem"));
-        } else if (mode.equals("download")) {
+            break;
+        case "download":
             putValue("help", ht("/Action/ZoomToDownload"));
-        } else if (mode.equals("previous")) {
+            break;
+        case "previous":
             putValue("help", ht("/Action/ZoomToPrevious"));
-        } else if (mode.equals("next")) {
+            break;
+        case "next":
             putValue("help", ht("/Action/ZoomToNext"));
-        } else {
+            break;
+        default:
             throw new IllegalArgumentException("Unknown mode: "+mode);
         }
@@ -154,9 +164,12 @@
     public void autoScale()  {
         if (Main.isDisplayingMapView()) {
-            if (mode.equals("previous")) {
+            switch(mode) {
+            case "previous":
                 Main.map.mapView.zoomPrevious();
-            } else if (mode.equals("next")) {
+                break;
+            case "next":
                 Main.map.mapView.zoomNext();
-            } else {
+                break;
+            default:
                 BoundingXYVisitor bbox = getBoundingBox();
                 if (bbox != null && bbox.getBounds() != null) {
@@ -187,7 +200,8 @@
 
     private BoundingXYVisitor getBoundingBox() {
-        BoundingXYVisitor v = mode.equals("problem") ? new ValidatorBoundingXYVisitor() : new BoundingXYVisitor();
-
-        if (mode.equals("problem")) {
+        BoundingXYVisitor v = "problem".equals(mode) ? new ValidatorBoundingXYVisitor() : new BoundingXYVisitor();
+
+        switch(mode) {
+        case "problem":
             TestError error = Main.map.validatorDialog.getSelectedError();
             if (error == null) return null;
@@ -195,9 +209,11 @@
             if (v.getBounds() == null) return null;
             v.enlargeBoundingBox(Main.pref.getDouble("validator.zoom-enlarge-bbox", 0.0002));
-        } else if (mode.equals("data")) {
+            break;
+        case "data":
             for (Layer l : Main.map.mapView.getAllLayers()) {
                 l.visitBoundingBox(v);
             }
-        } else if (mode.equals("layer")) {
+            break;
+        case "layer":
             if (Main.main.getActiveLayer() == null)
                 return null;
@@ -206,9 +222,11 @@
             if (l == null) return null;
             l.visitBoundingBox(v);
-        } else if (mode.equals("selection") || mode.equals("conflict")) {
+            break;
+        case "selection":
+        case "conflict":
             Collection<OsmPrimitive> sel = new HashSet<>();
-            if (mode.equals("selection")) {
+            if ("selection".equals(mode)) {
                 sel = getCurrentDataSet().getSelected();
-            } else if (mode.equals("conflict")) {
+            } else {
                 Conflict<? extends OsmPrimitive> c = Main.map.conflictDialog.getSelectedConflict();
                 if (c != null) {
@@ -221,5 +239,5 @@
                 JOptionPane.showMessageDialog(
                         Main.parent,
-                        (mode.equals("selection") ? tr("Nothing selected to zoom to.") : tr("No conflicts to zoom to")),
+                        ("selection".equals(mode) ? tr("Nothing selected to zoom to.") : tr("No conflicts to zoom to")),
                         tr("Information"),
                         JOptionPane.INFORMATION_MESSAGE
@@ -236,5 +254,6 @@
             // ensure reasonable zoom level when zooming onto single nodes.
             v.enlargeToMinDegrees(0.0005);
-        } else if (mode.equals("download")) {
+            break;
+        case "download":
             Bounds bounds = DownloadDialog.getSavedDownloadBounds();
             if (bounds != null) {
@@ -245,4 +264,5 @@
                 }
             }
+            break;
         }
         return v;
@@ -251,7 +271,9 @@
     @Override
     protected void updateEnabledState() {
-        if ("selection".equals(mode)) {
+        switch(mode) {
+        case "selection":
             setEnabled(getCurrentDataSet() != null && ! getCurrentDataSet().getSelected().isEmpty());
-        }  else if ("layer".equals(mode)) {
+            break;
+        case "layer":
             if (!Main.isDisplayingMapView() || Main.map.mapView.getAllLayersAsList().isEmpty()) {
                 setEnabled(false);
@@ -260,16 +282,19 @@
                 setEnabled(true);
             }
-        } else if ("conflict".equals(mode)) {
+            break;
+        case "conflict":
             setEnabled(Main.map != null && Main.map.conflictDialog.getSelectedConflict() != null);
-        } else if ("problem".equals(mode)) {
+            break;
+        case "problem":
             setEnabled(Main.map != null && Main.map.validatorDialog.getSelectedError() != null);
-        } else if ("previous".equals(mode)) {
+            break;
+        case "previous":
             setEnabled(Main.isDisplayingMapView() && Main.map.mapView.hasZoomUndoEntries());
-        } else if ("next".equals(mode)) {
+            break;
+        case "next":
             setEnabled(Main.isDisplayingMapView() && Main.map.mapView.hasZoomRedoEntries());
-        } else {
-            setEnabled(
-                    Main.isDisplayingMapView()
-                    && Main.map.mapView.hasLayers()
+            break;
+        default:
+            setEnabled(Main.isDisplayingMapView() && Main.map.mapView.hasLayers()
             );
         }
@@ -311,5 +336,5 @@
 
         public MapFrameAdapter() {
-            if (mode.equals("conflict")) {
+            if ("conflict".equals(mode)) {
                 conflictSelectionListener = new ListSelectionListener() {
                     @Override public void valueChanged(ListSelectionEvent e) {
@@ -317,5 +342,5 @@
                     }
                 };
-            } else if (mode.equals("problem")) {
+            } else if ("problem".equals(mode)) {
                 validatorSelectionListener = new TreeSelectionListener() {
                     @Override public void valueChanged(TreeSelectionEvent e) {
Index: /trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 7012)
@@ -355,5 +355,5 @@
         if( !Main.pref.getBoolean("multipoly.alltags", false) )
             for( RelationMember m : relation.getMembers() )
-                if( m.hasRole() && m.getRole().equals("outer") && m.isWay() )
+                if( m.hasRole() && "outer".equals(m.getRole()) && m.isWay() )
                     for( String key : values.keySet() )
                         if( !m.getWay().hasKey(key) && !relation.hasKey(key) )
@@ -407,5 +407,5 @@
             for (Entry<String, String> entry : values.entrySet()) {
                 String key = entry.getKey();
-                if (!r2.hasKey(key) && !key.equals("area") ) {
+                if (!r2.hasKey(key) && !"area".equals(key) ) {
                     if (relation.isNew())
                         relation.put(key, entry.getValue());
Index: /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java	(revision 7012)
@@ -186,5 +186,5 @@
         } catch (InvalidUserInputException ex) {
             String msg;
-            if (ex.getMessage().equals("usage")) {
+            if ("usage".equals(ex.getMessage())) {
                 msg = "<h2>" + tr("Usage") + "</h2>" + USAGE;
             } else {
Index: /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 7012)
@@ -105,56 +105,63 @@
         @Override
         public Match get(String keyword, PushbackTokenizer tokenizer) throws ParseError {
-            if ("modified".equals(keyword))
+            switch(keyword) {
+            case "modified":
                 return new Modified();
-            else if ("selected".equals(keyword))
+            case "selected":
                 return new Selected();
-            else if ("incomplete".equals(keyword))
+            case "incomplete":
                 return new Incomplete();
-            else if ("untagged".equals(keyword))
+            case "untagged":
                 return new Untagged();
-            else if ("closed".equals(keyword))
+            case "closed":
                 return new Closed();
-            else if ("new".equals(keyword))
+            case "new":
                 return new New();
-            else if ("indownloadedarea".equals(keyword))
+            case "indownloadedarea":
                 return new InDataSourceArea(false);
-            else if ("allindownloadedarea".equals(keyword))
+            case "allindownloadedarea":
                 return new InDataSourceArea(true);
-            else if ("inview".equals(keyword))
+            case "inview":
                 return new InView(false);
-            else if ("allinview".equals(keyword))
+            case "allinview":
                 return new InView(true);
-            else if (tokenizer != null) {
-                if ("id".equals(keyword))
-                    return new Id(tokenizer);
-                else if ("version".equals(keyword))
-                    return new Version(tokenizer);
-                else if ("changeset".equals(keyword))
-                    return new ChangesetId(tokenizer);
-                else if ("nodes".equals(keyword))
-                    return new NodeCountRange(tokenizer);
-                else if ("tags".equals(keyword))
-                    return new TagCountRange(tokenizer);
-                else if ("areasize".equals(keyword))
-                    return new AreaSize(tokenizer);
-                else if ("nth".equals(keyword))
-                    return new Nth(tokenizer, false);
-                else if ("nth%".equals(keyword))
-                    return new Nth(tokenizer, true);
-                else if ("timestamp".equals(keyword)) {
-                    String rangeS = " " + tokenizer.readTextOrNumber() + " "; // add leading/trailing space in order to get expected split (e.g. "a--" => {"a", ""})
-                    String[] rangeA = rangeS.split("/");
-                    if (rangeA.length == 1)
-                        return new KeyValue(keyword, rangeS.trim(), regexSearch, caseSensitive);
-                    else if (rangeA.length == 2) {
-                        String rangeA1 = rangeA[0].trim();
-                        String rangeA2 = rangeA[1].trim();
-                        long minDate = DateUtils.fromString(rangeA1.isEmpty() ? "1980" : rangeA1).getTime(); // if min timestap is empty: use lowest possible date
-                        long maxDate = rangeA2.isEmpty() ? System.currentTimeMillis() : DateUtils.fromString(rangeA2).getTime(); // if max timestamp is empty: use "now"
-                        return new TimestampRange(minDate, maxDate);
-                    } else
-                        /*
-                         * I18n: Don't translate timestamp keyword
-                         */ throw new ParseError(tr("Expecting <i>min</i>/<i>max</i> after ''timestamp''"));
+            default:
+                if (tokenizer != null) {
+                    switch (keyword) {
+                    case "id":
+                        return new Id(tokenizer);
+                    case "version":
+                        return new Version(tokenizer);
+                    case "changeset":
+                        return new ChangesetId(tokenizer);
+                    case "nodes":
+                        return new NodeCountRange(tokenizer);
+                    case "tags":
+                        return new TagCountRange(tokenizer);
+                    case "areasize":
+                        return new AreaSize(tokenizer);
+                    case "nth":
+                        return new Nth(tokenizer, false);
+                    case "nth%":
+                        return new Nth(tokenizer, true);
+                    case "timestamp":
+                        // add leading/trailing space in order to get expected split (e.g. "a--" => {"a", ""})
+                        String rangeS = " " + tokenizer.readTextOrNumber() + " ";
+                        String[] rangeA = rangeS.split("/");
+                        if (rangeA.length == 1) {
+                            return new KeyValue(keyword, rangeS.trim(), regexSearch, caseSensitive);
+                        } else if (rangeA.length == 2) {
+                            String rangeA1 = rangeA[0].trim();
+                            String rangeA2 = rangeA[1].trim();
+                            // if min timestap is empty: use lowest possible date
+                            long minDate = DateUtils.fromString(rangeA1.isEmpty() ? "1980" : rangeA1).getTime(); 
+                            // if max timestamp is empty: use "now"
+                            long maxDate = rangeA2.isEmpty() ? System.currentTimeMillis() : DateUtils.fromString(rangeA2).getTime(); 
+                            return new TimestampRange(minDate, maxDate);
+                        } else {
+                            // I18n: Don't translate timestamp keyword
+                            throw new ParseError(tr("Expecting <i>min</i>/<i>max</i> after ''timestamp''"));
+                        }
+                    }
                 }
             }
@@ -1314,12 +1321,14 @@
             value = "";
         }
-        if ("type".equals(key))
+        switch(key) {
+        case "type":
             return new ExactType(value);
-        else if ("user".equals(key))
+        case "user":
             return new UserMatch(value);
-        else if ("role".equals(key))
+        case "role":
             return new RoleMatch(value);
-        else
+        default:
             return new KeyValue(key, value, regexSearch, caseSensitive);
+        }
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/data/CustomConfigurator.java	(revision 7012)
@@ -490,43 +490,52 @@
                 Element elem = (Element) item;
 
-                if ("var".equals(elementName)) {
+                switch(elementName) {
+                case "var":
                     setVar(elem.getAttribute("name"), evalVars(elem.getAttribute("value")));
-                } else if ("task".equals(elementName)) {
+                    break;
+                case "task":
                     tasksMap.put(elem.getAttribute("name"), elem);
-                } else if ("runtask".equals(elementName)) {
+                    break;
+                case "runtask":
                     if (processRunTaskElement(elem)) return;
-                } else if ("ask".equals(elementName)) {
+                    break;
+                case "ask":
                     processAskElement(elem);
-                } else if ("if".equals(elementName)) {
+                    break;
+                case "if":
                     processIfElement(elem);
-                } else if ("else".equals(elementName)) {
+                    break;
+                case "else":
                     processElseElement(elem);
-                } else if ("break".equals(elementName)) {
+                    break;
+                case "break":
                     return;
-                } else if ("plugin".equals(elementName)) {
+                case "plugin":
                     processPluginInstallElement(elem);
-                } else if ("messagebox".equals(elementName)){
+                    break;
+                case "messagebox":
                     processMsgBoxElement(elem);
-                } else if ("preferences".equals(elementName)) {
+                    break;
+                case "preferences":
                     processPreferencesElement(elem);
-                } else if ("download".equals(elementName)) {
+                    break;
+                case "download":
                     processDownloadElement(elem);
-                } else if ("delete".equals(elementName)) {
+                    break;
+                case "delete":
                     processDeleteElement(elem);
-                } else if ("script".equals(elementName)) {
+                    break;
+                case "script":
                     processScriptElement(elem);
-                } else {
+                    break;
+                default:
                     log("Error: Unknown element " + elementName);
                 }
-
-            }
-        }
-
-
+            }
+        }
 
         private void processPreferencesElement(Element item) {
             String oper = evalVars(item.getAttribute("operation"));
             String id = evalVars(item.getAttribute("id"));
-
 
             if ("delete-keys".equals(oper)) {
@@ -614,5 +623,4 @@
         }
 
-
         private void processAskElement(Element elem) {
             String text = evalVars(elem.getAttribute("text"));
@@ -672,5 +680,4 @@
             return false;
         }
-
 
         private void processScriptElement(Element elem) {
@@ -730,6 +737,4 @@
             return s;
         }
-
-
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 7012)
@@ -1360,14 +1360,16 @@
             if (event == XMLStreamConstants.START_ELEMENT) {
                 String localName = parser.getLocalName();
-                if ("tag".equals(localName)) {
+                switch(localName) {
+                case "tag":
                     settingsMap.put(parser.getAttributeValue(null, "key"), new StringSetting(parser.getAttributeValue(null, "value")));
                     jumpToEnd();
-                } else if ("list".equals(localName) ||
-                        "collection".equals(localName) ||
-                        "lists".equals(localName) ||
-                        "maps".equals(localName)
-                ) {
+                    break;
+                case "list":
+                case "collection":
+                case "lists":
+                case "maps":
                     parseToplevelList();
-                } else {
+                    break;
+                default:
                     throwException("Unexpected element: "+localName);
                 }
@@ -1400,5 +1402,6 @@
             if (event == XMLStreamConstants.START_ELEMENT) {
                 String localName = parser.getLocalName();
-                if ("entry".equals(localName)) {
+                switch(localName) {
+                case "entry":
                     if (entries == null) {
                         entries = new ArrayList<>();
@@ -1406,15 +1409,18 @@
                     entries.add(parser.getAttributeValue(null, "value"));
                     jumpToEnd();
-                } else if ("list".equals(localName)) {
+                    break;
+                case "list":
                     if (lists == null) {
                         lists = new ArrayList<>();
                     }
                     lists.add(parseInnerList());
-                } else if ("map".equals(localName)) {
+                    break;
+                case "map":
                     if (maps == null) {
                         maps = new ArrayList<>();
                     }
                     maps.add(parseMap());
-                } else {
+                    break;
+                default:
                     throwException("Unexpected element: "+localName);
                 }
Index: /trunk/src/org/openstreetmap/josm/data/imagery/WmsCache.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/WmsCache.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/WmsCache.java	(revision 7012)
@@ -453,11 +453,16 @@
         String zoom = SystemOfMeasurement.METRIC.getDistText(ll1.greatCircleDistance(ll2));
         String extension;
-        if ("image/jpeg".equals(mimeType) || "image/jpg".equals(mimeType)) {
+        switch(mimeType) {
+        case "image/jpeg":
+        case "image/jpg":
             extension = "jpg";
-        } else if ("image/png".equals(mimeType)) {
+            break;
+        case "image/png":
             extension = "png";
-        } else if ("image/gif".equals(mimeType)) {
+            break;
+        case "image/gif":
             extension = "gif";
-        } else {
+            break;
+        default:
             extension = "dat";
         }
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 7012)
@@ -916,12 +916,9 @@
 
         /* find the "from", "via" and "to" elements */
-        for (RelationMember m : r.getMembers())
-        {
+        for (RelationMember m : r.getMembers()) {
             if(m.getMember().isIncomplete())
                 return;
-            else
-            {
-                if(m.isWay())
-                {
+            else {
+                if(m.isWay()) {
                     Way w = m.getWay();
                     if(w.getNodesCount() < 2) {
@@ -929,20 +926,21 @@
                     }
 
-                    if("from".equals(m.getRole())) {
+                    switch(m.getRole()) {
+                    case "from":
                         if(fromWay == null) {
                             fromWay = w;
                         }
-                    } else if("to".equals(m.getRole())) {
+                        break;
+                    case "to":
                         if(toWay == null) {
                             toWay = w;
                         }
-                    } else if("via".equals(m.getRole())) {
+                        break;
+                    case "via":
                         if(via == null) {
                             via = w;
                         }
                     }
-                }
-                else if(m.isNode())
-                {
+                } else if(m.isNode()) {
                     Node n = m.getNode();
                     if("via".equals(m.getRole()) && via == null) {
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/Addresses.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/Addresses.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/Addresses.java	(revision 7012)
@@ -127,5 +127,5 @@
                 String role = m.getRole();
                 OsmPrimitive p = m.getMember();
-                if (role.equals("house")) {
+                if ("house".equals(role)) {
                     houses.add(p);
                     String number = p.get(ADDR_HOUSE_NUMBER);
@@ -138,5 +138,5 @@
                         list.add(p);
                     }
-                } else if (role.equals("street")) {
+                } else if ("street".equals(role)) {
                     if (p instanceof Way) {
                         street.add((Way) p);
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/Highways.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/Highways.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/Highways.java	(revision 7012)
@@ -99,5 +99,5 @@
     public void visit(Way w) {
         if (w.isUsable()) {
-            if (w.hasKey("highway") && w.hasKey("junction") && w.get("junction").equals("roundabout")) {
+            if (w.hasKey("highway") && w.hasKey("junction") && "roundabout".equals(w.get("junction"))) {
                 testWrongRoundabout(w);
             }
@@ -180,10 +180,10 @@
             String highway = w.get("highway");
             if (highway != null) {
-                if (highway.equals("footway") || highway.equals("path")) {
+                if ("footway".equals(highway) || "path".equals(highway)) {
                     handlePedestrianWay(n, w);
                     if (w.hasTag("bicycle", "yes", "designated")) {
                         handleCyclistWay(n, w);
                     }
-                } else if (highway.equals("cycleway")) {
+                } else if ("cycleway".equals(highway)) {
                     handleCyclistWay(n, w);
                     if (w.hasTag("foot", "yes", "designated")) {
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 7012)
@@ -198,11 +198,15 @@
                         line = line.substring(2);
 
-                        if (key.equals("S:")) {
+                        switch (key) {
+                        case "S:":
                             ignoreDataStartsWith.add(line);
-                        } else if (key.equals("E:")) {
+                            break;
+                        case "E:":
                             ignoreDataEquals.add(line);
-                        } else if (key.equals("F:")) {
+                            break;
+                        case "F:":
                             ignoreDataEndsWith.add(line);
-                        } else if (key.equals("K:")) {
+                            break;
+                        case "K:":
                             IgnoreKeyPair tmp = new IgnoreKeyPair();
                             int mid = line.indexOf('=');
@@ -637,16 +641,16 @@
                 String n = m.group(1).trim();
 
-                if(n.equals("*")) {
+                if ("*".equals(n)) {
                     tagAll = true;
                 } else {
                     tag = n.startsWith("/") ? getPattern(n) : n;
-                    noMatch = m.group(2).equals("!=");
+                    noMatch = "!=".equals(m.group(2));
                     n = m.group(3).trim();
-                    if (n.equals("*")) {
+                    if ("*".equals(n)) {
                         valueAll = true;
-                    } else if (n.equals("BOOLEAN_TRUE")) {
+                    } else if ("BOOLEAN_TRUE".equals(n)) {
                         valueBool = true;
                         value = OsmUtils.trueval;
-                    } else if (n.equals("BOOLEAN_FALSE")) {
+                    } else if ("BOOLEAN_FALSE".equals(n)) {
                         valueBool = true;
                         value = OsmUtils.falseval;
@@ -685,28 +689,39 @@
             }
             String[] n = SPLIT_TRIMMED_PATTERN.split(trimmed, 3);
-            if (n[0].equals("way")) {
+            switch (n[0]) {
+            case "way":
                 type = OsmPrimitiveType.WAY;
-            } else if (n[0].equals("node")) {
+                break;
+            case "node":
                 type = OsmPrimitiveType.NODE;
-            } else if (n[0].equals("relation")) {
+                break;
+            case "relation":
                 type = OsmPrimitiveType.RELATION;
-            } else if (n[0].equals("*")) {
+                break;
+            case "*":
                 type = null;
-            } else
+                break;
+            default:
                 return tr("Could not find element type");
+            }
             if (n.length != 3)
                 return tr("Incorrect number of parameters");
 
-            if (n[1].equals("W")) {
+            switch (n[1]) {
+            case "W":
                 severity = Severity.WARNING;
                 code = TAG_CHECK_WARN;
-            } else if (n[1].equals("E")) {
+                break;
+            case "E":
                 severity = Severity.ERROR;
                 code = TAG_CHECK_ERROR;
-            } else if(n[1].equals("I")) {
+                break;
+            case "I":
                 severity = Severity.OTHER;
                 code = TAG_CHECK_INFO;
-            } else
+                break;
+            default:
                 return tr("Could not find warning level");
+            }
             for (String exp: SPLIT_ELEMENTS_PATTERN.split(n[2])) {
                 try {
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/TurnrestrictionTest.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/TurnrestrictionTest.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/TurnrestrictionTest.java	(revision 7012)
@@ -75,5 +75,6 @@
                 }
 
-                if ("from".equals(m.getRole())) {
+                switch (m.getRole()) {
+                case "from":
                     if (fromWay != null) {
                         morefrom = true;
@@ -81,5 +82,6 @@
                         fromWay = w;
                     }
-                } else if ("to".equals(m.getRole())) {
+                    break;
+                case "to":
                     if (toWay != null) {
                         moreto = true;
@@ -87,5 +89,6 @@
                         toWay = w;
                     }
-                } else if ("via".equals(m.getRole())) {
+                    break;
+                case "via":
                     if (!via.isEmpty() && via.get(0) instanceof Node) {
                         mixvia = true;
@@ -93,5 +96,6 @@
                         via.add(w);
                     }
-                } else {
+                    break;
+                default:
                     errors.add(new TestError(this, Severity.WARNING, tr("Unknown role"), UNKNOWN_ROLE,
                             l, Collections.singletonList(m)));
Index: /trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java	(revision 7012)
@@ -87,6 +87,6 @@
                         break;
                     }
-                    if (key.equals("junction")) {
-                        isRoundabout = w.get("junction").equals("roundabout");
+                    if ("junction".equals(key)) {
+                        isRoundabout = "roundabout".equals(w.get("junction"));
                         break;
                     }
Index: /trunk/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java	(revision 7012)
@@ -240,30 +240,34 @@
     @Override
     public void preferenceChanged(PreferenceChangeEvent evt) {
-        if ("osm-server.username".equals(evt.getKey())) {
+        switch (evt.getKey()) {
+        case "osm-server.username":
             if (!(evt.getNewValue() instanceof StringSetting)) return;
-            String newValue = ((StringSetting) evt.getNewValue()).getValue();
-            if (newValue == null || newValue.trim().length() == 0) {
+            String newUserName = ((StringSetting) evt.getNewValue()).getValue();
+            if (newUserName == null || newUserName.trim().isEmpty()) {
                 setAnonymous();
             } else {
-                if (! newValue.equals(userName)) {
-                    setPartiallyIdentified(newValue);
+                if (! newUserName.equals(userName)) {
+                    setPartiallyIdentified(newUserName);
                 }
             }
             return;
 
-        } else if ("osm-server.url".equals(evt.getKey())) {
+        case "osm-server.url":
             if (!(evt.getNewValue() instanceof StringSetting)) return;
-            String newValue = ((StringSetting) evt.getNewValue()).getValue();
-            if (newValue == null || newValue.trim().isEmpty()) {
+            String newUrl = ((StringSetting) evt.getNewValue()).getValue();
+            if (newUrl == null || newUrl.trim().isEmpty()) {
                 setAnonymous();
             } else if (isFullyIdentified()) {
                 setPartiallyIdentified(getUserName());
             }
-
-        } else if ("oauth.access-token.key".equals(evt.getKey())) {
+            break;
+
+        case "oauth.access-token.key":
             accessTokenKeyChanged = true;
-
-        } else if ("oauth.access-token.secret".equals(evt.getKey())) {
+            break;
+
+        case "oauth.access-token.secret":
             accessTokenSecretChanged = true;
+            break;
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/MapMover.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 7012)
@@ -51,12 +51,18 @@
                 EastNorth center = nc.getCenter();
                 EastNorth newcenter = nc.getEastNorth(nc.getWidth()/2+nc.getWidth()/5, nc.getHeight()/2+nc.getHeight()/5);
-                if ("left".equals(action))
+                switch(action) {
+                case "left":
                     nc.zoomTo(new EastNorth(2*center.east()-newcenter.east(), center.north()));
-                else if ("right".equals(action))
+                    break;
+                case "right":
                     nc.zoomTo(new EastNorth(newcenter.east(), center.north()));
-                else if ("up".equals(action))
+                    break;
+                case "up":
                     nc.zoomTo(new EastNorth(center.east(), 2*center.north()-newcenter.north()));
-                else if ("down".equals(action))
+                    break;
+                case "down":
                     nc.zoomTo(new EastNorth(center.east(), newcenter.north()));
+                    break;
+                }
             }
         }
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.java	(revision 7012)
@@ -355,24 +355,25 @@
 
         public boolean appliesImpl(Environment e) {
-            if ("closed".equals(id)) {
+            switch(id) {
+            case "closed":
                 if (e.osm instanceof Way && ((Way) e.osm).isClosed())
                     return true;
                 if (e.osm instanceof Relation && ((Relation) e.osm).isMultipolygon())
                     return true;
-                return false;
-            } else if ("modified".equals(id)) {
+                break;
+            case "modified":
                 return e.osm.isModified() || e.osm.isNewOrUndeleted();
-            } else if ("new".equals(id)) {
+            case "new":
                 return e.osm.isNew();
-            } else if ("connection".equals(id) && (e.osm instanceof Node)) {
-                return ((Node) e.osm).isConnectionNode();
-            } else if ("tagged".equals(id)) {
+            case "connection":
+                return e.osm instanceof Node && ((Node) e.osm).isConnectionNode();
+            case "tagged":
                 return e.osm.isTagged();
-            } else if ("sameTags".equals(id)) {
+            case "sameTags":
                 return e.osm.hasSameInterestingTags(Utils.firstNonNull(e.child, e.parent));
-            } else if ("areaStyle".equals(id)) {
+            case "areaStyle":
                 return ElemStyles.hasAreaElemStyle(e.osm, false);
-            } else if ("unconnected".equals(id) && (e.osm instanceof Node)) {
-                return OsmPrimitive.getFilteredList(e.osm.getReferrers(), Way.class).isEmpty();
+            case "unconnected":
+                return e.osm instanceof Node && OsmPrimitive.getFilteredList(e.osm.getReferrers(), Way.class).isEmpty();
             }
             return false;
Index: /trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSourceHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSourceHandler.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSourceHandler.java	(revision 7012)
@@ -14,6 +14,5 @@
 import org.xml.sax.helpers.DefaultHandler;
 
-public class XmlStyleSourceHandler extends DefaultHandler
-{
+public class XmlStyleSourceHandler extends DefaultHandler {
     private boolean inDoc, inRule, inCondition, inLine, inLineMod, inIcon, inArea, inScaleMax, inScaleMin;
     private boolean hadLine, hadLineMod, hadIcon, hadArea;
@@ -79,14 +78,18 @@
     private void startElementLine(String qName, Attributes atts, LinePrototype line) {
         for (int count=0; count<atts.getLength(); count++) {
-            if(atts.getQName(count).equals("width")) {
+            switch (atts.getQName(count)) {
+            case "width":
                 String val = atts.getValue(count);
                 if (! (val.startsWith("+") || val.startsWith("-") || val.endsWith("%"))) {
                     line.setWidth(Integer.parseInt(val));
                 }
-            } else if (atts.getQName(count).equals("colour")) {
-                line.color=convertColor(atts.getValue(count));
-            } else if (atts.getQName(count).equals("realwidth")) {
-                line.realWidth=Integer.parseInt(atts.getValue(count));
-            } else if (atts.getQName(count).equals("dashed")) {
+                break;
+            case "colour":
+                line.color = convertColor(atts.getValue(count));
+                break;
+            case "realwidth":
+                line.realWidth = Integer.parseInt(atts.getValue(count));
+                break;
+            case "dashed":
                 Float[] dashed;
                 try {
@@ -105,9 +108,15 @@
                 }
                 line.setDashed(dashed == null ? null : Arrays.asList(dashed));
-            } else if (atts.getQName(count).equals("dashedcolour")) {
-                line.dashedColor=convertColor(atts.getValue(count));
-            } else if(atts.getQName(count).equals("priority")) {
+                break;
+            case "dashedcolour":
+                line.dashedColor = convertColor(atts.getValue(count));
+                break;
+            case "priority":
                 line.priority = Integer.parseInt(atts.getValue(count));
-            } else if (!(atts.getQName(count).equals("mode") && line instanceof LinemodPrototype)){
+                break;
+            case "mode":
+                if (line instanceof LinemodPrototype)
+                    break;
+            default:
                 error("The element \"" + qName + "\" has unknown attribute \"" + atts.getQName(count) + "\"!");
             }
@@ -118,5 +127,6 @@
         startElementLine(qName, atts, line);
         for (int count=0; count<atts.getLength(); count++) {
-            if (atts.getQName(count).equals("width")) {
+            switch (atts.getQName(count)) {
+            case "width":
                 String val = atts.getValue(count);
                 if (val.startsWith("+")) {
@@ -132,15 +142,20 @@
                     line.setWidth(Integer.parseInt(val));
                 }
-            } else if(atts.getQName(count).equals("mode")) {
-                line.over = !atts.getValue(count).equals("under");
-            }
-        }
-    }
-
-    @Override public void startElement(String uri,String name, String qName, Attributes atts) {
+                break;
+            case "mode":
+                line.over = !"under".equals(atts.getValue(count));
+                break;
+            }
+        }
+    }
+
+    @Override
+    public void startElement(String uri,String name, String qName, Attributes atts) {
         if (inDoc) {
-            if (qName.equals("rule")) {
-                inRule=true;
-            } else if (qName.equals("rules")) {
+            switch(qName) {
+            case "rule":
+                inRule = true;
+                break;
+            case "rules":
                 if (style.name == null) {
                     style.name = atts.getValue("name");
@@ -152,69 +167,90 @@
                     style.icon = atts.getValue("icon");
                 }
-            } else if (qName.equals("scale_max")) {
+                break;
+            case "scale_max":
                 inScaleMax = true;
-            } else if (qName.equals("scale_min")) {
+                break;
+            case "scale_min":
                 inScaleMin = true;
-            } else if (qName.equals("condition") && inRule) {
-                inCondition=true;
-                XmlCondition c = rule.cond;
-                if (c.key != null) {
-                    if(rule.conditions == null) {
-                        rule.conditions = new LinkedList<>();
-                    }
-                    rule.conditions.add(new XmlCondition(rule.cond));
-                    c = new XmlCondition();
-                    rule.conditions.add(c);
-                }
-                for (int count=0; count<atts.getLength(); count++) {
-                    if (atts.getQName(count).equals("k")) {
-                        c.key = atts.getValue(count);
-                    } else if (atts.getQName(count).equals("v")) {
-                        c.value = atts.getValue(count);
-                    } else if(atts.getQName(count).equals("b")) {
-                        c.boolValue = atts.getValue(count);
-                    } else {
-                        error("The element \"" + qName + "\" has unknown attribute \"" + atts.getQName(count) + "\"!");
-                    }
-                }
-                if(c.key == null) {
-                    error("The condition has no key!");
-                }
-            } else if (qName.equals("line")) {
+                break;
+            case "condition":
+                if (inRule) {
+                    inCondition = true;
+                    XmlCondition c = rule.cond;
+                    if (c.key != null) {
+                        if(rule.conditions == null) {
+                            rule.conditions = new LinkedList<>();
+                        }
+                        rule.conditions.add(new XmlCondition(rule.cond));
+                        c = new XmlCondition();
+                        rule.conditions.add(c);
+                    }
+                    for (int count=0; count<atts.getLength(); count++) {
+                        switch (atts.getQName(count)) {
+                        case "k":
+                            c.key = atts.getValue(count);
+                            break;
+                        case "v":
+                            c.value = atts.getValue(count);
+                            break;
+                        case "b":
+                            c.boolValue = atts.getValue(count);
+                            break;
+                        default:
+                            error("The element \"" + qName + "\" has unknown attribute \"" + atts.getQName(count) + "\"!");
+                        }
+                    }
+                    if(c.key == null) {
+                        error("The condition has no key!");
+                    }
+                }
+                break;
+            case "line":
                 hadLine = inLine = true;
                 startElementLine(qName, atts, rule.line);
-            } else if (qName.equals("linemod")) {
+                break;
+            case "linemod":
                 hadLineMod = inLineMod = true;
                 startElementLinemod(qName, atts, rule.linemod);
-            } else if (qName.equals("icon")) {
+                break;
+            case "icon":
                 inIcon = true;
                 for (int count=0; count<atts.getLength(); count++) {
-                    if (atts.getQName(count).equals("src")) {
+                    switch (atts.getQName(count)) {
+                    case "src":
                         IconReference icon = new IconReference(atts.getValue(count), style);
                         hadIcon = (icon != null);
                         rule.icon.icon = icon;
-                    } else if (atts.getQName(count).equals("annotate")) {
+                        break;
+                    case "annotate":
                         rule.icon.annotate = Boolean.parseBoolean (atts.getValue(count));
-                    } else if(atts.getQName(count).equals("priority")) {
+                        break;
+                    case "priority":
                         rule.icon.priority = Integer.parseInt(atts.getValue(count));
-                    } else {
+                        break;
+                    default:
                         error("The element \"" + qName + "\" has unknown attribute \"" + atts.getQName(count) + "\"!");
                     }
                 }
-            } else if (qName.equals("area")) {
+                break;
+            case "area":
                 hadArea = inArea = true;
-                for (int count=0; count<atts.getLength(); count++)
-                {
-                    if (atts.getQName(count).equals("colour")) {
+                for (int count=0; count<atts.getLength(); count++) {
+                    switch (atts.getQName(count)) {
+                    case "colour":
                         rule.area.color=convertColor(atts.getValue(count));
-                    } else if (atts.getQName(count).equals("closed")) {
+                        break;
+                    case "closed":
                         rule.area.closed=Boolean.parseBoolean(atts.getValue(count));
-                    } else if(atts.getQName(count).equals("priority")) {
+                        break;
+                    case "priority":
                         rule.area.priority = Integer.parseInt(atts.getValue(count));
-                    } else {
+                        break;
+                    default:
                         error("The element \"" + qName + "\" has unknown attribute \"" + atts.getQName(count) + "\"!");
                     }
                 }
-            } else {
+                break;
+            default:
                 error("The element \"" + qName + "\" is unknown!");
             }
@@ -222,23 +258,20 @@
     }
 
-    @Override public void endElement(String uri,String name, String qName)
-    {
-        if (inRule && qName.equals("rule")) {
+    @Override
+    public void endElement(String uri,String name, String qName) {
+        if (inRule && "rule".equals(qName)) {
             if (hadLine) {
                 style.add(rule.cond, rule.conditions,
                         new LinePrototype(rule.line, new Range(rule.scaleMin, rule.scaleMax)));
             }
-            if (hadLineMod)
-            {
+            if (hadLineMod) {
                 style.add(rule.cond, rule.conditions,
                         new LinemodPrototype(rule.linemod, new Range(rule.scaleMin, rule.scaleMax)));
             }
-            if (hadIcon)
-            {
+            if (hadIcon) {
                 style.add(rule.cond, rule.conditions,
                         new IconPrototype(rule.icon, new Range(rule.scaleMin, rule.scaleMax)));
             }
-            if (hadArea)
-            {
+            if (hadArea) {
                 style.add(rule.cond, rule.conditions,
                         new AreaPrototype(rule.area, new Range(rule.scaleMin, rule.scaleMax)));
@@ -247,22 +280,23 @@
             hadLine = hadLineMod = hadIcon = hadArea = false;
             rule.init();
-        } else if (inCondition && qName.equals("condition")) {
+        } else if (inCondition && "condition".equals(qName)) {
             inCondition = false;
-        } else if (inLine && qName.equals("line")) {
+        } else if (inLine && "line".equals(qName)) {
             inLine = false;
-        } else if (inLineMod && qName.equals("linemod")) {
+        } else if (inLineMod && "linemod".equals(qName)) {
             inLineMod = false;
-        } else if (inIcon && qName.equals("icon")) {
+        } else if (inIcon && "icon".equals(qName)) {
             inIcon = false;
-        } else if (inArea && qName.equals("area")) {
+        } else if (inArea && "area".equals(qName)) {
             inArea = false;
-        } else if (qName.equals("scale_max")) {
+        } else if ("scale_max".equals(qName)) {
             inScaleMax = false;
-        } else if (qName.equals("scale_min")) {
+        } else if ("scale_min".equals(qName)) {
             inScaleMin = false;
         }
     }
 
-    @Override public void characters(char[] ch, int start, int length) {
+    @Override
+    public void characters(char[] ch, int start, int length) {
         if (inScaleMax) {
             rule.scaleMax = Long.parseLong(new String(ch, start, length));
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/MultiSplitLayout.java	(revision 7012)
@@ -1230,10 +1230,10 @@
                 }
                 String nodeType = st.sval.toUpperCase();
-                if (nodeType.equals("LEAF")) {
+                if ("LEAF".equals(nodeType)) {
                     parseLeaf(st, parent);
                 }
-                else if (nodeType.equals("ROW") || nodeType.equals("COLUMN")) {
+                else if ("ROW".equals(nodeType) || "COLUMN".equals(nodeType)) {
                     Split split = new Split();
-                    split.setRowLayout(nodeType.equals("ROW"));
+                    split.setRowLayout("ROW".equals(nodeType));
                     addSplitChild(parent, split);
                     parseSplit(st, split);
Index: /trunk/src/org/openstreetmap/josm/io/AbstractParser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/AbstractParser.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/AbstractParser.java	(revision 7012)
@@ -183,23 +183,24 @@
     
     protected final boolean doStartElement(String qName, Attributes atts) throws SAXException {
-        if (qName.equals("node")) {
+        switch (qName) {
+        case "node":
             startNode(atts);
             return true;
-        } else if (qName.equals("way")) {
+        case "way":
             startWay(atts);
             return true;
-        } else if (qName.equals("relation")) {
+        case "relation":
             startRelation(atts);
             return true;
-        } else if (qName.equals("tag")) {
+        case "tag":
             handleTag(atts);
             return true;
-        } else if (qName.equals("nd")) {
+        case "nd":
             handleNodeReference(atts);
             return true;
-        } else if (qName.equals("member")) {
+        case "member":
             handleMember(atts);
             return true;
-        } else {
+        default:
             return false;
         }
Index: /trunk/src/org/openstreetmap/josm/io/Capabilities.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/Capabilities.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/Capabilities.java	(revision 7012)
@@ -89,6 +89,6 @@
 
     public void put(String element, String attribute, String value) {
-        if (element.equals("blacklist")) {
-            if (attribute.equals("regex")) {
+        if ("blacklist".equals(element)) {
+            if ("regex".equals(attribute)) {
                 imageryBlacklist.add(value);
             }
Index: /trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/ChangesetQuery.java	(revision 7012)
@@ -28,6 +28,5 @@
 
     /**
-     * Replies a changeset query object from the query part of a OSM API URL for querying
-     * changesets.
+     * Replies a changeset query object from the query part of a OSM API URL for querying changesets.
      *
      * @param query the query part
@@ -348,24 +347,15 @@
         }
 
-        protected boolean parseOpen(String value) throws ChangesetQueryUrlException {
-            if (value == null || value.trim().isEmpty())
-                throw new ChangesetQueryUrlException(tr("Unexpected value for ''{0}'' in changeset query url, got {1}", "open",value));
-            if (value.equals("true"))
-                return true;
-            else if (value.equals("false"))
-                return false;
-            else
-                throw new ChangesetQueryUrlException(tr("Unexpected value for ''{0}'' in changeset query url, got {1}", "open",value));
-        }
-
         protected boolean parseBoolean(String value, String parameter) throws ChangesetQueryUrlException {
             if (value == null || value.trim().isEmpty())
                 throw new ChangesetQueryUrlException(tr("Unexpected value for ''{0}'' in changeset query url, got {1}", parameter,value));
-            if (value.equals("true"))
+            switch (value) {
+            case "true":
                 return true;
-            else if (value.equals("false"))
+            case "false":
                 return false;
-            else
+            default:
                 throw new ChangesetQueryUrlException(tr("Unexpected value for ''{0}'' in changeset query url, got {1}", parameter,value));
+            }
         }
 
@@ -414,19 +404,22 @@
             for (Entry<String, String> entry: queryParams.entrySet()) {
                 String k = entry.getKey();
-                if (k.equals("uid")) {
+                switch(k) {
+                case "uid":
                     if (queryParams.containsKey("display_name"))
                         throw new ChangesetQueryUrlException(tr("Cannot create a changeset query including both the query parameters ''uid'' and ''display_name''"));
                     csQuery.forUser(parseUid(queryParams.get("uid")));
-                } else if (k.equals("display_name")) {
+                    break;
+                case "display_name":
                     if (queryParams.containsKey("uid"))
                         throw new ChangesetQueryUrlException(tr("Cannot create a changeset query including both the query parameters ''uid'' and ''display_name''"));
                     csQuery.forUser(queryParams.get("display_name"));
-                } else if (k.equals("open")) {
-                    boolean b = parseBoolean(entry.getValue(), "open");
-                    csQuery.beingOpen(b);
-                } else if (k.equals("closed")) {
-                    boolean b = parseBoolean(entry.getValue(), "closed");
-                    csQuery.beingClosed(b);
-                } else if (k.equals("time")) {
+                    break;
+                case "open":
+                    csQuery.beingOpen(parseBoolean(entry.getValue(), "open"));
+                    break;
+                case "closed":
+                    csQuery.beingClosed(parseBoolean(entry.getValue(), "closed"));
+                    break;
+                case "time":
                     Date[] dates = parseTime(entry.getValue());
                     switch(dates.length) {
@@ -438,5 +431,6 @@
                         break;
                     }
-                } else if (k.equals("bbox")) {
+                    break;
+                case "bbox":
                     try {
                         csQuery.inBbox(new Bounds(entry.getValue(), ","));
@@ -444,5 +438,6 @@
                         throw new ChangesetQueryUrlException(e);
                     }
-                } else if (k.equals("changesets")) {
+                    break;
+                case "changesets":
                     try {
                         csQuery.forChangesetIds(parseLongs(entry.getValue()));
@@ -450,6 +445,8 @@
                         throw new ChangesetQueryUrlException(e);
                     }
-                } else
+                    break;
+                default:
                     throw new ChangesetQueryUrlException(tr("Unsupported parameter ''{0}'' in changeset query string", k));
+                }
             }
             return csQuery;
Index: /trunk/src/org/openstreetmap/josm/io/DiffResultProcessor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/DiffResultProcessor.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/DiffResultProcessor.java	(revision 7012)
@@ -148,10 +148,14 @@
         }
 
-        @Override public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
+        @Override
+        public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
             try {
-                if (qName.equals("diffResult")) {
+                switch (qName) {
+                case "diffResult":
                     // the root element, ignore
-                } else if (qName.equals("node") || qName.equals("way") || qName.equals("relation")) {
-
+                    break;
+                case "node":
+                case "way":
+                case "relation":
                     PrimitiveId id  = new SimplePrimitiveId(
                             Long.parseLong(atts.getValue("old_id")),
@@ -166,5 +170,6 @@
                     }
                     diffResults.put(id, entry);
-                } else {
+                    break;
+                default:
                     throwException(tr("Unexpected XML element with name ''{0}''", qName));
                 }
Index: /trunk/src/org/openstreetmap/josm/io/GpxReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/GpxReader.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/GpxReader.java	(revision 7012)
@@ -93,5 +93,6 @@
         }
 
-        @Override public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
+        @Override
+        public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
             elements.push(localName);
             switch(currentState) {
@@ -109,41 +110,53 @@
                 break;
             case gpx:
-                if (localName.equals("metadata")) {
+                switch (localName) {
+                case "metadata":
                     states.push(currentState);
                     currentState = State.metadata;
-                } else if (localName.equals("wpt")) {
+                    break;
+                case "wpt":
                     states.push(currentState);
                     currentState = State.wpt;
                     currentWayPoint = new WayPoint(parseLatLon(atts));
-                } else if (localName.equals("rte")) {
+                    break;
+                case "rte":
                     states.push(currentState);
                     currentState = State.rte;
                     currentRoute = new GpxRoute();
-                } else if (localName.equals("trk")) {
+                    break;
+                case "trk":
                     states.push(currentState);
                     currentState = State.trk;
                     currentTrack = new ArrayList<>();
                     currentTrackAttr = new HashMap<>();
-                } else if (localName.equals("extensions")) {
+                    break;
+                case "extensions":
                     states.push(currentState);
                     currentState = State.ext;
                     currentExtensions = new Extensions();
-                } else if (localName.equals("gpx") && atts.getValue("creator") != null && atts.getValue("creator").startsWith("Nokia Sports Tracker")) {
-                    nokiaSportsTrackerBug = true;
+                    break;
+                case "gpx":
+                    if (atts.getValue("creator") != null && atts.getValue("creator").startsWith("Nokia Sports Tracker")) {
+                        nokiaSportsTrackerBug = true;
+                    }
                 }
                 break;
             case metadata:
-                if (localName.equals("author")) {
+                switch (localName) {
+                case "author":
                     states.push(currentState);
                     currentState = State.author;
-                } else if (localName.equals("extensions")) {
+                    break;
+                case "extensions":
                     states.push(currentState);
                     currentState = State.ext;
                     currentExtensions = new Extensions();
-                } else if (localName.equals("copyright")) {
+                    break;
+                case "copyright":
                     states.push(currentState);
                     currentState = State.copyright;
                     data.attr.put(META_COPYRIGHT_AUTHOR, atts.getValue("author"));
-                } else if (localName.equals("link")) {
+                    break;
+                case "link":
                     states.push(currentState);
                     currentState = State.link;
@@ -152,22 +165,27 @@
                 break;
             case author:
-                if (localName.equals("link")) {
+                switch (localName) {
+                case "link":
                     states.push(currentState);
                     currentState = State.link;
                     currentLink = new GpxLink(atts.getValue("href"));
-                } else if (localName.equals("email")) {
+                    break;
+                case "email":
                     data.attr.put(META_AUTHOR_EMAIL, atts.getValue("id") + "@" + atts.getValue("domain"));
                 }
                 break;
             case trk:
-                if (localName.equals("trkseg")) {
+                switch (localName) {
+                case "trkseg":
                     states.push(currentState);
                     currentState = State.trkseg;
                     currentTrackSeg = new ArrayList<>();
-                } else if (localName.equals("link")) {
+                    break;
+                case "link":
                     states.push(currentState);
                     currentState = State.link;
                     currentLink = new GpxLink(atts.getValue("href"));
-                } else if (localName.equals("extensions")) {
+                    break;
+                case "extensions":
                     states.push(currentState);
                     currentState = State.ext;
@@ -176,5 +194,5 @@
                 break;
             case trkseg:
-                if (localName.equals("trkpt")) {
+                if ("trkpt".equals(localName)) {
                     states.push(currentState);
                     currentState = State.wpt;
@@ -183,27 +201,34 @@
                 break;
             case wpt:
-                if (localName.equals("link")) {
+                switch (localName) {
+                case "link":
                     states.push(currentState);
                     currentState = State.link;
                     currentLink = new GpxLink(atts.getValue("href"));
-                } else if (localName.equals("extensions")) {
+                    break;
+                case "extensions":
                     states.push(currentState);
                     currentState = State.ext;
                     currentExtensions = new Extensions();
+                    break;
                 }
                 break;
             case rte:
-                if (localName.equals("link")) {
+                switch (localName) {
+                case "link":
                     states.push(currentState);
                     currentState = State.link;
                     currentLink = new GpxLink(atts.getValue("href"));
-                } else if (localName.equals("rtept")) {
+                    break;
+                case "rtept":
                     states.push(currentState);
                     currentState = State.wpt;
                     currentWayPoint = new WayPoint(parseLatLon(atts));
-                } else if (localName.equals("extensions")) {
+                    break;
+                case "extensions":
                     states.push(currentState);
                     currentState = State.ext;
                     currentExtensions = new Extensions();
+                    break;
                 }
                 break;
@@ -212,5 +237,6 @@
         }
 
-        @Override public void characters(char[] ch, int start, int length) {
+        @Override
+        public void characters(char[] ch, int start, int length) {
             /**
              * Remove illegal characters generated by the Nokia Sports Tracker device.
@@ -241,64 +267,96 @@
 
         @SuppressWarnings("unchecked")
-        @Override public void endElement(String namespaceURI, String localName, String qName) {
+        @Override
+        public void endElement(String namespaceURI, String localName, String qName) {
             elements.pop();
             switch (currentState) {
             case gpx:       // GPX 1.0
             case metadata:  // GPX 1.1
-                if (localName.equals("name")) {
+                switch (localName) {
+                case "name":
                     data.attr.put(META_NAME, accumulator.toString());
-                } else if (localName.equals("desc")) {
+                    break;
+                case "desc":
                     data.attr.put(META_DESC, accumulator.toString());
-                } else if (localName.equals("time")) {
+                    break;
+                case "time":
                     data.attr.put(META_TIME, accumulator.toString());
-                } else if (localName.equals("keywords")) {
+                    break;
+                case "keywords":
                     data.attr.put(META_KEYWORDS, accumulator.toString());
-                } else if (version.equals("1.0") && localName.equals("author")) {
-                    // author is a string in 1.0, but complex element in 1.1
+                    break;
+                case "author":
+                    if ("1.0".equals(version)) {
+                        // author is a string in 1.0, but complex element in 1.1
+                        data.attr.put(META_AUTHOR_NAME, accumulator.toString());
+                    }
+                    break;
+                case "email":
+                    if ("1.0".equals(version)) {
+                        data.attr.put(META_AUTHOR_EMAIL, accumulator.toString());
+                    }
+                    break;
+                case "url":
+                case "urlname":
+                    data.attr.put(localName, accumulator.toString());
+                    break;
+                case "metadata":
+                case "gpx":
+                    if ((currentState == State.metadata && "metadata".equals(localName)) ||
+                        (currentState == State.gpx && "gpx".equals(localName))) {
+                        convertUrlToLink(data.attr);
+                        if (currentExtensions != null && !currentExtensions.isEmpty()) {
+                            data.attr.put(META_EXTENSIONS, currentExtensions);
+                        }
+                        currentState = states.pop();
+                        break;
+                    }
+                default:
+                    //TODO: parse bounds, extensions
+                }
+                break;
+            case author:
+                switch (localName) {
+                case "author":
+                    currentState = states.pop();
+                    break;
+                case "name":
                     data.attr.put(META_AUTHOR_NAME, accumulator.toString());
-                } else if (version.equals("1.0") && localName.equals("email")) {
-                    data.attr.put(META_AUTHOR_EMAIL, accumulator.toString());
-                } else if (localName.equals("url") || localName.equals("urlname")) {
-                    data.attr.put(localName, accumulator.toString());
-                } else if ((currentState == State.metadata && localName.equals("metadata")) ||
-                        (currentState == State.gpx && localName.equals("gpx"))) {
-                    convertUrlToLink(data.attr);
-                    if (currentExtensions != null && !currentExtensions.isEmpty()) {
-                        data.attr.put(META_EXTENSIONS, currentExtensions);
-                    }
-                    currentState = states.pop();
-                }
-                //TODO: parse bounds, extensions
-                break;
-            case author:
-                if (localName.equals("author")) {
-                    currentState = states.pop();
-                } else if (localName.equals("name")) {
-                    data.attr.put(META_AUTHOR_NAME, accumulator.toString());
-                } else if (localName.equals("email")) {
+                    break;
+                case "email":
                     // do nothing, has been parsed on startElement
-                } else if (localName.equals("link")) {
+                    break;
+                case "link":
                     data.attr.put(META_AUTHOR_LINK, currentLink);
+                    break;
                 }
                 break;
             case copyright:
-                if (localName.equals("copyright")) {
-                    currentState = states.pop();
-                } else if (localName.equals("year")) {
+                switch (localName) {
+                case "copyright":
+                    currentState = states.pop();
+                    break;
+                case "year":
                     data.attr.put(META_COPYRIGHT_YEAR, accumulator.toString());
-                } else if (localName.equals("license")) {
+                    break;
+                case "license":
                     data.attr.put(META_COPYRIGHT_LICENSE, accumulator.toString());
+                    break;
                 }
                 break;
             case link:
-                if (localName.equals("text")) {
+                switch (localName) {
+                case "text":
                     currentLink.text = accumulator.toString();
-                } else if (localName.equals("type")) {
+                    break;
+                case "type":
                     currentLink.type = accumulator.toString();
-                } else if (localName.equals("link")) {
+                    break;
+                case "link":
                     if (currentLink.uri == null && accumulator != null && accumulator.toString().length() != 0) {
                         currentLink = new GpxLink(accumulator.toString());
                     }
                     currentState = states.pop();
+                    break;
                 }
                 if (currentState == State.author) {
@@ -313,12 +371,19 @@
                 break;
             case wpt:
-                if (   localName.equals("ele")  || localName.equals("magvar")
-                        || localName.equals("name") || localName.equals("src")
-                        || localName.equals("geoidheight") || localName.equals("type")
-                        || localName.equals("sym") || localName.equals("url")
-                        || localName.equals("urlname")) {
+                switch (localName) {
+                case "ele":
+                case "magvar":
+                case "name":
+                case "src":
+                case "geoidheight":
+                case "type":
+                case "sym":
+                case "url":
+                case "urlname":
                     currentWayPoint.attr.put(localName, accumulator.toString());
-                } else if(localName.equals("hdop") || localName.equals("vdop") ||
-                        localName.equals("pdop")) {
+                    break;
+                case "hdop":
+                case "vdop":
+                case "pdop":
                     try {
                         currentWayPoint.attr.put(localName, Float.parseFloat(accumulator.toString()));
@@ -326,19 +391,25 @@
                         currentWayPoint.attr.put(localName, new Float(0));
                     }
-                } else if (localName.equals("time")) {
+                    break;
+                case "time":
                     currentWayPoint.attr.put(localName, accumulator.toString());
                     currentWayPoint.setTime();
-                } else if (localName.equals("cmt") || localName.equals("desc")) {
+                    break;
+                case "cmt":
+                case "desc":
                     currentWayPoint.attr.put(localName, accumulator.toString());
                     currentWayPoint.setTime();
-                } else if (localName.equals("rtept")) {
+                    break;
+                case "rtept":
                     currentState = states.pop();
                     convertUrlToLink(currentWayPoint.attr);
                     currentRoute.routePoints.add(currentWayPoint);
-                } else if (localName.equals("trkpt")) {
+                    break;
+                case "trkpt":
                     currentState = states.pop();
                     convertUrlToLink(currentWayPoint.attr);
                     currentTrackSeg.add(currentWayPoint);
-                } else if (localName.equals("wpt")) {
+                    break;
+                case "wpt":
                     currentState = states.pop();
                     convertUrlToLink(currentWayPoint.attr);
@@ -347,8 +418,9 @@
                     }
                     data.waypoints.add(currentWayPoint);
+                    break;
                 }
                 break;
             case trkseg:
-                if (localName.equals("trkseg")) {
+                if ("trkseg".equals(localName)) {
                     currentState = states.pop();
                     currentTrack.add(currentTrackSeg);
@@ -356,35 +428,46 @@
                 break;
             case trk:
-                if (localName.equals("trk")) {
+                switch (localName) {
+                case "trk":
                     currentState = states.pop();
                     convertUrlToLink(currentTrackAttr);
                     data.tracks.add(new ImmutableGpxTrack(currentTrack, currentTrackAttr));
-                } else if (localName.equals("name") || localName.equals("cmt")
-                        || localName.equals("desc") || localName.equals("src")
-                        || localName.equals("type") || localName.equals("number")
-                        || localName.equals("url") || localName.equals("urlname")) {
+                    break;
+                case "name":
+                case "cmt":
+                case "desc":
+                case "src":
+                case "type":
+                case "number":
+                case "url":
+                case "urlname":
                     currentTrackAttr.put(localName, accumulator.toString());
+                    break;
                 }
                 break;
             case ext:
-                if (localName.equals("extensions")) {
-                    currentState = states.pop();
-                // only interested in extensions written by JOSM
+                if ("extensions".equals(localName)) {
+                    currentState = states.pop();
                 } else if (JOSM_EXTENSIONS_NAMESPACE_URI.equals(namespaceURI)) {
+                    // only interested in extensions written by JOSM
                     currentExtensions.put(localName, accumulator.toString());
                 }
                 break;
             default:
-                if (localName.equals("wpt")) {
-                    currentState = states.pop();
-                } else if (localName.equals("rte")) {
+                switch (localName) {
+                case "wpt":
+                    currentState = states.pop();
+                    break;
+                case "rte":
                     currentState = states.pop();
                     convertUrlToLink(currentRoute.attr);
                     data.routes.add(currentRoute);
-                }
-            }
-        }
-
-        @Override public void endDocument() throws SAXException  {
+                    break;
+                }
+            }
+        }
+
+        @Override
+        public void endDocument() throws SAXException  {
             if (!states.empty())
                 throw new SAXException(tr("Parse error: invalid document structure for GPX document."));
Index: /trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java	(revision 7012)
@@ -131,5 +131,5 @@
         try {
             url = new URL(name);
-            if (url.getProtocol().equals("file")) {
+            if ("file".equals(url.getProtocol())) {
                 file = new File(name.substring("file:/".length()));
                 if (!file.exists()) {
@@ -234,5 +234,5 @@
         try {
             url = new URL(name);
-            if (!url.getProtocol().equals("file")) {
+            if (!"file".equals(url.getProtocol())) {
                 String prefKey = getPrefKey(url, destDir);
                 List<String> localPath = new ArrayList<>(Main.pref.getCollection(prefKey));
Index: /trunk/src/org/openstreetmap/josm/io/NmeaReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/NmeaReader.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/NmeaReader.java	(revision 7012)
@@ -264,5 +264,5 @@
 
             // handle the packet content
-            if(e[0].equals("$GPGGA") || e[0].equals("$GNGGA")) {
+            if("$GPGGA".equals(e[0]) || "$GNGGA".equals(e[0])) {
                 // Position
                 LatLon latLon = parseLatLon(
@@ -299,5 +299,5 @@
                 // elevation
                 accu=e[GPGGA.HEIGHT_UNTIS.position];
-                if(accu.equals("M")) {
+                if("M".equals(accu)) {
                     // Ignore heights that are not in meters for now
                     accu=e[GPGGA.HEIGHT.position];
@@ -345,8 +345,8 @@
                     }
                 }
-            } else if(e[0].equals("$GPVTG") || e[0].equals("$GNVTG")) {
+            } else if("$GPVTG".equals(e[0]) || "$GNVTG".equals(e[0])) {
                 // COURSE
                 accu = e[GPVTG.COURSE_REF.position];
-                if(accu.equals("T")) {
+                if("T".equals(accu)) {
                     // other values than (T)rue are ignored
                     accu = e[GPVTG.COURSE.position];
@@ -366,5 +366,5 @@
                     }
                 }
-            } else if(e[0].equals("$GPGSA") || e[0].equals("$GNGSA")) {
+            } else if("$GPGSA".equals(e[0]) || "$GNGSA".equals(e[0])) {
                 // vdop
                 accu=e[GPGSA.VDOP.position];
@@ -383,5 +383,5 @@
                 }
             }
-            else if(e[0].equals("$GPRMC") || e[0].equals("$GNRMC")) {
+            else if("$GPRMC".equals(e[0]) || "$GNRMC".equals(e[0])) {
                 // coordinates
                 LatLon latLon = parseLatLon(
Index: /trunk/src/org/openstreetmap/josm/io/OsmApi.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/OsmApi.java	(revision 7012)
@@ -620,5 +620,5 @@
                 }
 
-                if (requestMethod.equals("PUT") || requestMethod.equals("POST") || requestMethod.equals("DELETE")) {
+                if ("PUT".equals(requestMethod) || "POST".equals(requestMethod) || "DELETE".equals(requestMethod)) {
                     activeConnection.setDoOutput(true);
                     activeConnection.setRequestProperty("Content-type", "text/xml");
Index: /trunk/src/org/openstreetmap/josm/io/OsmChangeReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmChangeReader.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/OsmChangeReader.java	(revision 7012)
@@ -34,5 +34,5 @@
     @Override
     protected void parseRoot() throws XMLStreamException {
-        if (parser.getLocalName().equals("osmChange")) {
+        if ("osmChange".equals(parser.getLocalName())) {
             parseOsmChange();
         } else {
@@ -69,17 +69,21 @@
             if (event == XMLStreamConstants.START_ELEMENT) {
                 OsmPrimitive p = null;
-                if (parser.getLocalName().equals("node")) {
+                switch (parser.getLocalName()) {
+                case "node":
                     p = parseNode();
-                } else if (parser.getLocalName().equals("way")) {
+                    break;
+                case "way":
                     p = parseWay();
-                } else if (parser.getLocalName().equals("relation")) {
+                    break;
+                case "relation":
                     p = parseRelation();
-                } else {
+                    break;
+                default:
                     parseUnknown();
                 }
                 if (p != null && action != null) {
-                    if (action.equals("modify")) {
+                    if ("modify".equals(action)) {
                         p.setModified(true);
-                    } else if (action.equals("delete")) {
+                    } else if ("delete".equals(action)) {
                         p.setDeleted(true);
                     }
Index: /trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java	(revision 7012)
@@ -47,17 +47,26 @@
         }
 
-        @Override public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
+        @Override
+        public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
             if (super.doStartElement(qName, atts)) {
                 // done
-            } else if (qName.equals("osmChange")) {
+                return;
+            }
+            switch (qName) { 
+            case "osmChange":
                 // do nothing
-            } else if (qName.equals("create")) {
+                break;
+            case "create":
                 currentModificationType = ChangesetModificationType.CREATED;
-            } else if (qName.equals("modify")) {
+                break;
+            case "modify":
                 currentModificationType = ChangesetModificationType.UPDATED;
-            } else if (qName.equals("delete")) {
+                break;
+            case "delete":
                 currentModificationType = ChangesetModificationType.DELETED;
-            } else {
-                Main.warn(tr("Unsupported start element ''{0}'' in changeset content at position ({1},{2}). Skipping.", qName, locator.getLineNumber(), locator.getColumnNumber()));
+                break;
+            default:
+                Main.warn(tr("Unsupported start element ''{0}'' in changeset content at position ({1},{2}). Skipping.", 
+                        qName, locator.getLineNumber(), locator.getColumnNumber()));
             }
         }
@@ -65,27 +74,33 @@
         @Override
         public void endElement(String uri, String localName, String qName) throws SAXException {
-            if (qName.equals("node")
-                    || qName.equals("way")
-                    || qName.equals("relation")) {
+            switch (qName) {
+            case "node":
+            case "way":
+            case "relation":
                 if (currentModificationType == null) {
                     throwException(tr("Illegal document structure. Found node, way, or relation outside of ''create'', ''modify'', or ''delete''."));
                 }
                 data.put(currentPrimitive, currentModificationType);
-            } else if (qName.equals("osmChange")) {
+                break;
+            case "osmChange":
                 // do nothing
-            } else if (qName.equals("create")) {
+                break;
+            case "create":
                 currentModificationType = null;
-            } else if (qName.equals("modify")) {
+                break;
+            case "modify":
                 currentModificationType = null;
-            } else if (qName.equals("delete")) {
+                break;
+            case "delete":
                 currentModificationType = null;
-            } else if (qName.equals("tag")) {
+                break;
+            case "tag":
+            case "nd":
+            case "member":
                 // do nothing
-            } else if (qName.equals("nd")) {
-                // do nothing
-            } else if (qName.equals("member")) {
-                // do nothing
-            } else {
-                Main.warn(tr("Unsupported end element ''{0}'' in changeset content at position ({1},{2}). Skipping.", qName, locator.getLineNumber(), locator.getColumnNumber()));
+                break;
+            default:
+                Main.warn(tr("Unsupported end element ''{0}'' in changeset content at position ({1},{2}). Skipping.", 
+                        qName, locator.getLineNumber(), locator.getColumnNumber()));
             }
         }
Index: /trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java	(revision 7012)
@@ -112,7 +112,7 @@
             if (value == null) {
                 throwException(tr("Missing mandatory attribute ''{0}''.", "open"));
-            } else if (value.equals("true")) {
+            } else if ("true".equals(value)) {
                 current.setOpen(true);
-            } else if (value.equals("false")) {
+            } else if ("false".equals(value)) {
                 current.setOpen(false);
             } else {
@@ -160,5 +160,6 @@
         @Override
         public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
-            if (qName.equals("osm")) {
+            switch (qName) {
+            case "osm":
                 if (atts == null) {
                     throwException(tr("Missing mandatory attribute ''{0}'' of XML element {1}.", "version", "osm"));
@@ -168,15 +169,18 @@
                     throwException(tr("Missing mandatory attribute ''{0}''.", "version"));
                 }
-                if (!(v.equals("0.6"))) {
+                if (!("0.6".equals(v))) {
                     throwException(tr("Unsupported version: {0}", v));
                 }
-            } else if (qName.equals("changeset")) {
+                break;
+            case "changeset":
                 current = new Changeset();
                 parseChangesetAttributes(current, atts);
-            } else if (qName.equals("tag")) {
+                break;
+            case "tag":
                 String key = atts.getValue("k");
                 String value = atts.getValue("v");
                 current.put(key, value);
-            } else {
+                break;
+            default:
                 throwException(tr("Undefined element ''{0}'' found in input stream. Aborting.", qName));
             }
@@ -185,5 +189,5 @@
         @Override
         public void endElement(String uri, String localName, String qName) throws SAXException {
-            if (qName.equals("changeset")) {
+            if ("changeset".equals(qName)) {
                 changesets.add(current);
             }
Index: /trunk/src/org/openstreetmap/josm/io/OsmConnection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmConnection.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/OsmConnection.java	(revision 7012)
@@ -131,7 +131,7 @@
     protected void addAuth(HttpURLConnection connection) throws OsmTransferException {
         String authMethod = Main.pref.get("osm-server.auth-method", "basic");
-        if (authMethod.equals("basic")) {
+        if ("basic".equals(authMethod)) {
             addBasicAuthorizationHeader(connection);
-        } else if (authMethod.equals("oauth")) {
+        } else if ("oauth".equals(authMethod)) {
             addOAuthAuthorizationHeader(connection);
         } else {
Index: /trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java	(revision 7012)
@@ -55,7 +55,7 @@
         @Override
         public void endElement(String uri, String localName, String qName) throws SAXException {
-            if (qName.equals("node")
-                    || qName.equals("way")
-                    || qName.equals("relation")) {
+            if ("node".equals(qName)
+                    || "way".equals(qName)
+                    || "relation".equals(qName)) {
                 data.put(currentPrimitive);
             }
Index: /trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 7012)
@@ -109,5 +109,5 @@
 
     protected void parseRoot() throws XMLStreamException {
-        if (parser.getLocalName().equals("osm")) {
+        if ("osm".equals(parser.getLocalName())) {
             parseOsm();
         } else {
@@ -121,5 +121,5 @@
             throwException(tr("Missing mandatory attribute ''{0}''.", "version"));
         }
-        if (!(v.equals("0.5") || v.equals("0.6"))) {
+        if (!("0.5".equals(v) || "0.6".equals(v))) {
             throwException(tr("Unsupported version: {0}", v));
         }
@@ -143,15 +143,21 @@
 
             if (event == XMLStreamConstants.START_ELEMENT) {
-                if (parser.getLocalName().equals("bounds")) {
+                switch (parser.getLocalName()) {
+                case "bounds":
                     parseBounds(generator);
-                } else if (parser.getLocalName().equals("node")) {
+                    break;
+                case "node":
                     parseNode();
-                } else if (parser.getLocalName().equals("way")) {
+                    break;
+                case "way":
                     parseWay();
-                } else if (parser.getLocalName().equals("relation")) {
+                    break;
+                case "relation":
                     parseRelation();
-                } else if (parser.getLocalName().equals("changeset")) {
+                    break;
+                case "changeset":
                     parseChangeset(uploadChangesetId);
-                } else {
+                    break;
+                default:
                     parseUnknown();
                 }
@@ -205,5 +211,5 @@
             int event = parser.next();
             if (event == XMLStreamConstants.START_ELEMENT) {
-                if (parser.getLocalName().equals("tag")) {
+                if ("tag".equals(parser.getLocalName())) {
                     parseTag(n);
                 } else {
@@ -227,9 +233,12 @@
             int event = parser.next();
             if (event == XMLStreamConstants.START_ELEMENT) {
-                if (parser.getLocalName().equals("nd")) {
+                switch (parser.getLocalName()) {
+                case "nd":
                     nodeIds.add(parseWayNode(w));
-                } else if (parser.getLocalName().equals("tag")) {
+                    break;
+                case "tag":
                     parseTag(w);
-                } else {
+                    break;
+                default:
                     parseUnknown();
                 }
@@ -274,9 +283,12 @@
             int event = parser.next();
             if (event == XMLStreamConstants.START_ELEMENT) {
-                if (parser.getLocalName().equals("member")) {
+                switch (parser.getLocalName()) {
+                case "member":
                     members.add(parseRelationMember(r));
-                } else if (parser.getLocalName().equals("tag")) {
+                    break;
+                case "tag":
                     parseTag(r);
-                } else {
+                    break;
+                default:
                     parseUnknown();
                 }
@@ -337,5 +349,5 @@
                 int event = parser.next();
                 if (event == XMLStreamConstants.START_ELEMENT) {
-                    if (parser.getLocalName().equals("tag")) {
+                    if ("tag".equals(parser.getLocalName())) {
                         parseTag(uploadChangeset);
                     } else {
@@ -447,5 +459,6 @@
                 throwException(tr("Illegal value for attribute ''version'' on OSM primitive with ID {0}. Got {1}.", Long.toString(current.getUniqueId()), versionString), e);
             }
-            if (ds.getVersion().equals("0.6")){
+            switch (ds.getVersion()) {
+            case "0.6":
                 if (version <= 0 && !current.isNew()) {
                     throwException(tr("Illegal value for attribute ''version'' on OSM primitive with ID {0}. Got {1}.", Long.toString(current.getUniqueId()), versionString));
@@ -454,5 +467,6 @@
                     version = 0;
                 }
-            } else if (ds.getVersion().equals("0.5")) {
+                break;
+            case "0.5":
                 if (version <= 0 && !current.isNew()) {
                     Main.warn(tr("Normalizing value of attribute ''version'' of element {0} to {2}, API version is ''{3}''. Got {1}.", current.getUniqueId(), version, 1, "0.5"));
@@ -462,5 +476,6 @@
                     version = 0;
                 }
-            } else {
+                break;
+            default:
                 // should not happen. API version has been checked before
                 throwException(tr("Unknown or unsupported API version. Got {0}.", ds.getVersion()));
@@ -469,13 +484,12 @@
             // version expected for OSM primitives with an id assigned by the server (id > 0), since API 0.6
             //
-            if (!current.isNew() && ds.getVersion() != null && ds.getVersion().equals("0.6")) {
+            if (!current.isNew() && ds.getVersion() != null && "0.6".equals(ds.getVersion())) {
                 throwException(tr("Missing attribute ''version'' on OSM primitive with ID {0}.", Long.toString(current.getUniqueId())));
-            } else if (!current.isNew() && ds.getVersion() != null && ds.getVersion().equals("0.5")) {
+            } else if (!current.isNew() && ds.getVersion() != null && "0.5".equals(ds.getVersion())) {
                 // default version in 0.5 files for existing primitives
                 Main.warn(tr("Normalizing value of attribute ''version'' of element {0} to {2}, API version is ''{3}''. Got {1}.", current.getUniqueId(), version, 1, "0.5"));
                 version= 1;
-            } else if (current.isNew() && ds.getVersion() != null && ds.getVersion().equals("0.5")) {
-                // default version in 0.5 files for new primitives, no warning necessary. This is
-                // (was) legal in API 0.5
+            } else if (current.isNew() && ds.getVersion() != null && "0.5".equals(ds.getVersion())) {
+                // default version in 0.5 files for new primitives, no warning necessary. This is (was) legal in API 0.5
                 version= 0;
             }
@@ -486,8 +500,8 @@
         if (action == null) {
             // do nothing
-        } else if (action.equals("delete")) {
+        } else if ("delete".equals(action)) {
             current.setDeleted(true);
             current.setModified(current.isVisible());
-        } else if (action.equals("modify")) {
+        } else if ("modify".equals(action)) {
             current.setModified(true);
         }
Index: /trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java	(revision 7012)
@@ -98,10 +98,10 @@
             switch (states.peek()) {
             case INIT:
-                if (qName.equals("imagery")) {
+                if ("imagery".equals(qName)) {
                     newState = State.IMAGERY;
                 }
                 break;
             case IMAGERY:
-                if (qName.equals("entry")) {
+                if ("entry".equals(qName)) {
                     entry = new ImageryInfo();
                     skipEntry = false;
@@ -128,5 +128,5 @@
                 }).contains(qName)) {
                     newState = State.ENTRY_ATTRIBUTE;
-                } else if (qName.equals("bounds")) {
+                } else if ("bounds".equals(qName)) {
                     try {
                         bounds = new ImageryBounds(
@@ -139,5 +139,5 @@
                     }
                     newState = State.BOUNDS;
-                } else if (qName.equals("projections")) {
+                } else if ("projections".equals(qName)) {
                     projections = new ArrayList<>();
                     newState = State.PROJECTIONS;
@@ -145,5 +145,5 @@
                 break;
             case BOUNDS:
-                if (qName.equals("shape")) {
+                if ("shape".equals(qName)) {
                     shape = new Shape();
                     newState = State.SHAPE;
@@ -151,5 +151,5 @@
                 break;
             case SHAPE:
-                if (qName.equals("point")) {
+                if ("point".equals(qName)) {
                     try {
                         shape.addPoint(atts.getValue("lat"), atts.getValue("lon"));
@@ -160,5 +160,5 @@
                 break;
             case PROJECTIONS:
-                if (qName.equals("code")) {
+                if ("code".equals(qName)) {
                     newState = State.CODE;
                 }
@@ -192,5 +192,5 @@
                 throw new RuntimeException("parsing error: more closing than opening elements");
             case ENTRY:
-                if (qName.equals("entry")) {
+                if ("entry".equals(qName)) {
                     if (!skipEntry) {
                         entries.add(entry);
@@ -200,7 +200,9 @@
                 break;
             case ENTRY_ATTRIBUTE:
-                if (qName.equals("name")) {
+                switch(qName) {
+                case "name":
                     entry.setTranslatedName(accumulator.toString());
-                } else if (qName.equals("type")) {
+                    break;
+                case "type":
                     boolean found = false;
                     for (ImageryType type : ImageryType.values()) {
@@ -214,17 +216,25 @@
                         skipEntry = true;
                     }
-                } else if (qName.equals("default")) {
-                    if (accumulator.toString().equals("true")) {
+                    break;
+                case "default":
+                    switch (accumulator.toString()) {
+                    case "true":
                         entry.setDefaultEntry(true);
-                    } else if (accumulator.toString().equals("false")) {
+                        break;
+                    case "false":
                         entry.setDefaultEntry(false);
-                    } else {
+                        break;
+                    default:
                         skipEntry = true;
                     }
-                } else if (qName.equals("url")) {
+                    break;
+                case "url":
                     entry.setUrl(accumulator.toString());
-                } else if (qName.equals("eula")) {
+                    break;
+                case "eula":
                     entry.setEulaAcceptanceRequired(accumulator.toString());
-                } else if (qName.equals("min-zoom") || qName.equals("max-zoom")) {
+                    break;
+                case "min-zoom":
+                case "max-zoom":
                     Integer val = null;
                     try {
@@ -236,5 +246,5 @@
                         skipEntry = true;
                     } else {
-                        if (qName.equals("min-zoom")) {
+                        if ("min-zoom".equals(qName)) {
                             entry.setDefaultMinZoom(val);
                         } else {
@@ -242,20 +252,29 @@
                         }
                     }
-                } else if (qName.equals("attribution-text")) {
+                    break;
+                case "attribution-text":
                     entry.setAttributionText(accumulator.toString());
-                } else if (qName.equals("attribution-url")) {
+                    break;
+                case "attribution-url":
                     entry.setAttributionLinkURL(accumulator.toString());
-                } else if (qName.equals("logo-image")) {
+                    break;
+                case "logo-image":
                     entry.setAttributionImage(accumulator.toString());
-                } else if (qName.equals("logo-url")) {
+                    break;
+                case "logo-url":
                     entry.setAttributionImageURL(accumulator.toString());
-                } else if (qName.equals("terms-of-use-text")) {
+                    break;
+                case "terms-of-use-text":
                     entry.setTermsOfUseText(accumulator.toString());
-                } else if (qName.equals("terms-of-use-url")) {
+                    break;
+                case "terms-of-use-url":
                     entry.setTermsOfUseURL(accumulator.toString());
-                } else if (qName.equals("country-code")) {
+                    break;
+                case "country-code":
                     entry.setCountryCode(accumulator.toString());
-                } else if (qName.equals("icon")) {
+                    break;
+                case "icon":
                     entry.setIcon(accumulator.toString());
+                    break;
                 }
                 break;
Index: /trunk/src/org/openstreetmap/josm/io/imagery/WMSGrabber.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/imagery/WMSGrabber.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/imagery/WMSGrabber.java	(revision 7012)
@@ -92,5 +92,5 @@
             e = ne.lon();
         }
-        if (myProj.equals("EPSG:4326") && !info.getServerProjections().contains(myProj) && info.getServerProjections().contains("CRS:84")) {
+        if ("EPSG:4326".equals(myProj) && !info.getServerProjections().contains(myProj) && info.getServerProjections().contains("CRS:84")) {
             myProj = "CRS:84";
         }
@@ -114,5 +114,5 @@
         if (baseURL.toLowerCase().contains("crs=epsg:4326")) {
             switchLatLon = true;
-        } else if (baseURL.toLowerCase().contains("crs=") && myProj.equals("EPSG:4326")) {
+        } else if (baseURL.toLowerCase().contains("crs=") && "EPSG:4326".equals(myProj)) {
             switchLatLon = true;
         }
Index: /trunk/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/io/session/GeoImageSessionImporter.java	(revision 7012)
@@ -45,31 +45,43 @@
                             Element attrElem = (Element) attrNode;
                             try {
-                                String attrElemName = attrElem.getTagName();
-                                if ("file".equals(attrElemName)) {
+                                switch(attrElem.getTagName()) {
+                                case "file":
                                     entry.setFile(new File(attrElem.getTextContent()));
-                                } else if ("position".equals(attrElemName)) {
+                                    break;
+                                case "position":
                                     double lat = Double.parseDouble(attrElem.getAttribute("lat"));
                                     double lon = Double.parseDouble(attrElem.getAttribute("lon"));
                                     entry.setPos(new LatLon(lat, lon));
-                                } else if ("speed".equals(attrElemName)) {
+                                    break;
+                                case "speed":
                                     entry.setSpeed(Double.parseDouble(attrElem.getTextContent()));
-                                } else if ("elevation".equals(attrElemName)) {
+                                    break;
+                                case "elevation":
                                     entry.setElevation(Double.parseDouble(attrElem.getTextContent()));
-                                } else if ("gps-time".equals(attrElemName)) {
+                                    break;
+                                case "gps-time":
                                     entry.setGpsTime(new Date(Long.parseLong(attrElem.getTextContent())));
-                                } else if ("exif-orientation".equals(attrElemName)) {
+                                    break;
+                                case "exif-orientation":
                                     entry.setExifOrientation(Integer.parseInt(attrElem.getTextContent()));
-                                } else if ("exif-time".equals(attrElemName)) {
+                                    break;
+                                case "exif-time":
                                     entry.setExifTime(new Date(Long.parseLong(attrElem.getTextContent())));
-                                } else if ("exif-gps-time".equals(attrElemName)) {
+                                    break;
+                                case "exif-gps-time":
                                     entry.setExifGpsTime(new Date(Long.parseLong(attrElem.getTextContent())));
-                                } else if ("exif-coordinates".equals(attrElemName)) {
-                                    double lat = Double.parseDouble(attrElem.getAttribute("lat"));
-                                    double lon = Double.parseDouble(attrElem.getAttribute("lon"));
-                                    entry.setExifCoor(new LatLon(lat, lon));
-                                } else if ("exif-image-direction".equals(attrElemName)) {
+                                    break;
+                                case "exif-coordinates":
+                                    entry.setExifCoor(new LatLon(
+                                            Double.parseDouble(attrElem.getAttribute("lat")), 
+                                            Double.parseDouble(attrElem.getAttribute("lon"))));
+                                    break;
+                                case "exif-image-direction":
                                     entry.setExifImgDir(Double.parseDouble(attrElem.getTextContent()));
-                                } else if ("is-new-gps-data".equals(attrElemName) && Boolean.parseBoolean(attrElem.getTextContent())) {
-                                    entry.flagNewGpsData();
+                                    break;
+                                case "is-new-gps-data":
+                                    if (Boolean.parseBoolean(attrElem.getTextContent())) {
+                                        entry.flagNewGpsData();
+                                    }
                                 }
                                 // TODO: handle thumbnail loading
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 7012)
@@ -351,7 +351,7 @@
         // check whether automatic update at startup was disabled
         //
-        String policy = Main.pref.get(togglePreferenceKey, "ask");
-        policy = policy.trim().toLowerCase();
-        if ("never".equals(policy)) {
+        String policy = Main.pref.get(togglePreferenceKey, "ask").trim().toLowerCase();
+        switch(policy) {
+        case "never":
             if ("pluginmanager.version-based-update.policy".equals(togglePreferenceKey)) {
                 Main.info(tr("Skipping plugin update after JOSM upgrade. Automatic update at startup is disabled."));
@@ -360,7 +360,6 @@
             }
             return false;
-        }
-
-        if ("always".equals(policy)) {
+
+        case "always":
             if ("pluginmanager.version-based-update.policy".equals(togglePreferenceKey)) {
                 Main.info(tr("Running plugin update after JOSM upgrade. Automatic update at startup is enabled."));
@@ -369,9 +368,12 @@
             }
             return true;
-        }
-
-        if (!"ask".equals(policy)) {
+            
+        case "ask":
+            break;
+
+        default:
             Main.warn(tr("Unexpected value ''{0}'' for preference ''{1}''. Assuming value ''ask''.", policy, togglePreferenceKey));
         }
+
         int ret = HelpAwareOptionPane.showOptionDialog(
                 parent,
Index: /trunk/src/org/openstreetmap/josm/tools/Geometry.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 7012)
@@ -834,7 +834,7 @@
             for (RelationMember m : multiPolygon.getMembers()) {
                 if (m.getType().equals(OsmPrimitiveType.WAY)) {
-                    if (m.getRole().equals("outer")) {
+                    if ("outer".equals(m.getRole())) {
                         outers.add(m.getWay());
-                    } else if (m.getRole().equals("inner")) {
+                    } else if ("inner".equals(m.getRole())) {
                         inners.add(m.getWay());
                     }
Index: /trunk/src/org/openstreetmap/josm/tools/I18n.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/tools/I18n.java	(revision 7012)
@@ -394,7 +394,6 @@
     }
 
-    public static void addTexts(File source)
-    {
-        if(loadedCode.equals("en"))
+    public static void addTexts(File source) {
+        if ("en".equals(loadedCode))
             return;
         FileInputStream fis = null;
@@ -440,8 +439,6 @@
     }
 
-    private static boolean load(String l)
-    {
-        if(l.equals("en") || l.equals("en_US"))
-        {
+    private static boolean load(String l) {
+        if ("en".equals(l) || "en_US".equals(l)) {
             strings = null;
             pstrings = null;
@@ -451,9 +448,8 @@
         }
         URL en = getTranslationFile("en");
-        if(en == null)
+        if (en == null)
             return false;
         URL tr = getTranslationFile(l);
-        if(tr == null || !languages.containsKey(l))
-        {
+        if (tr == null || !languages.containsKey(l)) {
             int i = l.indexOf('_');
             if (i > 0) {
@@ -461,5 +457,5 @@
             }
             tr = getTranslationFile(l);
-            if(tr == null || !languages.containsKey(l))
+            if (tr == null || !languages.containsKey(l))
                 return false;
         }
@@ -643,5 +639,5 @@
                 Locale.setDefault(l);
             } else {
-                if (!l.getLanguage().equals("en")) {
+                if (!"en".equals(l.getLanguage())) {
                     Main.info(tr("Unable to find translation for the locale {0}. Reverting to {1}.",
                             l.getDisplayName(), Locale.getDefault().getDisplayName()));
Index: /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 7012)
@@ -606,5 +606,5 @@
         try {
             zipFile = new ZipFile(archive);
-            if (inArchiveDir == null || inArchiveDir.equals(".")) {
+            if (inArchiveDir == null || ".".equals(inArchiveDir)) {
                 inArchiveDir = "";
             } else if (!inArchiveDir.isEmpty()) {
@@ -805,5 +805,5 @@
         }
         Cursor c = Toolkit.getDefaultToolkit().createCustomCursor(img.getImage(),
-                name.equals("crosshair") ? new Point(10, 10) : new Point(3, 2), "Cursor");
+                "crosshair".equals(name) ? new Point(10, 10) : new Point(3, 2), "Cursor");
         return c;
     }
Index: /trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/tools/LanguageInfo.java	(revision 7012)
@@ -87,7 +87,7 @@
         if (locale == null) return "en";
         String full = locale.toString();
-        if (full.equals("iw_IL"))
+        if ("iw_IL".equals(full))
             return "he";
-        else if (full.equals("in"))
+        else if ("in".equals(full))
             return "id";
         else if (I18n.hasCode(full)) // catch all non-single codes
@@ -107,8 +107,8 @@
      */
     public static Locale getLocale(String localeName) {
-        if (localeName.equals("he")) {
+        if ("he".equals(localeName)) {
             localeName = "iw_IL";
         }
-        else if (localeName.equals("id")) {
+        else if ("id".equals(localeName)) {
             localeName = "in";
         }
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 7012)
@@ -53,12 +53,17 @@
     public Object invoke (Object proxy, Method method, Object[] args) throws Throwable {
         Boolean handled = Boolean.TRUE;
-        if (method.getName().equals("handleQuit")) {
+        switch (method.getName()) {
+        case "handleQuit":
             handled = Main.exitJosm(false, 0);
-        } else if (method.getName().equals("handleAbout")) {
+            break;
+        case "handleAbout":
             Main.main.menu.about.actionPerformed(null);
-        } else if (method.getName().equals("handlePreferences")) {
+            break;
+        case "handlePreferences":
             Main.main.menu.preferences.actionPerformed(null);
-        } else
+            break;
+        default:
             return null;
+        }
         if (args[0] != null) {
             try {
Index: /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 7012)
@@ -165,7 +165,7 @@
     public String getJavaPackageDetails() {
         if (isDebianOrUbuntu()) {
-            String javaHome = System.getProperty("java.home");
-            if ("/usr/lib/jvm/java-7-openjdk-amd64/jre".equals(javaHome) ||
-                    "/usr/lib/jvm/java-7-openjdk-i386/jre".equals(javaHome)) {
+            switch(System.getProperty("java.home")) {
+            case "/usr/lib/jvm/java-7-openjdk-amd64/jre":
+            case "/usr/lib/jvm/java-7-openjdk-i386/jre":
                 return getPackageDetails("openjdk-7-jre");
             }
Index: /trunk/src/org/openstreetmap/josm/tools/Shortcut.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 7012)
@@ -95,5 +95,5 @@
 
     public boolean isChangeable() {
-        return !automatic && !shortText.equals("core:none");
+        return !automatic && !"core:none".equals(shortText);
     }
 
@@ -255,5 +255,5 @@
         for(Shortcut c : shortcuts.values())
         {
-            if(!c.shortText.equals("core:none")) {
+            if(!"core:none".equals(c.shortText)) {
                 l.add(c);
             }
Index: /trunk/src/org/openstreetmap/josm/tools/WindowGeometry.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/WindowGeometry.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/tools/WindowGeometry.java	(revision 7012)
@@ -189,8 +189,8 @@
                     x = Integer.valueOf(m.group(5));
                     y = Integer.valueOf(m.group(7));
-                    if (m.group(4).equals("-")) {
+                    if ("-".equals(m.group(4))) {
                         x = screenDimension.x + screenDimension.width - x - w;
                     }
-                    if (m.group(6).equals("-")) {
+                    if ("-".equals(m.group(6))) {
                         y = screenDimension.y + screenDimension.height - y - h;
                     }
Index: /trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 7011)
+++ /trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java	(revision 7012)
@@ -133,5 +133,5 @@
         private void setValue(Entry entry, String fieldName, String value) throws SAXException {
             CheckParameterUtil.ensureParameterNotNull(entry, "entry");
-            if (fieldName.equals("class") || fieldName.equals("default") || fieldName.equals("throw") || fieldName.equals("new") || fieldName.equals("null")) {
+            if ("class".equals(fieldName) || "default".equals(fieldName) || "throw".equals(fieldName) || "new".equals(fieldName) || "null".equals(fieldName)) {
                 fieldName += "_";
             }
@@ -165,5 +165,5 @@
         private boolean parseBoolean(String s) {
             return s != null
-                    && !s.equals("0")
+                    && !"0".equals(s)
                     && !s.startsWith("off")
                     && !s.startsWith("false")
