diff --git a/tools/cooja/java/se/sics/cooja/plugins/TimeLine.java b/tools/cooja/java/se/sics/cooja/plugins/TimeLine.java index ff26e31ff..25821b677 100644 --- a/tools/cooja/java/se/sics/cooja/plugins/TimeLine.java +++ b/tools/cooja/java/se/sics/cooja/plugins/TimeLine.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: TimeLine.java,v 1.8 2009/06/15 09:47:05 fros4943 Exp $ + * $Id: TimeLine.java,v 1.9 2009/06/16 12:16:02 fros4943 Exp $ */ package se.sics.cooja.plugins; @@ -1273,18 +1273,46 @@ public class TimeLine extends VisPlugin { } class WatchpointEvent extends MoteEvent { Watchpoint watchpoint; - Color color = Color.RED; public WatchpointEvent(long time, Watchpoint watchpoint) { super(time); this.watchpoint = watchpoint; } public Color getEventColor() { - return color; + Color c = watchpoint.getColor(); + if (c == null) { + return Color.BLACK; + } + return c; } public String toString() { + String desc = watchpoint.getDescription(); + desc = desc.replace("\n", "
"); return "Watchpoint triggered at time (ms): " + time/Simulation.MILLISECOND + ".
" - + watchpoint.getDescription() + "
"; + + desc + "
"; + } + + /* Default paint method */ + public void paintInterval(Graphics g, int lineHeightOffset, long end) { + MoteEvent ev = this; + while (ev != null && ev.time < end) { + int w = 2; /* Watchpoints are always two pixels wide */ + + Color color = ev.getEventColor(); + if (color == null) { + /* Skip painting event */ + ev = ev.next; + continue; + } + g.setColor(color); + + g.fillRect( + (int)(ev.time/currentPixelDivisor), lineHeightOffset, + w, EVENT_PIXEL_HEIGHT + ); + + ev = ev.next; + } } } class MoteEvents { @@ -1381,18 +1409,6 @@ public class TimeLine extends VisPlugin { logEvents.add(ev); } public void addWatchpoint(WatchpointEvent ev) { - /* Automatically toggle colors */ - /* TODO Move color decision to watchpoint interface? */ - if (lastWatchpointEvent != null && lastWatchpointEvent instanceof WatchpointEvent) { - if (((WatchpointEvent)lastWatchpointEvent).color == Color.RED) { - ((WatchpointEvent)ev).color = Color.GREEN; - } else if (((WatchpointEvent)lastWatchpointEvent).color == Color.GREEN) { - ((WatchpointEvent)ev).color = Color.BLUE; - } else { - ((WatchpointEvent)ev).color = Color.RED; - } - } - /* Link with previous events */ if (lastWatchpointEvent != null) { ev.prev = lastWatchpointEvent;