Autopsy  4.6.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
MultiUserSettingsPanel.java
Go to the documentation of this file.
1 /*
2  * Autopsy Forensic Browser
3  *
4  * Copyright 2013-2016 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.autopsy.corecomponents;
20 
21 import java.awt.Color;
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import javax.swing.JTextField;
25 import javax.swing.event.DocumentEvent;
26 import javax.swing.event.DocumentListener;
27 import org.openide.util.NbBundle;
28 import org.sleuthkit.datamodel.CaseDbConnectionInfo;
29 import org.sleuthkit.datamodel.TskData.DbType;
33 import java.awt.Cursor;
34 import java.util.logging.Level;
35 import javax.swing.ImageIcon;
36 import org.openide.util.ImageUtilities;
37 import org.openide.util.Lookup;
43 import org.sleuthkit.datamodel.SleuthkitCase;
44 import org.sleuthkit.datamodel.TskCoreException;
45 
46 public final class MultiUserSettingsPanel extends javax.swing.JPanel {
47 
48  private static final String HOST_NAME_OR_IP_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbHostname.toolTipText");
49  private static final String PORT_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPort.toolTipText");
50  private static final String USER_NAME_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbUsername.toolTipText");
51  private static final String PASSWORD_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPassword.toolTipText");
52  private static final String USER_NAME_PROMPT_OPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgUsername.toolTipText");
53  private static final String PASSWORD_PROMPT_OPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgPassword.toolTipText");
54  private static final String INCOMPLETE_SETTINGS_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.incomplete");
55  private static final String INVALID_DB_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidDatabasePort");
56  private static final String INVALID_MESSAGE_SERVICE_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidMessageServicePort");
57  private static final String INVALID_INDEXING_SERVER_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort");
58  private static final long serialVersionUID = 1L;
60  private final Collection<JTextField> textBoxes = new ArrayList<>();
61  private final TextBoxChangedListener textBoxChangedListener;
62  private static final Logger logger = Logger.getLogger(MultiUserSettingsPanel.class.getName());
63  private final ImageIcon goodIcon;
64  private final ImageIcon badIcon;
65  private static final boolean isWindowsOS = PlatformUtil.isWindowsOS();
66 
74  controller = theController;
75  setSize(555, 600);
76 
80  Collection<TextPrompt> textPrompts = new ArrayList<>();
81  textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbDbHostname));
82  textPrompts.add(new TextPrompt(PORT_PROMPT, tbDbPort));
83  textPrompts.add(new TextPrompt(USER_NAME_PROMPT, tbDbUsername));
84  textPrompts.add(new TextPrompt(PASSWORD_PROMPT, tbDbPassword));
85  textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbMsgHostname));
86  textPrompts.add(new TextPrompt(PORT_PROMPT, tbMsgPort));
87  textPrompts.add(new TextPrompt(USER_NAME_PROMPT_OPT, tbMsgUsername));
88  textPrompts.add(new TextPrompt(PASSWORD_PROMPT_OPT, tbMsgPassword));
89  textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbSolrHostname));
90  textPrompts.add(new TextPrompt(PORT_PROMPT, tbSolrPort));
91  configureTextPrompts(textPrompts);
92 
93  /*
94  * Set each textbox with a "statusIcon" property enabling the
95  * DocumentListeners to know which icon to erase when changes are made
96  */
97  tbDbHostname.getDocument().putProperty("statusIcon", lbTestDatabase);
98  tbDbPort.getDocument().putProperty("statusIcon", lbTestDatabase);
99  tbDbUsername.getDocument().putProperty("statusIcon", lbTestDatabase);
100  tbDbPassword.getDocument().putProperty("statusIcon", lbTestDatabase);
101 
102  tbSolrHostname.getDocument().putProperty("statusIcon", lbTestSolr);
103  tbSolrPort.getDocument().putProperty("statusIcon", lbTestSolr);
104 
105  tbMsgHostname.getDocument().putProperty("statusIcon", lbTestMessageService);
106  tbMsgPort.getDocument().putProperty("statusIcon", lbTestMessageService);
107  tbMsgUsername.getDocument().putProperty("statusIcon", lbTestMessageService);
108  tbMsgPassword.getDocument().putProperty("statusIcon", lbTestMessageService);
109 
111  textBoxChangedListener = new TextBoxChangedListener();
112  textBoxes.add(tbDbHostname);
113  textBoxes.add(tbDbPort);
114  textBoxes.add(tbDbUsername);
115  textBoxes.add(tbDbPassword);
116  textBoxes.add(tbMsgHostname);
117  textBoxes.add(tbMsgPort);
118  textBoxes.add(tbMsgUsername);
119  textBoxes.add(tbMsgPassword);
120  textBoxes.add(tbSolrHostname);
121  textBoxes.add(tbSolrPort);
122 
123  addDocumentListeners(textBoxes, textBoxChangedListener);
124  goodIcon = new ImageIcon(ImageUtilities.loadImage("org/sleuthkit/autopsy/images/good.png", false));
125  badIcon = new ImageIcon(ImageUtilities.loadImage("org/sleuthkit/autopsy/images/bad.png", false));
126  enableMultiUserComponents(textBoxes, cbEnableMultiUser.isSelected());
127  }
128 
135  private static void configureTextPrompts(Collection<TextPrompt> textPrompts) {
136  float alpha = 0.9f; // Mostly opaque
137  for (TextPrompt textPrompt : textPrompts) {
138  textPrompt.setForeground(Color.LIGHT_GRAY);
139  textPrompt.changeAlpha(alpha);
140  }
141  }
142 
149  private static void addDocumentListeners(Collection<JTextField> textFields, TextBoxChangedListener listener) {
150  for (JTextField textField : textFields) {
151  textField.getDocument().addDocumentListener(listener);
152  }
153  }
154 
160  @SuppressWarnings("unchecked")
161  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
162  private void initComponents() {
163 
164  jScrollPane = new javax.swing.JScrollPane();
165  pnOverallPanel = new javax.swing.JPanel();
166  pnDatabaseSettings = new javax.swing.JPanel();
167  tbDbHostname = new javax.swing.JTextField();
168  tbDbPort = new javax.swing.JTextField();
169  tbDbUsername = new javax.swing.JTextField();
170  tbDbPassword = new javax.swing.JPasswordField();
171  lbDatabaseSettings = new javax.swing.JLabel();
172  bnTestDatabase = new javax.swing.JButton();
173  lbTestDatabase = new javax.swing.JLabel();
174  lbTestDbWarning = new javax.swing.JLabel();
175  pnSolrSettings = new javax.swing.JPanel();
176  lbSolrSettings = new javax.swing.JLabel();
177  tbSolrHostname = new javax.swing.JTextField();
178  tbSolrPort = new javax.swing.JTextField();
179  bnTestSolr = new javax.swing.JButton();
180  lbTestSolr = new javax.swing.JLabel();
181  lbTestSolrWarning = new javax.swing.JLabel();
182  pnMessagingSettings = new javax.swing.JPanel();
183  lbMessageServiceSettings = new javax.swing.JLabel();
184  tbMsgHostname = new javax.swing.JTextField();
185  tbMsgUsername = new javax.swing.JTextField();
186  tbMsgPort = new javax.swing.JTextField();
187  tbMsgPassword = new javax.swing.JPasswordField();
188  bnTestMessageService = new javax.swing.JButton();
189  lbTestMessageService = new javax.swing.JLabel();
190  lbTestMessageWarning = new javax.swing.JLabel();
191  cbEnableMultiUser = new javax.swing.JCheckBox();
192  tbOops = new javax.swing.JTextField();
193 
194  pnDatabaseSettings.setBorder(javax.swing.BorderFactory.createEtchedBorder());
195 
196  tbDbHostname.setFont(tbDbHostname.getFont().deriveFont(tbDbHostname.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
197  tbDbHostname.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbHostname.text")); // NOI18N
198  tbDbHostname.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbHostname.toolTipText")); // NOI18N
199 
200  tbDbPort.setFont(tbDbPort.getFont().deriveFont(tbDbPort.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
201  tbDbPort.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPort.text")); // NOI18N
202  tbDbPort.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPort.toolTipText")); // NOI18N
203 
204  tbDbUsername.setFont(tbDbUsername.getFont().deriveFont(tbDbUsername.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
205  tbDbUsername.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbUsername.text")); // NOI18N
206  tbDbUsername.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbUsername.toolTipText")); // NOI18N
207 
208  tbDbPassword.setFont(tbDbPassword.getFont().deriveFont(tbDbPassword.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
209  tbDbPassword.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPassword.text")); // NOI18N
210  tbDbPassword.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPassword.toolTipText")); // NOI18N
211 
212  lbDatabaseSettings.setFont(lbDatabaseSettings.getFont().deriveFont(lbDatabaseSettings.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
213  org.openide.awt.Mnemonics.setLocalizedText(lbDatabaseSettings, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbDatabaseSettings.text")); // NOI18N
214  lbDatabaseSettings.setVerticalAlignment(javax.swing.SwingConstants.TOP);
215 
216  bnTestDatabase.setFont(bnTestDatabase.getFont().deriveFont(bnTestDatabase.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
217  org.openide.awt.Mnemonics.setLocalizedText(bnTestDatabase, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.bnTestDatabase.text")); // NOI18N
218  bnTestDatabase.addActionListener(new java.awt.event.ActionListener() {
219  public void actionPerformed(java.awt.event.ActionEvent evt) {
221  }
222  });
223 
224  org.openide.awt.Mnemonics.setLocalizedText(lbTestDatabase, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbTestDatabase.text")); // NOI18N
225  lbTestDatabase.setAutoscrolls(true);
226 
227  lbTestDbWarning.setForeground(new java.awt.Color(255, 0, 0));
228  org.openide.awt.Mnemonics.setLocalizedText(lbTestDbWarning, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbTestDbWarning.text")); // NOI18N
229 
230  javax.swing.GroupLayout pnDatabaseSettingsLayout = new javax.swing.GroupLayout(pnDatabaseSettings);
231  pnDatabaseSettings.setLayout(pnDatabaseSettingsLayout);
232  pnDatabaseSettingsLayout.setHorizontalGroup(
233  pnDatabaseSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
234  .addGroup(pnDatabaseSettingsLayout.createSequentialGroup()
235  .addContainerGap()
236  .addGroup(pnDatabaseSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
237  .addComponent(tbDbHostname)
238  .addGroup(pnDatabaseSettingsLayout.createSequentialGroup()
239  .addComponent(lbDatabaseSettings)
240  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
241  .addComponent(bnTestDatabase)
242  .addGap(18, 18, 18)
243  .addComponent(lbTestDatabase, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE))
244  .addComponent(tbDbPort)
245  .addComponent(tbDbUsername)
246  .addComponent(tbDbPassword)
247  .addGroup(pnDatabaseSettingsLayout.createSequentialGroup()
248  .addComponent(lbTestDbWarning)
249  .addGap(0, 0, Short.MAX_VALUE)))
250  .addContainerGap())
251  );
252  pnDatabaseSettingsLayout.setVerticalGroup(
253  pnDatabaseSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
254  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnDatabaseSettingsLayout.createSequentialGroup()
255  .addContainerGap()
256  .addGroup(pnDatabaseSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
257  .addComponent(bnTestDatabase)
258  .addComponent(lbTestDatabase, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
259  .addComponent(lbDatabaseSettings))
260  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
261  .addComponent(tbDbHostname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
262  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
263  .addComponent(tbDbPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
264  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
265  .addComponent(tbDbUsername, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
266  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
267  .addComponent(tbDbPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
268  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
269  .addComponent(lbTestDbWarning, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
270  .addContainerGap())
271  );
272 
273  pnSolrSettings.setBorder(javax.swing.BorderFactory.createEtchedBorder());
274 
275  lbSolrSettings.setFont(lbSolrSettings.getFont().deriveFont(lbSolrSettings.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
276  org.openide.awt.Mnemonics.setLocalizedText(lbSolrSettings, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbSolrSettings.text")); // NOI18N
277 
278  tbSolrHostname.setFont(tbSolrHostname.getFont().deriveFont(tbSolrHostname.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
279  tbSolrHostname.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbSolrHostname.toolTipText")); // NOI18N
280 
281  tbSolrPort.setFont(tbSolrPort.getFont().deriveFont(tbSolrPort.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
282  tbSolrPort.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbSolrPort.toolTipText")); // NOI18N
283 
284  bnTestSolr.setFont(bnTestSolr.getFont().deriveFont(bnTestSolr.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
285  org.openide.awt.Mnemonics.setLocalizedText(bnTestSolr, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.bnTestSolr.text")); // NOI18N
286  bnTestSolr.addActionListener(new java.awt.event.ActionListener() {
287  public void actionPerformed(java.awt.event.ActionEvent evt) {
289  }
290  });
291 
292  org.openide.awt.Mnemonics.setLocalizedText(lbTestSolr, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbTestSolr.text")); // NOI18N
293 
294  lbTestSolrWarning.setForeground(new java.awt.Color(255, 0, 0));
295  org.openide.awt.Mnemonics.setLocalizedText(lbTestSolrWarning, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbTestSolrWarning.text")); // NOI18N
296 
297  javax.swing.GroupLayout pnSolrSettingsLayout = new javax.swing.GroupLayout(pnSolrSettings);
298  pnSolrSettings.setLayout(pnSolrSettingsLayout);
299  pnSolrSettingsLayout.setHorizontalGroup(
300  pnSolrSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
301  .addGroup(pnSolrSettingsLayout.createSequentialGroup()
302  .addContainerGap()
303  .addGroup(pnSolrSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
304  .addComponent(tbSolrHostname)
305  .addGroup(pnSolrSettingsLayout.createSequentialGroup()
306  .addComponent(lbSolrSettings)
307  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
308  .addComponent(bnTestSolr)
309  .addGap(18, 18, 18)
310  .addComponent(lbTestSolr, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE))
311  .addComponent(tbSolrPort)
312  .addGroup(pnSolrSettingsLayout.createSequentialGroup()
313  .addComponent(lbTestSolrWarning)
314  .addGap(0, 0, Short.MAX_VALUE)))
315  .addContainerGap())
316  );
317  pnSolrSettingsLayout.setVerticalGroup(
318  pnSolrSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
319  .addGroup(pnSolrSettingsLayout.createSequentialGroup()
320  .addContainerGap()
321  .addGroup(pnSolrSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
322  .addGroup(pnSolrSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
323  .addComponent(bnTestSolr, javax.swing.GroupLayout.Alignment.TRAILING)
324  .addComponent(lbSolrSettings))
325  .addComponent(lbTestSolr, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
326  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
327  .addComponent(tbSolrHostname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
328  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
329  .addComponent(tbSolrPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
330  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
331  .addComponent(lbTestSolrWarning, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
332  .addContainerGap())
333  );
334 
335  pnMessagingSettings.setBorder(javax.swing.BorderFactory.createEtchedBorder());
336 
337  lbMessageServiceSettings.setFont(lbMessageServiceSettings.getFont().deriveFont(lbMessageServiceSettings.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
338  org.openide.awt.Mnemonics.setLocalizedText(lbMessageServiceSettings, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbMessageServiceSettings.text")); // NOI18N
339 
340  tbMsgHostname.setFont(tbMsgHostname.getFont().deriveFont(tbMsgHostname.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
341  tbMsgHostname.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgHostname.text")); // NOI18N
342  tbMsgHostname.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgHostname.toolTipText")); // NOI18N
343 
344  tbMsgUsername.setFont(tbMsgUsername.getFont().deriveFont(tbMsgUsername.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
345  tbMsgUsername.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgUsername.text")); // NOI18N
346  tbMsgUsername.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgUsername.toolTipText")); // NOI18N
347 
348  tbMsgPort.setFont(tbMsgPort.getFont().deriveFont(tbMsgPort.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
349  tbMsgPort.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgPort.text")); // NOI18N
350  tbMsgPort.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgPort.toolTipText")); // NOI18N
351 
352  tbMsgPassword.setFont(tbMsgPassword.getFont().deriveFont(tbMsgPassword.getFont().getStyle() & ~java.awt.Font.BOLD, 12));
353  tbMsgPassword.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgPassword.text")); // NOI18N
354  tbMsgPassword.setToolTipText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgPassword.toolTipText")); // NOI18N
355 
356  bnTestMessageService.setFont(bnTestMessageService.getFont().deriveFont(bnTestMessageService.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
357  org.openide.awt.Mnemonics.setLocalizedText(bnTestMessageService, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.bnTestMessageService.text")); // NOI18N
358  bnTestMessageService.addActionListener(new java.awt.event.ActionListener() {
359  public void actionPerformed(java.awt.event.ActionEvent evt) {
361  }
362  });
363 
364  org.openide.awt.Mnemonics.setLocalizedText(lbTestMessageService, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbTestMessageService.text")); // NOI18N
365 
366  lbTestMessageWarning.setForeground(new java.awt.Color(255, 0, 0));
367  org.openide.awt.Mnemonics.setLocalizedText(lbTestMessageWarning, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.lbTestMessageWarning.text")); // NOI18N
368 
369  javax.swing.GroupLayout pnMessagingSettingsLayout = new javax.swing.GroupLayout(pnMessagingSettings);
370  pnMessagingSettings.setLayout(pnMessagingSettingsLayout);
371  pnMessagingSettingsLayout.setHorizontalGroup(
372  pnMessagingSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
373  .addGroup(pnMessagingSettingsLayout.createSequentialGroup()
374  .addContainerGap()
375  .addGroup(pnMessagingSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
376  .addComponent(tbMsgHostname)
377  .addGroup(pnMessagingSettingsLayout.createSequentialGroup()
378  .addComponent(lbMessageServiceSettings)
379  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 229, Short.MAX_VALUE)
380  .addComponent(bnTestMessageService)
381  .addGap(18, 18, 18)
382  .addComponent(lbTestMessageService, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE))
383  .addComponent(tbMsgPort)
384  .addComponent(tbMsgUsername)
385  .addComponent(tbMsgPassword)
386  .addGroup(pnMessagingSettingsLayout.createSequentialGroup()
387  .addComponent(lbTestMessageWarning)
388  .addGap(0, 0, Short.MAX_VALUE)))
389  .addContainerGap())
390  );
391  pnMessagingSettingsLayout.setVerticalGroup(
392  pnMessagingSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
393  .addGroup(pnMessagingSettingsLayout.createSequentialGroup()
394  .addContainerGap()
395  .addGroup(pnMessagingSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
396  .addGroup(pnMessagingSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
397  .addComponent(bnTestMessageService, javax.swing.GroupLayout.Alignment.TRAILING)
398  .addComponent(lbMessageServiceSettings))
399  .addComponent(lbTestMessageService, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
400  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
401  .addComponent(tbMsgHostname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
402  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
403  .addComponent(tbMsgPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
404  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
405  .addComponent(tbMsgUsername, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
406  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
407  .addComponent(tbMsgPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
408  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
409  .addComponent(lbTestMessageWarning, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
410  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
411  );
412 
413  cbEnableMultiUser.setFont(cbEnableMultiUser.getFont().deriveFont(cbEnableMultiUser.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
414  org.openide.awt.Mnemonics.setLocalizedText(cbEnableMultiUser, org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.cbEnableMultiUser.text")); // NOI18N
415  cbEnableMultiUser.addItemListener(new java.awt.event.ItemListener() {
416  public void itemStateChanged(java.awt.event.ItemEvent evt) {
418  }
419  });
420 
421  tbOops.setEditable(false);
422  tbOops.setFont(tbOops.getFont().deriveFont(tbOops.getFont().getStyle() | java.awt.Font.BOLD, 12));
423  tbOops.setForeground(new java.awt.Color(255, 0, 0));
424  tbOops.setText(org.openide.util.NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbOops.text")); // NOI18N
425  tbOops.setBorder(null);
426 
427  javax.swing.GroupLayout pnOverallPanelLayout = new javax.swing.GroupLayout(pnOverallPanel);
428  pnOverallPanel.setLayout(pnOverallPanelLayout);
429  pnOverallPanelLayout.setHorizontalGroup(
430  pnOverallPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
431  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnOverallPanelLayout.createSequentialGroup()
432  .addContainerGap()
433  .addGroup(pnOverallPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
434  .addGroup(pnOverallPanelLayout.createSequentialGroup()
435  .addComponent(cbEnableMultiUser)
436  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
437  .addComponent(tbOops))
438  .addComponent(pnSolrSettings, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
439  .addComponent(pnDatabaseSettings, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
440  .addComponent(pnMessagingSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
441  .addContainerGap())
442  );
443  pnOverallPanelLayout.setVerticalGroup(
444  pnOverallPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
445  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnOverallPanelLayout.createSequentialGroup()
446  .addGroup(pnOverallPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
447  .addComponent(tbOops, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
448  .addComponent(cbEnableMultiUser))
449  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
450  .addComponent(pnDatabaseSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
451  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
452  .addComponent(pnSolrSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
453  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
454  .addComponent(pnMessagingSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
455  .addContainerGap(39, Short.MAX_VALUE))
456  );
457 
458  jScrollPane.setViewportView(pnOverallPanel);
459 
460  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
461  this.setLayout(layout);
462  layout.setHorizontalGroup(
463  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
464  .addComponent(jScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 555, Short.MAX_VALUE)
465  );
466  layout.setVerticalGroup(
467  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
468  .addGroup(layout.createSequentialGroup()
469  .addContainerGap()
470  .addComponent(jScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 537, Short.MAX_VALUE)
471  .addContainerGap())
472  );
473  }// </editor-fold>//GEN-END:initComponents
474 
481  private static void enableMultiUserComponents(Collection<JTextField> textFields, boolean enabled) {
482  for (JTextField textField : textFields) {
483  textField.setEnabled(enabled);
484  }
485  }
486 
487  private void cbEnableMultiUserItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cbEnableMultiUserItemStateChanged
488  if (!cbEnableMultiUser.isSelected()) {
489  tbOops.setText("");
490  bnTestDatabase.setEnabled(false);
491  lbTestDatabase.setIcon(null);
492  bnTestSolr.setEnabled(false);
493  lbTestSolr.setIcon(null);
494  bnTestMessageService.setEnabled(false);
495  lbTestMessageService.setIcon(null);
496  lbTestDbWarning.setText("");
497  lbTestSolrWarning.setText("");
498  lbTestMessageWarning.setText("");
499  }
500  enableMultiUserComponents(textBoxes, cbEnableMultiUser.isSelected());
501  controller.changed();
502  }//GEN-LAST:event_cbEnableMultiUserItemStateChanged
503 
504  private void bnTestDatabaseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnTestDatabaseActionPerformed
505  lbTestDatabase.setIcon(null);
506  lbTestDbWarning.setText("");
507  setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
508  try {
509  CaseDbConnectionInfo info = new CaseDbConnectionInfo(
510  this.tbDbHostname.getText().trim(),
511  this.tbDbPort.getText().trim(),
512  this.tbDbUsername.getText().trim(),
513  new String(this.tbDbPassword.getPassword()),
514  DbType.POSTGRESQL);
515 
516  SleuthkitCase.tryConnect(info);
517  lbTestDatabase.setIcon(goodIcon);
518  lbTestDbWarning.setText("");
519  } catch (TskCoreException ex) {
520  lbTestDatabase.setIcon(badIcon);
521  lbTestDbWarning.setText(ex.getMessage());
522  } finally {
523  setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
524  }
525  }//GEN-LAST:event_bnTestDatabaseActionPerformed
526 
527  private void bnTestMessageServiceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnTestMessageServiceActionPerformed
528  lbTestMessageService.setIcon(null);
529  lbTestMessageWarning.setText("");
530  setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
531 
532  int port;
533  try {
534  port = Integer.parseInt(this.tbMsgPort.getText().trim());
535  } catch (NumberFormatException ex) {
536  lbTestMessageService.setIcon(badIcon);
537  lbTestMessageWarning.setText(NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.InvalidPortNumber"));
538  return;
539  }
540 
542  this.tbMsgHostname.getText().trim(),
543  port,
544  this.tbMsgUsername.getText().trim(),
545  new String(this.tbMsgPassword.getPassword()));
546  try {
547  info.tryConnect();
548  lbTestMessageService.setIcon(goodIcon);
549  lbTestMessageWarning.setText("");
550  } catch (MessageServiceException ex) {
551  lbTestMessageService.setIcon(badIcon);
552  lbTestMessageWarning.setText(ex.getMessage());
553  } finally {
554  setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
555  }
556  }//GEN-LAST:event_bnTestMessageServiceActionPerformed
557 
558  private void bnTestSolrActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnTestSolrActionPerformed
559  lbTestSolr.setIcon(null);
560  lbTestSolrWarning.setText("");
561  setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
562 
563  KeywordSearchService kwsService = Lookup.getDefault().lookup(KeywordSearchService.class);
564  try {
565  if (kwsService != null) {
566  int port = Integer.parseInt(tbSolrPort.getText().trim());
567  kwsService.tryConnect(tbSolrHostname.getText().trim(), port);
568  lbTestSolr.setIcon(goodIcon);
569  lbTestSolrWarning.setText("");
570  } else {
571  lbTestSolr.setIcon(badIcon);
572  lbTestSolrWarning.setText(NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.KeywordSearchNull"));
573  }
574  } catch (NumberFormatException ex) {
575  lbTestSolr.setIcon(badIcon);
576  lbTestSolrWarning.setText(NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.InvalidPortNumber"));
577  } catch (KeywordSearchServiceException ex) {
578  lbTestSolr.setIcon(badIcon);
579  lbTestSolrWarning.setText(ex.getMessage());
580  } finally {
581  setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
582  }
583  }//GEN-LAST:event_bnTestSolrActionPerformed
584 
585  void load() {
586  lbTestDatabase.setIcon(null);
587  lbTestSolr.setIcon(null);
588  lbTestMessageService.setIcon(null);
589  lbTestDbWarning.setText("");
590  lbTestSolrWarning.setText("");
591  lbTestMessageWarning.setText("");
592 
593  try {
594  CaseDbConnectionInfo dbInfo = UserPreferences.getDatabaseConnectionInfo();
595  tbDbHostname.setText(dbInfo.getHost().trim());
596  tbDbPort.setText(dbInfo.getPort().trim());
597  tbDbUsername.setText(dbInfo.getUserName().trim());
598  tbDbPassword.setText(dbInfo.getPassword());
599  } catch (UserPreferencesException ex) {
600  logger.log(Level.SEVERE, "Error accessing case database connection info", ex); //NON-NLS
601  }
602 
603  try {
604  MessageServiceConnectionInfo msgServiceInfo = UserPreferences.getMessageServiceConnectionInfo();
605  tbMsgHostname.setText(msgServiceInfo.getHost().trim());
606  tbMsgPort.setText(Integer.toString(msgServiceInfo.getPort()));
607  tbMsgUsername.setText(msgServiceInfo.getUserName().trim());
608  tbMsgPassword.setText(msgServiceInfo.getPassword());
609  } catch (UserPreferencesException ex) {
610  logger.log(Level.SEVERE, "Error accessing case database connection info", ex); //NON-NLS
611  }
612 
613  String indexingServerHost = UserPreferences.getIndexingServerHost().trim();
614  if (!indexingServerHost.isEmpty()) {
615  tbSolrHostname.setText(indexingServerHost);
616  }
617  String indexingServerPort = UserPreferences.getIndexingServerPort().trim();
618  if (portNumberIsValid(indexingServerPort)) {
619  tbSolrPort.setText(indexingServerPort);
620  }
621 
622  lbTestDatabase.setIcon(null);
623  lbTestSolr.setIcon(null);
624  lbTestMessageService.setIcon(null);
625 
626  bnTestDatabase.setEnabled(false);
627  bnTestSolr.setEnabled(false);
628  bnTestMessageService.setEnabled(false);
629 
630  cbEnableMultiUser.setSelected(UserPreferences.getIsMultiUserModeEnabled());
631  this.valid(); // trigger validation to enable buttons based on current settings
632  }
633 
640  private boolean databaseFieldsArePopulated() {
641  return !tbDbHostname.getText().trim().isEmpty()
642  && !tbDbPort.getText().trim().isEmpty()
643  && !tbDbUsername.getText().trim().isEmpty()
644  && tbDbPassword.getPassword().length != 0;
645  }
646 
653  private boolean solrFieldsArePopulated() {
654  return !tbSolrHostname.getText().trim().isEmpty()
655  && !tbSolrPort.getText().trim().isEmpty();
656  }
657 
665 
666  if ((tbMsgHostname.getText().trim().isEmpty())
667  || (tbMsgPort.getText().trim().isEmpty())) {
668  return false;
669  }
670 
671  // user name and pw are optional, but make sure they are both set or both empty
672  boolean isUserSet = (tbMsgUsername.getText().trim().isEmpty() == false);
673  boolean isPwSet = (tbMsgPassword.getPassword().length != 0);
674  return (isUserSet == isPwSet);
675  }
676 
677  void store() {
678 
679  boolean multiUserCasesEnabled = cbEnableMultiUser.isSelected();
680  UserPreferences.setIsMultiUserModeEnabled(multiUserCasesEnabled);
681  if (multiUserCasesEnabled == false) {
682  return;
683  }
684 
685  /*
686  * Currently only supporting multi-user cases with PostgreSQL case
687  * databases.
688  */
689  DbType dbType = DbType.POSTGRESQL;
690  CaseDbConnectionInfo info = new CaseDbConnectionInfo(
691  tbDbHostname.getText().trim(),
692  tbDbPort.getText().trim(),
693  tbDbUsername.getText().trim(),
694  new String(tbDbPassword.getPassword()),
695  dbType);
696  try {
697  UserPreferences.setDatabaseConnectionInfo(info);
698  } catch (UserPreferencesException ex) {
699  logger.log(Level.SEVERE, "Error saving case database connection info", ex); //NON-NLS
700  }
701 
702  int msgServicePort = 0;
703  try {
704  msgServicePort = Integer.parseInt(this.tbMsgPort.getText().trim());
705  } catch (NumberFormatException ex) {
706  logger.log(Level.SEVERE, "Could not parse messaging service port setting", ex);
707  }
708 
709  MessageServiceConnectionInfo msgServiceInfo = new MessageServiceConnectionInfo(
710  tbMsgHostname.getText().trim(),
711  msgServicePort,
712  tbMsgUsername.getText().trim(),
713  new String(tbMsgPassword.getPassword()));
714 
715  try {
716  UserPreferences.setMessageServiceConnectionInfo(msgServiceInfo);
717  } catch (UserPreferencesException ex) {
718  logger.log(Level.SEVERE, "Error saving messaging service connection info", ex); //NON-NLS
719  }
720 
721  UserPreferences.setIndexingServerHost(tbSolrHostname.getText().trim());
722  UserPreferences.setIndexingServerPort(Integer.parseInt(tbSolrPort.getText().trim()));
723 
724  }
725 
731  boolean valid() {
732  tbOops.setText("");
733 
734  if (cbEnableMultiUser.isSelected()) {
735  return checkFieldsAndEnableButtons()
736  && databaseSettingsAreValid()
737  && indexingServerSettingsAreValid()
738  && messageServiceSettingsAreValid();
739  } else {
740  return true;
741  }
742  }
743 
750  boolean checkFieldsAndEnableButtons() {
751  boolean result = true;
752 
753  boolean dbPopulated = databaseFieldsArePopulated();
754  boolean solrPopulated = solrFieldsArePopulated();
755  boolean messageServicePopulated = messageServiceFieldsArePopulated();
756 
757  // PostgreSQL Database
758  bnTestDatabase.setEnabled(dbPopulated);
759 
760  // Solr Indexing
761  bnTestSolr.setEnabled(solrPopulated);
762 
763  // ActiveMQ Messaging
764  bnTestMessageService.setEnabled(messageServicePopulated);
765 
766  if (!dbPopulated || !solrPopulated || !messageServicePopulated) {
767  // We don't even have everything filled out
768  result = false;
769  tbOops.setText(INCOMPLETE_SETTINGS_MSG);
770  }
771  return result;
772  }
773 
779  boolean databaseSettingsAreValid() {
780  if (portNumberIsValid(tbDbPort.getText().trim())) {
781  return true;
782  } else {
783  tbOops.setText(INVALID_DB_PORT_MSG);
784  return false;
785  }
786  }
787 
793  boolean messageServiceSettingsAreValid() {
794  if (!portNumberIsValid(tbMsgPort.getText().trim())) {
795  tbOops.setText(INVALID_MESSAGE_SERVICE_PORT_MSG);
796  return false;
797  }
798 
799  return true;
800  }
801 
807  boolean indexingServerSettingsAreValid() {
808  if (!portNumberIsValid(tbSolrPort.getText().trim())) {
809  tbOops.setText(INVALID_INDEXING_SERVER_PORT_MSG);
810  return false;
811  }
812 
813  return true;
814  }
815 
824  private static boolean portNumberIsValid(String portNumber) {
825  try {
826  int value = Integer.parseInt(portNumber);
827  if (value < 0 || value > 65535) { // invalid port numbers
828  return false;
829  }
830  } catch (NumberFormatException detailsNotImportant) {
831  return false;
832  }
833  return true;
834  }
835 
836  // Variables declaration - do not modify//GEN-BEGIN:variables
837  private javax.swing.JButton bnTestDatabase;
838  private javax.swing.JButton bnTestMessageService;
839  private javax.swing.JButton bnTestSolr;
840  private javax.swing.JCheckBox cbEnableMultiUser;
841  private javax.swing.JScrollPane jScrollPane;
842  private javax.swing.JLabel lbDatabaseSettings;
843  private javax.swing.JLabel lbMessageServiceSettings;
844  private javax.swing.JLabel lbSolrSettings;
845  private javax.swing.JLabel lbTestDatabase;
846  private javax.swing.JLabel lbTestDbWarning;
847  private javax.swing.JLabel lbTestMessageService;
848  private javax.swing.JLabel lbTestMessageWarning;
849  private javax.swing.JLabel lbTestSolr;
850  private javax.swing.JLabel lbTestSolrWarning;
851  private javax.swing.JPanel pnDatabaseSettings;
852  private javax.swing.JPanel pnMessagingSettings;
853  private javax.swing.JPanel pnOverallPanel;
854  private javax.swing.JPanel pnSolrSettings;
855  private javax.swing.JTextField tbDbHostname;
856  private javax.swing.JPasswordField tbDbPassword;
857  private javax.swing.JTextField tbDbPort;
858  private javax.swing.JTextField tbDbUsername;
859  private javax.swing.JTextField tbMsgHostname;
860  private javax.swing.JPasswordField tbMsgPassword;
861  private javax.swing.JTextField tbMsgPort;
862  private javax.swing.JTextField tbMsgUsername;
863  private javax.swing.JTextField tbOops;
864  private javax.swing.JTextField tbSolrHostname;
865  private javax.swing.JTextField tbSolrPort;
866  // End of variables declaration//GEN-END:variables
867 
872  class TextBoxChangedListener implements DocumentListener {
873 
874  @Override
875  public void changedUpdate(DocumentEvent e) {
876  Object statusIcon = e.getDocument().getProperty("statusIcon");
877  if (statusIcon != null) {
878  ((javax.swing.JLabel) statusIcon).setIcon(null);
879  }
880  controller.changed();
881  }
882 
883  @Override
884  public void insertUpdate(DocumentEvent e) {
885  Object statusIcon = e.getDocument().getProperty("statusIcon");
886  if (statusIcon != null) {
887  ((javax.swing.JLabel) statusIcon).setIcon(null);
888  }
889  controller.changed();
890  }
891 
892  @Override
893  public void removeUpdate(DocumentEvent e) {
894  Object statusIcon = e.getDocument().getProperty("statusIcon");
895  if (statusIcon != null) {
896  ((javax.swing.JLabel) statusIcon).setIcon(null);
897  }
898  controller.changed();
899  }
900  }
901 }
static void configureTextPrompts(Collection< TextPrompt > textPrompts)
static CaseDbConnectionInfo getDatabaseConnectionInfo()
MultiUserSettingsPanel(MultiUserSettingsPanelController theController)
static void setIsMultiUserModeEnabled(boolean enabled)
synchronized static Logger getLogger(String name)
Definition: Logger.java:124
static void enableMultiUserComponents(Collection< JTextField > textFields, boolean enabled)
void bnTestMessageServiceActionPerformed(java.awt.event.ActionEvent evt)
static void addDocumentListeners(Collection< JTextField > textFields, TextBoxChangedListener listener)

Copyright © 2012-2016 Basis Technology. Generated on: Mon May 7 2018
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.