/** * over-ridden method, where we write out our data * * @param theData the data to plot * @param out the stream to write to * @throws java.io.IOException file-related troubles */ protected final void plotData(MWC.GUI.Layers theData, java.io.BufferedWriter out) throws java.io.IOException { java.text.DateFormat df = new java.text.SimpleDateFormat("ddHHmm"); df.setTimeZone(TimeZone.getTimeZone("GMT")); // work through the layers int num = _theData.size(); for (int i = 0; i < num; i++) { Layer l = (Layer) _theData.elementAt(i); Enumeration<Editable> iter = l.elements(); while (iter.hasMoreElements()) { Object oj = iter.nextElement(); if (oj instanceof Debrief.Wrappers.FixWrapper) { Debrief.Wrappers.FixWrapper fw = (Debrief.Wrappers.FixWrapper) oj; WorldLocation pos = fw.getLocation(); if (fw.getSymbolShowing()) { String lbl = fw.getName(); writeBox(out, pos.getLong(), pos.getLat(), pos.getDepth(), fw.getColor(), lbl); } if (fw.getLabelShowing()) { String str = DebriefFormatDateTime.toStringHiRes(fw.getTime()); writeText(out, pos.getLong(), pos.getLat(), pos.getDepth(), str, fw.getColor()); } } } } // now draw the line connectors num = _theData.size(); for (int i = 0; i < num; i++) { Layer l = (Layer) _theData.elementAt(i); Enumeration<Editable> iter = l.elements(); int len = 0; while (iter.hasMoreElements()) { Object oj = iter.nextElement(); if (oj instanceof MWC.GenericData.WatchableList) { // just check that we haven't got any dangling Fix lines // waiting to be finished if (len > 0) { // we have clearly written some fixes to the file, write the footer writeLineFooter(out, len); len = 0; } MWC.GenericData.WatchableList tw = (MWC.GenericData.WatchableList) oj; java.awt.Color col = tw.getColor(); writeLineHeader(out, col); } if (oj instanceof Debrief.Wrappers.FixWrapper) { len++; Debrief.Wrappers.FixWrapper fw = (Debrief.Wrappers.FixWrapper) oj; WorldLocation pos = fw.getLocation(); writeLineEntry(out, pos.getLong(), pos.getLat(), pos.getDepth()); } } if (len > 0) { // we have clearly written some fixes to the file, write the footer writeLineFooter(out, len); } } }