From 5d4681335e044b127b5b5b083fd3a53ecea32c94 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 13 Apr 2017 13:54:57 -0400 Subject: [PATCH 1/3] 2483 add new line before pasting into keywords list jTextArea --- .../keywordsearch/AddKeywordsDialog.form | 3 + .../keywordsearch/AddKeywordsDialog.java | 72 +++++++++++-------- 2 files changed, 45 insertions(+), 30 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form index 65cdd9f88d..aa24012eed 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form @@ -134,6 +134,9 @@ + + + diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java index dd87722705..cb830bd728 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"); @@ -28,6 +28,7 @@ import java.util.Arrays; import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; +import javax.swing.JTextArea; import javax.swing.SwingUtilities; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; @@ -40,19 +41,19 @@ import org.openide.windows.WindowManager; class AddKeywordsDialog extends javax.swing.JDialog { List newKeywords = new ArrayList<>(); - + /** - * 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() { @@ -60,20 +61,23 @@ class AddKeywordsDialog extends javax.swing.JDialog { public void changedUpdate(DocumentEvent e) { fire(); } + @Override public void removeUpdate(DocumentEvent e) { fire(); } + @Override public void insertUpdate(DocumentEvent e) { fire(); } + private void fire() { enableButtons(); } }); } - + /** * Display the dialog */ @@ -83,51 +87,52 @@ class AddKeywordsDialog extends javax.swing.JDialog { setLocation((screenDimension.width - getSize().width) / 2, (screenDimension.height - getSize().height) / 2); setVisible(true); } - + /** - * 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 +150,14 @@ 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(); + keywordTextArea = new JTextArea() { + //Override the paste action for this jtext area to always insert a new line before the pasted text + @Override + public void paste() { + keywordTextArea.setText(keywordTextArea.getText() + "\n"); + super.paste(); + } + }; enterKeywordsLabel = new javax.swing.JLabel(); keywordTypeLabel = new javax.swing.JLabel(); addButton = new javax.swing.JButton(); @@ -261,7 +273,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 From ad5ae3e21b6a54929ccc3d8a26031322f0816a7b Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 13 Apr 2017 14:19:08 -0400 Subject: [PATCH 2/3] 2483 simplified adding newline to end of current keyword list when paste --- .../org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form | 2 +- .../org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form index aa24012eed..d662d281dd 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form @@ -135,7 +135,7 @@ - + diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java index cb830bd728..afa4830b23 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java @@ -154,7 +154,7 @@ class AddKeywordsDialog extends javax.swing.JDialog { //Override the paste action for this jtext area to always insert a new line before the pasted text @Override public void paste() { - keywordTextArea.setText(keywordTextArea.getText() + "\n"); + keywordTextArea.append("\n"); super.paste(); } }; From e842f1f25ae5c18c1024e7042a02125f90ed3ffb Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Mon, 17 Apr 2017 15:31:56 -0400 Subject: [PATCH 3/3] 2483 keyword paste now appends, newline is conditional --- .../keywordsearch/AddKeywordsDialog.form | 14 --- .../keywordsearch/AddKeywordsDialog.java | 103 ++++++++++-------- 2 files changed, 59 insertions(+), 58 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form index d662d281dd..f174c6b3c3 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.form @@ -125,20 +125,6 @@ - - - - - - - - - - - - - - diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java index afa4830b23..64f5a80843 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AddKeywordsDialog.java @@ -28,7 +28,6 @@ import java.util.Arrays; import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; -import javax.swing.JTextArea; import javax.swing.SwingUtilities; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; @@ -41,7 +40,7 @@ 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. @@ -56,26 +55,7 @@ class AddKeywordsDialog extends javax.swing.JDialog { 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(); } /** @@ -88,6 +68,61 @@ class AddKeywordsDialog extends javax.swing.JDialog { 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 @@ -150,14 +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 JTextArea() { - //Override the paste action for this jtext area to always insert a new line before the pasted text - @Override - public void paste() { - keywordTextArea.append("\n"); - super.paste(); - } - }; enterKeywordsLabel = new javax.swing.JLabel(); keywordTypeLabel = new javax.swing.JLabel(); addButton = new javax.swing.JButton(); @@ -176,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 @@ -283,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(); @@ -316,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;