MapMark(double lat, double lon, int state) {
super(lat, lon, state);
}
+
+ MapMark(double lat, double lon, int state, String label) {
+ super(lat, lon, state, label);
+ }
}
public AltosMapMark new_mark(double lat, double lon, int state) {
return new MapMark(lat, lon, state);
}
+ public AltosMapMark new_mark(double lat, double lon, int state, String label) {
+ return new MapMark(lat, lon, state, label);
+ }
+
public int width() {
return getWidth();
}
static final long auto_scroll_delay = 20 * 1000;
public AltosMapTransform transform;
- AltosLatLon centre;
+ public AltosLatLon centre;
public void reset() {
// nothing
centre(lat_lon);
}
- public AltosMapMark add_mark(double lat, double lon, int state) {
+ public AltosMapMark add_mark(double lat, double lon, int state, String label) {
AltosMapMark mark;
synchronized(marks) {
- mark = map_interface.new_mark(lat, lon, state);
+ mark = map_interface.new_mark(lat, lon, state, label);
if (mark != null)
marks.add(mark);
}
return mark;
}
+ public AltosMapMark add_mark(double lat, double lon, int state) {
+ return add_mark(lat, lon, state, null);
+ }
+
public void del_mark(AltosMapMark mark) {
marks.remove(mark);
}
public abstract AltosMapMark new_mark(double lat, double lon, int state);
+ public abstract AltosMapMark new_mark(double lat, double lon, int state, String label);
+
public abstract AltosMapTile new_tile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size, int scale);
public abstract int width();
public AltosLatLon lat_lon;
public int state;
+ public String label;
static public int stroke_width = 6;
public abstract void paint(AltosMapTransform t);
- public AltosMapMark (double lat, double lon, int state) {
+ public AltosMapMark (double lat, double lon, int state, String label) {
lat_lon = new AltosLatLon(lat, lon);
this.state = state;
+ this.label = label;
+ }
+
+ public AltosMapMark (double lat, double lon, int state) {
+ this(lat, lon, state, null);
+ }
+
+ public AltosMapMark () {
+ this(0, 0, 0);
}
}
g.drawOval((int)pt.x-5, (int)pt.y-5, 10, 10);
g.drawOval((int)pt.x-20, (int)pt.y-20, 40, 40);
g.drawOval((int)pt.x-35, (int)pt.y-35, 70, 70);
+
+ if (label != null) {
+ Rectangle2D bounds;
+ bounds = line_font.getStringBounds(label, g.getFontRenderContext());
+ float x = (float) pt.x;
+ float y = (float) pt.y + (float) bounds.getHeight() / 2.0f;
+
+ g.setFont(line_font);
+ g.setColor(Color.WHITE);
+ for (int dy = -2; dy <= 2; dy += 2)
+ for (int dx = -2; dx <= 2; dx += 2)
+ g.drawString(label, x + dx, y + dy);
+ if (0 <= state && state < AltosUIMap.stateColors.length)
+ g.setColor(AltosUIMap.stateColors[state]);
+ else
+ g.setColor(AltosUIMap.stateColors[AltosLib.ao_flight_invalid]);
+ g.drawString(label, x, y);
+ }
+ }
+
+ MapMark(double lat, double lon, int state, String label) {
+ super(lat, lon, state, label);
}
MapMark(double lat, double lon, int state) {
return new MapMark(lat, lon, state);
}
+ public AltosMapMark new_mark(double lat, double lon, int state, String label) {
+ return new MapMark(lat, lon, state, label);
+ }
+
public AltosMapTile new_tile(AltosMapCache cache, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size, int scale) {
return new MapTile(cache, upper_left, center, zoom, maptype, px_size, scale);
}
map.add_mark(lat, lon, status);
}
+ public void add_mark(double lat, double lon, int status, String label) {
+ map.add_mark(lat, lon, status, label);
+ }
+
public void clear_marks() {
map.clear_marks();
}
JProgressBar pbar;
JLabel site_list_label;
+ java.util.List<AltosLaunchSite> sites;
JComboBox<AltosLaunchSite> site_list;
JToggleButton load_button;
return 1 << AltosMap.maptype_hybrid;
}
+ void add_mark(double lat, double lon, int state, String label) {
+ map.add_mark(lat, lon, state, label);
+ if (lon <= 0)
+ map.add_mark(lat, lon + 360, state, label);
+ if (lon >= 0)
+ map.add_mark(lat, lon - 360, state, label);
+ }
+
+ void reset_marks() {
+ map.clear_marks();
+ AltosLatLon centre = null;
+ String centre_name = null;
+ if (map != null && map.map != null)
+ centre = map.map.centre;
+ for (AltosLaunchSite site : sites) {
+ if (centre != null && centre.lat == site.latitude && centre.lon == site.longitude)
+ centre_name = site.name;
+ else
+ add_mark(site.latitude, site.longitude, AltosLib.ao_flight_main, site.name);
+ }
+ if (centre != null)
+ add_mark(centre.lat, centre.lon, AltosLib.ao_flight_boost, centre_name);
+ }
+
void center_map(double latitude, double longitude) {
map.map.centre(new AltosLatLon(latitude, longitude));
- map.clear_marks();
- map.add_mark(latitude, longitude, AltosLib.ao_flight_boost);
+ reset_marks();
}
void center_map() {
}
public void notify_launch_sites(final java.util.List<AltosLaunchSite> sites) {
+ this.sites = sites;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
int i = 1;
site_list.insertItemAt(site, i);
i++;
}
+ reset_marks();
}
});
}