diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties
index 86ed71097f..c9f8567892 100644
--- a/Core/nbproject/project.properties
+++ b/Core/nbproject/project.properties
@@ -1,13 +1,19 @@
file.reference.activemq-all-5.11.1.jar=release/modules/ext/activemq-all-5.11.1.jar
+file.reference.c3p0-0.9.5.jar=release/modules/ext/c3p0-0.9.5.jar
+file.reference.httpclient-4.3.1.jar=release/modules/ext/httpclient-4.3.1.jar
+file.reference.httpcore-4.3.jar=release/modules/ext/httpcore-4.3.jar
file.reference.jdom-2.0.5-contrib.jar=release/modules/ext/jdom-2.0.5-contrib.jar
file.reference.jdom-2.0.5.jar=release/modules/ext/jdom-2.0.5.jar
file.reference.jython-standalone-2.7.0.jar=release/modules/ext/jython-standalone-2.7.0.jar
+file.reference.mchange-commons-java-0.2.9.jar=release/modules/ext/mchange-commons-java-0.2.9.jar
file.reference.metadata-extractor-2.8.1.jar=release/modules/ext/metadata-extractor-2.8.1.jar
+file.reference.noggit-0.5.jar=release/modules/ext/noggit-0.5.jar
file.reference.postgresql-9.4-1201-jdbc41.jar=release/modules/ext/postgresql-9.4-1201-jdbc41.jar
file.reference.opencv-248.jar=release/modules/ext/opencv-248.jar
file.reference.Rejistry-1.0-SNAPSHOT.jar=release/modules/ext/Rejistry-1.0-SNAPSHOT.jar
file.reference.sevenzipjbinding-AllPlatforms.jar=release/modules/ext/sevenzipjbinding-AllPlatforms.jar
file.reference.sevenzipjbinding.jar=release/modules/ext/sevenzipjbinding.jar
+file.reference.solr-solrj-4.9.1.jar=release/modules/ext/solr-solrj-4.9.1.jar
file.reference.sqlite-jdbc-3.8.11.jar=release/modules/ext/sqlite-jdbc-3.8.11.jar
file.reference.StixLib.jar=release/modules/ext/StixLib.jar
file.reference.tika-core-1.5.jar=release/modules/ext/tika-core-1.5.jar
@@ -16,10 +22,12 @@ file.reference.xmpcore-5.1.2.jar=release/modules/ext/xmpcore-5.1.2.jar
javac.source=1.8
javac.compilerargs=-Xlint -Xlint:-serial
javadoc.reference.metadata-extractor-2.8.1.jar=release/modules/ext/metadata-extractor-2.8.1-src.zip
+javadoc.reference.solr-solrj-4.9.1.jar=release/modules/ext/solr-solrj-4.9.1-javadoc.jar
license.file=../LICENSE-2.0.txt
nbm.homepage=http://www.sleuthkit.org/
nbm.module.author=Brian Carrier
nbm.needs.restart=true
source.reference.metadata-extractor-2.8.1.jar=release/modules/ext/metadata-extractor-2.8.1-src.zip!/Source/
+source.reference.solr-solrj-4.9.1.jar=release/modules/ext/solr-solrj-4.9.1-sources.jar
spec.version.base=10.3
diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml
index 78bb7e701e..ea045b73c1 100644
--- a/Core/nbproject/project.xml
+++ b/Core/nbproject/project.xml
@@ -205,6 +205,14 @@
org.sleuthkit.autopsy.report
org.sleuthkit.datamodel
+
+ ext/xmpcore-5.1.2.jar
+ release/modules/ext/xmpcore-5.1.2.jar
+
+
+ ext/httpcore-4.3.jar
+ release/modules/ext/httpcore-4.3.jar
+
ext/jdom-2.0.5.jar
release/modules/ext/jdom-2.0.5.jar
@@ -213,18 +221,6 @@
ext/postgresql-9.4-1201-jdbc41.jar
release/modules/ext/postgresql-9.4-1201-jdbc41.jar
-
- ext/mchange-commons-java-0.2.9.jar
- release/modules/ext/mchange-commons-java-0.2.9.jar
-
-
- ext/c3p0-0.9.5.jar
- release/modules/ext/c3p0-0.9.5.jar
-
-
- ext/xmpcore-5.1.2.jar
- release/modules/ext/xmpcore-5.1.2.jar
-
ext/StixLib.jar
release/modules/ext/StixLib.jar
@@ -233,17 +229,17 @@
ext/sqlite-jdbc-3.8.11.jar
release/modules/ext/sqlite-jdbc-3.8.11.jar
+
+ ext/activemq-all-5.11.1.jar
+ release/modules/ext/activemq-all-5.11.1.jar
+
ext/opencv-248.jar
release/modules/ext/opencv-248.jar
- ext/Rejistry-1.0-SNAPSHOT.jar
- release/modules/ext/Rejistry-1.0-SNAPSHOT.jar
-
-
- ext/activemq-all-5.11.1.jar
- release/modules/ext/activemq-all-5.11.1.jar
+ ext/httpclient-4.3.1.jar
+ release/modules/ext/httpclient-4.3.1.jar
ext/Rejistry-1.0-SNAPSHOT.jar
@@ -257,6 +253,10 @@
ext/sevenzipjbinding.jar
release/modules/ext/sevenzipjbinding.jar
+
+ ext/mchange-commons-java-0.2.9.jar
+ release/modules/ext/mchange-commons-java-0.2.9.jar
+
ext/sevenzipjbinding-AllPlatforms.jar
release/modules/ext/sevenzipjbinding-AllPlatforms.jar
@@ -266,8 +266,8 @@
release/modules/ext/tika-core-1.5.jar
- ext/metadata-extractor-2.8.1.jar
- release/modules/ext/metadata-extractor-2.8.1.jar
+ ext/noggit-0.5.jar
+ release/modules/ext/noggit-0.5.jar
ext/metadata-extractor-2.8.1.jar
@@ -277,10 +277,18 @@
ext/jdom-2.0.5-contrib.jar
release/modules/ext/jdom-2.0.5-contrib.jar
+
+ ext/c3p0-0.9.5.jar
+ release/modules/ext/c3p0-0.9.5.jar
+
ext/Tsk_DataModel.jar
release/modules/ext/Tsk_DataModel.jar
+
+ ext/solr-solrj-4.9.1.jar
+ release/modules/ext/solr-solrj-4.9.1.jar
+
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties
index 539b2354f9..988b154ec2 100644
--- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties
+++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties
@@ -150,15 +150,6 @@ FXVideoPanel.progress.errorWritingVideoToDisk=Error writing video to disk
OptionsCategory_Name_Multi_User_Settings=Multi-user
OptionsCategory_Keywords_Multi_User_Options=Multi-user Options
MultiUserSettingsPanel.lbSolrSettings.text=Solr Settings
-MultiUserSettingsPanel.tbPassword.toolTipText=Password
-MultiUserSettingsPanel.tbPassword.text=
-MultiUserSettingsPanel.tbUsername.toolTipText=User Name
-MultiUserSettingsPanel.tbUsername.text=
-MultiUserSettingsPanel.tbPortNumber.toolTipText=Port Number
-MultiUserSettingsPanel.tbPortNumber.text=
-MultiUserSettingsPanel.tbHostnameOrIp.toolTipText=Hostname or IP Address
-MultiUserSettingsPanel.tbHostnameOrIp.text=
-MultiUserSettingsPanel.lbMessagingSettings.text=Message Service Settings
MultiUserSettingsPanel.cbEnableMultiUser.text=Enable Multi-user cases
MultiUserSettingsPanel.lbDatabaseSettings.text=Database Settings
MultiUserSettingsPanel.validationErrMsg.incomplete=Fill in all values
@@ -166,16 +157,6 @@ MultiUserSettingsPanel.validationErrMsg.invalidDatabasePort=Invalid database por
MultiUserSettingsPanel.validationErrMsg.invalidMessageServicePort=Invalid message service port number
MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort=Invalid Solr server port number
MultiUserSettingsPanel.validationErrMsg.invalidMessgeServiceURI=Message service host and/or port not valid
-MultiUserSettingsPanel.msgHostTextField.text=
-MultiUserSettingsPanel.msgHostTextField.toolTipText=Hostname or IP Address
-MultiUserSettingsPanel.msgUserNameTextField.toolTipText=Hostname or IP Address
-MultiUserSettingsPanel.msgUserNameTextField.text=
-MultiUserSettingsPanel.msgPasswordField.toolTipText=Password
-MultiUserSettingsPanel.msgPasswordField.text=
-MultiUserSettingsPanel.msgPortTextField.toolTipText=Hostname or IP Address
-MultiUserSettingsPanel.msgPortTextField.text=
-MultiUserSettingsPanel.tbIndexingServerHost.toolTipText=Hostname or IP Address
-MultiUserSettingsPanel.tbIndexingServerPort.toolTipText=Port Number
AutopsyOptionsPanel.jCheckBoxEnableProcTimeout.text=
AutopsyOptionsPanel.jFormattedTextFieldProcTimeOutHrs.text=60
AutopsyOptionsPanel.jLabelProcessTimeOutUnits.text=hour(s)
@@ -185,3 +166,28 @@ DataContentViewerHex.goToOffsetTextField.text=
DataContentViewerHex.goToOffsetTextField.msgDlg=Invalid Offset: {0}
DataContentViewerHex.setDataView.invalidOffset.negativeOffsetValue=Cannot jump to the resultant offset
MultiUserSettingsPanel.tbOops.text=
+MultiUserSettingsPanel.lbTestDatabase.text=
+MultiUserSettingsPanel.bnTestDatabase.text=Test
+MultiUserSettingsPanel.tbDbHostname.toolTipText=Hostname or IP Address
+MultiUserSettingsPanel.tbDbHostname.text=
+MultiUserSettingsPanel.tbDbPort.toolTipText=Port Number
+MultiUserSettingsPanel.tbDbPort.text=
+MultiUserSettingsPanel.tbDbUsername.toolTipText=User Name
+MultiUserSettingsPanel.tbDbUsername.text=
+MultiUserSettingsPanel.tbDbPassword.toolTipText=Password
+MultiUserSettingsPanel.tbDbPassword.text=
+MultiUserSettingsPanel.lbTestSolr.text=
+MultiUserSettingsPanel.bnTestSolr.text=Test
+MultiUserSettingsPanel.tbSolrHostname.toolTipText=Hostname or IP Address
+MultiUserSettingsPanel.tbSolrPort.toolTipText=Port Number
+MultiUserSettingsPanel.lbTestMessageService.text=
+MultiUserSettingsPanel.bnTestMessageService.text=Test
+MultiUserSettingsPanel.lbMessageServiceSettings.text=ActiveMQ Message Service Settings
+MultiUserSettingsPanel.tbMsgHost.toolTipText=Hostname or IP Address
+MultiUserSettingsPanel.tbMsgHost.text=
+MultiUserSettingsPanel.tbMsgPort.toolTipText=Port Number
+MultiUserSettingsPanel.tbMsgPort.text=
+MultiUserSettingsPanel.tbMsgUsername.toolTipText=User Name
+MultiUserSettingsPanel.tbMsgUsername.text=
+MultiUserSettingsPanel.tbMsgPassword.toolTipText=Password
+MultiUserSettingsPanel.tbMsgPassword.text=
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.form b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.form
index 931c284260..6749df0a5d 100644
--- a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.form
+++ b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.form
@@ -78,17 +78,20 @@
-
+
-
-
-
-
-
+
+
-
+
+
+
+
+
+
+
@@ -98,70 +101,74 @@
-
-
-
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -176,6 +183,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -190,15 +215,18 @@
-
+
-
+
+
-
+
+
+
+
-
-
+
@@ -208,11 +236,17 @@
-
-
-
+
+
+
+
+
+
+
+
+
-
+
@@ -229,23 +263,40 @@
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -263,17 +314,20 @@
-
+
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
@@ -283,80 +337,103 @@
-
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java
index c3fc3ed39f..3386306eef 100644
--- a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanel.java
@@ -5,6 +5,7 @@
*/
package org.sleuthkit.autopsy.corecomponents;
+import org.sleuthkit.autopsy.coreutils.SolrServiceConnectionTester;
import java.awt.Color;
import java.util.ArrayList;
import java.util.Collection;
@@ -17,24 +18,33 @@ import org.sleuthkit.datamodel.TskData.DbType;
import org.sleuthkit.autopsy.core.UserPreferences;
import org.sleuthkit.autopsy.events.MessageServiceConnectionInfo;
import org.sleuthkit.autopsy.coreutils.Logger;
+import java.awt.Cursor;
+import javax.swing.ImageIcon;
+import org.openide.util.ImageUtilities;
public final class MultiUserSettingsPanel extends javax.swing.JPanel {
- private static final String HOST_NAME_OR_IP_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbHostnameOrIp.toolTipText");
- private static final String PORT_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbPortNumber.toolTipText");
- private static final String USER_NAME_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbUsername.toolTipText");
- private static final String PASSWORD_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbPassword.toolTipText");
+ private static final String HOST_NAME_OR_IP_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbHostname.toolTipText");
+ private static final String PORT_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPort.toolTipText");
+ private static final String USER_NAME_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbUsername.toolTipText");
+ private static final String PASSWORD_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPassword.toolTipText");
private static final String INCOMPLETE_SETTINGS_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.incomplete");
private static final String INVALID_DB_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidDatabasePort");
private static final String INVALID_MESSAGE_SERVICE_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidMessageServicePort");
private static final String INVALID_INDEXING_SERVER_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort");
+ private static final long serialVersionUID = 1L;
private final MultiUserSettingsPanelController controller;
private final Collection textBoxes = new ArrayList<>();
private final TextBoxChangedListener textBoxChangedListener;
private static final Logger logger = Logger.getLogger(MultiUserSettingsPanel.class.getName());
+ private final ImageIcon goodIcon;
+ private final ImageIcon badIcon;
+ // private final ImageIcon untestedIcon;
/**
* Creates new form AutopsyMultiUserSettingsPanel
+ *
+ * @param theController Controller to notify of changes.
*/
public MultiUserSettingsPanel(MultiUserSettingsPanelController theController) {
initComponents();
@@ -44,32 +54,53 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
* Add text prompts to all of the text fields.
*/
Collection textPrompts = new ArrayList<>();
- textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbHostnameOrIp));
- textPrompts.add(new TextPrompt(PORT_PROMPT, tbPortNumber));
- textPrompts.add(new TextPrompt(USER_NAME_PROMPT, tbUsername));
- textPrompts.add(new TextPrompt(PASSWORD_PROMPT, tbPassword));
- textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, msgHostTextField));
- textPrompts.add(new TextPrompt(PORT_PROMPT, msgPortTextField));
- textPrompts.add(new TextPrompt(USER_NAME_PROMPT, msgUserNameTextField));
- textPrompts.add(new TextPrompt(PASSWORD_PROMPT, msgPasswordField));
- textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbIndexingServerHost));
- textPrompts.add(new TextPrompt(PORT_PROMPT, tbIndexingServerPort));
+ textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbDbHostname));
+ textPrompts.add(new TextPrompt(PORT_PROMPT, tbDbPort));
+ textPrompts.add(new TextPrompt(USER_NAME_PROMPT, tbDbUsername));
+ textPrompts.add(new TextPrompt(PASSWORD_PROMPT, tbDbPassword));
+ textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbMsgHost));
+ textPrompts.add(new TextPrompt(PORT_PROMPT, tbMsgPort));
+ textPrompts.add(new TextPrompt(USER_NAME_PROMPT, tbMsgUsername));
+ textPrompts.add(new TextPrompt(PASSWORD_PROMPT, tbMsgPassword));
+ textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbSolrHostname));
+ textPrompts.add(new TextPrompt(PORT_PROMPT, tbSolrPort));
configureTextPrompts(textPrompts);
+ /* Set each textbox with a "statusIcon" property enabling the
+ DocumentListeners to know which icon to erase when changes are made */
+
+ tbDbHostname.getDocument().putProperty("statusIcon", lbTestDatabase);
+ tbDbPort.getDocument().putProperty("statusIcon", lbTestDatabase);
+ tbDbUsername.getDocument().putProperty("statusIcon", lbTestDatabase);
+ tbDbPassword.getDocument().putProperty("statusIcon", lbTestDatabase);
+
+ tbSolrHostname.getDocument().putProperty("statusIcon", lbTestSolr);
+ tbSolrPort.getDocument().putProperty("statusIcon", lbTestSolr);
+
+ tbMsgHost.getDocument().putProperty("statusIcon", lbTestMessageService);
+ tbMsgPort.getDocument().putProperty("statusIcon", lbTestMessageService);
+ tbMsgUsername.getDocument().putProperty("statusIcon", lbTestMessageService);
+ tbMsgPassword.getDocument().putProperty("statusIcon", lbTestMessageService);
+
/// Register for notifications when the text boxes get updated.
textBoxChangedListener = new TextBoxChangedListener();
- textBoxes.add(tbHostnameOrIp);
- textBoxes.add(tbPortNumber);
- textBoxes.add(tbUsername);
- textBoxes.add(tbPassword);
- textBoxes.add(msgHostTextField);
- textBoxes.add(msgPortTextField);
- textBoxes.add(msgUserNameTextField);
- textBoxes.add(msgPasswordField);
- textBoxes.add(tbIndexingServerHost);
- textBoxes.add(tbIndexingServerPort);
+ textBoxes.add(tbDbHostname);
+ textBoxes.add(tbDbPort);
+ textBoxes.add(tbDbUsername);
+ textBoxes.add(tbDbPassword);
+ textBoxes.add(tbMsgHost);
+ textBoxes.add(tbMsgPort);
+ textBoxes.add(tbMsgUsername);
+ textBoxes.add(tbMsgPassword);
+ textBoxes.add(tbSolrHostname);
+ textBoxes.add(tbSolrPort);
+
addDocumentListeners(textBoxes, textBoxChangedListener);
-
+ goodIcon = new ImageIcon(ImageUtilities.loadImage("org/sleuthkit/autopsy/images/good.png", false));
+ badIcon = new ImageIcon(ImageUtilities.loadImage("org/sleuthkit/autopsy/images/bad.png", false));
+ lbTestDatabase.setIcon(null);
+ lbTestSolr.setIcon(null);
+ lbTestMessageService.setIcon(null);
enableMultiUserComponents(textBoxes, cbEnableMultiUser.isSelected());
}
@@ -110,46 +141,62 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
pnOverallPanel = new javax.swing.JPanel();
pnDatabaseSettings = new javax.swing.JPanel();
- tbHostnameOrIp = new javax.swing.JTextField();
- tbPortNumber = new javax.swing.JTextField();
- tbUsername = new javax.swing.JTextField();
- tbPassword = new javax.swing.JPasswordField();
+ tbDbHostname = new javax.swing.JTextField();
+ tbDbPort = new javax.swing.JTextField();
+ tbDbUsername = new javax.swing.JTextField();
+ tbDbPassword = new javax.swing.JPasswordField();
lbDatabaseSettings = new javax.swing.JLabel();
+ bnTestDatabase = new javax.swing.JButton();
+ lbTestDatabase = new javax.swing.JLabel();
pnSolrSettings = new javax.swing.JPanel();
lbSolrSettings = new javax.swing.JLabel();
- tbIndexingServerHost = new javax.swing.JTextField();
- tbIndexingServerPort = new javax.swing.JTextField();
+ tbSolrHostname = new javax.swing.JTextField();
+ tbSolrPort = new javax.swing.JTextField();
+ bnTestSolr = new javax.swing.JButton();
+ lbTestSolr = new javax.swing.JLabel();
pnMessagingSettings = new javax.swing.JPanel();
- lbMessagingSettings = new javax.swing.JLabel();
- msgHostTextField = new javax.swing.JTextField();
- msgUserNameTextField = new javax.swing.JTextField();
- msgPortTextField = new javax.swing.JTextField();
- msgPasswordField = new javax.swing.JPasswordField();
+ lbMessageServiceSettings = new javax.swing.JLabel();
+ tbMsgHost = new javax.swing.JTextField();
+ tbMsgUsername = new javax.swing.JTextField();
+ tbMsgPort = new javax.swing.JTextField();
+ tbMsgPassword = new javax.swing.JPasswordField();
+ bnTestMessageService = new javax.swing.JButton();
+ lbTestMessageService = new javax.swing.JLabel();
cbEnableMultiUser = new javax.swing.JCheckBox();
tbOops = new javax.swing.JTextField();
pnDatabaseSettings.setBorder(javax.swing.BorderFactory.createEtchedBorder());
- tbHostnameOrIp.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
- tbHostnameOrIp.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbHostnameOrIp.text")); // NOI18N
- tbHostnameOrIp.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbHostnameOrIp.toolTipText")); // NOI18N
+ tbDbHostname.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ tbDbHostname.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbHostname.text")); // NOI18N
+ tbDbHostname.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbHostname.toolTipText")); // NOI18N
- tbPortNumber.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
- tbPortNumber.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbPortNumber.text")); // NOI18N
- tbPortNumber.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbPortNumber.toolTipText")); // NOI18N
+ tbDbPort.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ tbDbPort.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPort.text")); // NOI18N
+ tbDbPort.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPort.toolTipText")); // NOI18N
- tbUsername.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
- tbUsername.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbUsername.text")); // NOI18N
- tbUsername.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbUsername.toolTipText")); // NOI18N
+ tbDbUsername.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ tbDbUsername.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbUsername.text")); // NOI18N
+ tbDbUsername.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbUsername.toolTipText")); // NOI18N
- tbPassword.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
- tbPassword.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbPassword.text")); // NOI18N
- tbPassword.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbPassword.toolTipText")); // NOI18N
+ tbDbPassword.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ tbDbPassword.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPassword.text")); // NOI18N
+ tbDbPassword.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPassword.toolTipText")); // NOI18N
lbDatabaseSettings.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(lbDatabaseSettings, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbDatabaseSettings.text")); // NOI18N
lbDatabaseSettings.setVerticalAlignment(javax.swing.SwingConstants.TOP);
+ org.openide.awt.Mnemonics.setLocalizedText(bnTestDatabase, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.bnTestDatabase.text")); // NOI18N
+ bnTestDatabase.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ bnTestDatabaseActionPerformed(evt);
+ }
+ });
+
+ org.openide.awt.Mnemonics.setLocalizedText(lbTestDatabase, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbTestDatabase.text")); // NOI18N
+ lbTestDatabase.setAutoscrolls(true);
+
javax.swing.GroupLayout pnDatabaseSettingsLayout = new javax.swing.GroupLayout(pnDatabaseSettings);
pnDatabaseSettings.setLayout(pnDatabaseSettingsLayout);
pnDatabaseSettingsLayout.setHorizontalGroup(
@@ -157,29 +204,35 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
.addGroup(pnDatabaseSettingsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnDatabaseSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(tbHostnameOrIp)
- .addComponent(tbPortNumber)
- .addComponent(tbUsername)
- .addComponent(tbPassword)
+ .addComponent(tbDbHostname)
.addGroup(pnDatabaseSettingsLayout.createSequentialGroup()
.addComponent(lbDatabaseSettings)
- .addGap(0, 0, Short.MAX_VALUE)))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(bnTestDatabase)
+ .addGap(18, 18, 18)
+ .addComponent(lbTestDatabase, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(tbDbPort)
+ .addComponent(tbDbUsername)
+ .addComponent(tbDbPassword))
.addContainerGap())
);
pnDatabaseSettingsLayout.setVerticalGroup(
pnDatabaseSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnDatabaseSettingsLayout.createSequentialGroup()
.addContainerGap()
- .addComponent(lbDatabaseSettings)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 11, Short.MAX_VALUE)
- .addComponent(tbHostnameOrIp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(pnDatabaseSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(lbDatabaseSettings)
+ .addComponent(bnTestDatabase)
+ .addComponent(lbTestDatabase, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(tbDbHostname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(tbPortNumber, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(tbDbPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(tbUsername, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(tbDbUsername, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(tbPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap())
+ .addComponent(tbDbPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(13, 13, 13))
);
pnSolrSettings.setBorder(javax.swing.BorderFactory.createEtchedBorder());
@@ -187,11 +240,20 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
lbSolrSettings.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(lbSolrSettings, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbSolrSettings.text")); // NOI18N
- tbIndexingServerHost.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
- tbIndexingServerHost.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbIndexingServerHost.toolTipText")); // NOI18N
+ tbSolrHostname.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ tbSolrHostname.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbSolrHostname.toolTipText")); // NOI18N
- tbIndexingServerPort.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
- tbIndexingServerPort.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbIndexingServerPort.toolTipText")); // NOI18N
+ tbSolrPort.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ tbSolrPort.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbSolrPort.toolTipText")); // NOI18N
+
+ org.openide.awt.Mnemonics.setLocalizedText(bnTestSolr, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.bnTestSolr.text")); // NOI18N
+ bnTestSolr.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ bnTestSolrActionPerformed(evt);
+ }
+ });
+
+ org.openide.awt.Mnemonics.setLocalizedText(lbTestSolr, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbTestSolr.text")); // NOI18N
javax.swing.GroupLayout pnSolrSettingsLayout = new javax.swing.GroupLayout(pnSolrSettings);
pnSolrSettings.setLayout(pnSolrSettingsLayout);
@@ -200,45 +262,61 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
.addGroup(pnSolrSettingsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnSolrSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(tbSolrHostname)
.addGroup(pnSolrSettingsLayout.createSequentialGroup()
.addComponent(lbSolrSettings)
- .addGap(0, 0, Short.MAX_VALUE))
- .addComponent(tbIndexingServerHost, javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(tbIndexingServerPort, javax.swing.GroupLayout.Alignment.TRAILING))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(bnTestSolr)
+ .addGap(18, 18, 18)
+ .addComponent(lbTestSolr, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(tbSolrPort))
.addContainerGap())
);
pnSolrSettingsLayout.setVerticalGroup(
pnSolrSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnSolrSettingsLayout.createSequentialGroup()
.addContainerGap()
- .addComponent(lbSolrSettings)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(tbIndexingServerHost, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(pnSolrSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(pnSolrSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(lbSolrSettings)
+ .addComponent(bnTestSolr))
+ .addComponent(lbTestSolr, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(tbSolrHostname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(tbIndexingServerPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(tbSolrPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(45, 45, 45))
);
pnMessagingSettings.setBorder(javax.swing.BorderFactory.createEtchedBorder());
- lbMessagingSettings.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
- org.openide.awt.Mnemonics.setLocalizedText(lbMessagingSettings, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbMessagingSettings.text")); // NOI18N
+ lbMessageServiceSettings.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ org.openide.awt.Mnemonics.setLocalizedText(lbMessageServiceSettings, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbMessageServiceSettings.text")); // NOI18N
- msgHostTextField.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
- msgHostTextField.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.msgHostTextField.text")); // NOI18N
- msgHostTextField.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.msgHostTextField.toolTipText")); // NOI18N
+ tbMsgHost.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ tbMsgHost.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgHost.text")); // NOI18N
+ tbMsgHost.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgHost.toolTipText")); // NOI18N
- msgUserNameTextField.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
- msgUserNameTextField.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.msgUserNameTextField.text")); // NOI18N
- msgUserNameTextField.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.msgUserNameTextField.toolTipText")); // NOI18N
+ tbMsgUsername.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ tbMsgUsername.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgUsername.text")); // NOI18N
+ tbMsgUsername.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgUsername.toolTipText")); // NOI18N
- msgPortTextField.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
- msgPortTextField.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.msgPortTextField.text")); // NOI18N
- msgPortTextField.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.msgPortTextField.toolTipText")); // NOI18N
+ tbMsgPort.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ tbMsgPort.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgPort.text")); // NOI18N
+ tbMsgPort.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgPort.toolTipText")); // NOI18N
- msgPasswordField.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
- msgPasswordField.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.msgPasswordField.text")); // NOI18N
- msgPasswordField.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.msgPasswordField.toolTipText")); // NOI18N
+ tbMsgPassword.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ tbMsgPassword.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgPassword.text")); // NOI18N
+ tbMsgPassword.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgPassword.toolTipText")); // NOI18N
+
+ org.openide.awt.Mnemonics.setLocalizedText(bnTestMessageService, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.bnTestMessageService.text")); // NOI18N
+ bnTestMessageService.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ bnTestMessageServiceActionPerformed(evt);
+ }
+ });
+
+ org.openide.awt.Mnemonics.setLocalizedText(lbTestMessageService, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbTestMessageService.text")); // NOI18N
javax.swing.GroupLayout pnMessagingSettingsLayout = new javax.swing.GroupLayout(pnMessagingSettings);
pnMessagingSettings.setLayout(pnMessagingSettingsLayout);
@@ -247,28 +325,35 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
.addGroup(pnMessagingSettingsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnMessagingSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(tbMsgHost)
.addGroup(pnMessagingSettingsLayout.createSequentialGroup()
- .addComponent(lbMessagingSettings)
- .addGap(0, 334, Short.MAX_VALUE))
- .addComponent(msgHostTextField, javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(msgUserNameTextField, javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(msgPortTextField, javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(msgPasswordField))
+ .addComponent(lbMessageServiceSettings)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 229, Short.MAX_VALUE)
+ .addComponent(bnTestMessageService)
+ .addGap(18, 18, 18)
+ .addComponent(lbTestMessageService, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(tbMsgPort)
+ .addComponent(tbMsgUsername)
+ .addComponent(tbMsgPassword))
.addContainerGap())
);
pnMessagingSettingsLayout.setVerticalGroup(
pnMessagingSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnMessagingSettingsLayout.createSequentialGroup()
.addContainerGap()
- .addComponent(lbMessagingSettings)
+ .addGroup(pnMessagingSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addGroup(pnMessagingSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(lbMessageServiceSettings)
+ .addComponent(bnTestMessageService))
+ .addComponent(lbTestMessageService, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(msgHostTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(tbMsgHost, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(msgPortTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(tbMsgPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(msgUserNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(tbMsgUsername, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(msgPasswordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(tbMsgPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
@@ -280,7 +365,6 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
});
tbOops.setEditable(false);
- tbOops.setBackground(new java.awt.Color(240, 240, 240));
tbOops.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
tbOops.setForeground(new java.awt.Color(255, 0, 0));
tbOops.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbOops.text")); // NOI18N
@@ -343,34 +427,114 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
private void cbEnableMultiUserItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cbEnableMultiUserItemStateChanged
if (!cbEnableMultiUser.isSelected()) {
tbOops.setText("");
+ bnTestDatabase.setEnabled(false);
+ bnTestSolr.setEnabled(false);
+ bnTestMessageService.setEnabled(false);
}
enableMultiUserComponents(textBoxes, cbEnableMultiUser.isSelected());
controller.changed();
}//GEN-LAST:event_cbEnableMultiUserItemStateChanged
+ private void bnTestDatabaseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnTestDatabaseActionPerformed
+ lbTestDatabase.setIcon(null);
+ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ CaseDbConnectionInfo dbInfo = new CaseDbConnectionInfo(
+ this.tbDbHostname.getText(),
+ this.tbDbPort.getText(),
+ this.tbDbUsername.getText(),
+ new String(this.tbDbPassword.getPassword()),
+ DbType.POSTGRESQL);
+ if (dbInfo.canConnect()) {
+ lbTestDatabase.setIcon(goodIcon);
+ } else {
+ lbTestDatabase.setIcon(badIcon);
+ }
+ setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ }//GEN-LAST:event_bnTestDatabaseActionPerformed
+
+ private void bnTestMessageServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnTestMessageServiceActionPerformed
+ lbTestMessageService.setIcon(null);
+ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ MessageServiceConnectionInfo messagingConnectionInfo = new MessageServiceConnectionInfo(
+ this.tbMsgUsername.getText(),
+ new String(this.tbMsgPassword.getPassword()),
+ this.tbMsgHost.getText(),
+ this.tbMsgPort.getText());
+ if (messagingConnectionInfo.canConnect()) {
+ lbTestMessageService.setIcon(goodIcon);
+ } else {
+ lbTestMessageService.setIcon(badIcon);
+ }
+ setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ }//GEN-LAST:event_bnTestMessageServiceActionPerformed
+
+ private void bnTestSolrActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnTestSolrActionPerformed
+ lbTestSolr.setIcon(null);
+ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ if (SolrServiceConnectionTester.canConnect(tbSolrHostname.getText(), tbSolrPort.getText())) {
+ lbTestSolr.setIcon(goodIcon);
+ } else {
+ lbTestSolr.setIcon(badIcon);
+ }
+ setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ }//GEN-LAST:event_bnTestSolrActionPerformed
+
void load() {
CaseDbConnectionInfo dbInfo = UserPreferences.getDatabaseConnectionInfo();
- tbHostnameOrIp.setText(dbInfo.getHost().trim());
- tbPortNumber.setText(dbInfo.getPort().trim());
- tbUsername.setText(dbInfo.getUserName().trim());
- tbPassword.setText(dbInfo.getPassword());
+ tbDbHostname.setText(dbInfo.getHost().trim());
+ tbDbPort.setText(dbInfo.getPort().trim());
+ tbDbUsername.setText(dbInfo.getUserName().trim());
+ tbDbPassword.setText(dbInfo.getPassword());
MessageServiceConnectionInfo msgServiceInfo = UserPreferences.getMessageServiceConnectionInfo();
- msgHostTextField.setText(msgServiceInfo.getHost().trim());
- msgPortTextField.setText(msgServiceInfo.getPort().trim());
- msgUserNameTextField.setText(msgServiceInfo.getUserName().trim());
- msgPasswordField.setText(msgServiceInfo.getPassword());
+ tbMsgHost.setText(msgServiceInfo.getHost().trim());
+ tbMsgPort.setText(msgServiceInfo.getPort().trim());
+ tbMsgUsername.setText(msgServiceInfo.getUserName().trim());
+ tbMsgPassword.setText(msgServiceInfo.getPassword());
String indexingServerHost = UserPreferences.getIndexingServerHost().trim();
if (!indexingServerHost.isEmpty()) {
- tbIndexingServerHost.setText(indexingServerHost);
+ tbSolrHostname.setText(indexingServerHost);
}
String indexingServerPort = UserPreferences.getIndexingServerPort().trim();
if (portNumberIsValid(indexingServerPort)) {
- tbIndexingServerPort.setText(indexingServerPort);
+ tbSolrPort.setText(indexingServerPort);
}
+ lbTestDatabase.setIcon(null);
+ lbTestSolr.setIcon(null);
+ lbTestMessageService.setIcon(null);
+
+ bnTestDatabase.setEnabled(false);
+ bnTestSolr.setEnabled(false);
+ bnTestMessageService.setEnabled(false);
+
cbEnableMultiUser.setSelected(UserPreferences.getIsMultiUserModeEnabled());
+ this.valid(); // trigger validation to enable buttons based on current settings
+ }
+
+ /**
+ * Tests whether or not values have been entered in all of the database
+ * settings text fields.
+ *
+ * @return True or false.
+ */
+ private boolean databaseFieldsArePopulated() {
+ return !tbDbHostname.getText().isEmpty()
+ && !tbDbPort.getText().isEmpty()
+ && !tbDbUsername.getText().isEmpty()
+ && tbDbPassword.getPassword().length != 0;
+ }
+
+ /**
+ * Tests whether or not values have been entered in all of the Solr settings
+ * text fields.
+ *
+ * @return True or false.
+ */
+ private boolean solrFieldsArePopulated() {
+ return !tbSolrHostname.getText().isEmpty()
+ && !tbSolrPort.getText().isEmpty();
}
/**
@@ -380,14 +544,13 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
* @return True or false.
*/
private boolean messageServiceFieldsArePopulated() {
- return !msgHostTextField.getText().isEmpty()
- && !msgPortTextField.getText().isEmpty()
- && !msgUserNameTextField.getText().isEmpty()
- && msgPasswordField.getPassword().length != 0;
+ return !tbMsgHost.getText().isEmpty()
+ && !tbMsgPort.getText().isEmpty()
+ && !tbMsgUsername.getText().isEmpty()
+ && tbMsgPassword.getPassword().length != 0;
}
void store() {
-
DbType dbType = DbType.SQLITE;
if (cbEnableMultiUser.isSelected()) {
@@ -397,23 +560,23 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
UserPreferences.setIsMultiUserModeEnabled(cbEnableMultiUser.isSelected());
CaseDbConnectionInfo info = new CaseDbConnectionInfo(
- tbHostnameOrIp.getText().trim(),
- tbPortNumber.getText().trim(),
- tbUsername.getText().trim(),
- new String(tbPassword.getPassword()),
+ tbDbHostname.getText().trim(),
+ tbDbPort.getText().trim(),
+ tbDbUsername.getText().trim(),
+ new String(tbDbPassword.getPassword()),
dbType);
UserPreferences.setDatabaseConnectionInfo(info);
MessageServiceConnectionInfo msgServiceInfo = new MessageServiceConnectionInfo(
- msgUserNameTextField.getText().trim(),
- new String(msgPasswordField.getPassword()),
- msgHostTextField.getText().trim(),
- msgPortTextField.getText().trim());
+ tbMsgUsername.getText().trim(),
+ new String(tbMsgPassword.getPassword()),
+ tbMsgHost.getText().trim(),
+ tbMsgPort.getText().trim());
UserPreferences.setMessageServiceConnectionInfo(msgServiceInfo);
- UserPreferences.setIndexingServerHost(tbIndexingServerHost.getText().trim());
- UserPreferences.setIndexingServerPort(Integer.parseInt(tbIndexingServerPort.getText().trim()));
+ UserPreferences.setIndexingServerHost(tbSolrHostname.getText().trim());
+ UserPreferences.setIndexingServerPort(Integer.parseInt(tbSolrPort.getText().trim()));
}
@@ -424,26 +587,40 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
*/
boolean valid() {
tbOops.setText("");
+
if (cbEnableMultiUser.isSelected()) {
- return settingsAreComplete() && databaseSettingsAreValid() && indexingServerSettingsAreValid() && messageServiceSettingsAreValid();
+ return checkFieldsAndEnableButtons()
+ && databaseSettingsAreValid()
+ && indexingServerSettingsAreValid()
+ && messageServiceSettingsAreValid();
} else {
return true;
}
}
/**
- * Tests whether or not all of the settings components are populated.
+ * Tests whether or not all of the settings components are populated and
+ * sets the test buttons appropriately.
*
* @return True or false.
*/
- boolean settingsAreComplete() {
+ boolean checkFieldsAndEnableButtons() {
boolean result = true;
- if (tbHostnameOrIp.getText().isEmpty()
- || tbPortNumber.getText().isEmpty()
- || tbUsername.getText().isEmpty()
- || tbPassword.getPassword().length == 0
- || tbIndexingServerHost.getText().isEmpty()
- || !messageServiceFieldsArePopulated()) {
+
+ boolean dbPopulated = databaseFieldsArePopulated();
+ boolean solrPopulated = solrFieldsArePopulated();
+ boolean messageServicePopulated = messageServiceFieldsArePopulated();
+
+ // PostgreSQL Database
+ bnTestDatabase.setEnabled(dbPopulated);
+
+ // Solr Indexing
+ bnTestSolr.setEnabled(solrPopulated);
+
+ // ActiveMQ Messaging
+ bnTestMessageService.setEnabled(messageServicePopulated);
+
+ if (!dbPopulated || !solrPopulated || !messageServicePopulated) {
// We don't even have everything filled out
result = false;
tbOops.setText(INCOMPLETE_SETTINGS_MSG);
@@ -457,7 +634,7 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
* @return True or false.
*/
boolean databaseSettingsAreValid() {
- if (portNumberIsValid(tbPortNumber.getText())) {
+ if (portNumberIsValid(tbDbPort.getText())) {
return true;
} else {
tbOops.setText(INVALID_DB_PORT_MSG);
@@ -471,7 +648,7 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
* @return True or false.
*/
boolean messageServiceSettingsAreValid() {
- if (!portNumberIsValid(msgPortTextField.getText())) {
+ if (!portNumberIsValid(tbMsgPort.getText())) {
tbOops.setText(INVALID_MESSAGE_SERVICE_PORT_MSG);
return false;
}
@@ -485,7 +662,7 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
* @return True or false.
*/
boolean indexingServerSettingsAreValid() {
- if (!portNumberIsValid(tbIndexingServerPort.getText())) {
+ if (!portNumberIsValid(tbSolrPort.getText())) {
tbOops.setText(INVALID_INDEXING_SERVER_PORT_MSG);
return false;
}
@@ -514,25 +691,31 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
}
// Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton bnTestDatabase;
+ private javax.swing.JButton bnTestMessageService;
+ private javax.swing.JButton bnTestSolr;
private javax.swing.JCheckBox cbEnableMultiUser;
private javax.swing.JLabel lbDatabaseSettings;
- private javax.swing.JLabel lbMessagingSettings;
+ private javax.swing.JLabel lbMessageServiceSettings;
private javax.swing.JLabel lbSolrSettings;
- private javax.swing.JTextField msgHostTextField;
- private javax.swing.JPasswordField msgPasswordField;
- private javax.swing.JTextField msgPortTextField;
- private javax.swing.JTextField msgUserNameTextField;
+ private javax.swing.JLabel lbTestDatabase;
+ private javax.swing.JLabel lbTestMessageService;
+ private javax.swing.JLabel lbTestSolr;
private javax.swing.JPanel pnDatabaseSettings;
private javax.swing.JPanel pnMessagingSettings;
private javax.swing.JPanel pnOverallPanel;
private javax.swing.JPanel pnSolrSettings;
- private javax.swing.JTextField tbHostnameOrIp;
- private javax.swing.JTextField tbIndexingServerHost;
- private javax.swing.JTextField tbIndexingServerPort;
+ private javax.swing.JTextField tbDbHostname;
+ private javax.swing.JPasswordField tbDbPassword;
+ private javax.swing.JTextField tbDbPort;
+ private javax.swing.JTextField tbDbUsername;
+ private javax.swing.JTextField tbMsgHost;
+ private javax.swing.JPasswordField tbMsgPassword;
+ private javax.swing.JTextField tbMsgPort;
+ private javax.swing.JTextField tbMsgUsername;
private javax.swing.JTextField tbOops;
- private javax.swing.JPasswordField tbPassword;
- private javax.swing.JTextField tbPortNumber;
- private javax.swing.JTextField tbUsername;
+ private javax.swing.JTextField tbSolrHostname;
+ private javax.swing.JTextField tbSolrPort;
// End of variables declaration//GEN-END:variables
/**
@@ -543,17 +726,28 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
@Override
public void changedUpdate(DocumentEvent e) {
+ Object statusIcon = e.getDocument().getProperty("statusIcon");
+ if (statusIcon != null) {
+ ((javax.swing.JLabel) statusIcon).setIcon(null);
+ }
controller.changed();
}
@Override
public void insertUpdate(DocumentEvent e) {
+ Object statusIcon = e.getDocument().getProperty("statusIcon");
+ if (statusIcon != null) {
+ ((javax.swing.JLabel) statusIcon).setIcon(null);
+ }
controller.changed();
}
@Override
-
public void removeUpdate(DocumentEvent e) {
+ Object statusIcon = e.getDocument().getProperty("statusIcon");
+ if (statusIcon != null) {
+ ((javax.swing.JLabel) statusIcon).setIcon(null);
+ }
controller.changed();
}
}
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java
index b2e3a81350..80b3f9bb58 100644
--- a/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java
+++ b/Core/src/org/sleuthkit/autopsy/corecomponents/MultiUserSettingsPanelController.java
@@ -87,7 +87,7 @@ public final class MultiUserSettingsPanelController extends OptionsPanelControll
@Override
public void removePropertyChangeListener(PropertyChangeListener l) {
/**
- * Note the NetBeans Framework does not appear to call this at all We
+ * Note the NetBeans Framework does not appear to call this at all. We
* are using NetBeans 7.3.1 Build 201306052037. Perhaps in a future
* version of the Framework this will be resolved, but for now, simply
* don't unregister anything and add one time only in the
diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/SolrServiceConnectionTester.java b/Core/src/org/sleuthkit/autopsy/coreutils/SolrServiceConnectionTester.java
new file mode 100755
index 0000000000..6e360e1c68
--- /dev/null
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/SolrServiceConnectionTester.java
@@ -0,0 +1,64 @@
+/*
+ * Autopsy Forensic Browser
+ *
+ * Copyright 2015 Basis Technology Corp.
+ * Contact: carrier sleuthkit org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.sleuthkit.autopsy.coreutils;
+
+import java.io.IOException;
+import java.util.logging.Level;
+import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.request.CoreAdminRequest;
+import org.apache.solr.client.solrj.impl.HttpSolrServer;
+import org.apache.solr.client.solrj.response.CoreAdminResponse;
+
+/**
+ * Checks if we can communicate with Solr.
+ */
+public class SolrServiceConnectionTester {
+
+ /**
+ * Checks if we can communicate with Solr using the passed-in host and port.
+ * Closes the connection upon exit.
+ *
+ * @param host the remote hostname or IP address of the Solr server
+ * @param port the remote port for Solr
+ *
+ * @return true if communication with Solr is functional, false otherwise
+ */
+ public static boolean canConnect(String host, String port) {
+ try {
+ // if the port value is invalid, return false
+ Integer.parseInt(port);
+ } catch (NumberFormatException ex) {
+ Logger.getLogger(SolrServiceConnectionTester.class.getName()).log(Level.INFO, "Solr port is not valid."); //NON-NLS
+ return false;
+ }
+ HttpSolrServer solrServer = null;
+ try {
+ solrServer = new HttpSolrServer("http://" + host + ":" + port + "/solr"); //NON-NLS
+ CoreAdminResponse status = CoreAdminRequest.getStatus(null, solrServer);
+ return true; // if we get here, it's at least up and responding
+ } catch (SolrServerException | IOException ignore) {
+ Logger.getLogger(SolrServiceConnectionTester.class.getName()).log(Level.INFO, "Could not communicate with Solr."); //NON-NLS
+ } finally {
+ if (solrServer != null) {
+ solrServer.shutdown();
+ }
+ }
+ return false;
+ }
+}
diff --git a/Core/src/org/sleuthkit/autopsy/events/MessageServiceConnectionInfo.java b/Core/src/org/sleuthkit/autopsy/events/MessageServiceConnectionInfo.java
index 61457f9acd..acb20776bc 100644
--- a/Core/src/org/sleuthkit/autopsy/events/MessageServiceConnectionInfo.java
+++ b/Core/src/org/sleuthkit/autopsy/events/MessageServiceConnectionInfo.java
@@ -24,7 +24,6 @@ import javax.annotation.concurrent.Immutable;
import javax.jms.Connection;
import javax.jms.JMSException;
import org.apache.activemq.ActiveMQConnectionFactory;
-import org.sleuthkit.autopsy.core.UserPreferences;
/**
* Connection info for a Java Message Service (JMS) provider. Thread-safe.
@@ -112,7 +111,7 @@ public final class MessageServiceConnectionInfo {
public boolean canConnect() {
try {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(getUserName(), getPassword(), getURI());
- Connection connection = connectionFactory.createConnection();
+ Connection connection = connectionFactory.createConnection(getUserName(), getPassword());
connection.start();
connection.close();
return true;
diff --git a/Core/src/org/sleuthkit/autopsy/images/bad.png b/Core/src/org/sleuthkit/autopsy/images/bad.png
new file mode 100755
index 0000000000..e8f8f55fc1
Binary files /dev/null and b/Core/src/org/sleuthkit/autopsy/images/bad.png differ
diff --git a/Core/src/org/sleuthkit/autopsy/images/good.png b/Core/src/org/sleuthkit/autopsy/images/good.png
new file mode 100755
index 0000000000..210b1a6c3c
Binary files /dev/null and b/Core/src/org/sleuthkit/autopsy/images/good.png differ
diff --git a/CoreLibs/ivy.xml b/CoreLibs/ivy.xml
index ed12ebc6b1..4386459231 100644
--- a/CoreLibs/ivy.xml
+++ b/CoreLibs/ivy.xml
@@ -65,5 +65,9 @@
+
+
+
+