Merge pull request #5509 from kellykelly3/5885-geolocation-suck-drag-cursor

5898 & 5885 geolocation stuck drag cursor
This commit is contained in:
Richard Cordovano 2019-12-17 15:02:08 -05:00 committed by GitHub
commit a7c78b687d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 120 additions and 4 deletions

View File

@ -194,6 +194,7 @@ public final class GeolocationTopComponent extends TopComponent {
@Override
public void open() {
super.open();
mapPanel.clearWaypoints();
geoFilterPanel.clearDataSourceList();
geoFilterPanel.updateDataSourceList();
try {
@ -288,7 +289,7 @@ public final class GeolocationTopComponent extends TopComponent {
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy-HH-mm-ss", Locale.US);
Date date = new Date();
String dateNoTime = dateFormat.format(date);
String reportPath = String.format(REPORT_PATH_FMT_STR, currentCase.getReportDirectory(), currentCase.getDisplayName(), "Goggle Earth KML", dateNoTime);
String reportPath = String.format(REPORT_PATH_FMT_STR, currentCase.getReportDirectory(), currentCase.getDisplayName(), "Google Earth KML", dateNoTime);
// Create the root reports directory.
try {
FileUtil.createFolder(new File(reportPath));

View File

@ -0,0 +1,115 @@
/*
* Autopsy Forensic Browser
*
* Copyright 2019 Basis Technology Corp.
* Contact: carrier <at> sleuthkit <dot> org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.sleuthkit.autopsy.geolocation;
import java.awt.Cursor;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.geom.Point2D;
import javax.swing.SwingUtilities;
import javax.swing.event.MouseInputAdapter;
import org.jxmapviewer.JXMapViewer;
/**
* MouseInputListener for panning a JXMapViewer
*
* This class is adapted from org.jxmapviewer.input.PanMouseInputListener.
*/
final class MapPanMouseInputListener extends MouseInputAdapter {
private Point prev;
private final JXMapViewer viewer;
private Cursor priorCursor;
private boolean dragging = false;
/**
* Construct a new listener.
*
* @param viewer
*/
MapPanMouseInputListener(JXMapViewer viewer) {
this.viewer = viewer;
}
@Override
public void mousePressed(MouseEvent evt) {
if (!SwingUtilities.isLeftMouseButton(evt)) {
return;
}
if (!viewer.isPanningEnabled()) {
return;
}
// Store the current click point and current cursor
prev = evt.getPoint();
priorCursor = viewer.getCursor();
}
@Override
public void mouseDragged(MouseEvent evt) {
if (!SwingUtilities.isLeftMouseButton(evt)) {
return;
}
if (!viewer.isPanningEnabled()) {
return;
}
// If the map wasn't previously being dragged, set the cursor
if (!dragging) {
viewer.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
dragging = true;
}
// Figure out the new map center
Point current = evt.getPoint();
double x = viewer.getCenter().getX();
double y = viewer.getCenter().getY();
if (prev != null) {
x += prev.x - current.x;
y += prev.y - current.y;
}
int maxHeight = (int) (viewer.getTileFactory().getMapSize(viewer.getZoom()).getHeight() * viewer
.getTileFactory().getTileSize(viewer.getZoom()));
if (y > maxHeight) {
y = maxHeight;
}
prev = current;
viewer.setCenter(new Point2D.Double(x, y));
viewer.repaint();
}
@Override
public void mouseReleased(MouseEvent evt) {
if (!SwingUtilities.isLeftMouseButton(evt)) {
return;
}
prev = null;
// If we were dragging set the cursor back
if (dragging) {
viewer.setCursor(priorCursor);
dragging = false;
}
}
}

View File

@ -26,7 +26,6 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseEvent;
import java.awt.geom.Point2D;
import java.awt.image.BufferedImage;
import java.beans.PropertyChangeEvent;
@ -54,7 +53,6 @@ import org.jxmapviewer.JXMapViewer;
import org.jxmapviewer.OSMTileFactoryInfo;
import org.jxmapviewer.VirtualEarthTileFactoryInfo;
import org.jxmapviewer.input.CenterMapListener;
import org.jxmapviewer.input.PanMouseInputListener;
import org.jxmapviewer.input.ZoomMouseWheelListenerCursor;
import org.jxmapviewer.viewer.DefaultTileFactory;
import org.jxmapviewer.viewer.GeoPosition;
@ -140,6 +138,8 @@ final public class MapPanel extends javax.swing.JPanel {
}
}
});
}
/**
@ -172,7 +172,7 @@ final public class MapPanel extends javax.swing.JPanel {
mapViewer.setTileFactory(tileFactory);
// Add Mouse interactions
MouseInputListener mia = new PanMouseInputListener(mapViewer);
MouseInputListener mia = new MapPanMouseInputListener(mapViewer);
mapViewer.addMouseListener(mia);
mapViewer.addMouseMotionListener(mia);