Merge pull request #2704 from wschaeferB/2483-PasteKeywordNewline

2483 add new line before pasting into keywords list jTextArea
This commit is contained in:
Richard Cordovano 2017-04-18 09:28:33 -04:00 committed by GitHub
commit d34187ee04
2 changed files with 88 additions and 72 deletions

View File

@ -125,17 +125,6 @@
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="keywordTextArea">
<Properties>
<Property name="columns" type="int" value="20"/>
<Property name="rows" type="int" value="5"/>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="keywordTextAreaMouseClicked"/>
</Events>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JLabel" name="enterKeywordsLabel">
<Properties>

View File

@ -1,7 +1,7 @@
/*
* Autopsy Forensic Browser
*
* Copyright 2011-2016 Basis Technology Corp.
* Copyright 2011-2017 Basis Technology Corp.
* Contact: carrier <at> sleuthkit <dot> org
*
* Licensed under the Apache License, Version 2.0 (the "License");
@ -40,38 +40,22 @@ import org.openide.windows.WindowManager;
class AddKeywordsDialog extends javax.swing.JDialog {
List<String> 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();
}
/**
@ -84,50 +68,106 @@ 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
* 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<String> getKeywords(){
List<String> 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
@ -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;