package com.github.pfichtner.jrunalyser.ui.map.painter;
import java.awt.BasicStroke;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import org.jdesktop.swingx.JXMapViewer;
import com.github.pfichtner.jrunalyser.base.data.floater.HighlightableSegment;
import com.github.pfichtner.jrunalyser.base.data.segment.Segment;
import com.github.pfichtner.jrunalyser.base.data.track.Track;
import com.github.pfichtner.jrunalyser.ui.map.theme.Theme;
/**
* Simple Painter that draws only {@link HighlightableSegment}s using Theme's
* highlight color.
*
* @author Peter Fichtner
*/
public class HighlightTrackPainter extends AbstractTrackPainter {
private final Stroke stroke;
/**
* Creates a new HighlightTrackPainter that draws only
* {@link HighlightableSegment}s using Theme's highlight color.
*/
public HighlightTrackPainter(Track track, Theme theme, int stroke) {
super(track, theme);
this.stroke = new BasicStroke(stroke);
}
@Override
protected void drawSegment(Graphics2D g, Segment segment,
JXMapViewer jxMapViewer) {
// ignore all non-highlightable and all non-highlighted segments
if (segment instanceof HighlightableSegment
&& ((HighlightableSegment) segment).isHighligted()) {
super.drawSegment(g, segment, jxMapViewer);
}
}
@Override
protected void drawWaypoint(Graphics2D g, Point2D p1, Point2D p2) {
g.setStroke(this.stroke);
g.setColor(getTheme().getHlColor());
g.draw(new Line2D.Double(p1, p2));
}
}