Ukládání seznamu zkušebních příjemců → nemusejí se zadávat pokaždé znovu.
1 package cz.frantovo.superPostak;
3 import cz.frantovo.postak.HromadnaZprava;
4 import cz.frantovo.postak.InternetAddressKomu;
5 import cz.frantovo.postak.Nastaveni;
6 import cz.frantovo.postak.Postak;
7 import java.awt.CardLayout;
8 import java.awt.Component;
9 import java.awt.Cursor;
10 import java.awt.Dialog.ModalityType;
11 import java.awt.KeyboardFocusManager;
12 import java.beans.XMLDecoder;
13 import java.beans.XMLEncoder;
14 import java.io.BufferedInputStream;
15 import java.io.BufferedOutputStream;
17 import java.io.FileInputStream;
18 import java.io.FileNotFoundException;
19 import java.io.FileOutputStream;
20 import java.io.IOException;
21 import java.io.UnsupportedEncodingException;
22 import java.sql.SQLException;
23 import java.util.ArrayList;
24 import java.util.Collection;
25 import java.util.logging.Level;
26 import java.util.logging.Logger;
27 import java.util.zip.GZIPInputStream;
28 import java.util.zip.GZIPOutputStream;
29 import javax.mail.MessagingException;
30 import javax.mail.internet.InternetAddress;
31 import javax.swing.JComponent;
32 import javax.swing.JDialog;
33 import javax.swing.JOptionPane;
34 import javax.swing.JTextArea;
35 import javax.swing.UIManager;
36 import javax.swing.UnsupportedLookAndFeelException;
37 import org.jdesktop.swingx.JXErrorPane;
38 import org.jdesktop.swingx.JXTaskPaneContainer;
39 import org.jdesktop.swingx.error.ErrorInfo;
45 public class SuperPostak extends javax.swing.JFrame {
47 /** Soubor, kde je uložené nastavení */
48 private static final String NASTAVENI_SOUBOR = "Nastaveni.xml.gz";
49 private static final String CERTIFIKATY_SOUBOR = "DuveryhodneCertifikaty.keystore";
50 private static final String NASTAVENI_SLOZKA = ".SuperPostak";
51 private static final String DOMACI_ADRESAR = System.getProperty("user.home");
52 private static final Logger log = Logger.getLogger(SuperPostak.class.getName());
53 private static final long serialVersionUID = -7026850569575604048L;
54 private Nastaveni nastaveni = new Nastaveni();
55 private Postak postak = new Postak(nastaveni);
58 * Creates new form SuperPostak
59 * @param ladit předvyplní testovací hodnoty - zprávu
60 * @param exit při zavření okna ukončí program
62 public SuperPostak(boolean ladit, boolean exit) {
63 log.log(Level.WARNING, "Program byl spuštěn.");
65 vytvorSlozkuProgramu();
70 nastaveni.setCestaKCertifikatum(getCestaKCertifikatum());
72 inicializujCardLayout();
73 setLocationRelativeTo(null);
75 /** Kvůli souborovým dialogům – aby se otvírali ve stejné složce jako minule. */
76 prijemciDodatecni.setNastaveni(nastaveni);
77 prijemciVychozi.setNastaveni(nastaveni);
78 prijemciZkusebni.setNastaveni(nastaveni);
80 /** Vyřešíme problém TAB vs. Focus */
81 vyresitTabFocusProblem(vstupSQL);
82 vyresitTabFocusProblem(vstupZprava);
86 nastavLadiciHodnoty();
90 setDefaultCloseOperation(EXIT_ON_CLOSE);
96 private void inicializujCardLayout() {
97 panelDatabaze.setName("panelDatabaze");
98 panelOdeslat.setName("panelOdeslat");
99 panelPrijemci.setName("panelPrijemci");
100 panelServer.setName("panelServer");
101 panelVychoziPrijemci.setName("panelVychoziPrijemci");
102 panelZprava.setName("panelZprava");
104 panel.add(panelDatabaze, panelDatabaze.getName());
105 panel.add(panelOdeslat, panelOdeslat.getName());
106 panel.add(panelPrijemci, panelPrijemci.getName());
107 panel.add(panelServer, panelServer.getName());
108 panel.add(panelVychoziPrijemci, panelVychoziPrijemci.getName());
109 panel.add(panelZprava, panelZprava.getName());
111 setPanel(panelZprava);
116 * Vyplní formuláře (odesílatel, předmět, zpráva, příjemci...) výchozími hodnotami,
117 * aby se dal program testovat jedním kliknutím.
119 private void nastavLadiciHodnoty() {
121 vstupAdresaOdesilatele.setText("SuperPostak@frantovo.cz");
122 vstupJmenoOdesilatele.setText("SuperPošťák");
123 vstupPredmet.setText("Zkušební zpráva od SuperPošťáka");
124 vstupZprava.setText("Toto je obyčejná zkušební zpráva v češtině :-)");
125 ArrayList<InternetAddressKomu> adresy = new ArrayList<InternetAddressKomu>();
126 adresy.add(new InternetAddressKomu("SuperPostak@frantovo.cz", "SuperPošťák"));
127 prijemciZkusebni.setAdresy(adresy);
128 } catch (UnsupportedEncodingException e) {
129 log.log(Level.SEVERE, null, e);
134 * Pokusíme se načíst ovladače pro různé DB a výsledek zapíšeme do logu.
135 * Další ovladače je možné přidat pomocí manifestu v příslušných knihovnách.
136 * viz http://www.sweb.cz/pichlik/archive/2006_08_06_archive.html#115502885631518161
138 private void nactiOvladaceJDBC() {
139 nactiOvladacJDBC("org.postgresql.Driver", "PostgreSQL");
140 nactiOvladacJDBC("com.mysql.jdbc.Driver", "MySQL");
141 nactiOvladacJDBC("net.sourceforge.jtds.jdbc.Driver", "jTDS Sybase a MS SQL");
142 nactiOvladacJDBC("com.sybase.jdbc2.jdbc.SybDriver", "Sybase.com");
143 nactiOvladacJDBC("oracle.jdbc.OracleDriver", "Oracle");
147 * @param trida ovladač databáze, který se má načíst
148 * @param jmeno název databáze
150 private void nactiOvladacJDBC(String trida, String jmeno) {
152 Class.forName(trida);
153 log.log(Level.INFO, "JDBC ovladač pro {0} byl úspěšně načten.", jmeno);
154 } catch (ClassNotFoundException e) {
155 log.log(Level.INFO, "JDBC ovladač pro {0} se nepodařilo načíst.", jmeno);
159 /** Vrací plnou cestu k souboru s nastavením */
160 protected static String getCestaKCertifikatum() {
161 return getCestaKeSlozceProgramu() + CERTIFIKATY_SOUBOR;
164 /** Vrací plnou cestu k souboru s nastavením */
165 protected static String getCestaKNastaveni() {
166 return getCestaKeSlozceProgramu() + NASTAVENI_SOUBOR;
169 /** Vrací plnou cestu ke složce programu (nastavení, certifikáty a logy) */
170 protected static String getCestaKeSlozceProgramu() {
171 return DOMACI_ADRESAR + File.separator + NASTAVENI_SLOZKA + File.separator;
174 /** Načte nastavení ze souboru */
175 private void nactiNastaveni() {
177 XMLDecoder d = new XMLDecoder(new BufferedInputStream(new GZIPInputStream(new FileInputStream(getCestaKNastaveni()))));
178 Object xmlObjekt = d.readObject();
181 if (xmlObjekt instanceof Nastaveni) {
182 nastaveni = (Nastaveni) xmlObjekt;
184 nastaveni = new Nastaveni();
185 log.log(Level.SEVERE, "Nepodařilo se načíst nastavení: není instancí");
190 log.log(Level.INFO, "Nastavení bylo načteno.");
191 } catch (FileNotFoundException ex) {
192 log.log(Level.SEVERE, "Nepodařilo se načíst nastavení: soubor nenalezen", ex);
193 } catch (IOException ex) {
194 log.log(Level.SEVERE, "Nastavení se nepodařilo načíst: I/O.", ex);
198 /** Vytvoří (pokud neexistuje) v domovském adresáři složku, kam se ukládá nastavení a případně logy */
199 private static boolean vytvorSlozkuProgramu() {
200 if (new File(getCestaKeSlozceProgramu()).mkdirs()) {
201 log.log(Level.INFO, "Složka pro nastavení programu byla vytvořena: {0}", getCestaKeSlozceProgramu());
208 /** Uloží nastavení do souboru */
209 private void ulozNastaveni() {
213 vytvorSlozkuProgramu();
215 XMLEncoder e = new XMLEncoder(new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(getCestaKNastaveni()))));
216 e.writeObject(nastaveni);
218 log.log(Level.INFO, "Nastavení bylo uloženo.");
219 } catch (FileNotFoundException ex) {
220 log.log(Level.SEVERE, "Nastavení se nepodařilo uložit: soubor nenalezen.", ex);
221 } catch (IOException ex) {
222 log.log(Level.SEVERE, "Nastavení se nepodařilo uložit: I/O.", ex);
226 /** Posbírá zadané hodnoty z GUI a uloží je do objektu nastaveni */
227 private void ulozNastaveniGUI() {
228 nastaveni.setDatabaze(vstupDatabaze.getText());
229 nastaveni.setDbHeslo(vstupDBheslo.getPassword());
230 nastaveni.setDbJmeno(vstupDBjmeno.getText());
231 nastaveni.setLimitZprav((Integer) vstupSMTPlimitPrijemcu.getValue());
232 nastaveni.setPostovniHeslo(vstupSMTPheslo.getPassword());
233 nastaveni.setPostovniJmeno(vstupSMTPjmeno.getText());
234 nastaveni.setPostovniPort((Integer) vstupSMTPport.getValue());
235 nastaveni.setPostovniServer(vstupSMTPserver.getText());
236 nastaveni.setVychoziPrijemci(prijemciVychozi.getAdresy());
237 nastaveni.setZkušebníPrijemci(prijemciZkusebni.getAdresy());
240 /** Aktualizuje GUI formuláře hodnotami z objektu nastaveni */
241 private void nactiNastaveniGUI() {
242 vstupDatabaze.setText(nastaveni.getDatabaze());
243 if (nastaveni.getDbHeslo() != null) {
244 vstupDBheslo.setText(String.valueOf(nastaveni.getDbHeslo()));
246 vstupDBjmeno.setText(nastaveni.getDbJmeno());
247 vstupSMTPlimitPrijemcu.setValue(nastaveni.getLimitZprav());
248 if (nastaveni.getPostovniHeslo() != null) {
249 vstupSMTPheslo.setText(String.valueOf(nastaveni.getPostovniHeslo()));
251 vstupSMTPjmeno.setText(nastaveni.getPostovniJmeno());
252 vstupSMTPport.setValue(nastaveni.getPostovniPort());
253 vstupSMTPserver.setText(nastaveni.getPostovniServer());
254 prijemciVychozi.setAdresy(nastaveni.getVychoziPrijemci());
255 prijemciZkusebni.setAdresy(nastaveni.getZkušebníPrijemci());
258 protected static void zobrazChybovyDialog(Component vlastnik, String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
259 zobrazChybovyDialog(vlastnik, "Chyba", strucnaZprava, null, vyjimka, zavaznost, logovat);
262 protected static void zobrazInformacniDialog(Component vlastnik, String nadpis, String text, boolean loguj) {
263 JOptionPane.showMessageDialog(vlastnik, text, nadpis, JOptionPane.INFORMATION_MESSAGE);
265 log.log(Level.INFO, "{0}: {1}", new Object[]{nadpis, text});
269 protected static void zobrazChybovyDialog(Component vlastnik, String nadpis, String strucnaZprava, String podrobnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
271 log.log(zavaznost, strucnaZprava, vyjimka);
274 JXErrorPane chybovyPanel = new JXErrorPane();
275 ErrorInfo chybovaInformace = new ErrorInfo(nadpis, strucnaZprava, podrobnaZprava, null, vyjimka, zavaznost, null);
276 chybovyPanel.setErrorInfo(chybovaInformace);
277 JDialog dialog = JXErrorPane.createDialog(vlastnik, chybovyPanel);
278 dialog.setVisible(true);
281 private void zobrazChybovyDialog(String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
282 zobrazChybovyDialog(this, strucnaZprava, vyjimka, zavaznost, logovat);
285 private void zobrazInformacniDialog(String nadpis, String text, boolean loguj) {
286 zobrazInformacniDialog(this, nadpis, text, loguj);
289 private void zobrazChybovyDialog(String nadpis, String strucnaZprava, String podrobnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
290 zobrazChybovyDialog(this, nadpis, strucnaZprava, podrobnaZprava, vyjimka, zavaznost, logovat);
293 /** This method is called from within the constructor to
294 * initialize the form.
295 * WARNING: Do NOT modify this code. The content of this method is
296 * always regenerated by the Form Editor.
298 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
299 private void initComponents() {
301 panelDatabaze = new org.jdesktop.swingx.JXPanel();
302 jLabel9 = new javax.swing.JLabel();
303 vstupDatabaze = new javax.swing.JTextField();
304 jLabel10 = new javax.swing.JLabel();
305 vstupDBjmeno = new javax.swing.JTextField();
306 vstupDBheslo = new javax.swing.JPasswordField();
307 jLabel11 = new javax.swing.JLabel();
308 vyzkousetPripojeniTlacitko = new javax.swing.JButton();
309 vystupDBzprava = new javax.swing.JLabel();
310 panelOdeslat = new org.jdesktop.swingx.JXPanel();
311 jPanel1 = new javax.swing.JPanel();
312 rozeslatZkusebniTlacitko = new javax.swing.JButton();
313 rozeslatHromadnouZpravuTlacitko = new javax.swing.JButton();
314 zobrazitVsechnyPrijemceTlacitko = new javax.swing.JButton();
315 prijemciZkusebni = new cz.frantovo.superPostak.PanelPrijemcu();
316 jSeparator2 = new javax.swing.JSeparator();
317 jLabel14 = new javax.swing.JLabel();
318 panelPrijemci = new org.jdesktop.swingx.JXPanel();
319 jLabel13 = new javax.swing.JLabel();
320 jScrollPane3 = new javax.swing.JScrollPane();
321 vstupSQL = new javax.swing.JTextArea();
322 vyzkousetSQLTlacitko = new javax.swing.JButton();
323 vystupSQLZprava = new javax.swing.JLabel();
324 prijemciDodatecni = new cz.frantovo.superPostak.PanelPrijemcu();
325 jSeparator1 = new javax.swing.JSeparator();
326 jLabel16 = new javax.swing.JLabel();
327 zobrazitSQLPrijemceTlacitko = new javax.swing.JButton();
328 panelServer = new org.jdesktop.swingx.JXPanel();
329 jLabel4 = new javax.swing.JLabel();
330 jLabel5 = new javax.swing.JLabel();
331 vstupSMTPserver = new javax.swing.JTextField();
332 vstupSMTPport = new javax.swing.JSpinner();
333 napovedaSMTPscroll = new javax.swing.JScrollPane();
334 napovedaSMTP = new javax.swing.JTextArea();
335 jLabel6 = new javax.swing.JLabel();
336 vstupSMTPjmeno = new javax.swing.JTextField();
337 vstupSMTPheslo = new javax.swing.JPasswordField();
338 jLabel7 = new javax.swing.JLabel();
339 vstupSMTPlimitPrijemcu = new javax.swing.JSpinner();
340 jLabel8 = new javax.swing.JLabel();
341 panelVychoziPrijemci = new org.jdesktop.swingx.JXPanel();
342 prijemciVychozi = new cz.frantovo.superPostak.PanelPrijemcu();
343 jLabel12 = new javax.swing.JLabel();
344 panelZprava = new org.jdesktop.swingx.JXPanel();
345 jLabel1 = new javax.swing.JLabel();
346 vstupPredmet = new javax.swing.JTextField();
347 jLabel2 = new javax.swing.JLabel();
348 vstupJmenoOdesilatele = new javax.swing.JTextField();
349 vstupAdresaOdesilatele = new javax.swing.JTextField();
350 jScrollPane1 = new javax.swing.JScrollPane();
351 vstupZprava = new javax.swing.JTextArea();
352 jLabel15 = new javax.swing.JLabel();
353 vstupFormatHTML = new javax.swing.JCheckBox();
354 odpovedetKomuOdkaz = new org.jdesktop.swingx.JXHyperlink();
355 odpovedetKomuDialog = new javax.swing.JDialog();
356 jLabel18 = new javax.swing.JLabel();
357 jLabel19 = new javax.swing.JLabel();
358 jLabel17 = new javax.swing.JLabel();
359 odpovedetKomuJmeno = new javax.swing.JTextField();
360 odpovedetKomuAdresa = new javax.swing.JTextField();
361 odpovedetKomuHotovo = new javax.swing.JButton();
362 jXHeader1 = new org.jdesktop.swingx.JXHeader();
363 taskPanel = new org.jdesktop.swingx.JXTaskPaneContainer();
364 jXTaskPane1 = new org.jdesktop.swingx.JXTaskPane();
365 lnText = new org.jdesktop.swingx.JXHyperlink();
366 lnPrijemci = new org.jdesktop.swingx.JXHyperlink();
367 lnOdeslat = new org.jdesktop.swingx.JXHyperlink();
368 jXTaskPane2 = new org.jdesktop.swingx.JXTaskPane();
369 lnServer = new org.jdesktop.swingx.JXHyperlink();
370 lnDatabaze = new org.jdesktop.swingx.JXHyperlink();
371 lnVychoziPrijemci = new org.jdesktop.swingx.JXHyperlink();
372 panel = new org.jdesktop.swingx.JXPanel();
374 jLabel9.setText("Databáze");
376 jLabel10.setText("Jméno");
378 jLabel11.setText("Heslo");
380 vyzkousetPripojeniTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/fork.png"))); // NOI18N
381 vyzkousetPripojeniTlacitko.setMnemonic('y');
382 vyzkousetPripojeniTlacitko.setText("Vyzkoušet spojení");
383 vyzkousetPripojeniTlacitko.addActionListener(new java.awt.event.ActionListener() {
384 public void actionPerformed(java.awt.event.ActionEvent evt) {
385 vyzkousetPripojeniTlacitkoActionPerformed(evt);
389 vystupDBzprava.setText(" ");
391 javax.swing.GroupLayout panelDatabazeLayout = new javax.swing.GroupLayout(panelDatabaze);
392 panelDatabaze.setLayout(panelDatabazeLayout);
393 panelDatabazeLayout.setHorizontalGroup(
394 panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
395 .addGroup(panelDatabazeLayout.createSequentialGroup()
397 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
398 .addGroup(panelDatabazeLayout.createSequentialGroup()
399 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
400 .addComponent(jLabel9)
401 .addComponent(jLabel10)
402 .addComponent(jLabel11))
403 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
404 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
405 .addComponent(vstupDatabaze, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE)
406 .addComponent(vstupDBjmeno, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE)
407 .addGroup(panelDatabazeLayout.createSequentialGroup()
408 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
409 .addComponent(vstupDBheslo, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE))))
410 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelDatabazeLayout.createSequentialGroup()
411 .addComponent(vystupDBzprava, javax.swing.GroupLayout.DEFAULT_SIZE, 155, Short.MAX_VALUE)
412 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
413 .addComponent(vyzkousetPripojeniTlacitko)))
416 panelDatabazeLayout.setVerticalGroup(
417 panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
418 .addGroup(panelDatabazeLayout.createSequentialGroup()
420 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
421 .addComponent(jLabel9)
422 .addComponent(vstupDatabaze, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
423 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
424 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
425 .addComponent(jLabel10)
426 .addComponent(vstupDBjmeno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
427 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
428 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
429 .addComponent(jLabel11)
430 .addComponent(vstupDBheslo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
431 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
432 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
433 .addComponent(vyzkousetPripojeniTlacitko)
434 .addComponent(vystupDBzprava))
435 .addContainerGap(183, Short.MAX_VALUE))
438 rozeslatZkusebniTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/apply.png"))); // NOI18N
439 rozeslatZkusebniTlacitko.setMnemonic('u');
440 rozeslatZkusebniTlacitko.setText("Rozeslat zkušební");
441 rozeslatZkusebniTlacitko.addActionListener(new java.awt.event.ActionListener() {
442 public void actionPerformed(java.awt.event.ActionEvent evt) {
443 rozeslatZkusebniTlacitkoActionPerformed(evt);
447 rozeslatHromadnouZpravuTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/adept_commit.png"))); // NOI18N
448 rozeslatHromadnouZpravuTlacitko.setMnemonic('h');
449 rozeslatHromadnouZpravuTlacitko.setText("Rozeslat hromadnou zprávu");
450 rozeslatHromadnouZpravuTlacitko.addActionListener(new java.awt.event.ActionListener() {
451 public void actionPerformed(java.awt.event.ActionEvent evt) {
452 rozeslatHromadnouZpravuTlacitkoActionPerformed(evt);
456 zobrazitVsechnyPrijemceTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/zobrazit_adresy.png"))); // NOI18N
457 zobrazitVsechnyPrijemceTlacitko.setToolTipText("<html>\nZobrazí seznam všech příjemcům, kterým bude odeslána zpráva.<br/>\n(Při velkých počtech záznamů může být tato operace náročná.)\n</html>");
458 zobrazitVsechnyPrijemceTlacitko.addActionListener(new java.awt.event.ActionListener() {
459 public void actionPerformed(java.awt.event.ActionEvent evt) {
460 zobrazitVsechnyPrijemceTlacitkoActionPerformed(evt);
464 javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
465 jPanel1.setLayout(jPanel1Layout);
466 jPanel1Layout.setHorizontalGroup(
467 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
468 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
469 .addContainerGap(106, Short.MAX_VALUE)
470 .addComponent(rozeslatZkusebniTlacitko)
471 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
472 .addComponent(rozeslatHromadnouZpravuTlacitko)
473 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
474 .addComponent(zobrazitVsechnyPrijemceTlacitko)
477 jPanel1Layout.setVerticalGroup(
478 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
479 .addGroup(jPanel1Layout.createSequentialGroup()
481 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
482 .addComponent(rozeslatHromadnouZpravuTlacitko)
483 .addComponent(zobrazitVsechnyPrijemceTlacitko)
484 .addComponent(rozeslatZkusebniTlacitko))
485 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
488 jLabel14.setText("Zkušební příjemci");
490 javax.swing.GroupLayout panelOdeslatLayout = new javax.swing.GroupLayout(panelOdeslat);
491 panelOdeslat.setLayout(panelOdeslatLayout);
492 panelOdeslatLayout.setHorizontalGroup(
493 panelOdeslatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
494 .addGroup(panelOdeslatLayout.createSequentialGroup()
496 .addGroup(panelOdeslatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
497 .addComponent(prijemciZkusebni, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE)
498 .addComponent(jSeparator2, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE)
499 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
500 .addComponent(jLabel14))
503 panelOdeslatLayout.setVerticalGroup(
504 panelOdeslatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
505 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelOdeslatLayout.createSequentialGroup()
507 .addComponent(jLabel14)
508 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
509 .addComponent(prijemciZkusebni, javax.swing.GroupLayout.DEFAULT_SIZE, 153, Short.MAX_VALUE)
510 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
511 .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
512 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
513 .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
517 jLabel13.setText("SQL dotaz");
519 vstupSQL.setColumns(20);
521 jScrollPane3.setViewportView(vstupSQL);
523 vyzkousetSQLTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/fork.png"))); // NOI18N
524 vyzkousetSQLTlacitko.setMnemonic('y');
525 vyzkousetSQLTlacitko.setText("Vyzkoušet");
526 vyzkousetSQLTlacitko.addActionListener(new java.awt.event.ActionListener() {
527 public void actionPerformed(java.awt.event.ActionEvent evt) {
528 vyzkousetSQLTlacitkoActionPerformed(evt);
532 vystupSQLZprava.setText(" ");
534 prijemciDodatecni.setToolTipText("Zde můžete dopnit další přijemce.");
536 jLabel16.setText("Dodateční příjemci:");
538 zobrazitSQLPrijemceTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/zobrazit_adresy.png"))); // NOI18N
539 zobrazitSQLPrijemceTlacitko.setToolTipText("<html>\nZobrazí seznam adres načtených z databáze.<br/>\n(Při velkých počtech záznamů může být tato operace náročná.)\n</html>");
540 zobrazitSQLPrijemceTlacitko.addActionListener(new java.awt.event.ActionListener() {
541 public void actionPerformed(java.awt.event.ActionEvent evt) {
542 zobrazitSQLPrijemceTlacitkoActionPerformed(evt);
546 javax.swing.GroupLayout panelPrijemciLayout = new javax.swing.GroupLayout(panelPrijemci);
547 panelPrijemci.setLayout(panelPrijemciLayout);
548 panelPrijemciLayout.setHorizontalGroup(
549 panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
550 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPrijemciLayout.createSequentialGroup()
552 .addGroup(panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
553 .addComponent(prijemciDodatecni, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
554 .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
555 .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
556 .addComponent(jLabel13, javax.swing.GroupLayout.Alignment.LEADING)
557 .addGroup(panelPrijemciLayout.createSequentialGroup()
558 .addComponent(vystupSQLZprava, javax.swing.GroupLayout.DEFAULT_SIZE, 52, Short.MAX_VALUE)
559 .addGap(127, 127, 127)
560 .addComponent(vyzkousetSQLTlacitko)
561 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
562 .addComponent(zobrazitSQLPrijemceTlacitko))
563 .addComponent(jLabel16, javax.swing.GroupLayout.Alignment.LEADING))
566 panelPrijemciLayout.setVerticalGroup(
567 panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
568 .addGroup(panelPrijemciLayout.createSequentialGroup()
570 .addComponent(jLabel13)
571 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
572 .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
573 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
574 .addGroup(panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
575 .addComponent(vystupSQLZprava, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
576 .addComponent(zobrazitSQLPrijemceTlacitko)
577 .addComponent(vyzkousetSQLTlacitko))
578 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
579 .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
580 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
581 .addComponent(jLabel16)
582 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
583 .addComponent(prijemciDodatecni, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
587 jLabel4.setText("SMTP server");
589 jLabel5.setText("Port");
591 vstupSMTPserver.setText("localhost");
593 vstupSMTPport.setValue(25);
595 napovedaSMTP.setColumns(20);
596 napovedaSMTP.setEditable(false);
597 napovedaSMTP.setLineWrap(true);
598 napovedaSMTP.setRows(5);
599 napovedaSMTP.setText("Tip: některé SMTP servery mají omezený seznam počítačů, ze kterých přijímají poštu");
600 napovedaSMTP.setWrapStyleWord(true);
601 napovedaSMTPscroll.setViewportView(napovedaSMTP);
603 jLabel6.setText("Jméno");
605 jLabel7.setText("Heslo");
607 vstupSMTPlimitPrijemcu.setValue(1000);
609 jLabel8.setText("Limit příjemců");
611 javax.swing.GroupLayout panelServerLayout = new javax.swing.GroupLayout(panelServer);
612 panelServer.setLayout(panelServerLayout);
613 panelServerLayout.setHorizontalGroup(
614 panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
615 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelServerLayout.createSequentialGroup()
617 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
618 .addComponent(napovedaSMTPscroll, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE)
619 .addGroup(panelServerLayout.createSequentialGroup()
620 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
621 .addComponent(jLabel4)
622 .addComponent(jLabel6)
623 .addComponent(jLabel5)
624 .addComponent(jLabel7)
625 .addComponent(jLabel8))
626 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
627 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
628 .addComponent(vstupSMTPserver, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
629 .addComponent(vstupSMTPport, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
630 .addComponent(vstupSMTPjmeno, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
631 .addComponent(vstupSMTPheslo, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
632 .addComponent(vstupSMTPlimitPrijemcu, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE))))
635 panelServerLayout.setVerticalGroup(
636 panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
637 .addGroup(panelServerLayout.createSequentialGroup()
639 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
640 .addComponent(jLabel4)
641 .addComponent(vstupSMTPserver, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
642 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
643 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
644 .addComponent(vstupSMTPport, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
645 .addComponent(jLabel5))
646 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
647 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
648 .addComponent(jLabel6)
649 .addComponent(vstupSMTPjmeno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
650 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
651 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
652 .addComponent(vstupSMTPheslo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
653 .addComponent(jLabel7))
654 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
655 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
656 .addComponent(vstupSMTPlimitPrijemcu, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
657 .addComponent(jLabel8))
658 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
659 .addComponent(napovedaSMTPscroll, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE)
663 jLabel12.setText("Těmto lidem přijde hromadný e-mail vždy (netýká se zkušebního rozeslání zprávy).");
665 javax.swing.GroupLayout panelVychoziPrijemciLayout = new javax.swing.GroupLayout(panelVychoziPrijemci);
666 panelVychoziPrijemci.setLayout(panelVychoziPrijemciLayout);
667 panelVychoziPrijemciLayout.setHorizontalGroup(
668 panelVychoziPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
669 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelVychoziPrijemciLayout.createSequentialGroup()
671 .addGroup(panelVychoziPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
672 .addComponent(prijemciVychozi, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 514, Short.MAX_VALUE)
673 .addComponent(jLabel12, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 514, Short.MAX_VALUE))
676 panelVychoziPrijemciLayout.setVerticalGroup(
677 panelVychoziPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
678 .addGroup(panelVychoziPrijemciLayout.createSequentialGroup()
680 .addComponent(jLabel12)
681 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
682 .addComponent(prijemciVychozi, javax.swing.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE)
686 jLabel1.setLabelFor(vstupPredmet);
687 jLabel1.setText("Předmět");
689 vstupPredmet.addActionListener(new java.awt.event.ActionListener() {
690 public void actionPerformed(java.awt.event.ActionEvent evt) {
691 vstupPredmetActionPerformed(evt);
695 jLabel2.setText("Jméno odesílatele");
697 vstupZprava.setColumns(20);
698 vstupZprava.setRows(5);
699 jScrollPane1.setViewportView(vstupZprava);
701 jLabel15.setText("Formát zprávy");
703 vstupFormatHTML.setMnemonic('h');
704 vstupFormatHTML.setText("HTML");
705 vstupFormatHTML.setToolTipText("Při nezaškrtnutí se odešle jako prostý text");
707 odpovedetKomuOdkaz.setForeground(javax.swing.UIManager.getDefaults().getColor("windowText"));
708 odpovedetKomuOdkaz.setMnemonic('e');
709 odpovedetKomuOdkaz.setText("Adresa odesílatele");
710 odpovedetKomuOdkaz.setToolTipText("<html><p>Klikněte sem pro nastavení adresy,</p><p>na kterou mají chodit odpovědi</p></html>");
711 odpovedetKomuOdkaz.setClickedColor(javax.swing.UIManager.getDefaults().getColor("windowText"));
712 odpovedetKomuOdkaz.setUnclickedColor(javax.swing.UIManager.getDefaults().getColor("windowText"));
713 odpovedetKomuOdkaz.addActionListener(new java.awt.event.ActionListener() {
714 public void actionPerformed(java.awt.event.ActionEvent evt) {
715 odpovedetKomuOdkazActionPerformed(evt);
719 javax.swing.GroupLayout panelZpravaLayout = new javax.swing.GroupLayout(panelZprava);
720 panelZprava.setLayout(panelZpravaLayout);
721 panelZpravaLayout.setHorizontalGroup(
722 panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
723 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelZpravaLayout.createSequentialGroup()
725 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
726 .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 438, Short.MAX_VALUE)
727 .addGroup(panelZpravaLayout.createSequentialGroup()
728 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
729 .addGroup(panelZpravaLayout.createSequentialGroup()
730 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
731 .addComponent(jLabel2)
732 .addComponent(jLabel1))
734 .addGroup(panelZpravaLayout.createSequentialGroup()
735 .addComponent(odpovedetKomuOdkaz, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
736 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
737 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
738 .addComponent(vstupJmenoOdesilatele, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
739 .addComponent(vstupAdresaOdesilatele, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
740 .addComponent(vstupPredmet, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)))
741 .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelZpravaLayout.createSequentialGroup()
742 .addComponent(jLabel15)
744 .addComponent(vstupFormatHTML, javax.swing.GroupLayout.DEFAULT_SIZE, 81, Short.MAX_VALUE)
745 .addGap(247, 247, 247)))
748 panelZpravaLayout.setVerticalGroup(
749 panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
750 .addGroup(panelZpravaLayout.createSequentialGroup()
752 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
753 .addComponent(jLabel1)
754 .addComponent(vstupPredmet, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
755 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
756 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
757 .addComponent(jLabel2)
758 .addComponent(vstupJmenoOdesilatele, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
759 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
760 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
761 .addComponent(vstupAdresaOdesilatele, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
762 .addComponent(odpovedetKomuOdkaz, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
763 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
764 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 184, Short.MAX_VALUE)
765 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
766 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
767 .addComponent(jLabel15)
768 .addComponent(vstupFormatHTML))
772 odpovedetKomuDialog.setTitle("Adresa pro odpovědi");
773 odpovedetKomuDialog.setModal(true);
775 jLabel18.setText("Jméno");
777 jLabel19.setText("Adresa");
779 jLabel17.setText("<html>\n<p>Pokud bude příjemce na hromadnou zprávu odpovídat,</p>\n<p>odpověď přijde na tuto adresu.</p>\n<p>Pokud tyto údaje nevyplníte, nebo zadáte chybný e-mail,</p>\n<p>budou odpovědi chodit odesílateli.</p>\n</html>");
781 odpovedetKomuHotovo.setText("Hotovo");
782 odpovedetKomuHotovo.addActionListener(new java.awt.event.ActionListener() {
783 public void actionPerformed(java.awt.event.ActionEvent evt) {
784 odpovedetKomuHotovoActionPerformed(evt);
788 javax.swing.GroupLayout odpovedetKomuDialogLayout = new javax.swing.GroupLayout(odpovedetKomuDialog.getContentPane());
789 odpovedetKomuDialog.getContentPane().setLayout(odpovedetKomuDialogLayout);
790 odpovedetKomuDialogLayout.setHorizontalGroup(
791 odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
792 .addGroup(odpovedetKomuDialogLayout.createSequentialGroup()
794 .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
795 .addGroup(odpovedetKomuDialogLayout.createSequentialGroup()
796 .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
797 .addComponent(jLabel19)
798 .addComponent(jLabel18))
799 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
800 .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
801 .addComponent(odpovedetKomuAdresa, javax.swing.GroupLayout.DEFAULT_SIZE, 332, Short.MAX_VALUE)
802 .addComponent(odpovedetKomuJmeno, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 332, Short.MAX_VALUE)))
803 .addComponent(jLabel17, javax.swing.GroupLayout.DEFAULT_SIZE, 382, Short.MAX_VALUE)
804 .addComponent(odpovedetKomuHotovo, javax.swing.GroupLayout.Alignment.TRAILING))
807 odpovedetKomuDialogLayout.setVerticalGroup(
808 odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
809 .addGroup(odpovedetKomuDialogLayout.createSequentialGroup()
811 .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
812 .addComponent(jLabel18)
813 .addComponent(odpovedetKomuJmeno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
814 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
815 .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
816 .addComponent(jLabel19)
817 .addComponent(odpovedetKomuAdresa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
818 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
819 .addComponent(jLabel17)
820 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
821 .addComponent(odpovedetKomuHotovo)
825 setTitle("SuperPošťák");
826 addWindowListener(new java.awt.event.WindowAdapter() {
827 public void windowClosing(java.awt.event.WindowEvent evt) {
828 formWindowClosing(evt);
832 jXHeader1.setDescription("Program pro posílání hromadných zpráv elektronickou poštou.\nNezneužívejte pro rozesílání spamu.");
833 jXHeader1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/xfmail.png"))); // NOI18N
834 jXHeader1.setTitle("SuperPošťák");
836 taskPanel.setBackground(javax.swing.UIManager.getDefaults().getColor("Button.background"));
838 jXTaskPane1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/mail_generic.png"))); // NOI18N
839 jXTaskPane1.setTitle("Hromadná zpráva");
841 lnText.setMnemonic('z');
842 lnText.setText("Text zprávy");
843 lnText.setActionCommand("Zpráva");
844 lnText.addActionListener(new java.awt.event.ActionListener() {
845 public void actionPerformed(java.awt.event.ActionEvent evt) {
846 lnTextActionPerformed(evt);
849 jXTaskPane1.getContentPane().add(lnText);
851 lnPrijemci.setMnemonic('p');
852 lnPrijemci.setText("Příjemci");
853 lnPrijemci.addActionListener(new java.awt.event.ActionListener() {
854 public void actionPerformed(java.awt.event.ActionEvent evt) {
855 lnPrijemciActionPerformed(evt);
858 jXTaskPane1.getContentPane().add(lnPrijemci);
860 lnOdeslat.setMnemonic('o');
861 lnOdeslat.setText("Odeslat");
862 lnOdeslat.addActionListener(new java.awt.event.ActionListener() {
863 public void actionPerformed(java.awt.event.ActionEvent evt) {
864 lnOdeslatActionPerformed(evt);
867 jXTaskPane1.getContentPane().add(lnOdeslat);
869 taskPanel.add(jXTaskPane1);
871 jXTaskPane2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/gear.png"))); // NOI18N
872 jXTaskPane2.setTitle("Nastavení");
874 lnServer.setMnemonic('s');
875 lnServer.setText("Poštovní server");
876 lnServer.addActionListener(new java.awt.event.ActionListener() {
877 public void actionPerformed(java.awt.event.ActionEvent evt) {
878 lnServerActionPerformed(evt);
881 jXTaskPane2.getContentPane().add(lnServer);
883 lnDatabaze.setMnemonic('d');
884 lnDatabaze.setText("Databáze");
885 lnDatabaze.addActionListener(new java.awt.event.ActionListener() {
886 public void actionPerformed(java.awt.event.ActionEvent evt) {
887 lnDatabazeActionPerformed(evt);
890 jXTaskPane2.getContentPane().add(lnDatabaze);
892 lnVychoziPrijemci.setMnemonic('v');
893 lnVychoziPrijemci.setText("Výchozí příjemci");
894 lnVychoziPrijemci.addActionListener(new java.awt.event.ActionListener() {
895 public void actionPerformed(java.awt.event.ActionEvent evt) {
896 lnVychoziPrijemciActionPerformed(evt);
899 jXTaskPane2.getContentPane().add(lnVychoziPrijemci);
901 taskPanel.add(jXTaskPane2);
903 panel.setLayout(new java.awt.CardLayout());
905 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
906 getContentPane().setLayout(layout);
907 layout.setHorizontalGroup(
908 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
909 .addGroup(layout.createSequentialGroup()
910 .addComponent(taskPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREFERRED_SIZE)
911 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
912 .addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE, 342, Short.MAX_VALUE))
913 .addComponent(jXHeader1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 544, Short.MAX_VALUE)
915 layout.setVerticalGroup(
916 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
917 .addGroup(layout.createSequentialGroup()
918 .addComponent(jXHeader1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
919 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
920 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
921 .addComponent(taskPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)
922 .addComponent(panel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)))
926 }// </editor-fold>//GEN-END:initComponents
927 private void vstupPredmetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vstupPredmetActionPerformed
928 }//GEN-LAST:event_vstupPredmetActionPerformed
930 private void lnTextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnTextActionPerformed
931 setPanel(panelZprava);
932 }//GEN-LAST:event_lnTextActionPerformed
934 private void lnPrijemciActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnPrijemciActionPerformed
935 setPanel(panelPrijemci);
936 }//GEN-LAST:event_lnPrijemciActionPerformed
938 private void lnOdeslatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnOdeslatActionPerformed
939 setPanel(panelOdeslat);
940 }//GEN-LAST:event_lnOdeslatActionPerformed
942 private void lnServerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnServerActionPerformed
943 setPanel(panelServer);
944 }//GEN-LAST:event_lnServerActionPerformed
946 private void lnDatabazeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnDatabazeActionPerformed
947 setPanel(panelDatabaze);
948 }//GEN-LAST:event_lnDatabazeActionPerformed
950 private void lnVychoziPrijemciActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnVychoziPrijemciActionPerformed
951 setPanel(panelVychoziPrijemci);
952 }//GEN-LAST:event_lnVychoziPrijemciActionPerformed
954 private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
956 log.log(Level.WARNING, "Ukončuji program.");
957 }//GEN-LAST:event_formWindowClosing
960 * Sestaví zprávu na základě GUI vstupů. Všechno kromě příjemců,
961 * ti se přidají až dodatečně, podle toho,
962 * jestli jde o zkušební nebo skutečné rozesílání.
964 private HromadnaZprava getZprava() throws UnsupportedEncodingException {
965 HromadnaZprava zprava = new HromadnaZprava();
966 zprava.setOdesilatel(new InternetAddress(vstupAdresaOdesilatele.getText(), vstupJmenoOdesilatele.getText()));
967 zprava.setPredmet(vstupPredmet.getText());
968 zprava.setText(vstupZprava.getText());
969 zprava.setFormatHTML(vstupFormatHTML.isSelected());
971 if (Postak.zkontrolujAdresu(odpovedetKomuAdresa.getText())) {
972 InternetAddress komu = new InternetAddress();
973 komu.setPersonal(odpovedetKomuJmeno.getText());
974 komu.setAddress(odpovedetKomuAdresa.getText());
975 zprava.setOdpovedetKomu(komu);
981 /** Všichni příjemci, kterým bude odeslána ostrá zpráva. */
982 private ArrayList<InternetAddressKomu> getPrijemciVsichni() throws SQLException, UnsupportedEncodingException {
983 ArrayList<InternetAddressKomu> vsichni = new ArrayList<InternetAddressKomu>();
984 Collection<InternetAddressKomu> adresyVychozi = nastaveni.getVychoziPrijemci();
985 Collection<InternetAddressKomu> adresySQL = getPrijemciSQL();
986 Collection<InternetAddressKomu> adresyDodatecne = prijemciDodatecni.getAdresy();
988 if (adresyVychozi != null) {
989 vsichni.addAll(adresyVychozi);
991 if (adresySQL != null) {
992 vsichni.addAll(adresySQL);
994 if (adresyDodatecne != null) {
995 vsichni.addAll(adresyDodatecne);
1000 private void rozeslatHromadnouZpravuTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rozeslatHromadnouZpravuTlacitkoActionPerformed
1003 HromadnaZprava zprava = getZprava();
1004 zprava.setPrijemci(getPrijemciVsichni());
1006 int volba = JOptionPane.showOptionDialog(this, "Počet příjemců hromadné zprávy: " + zprava.getPrijemci().size() + "\nPřejete si zprávu odeslat?", "Potvrdit odeslání", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);
1007 if (volba == JOptionPane.YES_OPTION) {
1009 Postak.vypisPrijemce(zprava.getPrijemci());
1010 zobrazInformacniDialog("Odesláno", "Zpráva byla odeslána.\nPočet příjemců: " + zprava.getPrijemci().size(), true);
1012 } catch (Exception e) {
1013 zobrazChybovyDialog("Zprávu se nepodařilo odeslat", e, Level.SEVERE, true);
1015 }//GEN-LAST:event_rozeslatHromadnouZpravuTlacitkoActionPerformed
1017 private void rozeslatZkusebniTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rozeslatZkusebniTlacitkoActionPerformed
1020 HromadnaZprava zprava = getZprava();
1021 zprava.setPrijemci(prijemciZkusebni.getAdresy());
1025 zobrazInformacniDialog("Odesláno", "Zkušební zpráva byla odeslána.\nPočet adresátů: " + zprava.getPrijemci().size(), true);
1026 } catch (Exception e) {
1027 zobrazChybovyDialog("Zkušební zprávu se nepodařilo odeslat", e, Level.SEVERE, true);
1029 }//GEN-LAST:event_rozeslatZkusebniTlacitkoActionPerformed
1031 private void vyzkousetPripojeniTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vyzkousetPripojeniTlacitkoActionPerformed
1033 getSpojeni();//GEN-LAST:event_vyzkousetPripojeniTlacitkoActionPerformed
1034 zobrazInformacniDialog("Připojeno k DB", "Připojení k DB proběhlo úspěšně", false);
1035 } catch (SQLException e) {
1036 zobrazChybovyDialog("Spojení s DB", "Připojení k databázi selhalo", null, e, Level.SEVERE, true);
1040 private void vyzkousetSQLTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vyzkousetSQLTlacitkoActionPerformed
1042 Collection<InternetAddressKomu> adresy = getPrijemciSQL();//GEN-LAST:event_vyzkousetSQLTlacitkoActionPerformed
1043 if (adresy == null) {
1044 zobrazInformacniDialog("SQL dotaz", "Dotaz do databáze neproběhl.\nSQL dotaz je prázdný.", false);
1046 zobrazInformacniDialog("SQL dotaz", "Dotaz do databáze byl úspěšný.\nPočet získaných záznamů: " + adresy.size(), false);
1048 } catch (Exception e) {
1049 zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
1053 private void zobrazitSQLPrijemceTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zobrazitSQLPrijemceTlacitkoActionPerformed
1055 Collection<InternetAddressKomu> adresy = getPrijemciSQL();
1057 ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
1058 zobrazovac.setNastaveni(nastaveni);
1059 zobrazovac.setAdresy(adresy);
1060 zobrazovac.setLocationRelativeTo(this);
1061 zobrazovac.setVisible(true);
1063 } catch (Exception e) {
1064 zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
1066 }//GEN-LAST:event_zobrazitSQLPrijemceTlacitkoActionPerformed
1068 private void zobrazitVsechnyPrijemceTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zobrazitVsechnyPrijemceTlacitkoActionPerformed
1070 Collection<InternetAddressKomu> adresy = getPrijemciVsichni();
1072 ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
1073 zobrazovac.setAdresy(adresy);
1074 zobrazovac.setLocationRelativeTo(this);
1075 zobrazovac.setVisible(true);
1077 } catch (Exception e) {
1078 zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
1080 }//GEN-LAST:event_zobrazitVsechnyPrijemceTlacitkoActionPerformed
1082 private void odpovedetKomuOdkazActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_odpovedetKomuOdkazActionPerformed
1083 odpovedetKomuDialog.pack();
1084 odpovedetKomuDialog.setLocationRelativeTo(this);
1085 odpovedetKomuDialog.setModalityType(ModalityType.APPLICATION_MODAL);
1086 odpovedetKomuDialog.getRootPane().setDefaultButton(odpovedetKomuHotovo);
1087 odpovedetKomuDialog.setVisible(true);
1088 }//GEN-LAST:event_odpovedetKomuOdkazActionPerformed
1090 private void odpovedetKomuHotovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_odpovedetKomuHotovoActionPerformed
1091 odpovedetKomuDialog.setVisible(false);
1093 if (vstupJmenoOdesilatele.getText().isEmpty()) {
1094 vstupJmenoOdesilatele.setText(odpovedetKomuJmeno.getText());
1097 if (vstupAdresaOdesilatele.getText().isEmpty()) {
1098 String[] částiAdresy = odpovedetKomuAdresa.getText().split("@");
1099 if (částiAdresy.length == 2) {
1100 vstupAdresaOdesilatele.setText("noreply@" + částiAdresy[1]);
1103 }//GEN-LAST:event_odpovedetKomuHotovoActionPerformed
1105 /** Provede uživatelem zadaný SQL dotaz a vrátí získané příjemce */
1106 private Collection<InternetAddressKomu> getPrijemciSQL() throws SQLException, UnsupportedEncodingException {
1107 if ("".equals(vstupSQL.getText())) {
1110 return getSpojeni().getAdresy(vstupSQL.getText());
1114 private DataSQL getSpojeni() throws SQLException {
1115 return Data.getSpojeniSQL(vstupDatabaze.getText(), vstupDBjmeno.getText(), vstupDBheslo.getPassword());
1118 /** Obalovací třída, která v průběhu odesílání zobrazuje kurzor s hodinami. */
1119 private void odesli(HromadnaZprava zprava) throws MessagingException {
1120 setCursor(new Cursor(Cursor.WAIT_CURSOR));
1122 postak.setNastaveni(nastaveni);
1123 postak.odesli(zprava);
1125 } catch (MessagingException e) {
1128 setCursor(Cursor.getDefaultCursor());
1132 private void setPanel(JComponent komponenta) {
1134 if (panel.getLayout() instanceof CardLayout) {
1135 CardLayout l = (CardLayout) panel.getLayout();
1136 l.show(panel, komponenta.getName());
1138 log.log(Level.WARNING, "Neplatí: panel.getLayout() instanceof CardLayout");
1143 /** Změní chování tabulátoru v textovém poli - aby se pomocí TABu dalo skočit na další komponentu */
1144 private void vyresitTabFocusProblem(JTextArea textArea) {
1145 textArea.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null);
1146 textArea.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, null);
1149 public JXTaskPaneContainer getTaskPanel() {
1154 * @param args the command line arguments
1156 public static void main(String args[]) {
1157 final boolean ladit = (args != null && args.length > 0 && args[0].equals("ladit"));
1160 //LookAndFeel laf = UIManager.getLookAndFeel();
1162 //laf = new SubstanceLookAndFeel();
1163 //laf = new SubstanceBusinessLookAndFeel();
1164 //laf = new SubstanceBusinessBlueSteelLookAndFeel();
1165 //laf = new SubstanceBusinessBlackSteelLookAndFeel();
1167 UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceBusinessBlueSteelLookAndFeel");
1168 } catch (ClassNotFoundException ex) {
1169 log.log(Level.SEVERE, null, ex);
1170 } catch (InstantiationException ex) {
1171 log.log(Level.SEVERE, null, ex);
1172 } catch (IllegalAccessException ex) {
1173 log.log(Level.SEVERE, null, ex);
1174 } catch (UnsupportedLookAndFeelException ex) {
1175 log.log(Level.SEVERE, null, ex);
1178 java.awt.EventQueue.invokeLater(new Runnable() {
1181 new SuperPostak(ladit, true).setVisible(true);
1185 // Variables declaration - do not modify//GEN-BEGIN:variables
1186 private javax.swing.JLabel jLabel1;
1187 private javax.swing.JLabel jLabel10;
1188 private javax.swing.JLabel jLabel11;
1189 private javax.swing.JLabel jLabel12;
1190 private javax.swing.JLabel jLabel13;
1191 private javax.swing.JLabel jLabel14;
1192 private javax.swing.JLabel jLabel15;
1193 private javax.swing.JLabel jLabel16;
1194 private javax.swing.JLabel jLabel17;
1195 private javax.swing.JLabel jLabel18;
1196 private javax.swing.JLabel jLabel19;
1197 private javax.swing.JLabel jLabel2;
1198 private javax.swing.JLabel jLabel4;
1199 private javax.swing.JLabel jLabel5;
1200 private javax.swing.JLabel jLabel6;
1201 private javax.swing.JLabel jLabel7;
1202 private javax.swing.JLabel jLabel8;
1203 private javax.swing.JLabel jLabel9;
1204 private javax.swing.JPanel jPanel1;
1205 private javax.swing.JScrollPane jScrollPane1;
1206 private javax.swing.JScrollPane jScrollPane3;
1207 private javax.swing.JSeparator jSeparator1;
1208 private javax.swing.JSeparator jSeparator2;
1209 private org.jdesktop.swingx.JXHeader jXHeader1;
1210 private org.jdesktop.swingx.JXTaskPane jXTaskPane1;
1211 private org.jdesktop.swingx.JXTaskPane jXTaskPane2;
1212 private org.jdesktop.swingx.JXHyperlink lnDatabaze;
1213 private org.jdesktop.swingx.JXHyperlink lnOdeslat;
1214 private org.jdesktop.swingx.JXHyperlink lnPrijemci;
1215 private org.jdesktop.swingx.JXHyperlink lnServer;
1216 private org.jdesktop.swingx.JXHyperlink lnText;
1217 private org.jdesktop.swingx.JXHyperlink lnVychoziPrijemci;
1218 private javax.swing.JTextArea napovedaSMTP;
1219 private javax.swing.JScrollPane napovedaSMTPscroll;
1220 private javax.swing.JTextField odpovedetKomuAdresa;
1221 private javax.swing.JDialog odpovedetKomuDialog;
1222 private javax.swing.JButton odpovedetKomuHotovo;
1223 private javax.swing.JTextField odpovedetKomuJmeno;
1224 private org.jdesktop.swingx.JXHyperlink odpovedetKomuOdkaz;
1225 private org.jdesktop.swingx.JXPanel panel;
1226 private org.jdesktop.swingx.JXPanel panelDatabaze;
1227 private org.jdesktop.swingx.JXPanel panelOdeslat;
1228 private org.jdesktop.swingx.JXPanel panelPrijemci;
1229 private org.jdesktop.swingx.JXPanel panelServer;
1230 private org.jdesktop.swingx.JXPanel panelVychoziPrijemci;
1231 private org.jdesktop.swingx.JXPanel panelZprava;
1232 private cz.frantovo.superPostak.PanelPrijemcu prijemciDodatecni;
1233 private cz.frantovo.superPostak.PanelPrijemcu prijemciVychozi;
1234 private cz.frantovo.superPostak.PanelPrijemcu prijemciZkusebni;
1235 private javax.swing.JButton rozeslatHromadnouZpravuTlacitko;
1236 private javax.swing.JButton rozeslatZkusebniTlacitko;
1237 private org.jdesktop.swingx.JXTaskPaneContainer taskPanel;
1238 private javax.swing.JTextField vstupAdresaOdesilatele;
1239 private javax.swing.JPasswordField vstupDBheslo;
1240 private javax.swing.JTextField vstupDBjmeno;
1241 private javax.swing.JTextField vstupDatabaze;
1242 private javax.swing.JCheckBox vstupFormatHTML;
1243 private javax.swing.JTextField vstupJmenoOdesilatele;
1244 private javax.swing.JTextField vstupPredmet;
1245 private javax.swing.JPasswordField vstupSMTPheslo;
1246 private javax.swing.JTextField vstupSMTPjmeno;
1247 private javax.swing.JSpinner vstupSMTPlimitPrijemcu;
1248 private javax.swing.JSpinner vstupSMTPport;
1249 private javax.swing.JTextField vstupSMTPserver;
1250 private javax.swing.JTextArea vstupSQL;
1251 private javax.swing.JTextArea vstupZprava;
1252 private javax.swing.JLabel vystupDBzprava;
1253 private javax.swing.JLabel vystupSQLZprava;
1254 private javax.swing.JButton vyzkousetPripojeniTlacitko;
1255 private javax.swing.JButton vyzkousetSQLTlacitko;
1256 private javax.swing.JButton zobrazitSQLPrijemceTlacitko;
1257 private javax.swing.JButton zobrazitVsechnyPrijemceTlacitko;
1258 // End of variables declaration//GEN-END:variables