Index: applications/editors/josm/plugins/seachart/src/render/ChartContext.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/render/ChartContext.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/render/ChartContext.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package render;
 
@@ -17,4 +9,7 @@
 import s57.S57map.Snode;
 
+/**
+ * @author Malcolm Herring
+ */
 public interface ChartContext {
     enum RuleSet { ALL, BASE, SEAMARK }
Index: applications/editors/josm/plugins/seachart/src/render/Renderer.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/render/Renderer.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/render/Renderer.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package render;
 
@@ -49,7 +41,14 @@
 import symbols.Symbols.Symbol;
 
-public class Renderer {
-
-    public static final double[] symbolScale = {256.0, 128.0, 64.0, 32.0, 16.0, 8.0, 4.0, 2.0, 1.0, 0.61, 0.372, 0.227, 0.138, 0.0843, 0.0514, 0.0313, 0.0191, 0.0117, 0.007 };
+/**
+ * @author Malcolm Herring
+ */
+public final class Renderer {
+    private Renderer() {
+        // Hide default constructor for utilities classes
+    }
+
+    public static final double[] symbolScale = {
+            256.0, 128.0, 64.0, 32.0, 16.0, 8.0, 4.0, 2.0, 1.0, 0.61, 0.372, 0.227, 0.138, 0.0843, 0.0514, 0.0313, 0.0191, 0.0117, 0.007};
 
     public enum LabelStyle { NONE, RRCT, RECT, ELPS, CIRC, VCLR, PCLR, HCLR }
@@ -260,5 +259,6 @@
                                 if (!gap) {
                                     Symbols.drawSymbol(g2, symbol, sScale, curr.getX(), curr.getY(), new Scheme(col),
-                                            new Delta(Handle.BC, AffineTransform.getRotateInstance(Math.atan2((succ.getY() - curr.getY()), (succ.getX() - curr.getX())) + Math.toRadians(90))));
+                                            new Delta(Handle.BC, AffineTransform.getRotateInstance(
+                                                    Math.atan2((succ.getY() - curr.getY()), (succ.getX() - curr.getX())) + Math.toRadians(90))));
                                 }
                                 if (space > 0)
@@ -462,5 +462,6 @@
             double po = sw / 2;
             label.add(new Instr(Form.STRK, new BasicStroke(sw, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-            Path2D.Double p = new Path2D.Double(); p.moveTo(-height*0.2, -ly-po); p.lineTo(height*0.2, -ly-po); p.moveTo(0, -ly-po); p.lineTo(0, -ly-po-(height*0.15));
+            Path2D.Double p = new Path2D.Double(); p.moveTo(-height*0.2, -ly-po);
+            p.lineTo(height*0.2, -ly-po); p.moveTo(0, -ly-po); p.lineTo(0, -ly-po-(height*0.15));
             p.moveTo(-height*0.2, ly+po); p.lineTo((height*0.2), ly+po); p.moveTo(0, ly+po); p.lineTo(0, ly+po+(height*0.15));
             label.add(new Instr(Form.PLIN, p));
@@ -481,9 +482,18 @@
             po = sw / 2;
             label.add(new Instr(Form.STRK, new BasicStroke(sw, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-            p = new Path2D.Double(); p.moveTo(-height*0.2, -ly-po); p.lineTo(height*0.2, -ly-po); p.moveTo(0, -ly-po); p.lineTo(0, -ly-po-(height*0.15));
-            p.moveTo(-height*0.2, ly+po); p.lineTo((height*0.2), ly+po); p.moveTo(0, ly+po); p.lineTo(0, ly+po+(height*0.15));
+            p = new Path2D.Double();
+            p.moveTo(-height*0.2, -ly-po);
+            p.lineTo(height*0.2, -ly-po);
+            p.moveTo(0, -ly-po);
+            p.lineTo(0, -ly-po-(height*0.15));
+            p.moveTo(-height*0.2, ly+po);
+            p.lineTo((height*0.2), ly+po);
+            p.moveTo(0, ly+po);
+            p.lineTo(0, ly+po+(height*0.15));
             label.add(new Instr(Form.PLIN, p));
-            label.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Areas.CableFlash, 1, 0, 0, null, new Delta(Handle.CC, new AffineTransform(0, -1, 1, 0, -width/2, 0)))));
-            label.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Areas.CableFlash, 1, 0, 0, null, new Delta(Handle.CC, new AffineTransform(0, -1, 1, 0, width/2, 0)))));
+            label.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Areas.CableFlash, 1, 0, 0, null,
+                    new Delta(Handle.CC, new AffineTransform(0, -1, 1, 0, -width/2, 0)))));
+            label.add(new Instr(Form.SYMB, new Symbols.SubSymbol(Areas.CableFlash, 1, 0, 0, null,
+                    new Delta(Handle.CC, new AffineTransform(0, -1, 1, 0, width/2, 0)))));
             break;
         case HCLR:
@@ -502,6 +512,13 @@
             double vo = height / 4;
             label.add(new Instr(Form.STRK, new BasicStroke(sw, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)));
-            p = new Path2D.Double(); p.moveTo(-width*0.4-sw, -ly-vo); p.lineTo(-width*0.4-sw, ly+vo); p.moveTo(-width*0.4-sw, 0); p.lineTo(-width*0.4+sw, 0);
-            p.moveTo(width*0.4+sw, -ly-vo); p.lineTo(width*0.4+sw, ly+vo); p.moveTo(width*0.4-sw, 0); p.lineTo(width*0.4+sw, 0);
+            p = new Path2D.Double();
+            p.moveTo(-width*0.4-sw, -ly-vo);
+            p.lineTo(-width*0.4-sw, ly+vo);
+            p.moveTo(-width*0.4-sw, 0);
+            p.lineTo(-width*0.4+sw, 0);
+            p.moveTo(width*0.4+sw, -ly-vo);
+            p.lineTo(width*0.4+sw, ly+vo);
+            p.moveTo(width*0.4-sw, 0);
+            p.lineTo(width*0.4+sw, 0);
             label.add(new Instr(Form.PLIN, p));
             break;
@@ -589,14 +606,18 @@
         }
         double mid = (((s1 + s2) / 2) + (s1 > s2 ? 180 : 0)) % 360;
-        g2.setStroke(new BasicStroke((float) (3.0 * sScale), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1, new float[] {20 * (float) sScale, 20 * (float) sScale}, 0));
+        g2.setStroke(new BasicStroke((float) (3.0 * sScale), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 1,
+                new float[] {20 * (float) sScale, 20 * (float) sScale}, 0));
         g2.setPaint(Color.black);
         Point2D.Double centre = (Point2D.Double) context.getPoint(Rules.feature.geom.centre);
         double radial = radius * context.mile(Rules.feature);
         if (dir != null) {
-            g2.draw(new Line2D.Double(centre.x, centre.y, centre.x - radial * Math.sin(Math.toRadians(dir)), centre.y + radial * Math.cos(Math.toRadians(dir))));
+            g2.draw(new Line2D.Double(centre.x, centre.y, centre.x - radial * Math.sin(Math.toRadians(dir)),
+                    centre.y + radial * Math.cos(Math.toRadians(dir))));
         } else {
             if ((s1 != 0.0) || (s2 != 360.0)) {
-                g2.draw(new Line2D.Double(centre.x, centre.y, centre.x - radial * Math.sin(Math.toRadians(s1)), centre.y + radial * Math.cos(Math.toRadians(s1))));
-                g2.draw(new Line2D.Double(centre.x, centre.y, centre.x - radial * Math.sin(Math.toRadians(s2)), centre.y + radial * Math.cos(Math.toRadians(s2))));
+                g2.draw(new Line2D.Double(centre.x, centre.y, centre.x - radial * Math.sin(Math.toRadians(s1)),
+                        centre.y + radial * Math.cos(Math.toRadians(s1))));
+                g2.draw(new Line2D.Double(centre.x, centre.y, centre.x - radial * Math.sin(Math.toRadians(s2)),
+                        centre.y + radial * Math.cos(Math.toRadians(s2))));
             }
         }
@@ -604,8 +625,10 @@
         g2.setStroke(new BasicStroke((float) arcWidth, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1));
         g2.setPaint(col1);
-        g2.draw(new Arc2D.Double(centre.x - radial, centre.y - radial, 2 * radial, 2 * radial, -(s1 + 90), ((s1 < s2) ? (s1 - s2) : (s1 - s2 - 360)), Arc2D.OPEN));
+        g2.draw(new Arc2D.Double(centre.x - radial, centre.y - radial, 2 * radial, 2 * radial, -(s1 + 90),
+                ((s1 < s2) ? (s1 - s2) : (s1 - s2 - 360)), Arc2D.OPEN));
         if (col2 != null) {
             g2.setPaint(col2);
-            g2.draw(new Arc2D.Double(centre.x - radial + arcWidth, centre.y - radial + arcWidth, 2 * (radial - arcWidth), 2 * (radial - arcWidth), -(s1 + 90), ((s1 < s2) ? (s1 - s2) : (s1 - s2 - 360)), Arc2D.OPEN));
+            g2.draw(new Arc2D.Double(centre.x - radial + arcWidth, centre.y - radial + arcWidth, 2 * (radial - arcWidth),
+                    2 * (radial - arcWidth), -(s1 + 90), ((s1 < s2) ? (s1 - s2) : (s1 - s2 - 360)), Arc2D.OPEN));
         }
         if ((str != null) && (!str.isEmpty())) {
Index: applications/editors/josm/plugins/seachart/src/render/Rules.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/render/Rules.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/render/Rules.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package render;
 
@@ -81,4 +73,7 @@
 import symbols.Topmarks;
 
+/**
+ * @author Malcolm Herring
+ */
 public class Rules {
 
@@ -257,4 +252,5 @@
 
     public static void rules() {
+        // CHECKSTYLE.OFF: NeedBraces
         if ((Renderer.context.ruleset() == RuleSet.ALL) || (Renderer.context.ruleset() == RuleSet.BASE)) {
             if (testObject(Obj.LNDARE)) for (Feature f : objects) if (testFeature(f)) areas();
@@ -351,4 +347,5 @@
             if (testObject(Obj.BCNSPP)) for (Feature f : objects) if (testFeature(f)) beacons();
         }
+        // CHECKSTYLE.ON: NeedBraces
     }
 
@@ -417,5 +414,6 @@
                     Renderer.symbol(Areas.MarineFarm);
                 }
-                if ((feature.geom.area > 0.2) || ((feature.geom.area > 0.05) && (Renderer.zoom >= 14)) || ((feature.geom.area > 0.005) && (Renderer.zoom >= 16))) {
+                if ((feature.geom.area > 0.2) || ((feature.geom.area > 0.05) && (Renderer.zoom >= 14)) ||
+                   ((feature.geom.area > 0.005) && (Renderer.zoom >= 16))) {
                     Renderer.lineVector(new LineStyle(Color.black, 4, new float[] {10, 10}));
                 }
@@ -450,5 +448,6 @@
                         Renderer.lineText(name, new Font("Arial", Font.PLAIN, 150), Color.black, -40);
                     } else {
-                        Renderer.labelText(name, new Font("Arial", Font.PLAIN, 150), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -40)));
+                        Renderer.labelText(name, new Font("Arial", Font.PLAIN, 150), Color.black,
+                                new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -40)));
                     }
                 break;
@@ -458,5 +457,6 @@
                         Renderer.lineText(name, new Font("Arial", Font.PLAIN, 150), Color.black, -40);
                     } else {
-                        Renderer.labelText(name, new Font("Arial", Font.PLAIN, 150), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -40)));
+                        Renderer.labelText(name, new Font("Arial", Font.PLAIN, 150), Color.black,
+                                new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -40)));
                     }
                 break;
@@ -466,5 +466,6 @@
                         Renderer.lineVector(new LineStyle(new Color(0xc480ff), 4, new float[] {25, 25}));
                         if (name != null) {
-                            Renderer.labelText(name, new Font("Arial", Font.ITALIC, 75), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -40)));
+                            Renderer.labelText(name, new Font("Arial", Font.ITALIC, 75), Color.black,
+                                    new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -40)));
                             Renderer.labelText("(Shoal)", new Font("Arial", Font.PLAIN, 60), Color.black, new Delta(Handle.BC));
                         }
@@ -476,5 +477,6 @@
                     } else {
                         if (name != null) {
-                            Renderer.labelText(name, new Font("Arial", Font.ITALIC, 75), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -40)));
+                            Renderer.labelText(name, new Font("Arial", Font.ITALIC, 75), Color.black,
+                                    new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -40)));
                             Renderer.labelText("(Shoal)", new Font("Arial", Font.PLAIN, 60), Color.black, new Delta(Handle.BC));
                         }
@@ -554,10 +556,12 @@
                     AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
                     if (topmap.containsKey(Att.TOPSHP)) {
-                        Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.TOPMAR), Topmarks.BeaconDelta);
+                        Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)),
+                                getScheme(Obj.TOPMAR), Topmarks.BeaconDelta);
                     }
                 } else if (feature.objs.containsKey(Obj.DAYMAR)) {
                     AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
                     if (topmap.containsKey(Att.TOPSHP)) {
-                        Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.DAYMAR), Topmarks.BeaconDelta);
+                        Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)),
+                                getScheme(Obj.DAYMAR), Topmarks.BeaconDelta);
                     }
                 }
@@ -580,10 +584,12 @@
                 AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
                 if (topmap.containsKey(Att.TOPSHP)) {
-                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.TOPMAR), Topmarks.BuoyDeltas.get(shape));
+                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)),
+                            getScheme(Obj.TOPMAR), Topmarks.BuoyDeltas.get(shape));
                 }
             } else if (feature.objs.containsKey(Obj.DAYMAR)) {
                 AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
                 if (topmap.containsKey(Att.TOPSHP)) {
-                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.DAYMAR), Topmarks.BuoyDeltas.get(shape));
+                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)),
+                            getScheme(Obj.DAYMAR), Topmarks.BuoyDeltas.get(shape));
                 }
             }
@@ -621,10 +627,14 @@
                 }
                 if (hstr.isEmpty() && !vstr.isEmpty()) {
-                    Renderer.labelText(vstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.VCLR, Color.black, Color.white, new Delta(Handle.CC));
+                    Renderer.labelText(vstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.VCLR, Color.black, Color.white,
+                            new Delta(Handle.CC));
                 } else if (!hstr.isEmpty() && !vstr.isEmpty()) {
-                    Renderer.labelText(vstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.VCLR, Color.black, Color.white, new Delta(Handle.BC));
-                    Renderer.labelText(hstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.HCLR, Color.black, Color.white, new Delta(Handle.TC));
+                    Renderer.labelText(vstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.VCLR, Color.black, Color.white,
+                            new Delta(Handle.BC));
+                    Renderer.labelText(hstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.HCLR, Color.black, Color.white,
+                            new Delta(Handle.TC));
                 } else if (!hstr.isEmpty() && vstr.isEmpty()) {
-                    Renderer.labelText(hstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.HCLR, Color.black, Color.white, new Delta(Handle.CC));
+                    Renderer.labelText(hstr, new Font("Arial", Font.PLAIN, 30), Color.black, LabelStyle.HCLR, Color.black, Color.white,
+                            new Delta(Handle.CC));
                 }
             }
@@ -645,7 +655,9 @@
                 if (atts != null) {
                     if (atts.containsKey(Att.VERCLR)) {
-                        Renderer.labelText(String.valueOf(atts.get(Att.VERCLR).val), new Font("Arial", Font.PLAIN, 50), Color.black, LabelStyle.VCLR, Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 25)));
+                        Renderer.labelText(String.valueOf(atts.get(Att.VERCLR).val), new Font("Arial", Font.PLAIN, 50),
+                                Color.black, LabelStyle.VCLR, Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 25)));
                     } else if (atts.containsKey(Att.VERCSA)) {
-                        Renderer.labelText(String.valueOf(atts.get(Att.VERCSA).val), new Font("Arial", Font.PLAIN, 50), Color.black, LabelStyle.PCLR, Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 25)));
+                        Renderer.labelText(String.valueOf(atts.get(Att.VERCSA).val), new Font("Arial", Font.PLAIN, 50),
+                                Color.black, LabelStyle.PCLR, Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 25)));
                     }
                 }
@@ -668,5 +680,6 @@
             String chn;
             if (!(chn = getAttStr(feature.type, Att.COMCHA)).isEmpty()) {
-                Renderer.labelText(("Ch." + chn), new Font("Arial", Font.PLAIN, 50), Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 50)));
+                Renderer.labelText(("Ch." + chn), new Font("Arial", Font.PLAIN, 50), Color.black,
+                        new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 50)));
             }
         }
@@ -692,7 +705,10 @@
                     dd = (tok.length == 2) ? tok[1] : "";
                 }
-                Renderer.labelText(ul, new Font("Arial", Font.PLAIN, 30), Color.black, new Delta(Handle.RC, AffineTransform.getTranslateInstance(10, 15)));
-                Renderer.labelText(id, new Font("Arial", Font.PLAIN, 30), Color.black, new Delta(Handle.RC, AffineTransform.getTranslateInstance(10, 0)));
-                Renderer.labelText(dd, new Font("Arial", Font.PLAIN, 20), Color.black, new Delta(Handle.LC, AffineTransform.getTranslateInstance(15, 10)));
+                Renderer.labelText(ul, new Font("Arial", Font.PLAIN, 30), Color.black,
+                        new Delta(Handle.RC, AffineTransform.getTranslateInstance(10, 15)));
+                Renderer.labelText(id, new Font("Arial", Font.PLAIN, 30), Color.black,
+                        new Delta(Handle.RC, AffineTransform.getTranslateInstance(10, 0)));
+                Renderer.labelText(dd, new Font("Arial", Font.PLAIN, 20), Color.black,
+                        new Delta(Handle.LC, AffineTransform.getTranslateInstance(15, 10)));
             }
             break;
@@ -741,5 +757,6 @@
                     }
                     str += String.format("%1.0f", dist);
-                    Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.CC, AffineTransform.getTranslateInstance(0, 45)));
+                    Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black,
+                            new Delta(Handle.CC, AffineTransform.getTranslateInstance(0, 45)));
                 }
             }
@@ -749,5 +766,6 @@
     @SuppressWarnings("unchecked")
     private static void floats() {
-        if ((Renderer.zoom >= 12) || ((Renderer.zoom >= 11) && ((feature.type == Obj.LITVES) || (feature.type == Obj.BOYINB) || hasObject(Obj.RTPBCN)))) {
+        if ((Renderer.zoom >= 12) || ((Renderer.zoom >= 11) && ((feature.type == Obj.LITVES) ||
+                (feature.type == Obj.BOYINB) || hasObject(Obj.RTPBCN)))) {
             switch (feature.type) {
             case LITVES:
@@ -766,10 +784,12 @@
                 AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
                 if (topmap.containsKey(Att.TOPSHP)) {
-                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.TOPMAR), Topmarks.FloatDelta);
+                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)),
+                            getScheme(Obj.TOPMAR), Topmarks.FloatDelta);
                 }
             } else if (feature.objs.containsKey(Obj.DAYMAR)) {
                 AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
                 if (topmap.containsKey(Att.TOPSHP)) {
-                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.DAYMAR), Topmarks.FloatDelta);
+                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)),
+                            getScheme(Obj.DAYMAR), Topmarks.FloatDelta);
                 }
             }
@@ -795,5 +815,6 @@
                 Renderer.symbol(Harbours.Anchor, new Scheme(Symbols.Msymb));
                 if (Renderer.zoom >= 15) {
-                    Renderer.labelText(name == null ? "" : name, new Font("Arial", Font.PLAIN, 30), Symbols.Msymb, LabelStyle.RRCT, Symbols.Msymb, Color.white, new Delta(Handle.BC));
+                    Renderer.labelText(name == null ? "" : name,
+                            new Font("Arial", Font.PLAIN, 30), Symbols.Msymb, LabelStyle.RRCT, Symbols.Msymb, Color.white, new Delta(Handle.BC));
                 }
             }
@@ -820,5 +841,6 @@
                 ArrayList<StsSTS> sts = (ArrayList<StsSTS>) getAttList(Obj.ACHARE, Att.STATUS);
                 if ((Renderer.zoom >= 15) && (sts.contains(StsSTS.STS_RESV))) {
-                    Renderer.labelText("Reserved", new Font("Arial", Font.PLAIN, 50), Symbols.Mline, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 60)));
+                    Renderer.labelText("Reserved",
+                            new Font("Arial", Font.PLAIN, 50), Symbols.Mline, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 60)));
                 }
                 ArrayList<CatACH> cats = (ArrayList<CatACH>) getAttList(Obj.ACHARE, Att.CATACH);
@@ -827,25 +849,31 @@
                     switch (cat) {
                     case ACH_DEEP:
-                        Renderer.labelText("DW", new Font("Arial", Font.BOLD, 50), Symbols.Msymb, new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+                        Renderer.labelText("DW", new Font("Arial", Font.BOLD, 50), Symbols.Msymb,
+                                new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
                         dy += 60;
                         break;
                     case ACH_TANK:
-                        Renderer.labelText("Tanker", new Font("Arial", Font.BOLD, 50), Symbols.Msymb, new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+                        Renderer.labelText("Tanker", new Font("Arial", Font.BOLD, 50), Symbols.Msymb,
+                                new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
                         dy += 60;
                         break;
                     case ACH_H24P:
-                        Renderer.labelText("24h", new Font("Arial", Font.BOLD, 50), Symbols.Msymb, new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+                        Renderer.labelText("24h", new Font("Arial", Font.BOLD, 50), Symbols.Msymb,
+                                new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
                         dy += 60;
                         break;
                     case ACH_EXPL:
-                        Renderer.symbol(Harbours.Explosives, new Scheme(Symbols.Msymb), new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+                        Renderer.symbol(Harbours.Explosives, new Scheme(Symbols.Msymb),
+                                new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
                         dy += 60;
                         break;
                     case ACH_QUAR:
-                        Renderer.symbol(Harbours.Hospital, new Scheme(Symbols.Msymb), new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+                        Renderer.symbol(Harbours.Hospital, new Scheme(Symbols.Msymb),
+                                new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
                         dy += 60;
                         break;
                     case ACH_SEAP:
-                        Renderer.symbol(Areas.Seaplane, new Scheme(Symbols.Msymb), new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
+                        Renderer.symbol(Areas.Seaplane, new Scheme(Symbols.Msymb),
+                                new Delta(Handle.RC, AffineTransform.getTranslateInstance(-60, dy)));
                         dy += 60;
                         break;
@@ -858,5 +886,6 @@
             if (Renderer.zoom >= 14) {
                 Renderer.lineVector(new LineStyle(Symbols.Mline, 6, new float[] {20, 20}));
-                Renderer.labelText(name == null ? " " : name, new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, LabelStyle.RRCT, Symbols.Mline, Color.white);
+                Renderer.labelText(name == null ? " " : name,
+                        new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, LabelStyle.RRCT, Symbols.Mline, Color.white);
             }
             break;
@@ -1034,10 +1063,12 @@
                 AttMap topmap = feature.objs.get(Obj.TOPMAR).get(0);
                 if (topmap.containsKey(Att.TOPSHP)) {
-                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.TOPMAR), Topmarks.LightDelta);
+                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)),
+                            getScheme(Obj.TOPMAR), Topmarks.LightDelta);
                 }
             } else if (feature.objs.containsKey(Obj.DAYMAR)) {
                 AttMap topmap = feature.objs.get(Obj.DAYMAR).get(0);
                 if (topmap.containsKey(Att.TOPSHP)) {
-                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)), getScheme(Obj.DAYMAR), Topmarks.LightDelta);
+                    Renderer.symbol(Topmarks.Shapes.get(((ArrayList<TopSHP>) (topmap.get(Att.TOPSHP).val)).get(0)),
+                            getScheme(Obj.DAYMAR), Topmarks.LightDelta);
                 }
             }
@@ -1215,5 +1246,6 @@
                     }
                     if (verclr > 0) {
-                        Renderer.labelText(String.valueOf(verclr), new Font("Arial", Font.PLAIN, 50), Color.black, LabelStyle.VCLR, Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 25)));
+                        Renderer.labelText(String.valueOf(verclr), new Font("Arial", Font.PLAIN, 50), Color.black, LabelStyle.VCLR,
+                                Color.black, new Delta(Handle.TC, AffineTransform.getTranslateInstance(0, 25)));
                     }
                 }
@@ -1400,12 +1432,15 @@
                 Renderer.symbol(Harbours.SignalStation);
                 Renderer.symbol(Beacons.RadarStation);
-                Renderer.labelText("Ra", new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.TR, AffineTransform.getTranslateInstance(-30, -70)));
+                Renderer.labelText("Ra", new Font("Arial", Font.PLAIN, 40), Symbols.Msymb,
+                        new Delta(Handle.TR, AffineTransform.getTranslateInstance(-30, -70)));
                 break;
             case PILBOP:
                 Renderer.symbol(Harbours.Pilot);
-                addName(15, new Font("Arial", Font.BOLD, 40), Symbols.Msymb, new Delta(Handle.LC, AffineTransform.getTranslateInstance(70, -40)));
+                addName(15, new Font("Arial", Font.BOLD, 40), Symbols.Msymb,
+                        new Delta(Handle.LC, AffineTransform.getTranslateInstance(70, -40)));
                 CatPIL cat = (CatPIL) getAttEnum(feature.type, Att.CATPIL);
                 if (cat == CatPIL.PIL_HELI) {
-                    Renderer.labelText("H", new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.LC, AffineTransform.getTranslateInstance(70, 0)));
+                    Renderer.labelText("H", new Font("Arial", Font.PLAIN, 40), Symbols.Msymb,
+                            new Delta(Handle.LC, AffineTransform.getTranslateInstance(70, 0)));
                 }
                 break;
@@ -1413,5 +1448,6 @@
                 Renderer.symbol(Harbours.SignalStation);
                 str = "CG";
-                if (feature.objs.containsKey(Obj.RSCSTA)) Renderer.symbol(Harbours.Rescue, new Delta(Handle.CC, AffineTransform.getTranslateInstance(130, 0)));
+                if (feature.objs.containsKey(Obj.RSCSTA)) Renderer.symbol(Harbours.Rescue,
+                        new Delta(Handle.CC, AffineTransform.getTranslateInstance(130, 0)));
                 break;
             case RSCSTA:
@@ -1422,5 +1458,6 @@
             }
             if ((Renderer.zoom >= 15) && !str.isEmpty()) {
-                Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.LC, AffineTransform.getTranslateInstance(40, 0)));
+                Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black,
+                        new Delta(Handle.LC, AffineTransform.getTranslateInstance(40, 0)));
             }
             Signals.addSignals();
Index: applications/editors/josm/plugins/seachart/src/render/Signals.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/render/Signals.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/render/Signals.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package render;
 
@@ -35,4 +27,7 @@
 import symbols.Topmarks;
 
+/**
+ * @author Malcolm Herring
+ */
 public class Signals extends Rules {
 
@@ -194,5 +189,6 @@
                 }
                 if (!str.isEmpty()) {
-                    Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.TR, AffineTransform.getTranslateInstance(-60, -30)));
+                    Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black,
+                            new Delta(Handle.TR, AffineTransform.getTranslateInstance(-60, -30)));
                 }
             }
@@ -241,5 +237,6 @@
             }
             if (!bstr.isEmpty()) {
-                Renderer.labelText(bstr, new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.TR, AffineTransform.getTranslateInstance(-30, -70)));
+                Renderer.labelText(bstr, new Font("Arial", Font.PLAIN, 40), Symbols.Msymb,
+                        new Delta(Handle.TR, AffineTransform.getTranslateInstance(-30, -70)));
             }
         }
@@ -358,8 +355,10 @@
         if (Renderer.zoom >= 15) {
             if (vais) {
-                Renderer.labelText("V-AIS", new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 70)));
+                Renderer.labelText("V-AIS", new Font("Arial", Font.PLAIN, 40), Symbols.Msymb,
+                        new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, 70)));
             }
             if (!bstr.isEmpty()) {
-                Renderer.labelText(bstr, new Font("Arial", Font.PLAIN, 40), Symbols.Msymb, new Delta(Handle.TR, AffineTransform.getTranslateInstance(-30, -110)));
+                Renderer.labelText(bstr, new Font("Arial", Font.PLAIN, 40), Symbols.Msymb,
+                        new Delta(Handle.TR, AffineTransform.getTranslateInstance(-30, -110)));
             }
         }
@@ -398,5 +397,6 @@
             }
         }
-        Renderer.symbol(Beacons.LightFlare, new Scheme(LightColours.get(col)), new Delta(Handle.BC, AffineTransform.getRotateInstance(Math.toRadians(120))));
+        Renderer.symbol(Beacons.LightFlare, new Scheme(LightColours.get(col)),
+                new Delta(Handle.BC, AffineTransform.getRotateInstance(Math.toRadians(120))));
         if (Renderer.zoom >= 12) {
             String str = "";
@@ -438,5 +438,6 @@
                                     }
                                     if (srad == radius) {
-                                        ArrayList<CatLIT> scats = (satts.containsKey(Att.CATLIT)) ? (ArrayList<CatLIT>) satts.get(Att.CATLIT).val : new ArrayList<CatLIT>();
+                                        ArrayList<CatLIT> scats = (satts.containsKey(Att.CATLIT)) ?
+                                                (ArrayList<CatLIT>) satts.get(Att.CATLIT).val : new ArrayList<>();
                                         if (scats.contains(CatLIT.LIT_DIR)) {
                                             if (satts.containsKey(Att.ORIENT)) {
@@ -504,5 +505,6 @@
                     }
                     if ((s1 <= 360) && (s2 <= 360) && (s1 != s2))
-                        Renderer.lightSector(LightColours.get(col1), LightColours.get(col2), radius, s1, s2, dir, (Renderer.zoom >= 15) ? str : "");
+                        Renderer.lightSector(LightColours.get(col1), LightColours.get(col2), radius, s1, s2, dir,
+                                (Renderer.zoom >= 15) ? str : "");
                 }
                 if (Renderer.zoom >= 15) {
@@ -545,5 +547,6 @@
                         sect.rng = atts.containsKey(Att.VALNMR) ? (Double) atts.get(Att.VALNMR).val : 0.0;
                         sect.hgt = atts.containsKey(Att.HEIGHT) ? (Double) atts.get(Att.HEIGHT).val : 0.0;
-                        ArrayList<ColCOL> cols = (ArrayList<ColCOL>) (atts.containsKey(Att.COLOUR) ? atts.get(Att.COLOUR).val : new ArrayList<>());
+                        ArrayList<ColCOL> cols = (ArrayList<ColCOL>)
+                                (atts.containsKey(Att.COLOUR) ? atts.get(Att.COLOUR).val : new ArrayList<>());
                         sect.col = cols.size() > 0 ? cols.get(0) : ColCOL.COL_UNK;
                         if ((sect.chr != LitCHR.CHR_UNKN) && (sect.col != null))
@@ -555,5 +558,6 @@
                         for (ArrayList<LitSect> group : groupings) {
                             LitSect mem = group.get(0);
-                            if ((lit.dir == mem.dir) && (lit.chr == mem.chr) && (lit.grp.equals(mem.grp)) && (lit.per == mem.per) && (lit.hgt == mem.hgt)) {
+                            if ((lit.dir == mem.dir) && (lit.chr == mem.chr) && (lit.grp.equals(mem.grp)) &&
+                                (lit.per == mem.per) && (lit.hgt == mem.hgt)) {
                                 group.add(lit);
                                 found = true;
@@ -630,6 +634,8 @@
                             str += df.format(tmp.hgt) + "m";
                         if (colrng.get(0).rng > 0)
-                            str += df.format(colrng.get(0).rng) + ((colrng.size() > 1) ? ((colrng.size() > 2) ? ("-" + df.format(colrng.get(colrng.size() - 1).rng)) : ("/" + df.format(colrng.get(1).rng))) : "") + "M";
-                        Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.TL, AffineTransform.getTranslateInstance(60, y)));
+                            str += df.format(colrng.get(0).rng) + ((colrng.size() > 1) ? ((colrng.size() > 2) ?
+                                    ("-" + df.format(colrng.get(colrng.size() - 1).rng)) : ("/" + df.format(colrng.get(1).rng))) : "") + "M";
+                        Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black,
+                                new Delta(Handle.TL, AffineTransform.getTranslateInstance(60, y)));
                         y += 40;
                         str = "";
@@ -680,5 +686,6 @@
                     str += (cats.contains(CatLIT.LIT_VERT)) ? "(vert)" : "";
                     str += (cats.contains(CatLIT.LIT_HORI)) ? "(hor)" : "";
-                    str += (!str.isEmpty() && (atts.containsKey(Att.SIGPER) || atts.containsKey(Att.HEIGHT) || atts.containsKey(Att.VALMXR)) && !str.endsWith(")")) ? "." : "";
+                    str += (!str.isEmpty() && (atts.containsKey(Att.SIGPER) || atts.containsKey(Att.HEIGHT) || atts.containsKey(Att.VALMXR))
+                            && !str.endsWith(")")) ? "." : "";
                     str += (atts.containsKey(Att.SIGPER)) ? df.format(atts.get(Att.SIGPER).val) + "s" : "";
                     str += (atts.containsKey(Att.HEIGHT)) ? df.format(atts.get(Att.HEIGHT).val) + "m" : "";
@@ -688,5 +695,6 @@
                     str += (cats.contains(CatLIT.LIT_UPPR)) ? "(Upper)" : "";
                     str += (cats.contains(CatLIT.LIT_LOWR)) ? "(Lower)" : "";
-                    Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black, new Delta(Handle.TL, AffineTransform.getTranslateInstance(60, -30)));
+                    Renderer.labelText(str, new Font("Arial", Font.PLAIN, 40), Color.black,
+                            new Delta(Handle.TL, AffineTransform.getTranslateInstance(60, -30)));
                 }
             }
Index: applications/editors/josm/plugins/seachart/src/s57/S57att.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/s57/S57att.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/s57/S57att.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package s57;
 
@@ -15,5 +7,11 @@
 import s57.S57obj.Obj;
 
-public class S57att { // S57 Attribute lookup tables & methods
+/**
+ * @author Malcolm Herring
+ */
+public final class S57att { // S57 Attribute lookup tables & methods
+    private S57att() {
+        // Hide default constructor for utilities classes
+    }
     // CHECKSTYLE.OFF: LineLength
 
Index: applications/editors/josm/plugins/seachart/src/s57/S57box.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/s57/S57box.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/s57/S57box.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package s57;
 
@@ -19,5 +11,11 @@
 import s57.S57obj.Obj;
 
-public class S57box { //S57 bounding box truncation
+/**
+ * @author Malcolm Herring
+ */
+public final class S57box { //S57 bounding box truncation
+    private S57box() {
+        // Hide default constructor for utilities classes
+    }
     // CHECKSTYLE.OFF: LineLength
 
Index: applications/editors/josm/plugins/seachart/src/s57/S57dat.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/s57/S57dat.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/s57/S57dat.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package s57;
 
@@ -19,5 +11,11 @@
 import s57.S57obj.Obj;
 
-public class S57dat { // S57 ENC file fields lookup tables & methods
+/**
+ * @author Malcolm Herring
+ */
+public final class S57dat { // S57 ENC file fields lookup tables & methods
+    private S57dat() {
+        // Hide default constructor for utilities classes
+    }
     // CHECKSTYLE.OFF: LineLength
 
Index: applications/editors/josm/plugins/seachart/src/s57/S57dec.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/s57/S57dec.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/s57/S57dec.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package s57;
 
@@ -17,5 +9,11 @@
 import s57.S57map.Nflag;
 
-public class S57dec { // S57 ENC file input & map conversion
+/**
+ * @author Malcolm Herring
+ */
+public final class S57dec { // S57 ENC file input & map conversion
+    private S57dec() {
+        // Hide default constructor for utilities classes
+    }
     // CHECKSTYLE.OFF: LineLength
 
Index: applications/editors/josm/plugins/seachart/src/s57/S57enc.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/s57/S57enc.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/s57/S57enc.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2015 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package s57;
 
@@ -33,5 +25,11 @@
 import s57.S57val.AttVal;
 
-public class S57enc { // S57 ENC file generation
+/**
+ * @author Malcolm Herring
+ */
+public final class S57enc { // S57 ENC file generation
+    private S57enc() {
+        // Hide default constructor for utilities classes
+    }
     // CHECKSTYLE.OFF: LineLength
 
Index: applications/editors/josm/plugins/seachart/src/s57/S57map.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/s57/S57map.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/s57/S57map.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package s57;
 
@@ -20,4 +12,7 @@
 import s57.S57val.AttVal;
 
+/**
+ * @author Malcolm Herring
+ */
 public class S57map { // S57/OSM map generation methods
     // CHECKSTYLE.OFF: LineLength
Index: applications/editors/josm/plugins/seachart/src/s57/S57obj.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/s57/S57obj.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/s57/S57obj.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package s57;
 
@@ -14,5 +6,11 @@
 import java.util.Map;
 
-public class S57obj { // S57 Object lookup tables & methods
+/**
+ * @author Malcolm Herring
+ */
+public final class S57obj { // S57 Object lookup tables & methods
+    private S57obj() {
+        // Hide default constructor for utilities classes
+    }
     // CHECKSTYLE.OFF: LineLength
 
Index: applications/editors/josm/plugins/seachart/src/s57/S57osm.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/s57/S57osm.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/s57/S57osm.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2015 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package s57;
 
@@ -20,5 +12,12 @@
 import s57.S57val.Conv;
 
-public class S57osm { // OSM to S57 Object/Attribute and Object/Primitive conversions
+/**
+ * @author Malcolm Herring
+ */
+public final class S57osm { // OSM to S57 Object/Attribute and Object/Primitive conversions
+    private S57osm() {
+        // Hide default constructor for utilities classes
+    }
+
     // CHECKSTYLE.OFF: LineLength
 
Index: applications/editors/josm/plugins/seachart/src/s57/S57val.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/s57/S57val.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/s57/S57val.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package s57;
 
@@ -15,5 +7,12 @@
 import s57.S57att.Att;
 
-public class S57val { // S57 Attribute values lookup tables & methods
+/**
+ * @author Malcolm Herring
+ */
+public final class S57val { // S57 Attribute values lookup tables & methods
+    private S57val() {
+        // Hide default constructor for utilities classes
+    }
+
     // CHECKSTYLE.OFF: LineLength
 
Index: applications/editors/josm/plugins/seachart/src/seachart/ChartImage.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/seachart/ChartImage.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/seachart/ChartImage.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package seachart;
 
@@ -38,4 +30,7 @@
 import symbols.Symbols;
 
+/**
+ * @author Malcolm Herring
+ */
 public class ChartImage extends ImageryLayer implements ZoomChangeListener, ChartContext {
 
Index: applications/editors/josm/plugins/seachart/src/seachart/Seachart.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/seachart/Seachart.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/seachart/Seachart.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package seachart;
 
@@ -15,4 +7,7 @@
 import org.openstreetmap.josm.plugins.PluginInformation;
 
+/**
+ * @author Malcolm Herring
+ */
 public class Seachart extends Plugin {
 
Index: applications/editors/josm/plugins/seachart/src/seachart/SeachartAction.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/seachart/SeachartAction.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/seachart/SeachartAction.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package seachart;
 
@@ -45,4 +37,7 @@
 import s57.S57map;
 
+/**
+ * @author Malcolm Herring
+ */
 public class SeachartAction extends JosmAction implements ActiveLayerChangeListener, LayerChangeListener {
     private static String title = "SeaChart";
@@ -117,4 +112,5 @@
     public void actionPerformed(ActionEvent arg0) {
         SwingUtilities.invokeLater(new Runnable() {
+            @Override
             public void run() {
                 if (!isOpen)
Index: applications/editors/josm/plugins/seachart/src/symbols/Areas.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Areas.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/symbols/Areas.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package symbols;
 
@@ -26,5 +18,12 @@
 import symbols.Symbols.Symbol;
 
-public class Areas {
+/**
+ * @author Malcolm Herring
+ */
+public final class Areas {
+    private Areas() {
+        // Hide default constructor for utilities classes
+    }
+
     // CHECKSTYLE.OFF: LineLength
     public static final Symbol Plane = new Symbol();
Index: applications/editors/josm/plugins/seachart/src/symbols/Beacons.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Beacons.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/symbols/Beacons.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package symbols;
 
@@ -25,5 +17,12 @@
 import symbols.Symbols.Symbol;
 
-public class Beacons {
+/**
+ * @author Malcolm Herring
+ */
+public final class Beacons {
+    private Beacons() {
+        // Hide default constructor for utilities classes
+    }
+
     // CHECKSTYLE.OFF: LineLength
     public static final Symbol Beacon = new Symbol();
Index: applications/editors/josm/plugins/seachart/src/symbols/Buoys.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Buoys.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/symbols/Buoys.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package symbols;
 
@@ -23,5 +15,12 @@
 import symbols.Symbols.Symbol;
 
-public class Buoys {
+/**
+ * @author Malcolm Herring
+ */
+public final class Buoys {
+    private Buoys() {
+        // Hide default constructor for utilities classes
+    }
+
     // CHECKSTYLE.OFF: LineLength
     public static final Symbol Barrel = new Symbol();
Index: applications/editors/josm/plugins/seachart/src/symbols/Facilities.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Facilities.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/symbols/Facilities.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package symbols;
 
@@ -26,5 +18,12 @@
 import symbols.Symbols.Symbol;
 
-public class Facilities {
+/**
+ * @author Malcolm Herring
+ */
+public final class Facilities {
+    private Facilities() {
+        // Hide default constructor for utilities classes
+    }
+
     // CHECKSTYLE.OFF: LineLength
     private static final Symbol Facility = new Symbol();
Index: applications/editors/josm/plugins/seachart/src/symbols/Harbours.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Harbours.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/symbols/Harbours.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package symbols;
 
@@ -24,5 +16,12 @@
 import symbols.Symbols.Symbol;
 
-public class Harbours {
+/**
+ * @author Malcolm Herring
+ */
+public final class Harbours {
+    private Harbours() {
+        // Hide default constructor for utilities classes
+    }
+
     // CHECKSTYLE.OFF: LineLength
     public static final Symbol Anchor = new Symbol();
Index: applications/editors/josm/plugins/seachart/src/symbols/Landmarks.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Landmarks.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/symbols/Landmarks.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package symbols;
 
@@ -24,5 +16,12 @@
 import symbols.Symbols.Symbol;
 
-public class Landmarks {
+/**
+ * @author Malcolm Herring
+ */
+public final class Landmarks {
+    private Landmarks() {
+        // Hide default constructor for utilities classes
+    }
+
     // CHECKSTYLE.OFF: LineLength
     private static final Symbol Base = new Symbol();
Index: applications/editors/josm/plugins/seachart/src/symbols/Notices.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Notices.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/symbols/Notices.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package symbols;
 
@@ -35,5 +27,12 @@
 import symbols.Symbols.Symbol;
 
-public class Notices {
+/**
+ * @author Malcolm Herring
+ */
+public final class Notices {
+    private Notices() {
+        // Hide default constructor for utilities classes
+    }
+
     // CHECKSTYLE.OFF: LineLength
     private static final Symbol Bollard = new Symbol();
Index: applications/editors/josm/plugins/seachart/src/symbols/Symbols.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Symbols.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/symbols/Symbols.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package symbols;
 
@@ -25,5 +17,12 @@
 import java.util.ArrayList;
 
-public class Symbols {
+/**
+ * @author Malcolm Herring
+ */
+public final class Symbols {
+    private Symbols() {
+        // Hide default constructor for utilities classes
+    }
+
     // CHECKSTYLE.OFF: LineLength
     public static final Color Yland = new Color(0xedbc0c);
Index: applications/editors/josm/plugins/seachart/src/symbols/Topmarks.java
===================================================================
--- applications/editors/josm/plugins/seachart/src/symbols/Topmarks.java	(revision 32679)
+++ applications/editors/josm/plugins/seachart/src/symbols/Topmarks.java	(revision 32907)
@@ -1,11 +1,3 @@
-/* Copyright 2014 Malcolm Herring
- *
- * This is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
- */
-
+// License: GPL. For details, see LICENSE file.
 package symbols;
 
@@ -28,5 +20,13 @@
 import symbols.Symbols.Symbol;
 
-public class Topmarks {
+/**
+ * @author Malcolm Herring
+ */
+public final class Topmarks {
+
+    private Topmarks() {
+        // Hide default constructor for utilities classes
+    }
+
     // CHECKSTYLE.OFF: LineLength
     public static final Symbol RadarReflector = new Symbol();
