1 | |
package com.nilhcem.fakesmtp.gui; |
2 | |
|
3 | |
import com.nilhcem.fakesmtp.core.ArgsHandler; |
4 | |
import com.nilhcem.fakesmtp.core.I18n; |
5 | |
import com.nilhcem.fakesmtp.gui.info.ClearAllButton; |
6 | |
import com.nilhcem.fakesmtp.gui.info.NbReceivedLabel; |
7 | |
import com.nilhcem.fakesmtp.gui.info.PortTextField; |
8 | |
import com.nilhcem.fakesmtp.gui.info.SaveMsgField; |
9 | |
import com.nilhcem.fakesmtp.gui.info.StartServerButton; |
10 | |
import com.nilhcem.fakesmtp.gui.tab.LastMailPane; |
11 | |
import com.nilhcem.fakesmtp.gui.tab.LogsPane; |
12 | |
import com.nilhcem.fakesmtp.gui.tab.MailsListPane; |
13 | |
import com.nilhcem.fakesmtp.server.MailSaver; |
14 | |
import com.nilhcem.fakesmtp.server.SMTPServerHandler; |
15 | |
import net.miginfocom.swing.MigLayout; |
16 | |
|
17 | |
import javax.swing.JLabel; |
18 | |
import javax.swing.JPanel; |
19 | |
import javax.swing.JTabbedPane; |
20 | |
import java.util.Observable; |
21 | |
|
22 | |
|
23 | |
|
24 | |
|
25 | |
|
26 | |
|
27 | |
|
28 | |
public final class MainPanel { |
29 | |
|
30 | 0 | private final I18n i18n = I18n.INSTANCE; |
31 | |
|
32 | |
|
33 | 0 | private final MigLayout layout = new MigLayout( |
34 | |
"", |
35 | |
"[] 10 [] [] [grow,fill]", |
36 | |
"[] [] 5 [] 5 [grow,fill] []"); |
37 | 0 | private final JPanel mainPanel = new JPanel(layout); |
38 | |
|
39 | |
|
40 | 0 | private final DirChooser dirChooser = new DirChooser(mainPanel); |
41 | |
|
42 | |
|
43 | 0 | private final JLabel portLabel = new JLabel(i18n.get("mainpanel.listening.port")); |
44 | 0 | private final PortTextField portText = new PortTextField(); |
45 | 0 | private final StartServerButton startServerBtn = new StartServerButton(); |
46 | |
|
47 | |
|
48 | 0 | private final JLabel receivedLabel = new JLabel(i18n.get("mainpanel.messages.received")); |
49 | 0 | private final NbReceivedLabel nbReceivedLabel = new NbReceivedLabel(); |
50 | |
|
51 | |
|
52 | 0 | private final JLabel saveMessages = new JLabel(i18n.get("mainpanel.save.messages")); |
53 | 0 | private final SaveMsgField saveMsgTextField = new SaveMsgField(); |
54 | |
|
55 | |
|
56 | 0 | private final JTabbedPane tabbedPane = new JTabbedPane(); |
57 | 0 | private final LogsPane logsPane = new LogsPane(); |
58 | 0 | private final MailsListPane mailsListPane = new MailsListPane(); |
59 | 0 | private final LastMailPane lastMailPane = new LastMailPane(); |
60 | |
|
61 | |
|
62 | 0 | private final ClearAllButton clearAll = new ClearAllButton(); |
63 | |
|
64 | |
|
65 | |
|
66 | |
|
67 | |
|
68 | |
|
69 | |
|
70 | |
|
71 | |
|
72 | |
|
73 | |
|
74 | 0 | public MainPanel(Observable menu) { |
75 | 0 | assignLabelsToFields(); |
76 | 0 | addObservers(menu); |
77 | 0 | buildGUI(); |
78 | 0 | checkArgs(); |
79 | 0 | } |
80 | |
|
81 | |
|
82 | |
|
83 | |
|
84 | |
|
85 | |
|
86 | |
public JPanel get() { |
87 | 0 | return mainPanel; |
88 | |
} |
89 | |
|
90 | |
|
91 | |
|
92 | |
|
93 | |
|
94 | |
|
95 | |
|
96 | |
|
97 | |
|
98 | |
|
99 | |
|
100 | |
|
101 | |
|
102 | |
|
103 | |
|
104 | |
|
105 | |
private void addObservers(Observable menu) { |
106 | |
|
107 | 0 | menu.addObserver(dirChooser); |
108 | 0 | saveMsgTextField.addObserver(dirChooser); |
109 | |
|
110 | |
|
111 | 0 | startServerBtn.addObserver(portText); |
112 | |
|
113 | |
|
114 | 0 | portText.addObserver(startServerBtn); |
115 | |
|
116 | |
|
117 | 0 | dirChooser.addObserver(saveMsgTextField); |
118 | |
|
119 | |
|
120 | 0 | MailSaver mailSaver = SMTPServerHandler.INSTANCE.getMailSaver(); |
121 | 0 | mailSaver.addObserver(nbReceivedLabel); |
122 | 0 | mailSaver.addObserver(mailsListPane); |
123 | 0 | mailSaver.addObserver(lastMailPane); |
124 | 0 | mailSaver.addObserver(clearAll); |
125 | |
|
126 | |
|
127 | 0 | clearAll.addObserver(nbReceivedLabel); |
128 | 0 | clearAll.addObserver(mailsListPane); |
129 | 0 | clearAll.addObserver(logsPane); |
130 | 0 | clearAll.addObserver(lastMailPane); |
131 | 0 | } |
132 | |
|
133 | |
|
134 | |
|
135 | |
|
136 | |
private void buildGUI() { |
137 | |
|
138 | 0 | mainPanel.add(portLabel); |
139 | 0 | mainPanel.add(portText.get(), "w 60!"); |
140 | 0 | mainPanel.add(startServerBtn.get(), "span, w 165!"); |
141 | |
|
142 | |
|
143 | 0 | mainPanel.add(saveMessages); |
144 | 0 | mainPanel.add(saveMsgTextField.get(), "span, w 230!"); |
145 | |
|
146 | |
|
147 | 0 | mainPanel.add(receivedLabel); |
148 | 0 | mainPanel.add(nbReceivedLabel.get(), "span"); |
149 | |
|
150 | |
|
151 | 0 | tabbedPane.add(mailsListPane.get(), i18n.get("mainpanel.tab.mailslist")); |
152 | 0 | tabbedPane.add(logsPane.get(), i18n.get("mainpanel.tab.smtplog")); |
153 | 0 | tabbedPane.add(lastMailPane.get(), i18n.get("mainpanel.tab.lastmessage")); |
154 | 0 | mainPanel.add(tabbedPane, "span, grow"); |
155 | |
|
156 | |
|
157 | 0 | mainPanel.add(clearAll.get(), "span, center"); |
158 | 0 | } |
159 | |
|
160 | |
|
161 | |
|
162 | |
|
163 | |
|
164 | |
|
165 | |
|
166 | |
|
167 | |
private void checkArgs() { |
168 | 0 | ArgsHandler args = ArgsHandler.INSTANCE; |
169 | |
|
170 | 0 | if (args.getPort() != null) { |
171 | 0 | portText.setText(args.getPort()); |
172 | |
} |
173 | |
|
174 | 0 | if (args.shouldStartServerAtLaunch()) { |
175 | 0 | startServerBtn.toggleButton(); |
176 | |
} |
177 | |
|
178 | 0 | if (args.memoryModeEnabled()) { |
179 | 0 | saveMsgTextField.get().setEnabled(false); |
180 | |
} |
181 | 0 | } |
182 | |
|
183 | |
|
184 | |
|
185 | |
|
186 | |
private void assignLabelsToFields() { |
187 | 0 | portLabel.setLabelFor(portText.get()); |
188 | 0 | saveMessages.setLabelFor(saveMsgTextField.get()); |
189 | 0 | receivedLabel.setLabelFor(nbReceivedLabel.get()); |
190 | 0 | } |
191 | |
|
192 | |
|
193 | |
|
194 | |
|
195 | |
|
196 | |
|
197 | |
public PortTextField getPortText() { |
198 | 0 | return portText; |
199 | |
} |
200 | |
|
201 | |
|
202 | |
|
203 | |
|
204 | |
|
205 | |
|
206 | |
public SaveMsgField getSaveMsgTextField() { |
207 | 0 | return saveMsgTextField; |
208 | |
} |
209 | |
} |