19 package org.sleuthkit.autopsy.timeline.ui.detailview;
21 import com.google.common.collect.Iterables;
22 import java.util.Arrays;
24 import javafx.event.EventHandler;
25 import javafx.geometry.Pos;
26 import javafx.scene.control.Button;
27 import javafx.scene.control.OverrunStyle;
28 import javafx.scene.input.MouseEvent;
29 import javafx.scene.layout.VBox;
30 import org.controlsfx.control.action.Action;
31 import org.controlsfx.control.action.ActionUtils;
42 final public class EventStripeNode extends MultiEventNodeBase<EventStripe, EventCluster, EventClusterNode> {
60 descrLabel.setTextOverrun(OverrunStyle.CENTER_ELLIPSIS);
61 descrLabel.setPrefWidth(USE_COMPUTED_SIZE);
64 setAlignment(subNodePane, Pos.BOTTOM_LEFT);
66 if (eventStripe.getClusters().size() > 1) {
71 getChildren().addAll(
new VBox(infoHBox, subNodePane));
75 EventCluster cluster = Iterables.getOnlyElement(eventStripe.getClusters()).withParent(eventStripe);
80 EventClusterNode eventClusterNode = (EventClusterNode)
createChildNode(cluster);
81 eventClusterNode.installActionButtons();
82 controlsHBox.getChildren().addAll(eventClusterNode.getNewCollapseButton(), eventClusterNode.getNewExpandButton());
83 eventClusterNode.infoHBox.getChildren().remove(eventClusterNode.countLabel);
84 childNode = eventClusterNode;
90 subNodes.add(childNode);
92 getChildren().addAll(infoHBox, subNodePane);
104 return new HideDescriptionAction(getDescription(),
getEvent().getDescriptionLevel(), chartLane.getParentChart());
109 super.installActionButtons();
110 if (chartLane.quickHideFiltersEnabled() && hideButton == null) {
111 hideButton = ActionUtils.createButton(
newHideAction(), ActionUtils.ActionTextBehavior.HIDE);
112 configureActionButton(hideButton);
114 controlsHBox.getChildren().add(hideButton);
120 Set<Long> eventIDs = cluster.getEventIDs();
121 if (eventIDs.size() == 1) {
124 return new SingleEventNode(getChartLane(), singleDetailEvent,
this);
126 return new EventClusterNode(getChartLane(), cluster,
this);
131 EventHandler<MouseEvent> getDoubleClickHandler() {
132 return mouseEvent -> {
138 Iterable<? extends Action> getActions() {
139 return Iterables.concat(
EventNodeBase<?> createChildNode(EventCluster cluster)
SingleDetailsViewEvent withParent(MultiEvent<?> newParent)
void installActionButtons()
final EventNodeBase<?> parentNode
SortedSet< EventCluster > getClusters()
TimeLineController getController()
EventsModel getEventsModel()
Set< Long > getEventIDs()
TimelineEvent getEventById(Long eventID)