/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package sec.geo.shape; import sec.geo.*; import sec.geo.kml.KmlOptions.AltitudeMode; import armyc2.c2sd.graphics2d.AffineTransform; import java.util.ArrayList; /** * * @author Michael Deutch */ public class AExtObject { public static final int CAKE = 0; public static final int LINE = 1; public static final int ORBIT = 2; public static final int POINT = 3; public static final int CIRCLE = 4; public static final int RADARC = 5; public static final int POLYARC = 6; public static final int POLYGON = 7; public static final int ROUTE = 8; public static final int TRACK = 9; private int type = -1; private Orbit orbit = null; private Cake cake = null; private Circle circle = null; private Point point = null; private Radarc radarc = null; private Polyarc polyarc = null; private Polygon polygon = null; private Line line = null; private Route route = null; private Track track = null; public AExtObject(Object obj) { if (obj instanceof Integer) { this.type = (Integer) obj; switch (type) { case LINE: line = new Line(); break; case ORBIT: orbit = new Orbit(); break; case ROUTE: route = new Route(); break; case TRACK: track = new Track(); break; case RADARC: radarc = new Radarc(); break; case CAKE: cake = new Cake(); break; default: break; } } //we do not want new objects, this is a pass-thru //because the client is subsequently using the object it's passing else if (obj instanceof Line) { line = (Line) obj; type = LINE; } else if (obj instanceof Route) { route = (Route) obj; type = ROUTE; } else if (obj instanceof Polygon) { polygon = (Polygon) obj; type = POLYGON; } else if (obj instanceof Radarc) { radarc = (Radarc) obj; type = RADARC; } else if (obj instanceof Polyarc) { polyarc = (Polyarc) obj; type = POLYARC; } else if (obj instanceof Orbit) { orbit = (Orbit) obj; type = ORBIT; } else if (obj instanceof Cake) { cake = (Cake) obj; type = CAKE; } else if (obj instanceof Circle) { circle = (Circle) obj; type = CIRCLE; } else if (obj instanceof Point) { point = (Point) obj; type = POINT; } else if (obj instanceof Track) { track = (Track) obj; type = TRACK; } } public void setMaxDistance(double maxDistanceMeters) { //this.maxDistanceMeters = maxDistanceMeters; //shapeChanged(); switch (this.type) { case ORBIT: orbit.setMaxDistance(maxDistanceMeters); break; case RADARC: radarc.setMaxDistance(maxDistanceMeters); break; case POLYARC: polyarc.setMaxDistance(maxDistanceMeters); break; case POLYGON: polygon.setMaxDistance(maxDistanceMeters); break; case LINE: line.setMaxDistance(maxDistanceMeters); break; case CIRCLE: circle.setMaxDistance(maxDistanceMeters); break; case ROUTE: route.setMaxDistance(maxDistanceMeters); break; default: break; } } public void addPoint(GeoPoint point) { switch (type) { case LINE: line.addPoint(point); break; case RADARC: //radarc.addPoint(point); break; case ORBIT: orbit.addPoint(point); break; case POLYARC: polyarc.addPoint(point); break; case POLYGON: polygon.addPoint(point); break; case ROUTE: route.addPoint(point); break; default: break; } } public void setFlatness(double flatnessDistanceMeters) { switch (type) { case LINE: line.flatnessDistanceMeters = flatnessDistanceMeters; break; case CIRCLE: circle.flatnessDistanceMeters = flatnessDistanceMeters; break; case ORBIT: orbit.flatnessDistanceMeters = flatnessDistanceMeters; break; case RADARC: radarc.flatnessDistanceMeters = flatnessDistanceMeters; break; case POLYARC: polyarc.flatnessDistanceMeters = flatnessDistanceMeters; break; case POLYGON: polygon.flatnessDistanceMeters = flatnessDistanceMeters; break; case ROUTE: route.flatnessDistanceMeters = flatnessDistanceMeters; break; default: break; } shapeChanged(); } public void setLimit(int limit) { //this.limit = limit; //shapeChanged(); switch (type) { case LINE: line.limit = limit; break; case CIRCLE: circle.limit = limit; break; case ORBIT: orbit.limit = limit; break; case RADARC: radarc.limit = limit; break; case POLYARC: polyarc.limit = limit; break; case POLYGON: polygon.limit = limit; break; case ROUTE: route.limit = limit; break; default: break; } shapeChanged(); } public double getMinAltitude() { //return minAltitudeMeters; switch (type) { case LINE: return line.getMinAltitude(); case CIRCLE: return circle.getMinAltitude(); case ORBIT: return orbit.getMinAltitude(); case POLYARC: return polyarc.getMinAltitude(); case POLYGON: return polygon.getMinAltitude(); case ROUTE: return route.getMinAltitude(); case RADARC: return radarc.getMinAltitude(); default: break; } return -1; } public double getMaxAltitude() { //return minAltitudeMeters; switch (type) { case LINE: return line.getMaxAltitude(); case CIRCLE: return circle.getMaxAltitude(); case ORBIT: return orbit.getMaxAltitude(); case POLYARC: return polyarc.getMaxAltitude(); case POLYGON: return polygon.getMaxAltitude(); case ROUTE: return route.getMaxAltitude(); case RADARC: return radarc.getMaxAltitude(); default: break; } return -1; } public AltitudeMode getAltitudeMode() { switch (type) { case LINE: return line.getAltitudeMode(); case CIRCLE: return circle.getAltitudeMode(); case ORBIT: return orbit.getAltitudeMode(); case POLYARC: return polyarc.getAltitudeMode(); case POLYGON: return polygon.getAltitudeMode(); case ROUTE: return route.getAltitudeMode(); case RADARC: return radarc.getAltitudeMode(); default: break; } return AltitudeMode.ABSOLUTE; } public ArrayList getElements() { if (track != null) { return this.track.elements; } else if (cake != null) { return cake.getElements(); } else { return null; } } public Object getPathIterator(AffineTransform at) { switch (type) { case LINE: return line.getShape().getPathIterator(at); case ORBIT: return orbit.getShape().getPathIterator(at); case POLYGON: return polygon.getShape().getPathIterator(at); case POLYARC: return polyarc.getShape().getPathIterator(at); case CIRCLE: return circle.getShape().getPathIterator(at); case RADARC: return radarc.getShape().getPathIterator(at); case ROUTE: return route.getShape().getPathIterator(at); default: return null; } } private void shapeChanged() { switch (type) { case POLYGON: polygon.shapeChanged(); break; case ORBIT: orbit.shapeChanged(); break; case ROUTE: route.shapeChanged(); break; case RADARC: radarc.shapeChanged(); break; case POLYARC: polyarc.shapeChanged(); break; default: break; } } }