Autopsy  4.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
FileTypeIdGlobalSettingsPanel.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2011-2016 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.modules.filetypeid;
20 
21 import java.awt.EventQueue;
22 import java.beans.PropertyChangeEvent;
23 import java.beans.PropertyChangeListener;
24 import java.util.Collections;
25 import java.util.List;
26 import java.util.logging.Level;
27 import javax.swing.DefaultComboBoxModel;
28 import javax.swing.DefaultListModel;
29 import javax.swing.JOptionPane;
30 import javax.swing.event.ListSelectionEvent;
31 import javax.swing.event.ListSelectionListener;
32 import org.netbeans.spi.options.OptionsPanelController;
33 import org.openide.util.NbBundle;
40 
46 final class FileTypeIdGlobalSettingsPanel extends IngestModuleGlobalSettingsPanel implements OptionsPanel {
47  private static final long serialVersionUID = 1L;
48  private static final Logger logger = Logger.getLogger(FileTypeIdGlobalSettingsPanel.class.getName());
49 
50  private static final String RAW_SIGNATURE_TYPE_COMBO_BOX_ITEM = NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.signatureComboBox.rawItem");
51  private static final String ASCII_SIGNATURE_TYPE_COMBO_BOX_ITEM = NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.signatureComboBox.asciiItem");
52 
53  private static final String START_OFFSET_RELATIVE_COMBO_BOX_ITEM = NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.offsetComboBox.startItem");
54  private static final String END_OFFSET_RELATIVE_COMBO_BOX_ITEM = NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.offsetComboBox.endItem");
55 
62  private DefaultListModel<FileType> typesListModel;
63  private java.util.List<FileType> fileTypes;
64  private DefaultListModel<Signature> signaturesListModel;
65 
72  // TODO: Disabling during ingest would not be necessary if the file ingest
73  // modules obtained and shared a per data source ingest job snapshot of the
74  // file type definitions.
75  IngestJobEventPropertyChangeListener ingestJobEventsListener;
76 
80  FileTypeIdGlobalSettingsPanel() {
81  initComponents();
82  customizeComponents();
83  addIngestJobEventsListener();
84  }
85 
90  @NbBundle.Messages({"FileTypeIdGlobalSettingsPanel.Title=Global File Type Identification Settings"})
91  private void customizeComponents() {
92  setName(Bundle.FileTypeIdGlobalSettingsPanel_Title());
93  setFileTypesListModel();
94  setSignaturesListModel();
95  setSignatureTypeComboBoxModel();
96  setOffsetRealtiveToComboBoxModel();
97  addTypeListSelectionListener();
98  populateTypeDetailsComponents();
99  }
100 
104  private void setFileTypesListModel() {
105  typesListModel = new DefaultListModel<>();
106  typesList.setModel(typesListModel);
107  }
108 
109  private void setSignaturesListModel() {
110  this.signaturesListModel = new DefaultListModel<>();
111  signatureList.setModel(signaturesListModel);
112  }
113 
117  private void setSignatureTypeComboBoxModel() {
118  DefaultComboBoxModel<String> sigTypeComboBoxModel = new DefaultComboBoxModel<>();
119  sigTypeComboBoxModel.addElement(FileTypeIdGlobalSettingsPanel.RAW_SIGNATURE_TYPE_COMBO_BOX_ITEM);
120  sigTypeComboBoxModel.addElement(FileTypeIdGlobalSettingsPanel.ASCII_SIGNATURE_TYPE_COMBO_BOX_ITEM);
121  }
122 
126  private void setOffsetRealtiveToComboBoxModel() {
127  DefaultComboBoxModel<String> offsetRelComboBoxModel = new DefaultComboBoxModel<>();
128  offsetRelComboBoxModel.addElement(FileTypeIdGlobalSettingsPanel.START_OFFSET_RELATIVE_COMBO_BOX_ITEM);
129  offsetRelComboBoxModel.addElement(FileTypeIdGlobalSettingsPanel.END_OFFSET_RELATIVE_COMBO_BOX_ITEM);
130  }
131 
137  private void addTypeListSelectionListener() {
138  typesList.addListSelectionListener(new ListSelectionListener() {
139  @Override
140  public void valueChanged(ListSelectionEvent e) {
141  if (e.getValueIsAdjusting() == false) {
142  if (typesList.getSelectedIndex() == -1) {
143  clearTypeDetailsComponents();
144  } else {
145  populateTypeDetailsComponents();
146  }
147  }
148  }
149  });
150  }
151 
158  // TODO: Disabling during ingest would not be necessary if the file ingest
159  // modules obtained and shared a per data source ingest job snapshot of the
160  // file type definitions.
161  private void addIngestJobEventsListener() {
162  ingestJobEventsListener = new IngestJobEventPropertyChangeListener();
163  IngestManager.getInstance().addIngestJobEventListener(ingestJobEventsListener);
164  }
165 
169  private class IngestJobEventPropertyChangeListener implements PropertyChangeListener {
170 
171  @Override
172  public void propertyChange(PropertyChangeEvent evt) {
173  EventQueue.invokeLater(new Runnable() {
174  @Override
175  public void run() {
176  enableButtons();
177  }
178  });
179  }
180  }
181 
186  private void enableButtons() {
187  boolean ingestIsRunning = IngestManager.getInstance().isIngestRunning();
188  newTypeButton.setEnabled(!ingestIsRunning);
189 
190  boolean fileTypeIsSelected = typesList.getSelectedIndex() != -1;
191  deleteTypeButton.setEnabled(!ingestIsRunning && fileTypeIsSelected);
192  editTypeButton.setEnabled(!ingestIsRunning && fileTypeIsSelected);
193 
194  ingestRunningWarningLabel.setVisible(ingestIsRunning);
195  }
196 
200  @Override
201  public void load() {
202  try {
203  fileTypes = CustomFileTypesManager.getInstance().getUserDefinedFileTypes();
204  updateFileTypesListModel();
205  if (!typesListModel.isEmpty()) {
206  typesList.setSelectedIndex(0);
207  }
208  } catch (CustomFileTypesException ex) {
209  logger.log(Level.SEVERE, "Failed to get custom file types", ex);
210  JOptionPane.showMessageDialog(null,
211  NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.loadFileTypes.errorMessage"),
212  NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.JOptionPane.loadFailed.title"),
213  JOptionPane.ERROR_MESSAGE);
214  fileTypes = Collections.emptyList();
215  }
216  enableButtons();
217  }
218 
222  private void updateFileTypesListModel() {
223  typesListModel.clear();
224  for (FileType fileType : fileTypes) {
225  typesListModel.addElement(fileType);
226 
227  }
228  }
229 
234  private void populateTypeDetailsComponents() {
235  FileType fileType = typesList.getSelectedValue();
236  this.signatureList.setEnabled(false);
237  if (null != fileType) {
238  List<Signature> signatures = fileType.getSignatures();
239  this.signaturesListModel.clear();
240  for (Signature sig : signatures) {
241  signaturesListModel.addElement(sig);
242  }
243  }
244  enableButtons();
245  }
246 
251  private void clearTypeDetailsComponents() {
252  typesList.clearSelection();
253  this.signaturesListModel.clear();
254  enableButtons();
255  }
256 
260  @Override
261  public void store() {
262  try {
263  CustomFileTypesManager.getInstance().setUserDefinedFileTypes(fileTypes);
264  } catch (CustomFileTypesManager.CustomFileTypesException ex) {
265  logger.log(Level.SEVERE, "Failed to set custom file types", ex);
266  JOptionPane.showMessageDialog(null,
267  NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.saveFileTypes.errorMessage"),
268  NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.JOptionPane.storeFailed.title"),
269  JOptionPane.ERROR_MESSAGE);
270  }
271  }
272 
276  @Override
277  public void saveSettings() {
278  store();
279  }
280 
284  @Override
285  @SuppressWarnings("FinalizeDeclaration")
286  protected void finalize() throws Throwable {
287  IngestManager.getInstance().removeIngestJobEventListener(ingestJobEventsListener);
288  super.finalize();
289  }
290 
296  @SuppressWarnings("unchecked")
297  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
298  private void initComponents() {
299 
300  jPanel3 = new javax.swing.JPanel();
301  ingestRunningWarningLabel = new javax.swing.JLabel();
302  jLabel3 = new javax.swing.JLabel();
303  jScrollPane2 = new javax.swing.JScrollPane();
304  jSplitPane1 = new javax.swing.JSplitPane();
305  jPanel1 = new javax.swing.JPanel();
306  jLabel2 = new javax.swing.JLabel();
307  typesScrollPane = new javax.swing.JScrollPane();
308  typesList = new javax.swing.JList<>();
309  deleteTypeButton = new javax.swing.JButton();
310  newTypeButton = new javax.swing.JButton();
311  editTypeButton = new javax.swing.JButton();
312  jPanel2 = new javax.swing.JPanel();
313  jLabel1 = new javax.swing.JLabel();
314  jScrollPane1 = new javax.swing.JScrollPane();
315  signatureList = new javax.swing.JList<>();
316 
317  setMaximumSize(null);
318  setPreferredSize(new java.awt.Dimension(752, 507));
319 
320  jPanel3.setPreferredSize(new java.awt.Dimension(781, 339));
321 
322  ingestRunningWarningLabel.setFont(ingestRunningWarningLabel.getFont().deriveFont(ingestRunningWarningLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
323  ingestRunningWarningLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/modules/filetypeid/warning16.png"))); // NOI18N
324  org.openide.awt.Mnemonics.setLocalizedText(ingestRunningWarningLabel, org.openide.util.NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.ingestRunningWarningLabel.text")); // NOI18N
325 
326  jLabel3.setFont(jLabel3.getFont().deriveFont(jLabel3.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
327  org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.jLabel3.text")); // NOI18N
328 
329  jScrollPane2.setMinimumSize(new java.awt.Dimension(300, 0));
330  jScrollPane2.setPreferredSize(new java.awt.Dimension(550, 275));
331 
332  jSplitPane1.setDividerSize(1);
333  jSplitPane1.setMinimumSize(new java.awt.Dimension(0, 0));
334 
335  jPanel1.setMinimumSize(new java.awt.Dimension(362, 0));
336  jPanel1.setPreferredSize(new java.awt.Dimension(362, 0));
337 
338  jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
339  org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.jLabel2.text")); // NOI18N
340 
341  typesList.setFont(typesList.getFont().deriveFont(typesList.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
342  typesList.setMaximumSize(new java.awt.Dimension(150, 0));
343  typesList.setMinimumSize(new java.awt.Dimension(150, 0));
344  typesScrollPane.setViewportView(typesList);
345 
346  deleteTypeButton.setFont(deleteTypeButton.getFont().deriveFont(deleteTypeButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
347  deleteTypeButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/delete16.png"))); // NOI18N
348  org.openide.awt.Mnemonics.setLocalizedText(deleteTypeButton, org.openide.util.NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.deleteTypeButton.text")); // NOI18N
349  deleteTypeButton.addActionListener(new java.awt.event.ActionListener() {
350  public void actionPerformed(java.awt.event.ActionEvent evt) {
351  deleteTypeButtonActionPerformed(evt);
352  }
353  });
354 
355  newTypeButton.setFont(newTypeButton.getFont().deriveFont(newTypeButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
356  newTypeButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/add16.png"))); // NOI18N
357  org.openide.awt.Mnemonics.setLocalizedText(newTypeButton, org.openide.util.NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.newTypeButton.text")); // NOI18N
358  newTypeButton.addActionListener(new java.awt.event.ActionListener() {
359  public void actionPerformed(java.awt.event.ActionEvent evt) {
360  newTypeButtonActionPerformed(evt);
361  }
362  });
363 
364  editTypeButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/edit16.png"))); // NOI18N
365  org.openide.awt.Mnemonics.setLocalizedText(editTypeButton, org.openide.util.NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.editTypeButton.text")); // NOI18N
366  editTypeButton.addActionListener(new java.awt.event.ActionListener() {
367  public void actionPerformed(java.awt.event.ActionEvent evt) {
368  editTypeButtonActionPerformed(evt);
369  }
370  });
371 
372  javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
373  jPanel1.setLayout(jPanel1Layout);
374  jPanel1Layout.setHorizontalGroup(
375  jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
376  .addGroup(jPanel1Layout.createSequentialGroup()
377  .addContainerGap()
378  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
379  .addGroup(jPanel1Layout.createSequentialGroup()
380  .addComponent(newTypeButton, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)
381  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
382  .addComponent(editTypeButton)
383  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
384  .addComponent(deleteTypeButton))
385  .addComponent(jLabel2)
386  .addComponent(typesScrollPane))
387  .addGap(31, 31, 31))
388  );
389  jPanel1Layout.setVerticalGroup(
390  jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
391  .addGroup(jPanel1Layout.createSequentialGroup()
392  .addGap(12, 12, 12)
393  .addComponent(jLabel2)
394  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
395  .addComponent(typesScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 203, Short.MAX_VALUE)
396  .addGap(10, 10, 10)
397  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
398  .addComponent(newTypeButton)
399  .addComponent(editTypeButton)
400  .addComponent(deleteTypeButton))
401  .addGap(7, 7, 7))
402  );
403 
404  jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deleteTypeButton, newTypeButton});
405 
406  jSplitPane1.setLeftComponent(jPanel1);
407 
408  jPanel2.setMinimumSize(new java.awt.Dimension(79, 0));
409 
410  org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(FileTypeIdGlobalSettingsPanel.class, "FileTypeIdGlobalSettingsPanel.jLabel1.text")); // NOI18N
411 
412  signatureList.setModel(new javax.swing.AbstractListModel<Signature>() {
413  Signature[] signatures = {};
414  public int getSize() { return signatures.length; }
415  public Signature getElementAt(int i) { return signatures[i]; }
416  });
417  signatureList.setEnabled(false);
418  signatureList.setMaximumSize(new java.awt.Dimension(32767, 32767));
419  signatureList.setPreferredSize(null);
420  jScrollPane1.setViewportView(signatureList);
421 
422  javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
423  jPanel2.setLayout(jPanel2Layout);
424  jPanel2Layout.setHorizontalGroup(
425  jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
426  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
427  .addGap(18, 18, 18)
428  .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
429  .addGroup(jPanel2Layout.createSequentialGroup()
430  .addComponent(jLabel1)
431  .addGap(100, 100, 100))
432  .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
433  .addContainerGap())
434  );
435  jPanel2Layout.setVerticalGroup(
436  jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
437  .addGroup(jPanel2Layout.createSequentialGroup()
438  .addContainerGap()
439  .addComponent(jLabel1)
440  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
441  .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 235, Short.MAX_VALUE)
442  .addContainerGap())
443  );
444 
445  jSplitPane1.setRightComponent(jPanel2);
446 
447  jScrollPane2.setViewportView(jSplitPane1);
448 
449  javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
450  jPanel3.setLayout(jPanel3Layout);
451  jPanel3Layout.setHorizontalGroup(
452  jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
453  .addGroup(jPanel3Layout.createSequentialGroup()
454  .addContainerGap()
455  .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
456  .addComponent(ingestRunningWarningLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
457  .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
458  .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 761, Short.MAX_VALUE))
459  .addContainerGap())
460  );
461  jPanel3Layout.setVerticalGroup(
462  jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
463  .addGroup(jPanel3Layout.createSequentialGroup()
464  .addContainerGap()
465  .addComponent(jLabel3)
466  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
467  .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)
468  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
469  .addComponent(ingestRunningWarningLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
470  .addContainerGap())
471  );
472 
473  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
474  this.setLayout(layout);
475  layout.setHorizontalGroup(
476  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
477  .addGroup(layout.createSequentialGroup()
478  .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 752, Short.MAX_VALUE)
479  .addGap(0, 0, 0))
480  );
481  layout.setVerticalGroup(
482  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
483  .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 507, Short.MAX_VALUE)
484  );
485  }// </editor-fold>//GEN-END:initComponents
486 
487  private void newTypeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newTypeButtonActionPerformed
488  AddFileTypeDialog dialog = new AddFileTypeDialog();
489  AddFileTypeDialog.BUTTON_PRESSED result = dialog.getResult();
490  if (result == AddFileTypeDialog.BUTTON_PRESSED.OK) {
491  fileTypes.add(dialog.getFileType());
492  updateFileTypesListModel();
493  firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
494  }
495 
496  }//GEN-LAST:event_newTypeButtonActionPerformed
497 
498  private void deleteTypeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteTypeButtonActionPerformed
499  FileType fileType = typesList.getSelectedValue();
500  fileTypes.remove(fileType);
501  updateFileTypesListModel();
502  if (!typesListModel.isEmpty()) {
503  typesList.setSelectedIndex(0);
504  }
505  firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
506  }//GEN-LAST:event_deleteTypeButtonActionPerformed
507 
508  private void editTypeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editTypeButtonActionPerformed
509  int selected = this.typesList.getSelectedIndex();
510  AddFileTypeDialog dialog = new AddFileTypeDialog(this.typesListModel.get(this.typesList.getSelectedIndex()));
511  AddFileTypeDialog.BUTTON_PRESSED result = dialog.getResult();
512  if (result == AddFileTypeDialog.BUTTON_PRESSED.OK) {
513  this.fileTypes.remove(selected);
514  this.fileTypes.add(selected, dialog.getFileType());
515  updateFileTypesListModel();
516  firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
517  }
518  }//GEN-LAST:event_editTypeButtonActionPerformed
519 
520  // Variables declaration - do not modify//GEN-BEGIN:variables
521  private javax.swing.JButton deleteTypeButton;
522  private javax.swing.JButton editTypeButton;
523  private javax.swing.JLabel ingestRunningWarningLabel;
524  private javax.swing.JLabel jLabel1;
525  private javax.swing.JLabel jLabel2;
526  private javax.swing.JLabel jLabel3;
527  private javax.swing.JPanel jPanel1;
528  private javax.swing.JPanel jPanel2;
529  private javax.swing.JPanel jPanel3;
530  private javax.swing.JScrollPane jScrollPane1;
531  private javax.swing.JScrollPane jScrollPane2;
532  private javax.swing.JSplitPane jSplitPane1;
533  private javax.swing.JButton newTypeButton;
534  private javax.swing.JList<Signature> signatureList;
535  private javax.swing.JList<FileType> typesList;
536  private javax.swing.JScrollPane typesScrollPane;
537  // End of variables declaration//GEN-END:variables
538 
539 }
static synchronized IngestManager getInstance()

Copyright © 2012-2016 Basis Technology. Generated on: Tue Oct 25 2016
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.