Index: /applications/editors/josm/plugins/smed2/src/panels/PanelMain.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/panels/PanelMain.java	(revision 29994)
+++ /applications/editors/josm/plugins/smed2/src/panels/PanelMain.java	(revision 29995)
@@ -7,13 +7,23 @@
 import java.awt.Rectangle;
 import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.Iterator;
 
 import javax.swing.*;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 
+import s57.S57att.Att;
+import s57.S57obj.Obj;
+import s57.S57val;
+import seamap.SeaMap;
+import seamap.SeaMap.*;
+import smed2.S57en;
 import smed2.Smed2Action;
 
 public class PanelMain extends JPanel {
 
+	public static JTextArea decode = null;
 	public static JTextField messageBar = null;
 	public JButton saveButton = null;
@@ -78,4 +88,46 @@
 		saveButton.addActionListener(alSave);
 
+		decode = new JTextArea();
+		decode.setBounds(0, 0, 480, 420);
+		decode.setTabSize(1);
+		add(decode);
+	}
+	
+	public void parseMark(Feature feature) {
+		decode.setText("Selected feature:\n");
+		decode.append("\tType: " + S57en.ObjEN.get(feature.type) + "\n");
+		if (feature.atts.get(Att.OBJNAM) != null) {
+			decode.append("\tName: " + feature.atts.get(Att.OBJNAM).val + "\n");
+		}
+		decode.append("\tObjects:\n");
+		for (Obj obj : feature.objs.keySet()) {
+			decode.append("\t\t" + S57en.ObjEN.get(obj) + "\n");
+			if (feature.objs.get(obj).size() != 0) {
+				for (AttMap atts : feature.objs.get(obj).values()) {
+					for (Att att : atts.keySet()) {
+						AttItem item = atts.get(att);
+						switch (item.conv) {
+						case E:
+							decode.append("\t\t\t" + S57en.AttEN.get(att) + ": " + S57en.enums.get(att).get(item.val) + "\n");
+							break;
+						case L:
+							decode.append("\t\t\t" + S57en.AttEN.get(att) + ": ");
+							Iterator it = ((ArrayList)item.val).iterator();
+							while (it.hasNext()) {
+								Object val = it.next();
+								decode.append((String)S57en.enums.get(att).get(val));
+								if (it.hasNext()) {
+									decode.append(", ");
+								}
+							}
+							decode.append("\n");
+							break;
+						default:
+							decode.append("\t\t\t" + S57en.AttEN.get(att) + ": " + item.val + "\n");
+						}
+					}
+				}
+			}
+		}
 	}
 	
Index: /applications/editors/josm/plugins/smed2/src/s57/S57att.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/s57/S57att.java	(revision 29994)
+++ /applications/editors/josm/plugins/smed2/src/s57/S57att.java	(revision 29995)
@@ -133,5 +133,5 @@
 		AttStr.put(Att.TIMEND, "end_time"); AttStr.put(Att.TIMSTA, "start_time");	AttStr.put(Att.TOPSHP, "shape"); AttStr.put(Att.TRAFIC, "traffic_flow");
 		AttStr.put(Att.VALACM, "variation_change"); AttStr.put(Att.VALDCO, "depth"); AttStr.put(Att.VALLMA, "anomaly"); AttStr.put(Att.VALMAG, "variation");
-		AttStr.put(Att.VALMXR, "maximum_range"); AttStr.put(Att.VALNMR, "range");	AttStr.put(Att.VALSOU, "sounding"); AttStr.put(Att.VERACC, "vertical_accuracy");
+		AttStr.put(Att.VALMXR, "maximum_range"); AttStr.put(Att.VALNMR, "range");	AttStr.put(Att.VALSOU, "depth"); AttStr.put(Att.VERACC, "vertical_accuracy");
 		AttStr.put(Att.VERCLR, "clearance_height");	AttStr.put(Att.VERCCL, "clearance_height_closed"); AttStr.put(Att.VERCOP, "clearance_height_open");
 		AttStr.put(Att.VERCSA, "clearance_height_safe"); AttStr.put(Att.VERDAT, "vertical_datum"); AttStr.put(Att.VERLEN, "vertical_length"); AttStr.put(Att.WATLEV, "water_level");
@@ -202,5 +202,6 @@
 	  objatt.add(new ObjAtt(Obj.VEGATN, Att.CATVEG)); objatt.add(new ObjAtt(Obj.VEHTRF, Att.CATVTR)); objatt.add(new ObjAtt(Obj.WATTUR, Att.CATWAT));
 	  objatt.add(new ObjAtt(Obj.WEDKLP, Att.CATWED)); objatt.add(new ObjAtt(Obj.WRECKS, Att.CATWRK)); objatt.add(new ObjAtt(Obj.TS_FEB, Att.CAT_TS));
-	  objatt.add(new ObjAtt(Obj.UNKOBJ, Att.RADIUS)); objatt.add(new ObjAtt(Obj.LIGHTS, Att.LITRAD)); objatt.add(new ObjAtt(Obj.NOTMRK, Att.BNKWTW));
+	  objatt.add(new ObjAtt(Obj.DEPCNT, Att.VALDCO)); objatt.add(new ObjAtt(Obj.SOUNDG, Att.VALSOU)); objatt.add(new ObjAtt(Obj.NOTMRK, Att.BNKWTW));
+	  objatt.add(new ObjAtt(Obj.UNKOBJ, Att.RADIUS)); objatt.add(new ObjAtt(Obj.LIGHTS, Att.LITRAD));
 	}
 	
Index: /applications/editors/josm/plugins/smed2/src/seamap/SeaMap.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/seamap/SeaMap.java	(revision 29994)
+++ /applications/editors/josm/plugins/smed2/src/seamap/SeaMap.java	(revision 29995)
@@ -96,6 +96,6 @@
 
 	public class AttItem {
-		Conv conv;
-		Object val;
+		public Conv conv;
+		public Object val;
 
 		AttItem(Conv iconv, Object ival) {
@@ -360,4 +360,7 @@
 				if (subkeys[1].equals("type")) {
 					feature.type = S57obj.enumType(val);
+					if (feature.objs.get(feature.type) == null) {
+						feature.objs.put(feature.type, new ObjTab());
+					}
 				} else {
 					Att att = S57att.enumAttribute(subkeys[1], Obj.UNKOBJ);
Index: /applications/editors/josm/plugins/smed2/src/smed2/S57en.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/smed2/S57en.java	(revision 29994)
+++ /applications/editors/josm/plugins/smed2/src/smed2/S57en.java	(revision 29995)
@@ -9,5 +9,5 @@
 public class S57en {
 
-	private static final EnumMap<Obj, String> ObjEN = new EnumMap<Obj, String>(Obj.class);
+	public static final EnumMap<Obj, String> ObjEN = new EnumMap<Obj, String>(Obj.class);
 	static {
 		ObjEN.put(Obj.UNKOBJ, "Unkown object");	ObjEN.put(Obj.ADMARE, "Administrative area");	ObjEN.put(Obj.AIRARE, "Airfield");	ObjEN.put(Obj.ACHBRT, "Anchor berth");
@@ -62,5 +62,5 @@
 	}
 
-	private static final EnumMap<Att, String> AttEN = new EnumMap<Att, String>(Att.class);
+	public static final EnumMap<Att, String> AttEN = new EnumMap<Att, String>(Att.class);
 	static {
 		AttEN.put(Att.UNKATT, "Unknown attribute"); AttEN.put(Att.AGENCY, "Agency"); AttEN.put(Att.BCNSHP, "Beacon shape"); AttEN.put(Att.BUISHP, "Building shape");
@@ -112,5 +112,5 @@
 		AttEN.put(Att.CATBNK, "Waterway bank category");	AttEN.put(Att.CATNMK, "Notice mark category"); AttEN.put(Att.CLSDNG, "Dangerous cargo class"); AttEN.put(Att.DIRIMP, "Direction of impact");
 		AttEN.put(Att.DISBK1, "First distance from notice");	AttEN.put(Att.DISBK2, "Second distance from notice");AttEN.put(Att.DISIPU, "Upstream distance of impact");
-		AttEN.put(Att.DISIPD, "Dwonstream distance of impact"); AttEN.put(Att.ELEVA1, "Minimum elevation"); AttEN.put(Att.ELEVA2, "Maximum elevation"); AttEN.put(Att.FNCTNM, "Notice mark function");
+		AttEN.put(Att.DISIPD, "Downstream distance of impact"); AttEN.put(Att.ELEVA1, "Minimum elevation"); AttEN.put(Att.ELEVA2, "Maximum elevation"); AttEN.put(Att.FNCTNM, "Notice mark function");
 		AttEN.put(Att.WTWDIS, "Waterway distance"); AttEN.put(Att.BUNVES, "Bunker vessel availibility");	AttEN.put(Att.CATBRT, "Berth category"); AttEN.put(Att.CATBUN, "Bunker station category");
 		AttEN.put(Att.CATCCL, "CEMT class category"); AttEN.put(Att.CATHBR, "Harbour area category");	AttEN.put(Att.CATRFD, "Refuse dump category"); AttEN.put(Att.CATTML, "Terminal category");
@@ -127,3 +127,32 @@
 	}
 	
+	private static final EnumMap<BcnSHP, String> Bcnshp = new EnumMap<BcnSHP, String>(BcnSHP.class); static { Bcnshp.put(BcnSHP.BCN_UNKN, "");
+	Bcnshp.put(BcnSHP.BCN_STAK, "Stake"); Bcnshp.put(BcnSHP.BCN_WTHY, "Withy"); Bcnshp.put(BcnSHP.BCN_TOWR, "Tower"); Bcnshp.put(BcnSHP.BCN_LATT, "Lattice"); Bcnshp.put(BcnSHP.BCN_PILE, "Pile");
+	Bcnshp.put(BcnSHP.BCN_CARN, "Cairn"); Bcnshp.put(BcnSHP.BCN_BUOY, "Buoyant"); Bcnshp.put(BcnSHP.BCN_POLE, "Pole"); Bcnshp.put(BcnSHP.BCN_PRCH, "Perch"); Bcnshp.put(BcnSHP.BCN_POST, "Post");
 }
+	private static final EnumMap<BuiSHP, String> Buishp = new EnumMap<BuiSHP, String>(BuiSHP.class); static { Buishp.put(BuiSHP.BUI_UNKN, "");
+	Buishp.put(BuiSHP.BUI_HIRS, "High-rise"); Buishp.put(BuiSHP.BUI_PYRD, "Pyramid"); Buishp.put(BuiSHP.BUI_CYLR, "Cylindrical"); Buishp.put(BuiSHP.BUI_SPHR, "Spherical"); Buishp.put(BuiSHP.BUI_CUBE, "Cubic");
+	}
+	private static final EnumMap<BoySHP, String> Boyshp = new EnumMap<BoySHP, String>(BoySHP.class); static { Boyshp.put(BoySHP.BOY_UNKN, "");
+	Boyshp.put(BoySHP.BOY_CONE, "Conical"); Boyshp.put(BoySHP.BOY_CAN, "Can"); Boyshp.put(BoySHP.BOY_SPHR, "Spherical"); Boyshp.put(BoySHP.BOY_PILR, "Pillar"); Boyshp.put(BoySHP.BOY_SPAR, "Spar");
+	Boyshp.put(BoySHP.BOY_BARL, "Barrel"); Boyshp.put(BoySHP.BOY_SUPR, "Super-buoy"); Boyshp.put(BoySHP.BOY_ICE, "Ice buoy");
+}
+	private static final EnumMap<CatCAM, String> Catcam = new EnumMap<CatCAM, String>(CatCAM.class); static { Catcam.put(CatCAM.CAM_UNKN, "");
+		Catcam.put(CatCAM.CAM_NORTH, "North"); Catcam.put(CatCAM.CAM_EAST, "East"); Catcam.put(CatCAM.CAM_SOUTH, "South"); Catcam.put(CatCAM.CAM_WEST, "West");
+	}
+	private static final EnumMap<ColCOL, String> Colour = new EnumMap<ColCOL, String>(ColCOL.class); static { Colour.put(ColCOL.COL_UNK, "");
+	Colour.put(ColCOL.COL_WHT, "White"); Colour.put(ColCOL.COL_BLK, "Black"); Colour.put(ColCOL.COL_RED, "Red"); Colour.put(ColCOL.COL_GRN, "Green"); Colour.put(ColCOL.COL_BLU, "Blue");
+	Colour.put(ColCOL.COL_YEL, "Yellow"); Colour.put(ColCOL.COL_GRY, "Grey"); Colour.put(ColCOL.COL_BRN, "Brown"); Colour.put(ColCOL.COL_AMB, "Amber"); Colour.put(ColCOL.COL_VIO, "Violet");
+	Colour.put(ColCOL.COL_ORG, "Orange"); Colour.put(ColCOL.COL_MAG, "Magenta"); Colour.put(ColCOL.COL_PNK, "Pink");
+}
+	private static final EnumMap<ColPAT, String> Colpat = new EnumMap<ColPAT, String>(ColPAT.class); static { Colpat.put(ColPAT.PAT_UNKN, ""); Colpat.put(ColPAT.PAT_HORI, "Horizontal");
+	Colpat.put(ColPAT.PAT_VERT, "Vertical"); Colpat.put(ColPAT.PAT_DIAG, "Diagonal"); Colpat.put(ColPAT.PAT_SQUR, "Squared"); Colpat.put(ColPAT.PAT_STRP, "Stripes");
+	Colpat.put(ColPAT.PAT_BRDR, "Border"); Colpat.put(ColPAT.PAT_CROS, "Cross"); Colpat.put(ColPAT.PAT_SALT, "Saltire");
+}
+	
+	public static final EnumMap<Att, EnumMap> enums = new EnumMap<Att, EnumMap>(Att.class);
+	static {
+		enums.put(Att.BCNSHP, Bcnshp); enums.put(Att.BUISHP, Buishp); enums.put(Att.BOYSHP, Boyshp); enums.put(Att.CATCAM, Catcam); enums.put(Att.COLOUR, Colour); enums.put(Att.COLPAT, Colpat);
+	}
+	
+}
Index: /applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java
===================================================================
--- /applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java	(revision 29994)
+++ /applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java	(revision 29995)
@@ -118,5 +118,5 @@
 		editFrame.setResizable(true);
 		editFrame.setAlwaysOnTop(true);
-		editFrame.setVisible(false);
+		editFrame.setVisible(true);
 		panelMain = new PanelMain();
 		editFrame.add(panelMain);
@@ -181,4 +181,5 @@
 					if (nextFeature.compareTo(feature) != 0) {
 						feature = nextFeature;
+						panelMain.parseMark(map.index.get(feature.getUniqueId()));
 //						showFrame.setVisible(true);
 						showFrame.showFeature(feature, map);
