mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-17 02:07:42 +00:00
there is still a timing issue preventing the selection from getting picked up in the ListView
This commit is contained in:
parent
05416c603f
commit
e53469de17
@ -485,15 +485,12 @@ public class TimeLineController {
|
|||||||
showFullRange();
|
showFullRange();
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
setViewMode(ViewMode.LIST);
|
|
||||||
List<Long> eventIDs = filteredEvents.getDerivedEventIDs(fileIDs, artifactIDS);
|
|
||||||
|
|
||||||
Interval interval = filteredEvents.getSpanningInterval(eventIDs);
|
|
||||||
|
|
||||||
synchronized (filteredEvents) {
|
synchronized (filteredEvents) {
|
||||||
|
List<Long> eventIDs = filteredEvents.getDerivedEventIDs(fileIDs, artifactIDS);
|
||||||
|
Interval interval = filteredEvents.getSpanningInterval(eventIDs);
|
||||||
pushTimeRange(interval);
|
pushTimeRange(interval);
|
||||||
|
selectEventIDs(eventIDs, () -> setViewMode(ViewMode.LIST));
|
||||||
}
|
}
|
||||||
Platform.runLater(() -> selectEventIDs(eventIDs));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -641,6 +638,12 @@ public class TimeLineController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void selectEventIDs(Collection<Long> events) {
|
public void selectEventIDs(Collection<Long> events) {
|
||||||
|
selectEventIDs(events, () -> {
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void selectEventIDs(Collection<Long> events, Runnable andThen) {
|
||||||
final LoggedTask<Interval> selectEventIDsTask = new LoggedTask<Interval>("Select Event IDs", true) { //NON-NLS
|
final LoggedTask<Interval> selectEventIDsTask = new LoggedTask<Interval>("Select Event IDs", true) { //NON-NLS
|
||||||
@Override
|
@Override
|
||||||
protected Interval call() throws Exception {
|
protected Interval call() throws Exception {
|
||||||
@ -654,7 +657,7 @@ public class TimeLineController {
|
|||||||
synchronized (TimeLineController.this) {
|
synchronized (TimeLineController.this) {
|
||||||
selectedTimeRange.set(get());
|
selectedTimeRange.set(get());
|
||||||
selectedEventIDs.setAll(events);
|
selectedEventIDs.setAll(events);
|
||||||
|
andThen.run();
|
||||||
}
|
}
|
||||||
} catch (InterruptedException | ExecutionException ex) {
|
} catch (InterruptedException | ExecutionException ex) {
|
||||||
LOGGER.log(Level.SEVERE, getTitle() + " Unexpected error", ex); //NON-NLS
|
LOGGER.log(Level.SEVERE, getTitle() + " Unexpected error", ex); //NON-NLS
|
||||||
|
@ -182,24 +182,29 @@ class ListTimeline extends BorderPane {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
|
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
|
||||||
//keep controller's list of selected event IDs in sync with this list's
|
//keep controller's list of selected event IDs in sync with this list's
|
||||||
table.getSelectionModel().getSelectedItems().addListener((Observable change) -> {
|
table.getSelectionModel().getSelectedItems().addListener((Observable change) -> {
|
||||||
// keep the selectedEventsIDs in sync with the table's selection model, via getRepresentitiveEventID().
|
//keep the selectedEventsIDs in sync with the table's selection model, via getRepresentitiveEventID().
|
||||||
controller.selectEventIDs(table.getSelectionModel().getSelectedItems().stream()
|
controller.selectEventIDs(table.getSelectionModel().getSelectedItems().stream()
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
.map(CombinedEvent::getRepresentativeEventID)
|
.map(CombinedEvent::getRepresentativeEventID)
|
||||||
.collect(Collectors.toSet()));
|
.collect(Collectors.toSet()));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Platform.runLater(new Runnable() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Set<CombinedEvent> collect = table.getItems().stream()
|
||||||
|
.filter(combinedEvent -> combinedEvent.getEventIDs().stream().anyMatch(controller.getSelectedEventIDs()::contains))
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
controller.getSelectedEventIDs().addListener((Observable change) -> {
|
selectEvents(collect);
|
||||||
Set<CombinedEvent> selectedCombinedEvents = table.getItems().stream()
|
}
|
||||||
.filter(combinedEvent -> combinedEvent.getEventIDs().stream().anyMatch(controller.getSelectedEventIDs()::contains))
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
selectEvents(selectedCombinedEvents);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -94,7 +94,7 @@ public class ListViewPane extends AbstractTimeLineView {
|
|||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
//put the combined events into the table.
|
//put the combined events into the table.
|
||||||
listTimeline.setCombinedEvents(combinedEvents);
|
listTimeline.setCombinedEvents(combinedEvents);
|
||||||
//restore the selected event
|
//restore the selected events
|
||||||
listTimeline.selectEvents(selectedEvents);
|
listTimeline.selectEvents(selectedEvents);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user