Autopsy  4.10.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
SelectMultiUserCasesPanel.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2019 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.keywordsearch.multicase;
20 
21 import java.beans.PropertyVetoException;
22 import java.util.ArrayList;
23 import java.util.List;
24 import java.util.stream.Collectors;
25 import java.util.stream.Stream;
26 import javax.swing.JDialog;
27 import org.openide.explorer.ExplorerManager;
28 import org.openide.nodes.Node;
32 
36 class SelectMultiUserCasesPanel extends javax.swing.JPanel {
37 
38  private static final long serialVersionUID = 1L;
39  private final JDialog parentDialog;
40  private final MultiUserCasesBrowserPanel caseBrowserPanel;
41  private final List<ChangeListener> listeners;
42 
50  SelectMultiUserCasesPanel(JDialog parentDialog) {
51  initComponents();
52  this.parentDialog = parentDialog;
53  initComponents(); // Machine generated code
54  caseBrowserPanel = new MultiUserCasesBrowserPanel(new ExplorerManager(), new SelectMultiUserCaseDialogCustomizer());
55  multiUserCaseScrollPane.add(caseBrowserPanel);
56  multiUserCaseScrollPane.setViewportView(caseBrowserPanel);
57  listeners = new ArrayList<>();
58  }
59 
64  void refreshDisplay() {
65  caseBrowserPanel.displayCases();
66  }
67 
73  void subscribeToNewCaseSelections(ChangeListener listener) {
74  listeners.add(listener);
75  }
76 
84  void setSelections(Node[] selections) throws PropertyVetoException {
85  caseBrowserPanel.getExplorerManager().setSelectedNodes(selections);
86  caseBrowserPanel.requestFocus();
87  }
88 
94  @SuppressWarnings("unchecked")
95  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
96  private void initComponents() {
97 
98  multiUserCaseScrollPane = new javax.swing.JScrollPane();
99  selectAllButton = new javax.swing.JButton();
100  deselectAllButton = new javax.swing.JButton();
101  jLabel1 = new javax.swing.JLabel();
102  confirmSelections = new javax.swing.JButton();
103  cancelButton = new javax.swing.JButton();
104  refreshButton = new javax.swing.JButton();
105 
106  org.openide.awt.Mnemonics.setLocalizedText(selectAllButton, org.openide.util.NbBundle.getMessage(SelectMultiUserCasesPanel.class, "SelectMultiUserCasesPanel.selectAllButton.text")); // NOI18N
107  selectAllButton.addActionListener(new java.awt.event.ActionListener() {
108  public void actionPerformed(java.awt.event.ActionEvent evt) {
109  selectAllButtonActionPerformed(evt);
110  }
111  });
112 
113  org.openide.awt.Mnemonics.setLocalizedText(deselectAllButton, org.openide.util.NbBundle.getMessage(SelectMultiUserCasesPanel.class, "SelectMultiUserCasesPanel.deselectAllButton.text")); // NOI18N
114  deselectAllButton.addActionListener(new java.awt.event.ActionListener() {
115  public void actionPerformed(java.awt.event.ActionEvent evt) {
116  deselectAllButtonActionPerformed(evt);
117  }
118  });
119 
120  org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(SelectMultiUserCasesPanel.class, "SelectMultiUserCasesPanel.jLabel1.text")); // NOI18N
121 
122  org.openide.awt.Mnemonics.setLocalizedText(confirmSelections, org.openide.util.NbBundle.getMessage(SelectMultiUserCasesPanel.class, "SelectMultiUserCasesPanel.confirmSelections.text")); // NOI18N
123  confirmSelections.addActionListener(new java.awt.event.ActionListener() {
124  public void actionPerformed(java.awt.event.ActionEvent evt) {
125  confirmSelectionsActionPerformed(evt);
126  }
127  });
128 
129  org.openide.awt.Mnemonics.setLocalizedText(cancelButton, org.openide.util.NbBundle.getMessage(SelectMultiUserCasesPanel.class, "SelectMultiUserCasesPanel.cancelButton.text")); // NOI18N
130  cancelButton.addActionListener(new java.awt.event.ActionListener() {
131  public void actionPerformed(java.awt.event.ActionEvent evt) {
132  cancelButtonActionPerformed(evt);
133  }
134  });
135 
136  org.openide.awt.Mnemonics.setLocalizedText(refreshButton, org.openide.util.NbBundle.getMessage(SelectMultiUserCasesPanel.class, "SelectMultiUserCasesPanel.refreshButton.text")); // NOI18N
137  refreshButton.addActionListener(new java.awt.event.ActionListener() {
138  public void actionPerformed(java.awt.event.ActionEvent evt) {
139  refreshButtonActionPerformed(evt);
140  }
141  });
142 
143  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
144  this.setLayout(layout);
145  layout.setHorizontalGroup(
146  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
147  .addGroup(layout.createSequentialGroup()
148  .addContainerGap()
149  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
150  .addComponent(multiUserCaseScrollPane)
151  .addGroup(layout.createSequentialGroup()
152  .addComponent(selectAllButton)
153  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
154  .addComponent(deselectAllButton)
155  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
156  .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 365, javax.swing.GroupLayout.PREFERRED_SIZE)
157  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 286, Short.MAX_VALUE)
158  .addComponent(refreshButton)
159  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
160  .addComponent(confirmSelections, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE)
161  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
162  .addComponent(cancelButton)))
163  .addContainerGap())
164  );
165  layout.setVerticalGroup(
166  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
167  .addGroup(layout.createSequentialGroup()
168  .addContainerGap()
169  .addComponent(multiUserCaseScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 486, javax.swing.GroupLayout.PREFERRED_SIZE)
170  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
171  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
172  .addComponent(jLabel1)
173  .addComponent(selectAllButton)
174  .addComponent(deselectAllButton)
175  .addComponent(confirmSelections)
176  .addComponent(cancelButton)
177  .addComponent(refreshButton))
178  .addContainerGap(15, Short.MAX_VALUE))
179  );
180  }// </editor-fold>//GEN-END:initComponents
181 
182  private void selectAllButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectAllButtonActionPerformed
183  try {
184  caseBrowserPanel.getExplorerManager().setSelectedNodes(caseBrowserPanel.getExplorerManager().getRootContext().getChildren().getNodes());
185  } catch (PropertyVetoException ex) {
186  //Ignore
187  }
188  }//GEN-LAST:event_selectAllButtonActionPerformed
189 
190  private void deselectAllButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deselectAllButtonActionPerformed
191  try {
192  caseBrowserPanel.getExplorerManager().setSelectedNodes(new Node[0]);
193  } catch (PropertyVetoException ex) {
194  //Ignore
195  }
196  }//GEN-LAST:event_deselectAllButtonActionPerformed
197 
198  private void confirmSelectionsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_confirmSelectionsActionPerformed
199  //Pull out the CaseNodeData objects from the selections
200  Node[] selections = caseBrowserPanel.getExplorerManager().getSelectedNodes();
201  List<CaseNodeData> caseNodeData = Stream.of(selections)
202  .map(n -> n.getLookup().lookup(CaseNodeData.class))
203  .collect(Collectors.toList());
204  listeners.forEach((l) -> {
205  l.nodeSelectionChanged(selections, caseNodeData);
206  });
207  parentDialog.setVisible(false);
208  }//GEN-LAST:event_confirmSelectionsActionPerformed
209 
210  private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
211  parentDialog.setVisible(false);
212  }//GEN-LAST:event_cancelButtonActionPerformed
213 
214  private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshButtonActionPerformed
215  caseBrowserPanel.displayCases();
216  }//GEN-LAST:event_refreshButtonActionPerformed
217 
218 
219  // Variables declaration - do not modify//GEN-BEGIN:variables
220  private javax.swing.JButton cancelButton;
221  private javax.swing.JButton confirmSelections;
222  private javax.swing.JButton deselectAllButton;
223  private javax.swing.JLabel jLabel1;
224  private javax.swing.JScrollPane multiUserCaseScrollPane;
225  private javax.swing.JButton refreshButton;
226  private javax.swing.JButton selectAllButton;
227  // End of variables declaration//GEN-END:variables
228 }

Copyright © 2012-2018 Basis Technology. Generated on: Fri Mar 22 2019
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.