mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-12 16:06:15 +00:00
Merge pull request #5509 from kellykelly3/5885-geolocation-suck-drag-cursor
5898 & 5885 geolocation stuck drag cursor
This commit is contained in:
commit
a7c78b687d
@ -194,6 +194,7 @@ public final class GeolocationTopComponent extends TopComponent {
|
|||||||
@Override
|
@Override
|
||||||
public void open() {
|
public void open() {
|
||||||
super.open();
|
super.open();
|
||||||
|
mapPanel.clearWaypoints();
|
||||||
geoFilterPanel.clearDataSourceList();
|
geoFilterPanel.clearDataSourceList();
|
||||||
geoFilterPanel.updateDataSourceList();
|
geoFilterPanel.updateDataSourceList();
|
||||||
try {
|
try {
|
||||||
@ -288,7 +289,7 @@ public final class GeolocationTopComponent extends TopComponent {
|
|||||||
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy-HH-mm-ss", Locale.US);
|
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy-HH-mm-ss", Locale.US);
|
||||||
Date date = new Date();
|
Date date = new Date();
|
||||||
String dateNoTime = dateFormat.format(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.
|
// Create the root reports directory.
|
||||||
try {
|
try {
|
||||||
FileUtil.createFolder(new File(reportPath));
|
FileUtil.createFolder(new File(reportPath));
|
||||||
|
115
Core/src/org/sleuthkit/autopsy/geolocation/MapPanMouseInputListener.java
Executable file
115
Core/src/org/sleuthkit/autopsy/geolocation/MapPanMouseInputListener.java
Executable 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -26,7 +26,6 @@ import java.awt.event.ActionEvent;
|
|||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.ComponentAdapter;
|
import java.awt.event.ComponentAdapter;
|
||||||
import java.awt.event.ComponentEvent;
|
import java.awt.event.ComponentEvent;
|
||||||
import java.awt.event.MouseEvent;
|
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
@ -54,7 +53,6 @@ import org.jxmapviewer.JXMapViewer;
|
|||||||
import org.jxmapviewer.OSMTileFactoryInfo;
|
import org.jxmapviewer.OSMTileFactoryInfo;
|
||||||
import org.jxmapviewer.VirtualEarthTileFactoryInfo;
|
import org.jxmapviewer.VirtualEarthTileFactoryInfo;
|
||||||
import org.jxmapviewer.input.CenterMapListener;
|
import org.jxmapviewer.input.CenterMapListener;
|
||||||
import org.jxmapviewer.input.PanMouseInputListener;
|
|
||||||
import org.jxmapviewer.input.ZoomMouseWheelListenerCursor;
|
import org.jxmapviewer.input.ZoomMouseWheelListenerCursor;
|
||||||
import org.jxmapviewer.viewer.DefaultTileFactory;
|
import org.jxmapviewer.viewer.DefaultTileFactory;
|
||||||
import org.jxmapviewer.viewer.GeoPosition;
|
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);
|
mapViewer.setTileFactory(tileFactory);
|
||||||
|
|
||||||
// Add Mouse interactions
|
// Add Mouse interactions
|
||||||
MouseInputListener mia = new PanMouseInputListener(mapViewer);
|
MouseInputListener mia = new MapPanMouseInputListener(mapViewer);
|
||||||
mapViewer.addMouseListener(mia);
|
mapViewer.addMouseListener(mia);
|
||||||
mapViewer.addMouseMotionListener(mia);
|
mapViewer.addMouseMotionListener(mia);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user