Autopsy 4.22.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
ExternalViewerGlobalSettingsPanel.java
Go to the documentation of this file.
1/*
2 * Autopsy Forensic Browser
3 *
4 * Copyright 2011-2021 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 */
19package org.sleuthkit.autopsy.directorytree;
20
21import java.awt.Color;
22import java.awt.event.ActionListener;
23import java.io.File;
24import java.util.ArrayList;
25import java.util.List;
26import javax.swing.JFileChooser;
27import org.sleuthkit.autopsy.corecomponents.OptionsPanel;
28import javax.swing.JOptionPane;
29import javax.swing.ListSelectionModel;
30import javax.swing.event.ListSelectionEvent;
31import org.openide.util.NbBundle;
32import org.netbeans.spi.options.OptionsPanelController;
33import org.sleuthkit.autopsy.casemodule.GeneralFilter;
34import org.sleuthkit.autopsy.core.UserPreferences;
35import org.sleuthkit.autopsy.coreutils.PlatformUtil;
36import org.sleuthkit.autopsy.guiutils.JFileChooserFactory;
37
43@SuppressWarnings("PMD.SingularField") // UI widgets cause lots of false positives
44final class ExternalViewerGlobalSettingsPanel extends javax.swing.JPanel implements OptionsPanel {
45
46 private static final long serialVersionUID = 1L;
47
48 private ExternalViewerGlobalSettingsTableModel tableModel;
49
50 private final JFileChooserFactory chooserHelper = new JFileChooserFactory();
51
52 ExternalViewerGlobalSettingsPanel() {
53 this(new ExternalViewerGlobalSettingsTableModel(new String[] {
54 "Mime type/Extension", "Application"}));
55 }
56
60 ExternalViewerGlobalSettingsPanel(ExternalViewerGlobalSettingsTableModel tableModel) {
61 initComponents();
62 this.tableModel = tableModel;
63 customizeComponents(tableModel);
64 }
65
69 private void customizeComponents(ExternalViewerGlobalSettingsTableModel tableModel) {
70 ExternalViewerRulesTable.setModel(tableModel);
71 ExternalViewerRulesTable.setAutoCreateRowSorter(true);
72 ExternalViewerRulesTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
73 ListSelectionModel selectionModel = ExternalViewerRulesTable.getSelectionModel();
74
75 selectionModel.addListSelectionListener((ListSelectionEvent selection) -> {
76 enableButtons();
77 });
78 }
79
85 public void deleteRuleButtonClick(int selectedIndex) {
86 setSelectionInterval(selectedIndex, selectedIndex);
87 deleteRuleButton.getListeners(ActionListener.class)[0].actionPerformed(null);
88 }
89
97 public void setSelectionInterval(int startingIndex, int endIndex) {
98 ExternalViewerRulesTable.getSelectionModel().setSelectionInterval(startingIndex, endIndex);
99 }
100
107 public boolean isSelected(int index) {
108 return ExternalViewerRulesTable.getSelectionModel().isSelectedIndex(index);
109 }
110
116 @SuppressWarnings("unchecked")
117 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
118 private void initComponents() {
119
120 newRuleButton1 = new javax.swing.JButton();
121 jButton2 = new javax.swing.JButton();
122 jPanel1 = new javax.swing.JPanel();
123 jPanel2 = new javax.swing.JPanel();
124 newRuleButton = new javax.swing.JButton();
125 jScrollPane4 = new javax.swing.JScrollPane();
126 ExternalViewerRulesTable = new javax.swing.JTable();
127 externalViewerTitleLabel = new javax.swing.JLabel();
128 deleteRuleButton = new javax.swing.JButton();
129 editRuleButton = new javax.swing.JButton();
130 jPanel3 = new javax.swing.JPanel();
131 HxDPath = new javax.swing.JTextField();
132 HxDLabel = new javax.swing.JLabel();
133 ContentViewerExtensionLabel = new javax.swing.JLabel();
134 browseHxDDirectory = new javax.swing.JButton();
135
136 newRuleButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/add16.png"))); // NOI18N
137 org.openide.awt.Mnemonics.setLocalizedText(newRuleButton1, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.newRuleButton1.text")); // NOI18N
138 newRuleButton1.setMaximumSize(new java.awt.Dimension(111, 25));
139 newRuleButton1.setMinimumSize(new java.awt.Dimension(111, 25));
140
141 org.openide.awt.Mnemonics.setLocalizedText(jButton2, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.jButton2.text")); // NOI18N
142
143 setPreferredSize(new java.awt.Dimension(701, 453));
144
145 jPanel1.setPreferredSize(new java.awt.Dimension(701, 453));
146
147 newRuleButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/add16.png"))); // NOI18N
148 org.openide.awt.Mnemonics.setLocalizedText(newRuleButton, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.newRuleButton.text")); // NOI18N
149 newRuleButton.setMaximumSize(new java.awt.Dimension(111, 25));
150 newRuleButton.setMinimumSize(new java.awt.Dimension(111, 25));
151 newRuleButton.addActionListener(new java.awt.event.ActionListener() {
152 public void actionPerformed(java.awt.event.ActionEvent evt) {
153 newRuleButtonActionPerformed(evt);
154 }
155 });
156
157 jScrollPane4.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(204, 204, 204)));
158
159 jScrollPane4.setViewportView(ExternalViewerRulesTable);
160 if (ExternalViewerRulesTable.getColumnModel().getColumnCount() > 0) {
161 ExternalViewerRulesTable.getColumnModel().getColumn(0).setHeaderValue(org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.ExternalViewerRulesTable.columnModel.title0")); // NOI18N
162 ExternalViewerRulesTable.getColumnModel().getColumn(1).setHeaderValue(org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.ExternalViewerRulesTable.columnModel.title1")); // NOI18N
163 }
164
165 org.openide.awt.Mnemonics.setLocalizedText(externalViewerTitleLabel, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.externalViewerTitleLabel.text")); // NOI18N
166
167 deleteRuleButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/delete16.png"))); // NOI18N
168 org.openide.awt.Mnemonics.setLocalizedText(deleteRuleButton, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.deleteRuleButton.text")); // NOI18N
169 deleteRuleButton.setMaximumSize(new java.awt.Dimension(111, 25));
170 deleteRuleButton.setMinimumSize(new java.awt.Dimension(111, 25));
171 deleteRuleButton.addActionListener(new java.awt.event.ActionListener() {
172 public void actionPerformed(java.awt.event.ActionEvent evt) {
173 deleteRuleButtonActionPerformed(evt);
174 }
175 });
176
177 editRuleButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/edit16.png"))); // NOI18N
178 org.openide.awt.Mnemonics.setLocalizedText(editRuleButton, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.editRuleButton.text")); // NOI18N
179 editRuleButton.setMaximumSize(new java.awt.Dimension(111, 25));
180 editRuleButton.setMinimumSize(new java.awt.Dimension(111, 25));
181 editRuleButton.addActionListener(new java.awt.event.ActionListener() {
182 public void actionPerformed(java.awt.event.ActionEvent evt) {
183 editRuleButtonActionPerformed(evt);
184 }
185 });
186
187 javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
188 jPanel2.setLayout(jPanel2Layout);
189 jPanel2Layout.setHorizontalGroup(
190 jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
191 .addGroup(jPanel2Layout.createSequentialGroup()
192 .addContainerGap()
193 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
194 .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 634, javax.swing.GroupLayout.PREFERRED_SIZE)
195 .addGroup(jPanel2Layout.createSequentialGroup()
196 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
197 .addComponent(externalViewerTitleLabel)
198 .addGroup(jPanel2Layout.createSequentialGroup()
199 .addComponent(newRuleButton, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)
200 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
201 .addComponent(editRuleButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
202 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
203 .addComponent(deleteRuleButton, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE)))
204 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
205 );
206 jPanel2Layout.setVerticalGroup(
207 jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
208 .addGroup(jPanel2Layout.createSequentialGroup()
209 .addComponent(externalViewerTitleLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
210 .addGap(12, 12, 12)
211 .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 219, javax.swing.GroupLayout.PREFERRED_SIZE)
212 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
213 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
214 .addComponent(newRuleButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
215 .addComponent(editRuleButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
216 .addComponent(deleteRuleButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
217 .addContainerGap())
218 );
219
220 HxDPath.setEditable(false);
221
222 org.openide.awt.Mnemonics.setLocalizedText(HxDLabel, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.HxDLabel.text")); // NOI18N
223
224 org.openide.awt.Mnemonics.setLocalizedText(ContentViewerExtensionLabel, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.ContentViewerExtensionLabel.text")); // NOI18N
225
226 org.openide.awt.Mnemonics.setLocalizedText(browseHxDDirectory, org.openide.util.NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.browseHxDDirectory.text")); // NOI18N
227 browseHxDDirectory.addActionListener(new java.awt.event.ActionListener() {
228 public void actionPerformed(java.awt.event.ActionEvent evt) {
229 browseHxDDirectoryActionPerformed(evt);
230 }
231 });
232
233 javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
234 jPanel3.setLayout(jPanel3Layout);
235 jPanel3Layout.setHorizontalGroup(
236 jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
237 .addGroup(jPanel3Layout.createSequentialGroup()
238 .addComponent(ContentViewerExtensionLabel)
239 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
240 .addGroup(jPanel3Layout.createSequentialGroup()
241 .addGap(21, 21, 21)
242 .addComponent(HxDLabel)
243 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
244 .addComponent(HxDPath, javax.swing.GroupLayout.DEFAULT_SIZE, 441, Short.MAX_VALUE)
245 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
246 .addComponent(browseHxDDirectory, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE))
247 );
248 jPanel3Layout.setVerticalGroup(
249 jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
250 .addGroup(jPanel3Layout.createSequentialGroup()
251 .addComponent(ContentViewerExtensionLabel)
252 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
253 .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
254 .addComponent(HxDPath, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
255 .addComponent(HxDLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
256 .addComponent(browseHxDDirectory))
257 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
258 );
259
260 browseHxDDirectory.setEnabled(PlatformUtil.isWindowsOS());
261
262 javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
263 jPanel1.setLayout(jPanel1Layout);
264 jPanel1Layout.setHorizontalGroup(
265 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
266 .addGroup(jPanel1Layout.createSequentialGroup()
267 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
268 .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
269 .addGroup(jPanel1Layout.createSequentialGroup()
270 .addContainerGap()
271 .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
272 .addGap(547, 547, 547))
273 );
274 jPanel1Layout.setVerticalGroup(
275 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
276 .addGroup(jPanel1Layout.createSequentialGroup()
277 .addContainerGap()
278 .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
279 .addGap(18, 18, 18)
280 .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
281 .addContainerGap(83, Short.MAX_VALUE))
282 );
283
284 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
285 this.setLayout(layout);
286 layout.setHorizontalGroup(
287 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
288 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 1191, Short.MAX_VALUE)
289 );
290 layout.setVerticalGroup(
291 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
292 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
293 );
294 }// </editor-fold>//GEN-END:initComponents
295
296 private void newRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newRuleButtonActionPerformed
297 AddExternalViewerRuleDialog dialog = new AddExternalViewerRuleDialog();
298 AddExternalViewerRuleDialog.BUTTON_PRESSED result = dialog.getResult();
299 if (result == AddExternalViewerRuleDialog.BUTTON_PRESSED.OK) {
300 ExternalViewerRule newRule = dialog.getRule();
301 // Only allow one association for each MIME type or extension.
302 if (tableModel.containsRule(newRule)) {
303 JOptionPane.showMessageDialog(this,
304 NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.JOptionPane.ruleAlreadyExists.message"),
305 NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.JOptionPane.ruleAlreadyExists.title"),
306 JOptionPane.ERROR_MESSAGE);
307 } else {
308 tableModel.addRule(newRule);
309 enableButtons();
310 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
311 }
312 }
313 }//GEN-LAST:event_newRuleButtonActionPerformed
314
315 private void editRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editRuleButtonActionPerformed
316 int selectedIndex = ExternalViewerRulesTable.convertRowIndexToModel(ExternalViewerRulesTable.getSelectedRow());
317 ExternalViewerRule selectedRule = tableModel.getRuleAt(selectedIndex);
318 AddExternalViewerRuleDialog dialog = new AddExternalViewerRuleDialog(selectedRule);
319 AddExternalViewerRuleDialog.BUTTON_PRESSED result = dialog.getResult();
320 if (result == AddExternalViewerRuleDialog.BUTTON_PRESSED.OK) {
321 ExternalViewerRule newRule = dialog.getRule();
322 // Only allow one association for each MIME type or extension.
323 if (tableModel.containsRule(newRule)) {
324 JOptionPane.showMessageDialog(this,
325 NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.JOptionPane.ruleAlreadyExists.message"),
326 NbBundle.getMessage(ExternalViewerGlobalSettingsPanel.class, "ExternalViewerGlobalSettingsPanel.JOptionPane.ruleAlreadyExists.title"),
327 JOptionPane.ERROR_MESSAGE);
328 } else {
329 tableModel.setRule(selectedIndex, dialog.getRule());
330 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
331 }
332 }
333 }//GEN-LAST:event_editRuleButtonActionPerformed
334
335 private void deleteRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteRuleButtonActionPerformed
336 tableModel.removeRule(ExternalViewerRulesTable.convertRowIndexToModel(ExternalViewerRulesTable.getSelectedRow()));
337 ExternalViewerRulesTable.getSelectionModel().clearSelection();
338 enableButtons();
339 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
340 }//GEN-LAST:event_deleteRuleButtonActionPerformed
341
342 private void browseHxDDirectoryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseHxDDirectoryActionPerformed
343 JFileChooser fileWindow = chooserHelper.getChooser();
344 fileWindow.setFileSelectionMode(JFileChooser.FILES_ONLY);
345 GeneralFilter exeFilter = new GeneralFilter(GeneralFilter.EXECUTABLE_EXTS, GeneralFilter.EXECUTABLE_DESC);
346 File HxDPathFile = new File(HxDPath.getText());
347 if(HxDPathFile.exists() && HxDPathFile.canExecute()) {
348 fileWindow.setCurrentDirectory(new File(HxDPath.getText()));
349 }
350 fileWindow.setDragEnabled(false);
351 fileWindow.setFileFilter(exeFilter);
352 fileWindow.setMultiSelectionEnabled(false);
353 int returnVal = fileWindow.showSaveDialog(this);
354 if(returnVal == JFileChooser.APPROVE_OPTION) {
355 File HxDExecutable = fileWindow.getSelectedFile();
356 HxDPath.setForeground(Color.BLACK);
357 HxDPath.setText(HxDExecutable.getAbsolutePath());
358 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
359 }
360 }//GEN-LAST:event_browseHxDDirectoryActionPerformed
361
362 @Override
363 public void store() {
364 //Dump rules from table model into a list to be stored by the rules manager.
365 List<ExternalViewerRule> rules = new ArrayList<>();
366 for(int i = 0; i < tableModel.getRowCount(); i++) {
367 rules.add(tableModel.getRuleAt(i));
368 }
369 ExternalViewerRulesManager.getInstance().setUserRules(rules);
370 UserPreferences.setExternalHexEditorPath(HxDPath.getText());
371 }
372
373 @Override
374 public void load() {
375 List<ExternalViewerRule> rules = ExternalViewerRulesManager.getInstance().getUserRules();
376 for(ExternalViewerRule rule : rules) {
377 if(!tableModel.containsRule(rule)) {
378 tableModel.addRule(rule);
379 }
380 }
381 String editorPath = UserPreferences.getExternalHexEditorPath();
382 File HdXExecutable = new File(editorPath);
383 if(HdXExecutable.exists() || HdXExecutable.canExecute()) {
384 HxDPath.setText(editorPath);
385 } else {
386 HxDPath.setForeground(Color.RED);
387 HxDPath.setText(editorPath);
388 }
389 enableButtons();
390 }
391
395 boolean enableButtons() {
396 boolean ruleIsSelected = ExternalViewerRulesTable.getSelectedRow() >= 0;
397 editRuleButton.setEnabled(ruleIsSelected);
398 deleteRuleButton.setEnabled(ruleIsSelected);
399 return ruleIsSelected;
400 }
401
402 // Variables declaration - do not modify//GEN-BEGIN:variables
403 private javax.swing.JLabel ContentViewerExtensionLabel;
404 private javax.swing.JTable ExternalViewerRulesTable;
405 private javax.swing.JLabel HxDLabel;
406 private javax.swing.JTextField HxDPath;
407 private javax.swing.JButton browseHxDDirectory;
408 private javax.swing.JButton deleteRuleButton;
409 private javax.swing.JButton editRuleButton;
410 private javax.swing.JLabel externalViewerTitleLabel;
411 private javax.swing.JButton jButton2;
412 private javax.swing.JPanel jPanel1;
413 private javax.swing.JPanel jPanel2;
414 private javax.swing.JPanel jPanel3;
415 private javax.swing.JScrollPane jScrollPane4;
416 private javax.swing.JButton newRuleButton;
417 private javax.swing.JButton newRuleButton1;
418 // End of variables declaration//GEN-END:variables
419}

Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.