/** * Callback for the OsmMapControl. (Re-)Sets the start and end point of the selection rectangle. * * @param aStart * @param aEnd */ public void setSelection(Point aStart, Point aEnd) { if (aStart == null || aEnd == null || aStart.x == aEnd.x || aStart.y == aEnd.y) return; Point p_max = new Point(Math.max(aEnd.x, aStart.x), Math.max(aEnd.y, aStart.y)); Point p_min = new Point(Math.min(aEnd.x, aStart.x), Math.min(aEnd.y, aStart.y)); Point tlc = getTopLeftCoordinates(); int zoomDiff = MAX_ZOOM - zoom; Point pEnd = new Point(p_max.x + tlc.x, p_max.y + tlc.y); Point pStart = new Point(p_min.x + tlc.x, p_min.y + tlc.y); pEnd.x <<= zoomDiff; pEnd.y <<= zoomDiff; pStart.x <<= zoomDiff; pStart.y <<= zoomDiff; iSelectionRectStart = pStart; iSelectionRectEnd = pEnd; Coordinate l1 = getPosition(p_max); Coordinate l2 = getPosition(p_min); Bounds b = new Bounds( new LatLon(Math.min(l2.getLat(), l1.getLat()), Math.min(l1.getLon(), l2.getLon())), new LatLon(Math.max(l2.getLat(), l1.getLat()), Math.max(l1.getLon(), l2.getLon()))); Bounds oldValue = this.bbox; this.bbox = b; firePropertyChange(BBOX_PROP, oldValue, this.bbox); repaint(); }
/** * Constructor * * @param flightCoords Coordinates of the flight * @param firstSegmentOffset Offset that will be added to the flight's coordinates for the first * segment */ public FlightCreateDialogController( final Coordinate flightCoords, final Coordinate firstSegmentOffset) { this.firstSegmentOffset = firstSegmentOffset; // Load all aircrafts OperationalZoneActions action = new OperationalZoneActions(); final List<Aircraft> aircrafts = action.fetchAllAircrafts(); // Make sure the dialog is created and populated in the EDT if (SwingUtilities.isEventDispatchThread()) { this.createDialog(aircrafts, flightCoords.getLat(), flightCoords.getLon()); } else { SwingUtilities.invokeLater( new Runnable() { @Override public void run() { FlightCreateDialogController.this.createDialog( aircrafts, flightCoords.getLat(), flightCoords.getLon()); } }); } }