mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-17 18:17:43 +00:00
UI Updates
This commit is contained in:
parent
863229043e
commit
2280e1005a
@ -26,11 +26,8 @@ FilesSetRulePanel.messages.invalidNameRegex=The name regular expression is not v
|
||||
FilesSetRulePanel.messages.invalidCharInName=The name cannot contain \\, /, :, *, ?, \", <, or > unless it is a regular expression.
|
||||
FilesSetRulePanel.messages.invalidCharInPath=The path cannot contain \\, :, *, ?, \", <, or > unless it is a regular expression.
|
||||
FilesSetRulePanel.messages.invalidPathRegex=The path regular expression is not valid:\n\n{0}
|
||||
FilesSetRulePanel.dirsRadioButton.text=Directories
|
||||
FilesSetRulePanel.filesRadioButton.text=Files
|
||||
InterestingItemDefsPanel.doFileSetsDialog.duplicateRuleSet.text=Rule set with name {0} already exists.
|
||||
FilesSetRulePanel.pathSeparatorInfoLabel.text=Use / as path separator
|
||||
FilesSetRulePanel.filesAndDirsRadioButton.text=Files and Directories
|
||||
FilesIdentifierIngestJobSettingsPanel.border.title=Select interesting files sets to enable during ingest:
|
||||
FilesSetRulePanel.jLabel1.text=Type:
|
||||
FilesSetRulePanel.jLabel5.text=Enter information about files that you want to find.
|
||||
@ -64,4 +61,6 @@ InterestingItemDefsPanel.rulePathConditionRegexCheckBox.text=Regex
|
||||
FilesSetRulePanel.nameCheck.text=Name Pattern:
|
||||
FilesSetRulePanel.pathCheck.text=Path Pattern:
|
||||
FilesSetRulePanel.mimeCheck.text=MIME Type:
|
||||
FilesSetRulePanel.fileCheck.text=File Size:
|
||||
FilesSetRulePanel.filesCheck.text=Files
|
||||
FilesSetRulePanel.directoriesCheck.text=Directories
|
||||
FilesSetRulePanel.fileSizeCheck.text=File Size:
|
||||
|
@ -5,10 +5,7 @@ FilesSetPanel.ignoreKnownFilesCheckbox.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb
|
||||
FilesSetPanel.messages.filesSetsMustBeNamed=\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306f\u540d\u524d\u304c\u5fc5\u8981\u3067\u3059\u3002
|
||||
FilesSetPanel.nameLabel.text=\u30bb\u30c3\u30c8\u540d\uff1a
|
||||
FilesSetPanel.title=\u7591\u308f\u3057\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8
|
||||
FilesSetRulePanel.dirsRadioButton.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea
|
||||
FilesSetRulePanel.extensionRadioButton.text=\u62e1\u5f35\u5b50\u306e\u307f
|
||||
FilesSetRulePanel.filesAndDirsRadioButton.text=\u30d5\u30a1\u30a4\u30eb\u304a\u3088\u3073\u30c7\u30a3\u30ec\u30af\u30c8\u30ea
|
||||
FilesSetRulePanel.filesRadioButton.text=\u30d5\u30a1\u30a4\u30eb
|
||||
FilesSetRulePanel.fullNameRadioButton.text=\u30d5\u30eb\u30cd\u30fc\u30e0
|
||||
FilesSetRulePanel.jLabel1.text=\u30bf\u30a4\u30d7*\uff1a
|
||||
FilesSetRulePanel.messages.emptyNameFilter=\u3053\u306e\u30eb\u30fc\u30eb\u306f\u30cd\u30fc\u30e0\u30d1\u30bf\u30fc\u30f3\u3092\u7279\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
|
||||
|
@ -27,24 +27,24 @@
|
||||
<Group type="102" alignment="1" attributes="0">
|
||||
<EmptySpace min="-2" pref="8" max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="1" attributes="0">
|
||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
<Component id="filesRadioButton" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||
<Component id="dirsRadioButton" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||
<Component id="filesAndDirsRadioButton" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" attributes="0">
|
||||
<Component id="jLabel5" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="ruleNameLabel" max="32767" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="ruleNameTextField" min="-2" pref="234" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" attributes="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" pref="64" max="-2" attributes="0"/>
|
||||
<Component id="filesCheck" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="directoriesCheck" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Component id="jLabel5" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group type="102" alignment="1" attributes="0">
|
||||
@ -81,7 +81,7 @@
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="mimeCheck" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="fileCheck" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="fileSizeCheck" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
<Group type="103" groupAlignment="1" attributes="0">
|
||||
@ -107,9 +107,8 @@
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
<Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="filesRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="dirsRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="filesAndDirsRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="filesCheck" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="directoriesCheck" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
@ -142,7 +141,7 @@
|
||||
<Component id="equalitySymbolComboBox" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="fileSizeComboBox" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="fileSizeSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="fileCheck" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="fileSizeCheck" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace min="-2" pref="15" max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
@ -179,45 +178,6 @@
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JRadioButton" name="dirsRadioButton">
|
||||
<Properties>
|
||||
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
|
||||
<ComponentRef name="typeButtonGroup"/>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties" key="FilesSetRulePanel.dirsRadioButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="dirsRadioButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JRadioButton" name="filesRadioButton">
|
||||
<Properties>
|
||||
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
|
||||
<ComponentRef name="typeButtonGroup"/>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties" key="FilesSetRulePanel.filesRadioButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="filesRadioButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JRadioButton" name="filesAndDirsRadioButton">
|
||||
<Properties>
|
||||
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
|
||||
<ComponentRef name="typeButtonGroup"/>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties" key="FilesSetRulePanel.filesAndDirsRadioButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="filesAndDirsRadioButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JTextField" name="nameTextField">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
@ -298,9 +258,12 @@
|
||||
</Property>
|
||||
<Property name="enabled" type="boolean" value="false"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mimeTypeComboBoxActionPerformed"/>
|
||||
</Events>
|
||||
<AuxValues>
|
||||
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new javax.swing.JComboBox<String>()"/>
|
||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value=""/>
|
||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<String>"/>
|
||||
</AuxValues>
|
||||
</Component>
|
||||
<Component class="javax.swing.JComboBox" name="equalitySymbolComboBox">
|
||||
@ -366,14 +329,35 @@
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="mimeCheckActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JCheckBox" name="fileCheck">
|
||||
<Component class="javax.swing.JCheckBox" name="fileSizeCheck">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties" key="FilesSetRulePanel.fileCheck.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties" key="FilesSetRulePanel.fileSizeCheck.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fileCheckActionPerformed"/>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fileSizeCheckActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JCheckBox" name="filesCheck">
|
||||
<Properties>
|
||||
<Property name="selected" type="boolean" value="true"/>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties" key="FilesSetRulePanel.filesCheck.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="filesCheckActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JCheckBox" name="directoriesCheck">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties" key="FilesSetRulePanel.directoriesCheck.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="directoriesCheckActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
|
@ -18,8 +18,9 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.modules.interestingitems;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@ -27,7 +28,9 @@ import java.util.SortedSet;
|
||||
import java.util.logging.Level;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.regex.PatternSyntaxException;
|
||||
import javax.swing.AbstractButton;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JOptionPane;
|
||||
import org.apache.tika.mime.MediaType;
|
||||
import org.apache.tika.mime.MimeTypes;
|
||||
import org.openide.DialogDisplayer;
|
||||
@ -55,6 +58,8 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
private static final String SLEUTHKIT_PATH_SEPARATOR = "/"; // NON-NLS
|
||||
private static final List<String> ILLEGAL_FILE_NAME_CHARS = InterestingItemDefsManager.getIllegalFileNameChars();
|
||||
private static final List<String> ILLEGAL_FILE_PATH_CHARS = InterestingItemDefsManager.getIllegalFilePathChars();
|
||||
private JButton okButton;
|
||||
private JButton cancelButton;
|
||||
|
||||
/**
|
||||
* Constructs a files set rule panel in create rule mode.
|
||||
@ -83,7 +88,7 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
* Populates the UI components with default values.
|
||||
*/
|
||||
private void populateComponentsWithDefaultValues() {
|
||||
this.filesRadioButton.setSelected(true);
|
||||
this.filesCheck.setSelected(true);
|
||||
this.fullNameRadioButton.setSelected(true);
|
||||
this.equalitySymbolComboBox.setSelectedIndex(2);
|
||||
this.fileSizeComboBox.setSelectedIndex(1);
|
||||
@ -117,6 +122,7 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
for (String file : toSort) {
|
||||
mimeTypeComboBox.addItem(file);
|
||||
}
|
||||
this.setOkButton();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -128,6 +134,55 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
this.ruleNameTextField.setText(rule.getName());
|
||||
}
|
||||
|
||||
private void setOkButton() {
|
||||
if (this.okButton != null) {
|
||||
if (!(this.filesCheck.isSelected() || this.directoriesCheck.isSelected())
|
||||
|| !(this.fileSizeCheck.isSelected() || this.mimeCheck.isSelected()
|
||||
|| this.nameCheck.isSelected() || this.pathCheck.isSelected())) {
|
||||
this.okButton.setEnabled(false);
|
||||
}
|
||||
else {
|
||||
this.okButton.setEnabled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private JOptionPane getOptionPane(JComponent parent) {
|
||||
JOptionPane pane = null;
|
||||
if (!(parent instanceof JOptionPane)) {
|
||||
pane = getOptionPane((JComponent) parent.getParent());
|
||||
} else {
|
||||
pane = (JOptionPane) parent;
|
||||
}
|
||||
return pane;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the buttons for ending the panel
|
||||
*
|
||||
* @param ok The ok button
|
||||
* @param cancel The cancel button
|
||||
*/
|
||||
public void setButtons(JButton ok, JButton cancel) {
|
||||
this.okButton = ok;
|
||||
this.cancelButton = cancel;
|
||||
okButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JOptionPane pane = getOptionPane(okButton);
|
||||
pane.setValue(okButton);
|
||||
}
|
||||
});
|
||||
cancelButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JOptionPane pane = getOptionPane(cancelButton);
|
||||
pane.setValue(cancelButton);
|
||||
}
|
||||
});
|
||||
this.setOkButton();
|
||||
}
|
||||
|
||||
/**
|
||||
* Populates the UI components that display the meta-type condition for a
|
||||
* rule.
|
||||
@ -138,13 +193,14 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
FilesSet.Rule.MetaTypeCondition typeCondition = rule.getMetaTypeCondition();
|
||||
switch (typeCondition.getMetaType()) {
|
||||
case FILES:
|
||||
this.filesRadioButton.setSelected(true);
|
||||
this.filesCheck.setSelected(true);
|
||||
break;
|
||||
case DIRECTORIES:
|
||||
this.dirsRadioButton.setSelected(true);
|
||||
this.directoriesCheck.setSelected(true);
|
||||
break;
|
||||
case FILES_AND_DIRECTORIES:
|
||||
this.filesAndDirsRadioButton.setSelected(true);
|
||||
this.filesCheck.setSelected(true);
|
||||
this.directoriesCheck.setSelected(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -335,9 +391,9 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
* @return A type condition.
|
||||
*/
|
||||
FilesSet.Rule.MetaTypeCondition getMetaTypeCondition() {
|
||||
if (this.filesRadioButton.isSelected()) {
|
||||
if (this.filesCheck.isSelected() && !this.directoriesCheck.isSelected()) {
|
||||
return new FilesSet.Rule.MetaTypeCondition(FilesSet.Rule.MetaTypeCondition.Type.FILES);
|
||||
} else if (this.dirsRadioButton.isSelected()) {
|
||||
} else if (this.directoriesCheck.isSelected() && !this.filesCheck.isSelected()) {
|
||||
return new FilesSet.Rule.MetaTypeCondition(FilesSet.Rule.MetaTypeCondition.Type.DIRECTORIES);
|
||||
} else {
|
||||
return new FilesSet.Rule.MetaTypeCondition(FilesSet.Rule.MetaTypeCondition.Type.FILES_AND_DIRECTORIES);
|
||||
@ -407,7 +463,7 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
* state of the UI components in the type button group.
|
||||
*/
|
||||
private void setComponentsForSearchType() {
|
||||
if (!this.filesRadioButton.isSelected()) {
|
||||
if (this.directoriesCheck.isSelected()) {
|
||||
this.fullNameRadioButton.setSelected(true);
|
||||
this.extensionRadioButton.setEnabled(false);
|
||||
this.mimeTypeComboBox.setEnabled(false);
|
||||
@ -416,14 +472,14 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
this.fileSizeComboBox.setEnabled(false);
|
||||
this.fileSizeSpinner.setEnabled(false);
|
||||
this.fileSizeSpinner.setValue(0);
|
||||
this.fileCheck.setEnabled(false);
|
||||
this.fileCheck.setSelected(false);
|
||||
this.fileSizeCheck.setEnabled(false);
|
||||
this.fileSizeCheck.setSelected(false);
|
||||
this.mimeCheck.setEnabled(false);
|
||||
this.mimeCheck.setSelected(false);
|
||||
|
||||
} else {
|
||||
this.extensionRadioButton.setEnabled(true);
|
||||
this.fileCheck.setEnabled(true);
|
||||
this.fileSizeCheck.setEnabled(true);
|
||||
this.mimeCheck.setEnabled(true);
|
||||
}
|
||||
}
|
||||
@ -442,9 +498,6 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
ruleNameLabel = new javax.swing.JLabel();
|
||||
ruleNameTextField = new javax.swing.JTextField();
|
||||
jLabel1 = new javax.swing.JLabel();
|
||||
dirsRadioButton = new javax.swing.JRadioButton();
|
||||
filesRadioButton = new javax.swing.JRadioButton();
|
||||
filesAndDirsRadioButton = new javax.swing.JRadioButton();
|
||||
nameTextField = new javax.swing.JTextField();
|
||||
fullNameRadioButton = new javax.swing.JRadioButton();
|
||||
extensionRadioButton = new javax.swing.JRadioButton();
|
||||
@ -460,7 +513,9 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
nameCheck = new javax.swing.JCheckBox();
|
||||
pathCheck = new javax.swing.JCheckBox();
|
||||
mimeCheck = new javax.swing.JCheckBox();
|
||||
fileCheck = new javax.swing.JCheckBox();
|
||||
fileSizeCheck = new javax.swing.JCheckBox();
|
||||
filesCheck = new javax.swing.JCheckBox();
|
||||
directoriesCheck = new javax.swing.JCheckBox();
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(ruleNameLabel, org.openide.util.NbBundle.getMessage(FilesSetRulePanel.class, "FilesSetRulePanel.ruleNameLabel.text")); // NOI18N
|
||||
|
||||
@ -473,30 +528,6 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(FilesSetRulePanel.class, "FilesSetRulePanel.jLabel1.text")); // NOI18N
|
||||
|
||||
typeButtonGroup.add(dirsRadioButton);
|
||||
org.openide.awt.Mnemonics.setLocalizedText(dirsRadioButton, org.openide.util.NbBundle.getMessage(FilesSetRulePanel.class, "FilesSetRulePanel.dirsRadioButton.text")); // NOI18N
|
||||
dirsRadioButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
dirsRadioButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
typeButtonGroup.add(filesRadioButton);
|
||||
org.openide.awt.Mnemonics.setLocalizedText(filesRadioButton, org.openide.util.NbBundle.getMessage(FilesSetRulePanel.class, "FilesSetRulePanel.filesRadioButton.text")); // NOI18N
|
||||
filesRadioButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
filesRadioButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
typeButtonGroup.add(filesAndDirsRadioButton);
|
||||
org.openide.awt.Mnemonics.setLocalizedText(filesAndDirsRadioButton, org.openide.util.NbBundle.getMessage(FilesSetRulePanel.class, "FilesSetRulePanel.filesAndDirsRadioButton.text")); // NOI18N
|
||||
filesAndDirsRadioButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
filesAndDirsRadioButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
nameTextField.setText(org.openide.util.NbBundle.getMessage(FilesSetRulePanel.class, "FilesSetRulePanel.nameTextField.text")); // NOI18N
|
||||
nameTextField.setEnabled(false);
|
||||
|
||||
@ -526,6 +557,11 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
mimeTypeComboBox.setEditable(true);
|
||||
mimeTypeComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] {""}));
|
||||
mimeTypeComboBox.setEnabled(false);
|
||||
mimeTypeComboBox.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
mimeTypeComboBoxActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
equalitySymbolComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "=", ">", "≥", "<", "≤" }));
|
||||
equalitySymbolComboBox.setEnabled(false);
|
||||
@ -557,10 +593,25 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
}
|
||||
});
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(fileCheck, org.openide.util.NbBundle.getMessage(FilesSetRulePanel.class, "FilesSetRulePanel.fileCheck.text")); // NOI18N
|
||||
fileCheck.addActionListener(new java.awt.event.ActionListener() {
|
||||
org.openide.awt.Mnemonics.setLocalizedText(fileSizeCheck, org.openide.util.NbBundle.getMessage(FilesSetRulePanel.class, "FilesSetRulePanel.fileSizeCheck.text")); // NOI18N
|
||||
fileSizeCheck.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
fileCheckActionPerformed(evt);
|
||||
fileSizeCheckActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
filesCheck.setSelected(true);
|
||||
org.openide.awt.Mnemonics.setLocalizedText(filesCheck, org.openide.util.NbBundle.getMessage(FilesSetRulePanel.class, "FilesSetRulePanel.filesCheck.text")); // NOI18N
|
||||
filesCheck.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
filesCheckActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(directoriesCheck, org.openide.util.NbBundle.getMessage(FilesSetRulePanel.class, "FilesSetRulePanel.directoriesCheck.text")); // NOI18N
|
||||
directoriesCheck.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
directoriesCheckActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
@ -573,21 +624,20 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGap(8, 8, 8)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||
.addComponent(jLabel1)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(filesRadioButton)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||
.addComponent(dirsRadioButton)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||
.addComponent(filesAndDirsRadioButton))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(jLabel5)
|
||||
.addGap(0, 0, Short.MAX_VALUE))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(ruleNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(ruleNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 234, javax.swing.GroupLayout.PREFERRED_SIZE))))
|
||||
.addComponent(ruleNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 234, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addComponent(jLabel1)
|
||||
.addGap(64, 64, 64)
|
||||
.addComponent(filesCheck)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(directoriesCheck))
|
||||
.addComponent(jLabel5))
|
||||
.addGap(0, 0, Short.MAX_VALUE))))
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(nameCheck)
|
||||
@ -616,7 +666,7 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
.addContainerGap()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(mimeCheck)
|
||||
.addComponent(fileCheck))
|
||||
.addComponent(fileSizeCheck))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
@ -635,9 +685,8 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(jLabel1)
|
||||
.addComponent(filesRadioButton)
|
||||
.addComponent(dirsRadioButton)
|
||||
.addComponent(filesAndDirsRadioButton))
|
||||
.addComponent(filesCheck)
|
||||
.addComponent(directoriesCheck))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(nameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
@ -664,7 +713,7 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
.addComponent(equalitySymbolComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(fileSizeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(fileSizeSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(fileCheck))
|
||||
.addComponent(fileSizeCheck))
|
||||
.addGap(15, 15, 15)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(ruleNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
@ -673,18 +722,6 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
private void filesAndDirsRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_filesAndDirsRadioButtonActionPerformed
|
||||
setComponentsForSearchType();
|
||||
}//GEN-LAST:event_filesAndDirsRadioButtonActionPerformed
|
||||
|
||||
private void dirsRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dirsRadioButtonActionPerformed
|
||||
setComponentsForSearchType();
|
||||
}//GEN-LAST:event_dirsRadioButtonActionPerformed
|
||||
|
||||
private void filesRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_filesRadioButtonActionPerformed
|
||||
setComponentsForSearchType();
|
||||
}//GEN-LAST:event_filesRadioButtonActionPerformed
|
||||
|
||||
private void ruleNameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ruleNameTextFieldActionPerformed
|
||||
// TODO add your handling code here:
|
||||
}//GEN-LAST:event_ruleNameTextFieldActionPerformed
|
||||
@ -702,6 +739,7 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
this.extensionRadioButton.setEnabled(true);
|
||||
this.nameRegexCheckbox.setEnabled(true);
|
||||
}
|
||||
this.setOkButton();
|
||||
}//GEN-LAST:event_nameCheckActionPerformed
|
||||
|
||||
private void pathCheckActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pathCheckActionPerformed
|
||||
@ -715,6 +753,7 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
this.pathRegexCheckBox.setEnabled(true);
|
||||
this.pathSeparatorInfoLabel.setEnabled(true);
|
||||
}
|
||||
this.setOkButton();
|
||||
}//GEN-LAST:event_pathCheckActionPerformed
|
||||
|
||||
private void mimeCheckActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mimeCheckActionPerformed
|
||||
@ -724,10 +763,11 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
} else {
|
||||
this.mimeTypeComboBox.setEnabled(true);
|
||||
}
|
||||
this.setOkButton();
|
||||
}//GEN-LAST:event_mimeCheckActionPerformed
|
||||
|
||||
private void fileCheckActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileCheckActionPerformed
|
||||
if (!this.fileCheck.isSelected()) {
|
||||
private void fileSizeCheckActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileSizeCheckActionPerformed
|
||||
if (!this.fileSizeCheck.isSelected()) {
|
||||
this.fileSizeComboBox.setEnabled(false);
|
||||
this.fileSizeSpinner.setEnabled(false);
|
||||
this.fileSizeSpinner.setValue(0);
|
||||
@ -737,22 +777,36 @@ final class FilesSetRulePanel extends javax.swing.JPanel {
|
||||
this.fileSizeSpinner.setEnabled(true);
|
||||
this.equalitySymbolComboBox.setEnabled(true);
|
||||
}
|
||||
}//GEN-LAST:event_fileCheckActionPerformed
|
||||
this.setOkButton();
|
||||
}//GEN-LAST:event_fileSizeCheckActionPerformed
|
||||
|
||||
private void filesCheckActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_filesCheckActionPerformed
|
||||
this.setComponentsForSearchType();
|
||||
this.setOkButton();
|
||||
}//GEN-LAST:event_filesCheckActionPerformed
|
||||
|
||||
private void directoriesCheckActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_directoriesCheckActionPerformed
|
||||
this.setComponentsForSearchType();
|
||||
this.setOkButton();
|
||||
}//GEN-LAST:event_directoriesCheckActionPerformed
|
||||
|
||||
private void mimeTypeComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mimeTypeComboBoxActionPerformed
|
||||
// TODO add your handling code here:
|
||||
}//GEN-LAST:event_mimeTypeComboBoxActionPerformed
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JRadioButton dirsRadioButton;
|
||||
private javax.swing.JCheckBox directoriesCheck;
|
||||
private javax.swing.JComboBox equalitySymbolComboBox;
|
||||
private javax.swing.JRadioButton extensionRadioButton;
|
||||
private javax.swing.JCheckBox fileCheck;
|
||||
private javax.swing.JCheckBox fileSizeCheck;
|
||||
private javax.swing.JComboBox fileSizeComboBox;
|
||||
private javax.swing.JSpinner fileSizeSpinner;
|
||||
private javax.swing.JRadioButton filesAndDirsRadioButton;
|
||||
private javax.swing.JRadioButton filesRadioButton;
|
||||
private javax.swing.JCheckBox filesCheck;
|
||||
private javax.swing.JRadioButton fullNameRadioButton;
|
||||
private javax.swing.JLabel jLabel1;
|
||||
private javax.swing.JLabel jLabel5;
|
||||
private javax.swing.JCheckBox mimeCheck;
|
||||
private javax.swing.JComboBox mimeTypeComboBox;
|
||||
private javax.swing.JComboBox<String> mimeTypeComboBox;
|
||||
private javax.swing.ButtonGroup nameButtonGroup;
|
||||
private javax.swing.JCheckBox nameCheck;
|
||||
private javax.swing.JCheckBox nameRegexCheckbox;
|
||||
|
@ -293,7 +293,6 @@
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/modules/interestingitems/Bundle.properties" key="InterestingItemDefsPanel.newRuleButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="enabled" type="boolean" value="false"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="newRuleButtonActionPerformed"/>
|
||||
|
@ -30,6 +30,7 @@ import java.util.SortedSet;
|
||||
import java.util.TreeMap;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.DefaultListModel;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
@ -43,11 +44,11 @@ import org.apache.tika.mime.MediaType;
|
||||
import org.apache.tika.mime.MimeTypes;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
|
||||
|
||||
/**
|
||||
* A panel that allows a user to make interesting item definitions.
|
||||
*/
|
||||
final class InterestingItemDefsPanel extends IngestModuleGlobalSettingsPanel implements OptionsPanel {
|
||||
|
||||
@NbBundle.Messages({
|
||||
"InterestingItemDefsPanel.bytes=Bytes",
|
||||
"InterestingItemDefsPanel.kiloBytes=Kilobytes",
|
||||
@ -59,6 +60,8 @@ final class InterestingItemDefsPanel extends IngestModuleGlobalSettingsPanel imp
|
||||
private final DefaultListModel<FilesSet> setsListModel = new DefaultListModel<>();
|
||||
private final DefaultListModel<FilesSet.Rule> rulesListModel = new DefaultListModel<>();
|
||||
private final Logger logger = Logger.getLogger(InterestingItemDefsPanel.class.getName());
|
||||
private JButton okButton = new JButton("OK");
|
||||
private JButton cancelButton = new JButton("Cancel");
|
||||
|
||||
// The following is a map of interesting files set names to interesting
|
||||
// files set definitions. It is a snapshot of the files set definitions
|
||||
@ -290,8 +293,7 @@ final class InterestingItemDefsPanel extends IngestModuleGlobalSettingsPanel imp
|
||||
* respond to user interactions with the dialog.
|
||||
*
|
||||
* @param selectedSet The currently selected files set, may be null to
|
||||
* indicate a new interesting files set definition is to
|
||||
* be created.
|
||||
* indicate a new interesting files set definition is to be created.
|
||||
*/
|
||||
private void doFileSetsDialog(FilesSet selectedSet) {
|
||||
// Create a files set defintion panle.
|
||||
@ -350,13 +352,13 @@ final class InterestingItemDefsPanel extends IngestModuleGlobalSettingsPanel imp
|
||||
// Creating a new rule definition.
|
||||
panel = new FilesSetRulePanel();
|
||||
}
|
||||
|
||||
panel.setButtons(okButton, cancelButton);
|
||||
// Do a dialog box with the files set panel until the user either enters
|
||||
// a valid definition or cancels. Note that the panel gives the user
|
||||
// feedback when isValidDefinition() is called.
|
||||
int option = JOptionPane.OK_OPTION;
|
||||
do {
|
||||
option = JOptionPane.showConfirmDialog(null, panel, NbBundle.getMessage(FilesSetRulePanel.class, "FilesSetRulePanel.title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
|
||||
option = JOptionPane.showOptionDialog(null, panel, NbBundle.getMessage(FilesSetPanel.class, "FilesSetPanel.title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, new Object[]{okButton, cancelButton}, okButton);
|
||||
} while (option == JOptionPane.OK_OPTION && !panel.isValidRuleDefinition());
|
||||
|
||||
if (option == JOptionPane.OK_OPTION) {
|
||||
@ -392,8 +394,7 @@ final class InterestingItemDefsPanel extends IngestModuleGlobalSettingsPanel imp
|
||||
* owned by this panel. If there is a definition with the same name, it will
|
||||
* be replaced, so this is an add/edit operation.
|
||||
*
|
||||
* @param oldSet A set to replace, null if the new set is not a
|
||||
* replacement.
|
||||
* @param oldSet A set to replace, null if the new set is not a replacement.
|
||||
* @param name The name of the files set.
|
||||
* @param description The description of the files set.
|
||||
* @param ignoresKnownFiles Whether or not the files set ignores known
|
||||
@ -489,7 +490,6 @@ final class InterestingItemDefsPanel extends IngestModuleGlobalSettingsPanel imp
|
||||
newRuleButton.setFont(newRuleButton.getFont().deriveFont(newRuleButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
|
||||
newRuleButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/add16.png"))); // NOI18N
|
||||
org.openide.awt.Mnemonics.setLocalizedText(newRuleButton, org.openide.util.NbBundle.getMessage(InterestingItemDefsPanel.class, "InterestingItemDefsPanel.newRuleButton.text")); // NOI18N
|
||||
newRuleButton.setEnabled(false);
|
||||
newRuleButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
newRuleButtonActionPerformed(evt);
|
||||
|
Loading…
x
Reference in New Issue
Block a user