Index: /applications/editors/josm/plugins/smed2/src/seamap/Renderer.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/seamap/Renderer.java	(revision 30019)
+++ /applications/editors/josm/plugins/smed2/src/seamap/Renderer.java	(revision 30020)
@@ -13,4 +13,5 @@
 import java.awt.font.*;
 import java.awt.geom.*;
+import java.awt.image.*;
 import java.util.*;
 
@@ -270,4 +271,30 @@
 		}
 	}
+	
+	public static void fillPattern(Feature feature, BufferedImage image) {
+		Path2D.Double p = new Path2D.Double();
+		p.setWindingRule(GeneralPath.WIND_EVEN_ODD);
+		Point2D point;
+		switch (feature.flag) {
+		case POINT:
+			point = helper.getPoint(feature.centre);
+			g2.drawImage(image, new AffineTransformOp(AffineTransform.getScaleInstance(sScale, sScale), AffineTransformOp.TYPE_NEAREST_NEIGHBOR),
+					(int)(point.getX() - (50 * sScale)), (int)(point.getY() - (50 * sScale)));
+			break;
+		case AREA:
+			for (Bound bound : map.areas.get(feature.refs)) {
+				BoundIterator bit = map.new BoundIterator(bound);
+				point = helper.getPoint(bit.next());
+				p.moveTo(point.getX(), point.getY());
+				while (bit.hasNext()) {
+					point = helper.getPoint(bit.next());
+					p.lineTo(point.getX(), point.getY());
+				}
+			}
+	    g2.setPaint(new TexturePaint(image, new Rectangle(0, 0, 1 + (int)(100 * sScale), 1 + (int)(100 * sScale))));
+	    g2.fill(p);
+	    break;
+		}
+	}
 
 	public static void labelText(Feature feature, String str, Font font, Color colour, Delta delta) {
Index: /applications/editors/josm/plugins/smed2/src/seamap/Rules.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/seamap/Rules.java	(revision 30019)
+++ /applications/editors/josm/plugins/smed2/src/seamap/Rules.java	(revision 30020)
@@ -105,17 +105,11 @@
 		AttItem name = feature.atts.get(Att.OBJNAM);
 		switch (feature.type) {
-		case SPLARE:
-			if (zoom >= 12) {
-				Renderer.symbol(feature, Areas.Plane, Obj.SPLARE, null, null);
-				Renderer.lineSymbols(feature, Areas.Restricted, 0.5, Areas.LinePlane, 10);
-			}
-			if ((zoom >= 15) && (name != null))
-				Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 80), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -90)));
-			break;
-		case MARCUL:
-			if (zoom >= 14)
-				Renderer.symbol(feature, Areas.MarineFarm, Obj.MARCUL, null, null);
-			if (zoom >= 16)
-				Renderer.lineVector(feature, new LineStyle( Color.black, 4, new float[] { 10, 10 }, null));
+		case DRGARE:
+			if (zoom < 16)
+				Renderer.lineVector(feature, new LineStyle(Color.black, 8, new float[] { 25, 25 }, new Color(0x40ffffff, true)));
+			else
+				Renderer.lineVector(feature, new LineStyle(Color.black, 8, new float[] { 25, 25 }, null));
+			if ((zoom >= 12) && (name != null))
+				Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.PLAIN, 100), Color.black, null);
 			break;
 		case FAIRWY:
@@ -130,18 +124,9 @@
 			}
 			break;
-		case DRGARE:
-			if (zoom < 16)
-				Renderer.lineVector(feature, new LineStyle(Color.black, 8, new float[] { 25, 25 }, new Color(0x40ffffff, true)));
-			else
-				Renderer.lineVector(feature, new LineStyle(Color.black, 8, new float[] { 25, 25 }, null));
-			if ((zoom >= 12) && (name != null))
-				Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.PLAIN, 100), Color.black, null);
-			break;
-		case RESARE:
-			if (zoom >= 12) {
-				Renderer.lineSymbols(feature, Areas.Restricted, 1.0, null, 0);
-//				if ((CatREA)Renderer.getAttVal(feature, feature.type, 0, Att.CATREA) == CatREA.REA_NWAK)
-//					Renderer.symbol(feature, Areas.NoWake, Obj.RESARE, null);
-			}
+		case MARCUL:
+			if (zoom >= 14)
+				Renderer.symbol(feature, Areas.MarineFarm, Obj.MARCUL, null, null);
+			if (zoom >= 16)
+				Renderer.lineVector(feature, new LineStyle( Color.black, 4, new float[] { 10, 10 }, null));
 			break;
 		case OSPARE:
@@ -153,4 +138,11 @@
 			}
 			break;
+		case RESARE:
+			if (zoom >= 12) {
+				Renderer.lineSymbols(feature, Areas.Restricted, 1.0, null, 0);
+//				if ((CatREA)Renderer.getAttVal(feature, feature.type, 0, Att.CATREA) == CatREA.REA_NWAK)
+//					Renderer.symbol(feature, Areas.NoWake, Obj.RESARE, null);
+			}
+			break;
 		case SEAARE:
 			switch ((CatSEA) Renderer.getAttVal(feature, feature.type, 0, Att.CATSEA)) {
@@ -166,8 +158,4 @@
 			}
 			break;
-		case SNDWAV:
-//	  if (zoom>=12)) area("fill:url(#sandwaves)");
-			break;
-		}
 /*
   if (is_type("sea_area")) {
@@ -205,5 +193,18 @@
   }
  */
-	}
+		case SNDWAV:
+			if (zoom >= 12) Renderer.fillPattern(feature, Areas.Sandwaves);
+			break;
+		case SPLARE:
+			if (zoom >= 12) {
+				Renderer.symbol(feature, Areas.Plane, Obj.SPLARE, null, null);
+				Renderer.lineSymbols(feature, Areas.Restricted, 0.5, Areas.LinePlane, 10);
+			}
+			if ((zoom >= 15) && (name != null))
+				Renderer.labelText(feature, (String) name.val, new Font("Arial", Font.BOLD, 80), Color.black, new Delta(Handle.BC, AffineTransform.getTranslateInstance(0, -90)));
+			break;
+		}
+	}
+	
 	private static void beacons(Feature feature) {
 		BcnSHP shape = (BcnSHP) Renderer.getAttVal(feature, feature.type, 0, Att.BCNSHP);
Index: /applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java	(revision 30019)
+++ /applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java	(revision 30020)
@@ -182,7 +182,7 @@
 					if (nextFeature.compareTo(feature) != 0) {
 						feature = nextFeature;
-						panelMain.parseMark(map.index.get(feature.getUniqueId()));
-						showFrame.setVisible(true);
-						showFrame.showFeature(feature, map);
+//						panelMain.parseMark(map.index.get(feature.getUniqueId()));
+//						showFrame.setVisible(true);
+//						showFrame.showFeature(feature, map);
 					}
 				} else {
Index: /applications/editors/josm/plugins/smed2/src/symbols/Areas.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/symbols/Areas.java	(revision 30019)
+++ /applications/editors/josm/plugins/smed2/src/symbols/Areas.java	(revision 30020)
@@ -10,8 +10,7 @@
 package symbols;
 
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Rectangle;
+import java.awt.*;
 import java.awt.geom.*;
+import java.awt.image.*;
 
 import symbols.Symbols.*;
@@ -127,5 +126,4 @@
 		RockC.add(new Instr(Prim.LINE, new Line2D.Double(10,17.3,-10,-17.3)));
 	}
-	public static final Symbol Sandwaves = new Symbol();
 	public static final Symbol Seaplane = new Symbol();
 	static {
@@ -179,3 +177,18 @@
 		WreckS.add(new Instr(Prim.PGON, p));
 	}
+	public static final BufferedImage Sandwaves = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
+	static {
+		Graphics2D g2 = Sandwaves.createGraphics();
+		g2.setStroke(new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
+		g2.setBackground(new Color(0, true));
+		g2.clearRect(0,  0, 100, 100);
+		g2.setPaint(new Color(0xffd400));
+		Path2D.Double p = new Path2D.Double(); p.moveTo(0.0,34.5); p.lineTo(03.3,30.8); p.lineTo(09.9,19.3); p.lineTo(13.2,16.0); p.lineTo(16.5,16.1); p.lineTo(18.2,19.5);
+		p.lineTo(19.9,25.0); p.lineTo(21.6,30.3); p.lineTo(23.3,33.4); p.lineTo(25.0,33.3); p.lineTo(28.3,30.1); p.lineTo(31.6,25.0); p.lineTo(34.9,20.1); p.lineTo(38.2,17.2);
+		p.lineTo(41.5,17.3); p.lineTo(43.2,20.3); p.lineTo(44.9,25); p.lineTo(46.6,29.6); p.lineTo(48.3,32.2); p.lineTo(50.0,32.1);
+		p.moveTo(50.0,84.5); p.lineTo(53.3,80.8); p.lineTo(56.6,75.0); p.lineTo(59.9,69.3); p.lineTo(63.2,66.0); p.lineTo(66.5,66.1); p.lineTo(68.2,69.5); p.lineTo(69.9,75.0);
+		p.lineTo(71.6,80.3); p.lineTo(73.3,83.4); p.lineTo(75.0,83.3); p.lineTo(78.3,80.1); p.lineTo(81.6,75.0); p.lineTo(84.9,70.1); p.lineTo(88.2,67.2); p.lineTo(91.5,67.3);
+		p.lineTo(93.2,70.3); p.lineTo(94.9,75.0); p.lineTo(96.6,79.6); p.lineTo(98.3,82.2); p.lineTo(100.0,82.1);
+		g2.draw(p);
+	}
 }
