19 package org.sleuthkit.autopsy.corecomponents;
21 import java.util.ArrayList;
22 import java.util.List;
23 import org.openide.nodes.Node;
24 import org.openide.util.NbBundle;
32 final class SortChooser
extends javax.swing.JPanel {
37 private final List<Node.Property<?>> availableProps;
43 private final ArrayList<CriterionChooser> choosers =
new ArrayList<>();
51 SortChooser(List<Node.Property<?>> availableProps, List<SortCriterion> criteria) {
55 this.availableProps = availableProps;
56 criteria.forEach(this::addCriterionChooser);
64 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
65 List<SortCriterion> getCriteria() {
66 List<SortCriterion> list =
new ArrayList<>();
67 for (
int i = 0; i < choosers.size(); i++) {
68 list.add(choosers.get(i).getCriterion(i));
73 @NbBundle.Messages({
"SortChooser.dialogTitle=Choose Sort Criteria"})
74 String getDialogTitle() {
75 return Bundle.SortChooser_dialogTitle();
83 @SuppressWarnings(
"unchecked")
85 private
void initComponents() {
87 jScrollPane1 =
new javax.swing.JScrollPane();
88 scrollContent =
new javax.swing.JPanel();
89 addCriteriaButton =
new javax.swing.JButton();
91 scrollContent.setLayout(
new javax.swing.BoxLayout(scrollContent, javax.swing.BoxLayout.Y_AXIS));
92 jScrollPane1.setViewportView(scrollContent);
94 org.openide.awt.Mnemonics.setLocalizedText(addCriteriaButton,
org.openide.util.NbBundle.getMessage(SortChooser.class,
"SortChooser.addCriteriaButton.text"));
95 addCriteriaButton.addActionListener(
new java.awt.event.ActionListener() {
96 public void actionPerformed(java.awt.event.ActionEvent evt) {
97 addCriteriaButtonActionPerformed(evt);
101 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
102 this.setLayout(layout);
103 layout.setHorizontalGroup(
104 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
105 .addGroup(layout.createSequentialGroup()
107 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
108 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
109 .addGroup(layout.createSequentialGroup()
110 .addComponent(addCriteriaButton)
111 .addGap(0, 0, Short.MAX_VALUE)))
114 layout.setVerticalGroup(
115 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
116 .addGroup(layout.createSequentialGroup()
118 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)
119 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
120 .addComponent(addCriteriaButton)
126 private void addCriteriaButtonActionPerformed(java.awt.event.ActionEvent evt) {
127 addCriterionChooser(null);
137 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
138 private
void addCriterionChooser(SortCriterion criterion) {
139 final CriterionChooser chooser =
new CriterionChooser(criterion, availableProps, this::removeCriterionChooser);
140 choosers.add(chooser);
141 scrollContent.add(chooser);
150 @ThreadConfined(type = ThreadConfined.ThreadType.AWT)
151 private
void removeCriterionChooser(CriterionChooser chooser) {
152 choosers.remove(chooser);
153 scrollContent.remove(chooser);
160 private javax.swing.JButton addCriteriaButton;
161 private javax.swing.JScrollPane jScrollPane1;
162 private javax.swing.JPanel scrollContent;