19 package org.sleuthkit.autopsy.modules.fileextmismatch;
21 import java.awt.Color;
22 import java.util.ArrayList;
23 import java.util.Arrays;
24 import java.util.Collections;
25 import java.util.HashMap;
26 import java.util.logging.Level;
27 import javax.swing.JOptionPane;
28 import javax.swing.ListSelectionModel;
29 import javax.swing.event.ListSelectionEvent;
30 import javax.swing.event.ListSelectionListener;
31 import javax.swing.table.AbstractTableModel;
33 import org.openide.util.NbBundle;
42 final class FileExtMismatchSettingsPanel
extends IngestModuleGlobalSettingsPanel implements OptionsPanel {
44 private static final Logger logger = Logger.getLogger(FileExtMismatchSettingsPanel.class.getName());
45 private HashMap<String, String[]> editableMap =
new HashMap<>();
46 private ArrayList<String> mimeList = null;
47 private ArrayList<String> currentExtensions = null;
48 private MimeTableModel mimeTableModel;
49 private ExtTableModel extTableModel;
50 private final String EXT_HEADER_LABEL = NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
51 "AddFileExtensionAction.extHeaderLbl.text");
52 private String selectedMime =
"";
53 private String selectedExt =
"";
54 ListSelectionModel lsm = null;
55 private FileTypeDetector fileTypeDetector;
57 public FileExtMismatchSettingsPanel() {
58 mimeTableModel =
new MimeTableModel();
59 extTableModel =
new ExtTableModel();
62 fileTypeDetector =
new FileTypeDetector();
63 }
catch (FileTypeDetector.FileTypeDetectorInitException ex) {
64 logger.log(Level.SEVERE,
"Failed to create file type detector", ex);
65 fileTypeDetector = null;
69 customizeComponents();
72 @NbBundle.Messages({
"FileExtMismatchSettingsPanel.Title=Global File Extension Mismatch Identification Settings"})
73 private void customizeComponents() {
74 setName(Bundle.FileExtMismatchSettingsPanel_Title());
77 lsm = mimeTable.getSelectionModel();
78 lsm.addListSelectionListener(
new ListSelectionListener() {
80 public void valueChanged(ListSelectionEvent e) {
81 ListSelectionModel listSelectionModel = (ListSelectionModel) e.getSource();
82 if (!listSelectionModel.isSelectionEmpty()) {
83 int index = listSelectionModel.getMinSelectionIndex();
84 listSelectionModel.setSelectionInterval(index, index);
86 selectedMime = mimeList.get(index);
87 String labelStr = EXT_HEADER_LABEL + selectedMime +
":";
88 if (labelStr.length() > 80) {
89 labelStr = labelStr.substring(0, 80);
91 extHeaderLabel.setText(labelStr);
94 extTableModel.resync();
98 currentExtensions = null;
99 extTableModel.resync();
107 ListSelectionModel extLsm = extTable.getSelectionModel();
108 extLsm.addListSelectionListener(
new ListSelectionListener() {
110 public void valueChanged(ListSelectionEvent e) {
111 ListSelectionModel listSelectionModel = (ListSelectionModel) e.getSource();
112 if (!listSelectionModel.isSelectionEmpty()) {
113 int index = listSelectionModel.getMinSelectionIndex();
114 listSelectionModel.setSelectionInterval(index, index);
116 selectedExt = currentExtensions.get(index);
121 extRemoveErrLabel.setText(
" ");
128 private void clearErrLabels() {
129 mimeErrLabel.setText(
" ");
130 mimeRemoveErrLabel.setText(
" ");
131 extRemoveErrLabel.setText(
" ");
132 extErrorLabel.setText(
" ");
133 saveMsgLabel.setText(
" ");
142 private void initComponents() {
144 jScrollPane1 =
new javax.swing.JScrollPane();
145 jPanel1 =
new javax.swing.JPanel();
146 jSplitPane1 =
new javax.swing.JSplitPane();
147 mimePanel =
new javax.swing.JPanel();
148 jLabel1 =
new javax.swing.JLabel();
149 jScrollPane2 =
new javax.swing.JScrollPane();
150 mimeTable =
new javax.swing.JTable();
151 userTypeTextField =
new javax.swing.JTextField();
152 addTypeButton =
new javax.swing.JButton();
153 removeTypeButton =
new javax.swing.JButton();
154 mimeErrLabel =
new javax.swing.JLabel();
155 mimeRemoveErrLabel =
new javax.swing.JLabel();
156 extensionPanel =
new javax.swing.JPanel();
157 userExtTextField =
new javax.swing.JTextField();
158 addExtButton =
new javax.swing.JButton();
159 jScrollPane3 =
new javax.swing.JScrollPane();
160 extTable =
new javax.swing.JTable();
161 removeExtButton =
new javax.swing.JButton();
162 extHeaderLabel =
new javax.swing.JLabel();
163 extErrorLabel =
new javax.swing.JLabel();
164 extRemoveErrLabel =
new javax.swing.JLabel();
165 saveMsgLabel =
new javax.swing.JLabel();
167 jPanel1.setPreferredSize(
new java.awt.Dimension(687, 450));
169 jSplitPane1.setDividerLocation(430);
171 jLabel1.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.jLabel1.text"));
173 mimeTable.setModel(mimeTableModel);
174 jScrollPane2.setViewportView(mimeTable);
176 userTypeTextField.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.userTypeTextField.text"));
177 userTypeTextField.addFocusListener(
new java.awt.event.FocusAdapter() {
178 public void focusGained(java.awt.event.FocusEvent evt) {
179 userTypeTextFieldFocusGained(evt);
183 addTypeButton.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.addTypeButton.text"));
184 addTypeButton.addActionListener(
new java.awt.event.ActionListener() {
185 public void actionPerformed(java.awt.event.ActionEvent evt) {
186 addTypeButtonActionPerformed(evt);
190 removeTypeButton.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.removeTypeButton.text"));
191 removeTypeButton.addActionListener(
new java.awt.event.ActionListener() {
192 public void actionPerformed(java.awt.event.ActionEvent evt) {
193 removeTypeButtonActionPerformed(evt);
197 mimeErrLabel.setForeground(
new java.awt.Color(255, 0, 0));
198 mimeErrLabel.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.mimeErrLabel.text"));
200 mimeRemoveErrLabel.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.mimeRemoveErrLabel.text"));
202 javax.swing.GroupLayout mimePanelLayout =
new javax.swing.GroupLayout(mimePanel);
203 mimePanel.setLayout(mimePanelLayout);
204 mimePanelLayout.setHorizontalGroup(
205 mimePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
206 .addGroup(mimePanelLayout.createSequentialGroup()
208 .addGroup(mimePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
209 .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
210 .addGroup(mimePanelLayout.createSequentialGroup()
211 .addGroup(mimePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
212 .addComponent(jLabel1)
213 .addGroup(mimePanelLayout.createSequentialGroup()
214 .addComponent(userTypeTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
215 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
216 .addComponent(addTypeButton))
217 .addComponent(removeTypeButton))
218 .addGap(0, 196, Short.MAX_VALUE))
219 .addComponent(mimeErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
220 .addComponent(mimeRemoveErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
223 mimePanelLayout.setVerticalGroup(
224 mimePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
225 .addGroup(mimePanelLayout.createSequentialGroup()
227 .addComponent(jLabel1)
228 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
229 .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 250, javax.swing.GroupLayout.PREFERRED_SIZE)
230 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
231 .addGroup(mimePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
232 .addComponent(userTypeTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
233 .addComponent(addTypeButton))
235 .addComponent(mimeErrLabel)
236 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
237 .addComponent(removeTypeButton)
238 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
239 .addComponent(mimeRemoveErrLabel)
240 .addContainerGap(83, Short.MAX_VALUE))
243 jSplitPane1.setLeftComponent(mimePanel);
245 userExtTextField.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.userExtTextField.text"));
246 userExtTextField.addFocusListener(
new java.awt.event.FocusAdapter() {
247 public void focusGained(java.awt.event.FocusEvent evt) {
248 userExtTextFieldFocusGained(evt);
252 addExtButton.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.addExtButton.text"));
253 addExtButton.addActionListener(
new java.awt.event.ActionListener() {
254 public void actionPerformed(java.awt.event.ActionEvent evt) {
255 addExtButtonActionPerformed(evt);
259 extTable.setModel(extTableModel);
260 jScrollPane3.setViewportView(extTable);
262 removeExtButton.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.removeExtButton.text"));
263 removeExtButton.addActionListener(
new java.awt.event.ActionListener() {
264 public void actionPerformed(java.awt.event.ActionEvent evt) {
265 removeExtButtonActionPerformed(evt);
269 extHeaderLabel.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.extHeaderLabel.text"));
271 extErrorLabel.setForeground(
new java.awt.Color(255, 0, 0));
272 extErrorLabel.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.extErrorLabel.text"));
274 extRemoveErrLabel.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.extRemoveErrLabel.text"));
276 javax.swing.GroupLayout extensionPanelLayout =
new javax.swing.GroupLayout(extensionPanel);
277 extensionPanel.setLayout(extensionPanelLayout);
278 extensionPanelLayout.setHorizontalGroup(
279 extensionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
280 .addGroup(extensionPanelLayout.createSequentialGroup()
282 .addGroup(extensionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
283 .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
284 .addComponent(extHeaderLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
285 .addGroup(extensionPanelLayout.createSequentialGroup()
286 .addGroup(extensionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
287 .addComponent(removeExtButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
288 .addGroup(extensionPanelLayout.createSequentialGroup()
289 .addComponent(userExtTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
290 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
291 .addComponent(addExtButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
292 .addGap(0, 46, Short.MAX_VALUE))
293 .addComponent(extErrorLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
294 .addComponent(extRemoveErrLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
297 extensionPanelLayout.setVerticalGroup(
298 extensionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
299 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, extensionPanelLayout.createSequentialGroup()
301 .addComponent(extHeaderLabel)
302 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
303 .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 285, javax.swing.GroupLayout.PREFERRED_SIZE)
304 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
305 .addGroup(extensionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
306 .addComponent(userExtTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
307 .addComponent(addExtButton))
309 .addComponent(extErrorLabel)
310 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
311 .addComponent(removeExtButton)
312 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
313 .addComponent(extRemoveErrLabel)
314 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
317 jSplitPane1.setRightComponent(extensionPanel);
319 saveMsgLabel.setForeground(
new java.awt.Color(0, 0, 255));
320 saveMsgLabel.setText(
org.openide.util.NbBundle.getMessage(FileExtMismatchSettingsPanel.class,
"FileExtMismatchSettingsPanel.saveMsgLabel.text"));
322 javax.swing.GroupLayout jPanel1Layout =
new javax.swing.GroupLayout(jPanel1);
323 jPanel1.setLayout(jPanel1Layout);
324 jPanel1Layout.setHorizontalGroup(
325 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
326 .addGroup(jPanel1Layout.createSequentialGroup()
328 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
329 .addComponent(jSplitPane1)
330 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
331 .addGap(0, 0, Short.MAX_VALUE)
332 .addComponent(saveMsgLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE)))
335 jPanel1Layout.setVerticalGroup(
336 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
337 .addGroup(jPanel1Layout.createSequentialGroup()
339 .addComponent(jSplitPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 466, javax.swing.GroupLayout.PREFERRED_SIZE)
340 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
341 .addComponent(saveMsgLabel)
345 jScrollPane1.setViewportView(jPanel1);
347 javax.swing.GroupLayout layout =
new javax.swing.GroupLayout(
this);
348 this.setLayout(layout);
349 layout.setHorizontalGroup(
350 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
351 .addComponent(jScrollPane1)
353 layout.setVerticalGroup(
354 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
355 .addGroup(layout.createSequentialGroup()
356 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 482, javax.swing.GroupLayout.PREFERRED_SIZE)
357 .addGap(0, 8, Short.MAX_VALUE))
362 private void addExtButtonActionPerformed(java.awt.event.ActionEvent evt) {
363 String newExt = userExtTextField.getText();
364 if (newExt.isEmpty()) {
365 extErrorLabel.setForeground(Color.red);
366 extErrorLabel.setText(
367 NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.addExtButton.errLabel.empty"));
371 if (selectedMime.isEmpty()) {
372 extErrorLabel.setForeground(Color.red);
373 extErrorLabel.setText(
374 NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.addExtButton.errLabel.noMimeType"));
378 if (currentExtensions.contains(newExt)) {
379 extErrorLabel.setForeground(Color.red);
380 extErrorLabel.setText(
381 NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.addExtButton.errLabel.extExists"));
385 ArrayList<String> editedExtensions =
new ArrayList<>(Arrays.asList(editableMap.get(selectedMime)));
386 editedExtensions.add(newExt);
389 editableMap.put(selectedMime, editedExtensions.toArray(
new String[0]));
393 extTableModel.resync();
396 extErrorLabel.setForeground(Color.blue);
397 extErrorLabel.setText(
398 NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.addExtButton.errLabel.extAdded",
400 extRemoveErrLabel.setText(
" ");
401 userExtTextField.setText(
"");
405 private void addTypeButtonActionPerformed(java.awt.event.ActionEvent evt) {
406 String newMime = userTypeTextField.getText();
407 if (newMime.isEmpty()) {
408 mimeErrLabel.setForeground(Color.red);
409 mimeErrLabel.setText(NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.addTypeButton.empty"));
412 if (newMime.equals(
"application/octet-stream")) {
413 mimeErrLabel.setForeground(Color.red);
414 mimeErrLabel.setText(NbBundle.getMessage(
this.getClass(),
415 "FileExtMismatchConfigPanel.addTypeButton.mimeTypeNotSupported"));
418 if (mimeList.contains(newMime)) {
419 mimeErrLabel.setForeground(Color.red);
420 mimeErrLabel.setText(
421 NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.addTypeButton.mimeTypeExists"));
425 boolean mimeTypeDetectable = (null != fileTypeDetector) ? fileTypeDetector.isDetectable(newMime) :
false;
426 if (!mimeTypeDetectable) {
427 mimeErrLabel.setForeground(Color.red);
428 mimeErrLabel.setText(NbBundle.getMessage(
this.getClass(),
429 "FileExtMismatchConfigPanel.addTypeButton.mimeTypeNotDetectable"));
433 editableMap.put(newMime,
new String[0]);
437 mimeTableModel.resync();
441 mimeErrLabel.setForeground(Color.blue);
442 mimeErrLabel.setText(
443 NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.addTypeButton.mimeTypeAdded", newMime));
444 mimeRemoveErrLabel.setText(
" ");
445 userTypeTextField.setText(
"");
449 private void userExtTextFieldFocusGained(java.awt.event.FocusEvent evt) {
450 extErrorLabel.setText(
" ");
453 private void userTypeTextFieldFocusGained(java.awt.event.FocusEvent evt) {
454 mimeErrLabel.setText(
" ");
457 private void removeTypeButtonActionPerformed(java.awt.event.ActionEvent evt) {
458 if (selectedMime.isEmpty()) {
459 mimeRemoveErrLabel.setForeground(Color.red);
460 mimeRemoveErrLabel.setText(
461 NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.removeTypeButton.noneSelected"));
465 editableMap.remove(selectedMime);
466 String deadMime = selectedMime;
470 mimeTableModel.resync();
473 mimeRemoveErrLabel.setForeground(Color.blue);
474 mimeRemoveErrLabel.setText(
475 NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.remoteTypeButton.deleted", deadMime));
479 private void removeExtButtonActionPerformed(java.awt.event.ActionEvent evt) {
480 if (selectedExt.isEmpty()) {
481 extRemoveErrLabel.setForeground(Color.red);
482 extRemoveErrLabel.setText(
483 NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.removeExtButton.noneSelected"));
487 if (selectedMime.isEmpty()) {
488 extErrorLabel.setForeground(Color.red);
489 extErrorLabel.setText(NbBundle.getMessage(
this.getClass(),
490 "FileExtMismatchConfigPanel.removeExtButton.noMimeTypeSelected"));
494 ArrayList<String> editedExtensions =
new ArrayList<>(Arrays.asList(editableMap.get(selectedMime)));
495 editedExtensions.remove(selectedExt);
496 String deadExt = selectedExt;
499 editableMap.put(selectedMime, editedExtensions.toArray(
new String[0]));
503 extTableModel.resync();
506 extRemoveErrLabel.setForeground(Color.blue);
507 extRemoveErrLabel.setText(
508 NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.removeExtButton.deleted", deadExt));
512 private void updateMimeList() {
513 mimeList =
new ArrayList<>(editableMap.keySet());
514 if (mimeList.size() > 0) {
515 Collections.sort(mimeList);
519 private void updateExtList() {
520 String[] temp = editableMap.get(selectedMime);
522 currentExtensions =
new ArrayList<>(Arrays.asList(temp));
523 if (temp.length > 0) {
524 Collections.sort(currentExtensions);
527 currentExtensions = null;
532 public void saveSettings() {
533 if (FileExtMismatchXML.getDefault().save(editableMap)) {
534 mimeErrLabel.setText(
" ");
535 mimeRemoveErrLabel.setText(
" ");
536 extRemoveErrLabel.setText(
" ");
537 extErrorLabel.setText(
" ");
539 saveMsgLabel.setText(NbBundle.getMessage(
this.getClass(),
"FileExtMismatchConfigPanel.store.msg"));
542 JOptionPane.showMessageDialog(
this,
543 NbBundle.getMessage(
this.getClass(),
544 "FileExtMismatchConfigPanel.store.msgDlg.msg"),
545 NbBundle.getMessage(
this.getClass(),
546 "FileExtMismatchConfigPanel.save.msgDlg.title"),
547 JOptionPane.ERROR_MESSAGE);
555 editableMap = FileExtMismatchXML.getDefault().load();
561 public void store() {
565 private void setIsModified() {
566 saveMsgLabel.setText(
" ");
569 public void cancel() {
584 private javax.swing.JButton addExtButton;
585 private javax.swing.JButton addTypeButton;
586 private javax.swing.JLabel extErrorLabel;
587 private javax.swing.JLabel extHeaderLabel;
588 private javax.swing.JLabel extRemoveErrLabel;
589 private javax.swing.JTable extTable;
590 private javax.swing.JPanel extensionPanel;
591 private javax.swing.JLabel jLabel1;
592 private javax.swing.JPanel jPanel1;
593 private javax.swing.JScrollPane jScrollPane1;
594 private javax.swing.JScrollPane jScrollPane2;
595 private javax.swing.JScrollPane jScrollPane3;
596 private javax.swing.JSplitPane jSplitPane1;
597 private javax.swing.JLabel mimeErrLabel;
598 private javax.swing.JPanel mimePanel;
599 private javax.swing.JLabel mimeRemoveErrLabel;
600 private javax.swing.JTable mimeTable;
601 private javax.swing.JButton removeExtButton;
602 private javax.swing.JButton removeTypeButton;
603 private javax.swing.JLabel saveMsgLabel;
604 private javax.swing.JTextField userExtTextField;
605 private javax.swing.JTextField userTypeTextField;
617 return editableMap == null ? 0 : editableMap.size();
622 String colName = null;
626 colName = NbBundle.getMessage(this.getClass(),
"FileExtMismatchConfigPanel.mimeTableModel.colName");
638 if ((mimeList == null) || (rowIndex > mimeList.size())) {
641 String word = mimeList.get(rowIndex);
642 switch (columnIndex) {
647 logger.log(Level.SEVERE,
"Invalid table column index: {0}", columnIndex);
659 public void setValueAt(Object aValue,
int rowIndex,
int columnIndex) {
668 fireTableDataChanged();
681 return currentExtensions == null ? 0 : currentExtensions.size();
686 String colName = null;
690 colName = NbBundle.getMessage(this.getClass(),
"FileExtMismatchConfigPanel.extTableModel.colName");
703 if ((currentExtensions == null) || (currentExtensions.isEmpty()) || (rowIndex > currentExtensions.size())) {
706 String word = currentExtensions.get(rowIndex);
707 switch (columnIndex) {
712 logger.log(Level.SEVERE,
"Invalid table column index: {0}", columnIndex);
724 public void setValueAt(Object aValue,
int rowIndex,
int columnIndex) {
733 fireTableDataChanged();
String getColumnName(int column)
boolean isCellEditable(int rowIndex, int columnIndex)
Class<?> getColumnClass(int c)
void setValueAt(Object aValue, int rowIndex, int columnIndex)
Class<?> getColumnClass(int c)
void setValueAt(Object aValue, int rowIndex, int columnIndex)
boolean isCellEditable(int rowIndex, int columnIndex)
Object getValueAt(int rowIndex, int columnIndex)
Object getValueAt(int rowIndex, int columnIndex)
String getColumnName(int column)