diff options
author | Ben Burwell <ben.burwell@trifecta.com> | 2016-11-20 03:07:14 -0500 |
---|---|---|
committer | Ben Burwell <ben.burwell@trifecta.com> | 2016-11-20 03:07:14 -0500 |
commit | 46f3cb1df2d24180b9bfddf008798cd695554e28 (patch) | |
tree | e44ae61788a05ba941b9502dc33a3dfb63a99f08 /src/main/java/com/benburwell/planes/gui/aircraftmap/symbols | |
parent | 7411558abf4aba7d600bb9fc713d36032e4a6df3 (diff) |
Implement flexible display modes
Diffstat (limited to 'src/main/java/com/benburwell/planes/gui/aircraftmap/symbols')
7 files changed, 72 insertions, 48 deletions
diff --git a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/AirportSymbol.java b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/AirportSymbol.java index 7467a0f..7b79e80 100644 --- a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/AirportSymbol.java +++ b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/AirportSymbol.java @@ -3,6 +3,7 @@ package com.benburwell.planes.gui.aircraftmap.symbols; import com.benburwell.planes.data.Airport; import com.benburwell.planes.gui.GraphicsTheme; import com.benburwell.planes.gui.aircraftmap.AircraftMap; +import com.benburwell.planes.gui.aircraftmap.DisplayMode; import com.benburwell.planes.gui.aircraftmap.Drawable; import com.benburwell.planes.gui.aircraftmap.GeoPoint; @@ -34,15 +35,18 @@ public class AirportSymbol extends GeoPoint implements Drawable { } @Override - public void drawOn(Graphics g, AircraftMap map) { - if (this.shouldDrawOn(map)) { + public void drawOn(Graphics g, AircraftMap map, DisplayMode displayMode) { + if (this.shouldDrawOn(map) && !displayMode.equals(DisplayMode.HIDDEN)) { int x = this.getX(map); int y = this.getY(map); g.setColor(GraphicsTheme.Styles.MAP_AIRPORT_COLOR); g.drawRect(x - 2, y - 2, 4, 4); - g.drawString(this.getDisplayName(), x + 6, y); + + if (displayMode.equals(DisplayMode.DETAILED)) { + g.drawString(this.getDisplayName(), x + 6, y); + } } } } diff --git a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/NDBSymbol.java b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/NDBSymbol.java index e3b23f5..a40a5e4 100644 --- a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/NDBSymbol.java +++ b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/NDBSymbol.java @@ -3,6 +3,7 @@ package com.benburwell.planes.gui.aircraftmap.symbols; import com.benburwell.planes.data.Position; import com.benburwell.planes.gui.GraphicsTheme; import com.benburwell.planes.gui.aircraftmap.AircraftMap; +import com.benburwell.planes.gui.aircraftmap.DisplayMode; import com.benburwell.planes.gui.aircraftmap.Drawable; import com.benburwell.planes.gui.aircraftmap.GeoPoint; @@ -26,8 +27,8 @@ public class NDBSymbol extends GeoPoint implements Drawable { } @Override - public void drawOn(Graphics g, AircraftMap map) { - if (this.shouldDrawOn(map)) { + public void drawOn(Graphics g, AircraftMap map, DisplayMode displayMode) { + if (this.shouldDrawOn(map) && !displayMode.equals(DisplayMode.HIDDEN)) { g.setColor(GraphicsTheme.Styles.MAP_NAVAID_COLOR); int x = this.getX(map); @@ -35,8 +36,10 @@ public class NDBSymbol extends GeoPoint implements Drawable { g.fillOval(x - INNER_RADIUS, y - INNER_RADIUS, INNER_RADIUS * 2, INNER_RADIUS * 2); g.drawOval(x - OUTER_RADIUS, y - OUTER_RADIUS, OUTER_RADIUS * 2, OUTER_RADIUS * 2); - g.drawString(this.name, x + OUTER_RADIUS + TEXT_OFFSET, y); - g.drawString("" + this.frequency, x + OUTER_RADIUS + TEXT_OFFSET, y + g.getFontMetrics().getHeight()); + if (displayMode.equals(DisplayMode.DETAILED)) { + g.drawString(this.name, x + OUTER_RADIUS + TEXT_OFFSET, y); + g.drawString("" + this.frequency, x + OUTER_RADIUS + TEXT_OFFSET, y + g.getFontMetrics().getHeight()); + } } } } diff --git a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/PlaneSymbol.java b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/PlaneSymbol.java index a522b04..fdf9737 100644 --- a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/PlaneSymbol.java +++ b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/PlaneSymbol.java @@ -4,6 +4,7 @@ import com.benburwell.planes.data.Aircraft; import com.benburwell.planes.data.Position; import com.benburwell.planes.gui.GraphicsTheme; import com.benburwell.planes.gui.aircraftmap.AircraftMap; +import com.benburwell.planes.gui.aircraftmap.DisplayMode; import com.benburwell.planes.gui.aircraftmap.Drawable; import com.benburwell.planes.gui.aircraftmap.GeoPoint; @@ -110,8 +111,9 @@ public class PlaneSymbol extends GeoPoint implements Drawable { return (int) (this.speed / 60.0 * pixelsPerNauticalMile); } - public void drawOn(Graphics g, AircraftMap map) { - if (this.shouldDrawOn(map)) { + @Override + public void drawOn(Graphics g, AircraftMap map, DisplayMode displayMode) { + if (this.shouldDrawOn(map) && !displayMode.equals(DisplayMode.HIDDEN)) { int x = this.getX(map); int y = this.getY(map); @@ -130,10 +132,12 @@ public class PlaneSymbol extends GeoPoint implements Drawable { }); // draw the name of the plane - g.setColor(GraphicsTheme.Styles.MAP_LABEL_COLOR); - g.drawString(this.getDisplayName(), x + TEXT_OFFSET_X, y + TEXT_OFFSET_Y); - String infoString = String.format("%d%s %.1f", this.getFlightLevel(), this.getVerticalRateIndicator(), this.getSpeed()); - g.drawString(infoString, x + TEXT_OFFSET_X, y + TEXT_OFFSET_Y + g.getFontMetrics().getHeight()); + if (displayMode.equals(DisplayMode.DETAILED)) { + g.setColor(GraphicsTheme.Styles.MAP_LABEL_COLOR); + g.drawString(this.getDisplayName(), x + TEXT_OFFSET_X, y + TEXT_OFFSET_Y); + String infoString = String.format("%d%s %.1f", this.getFlightLevel(), this.getVerticalRateIndicator(), this.getSpeed()); + g.drawString(infoString, x + TEXT_OFFSET_X, y + TEXT_OFFSET_Y + g.getFontMetrics().getHeight()); + } } } } diff --git a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/RouteSymbol.java b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/RouteSymbol.java index edd622a..7221d86 100644 --- a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/RouteSymbol.java +++ b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/RouteSymbol.java @@ -3,6 +3,7 @@ package com.benburwell.planes.gui.aircraftmap.symbols; import com.benburwell.planes.graph.Airway; import com.benburwell.planes.gui.GraphicsTheme; import com.benburwell.planes.gui.aircraftmap.AircraftMap; +import com.benburwell.planes.gui.aircraftmap.DisplayMode; import com.benburwell.planes.gui.aircraftmap.Drawable; import com.benburwell.planes.gui.aircraftmap.GeoPoint; @@ -14,6 +15,7 @@ import java.util.stream.Collectors; * @author ben */ public class RouteSymbol implements Drawable { + public final int VERTEX_RADIUS = 3; private final Airway airway; public RouteSymbol(Airway airway) { @@ -25,32 +27,38 @@ public class RouteSymbol implements Drawable { } @Override - public void drawOn(Graphics graphicsContext, AircraftMap map) { - int w = map.getWidth(); - int h = map.getHeight(); - graphicsContext.setColor(GraphicsTheme.Styles.MAP_ROUTE_COLOR); - List<GeoPoint> points = this.airway.getPoints().stream().map(GeoPoint::new).collect(Collectors.toList()); - for (int i = 0; i < points.size() - 1; i++) { - GeoPoint p1 = points.get(i); - int p1x = p1.getX(map); - int p1y = p1.getY(map); - - GeoPoint p2 = points.get(i + 1); - int p2x = p2.getX(map); - int p2y = p2.getY(map); - - boolean p1OnMap = inRange(0, p1x, w) && inRange(0, p1y, h); - boolean p2OnMap = inRange(0, p2x, w) && inRange(0, p2y, h); - boolean showEdge = p1OnMap || p2OnMap; - if (showEdge) { - graphicsContext.drawLine(p1x, p1y, p2x, p2y); - graphicsContext.fillOval(p1x - 2, p1y - 2, 4, 4); + public void drawOn(Graphics graphicsContext, AircraftMap map, DisplayMode displayMode) { + if (!displayMode.equals(DisplayMode.HIDDEN)) { + int w = map.getWidth(); + int h = map.getHeight(); + graphicsContext.setColor(GraphicsTheme.Styles.MAP_ROUTE_COLOR); + List<GeoPoint> points = this.airway.getPoints().stream().map(GeoPoint::new).collect(Collectors.toList()); + for (int i = 0; i < points.size() - 1; i++) { + GeoPoint p1 = points.get(i); + int p1x = p1.getX(map); + int p1y = p1.getY(map); + + GeoPoint p2 = points.get(i + 1); + int p2x = p2.getX(map); + int p2y = p2.getY(map); + + boolean p1OnMap = inRange(0, p1x, w) && inRange(0, p1y, h); + boolean p2OnMap = inRange(0, p2x, w) && inRange(0, p2y, h); + boolean showEdge = p1OnMap || p2OnMap; + if (showEdge) { + graphicsContext.drawLine(p1x, p1y, p2x, p2y); + if (displayMode.equals(DisplayMode.DETAILED)) { + graphicsContext.fillOval(p1x - VERTEX_RADIUS, p1y - VERTEX_RADIUS, VERTEX_RADIUS * 2, VERTEX_RADIUS * 2); + } + } + } + int pnx = points.get(points.size() - 1).getX(map); + int pny = points.get(points.size() - 1).getY(map); + if (inRange(0, pnx, w) && inRange(0, pny, h)) { + if (displayMode.equals(DisplayMode.DETAILED)) { + graphicsContext.fillOval(pnx - VERTEX_RADIUS, pny - VERTEX_RADIUS, VERTEX_RADIUS * 2, VERTEX_RADIUS * 2); + } } - } - int pnx = points.get(points.size() - 1).getX(map); - int pny = points.get(points.size() - 1).getY(map); - if (inRange(0, pnx, w) && inRange(0, pny, h)) { - graphicsContext.fillOval(pnx - 2, pny - 2, 4, 4); } } } diff --git a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORDMESymbol.java b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORDMESymbol.java index 6b12260..b8a754c 100644 --- a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORDMESymbol.java +++ b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORDMESymbol.java @@ -3,6 +3,7 @@ package com.benburwell.planes.gui.aircraftmap.symbols; import com.benburwell.planes.data.Position; import com.benburwell.planes.gui.GraphicsTheme; import com.benburwell.planes.gui.aircraftmap.AircraftMap; +import com.benburwell.planes.gui.aircraftmap.DisplayMode; import com.benburwell.planes.gui.aircraftmap.Drawable; import java.awt.Graphics; @@ -16,9 +17,9 @@ public class VORDMESymbol extends VORSymbol implements Drawable { } @Override - public void drawOn(Graphics graphicsContext, AircraftMap map) { - super.drawOn(graphicsContext, map); - if (this.shouldDrawOn(map)) { + public void drawOn(Graphics graphicsContext, AircraftMap map, DisplayMode displayMode) { + super.drawOn(graphicsContext, map, displayMode); + if (this.shouldDrawOn(map) && !displayMode.equals(DisplayMode.HIDDEN)) { int x = this.getX(map); int y = this.getY(map); graphicsContext.setColor(GraphicsTheme.Styles.MAP_NAVAID_COLOR); diff --git a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORSymbol.java b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORSymbol.java index f4a73dc..70d90bd 100644 --- a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORSymbol.java +++ b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORSymbol.java @@ -3,6 +3,7 @@ package com.benburwell.planes.gui.aircraftmap.symbols; import com.benburwell.planes.data.Position; import com.benburwell.planes.gui.GraphicsTheme; import com.benburwell.planes.gui.aircraftmap.AircraftMap; +import com.benburwell.planes.gui.aircraftmap.DisplayMode; import com.benburwell.planes.gui.aircraftmap.Drawable; import com.benburwell.planes.gui.aircraftmap.GeoPoint; @@ -28,8 +29,8 @@ public class VORSymbol extends GeoPoint implements Drawable { } @Override - public void drawOn(Graphics graphicsContext, AircraftMap map) { - if (this.shouldDrawOn(map)) { + public void drawOn(Graphics graphicsContext, AircraftMap map, DisplayMode displayMode) { + if (this.shouldDrawOn(map) && !displayMode.equals(DisplayMode.HIDDEN)) { int x = this.getX(map); int y = this.getY(map); graphicsContext.setColor(GraphicsTheme.Styles.MAP_NAVAID_COLOR); @@ -42,8 +43,10 @@ public class VORSymbol extends GeoPoint implements Drawable { int[] ys = { y, y - HEIGHT, y - HEIGHT, y, y + HEIGHT, y + HEIGHT, y }; graphicsContext.drawPolygon(xs, ys, 7); - graphicsContext.drawString(this.name, x + RADIUS + TEXT_OFFSET, y); - graphicsContext.drawString(String.format("%.3f", this.frequency / 1000.0), x + RADIUS + TEXT_OFFSET, y + graphicsContext.getFontMetrics().getHeight()); + if (displayMode.equals(DisplayMode.DETAILED)) { + graphicsContext.drawString(this.name, x + RADIUS + TEXT_OFFSET, y); + graphicsContext.drawString(String.format("%.3f", this.frequency / 1000.0), x + RADIUS + TEXT_OFFSET, y + graphicsContext.getFontMetrics().getHeight()); + } } } } diff --git a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORTACSymbol.java b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORTACSymbol.java index 1ca1290..9a1814e 100644 --- a/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORTACSymbol.java +++ b/src/main/java/com/benburwell/planes/gui/aircraftmap/symbols/VORTACSymbol.java @@ -3,6 +3,7 @@ package com.benburwell.planes.gui.aircraftmap.symbols; import com.benburwell.planes.data.Position; import com.benburwell.planes.gui.GraphicsTheme; import com.benburwell.planes.gui.aircraftmap.AircraftMap; +import com.benburwell.planes.gui.aircraftmap.DisplayMode; import com.benburwell.planes.gui.aircraftmap.Drawable; import java.awt.Graphics; @@ -16,9 +17,9 @@ public class VORTACSymbol extends VORSymbol implements Drawable { } @Override - public void drawOn(Graphics graphicsContext, AircraftMap map) { - super.drawOn(graphicsContext, map); - if (this.shouldDrawOn(map)) { + public void drawOn(Graphics graphicsContext, AircraftMap map, DisplayMode displayMode) { + super.drawOn(graphicsContext, map, displayMode); + if (this.shouldDrawOn(map) && !displayMode.equals(DisplayMode.HIDDEN)) { int x = this.getX(map); int y = this.getY(map); graphicsContext.setColor(GraphicsTheme.Styles.MAP_NAVAID_COLOR); |