1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.uip;
21
22 import org.waarp.common.crypto.Blowfish;
23 import org.waarp.common.crypto.Des;
24 import org.waarp.common.exception.CryptoException;
25 import org.waarp.common.logging.SysErrLogger;
26
27 import javax.swing.AbstractAction;
28 import javax.swing.BorderFactory;
29 import javax.swing.GroupLayout;
30 import javax.swing.JButton;
31 import javax.swing.JDialog;
32 import javax.swing.JFileChooser;
33 import javax.swing.JFrame;
34 import javax.swing.JMenu;
35 import javax.swing.JMenuBar;
36 import javax.swing.JMenuItem;
37 import javax.swing.JPanel;
38 import javax.swing.JPasswordField;
39 import javax.swing.JSeparator;
40 import javax.swing.JTextField;
41 import javax.swing.JTextPane;
42 import javax.swing.LayoutStyle;
43 import javax.swing.SwingUtilities;
44 import javax.swing.WindowConstants;
45 import javax.swing.border.BevelBorder;
46 import javax.swing.filechooser.FileNameExtensionFilter;
47 import java.awt.Color;
48 import java.awt.Dimension;
49 import java.awt.event.ActionEvent;
50 import java.awt.event.FocusAdapter;
51 import java.awt.event.FocusEvent;
52 import java.awt.event.WindowAdapter;
53 import java.awt.event.WindowEvent;
54 import java.io.File;
55 import java.io.IOException;
56 import java.util.Locale;
57
58
59
60
61 public class WaarpUiPassword extends JFrame {
62
63
64
65
66 private static final long serialVersionUID = -4276191288898099362L;
67 protected WaarpUiPassword myself;
68 private JMenuItem helpMenuItem;
69 private JMenu jMenu5;
70 private AbstractAction saveAsKeyAction;
71 private AbstractAction saveKeyAction;
72 private AbstractAction newKeyAction;
73 private AbstractAction openKeyAction;
74 private AbstractAction loadPswdAction;
75 private AbstractAction exitAction;
76 private JPanel jPanel1;
77 private JTextField jTextFieldPasswordFile;
78 private JPasswordField jPasswordField;
79 private JTextField jPasswordFieldTxt;
80 private JTextField jTextFieldCryptedPassword;
81 private JTextField jTextFieldKeyFile;
82 private JMenuItem savePasswordMenuItem;
83 private AbstractAction helpAction;
84 private AbstractAction savePaswdAction;
85 private JMenuItem loadPasswordMenuItem;
86 private JMenu jMenuPassword;
87 private JMenuItem exitMenuItem;
88 private JSeparator jSeparator2;
89 private JMenuItem saveAsMenuItem;
90 private JMenuItem saveMenuItem;
91 private JMenuItem openFileMenuItem;
92 private JMenuItem newFileMenuItem;
93 private JMenu jMenu3;
94 private JMenuBar jMenuBar1;
95
96 private final JFileChooser chooserKeyFile;
97 private transient final FileNameExtensionFilter filterKey;
98 private final JFileChooser chooserPwdFile;
99 private transient final FileNameExtensionFilter filterPwdKey;
100
101 private AbstractAction closeHelpAction;
102 private JTextPane jTextPaneHelp;
103 private JButton jButtonHelp;
104 private JDialog jDialogHelp;
105 private transient WaarpPassword waarpPassword;
106 boolean passwordModified;
107 boolean extended;
108
109
110
111
112 public static void main(final String[] args) {
113 if (!WaarpPassword.loadOptions(args)) {
114
115 System.exit(2);
116 }
117 SwingUtilities.invokeLater(new Runnable() {
118 @Override
119 public void run() {
120 final WaarpUiPassword inst = new WaarpUiPassword();
121 inst.setLocationRelativeTo(null);
122 inst.setVisible(true);
123 }
124 });
125 }
126
127 protected WaarpUiPassword(final boolean extended_ignore) throws Exception {
128 extended = true;
129 chooserKeyFile = new JFileChooser();
130 filterKey = new FileNameExtensionFilter(
131 "DES or Blowfish Key (" + Des.EXTENSION + ", " + Blowfish.EXTENSION +
132 ')', Des.EXTENSION, Blowfish.EXTENSION);
133 chooserKeyFile.setFileFilter(filterKey);
134 chooserKeyFile.setFileSelectionMode(JFileChooser.FILES_ONLY);
135
136 chooserPwdFile = new JFileChooser();
137 filterPwdKey = new FileNameExtensionFilter(
138 "GoldenGate Password Files (" + WaarpPassword.GGPEXTENSION + ')',
139 WaarpPassword.GGPEXTENSION);
140 chooserPwdFile.setFileFilter(filterPwdKey);
141 chooserPwdFile.setFileSelectionMode(JFileChooser.FILES_ONLY);
142
143 waarpPassword = new WaarpPassword();
144
145 initGUI();
146 initFromGgPassword();
147 }
148
149 public WaarpUiPassword() {
150 myself = this;
151 chooserKeyFile = new JFileChooser();
152 filterKey = new FileNameExtensionFilter(
153 "DES or Blowfish Key (" + Des.EXTENSION + ", " + Blowfish.EXTENSION +
154 ')', Des.EXTENSION, Blowfish.EXTENSION);
155 chooserKeyFile.setFileFilter(filterKey);
156 chooserKeyFile.setFileSelectionMode(JFileChooser.FILES_ONLY);
157
158 chooserPwdFile = new JFileChooser();
159 filterPwdKey = new FileNameExtensionFilter(
160 "GoldenGate Password Files (" + WaarpPassword.GGPEXTENSION + ')',
161 WaarpPassword.GGPEXTENSION);
162 chooserPwdFile.setFileFilter(filterPwdKey);
163 chooserPwdFile.setFileSelectionMode(JFileChooser.FILES_ONLY);
164
165 try {
166 waarpPassword = new WaarpPassword();
167 } catch (final Exception e) {
168 SysErrLogger.FAKE_LOGGER.syserr(e);
169 System.exit(3);
170 }
171
172 initGUI();
173 initFromGgPassword();
174 }
175
176 private void initFromGgPassword() {
177 final File keyFile = waarpPassword.getKeyFile();
178 if (keyFile != null) {
179 jTextFieldKeyFile.setText(keyFile.getAbsolutePath());
180 enableMenuWithKey();
181 }
182 final File pFile = waarpPassword.getPasswordFile();
183 if (pFile != null) {
184 jTextFieldPasswordFile.setText(pFile.getAbsolutePath());
185 }
186 String clpwd = waarpPassword.getClearPassword();
187 if (clpwd != null) {
188 setUncryptedPassword(clpwd);
189 clpwd = waarpPassword.getCryptedPassword();
190 jTextFieldCryptedPassword.setText(clpwd);
191 }
192 }
193
194 public void exit(final ActionEvent evt) {
195 if (passwordModified) {
196 getSavePaswdAction().actionPerformed(evt);
197 }
198 if (extended) {
199 myself.dispose();
200 } else {
201 System.exit(1);
202 }
203 }
204
205 private void initGUI() {
206 try {
207 final GroupLayout thisLayout = new GroupLayout(getContentPane());
208 getContentPane().setLayout(thisLayout);
209 addWindowListener(new WindowAdapter() {
210 @Override
211 public void windowClosing(final WindowEvent evt) {
212 myself.exit(null);
213 }
214
215 @Override
216 public void windowClosed(final WindowEvent evt) {
217 myself.exit(null);
218 }
219 });
220 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
221 setTitle("Waarp Password GUI");
222 setLocale(new Locale("en", "GB"));
223 {
224 jTextFieldKeyFile = new JTextField();
225 jTextFieldKeyFile.setText("Key File");
226 jTextFieldKeyFile.setEditable(false);
227 jTextFieldKeyFile.setBorder(BorderFactory.createCompoundBorder(
228 BorderFactory.createMatteBorder(1, 1, 1, 1, new Color(0, 0, 0)),
229 BorderFactory.createCompoundBorder(null, null)));
230 }
231 {
232 jPanel1 = new JPanel();
233 final GroupLayout jPanel1Layout = new GroupLayout(jPanel1);
234 jPanel1.setLayout(jPanel1Layout);
235 jPanel1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
236 {
237 jTextFieldPasswordFile = new JTextField();
238 jTextFieldPasswordFile.setText("Password File");
239 jTextFieldPasswordFile.setEditable(false);
240 jTextFieldPasswordFile.setBorder(BorderFactory.createCompoundBorder(
241 BorderFactory.createMatteBorder(1, 1, 1, 1, new Color(0, 0, 0)),
242 BorderFactory.createCompoundBorder(null, null)));
243 }
244 {
245 if (WaarpPassword.clearPasswordView) {
246 jPasswordFieldTxt = new JTextField();
247 jPasswordFieldTxt.addFocusListener(new FocusAdapter() {
248 @Override
249 public void focusLost(final FocusEvent evt) {
250 final String paswd = jPasswordFieldTxt.getText();
251 if (!paswd.equals(waarpPassword.getClearPassword())) {
252 try {
253 waarpPassword.setClearPassword(paswd);
254 } catch (final Exception e) {
255 SysErrLogger.FAKE_LOGGER.syserr(e);
256 }
257 jTextFieldCryptedPassword.setText(
258 waarpPassword.getCryptedPassword());
259 passwordModified = true;
260 }
261 }
262 });
263 } else {
264 jPasswordField = new JPasswordField();
265 jPasswordField.addFocusListener(new FocusAdapter() {
266 @Override
267 public void focusLost(final FocusEvent evt) {
268 final String paswd = new String(jPasswordField.getPassword());
269 if (!paswd.equals(waarpPassword.getClearPassword())) {
270 try {
271 waarpPassword.setClearPassword(paswd);
272 } catch (final Exception e) {
273 SysErrLogger.FAKE_LOGGER.syserr(e);
274 }
275 jTextFieldCryptedPassword.setText(
276 waarpPassword.getCryptedPassword());
277 passwordModified = true;
278 }
279 }
280 });
281 }
282 }
283 {
284 jTextFieldCryptedPassword = new JTextField();
285 jTextFieldCryptedPassword.addFocusListener(new FocusAdapter() {
286 @Override
287 public void focusLost(final FocusEvent evt) {
288 final String paswd = jTextFieldCryptedPassword.getText();
289 if (!paswd.equals(waarpPassword.getCryptedPassword())) {
290 try {
291 waarpPassword.setCryptedPassword(paswd);
292 } catch (final Exception e1) {
293 SysErrLogger.FAKE_LOGGER.syserr(e1);
294 }
295 setUncryptedPassword(waarpPassword.getClearPassword());
296 jTextFieldCryptedPassword.setText(
297 waarpPassword.getCryptedPassword());
298 passwordModified = true;
299 }
300 }
301 });
302 }
303 if (WaarpPassword.clearPasswordView) {
304 jPanel1Layout.setHorizontalGroup(
305 jPanel1Layout.createSequentialGroup().addContainerGap().addGroup(
306 jPanel1Layout.createParallelGroup().addGroup(
307 jPanel1Layout.createSequentialGroup()
308 .addComponent(jTextFieldPasswordFile,
309 GroupLayout.PREFERRED_SIZE,
310 340,
311 GroupLayout.PREFERRED_SIZE)
312 .addGap(0, 0, Short.MAX_VALUE))
313 .addComponent(jPasswordFieldTxt,
314 GroupLayout.Alignment.LEADING, 0,
315 341, Short.MAX_VALUE)
316 .addComponent(jTextFieldCryptedPassword,
317 GroupLayout.Alignment.LEADING, 0,
318 338, Short.MAX_VALUE))
319 .addContainerGap());
320 jPanel1Layout.setVerticalGroup(
321 jPanel1Layout.createSequentialGroup().addContainerGap()
322 .addComponent(jTextFieldPasswordFile,
323 GroupLayout.PREFERRED_SIZE, 28,
324 GroupLayout.PREFERRED_SIZE).addGap(18)
325 .addComponent(jPasswordFieldTxt,
326 GroupLayout.PREFERRED_SIZE, 26,
327 GroupLayout.PREFERRED_SIZE)
328 .addPreferredGap(
329 LayoutStyle.ComponentPlacement.UNRELATED, 1,
330 Short.MAX_VALUE)
331 .addComponent(jTextFieldCryptedPassword,
332 GroupLayout.PREFERRED_SIZE, 28,
333 GroupLayout.PREFERRED_SIZE)
334 .addContainerGap());
335 } else {
336 jPanel1Layout.setHorizontalGroup(
337 jPanel1Layout.createSequentialGroup().addContainerGap().addGroup(
338 jPanel1Layout.createParallelGroup().addGroup(
339 jPanel1Layout.createSequentialGroup()
340 .addComponent(jTextFieldPasswordFile,
341 GroupLayout.PREFERRED_SIZE,
342 340,
343 GroupLayout.PREFERRED_SIZE)
344 .addGap(0, 0, Short.MAX_VALUE))
345 .addComponent(jPasswordField,
346 GroupLayout.Alignment.LEADING, 0,
347 341, Short.MAX_VALUE)
348 .addComponent(jTextFieldCryptedPassword,
349 GroupLayout.Alignment.LEADING, 0,
350 338, Short.MAX_VALUE))
351 .addContainerGap());
352 jPanel1Layout.setVerticalGroup(
353 jPanel1Layout.createSequentialGroup().addContainerGap()
354 .addComponent(jTextFieldPasswordFile,
355 GroupLayout.PREFERRED_SIZE, 28,
356 GroupLayout.PREFERRED_SIZE).addGap(18)
357 .addComponent(jPasswordField,
358 GroupLayout.PREFERRED_SIZE, 26,
359 GroupLayout.PREFERRED_SIZE)
360 .addPreferredGap(
361 LayoutStyle.ComponentPlacement.UNRELATED, 1,
362 Short.MAX_VALUE)
363 .addComponent(jTextFieldCryptedPassword,
364 GroupLayout.PREFERRED_SIZE, 28,
365 GroupLayout.PREFERRED_SIZE)
366 .addContainerGap());
367 }
368 }
369 thisLayout.setVerticalGroup(
370 thisLayout.createSequentialGroup().addContainerGap()
371 .addComponent(jTextFieldKeyFile, GroupLayout.PREFERRED_SIZE,
372 28, GroupLayout.PREFERRED_SIZE).addGap(21)
373 .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, 143,
374 GroupLayout.PREFERRED_SIZE)
375 .addContainerGap(31, Short.MAX_VALUE));
376 thisLayout.setHorizontalGroup(
377 thisLayout.createSequentialGroup().addContainerGap().addGroup(
378 thisLayout.createParallelGroup()
379 .addComponent(jPanel1, GroupLayout.Alignment.LEADING, 0,
380 366, Short.MAX_VALUE)
381 .addGroup(GroupLayout.Alignment.LEADING,
382 thisLayout.createSequentialGroup().addGap(7)
383 .addComponent(jTextFieldKeyFile, 0,
384 353, Short.MAX_VALUE)
385 .addGap(6))).addGap(6));
386 setSize(400, 300);
387 {
388 jMenuBar1 = new JMenuBar();
389 setJMenuBar(jMenuBar1);
390 {
391 jMenu3 = new JMenu();
392 jMenuBar1.add(jMenu3);
393 jMenu3.setText("File");
394 {
395 openFileMenuItem = new JMenuItem();
396 jMenu3.add(openFileMenuItem);
397 openFileMenuItem.setText("Open Key");
398 openFileMenuItem.setAction(getOpenKeyAction());
399 }
400 {
401 newFileMenuItem = new JMenuItem();
402 jMenu3.add(newFileMenuItem);
403 newFileMenuItem.setText("New Key");
404 newFileMenuItem.setAction(getNewKeyAction());
405 }
406 {
407 saveMenuItem = new JMenuItem();
408 jMenu3.add(saveMenuItem);
409 saveMenuItem.setText("Save Key");
410 saveMenuItem.setAction(getSaveKeyAction());
411 saveMenuItem.setEnabled(false);
412 }
413 {
414 saveAsMenuItem = new JMenuItem();
415 jMenu3.add(saveAsMenuItem);
416 saveAsMenuItem.setText("Save Key As ...");
417 saveAsMenuItem.setAction(getSaveAsKeyAction());
418 saveAsMenuItem.setEnabled(false);
419 }
420 {
421 jSeparator2 = new JSeparator();
422 jMenu3.add(jSeparator2);
423 }
424 {
425 exitMenuItem = new JMenuItem();
426 jMenu3.add(exitMenuItem);
427 exitMenuItem.setText("Exit");
428 exitMenuItem.setAction(getExitAction());
429 }
430 }
431 {
432 jMenuPassword = new JMenu();
433 jMenuBar1.add(jMenuPassword);
434 jMenuPassword.setText("Password");
435 jMenuPassword.setEnabled(false);
436 {
437 loadPasswordMenuItem = new JMenuItem();
438 jMenuPassword.add(loadPasswordMenuItem);
439 loadPasswordMenuItem.setText("Load");
440 loadPasswordMenuItem.setAction(getLoadPswdAction());
441 }
442 {
443 savePasswordMenuItem = new JMenuItem();
444 jMenuPassword.add(savePasswordMenuItem);
445 savePasswordMenuItem.setText("Save");
446 savePasswordMenuItem.setAction(getSavePaswdAction());
447 }
448 }
449 {
450 jMenu5 = new JMenu();
451 jMenuBar1.add(jMenu5);
452 jMenu5.setText("Help");
453 {
454 helpMenuItem = new JMenuItem();
455 jMenu5.add(helpMenuItem);
456 helpMenuItem.setText("Help");
457 helpMenuItem.setAction(getHelpAction());
458 }
459 }
460 }
461 } catch (final Exception e) {
462 SysErrLogger.FAKE_LOGGER.syserr(e);
463 }
464 }
465
466 private AbstractAction getExitAction() {
467 if (exitAction == null) {
468 exitAction = new AbstractAction("Exit", null) {
469
470
471
472 private static final long serialVersionUID = 7484447837851868127L;
473
474 @Override
475 public void actionPerformed(final ActionEvent evt) {
476 myself.exit(evt);
477 }
478 };
479 }
480 return exitAction;
481 }
482
483 private String getUncryptedPassword() {
484 if (WaarpPassword.clearPasswordView) {
485 return jPasswordFieldTxt.getText();
486 } else {
487 return new String(jPasswordField.getPassword());
488 }
489 }
490
491 private void setUncryptedPassword(final String passwd) {
492 if (WaarpPassword.clearPasswordView) {
493 jPasswordFieldTxt.setText(passwd);
494 } else {
495 jPasswordField.setText(passwd);
496 }
497 }
498
499 private void updateCryptedPassword() {
500 try {
501 waarpPassword.setClearPassword(getUncryptedPassword());
502 } catch (final Exception e) {
503 SysErrLogger.FAKE_LOGGER.syserr(e);
504 }
505 jTextFieldCryptedPassword.setText(waarpPassword.getCryptedPassword());
506 passwordModified = true;
507 }
508
509 private void enableMenuWithKey() {
510 saveAsMenuItem.setEnabled(true);
511 saveMenuItem.setEnabled(true);
512 jMenuPassword.setEnabled(true);
513 }
514
515 private AbstractAction getOpenKeyAction() {
516 if (openKeyAction == null) {
517 openKeyAction = new AbstractAction("Open Key", null) {
518
519
520
521 private static final long serialVersionUID = -3840578648343599999L;
522
523 @Override
524 public void actionPerformed(final ActionEvent evt) {
525 jTextFieldPasswordFile.setText("");
526 jTextFieldCryptedPassword.setText("");
527 chooserKeyFile.setDialogType(JFileChooser.OPEN_DIALOG);
528 final int response = chooserKeyFile.showOpenDialog(rootPane);
529 if (response == JFileChooser.APPROVE_OPTION) {
530 final File file = chooserKeyFile.getSelectedFile();
531 jTextFieldKeyFile.setText(file.getAbsolutePath());
532 try {
533 waarpPassword.loadKey(file);
534 updateCryptedPassword();
535 enableMenuWithKey();
536 } catch (final CryptoException e) {
537 SysErrLogger.FAKE_LOGGER.syserr(e);
538 }
539 }
540 }
541 };
542 }
543 return openKeyAction;
544 }
545
546 private AbstractAction getNewKeyAction() {
547 if (newKeyAction == null) {
548 newKeyAction = new AbstractAction("New Key", null) {
549
550
551
552 private static final long serialVersionUID = 10107370851157816L;
553
554 @Override
555 public void actionPerformed(final ActionEvent evt) {
556 try {
557 waarpPassword.createNewKey();
558 } catch (final Exception e) {
559 SysErrLogger.FAKE_LOGGER.syserr(e);
560 }
561 updateCryptedPassword();
562 enableMenuWithKey();
563 }
564 };
565 }
566 return newKeyAction;
567 }
568
569 private AbstractAction getSaveKeyAction() {
570 if (saveKeyAction == null) {
571 saveKeyAction = new AbstractAction("Save Key", null) {
572
573
574
575 private static final long serialVersionUID = 4400661431842092244L;
576
577 @Override
578 public void actionPerformed(final ActionEvent evt) {
579 try {
580 waarpPassword.saveKey(null);
581 } catch (final CryptoException e) {
582 SysErrLogger.FAKE_LOGGER.syserr(e);
583 }
584 passwordModified = false;
585 }
586 };
587 }
588 return saveKeyAction;
589 }
590
591 private AbstractAction getSaveAsKeyAction() {
592 if (saveAsKeyAction == null) {
593 saveAsKeyAction = new AbstractAction("Save Key As...", null) {
594
595
596
597 private static final long serialVersionUID = 565842888109816432L;
598
599 @Override
600 public void actionPerformed(final ActionEvent evt) {
601 chooserKeyFile.setDialogType(JFileChooser.SAVE_DIALOG);
602 final int response = chooserKeyFile.showSaveDialog(rootPane);
603 if (response == JFileChooser.APPROVE_OPTION) {
604 File file = chooserKeyFile.getSelectedFile();
605 if (!filterKey.accept(file)) {
606 if (WaarpPassword.desModel) {
607 file = new File(file.getAbsoluteFile() + "." + Des.EXTENSION);
608 } else {
609 file =
610 new File(file.getAbsoluteFile() + "." + Blowfish.EXTENSION);
611 }
612 }
613 jTextFieldKeyFile.setText(file.getAbsolutePath());
614 try {
615 waarpPassword.saveKey(file);
616 } catch (final CryptoException e) {
617 SysErrLogger.FAKE_LOGGER.syserr(e);
618 }
619 passwordModified = false;
620 }
621 }
622 };
623 }
624 return saveAsKeyAction;
625 }
626
627 private AbstractAction getLoadPswdAction() {
628 if (loadPswdAction == null) {
629 loadPswdAction = new AbstractAction("Load", null) {
630
631
632
633 private static final long serialVersionUID = -3100726446117809610L;
634
635 @Override
636 public void actionPerformed(final ActionEvent evt) {
637 chooserPwdFile.setDialogType(JFileChooser.OPEN_DIALOG);
638 final int response = chooserPwdFile.showOpenDialog(rootPane);
639 if (response == JFileChooser.APPROVE_OPTION) {
640 final File file = chooserPwdFile.getSelectedFile();
641 jTextFieldPasswordFile.setText(file.getAbsolutePath());
642 waarpPassword.setPasswordFile(file);
643 try {
644 waarpPassword.loadPasswordFile();
645 } catch (final CryptoException e) {
646 SysErrLogger.FAKE_LOGGER.syserr(e);
647 } catch (final Exception e) {
648 SysErrLogger.FAKE_LOGGER.syserr(e);
649 }
650 setUncryptedPassword(waarpPassword.getClearPassword());
651 jTextFieldCryptedPassword.setText(
652 waarpPassword.getCryptedPassword());
653 passwordModified = false;
654 }
655 }
656 };
657 }
658 return loadPswdAction;
659 }
660
661 private AbstractAction getSavePaswdAction() {
662 if (savePaswdAction == null) {
663 savePaswdAction = new AbstractAction("Save", null) {
664
665
666
667 private static final long serialVersionUID = -5712120697650940845L;
668
669 @Override
670 public void actionPerformed(final ActionEvent evt) {
671 chooserPwdFile.setDialogType(JFileChooser.SAVE_DIALOG);
672 final int response = chooserPwdFile.showSaveDialog(rootPane);
673 if (response == JFileChooser.APPROVE_OPTION) {
674 File file = chooserPwdFile.getSelectedFile();
675 if (!filterPwdKey.accept(file)) {
676 file = new File(
677 file.getAbsoluteFile() + "." + WaarpPassword.GGPEXTENSION);
678 }
679 jTextFieldPasswordFile.setText(file.getAbsolutePath());
680 waarpPassword.setPasswordFile(file);
681 try {
682 waarpPassword.savePasswordFile();
683 } catch (final IOException e) {
684 SysErrLogger.FAKE_LOGGER.syserr(e);
685 }
686 passwordModified = false;
687 }
688 }
689 };
690 }
691 return savePaswdAction;
692 }
693
694 private AbstractAction getHelpAction() {
695 if (helpAction == null) {
696 helpAction = new AbstractAction("Help", null) {
697
698
699
700 private static final long serialVersionUID = -8528091873190483826L;
701
702 @Override
703 public void actionPerformed(final ActionEvent evt) {
704 getJDialogHelp().setVisible(true);
705 }
706 };
707 }
708 return helpAction;
709 }
710
711 private JDialog getJDialogHelp() {
712 if (jDialogHelp == null) {
713 jDialogHelp = new JDialog(this);
714 final GroupLayout jDialogHelpLayout =
715 new GroupLayout(jDialogHelp.getContentPane());
716 jDialogHelp.getContentPane().setLayout(jDialogHelpLayout);
717 jDialogHelp.getContentPane().setBackground(new Color(255, 255, 255));
718 jDialogHelp.setPreferredSize(new Dimension(670, 479));
719 jDialogHelp.setSize(670, 479);
720 jDialogHelpLayout.setHorizontalGroup(
721 jDialogHelpLayout.createSequentialGroup().addContainerGap(27, 27)
722 .addGroup(jDialogHelpLayout.createParallelGroup()
723 .addComponent(
724 getJTextPaneHelp(),
725 GroupLayout.Alignment.LEADING,
726 0, 604,
727 Short.MAX_VALUE)
728 .addGroup(
729 GroupLayout.Alignment.LEADING,
730 jDialogHelpLayout.createSequentialGroup()
731 .addGap(
732 254)
733 .addComponent(
734 getJButtonHelp(),
735 GroupLayout.PREFERRED_SIZE,
736 111,
737 GroupLayout.PREFERRED_SIZE)
738 .addGap(
739 0,
740 239,
741 Short.MAX_VALUE)))
742 .addContainerGap(23, 23));
743 jDialogHelpLayout.setVerticalGroup(
744 jDialogHelpLayout.createSequentialGroup().addContainerGap()
745 .addComponent(getJTextPaneHelp(), 0, 395,
746 Short.MAX_VALUE)
747 .addComponent(getJButtonHelp(),
748 GroupLayout.PREFERRED_SIZE,
749 GroupLayout.PREFERRED_SIZE,
750 GroupLayout.PREFERRED_SIZE)
751 .addContainerGap());
752 }
753 return jDialogHelp;
754 }
755
756 private JButton getJButtonHelp() {
757 if (jButtonHelp == null) {
758 jButtonHelp = new JButton();
759 jButtonHelp.setText("OK");
760 jButtonHelp.setAction(getCloseHelpAction());
761 }
762 return jButtonHelp;
763 }
764
765 private JTextPane getJTextPaneHelp() {
766 if (jTextPaneHelp == null) {
767 jTextPaneHelp = new JTextPane();
768 jTextPaneHelp.setText(" " +
769 " GoldenGate GUI Password Tool\r\n\r\n" +
770 "A) Key for crypto support\r\n\r\n" +
771 "* First you need to open a Key File (Open) or to create a " +
772 "New Key File (New Key) and to save it (Save Key As...)\r\n" +
773 "* You can at any moment save the Key File to a new " +
774 "Key File (Save Key As...)\r\n\r\n" +
775 "B) Password with Crypto Key\r\n" +
776 "* Then you need to get a Password:\r\n" +
777 "1) Enter a password in the Password field\r\n" +
778 "2) Load a password from a Password file (compatible with " +
779 "the current Key) (Load)\r\n" +
780 "* Then you need to save this password (encrypted) to " +
781 "a File (Save)\r\n\r\n" + "C) " +
782 WaarpPassword.HELPOPTIONS);
783 jTextPaneHelp.setEditable(false);
784 jTextPaneHelp.setBackground(new Color(255, 255, 255));
785 }
786 return jTextPaneHelp;
787 }
788
789 private AbstractAction getCloseHelpAction() {
790 if (closeHelpAction == null) {
791 closeHelpAction = new AbstractAction("Close", null) {
792
793
794
795 private static final long serialVersionUID = -2310092372166868386L;
796
797 @Override
798 public void actionPerformed(final ActionEvent evt) {
799 getJDialogHelp().dispose();
800 }
801 };
802 }
803 return closeHelpAction;
804 }
805
806 }