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.SortedSet;
29 import java.util.TreeMap;
30 import java.util.logging.Level;
31 import javax.swing.DefaultListModel;
32 import javax.swing.JButton;
33 import javax.swing.JOptionPane;
34 import javax.swing.event.ListSelectionEvent;
35 import javax.swing.event.ListSelectionListener;
36 import org.apache.tika.mime.MediaType;
37 import org.apache.tika.mime.MimeTypes;
38 import org.netbeans.spi.options.OptionsPanelController;
39 import org.openide.util.NbBundle;
49 final class InterestingItemDefsPanel
extends IngestModuleGlobalSettingsPanel implements OptionsPanel {
52 "InterestingItemDefsPanel.bytes=Bytes",
53 "InterestingItemDefsPanel.kiloBytes=Kilobytes",
54 "InterestingItemDefsPanel.megaBytes=Megabytes",
55 "InterestingItemDefsPanel.gigaBytes=Gigabytes",
56 "InterestingItemsDefsPanel.loadError=Error loading interesting files sets from file.",
57 "InterestingItemsDefsPanel.saveError=Error saving interesting files sets to file."
60 private static final SortedSet<MediaType> mediaTypes = MimeTypes.getDefaultMimeTypes().getMediaTypeRegistry().getTypes();
61 private final DefaultListModel<FilesSet> setsListModel =
new DefaultListModel<>();
62 private final DefaultListModel<FilesSet.Rule> rulesListModel =
new DefaultListModel<>();
63 private final Logger logger = Logger.getLogger(InterestingItemDefsPanel.class.getName());
64 private JButton okButton =
new JButton(
"OK");
65 private JButton cancelButton =
new JButton(
"Cancel");
74 private TreeMap<String, FilesSet> filesSets;
79 InterestingItemDefsPanel() {
80 this.initComponents();
82 this.setsList.setModel(setsListModel);
83 this.setsList.addListSelectionListener(
new InterestingItemDefsPanel.SetsListSelectionListener());
84 this.rulesList.setModel(rulesListModel);
85 this.rulesList.addListSelectionListener(
new InterestingItemDefsPanel.RulesListSelectionListener());
88 @NbBundle.Messages({
"InterestingItemDefsPanel.Title=Global Interesting Items Settings"})
89 private void customInit() {
90 setName(Bundle.InterestingItemDefsPanel_Title());
92 Set<String> fileTypesCollated =
new HashSet<>();
93 for (MediaType mediaType : mediaTypes) {
94 fileTypesCollated.add(mediaType.toString());
97 FileTypeDetector fileTypeDetector;
99 fileTypeDetector =
new FileTypeDetector();
100 List<String> userDefinedFileTypes = fileTypeDetector.getUserDefinedTypes();
101 fileTypesCollated.addAll(userDefinedFileTypes);
103 }
catch (FileTypeDetector.FileTypeDetectorInitException ex) {
104 logger.log(Level.SEVERE,
"Unable to get user defined file types", ex);
107 List<String> toSort =
new ArrayList<>(fileTypesCollated);
108 toSort.sort((String string1, String string2) -> {
109 int result = String.CASE_INSENSITIVE_ORDER.compare(string1, string2);
111 result = string1.compareTo(string2);
116 for (String file : toSort) {
117 mimeTypeComboBox.addItem(file);
119 this.fileSizeUnitComboBox.setSelectedIndex(1);
120 this.equalitySignComboBox.setSelectedIndex(2);
127 public void saveSettings() {
129 InterestingItemDefsManager.getInstance().setInterestingFilesSets(this.filesSets);
130 }
catch (InterestingItemDefsManager.InterestingItemDefsManagerException ex) {
131 MessageNotifyUtil.Message.error(Bundle.InterestingItemsDefsPanel_saveError());
139 public void store() {
148 this.resetComponents();
153 this.filesSets =
new TreeMap<>(InterestingItemDefsManager.getInstance().getInterestingFilesSets());
154 }
catch (InterestingItemDefsManager.InterestingItemDefsManagerException ex) {
155 MessageNotifyUtil.Message.error(Bundle.InterestingItemsDefsPanel_loadError());
156 this.filesSets =
new TreeMap<>();
161 for (FilesSet set : this.filesSets.values()) {
162 this.setsListModel.addElement(set);
165 if (!this.filesSets.isEmpty()) {
168 EventQueue.invokeLater(() -> {
169 InterestingItemDefsPanel.this.setsList.setSelectedIndex(0);
177 private void resetComponents() {
178 this.resetRuleComponents();
179 this.setsListModel.clear();
180 this.setDescriptionTextArea.setText(
"");
181 this.ignoreKnownFilesCheckbox.setSelected(
true);
182 this.newSetButton.setEnabled(
true);
183 this.editSetButton.setEnabled(
false);
184 this.deleteSetButton.setEnabled(
false);
191 private void resetRuleComponents() {
192 this.fileNameTextField.setText(
"");
193 this.fileNameRadioButton.setSelected(
true);
194 this.fileNameRegexCheckbox.setSelected(
false);
195 this.filesRadioButton.setSelected(
true);
196 this.rulePathConditionTextField.setText(
"");
197 this.rulePathConditionRegexCheckBox.setSelected(
false);
198 this.mimeTypeComboBox.setSelectedIndex(0);
199 this.equalitySignComboBox.setSelectedIndex(2);
200 this.fileSizeUnitComboBox.setSelectedIndex(1);
201 this.fileSizeSpinner.setValue(0);
202 this.newRuleButton.setEnabled(!this.setsListModel.isEmpty());
203 this.editRuleButton.setEnabled(
false);
204 this.deleteRuleButton.setEnabled(
false);
214 if (e.getValueIsAdjusting()) {
218 InterestingItemDefsPanel.this.rulesListModel.clear();
219 InterestingItemDefsPanel.this.resetRuleComponents();
223 FilesSet selectedSet = InterestingItemDefsPanel.this.setsList.getSelectedValue();
224 if (selectedSet != null) {
227 InterestingItemDefsPanel.this.setDescriptionTextArea.setText(selectedSet.getDescription());
228 InterestingItemDefsPanel.this.ignoreKnownFilesCheckbox.setSelected(selectedSet.ignoresKnownFiles());
231 InterestingItemDefsPanel.this.newSetButton.setEnabled(
true);
232 InterestingItemDefsPanel.this.editSetButton.setEnabled(
true);
233 InterestingItemDefsPanel.this.deleteSetButton.setEnabled(
true);
236 TreeMap<String, FilesSet.Rule> rules =
new TreeMap<>(selectedSet.getRules());
237 for (FilesSet.Rule rule : rules.values()) {
238 InterestingItemDefsPanel.this.rulesListModel.addElement(rule);
242 if (!InterestingItemDefsPanel.this.rulesListModel.isEmpty()) {
243 InterestingItemDefsPanel.this.rulesList.setSelectedIndex(0);
258 if (e.getValueIsAdjusting()) {
263 FilesSet.Rule rule = InterestingItemDefsPanel.this.rulesList.getSelectedValue();
266 FilesSet.Rule.FileNameCondition nameCondition = rule.getFileNameCondition();
267 FilesSet.Rule.MetaTypeCondition typeCondition = rule.getMetaTypeCondition();
268 FilesSet.Rule.ParentPathCondition pathCondition = rule.getPathCondition();
269 FilesSet.Rule.MimeTypeCondition mimeTypeCondition = rule.getMimeTypeCondition();
270 FilesSet.Rule.FileSizeCondition fileSizeCondition = rule.getFileSizeCondition();
274 if (nameCondition != null) {
275 InterestingItemDefsPanel.this.fileNameTextField.setText(nameCondition.getTextToMatch());
276 InterestingItemDefsPanel.this.fileNameRadioButton.setSelected(nameCondition instanceof FilesSet.Rule.FullNameCondition);
277 InterestingItemDefsPanel.this.fileNameExtensionRadioButton.setSelected(nameCondition instanceof FilesSet.Rule.ExtensionCondition);
278 InterestingItemDefsPanel.this.fileNameRegexCheckbox.setSelected(nameCondition.isRegex());
280 InterestingItemDefsPanel.this.fileNameTextField.setText(
"");
281 InterestingItemDefsPanel.this.fileNameRadioButton.setSelected(
true);
282 InterestingItemDefsPanel.this.fileNameExtensionRadioButton.setSelected(
false);
283 InterestingItemDefsPanel.this.fileNameRegexCheckbox.setSelected(
false);
285 switch (typeCondition.getMetaType()) {
287 InterestingItemDefsPanel.this.filesRadioButton.setSelected(
true);
290 InterestingItemDefsPanel.this.dirsRadioButton.setSelected(
true);
292 case FILES_AND_DIRECTORIES:
293 InterestingItemDefsPanel.this.bothRadioButton.setSelected(
true);
296 if (pathCondition != null) {
297 InterestingItemDefsPanel.this.rulePathConditionTextField.setText(pathCondition.getTextToMatch());
298 InterestingItemDefsPanel.this.rulePathConditionRegexCheckBox.setSelected(pathCondition.isRegex());
300 InterestingItemDefsPanel.this.rulePathConditionTextField.setText(
"");
301 InterestingItemDefsPanel.this.rulePathConditionRegexCheckBox.setSelected(
false);
303 if (mimeTypeCondition != null) {
304 InterestingItemDefsPanel.this.mimeTypeComboBox.setSelectedItem(mimeTypeCondition.getMimeType());
306 InterestingItemDefsPanel.this.mimeTypeComboBox.setSelectedIndex(0);
308 if (fileSizeCondition != null) {
309 InterestingItemDefsPanel.this.fileSizeUnitComboBox.setSelectedItem(fileSizeCondition.getUnit().getName());
310 InterestingItemDefsPanel.this.equalitySignComboBox.setSelectedItem(fileSizeCondition.getComparator().getSymbol());
311 InterestingItemDefsPanel.this.fileSizeSpinner.setValue(fileSizeCondition.getSizeValue());
313 InterestingItemDefsPanel.this.fileSizeUnitComboBox.setSelectedIndex(1);
314 InterestingItemDefsPanel.this.equalitySignComboBox.setSelectedIndex(2);
315 InterestingItemDefsPanel.this.fileSizeSpinner.setValue(0);
319 InterestingItemDefsPanel.this.newRuleButton.setEnabled(
true);
320 InterestingItemDefsPanel.this.editRuleButton.setEnabled(
true);
321 InterestingItemDefsPanel.this.deleteRuleButton.setEnabled(
true);
323 InterestingItemDefsPanel.this.resetRuleComponents();
337 private void doFileSetsDialog(FilesSet selectedSet) {
340 if (selectedSet != null) {
345 panel =
new FilesSetPanel();
351 int option = JOptionPane.OK_OPTION;
353 option = JOptionPane.showConfirmDialog(null, panel, NbBundle.getMessage(FilesSetPanel.class,
"FilesSetPanel.title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
354 }
while (option == JOptionPane.OK_OPTION && !panel.isValidDefinition());
358 if (this.filesSets.containsKey(panel.getFilesSetName()) && selectedSet == null) {
359 MessageNotifyUtil.Message.error(NbBundle.getMessage(
this.getClass(),
360 "InterestingItemDefsPanel.doFileSetsDialog.duplicateRuleSet.text",
361 panel.getFilesSetName()));
365 if (option == JOptionPane.OK_OPTION) {
366 Map<String, FilesSet.Rule> rules =
new HashMap<>();
367 if (selectedSet != null) {
371 rules.putAll(selectedSet.getRules());
373 this.replaceFilesSet(selectedSet, panel.getFilesSetName(), panel.getFilesSetDescription(), panel.getFileSetIgnoresKnownFiles(), rules);
384 private void doFilesSetRuleDialog(FilesSet.Rule selectedRule) {
386 FilesSetRulePanel panel;
387 if (selectedRule != null) {
389 panel =
new FilesSetRulePanel(selectedRule, okButton, cancelButton);
392 panel =
new FilesSetRulePanel(okButton, cancelButton);
397 int option = JOptionPane.OK_OPTION;
399 option = JOptionPane.showOptionDialog(null, panel, NbBundle.getMessage(FilesSetPanel.class,
"FilesSetPanel.title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null,
new Object[]{okButton, cancelButton}, okButton);
400 }
while (option == JOptionPane.OK_OPTION && !panel.isValidRuleDefinition());
402 if (option == JOptionPane.OK_OPTION) {
406 FilesSet selectedSet = this.setsList.getSelectedValue();
407 Map<String, FilesSet.Rule> rules =
new HashMap<>(selectedSet.getRules());
411 if (selectedRule != null) {
412 rules.remove(selectedRule.getUuid());
414 FilesSet.Rule newRule =
new FilesSet.Rule(panel.getRuleName(), panel.getFileNameCondition(), panel.getMetaTypeCondition(), panel.getPathCondition(), panel.getMimeTypeCondition(), panel.getFileSizeCondition());
415 rules.put(newRule.getUuid(), newRule);
419 this.replaceFilesSet(selectedSet, selectedSet.getName(), selectedSet.getDescription(), selectedSet.ignoresKnownFiles(), rules);
424 EventQueue.invokeLater(() -> {
425 this.rulesList.setSelectedValue(newRule,
true);
443 void replaceFilesSet(FilesSet oldSet, String name, String description,
boolean ignoresKnownFiles, Map<String, FilesSet.Rule> rules) {
444 if (oldSet != null) {
447 this.filesSets.remove(oldSet.getName());
452 FilesSet newSet =
new FilesSet(name, description, ignoresKnownFiles, rules);
453 this.filesSets.put(newSet.getName(), newSet);
457 InterestingItemDefsPanel.this.setsListModel.clear();
458 for (FilesSet set : this.filesSets.values()) {
459 this.setsListModel.addElement(set);
465 this.setsList.setSelectedValue(newSet,
true);
473 @SuppressWarnings(
"unchecked")
475 private
void initComponents() {
477 fileNameButtonGroup =
new javax.swing.ButtonGroup();
478 typeButtonGroup =
new javax.swing.ButtonGroup();
479 jScrollPane1 =
new javax.swing.JScrollPane();
480 jPanel1 =
new javax.swing.JPanel();
481 jLabel6 =
new javax.swing.JLabel();
482 newRuleButton =
new javax.swing.JButton();
483 filesRadioButton =
new javax.swing.JRadioButton();
484 editRuleButton =
new javax.swing.JButton();
485 rulesListLabel =
new javax.swing.JLabel();
486 rulesListScrollPane =
new javax.swing.JScrollPane();
487 rulesList =
new javax.swing.JList<>();
488 setDescScrollPanel =
new javax.swing.JScrollPane();
489 setDescriptionTextArea =
new javax.swing.JTextArea();
490 editSetButton =
new javax.swing.JButton();
491 setsListScrollPane =
new javax.swing.JScrollPane();
492 setsList =
new javax.swing.JList<>();
493 fileNameExtensionRadioButton =
new javax.swing.JRadioButton();
494 jLabel3 =
new javax.swing.JLabel();
495 fileNameTextField =
new javax.swing.JTextField();
496 jLabel5 =
new javax.swing.JLabel();
497 fileNameRadioButton =
new javax.swing.JRadioButton();
498 rulePathConditionTextField =
new javax.swing.JTextField();
499 ignoreKnownFilesCheckbox =
new javax.swing.JCheckBox();
500 fileNameRegexCheckbox =
new javax.swing.JCheckBox();
501 separator =
new javax.swing.JSeparator();
502 setsListLabel =
new javax.swing.JLabel();
503 bothRadioButton =
new javax.swing.JRadioButton();
504 deleteSetButton =
new javax.swing.JButton();
505 deleteRuleButton =
new javax.swing.JButton();
506 newSetButton =
new javax.swing.JButton();
507 jLabel2 =
new javax.swing.JLabel();
508 dirsRadioButton =
new javax.swing.JRadioButton();
509 jLabel1 =
new javax.swing.JLabel();
510 jLabel4 =
new javax.swing.JLabel();
511 rulePathConditionRegexCheckBox =
new javax.swing.JCheckBox();
512 jScrollPane2 =
new javax.swing.JScrollPane();
513 jTextArea1 =
new javax.swing.JTextArea();
514 jLabel7 =
new javax.swing.JLabel();
515 mimeTypeComboBox =
new javax.swing.JComboBox<>();
516 jLabel8 =
new javax.swing.JLabel();
517 equalitySignComboBox =
new javax.swing.JComboBox<String>();
518 fileSizeSpinner =
new javax.swing.JSpinner();
519 fileSizeUnitComboBox =
new javax.swing.JComboBox<String>();
521 setFont(getFont().deriveFont(getFont().getStyle() & ~java.awt.Font.BOLD, 11));
523 jScrollPane1.setFont(jScrollPane1.getFont().deriveFont(jScrollPane1.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
525 jPanel1.setFont(jPanel1.getFont().deriveFont(jPanel1.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
527 jLabel6.setFont(jLabel6.getFont().deriveFont(jLabel6.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
528 org.openide.awt.Mnemonics.setLocalizedText(jLabel6,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel6.text"));
530 newRuleButton.setFont(newRuleButton.getFont().deriveFont(newRuleButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
531 newRuleButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/add16.png")));
532 org.openide.awt.Mnemonics.setLocalizedText(newRuleButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.newRuleButton.text"));
533 newRuleButton.addActionListener(
new java.awt.event.ActionListener() {
534 public void actionPerformed(java.awt.event.ActionEvent evt) {
535 newRuleButtonActionPerformed(evt);
539 typeButtonGroup.add(filesRadioButton);
540 filesRadioButton.setFont(filesRadioButton.getFont().deriveFont(filesRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
541 filesRadioButton.setSelected(
true);
542 org.openide.awt.Mnemonics.setLocalizedText(filesRadioButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.filesRadioButton.text"));
543 filesRadioButton.setEnabled(
false);
545 editRuleButton.setFont(editRuleButton.getFont().deriveFont(editRuleButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
546 editRuleButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/edit16.png")));
547 org.openide.awt.Mnemonics.setLocalizedText(editRuleButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.editRuleButton.text"));
548 editRuleButton.setEnabled(
false);
549 editRuleButton.addActionListener(
new java.awt.event.ActionListener() {
550 public void actionPerformed(java.awt.event.ActionEvent evt) {
551 editRuleButtonActionPerformed(evt);
555 rulesListLabel.setFont(rulesListLabel.getFont().deriveFont(rulesListLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
556 org.openide.awt.Mnemonics.setLocalizedText(rulesListLabel,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.rulesListLabel.text"));
558 rulesListScrollPane.setFont(rulesListScrollPane.getFont().deriveFont(rulesListScrollPane.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
560 rulesList.setFont(rulesList.getFont().deriveFont(rulesList.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
561 rulesList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
562 rulesListScrollPane.setViewportView(rulesList);
564 setDescScrollPanel.setFont(setDescScrollPanel.getFont().deriveFont(setDescScrollPanel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
566 setDescriptionTextArea.setEditable(
false);
567 setDescriptionTextArea.setBackground(
new java.awt.Color(240, 240, 240));
568 setDescriptionTextArea.setColumns(20);
569 setDescriptionTextArea.setFont(setDescriptionTextArea.getFont().deriveFont(setDescriptionTextArea.getFont().getStyle() & ~java.awt.Font.BOLD, 13));
570 setDescriptionTextArea.setLineWrap(
true);
571 setDescriptionTextArea.setRows(2);
572 setDescriptionTextArea.setMinimumSize(
new java.awt.Dimension(10, 22));
573 setDescriptionTextArea.setPreferredSize(
new java.awt.Dimension(14, 40));
574 setDescScrollPanel.setViewportView(setDescriptionTextArea);
576 editSetButton.setFont(editSetButton.getFont().deriveFont(editSetButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
577 editSetButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/edit16.png")));
578 org.openide.awt.Mnemonics.setLocalizedText(editSetButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.editSetButton.text"));
579 editSetButton.setEnabled(
false);
580 editSetButton.addActionListener(
new java.awt.event.ActionListener() {
581 public void actionPerformed(java.awt.event.ActionEvent evt) {
582 editSetButtonActionPerformed(evt);
586 setsListScrollPane.setFont(setsListScrollPane.getFont().deriveFont(setsListScrollPane.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
588 setsList.setFont(setsList.getFont().deriveFont(setsList.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
589 setsList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
590 setsListScrollPane.setViewportView(setsList);
592 fileNameButtonGroup.add(fileNameExtensionRadioButton);
593 fileNameExtensionRadioButton.setFont(fileNameExtensionRadioButton.getFont().deriveFont(fileNameExtensionRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
594 org.openide.awt.Mnemonics.setLocalizedText(fileNameExtensionRadioButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.fileNameExtensionRadioButton.text"));
595 fileNameExtensionRadioButton.setEnabled(
false);
597 jLabel3.setFont(jLabel3.getFont().deriveFont(jLabel3.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
598 org.openide.awt.Mnemonics.setLocalizedText(jLabel3,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel3.text"));
600 fileNameTextField.setEditable(
false);
601 fileNameTextField.setFont(fileNameTextField.getFont().deriveFont(fileNameTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
602 fileNameTextField.setText(
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.fileNameTextField.text"));
603 fileNameTextField.addActionListener(
new java.awt.event.ActionListener() {
604 public void actionPerformed(java.awt.event.ActionEvent evt) {
605 fileNameTextFieldActionPerformed(evt);
609 jLabel5.setFont(jLabel5.getFont().deriveFont(jLabel5.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
610 org.openide.awt.Mnemonics.setLocalizedText(jLabel5,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel5.text"));
612 fileNameButtonGroup.add(fileNameRadioButton);
613 fileNameRadioButton.setFont(fileNameRadioButton.getFont().deriveFont(fileNameRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
614 org.openide.awt.Mnemonics.setLocalizedText(fileNameRadioButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.fileNameRadioButton.text"));
615 fileNameRadioButton.setEnabled(
false);
617 rulePathConditionTextField.setEditable(
false);
618 rulePathConditionTextField.setFont(rulePathConditionTextField.getFont().deriveFont(rulePathConditionTextField.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
619 rulePathConditionTextField.setText(
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.rulePathConditionTextField.text"));
621 ignoreKnownFilesCheckbox.setFont(ignoreKnownFilesCheckbox.getFont().deriveFont(ignoreKnownFilesCheckbox.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
622 org.openide.awt.Mnemonics.setLocalizedText(ignoreKnownFilesCheckbox,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.ignoreKnownFilesCheckbox.text"));
623 ignoreKnownFilesCheckbox.setEnabled(
false);
624 ignoreKnownFilesCheckbox.addActionListener(
new java.awt.event.ActionListener() {
625 public void actionPerformed(java.awt.event.ActionEvent evt) {
626 ignoreKnownFilesCheckboxActionPerformed(evt);
630 fileNameRegexCheckbox.setFont(fileNameRegexCheckbox.getFont().deriveFont(fileNameRegexCheckbox.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
631 org.openide.awt.Mnemonics.setLocalizedText(fileNameRegexCheckbox,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.fileNameRegexCheckbox.text"));
632 fileNameRegexCheckbox.setEnabled(
false);
634 separator.setOrientation(javax.swing.SwingConstants.VERTICAL);
636 setsListLabel.setFont(setsListLabel.getFont().deriveFont(setsListLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
637 org.openide.awt.Mnemonics.setLocalizedText(setsListLabel,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.setsListLabel.text"));
639 typeButtonGroup.add(bothRadioButton);
640 bothRadioButton.setFont(bothRadioButton.getFont().deriveFont(bothRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
641 org.openide.awt.Mnemonics.setLocalizedText(bothRadioButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.bothRadioButton.text"));
642 bothRadioButton.setEnabled(
false);
644 deleteSetButton.setFont(deleteSetButton.getFont().deriveFont(deleteSetButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
645 deleteSetButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/delete16.png")));
646 org.openide.awt.Mnemonics.setLocalizedText(deleteSetButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.deleteSetButton.text"));
647 deleteSetButton.setEnabled(
false);
648 deleteSetButton.addActionListener(
new java.awt.event.ActionListener() {
649 public void actionPerformed(java.awt.event.ActionEvent evt) {
650 deleteSetButtonActionPerformed(evt);
654 deleteRuleButton.setFont(deleteRuleButton.getFont().deriveFont(deleteRuleButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
655 deleteRuleButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/delete16.png")));
656 org.openide.awt.Mnemonics.setLocalizedText(deleteRuleButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.deleteRuleButton.text"));
657 deleteRuleButton.setEnabled(
false);
658 deleteRuleButton.addActionListener(
new java.awt.event.ActionListener() {
659 public void actionPerformed(java.awt.event.ActionEvent evt) {
660 deleteRuleButtonActionPerformed(evt);
664 newSetButton.setFont(newSetButton.getFont().deriveFont(newSetButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
665 newSetButton.setIcon(
new javax.swing.ImageIcon(getClass().getResource(
"/org/sleuthkit/autopsy/images/add16.png")));
666 org.openide.awt.Mnemonics.setLocalizedText(newSetButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.newSetButton.text"));
667 newSetButton.addActionListener(
new java.awt.event.ActionListener() {
668 public void actionPerformed(java.awt.event.ActionEvent evt) {
669 newSetButtonActionPerformed(evt);
673 jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
674 org.openide.awt.Mnemonics.setLocalizedText(jLabel2,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel2.text"));
676 typeButtonGroup.add(dirsRadioButton);
677 dirsRadioButton.setFont(dirsRadioButton.getFont().deriveFont(dirsRadioButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
678 org.openide.awt.Mnemonics.setLocalizedText(dirsRadioButton,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.dirsRadioButton.text"));
679 dirsRadioButton.setEnabled(
false);
680 dirsRadioButton.addActionListener(
new java.awt.event.ActionListener() {
681 public void actionPerformed(java.awt.event.ActionEvent evt) {
682 dirsRadioButtonActionPerformed(evt);
686 jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
687 org.openide.awt.Mnemonics.setLocalizedText(jLabel1,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel1.text"));
689 jLabel4.setFont(jLabel4.getFont().deriveFont(jLabel4.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
690 org.openide.awt.Mnemonics.setLocalizedText(jLabel4,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel4.text"));
692 rulePathConditionRegexCheckBox.setFont(rulePathConditionRegexCheckBox.getFont().deriveFont(rulePathConditionRegexCheckBox.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
693 org.openide.awt.Mnemonics.setLocalizedText(rulePathConditionRegexCheckBox,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.rulePathConditionRegexCheckBox.text"));
694 rulePathConditionRegexCheckBox.setEnabled(
false);
696 jScrollPane2.setFont(jScrollPane2.getFont().deriveFont(jScrollPane2.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
698 jTextArea1.setEditable(
false);
699 jTextArea1.setBackground(
new java.awt.Color(240, 240, 240));
700 jTextArea1.setColumns(20);
701 jTextArea1.setFont(jTextArea1.getFont().deriveFont(jTextArea1.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
702 jTextArea1.setLineWrap(
true);
703 jTextArea1.setRows(3);
704 jTextArea1.setText(
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jTextArea1.text"));
705 jTextArea1.setWrapStyleWord(
true);
706 jScrollPane2.setViewportView(jTextArea1);
708 org.openide.awt.Mnemonics.setLocalizedText(jLabel7,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel7.text"));
710 mimeTypeComboBox.setEditable(
true);
711 mimeTypeComboBox.setModel(
new javax.swing.DefaultComboBoxModel<String>(
new String[] {
""}));
712 mimeTypeComboBox.setEnabled(
false);
713 mimeTypeComboBox.setMinimumSize(
new java.awt.Dimension(0, 20));
714 mimeTypeComboBox.setPreferredSize(
new java.awt.Dimension(12, 20));
716 org.openide.awt.Mnemonics.setLocalizedText(jLabel8,
org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class,
"InterestingItemDefsPanel.jLabel8.text"));
718 equalitySignComboBox.setModel(
new javax.swing.DefaultComboBoxModel<String>(
new String[] {
"=",
">",
"≥",
"<",
"≤" }));
719 equalitySignComboBox.setEnabled(
false);
721 fileSizeSpinner.setEnabled(
false);
722 fileSizeSpinner.setMinimumSize(
new java.awt.Dimension(2, 20));
724 fileSizeUnitComboBox.setModel(
new javax.swing.DefaultComboBoxModel<String>(
new String[] { Bundle.InterestingItemDefsPanel_bytes(), Bundle.InterestingItemDefsPanel_kiloBytes(), Bundle.InterestingItemDefsPanel_megaBytes(), Bundle.InterestingItemDefsPanel_gigaBytes() }));
725 fileSizeUnitComboBox.setEnabled(
false);
727 javax.swing.GroupLayout jPanel1Layout =
new javax.swing.GroupLayout(jPanel1);
728 jPanel1.setLayout(jPanel1Layout);
729 jPanel1Layout.setHorizontalGroup(
730 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
731 .addGroup(jPanel1Layout.createSequentialGroup()
732 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
733 .addGroup(jPanel1Layout.createSequentialGroup()
734 .addGap(360, 360, 360)
735 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
736 .addComponent(rulesListLabel)
737 .addComponent(jLabel5)
738 .addComponent(ignoreKnownFilesCheckbox)
739 .addComponent(jLabel6))
740 .addGap(0, 0, Short.MAX_VALUE))
741 .addGroup(jPanel1Layout.createSequentialGroup()
743 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
744 .addGroup(jPanel1Layout.createSequentialGroup()
745 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
746 .addComponent(setsListLabel)
747 .addComponent(setsListScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 314, javax.swing.GroupLayout.PREFERRED_SIZE)
748 .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 314, javax.swing.GroupLayout.PREFERRED_SIZE))
750 .addComponent(separator, javax.swing.GroupLayout.PREFERRED_SIZE, 6, javax.swing.GroupLayout.PREFERRED_SIZE))
751 .addGroup(jPanel1Layout.createSequentialGroup()
752 .addComponent(newSetButton, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
753 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
754 .addComponent(editSetButton, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
755 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
756 .addComponent(deleteSetButton)))
758 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
759 .addGroup(jPanel1Layout.createSequentialGroup()
761 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
762 .addGroup(jPanel1Layout.createSequentialGroup()
763 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
764 .addGroup(jPanel1Layout.createSequentialGroup()
765 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
766 .addComponent(jLabel3)
767 .addComponent(jLabel2))
769 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
770 .addComponent(jLabel4)
771 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
772 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
773 .addComponent(rulePathConditionTextField, javax.swing.GroupLayout.Alignment.LEADING)
774 .addComponent(fileNameTextField)))
775 .addGroup(jPanel1Layout.createSequentialGroup()
776 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
777 .addComponent(jLabel7)
778 .addComponent(jLabel8))
780 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
781 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
782 .addComponent(equalitySignComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
783 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
784 .addComponent(fileSizeSpinner, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
785 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
786 .addComponent(fileSizeUnitComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
788 .addComponent(mimeTypeComboBox, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
789 .addGroup(jPanel1Layout.createSequentialGroup()
790 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
791 .addComponent(setDescScrollPanel)
792 .addComponent(rulesListScrollPane))
794 .addGroup(jPanel1Layout.createSequentialGroup()
795 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
796 .addComponent(jLabel1)
797 .addGroup(jPanel1Layout.createSequentialGroup()
799 .addComponent(filesRadioButton, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
800 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
801 .addComponent(dirsRadioButton)
802 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
803 .addComponent(bothRadioButton))
804 .addGroup(jPanel1Layout.createSequentialGroup()
805 .addComponent(newRuleButton)
807 .addComponent(editRuleButton)
809 .addComponent(deleteRuleButton))
810 .addGroup(jPanel1Layout.createSequentialGroup()
812 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
813 .addGroup(jPanel1Layout.createSequentialGroup()
814 .addComponent(fileNameRadioButton)
816 .addComponent(fileNameExtensionRadioButton)
817 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
818 .addComponent(fileNameRegexCheckbox))
819 .addComponent(rulePathConditionRegexCheckBox))))
823 jPanel1Layout.setVerticalGroup(
824 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
825 .addGroup(jPanel1Layout.createSequentialGroup()
827 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
828 .addComponent(separator)
829 .addGroup(jPanel1Layout.createSequentialGroup()
830 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
831 .addGroup(jPanel1Layout.createSequentialGroup()
832 .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
834 .addComponent(setsListLabel)
835 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
836 .addComponent(setsListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 354, Short.MAX_VALUE)
837 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
838 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
839 .addComponent(newSetButton)
840 .addComponent(editSetButton)
841 .addComponent(deleteSetButton)))
842 .addGroup(jPanel1Layout.createSequentialGroup()
843 .addComponent(jLabel6)
844 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
845 .addComponent(jLabel5)
846 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
847 .addComponent(setDescScrollPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
848 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
849 .addComponent(ignoreKnownFilesCheckbox)
850 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
851 .addComponent(rulesListLabel)
852 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
853 .addComponent(rulesListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 67, Short.MAX_VALUE)
855 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
856 .addComponent(newRuleButton)
857 .addComponent(editRuleButton)
858 .addComponent(deleteRuleButton))
859 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
860 .addComponent(jLabel1)
862 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
863 .addComponent(jLabel2)
864 .addComponent(filesRadioButton)
865 .addComponent(dirsRadioButton)
866 .addComponent(bothRadioButton))
868 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
869 .addComponent(jLabel3)
870 .addComponent(fileNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
871 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
872 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
873 .addComponent(fileNameRadioButton)
874 .addComponent(fileNameExtensionRadioButton)
875 .addComponent(fileNameRegexCheckbox))
877 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
878 .addComponent(jLabel4)
879 .addComponent(rulePathConditionTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
880 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
881 .addComponent(rulePathConditionRegexCheckBox)
882 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
883 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
884 .addComponent(jLabel7)
885 .addComponent(mimeTypeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
887 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
888 .addComponent(jLabel8)
889 .addComponent(equalitySignComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
890 .addComponent(fileSizeSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
891 .addComponent(fileSizeUnitComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
892 .addGap(13, 13, 13)))
896 jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL,
new java.awt.Component[] {deleteRuleButton, deleteSetButton, editRuleButton, editSetButton, newRuleButton, newSetButton});
898 jScrollPane1.setViewportView(jPanel1);
900 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
901 this.setLayout(layout);
902 layout.setHorizontalGroup(
903 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
904 .addComponent(jScrollPane1)
906 layout.setVerticalGroup(
907 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
908 .addComponent(jScrollPane1)
912 private void dirsRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {
916 private void newSetButtonActionPerformed(java.awt.event.ActionEvent evt) {
917 this.doFileSetsDialog(null);
918 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
921 private void deleteRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {
926 FilesSet oldSet = this.setsList.getSelectedValue();
927 Map<String, FilesSet.Rule> rules =
new HashMap<>(oldSet.getRules());
928 FilesSet.Rule selectedRule = this.rulesList.getSelectedValue();
929 rules.remove(selectedRule.getUuid());
930 this.replaceFilesSet(oldSet, oldSet.getName(), oldSet.getDescription(), oldSet.ignoresKnownFiles(), rules);
931 if (!this.rulesListModel.isEmpty()) {
932 this.rulesList.setSelectedIndex(0);
934 this.resetRuleComponents();
936 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
939 private void deleteSetButtonActionPerformed(java.awt.event.ActionEvent evt) {
940 FilesSet selectedSet = this.setsList.getSelectedValue();
941 this.filesSets.remove(selectedSet.getName());
942 this.setsListModel.removeElement(selectedSet);
946 if (!this.filesSets.isEmpty()) {
947 this.setsList.setSelectedIndex(0);
949 this.resetComponents();
951 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
954 private void ignoreKnownFilesCheckboxActionPerformed(java.awt.event.ActionEvent evt) {
958 private void editSetButtonActionPerformed(java.awt.event.ActionEvent evt) {
959 this.doFileSetsDialog(this.setsList.getSelectedValue());
960 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
963 private void editRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {
964 this.doFilesSetRuleDialog(this.rulesList.getSelectedValue());
965 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
968 private void newRuleButtonActionPerformed(java.awt.event.ActionEvent evt) {
969 this.doFilesSetRuleDialog(null);
970 firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
973 private void fileNameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {
978 private javax.swing.JRadioButton bothRadioButton;
979 private javax.swing.JButton deleteRuleButton;
980 private javax.swing.JButton deleteSetButton;
981 private javax.swing.JRadioButton dirsRadioButton;
982 private javax.swing.JButton editRuleButton;
983 private javax.swing.JButton editSetButton;
984 private javax.swing.JComboBox<String> equalitySignComboBox;
985 private javax.swing.ButtonGroup fileNameButtonGroup;
986 private javax.swing.JRadioButton fileNameExtensionRadioButton;
987 private javax.swing.JRadioButton fileNameRadioButton;
988 private javax.swing.JCheckBox fileNameRegexCheckbox;
989 private javax.swing.JTextField fileNameTextField;
990 private javax.swing.JSpinner fileSizeSpinner;
991 private javax.swing.JComboBox<String> fileSizeUnitComboBox;
992 private javax.swing.JRadioButton filesRadioButton;
993 private javax.swing.JCheckBox ignoreKnownFilesCheckbox;
994 private javax.swing.JLabel jLabel1;
995 private javax.swing.JLabel jLabel2;
996 private javax.swing.JLabel jLabel3;
997 private javax.swing.JLabel jLabel4;
998 private javax.swing.JLabel jLabel5;
999 private javax.swing.JLabel jLabel6;
1000 private javax.swing.JLabel jLabel7;
1001 private javax.swing.JLabel jLabel8;
1002 private javax.swing.JPanel jPanel1;
1003 private javax.swing.JScrollPane jScrollPane1;
1004 private javax.swing.JScrollPane jScrollPane2;
1005 private javax.swing.JTextArea jTextArea1;
1006 private javax.swing.JComboBox<String> mimeTypeComboBox;
1007 private javax.swing.JButton newRuleButton;
1008 private javax.swing.JButton newSetButton;
1009 private javax.swing.JCheckBox rulePathConditionRegexCheckBox;
1010 private javax.swing.JTextField rulePathConditionTextField;
1011 private javax.swing.JList<FilesSet.Rule> rulesList;
1012 private javax.swing.JLabel rulesListLabel;
1013 private javax.swing.JScrollPane rulesListScrollPane;
1014 private javax.swing.JSeparator separator;
1015 private javax.swing.JScrollPane setDescScrollPanel;
1016 private javax.swing.JTextArea setDescriptionTextArea;
1017 private javax.swing.JList<FilesSet> setsList;
1018 private javax.swing.JLabel setsListLabel;
1019 private javax.swing.JScrollPane setsListScrollPane;
1020 private javax.swing.ButtonGroup typeButtonGroup;
void valueChanged(ListSelectionEvent e)
void valueChanged(ListSelectionEvent e)