public final void refresh() {
Set<Long> newSelectedEventIDs = new HashSet<>(controller.getSelectedEventIDs());
if (selectedEventIDs.equals(newSelectedEventIDs) == false) {
selectedEventIDs = newSelectedEventIDs;
final EventRootNode root = new EventRootNode(
NbBundle.getMessage(this.getClass(), "Timeline.node.root"), selectedEventIDs,
filteredEvents);
//this must be in edt or exception is thrown
SwingUtilities.invokeLater(() -> {