19 package org.sleuthkit.autopsy.corecomponents;
 
   22 import javax.swing.JFileChooser;
 
   23 import org.netbeans.spi.options.OptionsPanelController;
 
   32 final class AutopsyOptionsPanel 
extends javax.swing.JPanel {
 
   34     private static final long serialVersionUID = 1L;
 
   35     private final JFileChooser fc;
 
   37     AutopsyOptionsPanel() {
 
   39         fc = 
new JFileChooser();
 
   40         fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
 
   41         fc.setMultiSelectionEnabled(
false);
 
   42         fc.setFileFilter(
new GeneralFilter(GeneralFilter.GRAPHIC_IMAGE_EXTS, GeneralFilter.GRAPHIC_IMG_DECR));
 
   46         boolean keepPreferredViewer = UserPreferences.keepPreferredContentViewer();
 
   47         keepCurrentViewerRB.setSelected(keepPreferredViewer);
 
   48         useBestViewerRB.setSelected(!keepPreferredViewer);
 
   49         dataSourcesHideKnownCB.setSelected(UserPreferences.hideKnownFilesInDataSourcesTree());
 
   50         viewsHideKnownCB.setSelected(UserPreferences.hideKnownFilesInViewsTree());
 
   51         dataSourcesHideSlackCB.setSelected(UserPreferences.hideSlackFilesInDataSourcesTree());
 
   52         viewsHideSlackCB.setSelected(UserPreferences.hideSlackFilesInViewsTree());
 
   53         boolean useLocalTime = UserPreferences.displayTimesInLocalTime();
 
   54         useLocalTimeRB.setSelected(useLocalTime);
 
   55         useGMTTimeRB.setSelected(!useLocalTime);
 
   56         agencyLogoPathField.setText(ModuleSettings.getConfigSetting(ReportBranding.MODULE_NAME, ReportBranding.AGENCY_LOGO_PATH_PROP));
 
   60         UserPreferences.setKeepPreferredContentViewer(keepCurrentViewerRB.isSelected());
 
   61         UserPreferences.setHideKnownFilesInDataSourcesTree(dataSourcesHideKnownCB.isSelected());
 
   62         UserPreferences.setHideKnownFilesInViewsTree(viewsHideKnownCB.isSelected());
 
   63         UserPreferences.setHideSlackFilesInDataSourcesTree(dataSourcesHideSlackCB.isSelected());
 
   64         UserPreferences.setHideSlackFilesInViewsTree(viewsHideSlackCB.isSelected());
 
   65         UserPreferences.setDisplayTimesInLocalTime(useLocalTimeRB.isSelected());
 
   66         if (!agencyLogoPathField.getText().isEmpty()) {
 
   67             File image = 
new File(agencyLogoPathField.getText());
 
   69                 ModuleSettings.setConfigSetting(ReportBranding.MODULE_NAME, ReportBranding.AGENCY_LOGO_PATH_PROP, agencyLogoPathField.getText());
 
   84     private void initComponents() {
 
   86         buttonGroup1 = 
new javax.swing.ButtonGroup();
 
   87         buttonGroup3 = 
new javax.swing.ButtonGroup();
 
   88         jScrollPane1 = 
new javax.swing.JScrollPane();
 
   89         jPanel1 = 
new javax.swing.JPanel();
 
   90         useBestViewerRB = 
new javax.swing.JRadioButton();
 
   91         keepCurrentViewerRB = 
new javax.swing.JRadioButton();
 
   92         jLabelSelectFile = 
new javax.swing.JLabel();
 
   93         jLabelTimeDisplay = 
new javax.swing.JLabel();
 
   94         useLocalTimeRB = 
new javax.swing.JRadioButton();
 
   95         useGMTTimeRB = 
new javax.swing.JRadioButton();
 
   96         jLabelHideKnownFiles = 
new javax.swing.JLabel();
 
   97         dataSourcesHideKnownCB = 
new javax.swing.JCheckBox();
 
   98         viewsHideKnownCB = 
new javax.swing.JCheckBox();
 
   99         dataSourcesHideSlackCB = 
new javax.swing.JCheckBox();
 
  100         viewsHideSlackCB = 
new javax.swing.JCheckBox();
 
  101         jLabelHideSlackFiles = 
new javax.swing.JLabel();
 
  102         agencyLogoImageLabel = 
new javax.swing.JLabel();
 
  103         agencyLogoPathField = 
new javax.swing.JTextField();
 
  104         browseLogosButton = 
new javax.swing.JButton();
 
  106         jScrollPane1.setBorder(null);
 
  108         buttonGroup1.add(useBestViewerRB);
 
  109         org.openide.awt.Mnemonics.setLocalizedText(useBestViewerRB, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.useBestViewerRB.text")); 
 
  110         useBestViewerRB.setToolTipText(
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.useBestViewerRB.toolTipText")); 
 
  111         useBestViewerRB.addActionListener(
new java.awt.event.ActionListener() {
 
  112             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  113                 useBestViewerRBActionPerformed(evt);
 
  117         buttonGroup1.add(keepCurrentViewerRB);
 
  118         org.openide.awt.Mnemonics.setLocalizedText(keepCurrentViewerRB, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.keepCurrentViewerRB.text")); 
 
  119         keepCurrentViewerRB.setToolTipText(
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.keepCurrentViewerRB.toolTipText")); 
 
  120         keepCurrentViewerRB.addActionListener(
new java.awt.event.ActionListener() {
 
  121             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  122                 keepCurrentViewerRBActionPerformed(evt);
 
  126         org.openide.awt.Mnemonics.setLocalizedText(jLabelSelectFile, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.jLabelSelectFile.text")); 
 
  128         org.openide.awt.Mnemonics.setLocalizedText(jLabelTimeDisplay, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.jLabelTimeDisplay.text")); 
 
  130         buttonGroup3.add(useLocalTimeRB);
 
  131         org.openide.awt.Mnemonics.setLocalizedText(useLocalTimeRB, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.useLocalTimeRB.text")); 
 
  132         useLocalTimeRB.addActionListener(
new java.awt.event.ActionListener() {
 
  133             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  134                 useLocalTimeRBActionPerformed(evt);
 
  138         buttonGroup3.add(useGMTTimeRB);
 
  139         org.openide.awt.Mnemonics.setLocalizedText(useGMTTimeRB, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.useGMTTimeRB.text")); 
 
  140         useGMTTimeRB.addActionListener(
new java.awt.event.ActionListener() {
 
  141             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  142                 useGMTTimeRBActionPerformed(evt);
 
  146         org.openide.awt.Mnemonics.setLocalizedText(jLabelHideKnownFiles, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.jLabelHideKnownFiles.text")); 
 
  148         org.openide.awt.Mnemonics.setLocalizedText(dataSourcesHideKnownCB, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.dataSourcesHideKnownCB.text")); 
 
  149         dataSourcesHideKnownCB.addActionListener(
new java.awt.event.ActionListener() {
 
  150             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  151                 dataSourcesHideKnownCBActionPerformed(evt);
 
  155         org.openide.awt.Mnemonics.setLocalizedText(viewsHideKnownCB, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.viewsHideKnownCB.text")); 
 
  156         viewsHideKnownCB.addActionListener(
new java.awt.event.ActionListener() {
 
  157             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  158                 viewsHideKnownCBActionPerformed(evt);
 
  162         org.openide.awt.Mnemonics.setLocalizedText(dataSourcesHideSlackCB, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.dataSourcesHideSlackCB.text")); 
 
  163         dataSourcesHideSlackCB.addActionListener(
new java.awt.event.ActionListener() {
 
  164             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  165                 dataSourcesHideSlackCBActionPerformed(evt);
 
  169         org.openide.awt.Mnemonics.setLocalizedText(viewsHideSlackCB, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.viewsHideSlackCB.text")); 
 
  170         viewsHideSlackCB.addActionListener(
new java.awt.event.ActionListener() {
 
  171             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  172                 viewsHideSlackCBActionPerformed(evt);
 
  176         org.openide.awt.Mnemonics.setLocalizedText(jLabelHideSlackFiles, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.jLabelHideSlackFiles.text")); 
 
  178         org.openide.awt.Mnemonics.setLocalizedText(agencyLogoImageLabel, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.agencyLogoImageLabel.text")); 
 
  180         agencyLogoPathField.setEditable(
false);
 
  181         agencyLogoPathField.setBackground(
new java.awt.Color(255, 255, 255));
 
  182         agencyLogoPathField.setText(
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.agencyLogoPathField.text")); 
 
  183         agencyLogoPathField.setFocusable(
false);
 
  184         agencyLogoPathField.setRequestFocusEnabled(
false);
 
  186         org.openide.awt.Mnemonics.setLocalizedText(browseLogosButton, 
org.openide.util.NbBundle.getMessage(AutopsyOptionsPanel.class, 
"AutopsyOptionsPanel.browseLogosButton.text")); 
 
  187         browseLogosButton.addActionListener(
new java.awt.event.ActionListener() {
 
  188             public void actionPerformed(java.awt.event.ActionEvent evt) {
 
  189                 browseLogosButtonActionPerformed(evt);
 
  193         javax.swing.GroupLayout jPanel1Layout = 
new javax.swing.GroupLayout(jPanel1);
 
  194         jPanel1.setLayout(jPanel1Layout);
 
  195         jPanel1Layout.setHorizontalGroup(
 
  196             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  197             .addGroup(jPanel1Layout.createSequentialGroup()
 
  199                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  200                     .addGroup(jPanel1Layout.createSequentialGroup()
 
  201                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  202                             .addComponent(jLabelTimeDisplay)
 
  203                             .addComponent(jLabelHideKnownFiles)
 
  204                             .addComponent(jLabelSelectFile)
 
  205                             .addGroup(jPanel1Layout.createSequentialGroup()
 
  207                                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  208                                     .addComponent(useLocalTimeRB)
 
  209                                     .addComponent(useGMTTimeRB)
 
  210                                     .addComponent(keepCurrentViewerRB)
 
  211                                     .addComponent(useBestViewerRB)
 
  212                                     .addComponent(dataSourcesHideKnownCB)
 
  213                                     .addComponent(viewsHideKnownCB))))
 
  214                         .addContainerGap(140, Short.MAX_VALUE))
 
  215                     .addGroup(jPanel1Layout.createSequentialGroup()
 
  216                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  217                             .addComponent(jLabelHideSlackFiles)
 
  218                             .addComponent(agencyLogoImageLabel)
 
  219                             .addGroup(jPanel1Layout.createSequentialGroup()
 
  221                                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  222                                     .addGroup(jPanel1Layout.createSequentialGroup()
 
  223                                         .addComponent(agencyLogoPathField, javax.swing.GroupLayout.PREFERRED_SIZE, 259, javax.swing.GroupLayout.PREFERRED_SIZE)
 
  224                                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  225                                         .addComponent(browseLogosButton))
 
  226                                     .addComponent(dataSourcesHideSlackCB)
 
  227                                     .addComponent(viewsHideSlackCB))))
 
  228                         .addGap(0, 0, Short.MAX_VALUE))))
 
  230         jPanel1Layout.setVerticalGroup(
 
  231             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  232             .addGroup(jPanel1Layout.createSequentialGroup()
 
  234                 .addComponent(jLabelSelectFile)
 
  235                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  236                 .addComponent(useBestViewerRB)
 
  237                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  238                 .addComponent(keepCurrentViewerRB)
 
  239                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
 
  240                 .addComponent(jLabelHideKnownFiles)
 
  241                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  242                 .addComponent(dataSourcesHideKnownCB)
 
  243                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  244                 .addComponent(viewsHideKnownCB)
 
  245                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  246                 .addComponent(jLabelHideSlackFiles)
 
  247                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  248                 .addComponent(dataSourcesHideSlackCB)
 
  249                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  250                 .addComponent(viewsHideSlackCB)
 
  251                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  252                 .addComponent(jLabelTimeDisplay)
 
  253                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  254                 .addComponent(useLocalTimeRB)
 
  255                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  256                 .addComponent(useGMTTimeRB)
 
  257                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  258                 .addComponent(agencyLogoImageLabel)
 
  259                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 
  260                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 
  261                     .addComponent(agencyLogoPathField)
 
  262                     .addComponent(browseLogosButton))
 
  266         jScrollPane1.setViewportView(jPanel1);
 
  268         javax.swing.GroupLayout layout = 
new javax.swing.GroupLayout(
this);
 
  269         this.setLayout(layout);
 
  270         layout.setHorizontalGroup(
 
  271             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  272             .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING)
 
  274         layout.setVerticalGroup(
 
  275             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 
  276             .addComponent(jScrollPane1)
 
  280     private void useBestViewerRBActionPerformed(java.awt.event.ActionEvent evt) {
 
  281         firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  284     private void keepCurrentViewerRBActionPerformed(java.awt.event.ActionEvent evt) {
 
  285         firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  288     private void dataSourcesHideKnownCBActionPerformed(java.awt.event.ActionEvent evt) {
 
  289         firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  292     private void viewsHideKnownCBActionPerformed(java.awt.event.ActionEvent evt) {
 
  293         firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  296     private void useLocalTimeRBActionPerformed(java.awt.event.ActionEvent evt) {
 
  297         firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  300     private void useGMTTimeRBActionPerformed(java.awt.event.ActionEvent evt) {
 
  301         firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  304     private void dataSourcesHideSlackCBActionPerformed(java.awt.event.ActionEvent evt) {
 
  305         firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  308     private void viewsHideSlackCBActionPerformed(java.awt.event.ActionEvent evt) {
 
  309         firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  312     private void browseLogosButtonActionPerformed(java.awt.event.ActionEvent evt) {
 
  313         int returnState = fc.showOpenDialog(
this);
 
  314         if (returnState == JFileChooser.APPROVE_OPTION) {
 
  315             String path = fc.getSelectedFile().getPath();
 
  316             agencyLogoPathField.setText(path);
 
  317             firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
 
  322     private javax.swing.JLabel agencyLogoImageLabel;
 
  323     private javax.swing.JTextField agencyLogoPathField;
 
  324     private javax.swing.JButton browseLogosButton;
 
  325     private javax.swing.ButtonGroup buttonGroup1;
 
  326     private javax.swing.ButtonGroup buttonGroup3;
 
  327     private javax.swing.JCheckBox dataSourcesHideKnownCB;
 
  328     private javax.swing.JCheckBox dataSourcesHideSlackCB;
 
  329     private javax.swing.JLabel jLabelHideKnownFiles;
 
  330     private javax.swing.JLabel jLabelHideSlackFiles;
 
  331     private javax.swing.JLabel jLabelSelectFile;
 
  332     private javax.swing.JLabel jLabelTimeDisplay;
 
  333     private javax.swing.JPanel jPanel1;
 
  334     private javax.swing.JScrollPane jScrollPane1;
 
  335     private javax.swing.JRadioButton keepCurrentViewerRB;
 
  336     private javax.swing.JRadioButton useBestViewerRB;
 
  337     private javax.swing.JRadioButton useGMTTimeRB;
 
  338     private javax.swing.JRadioButton useLocalTimeRB;
 
  339     private javax.swing.JCheckBox viewsHideKnownCB;
 
  340     private javax.swing.JCheckBox viewsHideSlackCB;