diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form index 65cdd9f88d..f174c6b3c3 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form @@ -125,17 +125,6 @@ - - - - - - - - - - - diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java index dd87722705..64f5a80843 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2016 Basis Technology Corp. + * Copyright 2011-2017 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -40,40 +40,24 @@ import org.openide.windows.WindowManager; class AddKeywordsDialog extends javax.swing.JDialog { List newKeywords = new ArrayList<>(); - + private javax.swing.JTextArea keywordTextArea; /** - * Creates new form AddKeywordsDialog. - * Note that this does not display the dialog - call display() after creation. + * Creates new form AddKeywordsDialog. Note that this does not display the + * dialog - call display() after creation. + * * @param initialKeywords Keywords to populate the list with - * @param type Starting keyword type + * @param type Starting keyword type */ - AddKeywordsDialog(){ + AddKeywordsDialog() { super((JFrame) WindowManager.getDefault().getMainWindow(), NbBundle.getMessage(AddKeywordsDialog.class, "AddKeywordsDialog.addKeywordsTitle.text"), true); initComponents(); - // Set the add button to only be active when there is text in the text area addButton.setEnabled(false); - keywordTextArea.getDocument().addDocumentListener(new DocumentListener() { - @Override - public void changedUpdate(DocumentEvent e) { - fire(); - } - @Override - public void removeUpdate(DocumentEvent e) { - fire(); - } - @Override - public void insertUpdate(DocumentEvent e) { - fire(); - } - private void fire() { - enableButtons(); - } - }); + initKeywordTextArea(); } - + /** * Display the dialog */ @@ -83,51 +67,107 @@ class AddKeywordsDialog extends javax.swing.JDialog { setLocation((screenDimension.width - getSize().width) / 2, (screenDimension.height - getSize().height) / 2); setVisible(true); } - + + private void initKeywordTextArea() { + keywordTextArea = new javax.swing.JTextArea() { + //Override the paste action for this jtext area to always append pasted text with a new line if necessary + @Override + public void paste() { + //if the cursor position is not at the start of a new line add the new line symbol before the pasted text + if (!(keywordTextArea.getDocument().getLength()==0) && !keywordTextArea.getText().endsWith("\n")) { + keywordTextArea.append(System.getProperty("line.separator")); + } + keywordTextArea.setCaretPosition(keywordTextArea.getDocument().getLength()); + super.paste(); + } + }; + keywordTextArea.setColumns( + 20); + keywordTextArea.setRows( + 5); + keywordTextArea.addMouseListener( + new java.awt.event.MouseAdapter() { + @Override + public void mouseClicked(java.awt.event.MouseEvent evt + ) { + keywordTextAreaMouseClicked(evt); + } + } + ); + jScrollPane1.setViewportView(keywordTextArea); + + keywordTextArea.getDocument() + .addDocumentListener(new DocumentListener() { + @Override + public void changedUpdate(DocumentEvent e + ) { + fire(); + } + + @Override + public void removeUpdate(DocumentEvent e + ) { + fire(); + } + + @Override + public void insertUpdate(DocumentEvent e + ) { + fire(); + } + + private void fire() { + enableButtons(); + } + } + ); + } + /** - * Set the initial contents of the text box. - * Intended to be used to redisplay any keywords that contained errors - * @param initialKeywords + * Set the initial contents of the text box. Intended to be used to + * redisplay any keywords that contained errors + * + * @param initialKeywords */ - void setInitialKeywordList(String initialKeywords, boolean isLiteral, boolean isWholeWord){ + void setInitialKeywordList(String initialKeywords, boolean isLiteral, boolean isWholeWord) { keywordTextArea.setText(initialKeywords); - if (!isLiteral){ + if (!isLiteral) { regexRadioButton.setSelected(true); - } - else if (isWholeWord){ + } else if (isWholeWord) { exactRadioButton.setSelected(true); - } - else { + } else { substringRadioButton.setSelected(true); } } - - - private void enableButtons(){ - addButton.setEnabled(! keywordTextArea.getText().isEmpty()); + + private void enableButtons() { + addButton.setEnabled(!keywordTextArea.getText().isEmpty()); } - + /** * Get the list of keywords from the text area + * * @return list of keywords */ - List getKeywords(){ + List getKeywords() { return newKeywords; } - + /** * Get whether the regex option is selected + * * @return true if the regex radio button is selected */ - boolean isKeywordRegex(){ + boolean isKeywordRegex() { return regexRadioButton.isSelected(); } - + /** * Get whether the exact match option is selected + * * @return true if the exact match radio button is selected */ - boolean isKeywordExact(){ + boolean isKeywordExact() { return exactRadioButton.isSelected(); } @@ -145,7 +185,6 @@ class AddKeywordsDialog extends javax.swing.JDialog { substringRadioButton = new javax.swing.JRadioButton(); regexRadioButton = new javax.swing.JRadioButton(); jScrollPane1 = new javax.swing.JScrollPane(); - keywordTextArea = new javax.swing.JTextArea(); enterKeywordsLabel = new javax.swing.JLabel(); keywordTypeLabel = new javax.swing.JLabel(); addButton = new javax.swing.JButton(); @@ -164,15 +203,6 @@ class AddKeywordsDialog extends javax.swing.JDialog { keywordTypeButtonGroup.add(regexRadioButton); org.openide.awt.Mnemonics.setLocalizedText(regexRadioButton, org.openide.util.NbBundle.getMessage(AddKeywordsDialog.class, "AddKeywordsDialog.regexRadioButton.text")); // NOI18N - keywordTextArea.setColumns(20); - keywordTextArea.setRows(5); - keywordTextArea.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - keywordTextAreaMouseClicked(evt); - } - }); - jScrollPane1.setViewportView(keywordTextArea); - org.openide.awt.Mnemonics.setLocalizedText(enterKeywordsLabel, org.openide.util.NbBundle.getMessage(AddKeywordsDialog.class, "AddKeywordsDialog.enterKeywordsLabel.text")); // NOI18N org.openide.awt.Mnemonics.setLocalizedText(keywordTypeLabel, org.openide.util.NbBundle.getMessage(AddKeywordsDialog.class, "AddKeywordsDialog.keywordTypeLabel.text")); // NOI18N @@ -261,7 +291,7 @@ class AddKeywordsDialog extends javax.swing.JDialog { private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addButtonActionPerformed // Save the values from the list newKeywords.addAll(Arrays.asList(keywordTextArea.getText().split("\\r?\\n"))); - + setVisible(false); dispose(); }//GEN-LAST:event_addButtonActionPerformed @@ -271,7 +301,7 @@ class AddKeywordsDialog extends javax.swing.JDialog { dispose(); }//GEN-LAST:event_cancelButtonActionPerformed - private void keywordTextAreaMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_keywordTextAreaMouseClicked + private void keywordTextAreaMouseClicked(java.awt.event.MouseEvent evt) { if (SwingUtilities.isRightMouseButton(evt)) { JPopupMenu popup = new JPopupMenu(); @@ -304,16 +334,13 @@ class AddKeywordsDialog extends javax.swing.JDialog { popup.add(pasteMenu); popup.show(keywordTextArea, evt.getX(), evt.getY()); } - }//GEN-LAST:event_keywordTextAreaMouseClicked - - + } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton addButton; private javax.swing.JButton cancelButton; private javax.swing.JLabel enterKeywordsLabel; private javax.swing.JRadioButton exactRadioButton; private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JTextArea keywordTextArea; private javax.swing.ButtonGroup keywordTypeButtonGroup; private javax.swing.JLabel keywordTypeLabel; private javax.swing.JButton pasteButton;