mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-15 01:07:42 +00:00
more fixes to tooltips
This commit is contained in:
parent
d7dc55cdd5
commit
e95e8b785e
@ -77,8 +77,12 @@ import org.sleuthkit.autopsy.timeline.events.RefreshRequestedEvent;
|
||||
*/
|
||||
public abstract class AbstractVisualizationPane<X, Y, N, C extends XYChart<X, Y> & TimeLineChart<X>> extends BorderPane implements TimeLineView {
|
||||
|
||||
@NbBundle.Messages("AbstractVisualizationPane.Drag_Tooltip.text=Drag the mouse to select a time interval to zoom into.")
|
||||
protected static final Tooltip DRAG_TOOLTIP = new Tooltip(Bundle.AbstractVisualizationPane_Drag_Tooltip_text());
|
||||
@NbBundle.Messages("AbstractVisualization.Drag_Tooltip.text=Drag the mouse to select a time interval to zoom into.")
|
||||
private static final Tooltip DRAG_TOOLTIP = new Tooltip(Bundle.AbstractVisualization_Drag_Tooltip_text());
|
||||
|
||||
public static Tooltip getDragTooltip() {
|
||||
return DRAG_TOOLTIP;
|
||||
}
|
||||
|
||||
protected final SimpleBooleanProperty hasEvents = new SimpleBooleanProperty(true);
|
||||
|
||||
@ -243,7 +247,7 @@ public abstract class AbstractVisualizationPane<X, Y, N, C extends XYChart<X, Y>
|
||||
update();
|
||||
});
|
||||
|
||||
hoverProperty().addListener((observable, oldActivated, newActivated) -> {
|
||||
hoverProperty().addListener((observable, oldActivated, newActivated) -> {
|
||||
if (newActivated) {
|
||||
controller.setStatus(DRAG_TOOLTIP.getText());
|
||||
} else {
|
||||
|
@ -91,11 +91,8 @@ import org.sleuthkit.autopsy.timeline.utils.RangeDivisionInfo;
|
||||
|
||||
/**
|
||||
* A Container for an {@link AbstractVisualizationPane}, has a toolbar on top to
|
||||
* hold settings widgets supplied by contained {@link AbstractVisualizationPane},
|
||||
* and the histogram / timeselection on bottom. Also supplies containers for
|
||||
* replacement axis to contained {@link AbstractVisualizationPane}
|
||||
*
|
||||
* TODO: refactor common code out of histogram and CountsView? -jm
|
||||
* hold settings widgets supplied by contained {@link AbstAbstractVisualization* and the histogram / timeselection on bottom. Also supplies containers for
|
||||
* replacement axis to contained {@link AbstractAbstractVisualizationTODO: refactor common code out of histogram and CountsView? -jm
|
||||
*/
|
||||
public class VisualizationPanel extends BorderPane implements TimeLineView {
|
||||
|
||||
@ -109,7 +106,7 @@ public class VisualizationPanel extends BorderPane implements TimeLineView {
|
||||
|
||||
private final NavPanel navPanel;
|
||||
|
||||
private AbstractVisualizationPane<?, ?, ?, ?> visualization;
|
||||
private AbstractVisualizationPane visualization;
|
||||
|
||||
//// range slider and histogram componenets
|
||||
@FXML
|
||||
@ -178,8 +175,8 @@ public class VisualizationPanel extends BorderPane implements TimeLineView {
|
||||
|
||||
private FilteredEventsModel filteredEvents;
|
||||
|
||||
private final ChangeListener<Object> rangeSliderListener
|
||||
= (observable1, oldValue, newValue) -> {
|
||||
private final ChangeListener<Object> rangeSliderListener =
|
||||
(observable1, oldValue, newValue) -> {
|
||||
if (rangeSlider.isHighValueChanging() == false && rangeSlider.isLowValueChanging() == false) {
|
||||
Long minTime = filteredEvents.getMinTime() * 1000;
|
||||
controller.pushTimeRange(new Interval(
|
||||
@ -377,7 +374,7 @@ public class VisualizationPanel extends BorderPane implements TimeLineView {
|
||||
if (visualization instanceof DetailViewPane) {
|
||||
navPanel.setDetailViewPane((DetailViewPane) visualization);
|
||||
}
|
||||
visualization.hasEvents.addListener((ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) -> {
|
||||
visualization.hasEvents.addListener((observable, oldValue, newValue) -> {
|
||||
if (newValue == false) {
|
||||
|
||||
notificationPane.setContent(new StackPane(visualization, new Region() {
|
||||
|
@ -285,7 +285,8 @@ public class CountsViewPane extends AbstractVisualizationPane<String, Number, No
|
||||
setChartClickHandler();
|
||||
chart.setData(dataSets);
|
||||
setCenter(chart);
|
||||
Tooltip.install(chart, DRAG_TOOLTIP);
|
||||
|
||||
Tooltip.install(chart, getDragTooltip());
|
||||
|
||||
settingsNodes = new ArrayList<>(new CountsViewSettingsPane().getChildrenUnmodifiable());
|
||||
|
||||
|
@ -120,7 +120,7 @@ public class DetailViewPane extends AbstractVisualizationPane<DateTime, EventClu
|
||||
chart.setData(dataSets);
|
||||
setCenter(chart);
|
||||
|
||||
// Tooltip.install(chart, DRAG_TOOLTIP);
|
||||
|
||||
chart.setPrefHeight(USE_COMPUTED_SIZE);
|
||||
|
||||
settingsNodes = new ArrayList<>(new DetailViewSettingsPane().getChildrenUnmodifiable());
|
||||
|
@ -64,6 +64,7 @@ import org.sleuthkit.autopsy.timeline.datamodel.EventBundle;
|
||||
import org.sleuthkit.autopsy.timeline.datamodel.FilteredEventsModel;
|
||||
import org.sleuthkit.autopsy.timeline.datamodel.TimeLineEvent;
|
||||
import org.sleuthkit.autopsy.timeline.datamodel.eventtype.EventType;
|
||||
import org.sleuthkit.autopsy.timeline.ui.AbstractVisualizationPane;
|
||||
import static org.sleuthkit.autopsy.timeline.ui.detailview.EventBundleNodeBase.show;
|
||||
import org.sleuthkit.autopsy.timeline.zooming.DescriptionLoD;
|
||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||
@ -169,19 +170,29 @@ public abstract class EventBundleNodeBase<BundleType extends EventBundle<ParentT
|
||||
//set up mouse hover effect and tooltip
|
||||
setOnMouseEntered((MouseEvent e) -> {
|
||||
/*
|
||||
* defer tooltip creation till needed, this had a surprisingly large
|
||||
* impact on speed of loading the chart
|
||||
* defer tooltip content creation till needed, this had a
|
||||
* surprisingly large impact on speed of loading the chart
|
||||
*/
|
||||
installTooltip();
|
||||
Tooltip.uninstall(chart, AbstractVisualizationPane.getDragTooltip());
|
||||
showHoverControls(true);
|
||||
toFront();
|
||||
|
||||
});
|
||||
setOnMouseExited((MouseEvent event) -> {
|
||||
showHoverControls(false);
|
||||
if (parentNode != null) {
|
||||
parentNode.showHoverControls(true);
|
||||
} else {
|
||||
Tooltip.install(chart, AbstractVisualizationPane.getDragTooltip());
|
||||
}
|
||||
});
|
||||
|
||||
setDescriptionVisibility(DescriptionVisibility.SHOWN);
|
||||
descVisibility.addListener((ObservableValue<? extends DescriptionVisibility> observable, DescriptionVisibility oldValue, DescriptionVisibility newValue) -> {
|
||||
setDescriptionVisibility(newValue);
|
||||
});
|
||||
setDescriptionVisibility(DescriptionVisibility.SHOWN);
|
||||
|
||||
}
|
||||
|
||||
final DescriptionLoD getDescriptionLoD() {
|
||||
@ -284,7 +295,7 @@ public abstract class EventBundleNodeBase<BundleType extends EventBundle<ParentT
|
||||
return subNodes;
|
||||
}
|
||||
|
||||
abstract void setDescriptionVisibility(DescriptionVisibility get);
|
||||
abstract void setDescriptionVisibiltiyImpl(DescriptionVisibility get);
|
||||
|
||||
void showHoverControls(final boolean showControls) {
|
||||
Effect dropShadow = dropShadowMap.computeIfAbsent(getEventType(),
|
||||
@ -295,6 +306,7 @@ public abstract class EventBundleNodeBase<BundleType extends EventBundle<ParentT
|
||||
parentNode.enableTooltip(false);
|
||||
parentNode.showHoverControls(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
final EventType getEventType() {
|
||||
@ -328,16 +340,15 @@ public abstract class EventBundleNodeBase<BundleType extends EventBundle<ParentT
|
||||
*/
|
||||
abstract void setDescriptionWidth(double w);
|
||||
|
||||
void setDescriptionVisibilityLevel(DescriptionVisibility get) {
|
||||
void setDescriptionVisibility(DescriptionVisibility get) {
|
||||
descVisibility.set(get);
|
||||
}
|
||||
|
||||
void enableTooltip(boolean b) {
|
||||
if (b) {
|
||||
void enableTooltip(boolean toolTipEnabled) {
|
||||
if (toolTipEnabled) {
|
||||
Tooltip.install(this, tooltip);
|
||||
} else {
|
||||
Tooltip.uninstall(this, tooltip);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -53,6 +53,7 @@ import javafx.scene.chart.Axis;
|
||||
import javafx.scene.chart.NumberAxis;
|
||||
import javafx.scene.chart.XYChart;
|
||||
import javafx.scene.control.ContextMenu;
|
||||
import javafx.scene.control.Tooltip;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.scene.image.ImageView;
|
||||
import javafx.scene.input.MouseButton;
|
||||
@ -74,6 +75,7 @@ import org.sleuthkit.autopsy.timeline.datamodel.FilteredEventsModel;
|
||||
import org.sleuthkit.autopsy.timeline.datamodel.eventtype.EventType;
|
||||
import org.sleuthkit.autopsy.timeline.filters.AbstractFilter;
|
||||
import org.sleuthkit.autopsy.timeline.filters.DescriptionFilter;
|
||||
import org.sleuthkit.autopsy.timeline.ui.AbstractVisualizationPane;
|
||||
import org.sleuthkit.autopsy.timeline.ui.IntervalSelector;
|
||||
import org.sleuthkit.autopsy.timeline.ui.TimeLineChart;
|
||||
import org.sleuthkit.autopsy.timeline.zooming.DescriptionLoD;
|
||||
@ -184,6 +186,8 @@ public final class EventDetailChart extends XYChart<DateTime, EventCluster> impl
|
||||
|
||||
EventDetailChart(DateAxis dateAxis, final Axis<EventCluster> verticalAxis, ObservableList<EventBundleNodeBase<?, ?, ?>> selectedNodes) {
|
||||
super(dateAxis, verticalAxis);
|
||||
Tooltip.install(this, AbstractVisualizationPane.getDragTooltip());
|
||||
|
||||
dateAxis.setAutoRanging(false);
|
||||
|
||||
verticalAxis.setVisible(false);//TODO: why doesn't this hide the vertical axis, instead we have to turn off all parts individually? -jm
|
||||
@ -496,7 +500,7 @@ public final class EventDetailChart extends XYChart<DateTime, EventCluster> impl
|
||||
bundleNode.setVisible(true);
|
||||
bundleNode.setManaged(true);
|
||||
//apply advanced layout description visibility options
|
||||
bundleNode.setDescriptionVisibilityLevel(descrVisibility.get());
|
||||
bundleNode.setDescriptionVisibility(descrVisibility.get());
|
||||
bundleNode.setDescriptionWidth(truncateAll.get() ? truncateWidth.get() : USE_PREF_SIZE);
|
||||
|
||||
//do recursive layout
|
||||
|
Loading…
x
Reference in New Issue
Block a user