Merge pull request #1950 from millmanorama/TL-internationalize-TreeComparator

internationalize TreeComparator
This commit is contained in:
Richard Cordovano 2016-02-05 11:56:05 -05:00
commit 6dc456c6f1
2 changed files with 34 additions and 5 deletions

View File

@ -21,7 +21,6 @@ package org.sleuthkit.autopsy.timeline.ui.detailview.tree;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Comparator;
import java.util.Objects; import java.util.Objects;
import javafx.beans.InvalidationListener; import javafx.beans.InvalidationListener;
import javafx.beans.Observable; import javafx.beans.Observable;
@ -30,6 +29,7 @@ import javafx.collections.ListChangeListener;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.ComboBox; import javafx.scene.control.ComboBox;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.ListCell;
import javafx.scene.control.SelectionMode; import javafx.scene.control.SelectionMode;
import javafx.scene.control.Tooltip; import javafx.scene.control.Tooltip;
import javafx.scene.control.TreeCell; import javafx.scene.control.TreeCell;
@ -72,7 +72,7 @@ final public class EventsTree extends BorderPane {
private Label eventsTreeLabel; private Label eventsTreeLabel;
@FXML @FXML
private ComboBox<Comparator<TreeItem<EventBundle<?>>>> sortByBox; private ComboBox<TreeComparator> sortByBox;
public EventsTree(TimeLineController controller) { public EventsTree(TimeLineController controller) {
this.controller = controller; this.controller = controller;
@ -128,6 +128,8 @@ final public class EventsTree extends BorderPane {
sortByBox.getItems().setAll(Arrays.asList(TreeComparator.Description, TreeComparator.Count)); sortByBox.getItems().setAll(Arrays.asList(TreeComparator.Description, TreeComparator.Count));
sortByBox.getSelectionModel().select(TreeComparator.Description); sortByBox.getSelectionModel().select(TreeComparator.Description);
sortByBox.setCellFactory(listView -> new TreeComparatorCell());
sortByBox.setButtonCell(new TreeComparatorCell());
sortByBox.getSelectionModel().selectedItemProperty().addListener((Observable o) -> { sortByBox.getSelectionModel().selectedItemProperty().addListener((Observable o) -> {
getRoot().resort(TreeComparator.Type.reversed().thenComparing(sortByBox.getSelectionModel().getSelectedItem()), true); getRoot().resort(TreeComparator.Type.reversed().thenComparing(sortByBox.getSelectionModel().getSelectedItem()), true);
}); });
@ -249,4 +251,17 @@ final public class EventsTree extends BorderPane {
} }
} }
} }
static private class TreeComparatorCell extends ListCell<TreeComparator> {
@Override
protected void updateItem(TreeComparator item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
} else {
setText(item.getDisplayName());
}
}
}
} }

View File

@ -20,27 +20,41 @@ package org.sleuthkit.autopsy.timeline.ui.detailview.tree;
import java.util.Comparator; import java.util.Comparator;
import javafx.scene.control.TreeItem; import javafx.scene.control.TreeItem;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.timeline.datamodel.EventBundle; import org.sleuthkit.autopsy.timeline.datamodel.EventBundle;
import org.sleuthkit.autopsy.timeline.datamodel.eventtype.EventType; import org.sleuthkit.autopsy.timeline.datamodel.eventtype.EventType;
@NbBundle.Messages({"TreeComparator.Description.displayName=Description",
"TreeComparator.Count.displayName=Count",
"TreeComparator.Type.displayName=Type"})
enum TreeComparator implements Comparator<TreeItem<EventBundle<?>>> { enum TreeComparator implements Comparator<TreeItem<EventBundle<?>>> {
Description { Description(Bundle.TreeComparator_Description_displayName()) {
@Override @Override
public int compare(TreeItem<EventBundle<?>> o1, TreeItem<EventBundle<?>> o2) { public int compare(TreeItem<EventBundle<?>> o1, TreeItem<EventBundle<?>> o2) {
return o1.getValue().getDescription().compareTo(o2.getValue().getDescription()); return o1.getValue().getDescription().compareTo(o2.getValue().getDescription());
} }
}, },
Count { Count(Bundle.TreeComparator_Count_displayName()) {
@Override @Override
public int compare(TreeItem<EventBundle<?>> o1, TreeItem<EventBundle<?>> o2) { public int compare(TreeItem<EventBundle<?>> o1, TreeItem<EventBundle<?>> o2) {
return Long.compare(o2.getValue().getCount(), o1.getValue().getCount()); return Long.compare(o2.getValue().getCount(), o1.getValue().getCount());
} }
}, },
Type { Type(Bundle.TreeComparator_Type_displayName()) {
@Override @Override
public int compare(TreeItem<EventBundle<?>> o1, TreeItem<EventBundle<?>> o2) { public int compare(TreeItem<EventBundle<?>> o1, TreeItem<EventBundle<?>> o2) {
return EventType.getComparator().compare(o1.getValue().getEventType(), o2.getValue().getEventType()); return EventType.getComparator().compare(o1.getValue().getEventType(), o2.getValue().getEventType());
} }
}; };
private final String displayName;
private TreeComparator(String displayName) {
this.displayName = displayName;
}
public String getDisplayName() {
return displayName;
}
} }