19 package org.sleuthkit.autopsy.modules.interestingitems;
21 import java.awt.EventQueue;
22 import java.util.ArrayList;
23 import java.util.HashMap;
24 import java.util.HashSet;
25 import java.util.List;
28 import java.util.TreeMap;
29 import java.util.logging.Level;
30 import javax.swing.DefaultListModel;
31 import javax.swing.JButton;
32 import javax.swing.JOptionPane;
33 import javax.swing.event.ListSelectionEvent;
34 import javax.swing.event.ListSelectionListener;
35 import org.netbeans.spi.options.OptionsPanelController;
36 import org.openide.util.NbBundle;
46 final class InterestingItemDefsPanel
extends IngestModuleGlobalSettingsPanel implements OptionsPanel {
49 "InterestingItemDefsPanel.bytes=Bytes",
50 "InterestingItemDefsPanel.kiloBytes=Kilobytes",
51 "InterestingItemDefsPanel.megaBytes=Megabytes",
52 "InterestingItemDefsPanel.gigaBytes=Gigabytes",
53 "InterestingItemsDefsPanel.loadError=Error loading interesting files sets from file.",
54 "InterestingItemsDefsPanel.saveError=Error saving interesting files sets to file."
57 private final DefaultListModel<FilesSet> setsListModel =
new DefaultListModel<>();
58 private final DefaultListModel<FilesSet.Rule> rulesListModel =
new DefaultListModel<>();
59 private final Logger logger = Logger.getLogger(InterestingItemDefsPanel.class.getName());
60 private final JButton okButton =
new JButton(
"OK");
61 private final JButton cancelButton =
new JButton(
"Cancel");
70 private TreeMap<String, FilesSet> filesSets;
75 InterestingItemDefsPanel() {
76 this.initComponents();
78 this.setsList.setModel(setsListModel);
79 this.setsList.addListSelectionListener(
new InterestingItemDefsPanel.SetsListSelectionListener());
80 this.rulesList.setModel(rulesListModel);
81 this.rulesList.addListSelectionListener(
new InterestingItemDefsPanel.RulesListSelectionListener());
84 @NbBundle.Messages({
"InterestingItemDefsPanel.Title=Global Interesting Items Settings"})
85 private void customInit() {
86 setName(Bundle.InterestingItemDefsPanel_Title());
88 Set<String> fileTypesCollated =
new HashSet<>();
89 for (String mediaType : FileTypeDetector.getStandardDetectedTypes()) {
90 fileTypesCollated.add(mediaType);
93 FileTypeDetector fileTypeDetector;
95 fileTypeDetector =
new FileTypeDetector();
96 List<String> userDefinedFileTypes = fileTypeDetector.getUserDefinedTypes();
97 fileTypesCollated.addAll(userDefinedFileTypes);
99 }
catch (FileTypeDetector.FileTypeDetectorInitException ex) {
100 logger.log(Level.SEVERE,
"Unable to get user defined file types", ex);
103 List<String> toSort =
new ArrayList<>(fileTypesCollated);
104 toSort.sort((String string1, String string2) -> {
105 int result = String.CASE_INSENSITIVE_ORDER.compare(string1, string2);
107 result = string1.compareTo(string2);
112 for (String file : toSort) {
113 mimeTypeComboBox.addItem(file);
115 this.fileSizeUnitComboBox.setSelectedIndex(1);
116 this.equalitySignComboBox.setSelectedIndex(2);
123 public void saveSettings() {
125 InterestingItemDefsManager.getInstance().setInterestingFilesSets(this.filesSets);
126 }
catch (InterestingItemDefsManager.InterestingItemDefsManagerException ex) {
127 MessageNotifyUtil.Message.error(Bundle.InterestingItemsDefsPanel_saveError());
135 public void store() {
144 this.resetComponents();
149 this.filesSets =
new TreeMap<>(InterestingItemDefsManager.getInstance().getInterestingFilesSets());
150 }
catch (InterestingItemDefsManager.InterestingItemDefsManagerException ex) {
151 MessageNotifyUtil.Message.error(Bundle.InterestingItemsDefsPanel_loadError());
152 this.filesSets =
new TreeMap<>();
157 for (FilesSet set : this.filesSets.values()) {
158 this.setsListModel.addElement(set);
161 if (!this.filesSets.isEmpty()) {
164 EventQueue.invokeLater(() -> {
165 InterestingItemDefsPanel.this.setsList.setSelectedIndex(0);
173 private void resetComponents() {
174 this.resetRuleComponents();
175 this.setsListModel.clear();
176 this.setDescriptionTextArea.setText(
"");
177 this.ignoreKnownFilesCheckbox.setSelected(
true);
178 this.newSetButton.setEnabled(
true);
179 this.editSetButton.setEnabled(
false);
180 this.deleteSetButton.setEnabled(
false);
187 private void resetRuleComponents() {
188 this.fileNameTextField.setText(
"");
189 this.fileNameRadioButton.setSelected(
true);
190 this.fileNameRegexCheckbox.setSelected(
false);
191 this.filesRadioButton.setSelected(
true);
192 this.rulePathConditionTextField.setText(
"");
193 this.rulePathConditionRegexCheckBox.setSelected(
false);
194 this.mimeTypeComboBox.setSelectedIndex(0);
195 this.equalitySignComboBox.setSelectedIndex(2);
196 this.fileSizeUnitComboBox.setSelectedIndex(1);
197 this.fileSizeSpinner.setValue(0);
198 this.newRuleButton.setEnabled(!this.setsListModel.isEmpty());
199 this.editRuleButton.setEnabled(
false);
200 this.deleteRuleButton.setEnabled(
false);
210 if (e.getValueIsAdjusting()) {
214 InterestingItemDefsPanel.this.rulesListModel.clear();
215 InterestingItemDefsPanel.this.resetRuleComponents();
219 FilesSet selectedSet = InterestingItemDefsPanel.this.setsList.getSelectedValue();
220 if (selectedSet != null) {
223 InterestingItemDefsPanel.this.setDescriptionTextArea.setText(selectedSet.getDescription());
224 InterestingItemDefsPanel.this.ignoreKnownFilesCheckbox.setSelected(selectedSet.ignoresKnownFiles());
227 InterestingItemDefsPanel.this.newSetButton.setEnabled(
true);
228 InterestingItemDefsPanel.this.editSetButton.setEnabled(
true);
229 InterestingItemDefsPanel.this.deleteSetButton.setEnabled(
true);
232 TreeMap<String, FilesSet.Rule> rules =
new TreeMap<>(selectedSet.getRules());
233 for (FilesSet.Rule rule : rules.values()) {
234 InterestingItemDefsPanel.this.rulesListModel.addElement(rule);
238 if (!InterestingItemDefsPanel.this.rulesListModel.isEmpty()) {
239 InterestingItemDefsPanel.this.rulesList.setSelectedIndex(0);
254 if (e.getValueIsAdjusting()) {
259 FilesSet.Rule rule = InterestingItemDefsPanel.this.rulesList.getSelectedValue();
262 FilesSet.Rule.FileNameCondition nameCondition = rule.getFileNameCondition();
263 FilesSet.Rule.MetaTypeCondition typeCondition = rule.getMetaTypeCondition();
264 FilesSet.Rule.ParentPathCondition pathCondition = rule.getPathCondition();
265 FilesSet.Rule.MimeTypeCondition mimeTypeCondition = rule.getMimeTypeCondition();
266 FilesSet.Rule.FileSizeCondition fileSizeCondition = rule.getFileSizeCondition();
270 if (nameCondition != null) {
271 InterestingItemDefsPanel.this.fileNameTextField.setText(nameCondition.getTextToMatch());
272 InterestingItemDefsPanel.this.fileNameRadioButton.setSelected(nameCondition instanceof FilesSet.Rule.FullNameCondition);
273 InterestingItemDefsPanel.this.fileNameExtensionRadioButton.setSelected(nameCondition instanceof FilesSet.Rule.ExtensionCondition);
274 InterestingItemDefsPanel.this.fileNameRegexCheckbox.setSelected(nameCondition.isRegex());
276 InterestingItemDefsPanel.this.fileNameTextField.setText(
"");
277 InterestingItemDefsPanel.this.fileNameRadioButton.setSelected(
true);
278 InterestingItemDefsPanel.this.fileNameExtensionRadioButton.setSelected(
false);
279 InterestingItemDefsPanel.this.fileNameRegexCheckbox.setSelected(
false);
281 switch (typeCondition.getMetaType()) {
283 InterestingItemDefsPanel.this.filesRadioButton.setSelected(
true);
286 InterestingItemDefsPanel.this.dirsRadioButton.setSelected(
true);
288 case FILES_AND_DIRECTORIES:
289 InterestingItemDefsPanel.this.bothRadioButton.setSelected(
true);
292 if (pathCondition != null) {
293 InterestingItemDefsPanel.this.rulePathConditionTextField.setText(pathCondition.getTextToMatch());
294 InterestingItemDefsPanel.this.rulePathConditionRegexCheckBox.setSelected(pathCondition.isRegex());
296 InterestingItemDefsPanel.this.rulePathConditionTextField.setText(
"");
297 InterestingItemDefsPanel.this.rulePathConditionRegexCheckBox.setSelected(
false);
299 if (mimeTypeCondition != null) {
300 InterestingItemDefsPanel.this.mimeTypeComboBox.setSelectedItem(mimeTypeCondition.getMimeType());
302 InterestingItemDefsPanel.this.mimeTypeComboBox.setSelectedIndex(0);
304 if (fileSizeCondition != null) {
305 InterestingItemDefsPanel.this.fileSizeUnitComboBox.setSelectedItem(fileSizeCondition.getUnit().getName());
306 InterestingItemDefsPanel.this.equalitySignComboBox.setSelectedItem(fileSizeCondition.getComparator().getSymbol());
307 InterestingItemDefsPanel.this.fileSizeSpinner.setValue(fileSizeCondition.getSizeValue());
309 InterestingItemDefsPanel.this.fileSizeUnitComboBox.setSelectedIndex(1);
310 InterestingItemDefsPanel.this.equalitySignComboBox.setSelectedIndex(2);
311 InterestingItemDefsPanel.this.fileSizeSpinner.setValue(0);
315 InterestingItemDefsPanel.this.newRuleButton.setEnabled(
true);
316 InterestingItemDefsPanel.this.editRuleButton.setEnabled(
true);
317 InterestingItemDefsPanel.this.deleteRuleButton.setEnabled(
true);
319 InterestingItemDefsPanel.this.resetRuleComponents();
333 private void doFileSetsDialog(FilesSet selectedSet) {
336 if (selectedSet != null) {
341 panel =
new FilesSetPanel();
347 int option = JOptionPane.OK_OPTION;
349 option = JOptionPane.showConfirmDialog(null, panel, NbBundle.getMessage(FilesSetPanel.class,
"FilesSetPanel.title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
350 }
while (option == JOptionPane.OK_OPTION && !panel.isValidDefinition());
354 if (this.filesSets.containsKey(panel.getFilesSetName()) && selectedSet == null) {
355 MessageNotifyUtil.Message.error(NbBundle.getMessage(
this.getClass(),
356 "InterestingItemDefsPanel.doFileSetsDialog.duplicateRuleSet.text",
357 panel.getFilesSetName()));
361 if (option == JOptionPane.OK_OPTION) {
362 Map<String, FilesSet.Rule> rules =
new HashMap<>();
363 if (selectedSet != null) {
367 rules.putAll(selectedSet.getRules());
369 this.replaceFilesSet(selectedSet, panel.getFilesSetName(), panel.getFilesSetDescription(), panel.getFileSetIgnoresKnownFiles(), rules);
380 private void doFilesSetRuleDialog(FilesSet.Rule selectedRule) {
382 FilesSetRulePanel panel;
383 if (selectedRule != null) {
385 panel =
new FilesSetRulePanel(selectedRule, okButton, cancelButton);
388 panel =
new FilesSetRulePanel(okButton, cancelButton);
393 int option = JOptionPane.OK_OPTION;
395 option = JOptionPane.showOptionDialog(null, panel, NbBundle.getMessage(FilesSetPanel.class,
"FilesSetPanel.title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null,
new Object[]{okButton, cancelButton}, okButton);
396 }
while (option == JOptionPane.OK_OPTION && !panel.isValidRuleDefinition());
398 if (option == JOptionPane.OK_OPTION) {
402 FilesSet selectedSet = this.setsList.getSelectedValue();
403 Map<String, FilesSet.Rule> rules =
new HashMap<>(selectedSet.getRules());
407 if (selectedRule != null) {
408 rules.remove(selectedRule.getUuid());
410 FilesSet.Rule newRule =
new FilesSet.Rule(panel.getRuleName(), panel.getFileNameCondition(), panel.getMetaTypeCondition(), panel.getPathCondition(), panel.getMimeTypeCondition(), panel.getFileSizeCondition());
411 rules.put(newRule.getUuid(), newRule);
415 this.replaceFilesSet(selectedSet, selectedSet.getName(), selectedSet.getDescription(), selectedSet.ignoresKnownFiles(), rules);
420 EventQueue.invokeLater(() -> {
421 this.rulesList.setSelectedValue(newRule,
true);
439 void replaceFilesSet(FilesSet oldSet, String name, String description,
boolean ignoresKnownFiles, Map<String, FilesSet.Rule> rules) {
440 if (oldSet != null) {
443 this.filesSets.remove(oldSet.getName());
448 FilesSet newSet =
new FilesSet(name, description, ignoresKnownFiles, rules);
449 this.filesSets.put(newSet.getName(), newSet);
453 InterestingItemDefsPanel.this.setsListModel.clear();
454 for (FilesSet set : this.filesSets.values()) {
455 this.setsListModel.addElement(set);
461 this.setsList.setSelectedValue(newSet,
true);
469 @SuppressWarnings(
"unchecked")
471 private
void initComponents() {
473 fileNameButtonGroup =
new javax.swing.ButtonGroup();
474 typeButtonGroup =
new javax.swing.ButtonGroup();
475 jScrollPane1 =
new javax.swing.JScrollPane();
476 jPanel1 =
new javax.swing.JPanel();
477 jLabel6 =
new javax.swing.JLabel();
478 newRuleButton =
new javax.swing.JButton();
479 filesRadioButton =
new javax.swing.JRadioButton();
480 editRuleButton =
new javax.swing.JButton();
481 rulesListLabel =
new javax.swing.JLabel();
482 rulesListScrollPane =
new javax.swing.JScrollPane();
483 rulesList =
new javax.swing.JList<>();
484 setDescScrollPanel =
new javax.swing.JScrollPane();
485 setDescriptionTextArea =
new javax.swing.JTextArea();
486 editSetButton =
new javax.swing.JButton();
487 setsListScrollPane =
new javax.swing.JScrollPane();
488 setsList =
new javax.swing.JList<>();
489 fileNameExtensionRadioButton =
new javax.swing.JRadioButton();
490 jLabel3 =
new javax.swing.JLabel();
491 fileNameTextField =
new javax.swing.JTextField();
492 jLabel5 =
new javax.swing.JLabel();
493 fileNameRadioButton =
new javax.swing.JRadioButton();
494 rulePathConditionTextField =
new javax.swing.JTextField();
495 ignoreKnownFilesCheckbox =
new javax.swing.JCheckBox();
496 fileNameRegexCheckbox =
new javax.swing.JCheckBox();
497 separator =
new javax.swing.JSeparator();
498 setsListLabel =
new javax.swing.JLabel();
499 bothRadioButton =
new javax.swing.JRadioButton();
500 deleteSetButton =
new javax.swing.JButton();
501 deleteRuleButton =
new javax.swing.JButton();
502 newSetButton =
new javax.swing.JButton();
503 jLabel2 =
new javax.swing.JLabel();
504 dirsRadioButton =
new javax.swing.JRadioButton();
505 jLabel1 =
new javax.swing.JLabel();
506 jLabel4 =
new javax.swing.JLabel();
507 rulePathConditionRegexCheckBox =
new javax.swing.JCheckBox();
508 jScrollPane2 =
new javax.swing.JScrollPane();
509 jTextArea1 =
new javax.swing.JTextArea();
510 jLabel7 =
new javax.swing.JLabel();
511 mimeTypeComboBox =
new javax.swing.JComboBox<>();
512 jLabel8 =
new javax.swing.JLabel();
513 equalitySignComboBox =
new javax.swing.JComboBox<String>();
514 fileSizeSpinner =
new javax.swing.JSpinner();
515 fileSizeUnitComboBox =
new javax.swing.JComboBox<String>();
517 setFont(getFont().deriveFont(getFont().getStyle() & ~java.awt.Font.BOLD, 11));
519 jScrollPane1.setFont(jScrollPane1.getFont().deriveFont(jScrollPane1.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
521 jPanel1.setFont(jPanel1.getFont().deriveFont(jPanel1.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
523 jLabel6.setFont(jLabel6.getFont().deriveFont(jLabel6.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
524 org.openide.awt.Mnemonics.setLocalizedText(jLabel6,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel6.text"));
526 newRuleButton.setFont(newRuleButton.getFont().deriveFont(newRuleButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
527 newRuleButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/add16.png")));
528 org.openide.awt.Mnemonics.setLocalizedText(newRuleButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.newRuleButton.text"));
529 newRuleButton.addActionListener(
new java.awt.event.ActionListener() {
530 public void actionPerformed(java.awt.event.ActionEvent evt) {
531 newRuleButtonActionPerformed(evt);
535 typeButtonGroup.add(filesRadioButton);
536 filesRadioButton.setFont(filesRadioButton.getFont().deriveFont(filesRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
537 filesRadioButton.setSelected(
true);
538 org.openide.awt.Mnemonics.setLocalizedText(filesRadioButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.filesRadioButton.text"));
539 filesRadioButton.setEnabled(
false);
541 editRuleButton.setFont(editRuleButton.getFont().deriveFont(editRuleButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
542 editRuleButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/edit16.png")));
543 org.openide.awt.Mnemonics.setLocalizedText(editRuleButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.editRuleButton.text"));
544 editRuleButton.setEnabled(
false);
545 editRuleButton.addActionListener(
new java.awt.event.ActionListener() {
546 public void actionPerformed(java.awt.event.ActionEvent evt) {
547 editRuleButtonActionPerformed(evt);
551 rulesListLabel.setFont(rulesListLabel.getFont().deriveFont(rulesListLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
552 org.openide.awt.Mnemonics.setLocalizedText(rulesListLabel,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.rulesListLabel.text"));
554 rulesListScrollPane.setFont(rulesListScrollPane.getFont().deriveFont(rulesListScrollPane.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
556 rulesList.setFont(rulesList.getFont().deriveFont(rulesList.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
557 rulesList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
558 rulesListScrollPane.setViewportView(rulesList);
560 setDescScrollPanel.setFont(setDescScrollPanel.getFont().deriveFont(setDescScrollPanel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
562 setDescriptionTextArea.setEditable(
false);
563 setDescriptionTextArea.setBackground(
new java.awt.Color(240, 240, 240));
564 setDescriptionTextArea.setColumns(20);
565 setDescriptionTextArea.setFont(setDescriptionTextArea.getFont().deriveFont(setDescriptionTextArea.getFont().getStyle() & ~java.awt.Font.BOLD, 13));
566 setDescriptionTextArea.setLineWrap(
true);
567 setDescriptionTextArea.setRows(2);
568 setDescriptionTextArea.setMinimumSize(
new java.awt.Dimension(10, 22));
569 setDescriptionTextArea.setPreferredSize(
new java.awt.Dimension(14, 40));
570 setDescScrollPanel.setViewportView(setDescriptionTextArea);
572 editSetButton.setFont(editSetButton.getFont().deriveFont(editSetButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
573 editSetButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/edit16.png")));
574 org.openide.awt.Mnemonics.setLocalizedText(editSetButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.editSetButton.text"));
575 editSetButton.setEnabled(
false);
576 editSetButton.addActionListener(
new java.awt.event.ActionListener() {
577 public void actionPerformed(java.awt.event.ActionEvent evt) {
578 editSetButtonActionPerformed(evt);
582 setsListScrollPane.setFont(setsListScrollPane.getFont().deriveFont(setsListScrollPane.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
584 setsList.setFont(setsList.getFont().deriveFont(setsList.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
585 setsList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
586 setsListScrollPane.setViewportView(setsList);
588 fileNameButtonGroup.add(fileNameExtensionRadioButton);
589 fileNameExtensionRadioButton.setFont(fileNameExtensionRadioButton.getFont().deriveFont(fileNameExtensionRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
590 org.openide.awt.Mnemonics.setLocalizedText(fileNameExtensionRadioButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.fileNameExtensionRadioButton.text"));
591 fileNameExtensionRadioButton.setEnabled(
false);
593 jLabel3.setFont(jLabel3.getFont().deriveFont(jLabel3.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
594 org.openide.awt.Mnemonics.setLocalizedText(jLabel3,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel3.text"));
596 fileNameTextField.setEditable(
false);
597 fileNameTextField.setFont(fileNameTextField.getFont().deriveFont(fileNameTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
598 fileNameTextField.setText(
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.fileNameTextField.text"));
599 fileNameTextField.addActionListener(
new java.awt.event.ActionListener() {
600 public void actionPerformed(java.awt.event.ActionEvent evt) {
601 fileNameTextFieldActionPerformed(evt);
605 jLabel5.setFont(jLabel5.getFont().deriveFont(jLabel5.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
606 org.openide.awt.Mnemonics.setLocalizedText(jLabel5,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel5.text"));
608 fileNameButtonGroup.add(fileNameRadioButton);
609 fileNameRadioButton.setFont(fileNameRadioButton.getFont().deriveFont(fileNameRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
610 org.openide.awt.Mnemonics.setLocalizedText(fileNameRadioButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.fileNameRadioButton.text"));
611 fileNameRadioButton.setEnabled(
false);
613 rulePathConditionTextField.setEditable(
false);
614 rulePathConditionTextField.setFont(rulePathConditionTextField.getFont().deriveFont(rulePathConditionTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
615 rulePathConditionTextField.setText(
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.rulePathConditionTextField.text"));
617 ignoreKnownFilesCheckbox.setFont(ignoreKnownFilesCheckbox.getFont().deriveFont(ignoreKnownFilesCheckbox.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
618 org.openide.awt.Mnemonics.setLocalizedText(ignoreKnownFilesCheckbox,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.ignoreKnownFilesCheckbox.text"));
619 ignoreKnownFilesCheckbox.setEnabled(
false);
620 ignoreKnownFilesCheckbox.addActionListener(
new java.awt.event.ActionListener() {
621 public void actionPerformed(java.awt.event.ActionEvent evt) {
622 ignoreKnownFilesCheckboxActionPerformed(evt);
626 fileNameRegexCheckbox.setFont(fileNameRegexCheckbox.getFont().deriveFont(fileNameRegexCheckbox.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
627 org.openide.awt.Mnemonics.setLocalizedText(fileNameRegexCheckbox,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.fileNameRegexCheckbox.text"));
628 fileNameRegexCheckbox.setEnabled(
false);
630 separator.setOrientation(javax.swing.SwingConstants.VERTICAL);
632 setsListLabel.setFont(setsListLabel.getFont().deriveFont(setsListLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
633 org.openide.awt.Mnemonics.setLocalizedText(setsListLabel,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.setsListLabel.text"));
635 typeButtonGroup.add(bothRadioButton);
636 bothRadioButton.setFont(bothRadioButton.getFont().deriveFont(bothRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
637 org.openide.awt.Mnemonics.setLocalizedText(bothRadioButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.bothRadioButton.text"));
638 bothRadioButton.setEnabled(
false);
640 deleteSetButton.setFont(deleteSetButton.getFont().deriveFont(deleteSetButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
641 deleteSetButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/delete16.png")));
642 org.openide.awt.Mnemonics.setLocalizedText(deleteSetButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.deleteSetButton.text"));
643 deleteSetButton.setEnabled(
false);
644 deleteSetButton.addActionListener(
new java.awt.event.ActionListener() {
645 public void actionPerformed(java.awt.event.ActionEvent evt) {
646 deleteSetButtonActionPerformed(evt);
650 deleteRuleButton.setFont(deleteRuleButton.getFont().deriveFont(deleteRuleButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
651 deleteRuleButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/delete16.png")));
652 org.openide.awt.Mnemonics.setLocalizedText(deleteRuleButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.deleteRuleButton.text"));
653 deleteRuleButton.setEnabled(
false);
654 deleteRuleButton.addActionListener(
new java.awt.event.ActionListener() {
655 public void actionPerformed(java.awt.event.ActionEvent evt) {
656 deleteRuleButtonActionPerformed(evt);
660 newSetButton.setFont(newSetButton.getFont().deriveFont(newSetButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
661 newSetButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/add16.png")));
662 org.openide.awt.Mnemonics.setLocalizedText(newSetButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.newSetButton.text"));
663 newSetButton.addActionListener(
new java.awt.event.ActionListener() {
664 public void actionPerformed(java.awt.event.ActionEvent evt) {
665 newSetButtonActionPerformed(evt);
669 jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
670 org.openide.awt.Mnemonics.setLocalizedText(jLabel2,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel2.text"));
672 typeButtonGroup.add(dirsRadioButton);
673 dirsRadioButton.setFont(dirsRadioButton.getFont().deriveFont(dirsRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
674 org.openide.awt.Mnemonics.setLocalizedText(dirsRadioButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.dirsRadioButton.text"));
675 dirsRadioButton.setEnabled(
false);
676 dirsRadioButton.addActionListener(
new java.awt.event.ActionListener() {
677 public void actionPerformed(java.awt.event.ActionEvent evt) {
678 dirsRadioButtonActionPerformed(evt);
682 jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
683 org.openide.awt.Mnemonics.setLocalizedText(jLabel1,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel1.text"));
685 jLabel4.setFont(jLabel4.getFont().deriveFont(jLabel4.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
686 org.openide.awt.Mnemonics.setLocalizedText(jLabel4,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel4.text"));
688 rulePathConditionRegexCheckBox.setFont(rulePathConditionRegexCheckBox.getFont().deriveFont(rulePathConditionRegexCheckBox.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
689 org.openide.awt.Mnemonics.setLocalizedText(rulePathConditionRegexCheckBox,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.rulePathConditionRegexCheckBox.text"));
690 rulePathConditionRegexCheckBox.setEnabled(
false);
692 jScrollPane2.setFont(jScrollPane2.getFont().deriveFont(jScrollPane2.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
694 jTextArea1.setEditable(
false);
695 jTextArea1.setBackground(
new java.awt.Color(240, 240, 240));
696 jTextArea1.setColumns(20);
697 jTextArea1.setFont(jTextArea1.getFont().deriveFont(jTextArea1.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
698 jTextArea1.setLineWrap(
true);
699 jTextArea1.setRows(3);
700 jTextArea1.setText(
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jTextArea1.text"));
701 jTextArea1.setWrapStyleWord(
true);
702 jScrollPane2.setViewportView(jTextArea1);
704 org.openide.awt.Mnemonics.setLocalizedText(jLabel7,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel7.text"));
706 mimeTypeComboBox.setEditable(
true);
707 mimeTypeComboBox.setModel(
new javax.swing.DefaultComboBoxModel<String>(
new String[] {
""}));
708 mimeTypeComboBox.setEnabled(
false);
709 mimeTypeComboBox.setMinimumSize(
new java.awt.Dimension(0, 20));
710 mimeTypeComboBox.setPreferredSize(
new java.awt.Dimension(12, 20));
712 org.openide.awt.Mnemonics.setLocalizedText(jLabel8,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel8.text"));
714 equalitySignComboBox.setModel(
new javax.swing.DefaultComboBoxModel<String>(
new String[] {
"=",
">",
"≥",
"<",
"≤" }));
715 equalitySignComboBox.setEnabled(
false);
717 fileSizeSpinner.setEnabled(
false);
718 fileSizeSpinner.setMinimumSize(
new java.awt.Dimension(2, 20));
720 fileSizeUnitComboBox.setModel(
new javax.swing.DefaultComboBoxModel<String>(
new String[] { Bundle.InterestingItemDefsPanel_bytes(), Bundle.InterestingItemDefsPanel_kiloBytes(), Bundle.InterestingItemDefsPanel_megaBytes(), Bundle.InterestingItemDefsPanel_gigaBytes() }));
721 fileSizeUnitComboBox.setEnabled(
false);
723 javax.swing.GroupLayout jPanel1Layout =
new javax.swing.GroupLayout(jPanel1);
724 jPanel1.setLayout(jPanel1Layout);
725 jPanel1Layout.setHorizontalGroup(
726 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
727 .addGroup(jPanel1Layout.createSequentialGroup()
728 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
729 .addGroup(jPanel1Layout.createSequentialGroup()
730 .addGap(360, 360, 360)
731 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
732 .addComponent(rulesListLabel)
733 .addComponent(jLabel5)
734 .addComponent(ignoreKnownFilesCheckbox)
735 .addComponent(jLabel6))
736 .addGap(0, 0, Short.MAX_VALUE))
737 .addGroup(jPanel1Layout.createSequentialGroup()
739 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
740 .addGroup(jPanel1Layout.createSequentialGroup()
741 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
742 .addComponent(setsListLabel)
743 .addComponent(setsListScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 314, javax.swing.GroupLayout.PREFERRED_SIZE)
744 .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 314, javax.swing.GroupLayout.PREFERRED_SIZE))
746 .addComponent(separator, javax.swing.GroupLayout.PREFERRED_SIZE, 6, javax.swing.GroupLayout.PREFERRED_SIZE))
747 .addGroup(jPanel1Layout.createSequentialGroup()
748 .addComponent(newSetButton, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
749 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
750 .addComponent(editSetButton, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
751 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
752 .addComponent(deleteSetButton)))
754 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
755 .addGroup(jPanel1Layout.createSequentialGroup()
757 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
758 .addGroup(jPanel1Layout.createSequentialGroup()
759 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
760 .addGroup(jPanel1Layout.createSequentialGroup()
761 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
762 .addComponent(jLabel3)
763 .addComponent(jLabel2))
765 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
766 .addComponent(jLabel4)
767 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
768 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
769 .addComponent(rulePathConditionTextField, javax.swing.GroupLayout.Alignment.LEADING)
770 .addComponent(fileNameTextField)))
771 .addGroup(jPanel1Layout.createSequentialGroup()
772 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
773 .addComponent(jLabel7)
774 .addComponent(jLabel8))
776 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
777 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
778 .addComponent(equalitySignComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
779 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
780 .addComponent(fileSizeSpinner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
781 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
782 .addComponent(fileSizeUnitComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
784 .addComponent(mimeTypeComboBox, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
785 .addGroup(jPanel1Layout.createSequentialGroup()
786 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
787 .addComponent(setDescScrollPanel)
788 .addComponent(rulesListScrollPane))
790 .addGroup(jPanel1Layout.createSequentialGroup()
791 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
792 .addComponent(jLabel1)
793 .addGroup(jPanel1Layout.createSequentialGroup()
795 .addComponent(filesRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
796 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
797 .addComponent(dirsRadioButton)
798 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
799 .addComponent(bothRadioButton))
800 .addGroup(jPanel1Layout.createSequentialGroup()
801 .addComponent(newRuleButton)
803 .addComponent(editRuleButton)
805 .addComponent(deleteRuleButton))
806 .addGroup(jPanel1Layout.createSequentialGroup()
808 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
809 .addGroup(jPanel1Layout.createSequentialGroup()
810 .addComponent(fileNameRadioButton)
812 .addComponent(fileNameExtensionRadioButton)
813 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
814 .addComponent(fileNameRegexCheckbox))
815 .addComponent(rulePathConditionRegexCheckBox))))
819 jPanel1Layout.setVerticalGroup(
820 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
821 .addGroup(jPanel1Layout.createSequentialGroup()
823 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
824 .addComponent(separator)
825 .addGroup(jPanel1Layout.createSequentialGroup()
826 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
827 .addGroup(jPanel1Layout.createSequentialGroup()
828 .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
830 .addComponent(setsListLabel)
831 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
832 .addComponent(setsListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 354, Short.MAX_VALUE)
833 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
834 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
835 .addComponent(newSetButton)
836 .addComponent(editSetButton)
837 .addComponent(deleteSetButton)))
838 .addGroup(jPanel1Layout.createSequentialGroup()
839 .addComponent(jLabel6)
840 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
841 .addComponent(jLabel5)
842 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
843 .addComponent(setDescScrollPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
844 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
845 .addComponent(ignoreKnownFilesCheckbox)
846 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
847 .addComponent(rulesListLabel)
848 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
849 .addComponent(rulesListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 67, Short.MAX_VALUE)
851 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
852 .addComponent(newRuleButton)
853 .addComponent(editRuleButton)
854 .addComponent(deleteRuleButton))
855 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
856 .addComponent(jLabel1)
858 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
859 .addComponent(jLabel2)
860 .addComponent(filesRadioButton)
861 .addComponent(dirsRadioButton)
862 .addComponent(bothRadioButton))
864 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
865 .addComponent(jLabel3)
866 .addComponent(fileNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
867 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
868 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
869 .addComponent(fileNameRadioButton)
870 .addComponent(fileNameExtensionRadioButton)
871 .addComponent(fileNameRegexCheckbox))
873 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
874 .addComponent(jLabel4)
875 .addComponent(rulePathConditionTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
876 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
877 .addComponent(rulePathConditionRegexCheckBox)
878 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
879 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
880 .addComponent(jLabel7)
881 .addComponent(mimeTypeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
883 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
884 .addComponent(jLabel8)
885 .addComponent(equalitySignComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
886 .addComponent(fileSizeSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
887 .addComponent(fileSizeUnitComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
888 .addGap(13, 13, 13)))
892 jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL,
new java.awt.Component[] {deleteRuleButton, deleteSetButton, editRuleButton, editSetButton, newRuleButton, newSetButton});
894 jScrollPane1.setViewportView(jPanel1);
896 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
897 this.setLayout(layout);
898 layout.setHorizontalGroup(
899 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
900 .addComponent(jScrollPane1)
902 layout.setVerticalGroup(
903 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
904 .addComponent(jScrollPane1)
908 private void dirsRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {
912 private void newSetButtonActionPerformed(java.awt.event.ActionEvent evt) {
913 this.doFileSetsDialog(null);
914 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
917 private void deleteRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {
922 FilesSet oldSet = this.setsList.getSelectedValue();
923 Map<String, FilesSet.Rule> rules =
new HashMap<>(oldSet.getRules());
924 FilesSet.Rule selectedRule = this.rulesList.getSelectedValue();
925 rules.remove(selectedRule.getUuid());
926 this.replaceFilesSet(oldSet, oldSet.getName(), oldSet.getDescription(), oldSet.ignoresKnownFiles(), rules);
927 if (!this.rulesListModel.isEmpty()) {
928 this.rulesList.setSelectedIndex(0);
930 this.resetRuleComponents();
932 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
935 private void deleteSetButtonActionPerformed(java.awt.event.ActionEvent evt) {
936 FilesSet selectedSet = this.setsList.getSelectedValue();
937 this.filesSets.remove(selectedSet.getName());
938 this.setsListModel.removeElement(selectedSet);
942 if (!this.filesSets.isEmpty()) {
943 this.setsList.setSelectedIndex(0);
945 this.resetComponents();
947 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
950 private void ignoreKnownFilesCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
954 private void editSetButtonActionPerformed(java.awt.event.ActionEvent evt) {
955 this.doFileSetsDialog(this.setsList.getSelectedValue());
956 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
959 private void editRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {
960 this.doFilesSetRuleDialog(this.rulesList.getSelectedValue());
961 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
964 private void newRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {
965 this.doFilesSetRuleDialog(null);
966 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
969 private void fileNameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {
974 private javax.swing.JRadioButton bothRadioButton;
975 private javax.swing.JButton deleteRuleButton;
976 private javax.swing.JButton deleteSetButton;
977 private javax.swing.JRadioButton dirsRadioButton;
978 private javax.swing.JButton editRuleButton;
979 private javax.swing.JButton editSetButton;
980 private javax.swing.JComboBox<String> equalitySignComboBox;
981 private javax.swing.ButtonGroup fileNameButtonGroup;
982 private javax.swing.JRadioButton fileNameExtensionRadioButton;
983 private javax.swing.JRadioButton fileNameRadioButton;
984 private javax.swing.JCheckBox fileNameRegexCheckbox;
985 private javax.swing.JTextField fileNameTextField;
986 private javax.swing.JSpinner fileSizeSpinner;
987 private javax.swing.JComboBox<String> fileSizeUnitComboBox;
988 private javax.swing.JRadioButton filesRadioButton;
989 private javax.swing.JCheckBox ignoreKnownFilesCheckbox;
990 private javax.swing.JLabel jLabel1;
991 private javax.swing.JLabel jLabel2;
992 private javax.swing.JLabel jLabel3;
993 private javax.swing.JLabel jLabel4;
994 private javax.swing.JLabel jLabel5;
995 private javax.swing.JLabel jLabel6;
996 private javax.swing.JLabel jLabel7;
997 private javax.swing.JLabel jLabel8;
998 private javax.swing.JPanel jPanel1;
999 private javax.swing.JScrollPane jScrollPane1;
1000 private javax.swing.JScrollPane jScrollPane2;
1001 private javax.swing.JTextArea jTextArea1;
1002 private javax.swing.JComboBox<String> mimeTypeComboBox;
1003 private javax.swing.JButton newRuleButton;
1004 private javax.swing.JButton newSetButton;
1005 private javax.swing.JCheckBox rulePathConditionRegexCheckBox;
1006 private javax.swing.JTextField rulePathConditionTextField;
1007 private javax.swing.JList<FilesSet.Rule> rulesList;
1008 private javax.swing.JLabel rulesListLabel;
1009 private javax.swing.JScrollPane rulesListScrollPane;
1010 private javax.swing.JSeparator separator;
1011 private javax.swing.JScrollPane setDescScrollPanel;
1012 private javax.swing.JTextArea setDescriptionTextArea;
1013 private javax.swing.JList<FilesSet> setsList;
1014 private javax.swing.JLabel setsListLabel;
1015 private javax.swing.JScrollPane setsListScrollPane;
1016 private javax.swing.ButtonGroup typeButtonGroup;
void valueChanged(ListSelectionEvent e)
void valueChanged(ListSelectionEvent e)