mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-16 17:57:43 +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();
|
||||
} else {
|
||||
|
||||
setViewMode(ViewMode.LIST);
|
||||
List<Long> eventIDs = filteredEvents.getDerivedEventIDs(fileIDs, artifactIDS);
|
||||
|
||||
Interval interval = filteredEvents.getSpanningInterval(eventIDs);
|
||||
|
||||
synchronized (filteredEvents) {
|
||||
List<Long> eventIDs = filteredEvents.getDerivedEventIDs(fileIDs, artifactIDS);
|
||||
Interval interval = filteredEvents.getSpanningInterval(eventIDs);
|
||||
pushTimeRange(interval);
|
||||
selectEventIDs(eventIDs, () -> setViewMode(ViewMode.LIST));
|
||||
}
|
||||
Platform.runLater(() -> selectEventIDs(eventIDs));
|
||||
|
||||
}
|
||||
}
|
||||
@ -641,6 +638,12 @@ public class TimeLineController {
|
||||
}
|
||||
|
||||
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
|
||||
@Override
|
||||
protected Interval call() throws Exception {
|
||||
@ -654,7 +657,7 @@ public class TimeLineController {
|
||||
synchronized (TimeLineController.this) {
|
||||
selectedTimeRange.set(get());
|
||||
selectedEventIDs.setAll(events);
|
||||
|
||||
andThen.run();
|
||||
}
|
||||
} catch (InterruptedException | ExecutionException ex) {
|
||||
LOGGER.log(Level.SEVERE, getTitle() + " Unexpected error", ex); //NON-NLS
|
||||
|
@ -182,24 +182,29 @@ class ListTimeline extends BorderPane {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
|
||||
//keep controller's list of selected event IDs in sync with this list's
|
||||
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()
|
||||
.filter(Objects::nonNull)
|
||||
.map(CombinedEvent::getRepresentativeEventID)
|
||||
.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) -> {
|
||||
Set<CombinedEvent> selectedCombinedEvents = table.getItems().stream()
|
||||
.filter(combinedEvent -> combinedEvent.getEventIDs().stream().anyMatch(controller.getSelectedEventIDs()::contains))
|
||||
.collect(Collectors.toSet());
|
||||
selectEvents(selectedCombinedEvents);
|
||||
selectEvents(collect);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -94,7 +94,7 @@ public class ListViewPane extends AbstractTimeLineView {
|
||||
Platform.runLater(() -> {
|
||||
//put the combined events into the table.
|
||||
listTimeline.setCombinedEvents(combinedEvents);
|
||||
//restore the selected event
|
||||
//restore the selected events
|
||||
listTimeline.selectEvents(selectedEvents);
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user