Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
SaveMsgField |
|
| 1.2222222222222223;1.222 | ||||
SaveMsgField$1 |
|
| 1.2222222222222223;1.222 |
1 | package com.nilhcem.fakesmtp.gui.info; | |
2 | ||
3 | import com.nilhcem.fakesmtp.core.ArgsHandler; | |
4 | import com.nilhcem.fakesmtp.core.I18n; | |
5 | import com.nilhcem.fakesmtp.gui.DirChooser; | |
6 | import com.nilhcem.fakesmtp.model.UIModel; | |
7 | ||
8 | import javax.swing.JTextField; | |
9 | import java.awt.Color; | |
10 | import java.awt.event.MouseEvent; | |
11 | import java.awt.event.MouseListener; | |
12 | import java.util.Observable; | |
13 | import java.util.Observer; | |
14 | ||
15 | /** | |
16 | * Text field in which will be written the path where emails will be automatically saved. | |
17 | * | |
18 | * @author Nilhcem | |
19 | * @since 1.0 | |
20 | */ | |
21 | 0 | public final class SaveMsgField extends Observable implements Observer { |
22 | ||
23 | 0 | private final JTextField saveMsgField = new JTextField(UIModel.INSTANCE.getSavePath()); |
24 | ||
25 | /** | |
26 | * Creates a text field and adds a mouse listener, to display the directory chooser dialog when a user clicks on the field. | |
27 | * <p> | |
28 | * The text field will be disabled by default to avoid the user to type any folder directly.<br> | |
29 | * Instead, he can use the directory chooser dialog to select the path he wants. | |
30 | * </p> | |
31 | */ | |
32 | 0 | public SaveMsgField() { |
33 | 0 | saveMsgField.setToolTipText(I18n.INSTANCE.get("savemsgfield.tooltip")); |
34 | ||
35 | // Disable edition but keep the same background color | |
36 | 0 | Color bg = saveMsgField.getBackground(); |
37 | 0 | saveMsgField.setEditable(false); |
38 | 0 | saveMsgField.setBackground(bg); |
39 | ||
40 | 0 | if (!ArgsHandler.INSTANCE.memoryModeEnabled()) { |
41 | // Add a MouseListener | |
42 | 0 | saveMsgField.addMouseListener(new MouseListener() { |
43 | @Override | |
44 | public void mouseClicked(MouseEvent e) { | |
45 | 0 | } |
46 | ||
47 | @Override | |
48 | public void mousePressed(MouseEvent e) { | |
49 | 0 | openFolderSelection(); |
50 | 0 | } |
51 | ||
52 | @Override | |
53 | public void mouseReleased(MouseEvent e) { | |
54 | 0 | } |
55 | ||
56 | @Override | |
57 | public void mouseEntered(MouseEvent e) { | |
58 | 0 | } |
59 | ||
60 | @Override | |
61 | public void mouseExited(MouseEvent e) { | |
62 | 0 | } |
63 | ||
64 | private void openFolderSelection() { | |
65 | 0 | setChanged(); |
66 | 0 | notifyObservers(); |
67 | 0 | } |
68 | }); | |
69 | } | |
70 | 0 | } |
71 | ||
72 | /** | |
73 | * Returns the JTextField object. | |
74 | * | |
75 | * @return the JTextField object. | |
76 | */ | |
77 | public JTextField get() { | |
78 | 0 | return saveMsgField; |
79 | } | |
80 | ||
81 | /** | |
82 | * Updates the content of the JTextField with the new directory value. | |
83 | * <p> | |
84 | * Once a directory has been chosen by the {@link DirChooser}, the latter will | |
85 | * notify this class, so that it can update its content. | |
86 | * </p> | |
87 | * | |
88 | * @param o the observable element which will notify this class. | |
89 | * @param arg optional parameters (not used). | |
90 | */ | |
91 | @Override | |
92 | public void update(Observable o, Object arg) { | |
93 | 0 | if (o instanceof DirChooser) { |
94 | 0 | saveMsgField.setText(UIModel.INSTANCE.getSavePath()); |
95 | } | |
96 | 0 | } |
97 | } |