root/java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.java @ 15:9175a185d9c0

Revision 15:9175a185d9c0, 64.2 KB (checked in by František Kučera <franta-hg@…>, 12 years ago)

Ukládání seznamu zkušebních příjemců → nemusejí se zadávat pokaždé znovu.

Line 
1package cz.frantovo.superPostak;
2
3import cz.frantovo.postak.HromadnaZprava;
4import cz.frantovo.postak.InternetAddressKomu;
5import cz.frantovo.postak.Nastaveni;
6import cz.frantovo.postak.Postak;
7import java.awt.CardLayout;
8import java.awt.Component;
9import java.awt.Cursor;
10import java.awt.Dialog.ModalityType;
11import java.awt.KeyboardFocusManager;
12import java.beans.XMLDecoder;
13import java.beans.XMLEncoder;
14import java.io.BufferedInputStream;
15import java.io.BufferedOutputStream;
16import java.io.File;
17import java.io.FileInputStream;
18import java.io.FileNotFoundException;
19import java.io.FileOutputStream;
20import java.io.IOException;
21import java.io.UnsupportedEncodingException;
22import java.sql.SQLException;
23import java.util.ArrayList;
24import java.util.Collection;
25import java.util.logging.Level;
26import java.util.logging.Logger;
27import java.util.zip.GZIPInputStream;
28import java.util.zip.GZIPOutputStream;
29import javax.mail.MessagingException;
30import javax.mail.internet.InternetAddress;
31import javax.swing.JComponent;
32import javax.swing.JDialog;
33import javax.swing.JOptionPane;
34import javax.swing.JTextArea;
35import javax.swing.UIManager;
36import javax.swing.UnsupportedLookAndFeelException;
37import org.jdesktop.swingx.JXErrorPane;
38import org.jdesktop.swingx.JXTaskPaneContainer;
39import org.jdesktop.swingx.error.ErrorInfo;
40
41/**
42 *
43 * @author  fiki
44 */
45public class SuperPostak extends javax.swing.JFrame {
46
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);
56
57        /**
58         * Creates new form SuperPostak
59         * @param ladit předvyplní testovací hodnoty - zprávu
60         * @param exit při zavření okna ukončí program
61         */
62        public SuperPostak(boolean ladit, boolean exit) {
63                log.log(Level.WARNING, "Program byl spuštěn.");
64                nactiOvladaceJDBC();
65                vytvorSlozkuProgramu();
66                initComponents();
67
68                nactiNastaveni();
69                ulozNastaveni();
70                nastaveni.setCestaKCertifikatum(getCestaKCertifikatum());
71
72                inicializujCardLayout();
73                setLocationRelativeTo(null);
74
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);
79
80                /** Vyřešíme problém TAB vs. Focus */
81                vyresitTabFocusProblem(vstupSQL);
82                vyresitTabFocusProblem(vstupZprava);
83
84                /** Ladicí hodnoty */
85                if (ladit) {
86                        nastavLadiciHodnoty();
87                }
88
89                if (exit) {
90                        setDefaultCloseOperation(EXIT_ON_CLOSE);
91                }
92
93
94        }
95
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");
103
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());
110
111                setPanel(panelZprava);
112                pack();
113        }
114
115        /**
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.
118         */
119        private void nastavLadiciHodnoty() {
120                try {
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);
130                }
131        }
132
133        /**
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
137         */
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");
144        }
145
146        /**
147         * @param trida ovladač databáze, který se má načíst
148         * @param jmeno název databáze
149         */
150        private void nactiOvladacJDBC(String trida, String jmeno) {
151                try {
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);
156                }
157        }
158
159        /** Vrací plnou cestu k souboru s nastavením */
160        protected static String getCestaKCertifikatum() {
161                return getCestaKeSlozceProgramu() + CERTIFIKATY_SOUBOR;
162        }
163
164        /** Vrací plnou cestu k souboru s nastavením */
165        protected static String getCestaKNastaveni() {
166                return getCestaKeSlozceProgramu() + NASTAVENI_SOUBOR;
167        }
168
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;
172        }
173
174        /** Načte nastavení ze souboru */
175        private void nactiNastaveni() {
176                try {
177                        XMLDecoder d = new XMLDecoder(new BufferedInputStream(new GZIPInputStream(new FileInputStream(getCestaKNastaveni()))));
178                        Object xmlObjekt = d.readObject();
179                        d.close();
180
181                        if (xmlObjekt instanceof Nastaveni) {
182                                nastaveni = (Nastaveni) xmlObjekt;
183                        } else {
184                                nastaveni = new Nastaveni();
185                                log.log(Level.SEVERE, "Nepodařilo se načíst nastavení: není instancí");
186                        }
187
188                        nactiNastaveniGUI();
189
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);
195                }
196        }
197
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());
202                        return true;
203                } else {
204                        return false;
205                }
206        }
207
208        /** Uloží nastavení do souboru */
209        private void ulozNastaveni() {
210                try {
211                        ulozNastaveniGUI();
212
213                        vytvorSlozkuProgramu();
214
215                        XMLEncoder e = new XMLEncoder(new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(getCestaKNastaveni()))));
216                        e.writeObject(nastaveni);
217                        e.close();
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);
223                }
224        }
225
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());
238        }
239
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()));
245                }
246                vstupDBjmeno.setText(nastaveni.getDbJmeno());
247                vstupSMTPlimitPrijemcu.setValue(nastaveni.getLimitZprav());
248                if (nastaveni.getPostovniHeslo() != null) {
249                        vstupSMTPheslo.setText(String.valueOf(nastaveni.getPostovniHeslo()));
250                }
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());
256        }
257
258        protected static void zobrazChybovyDialog(Component vlastnik, String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
259                zobrazChybovyDialog(vlastnik, "Chyba", strucnaZprava, null, vyjimka, zavaznost, logovat);
260        }
261
262        protected static void zobrazInformacniDialog(Component vlastnik, String nadpis, String text, boolean loguj) {
263                JOptionPane.showMessageDialog(vlastnik, text, nadpis, JOptionPane.INFORMATION_MESSAGE);
264                if (loguj) {
265                        log.log(Level.INFO, "{0}: {1}", new Object[]{nadpis, text});
266                }
267        }
268
269        protected static void zobrazChybovyDialog(Component vlastnik, String nadpis, String strucnaZprava, String podrobnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
270                if (logovat) {
271                        log.log(zavaznost, strucnaZprava, vyjimka);
272                }
273
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);
279        }
280
281        private void zobrazChybovyDialog(String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
282                zobrazChybovyDialog(this, strucnaZprava, vyjimka, zavaznost, logovat);
283        }
284
285        private void zobrazInformacniDialog(String nadpis, String text, boolean loguj) {
286                zobrazInformacniDialog(this, nadpis, text, loguj);
287        }
288
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);
291        }
292
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.
297         */
298    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
299    private void initComponents() {
300
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();
373
374        jLabel9.setText("Databáze");
375
376        jLabel10.setText("Jméno");
377
378        jLabel11.setText("Heslo");
379
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);
386            }
387        });
388
389        vystupDBzprava.setText(" ");
390
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()
396                .addContainerGap()
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)))
414                .addContainerGap())
415        );
416        panelDatabazeLayout.setVerticalGroup(
417            panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
418            .addGroup(panelDatabazeLayout.createSequentialGroup()
419                .addContainerGap()
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))
436        );
437
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);
444            }
445        });
446
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);
453            }
454        });
455
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);
461            }
462        });
463
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)
475                .addContainerGap())
476        );
477        jPanel1Layout.setVerticalGroup(
478            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
479            .addGroup(jPanel1Layout.createSequentialGroup()
480                .addContainerGap()
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))
486        );
487
488        jLabel14.setText("Zkušební příjemci");
489
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()
495                .addContainerGap()
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))
501                .addContainerGap())
502        );
503        panelOdeslatLayout.setVerticalGroup(
504            panelOdeslatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
505            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelOdeslatLayout.createSequentialGroup()
506                .addContainerGap()
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)
514                .addContainerGap())
515        );
516
517        jLabel13.setText("SQL dotaz");
518
519        vstupSQL.setColumns(20);
520        vstupSQL.setRows(5);
521        jScrollPane3.setViewportView(vstupSQL);
522
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);
529            }
530        });
531
532        vystupSQLZprava.setText(" ");
533
534        prijemciDodatecni.setToolTipText("Zde můžete dopnit další přijemce.");
535
536        jLabel16.setText("Dodateční příjemci:");
537
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);
543            }
544        });
545
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()
551                .addContainerGap()
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))
564                .addContainerGap())
565        );
566        panelPrijemciLayout.setVerticalGroup(
567            panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
568            .addGroup(panelPrijemciLayout.createSequentialGroup()
569                .addContainerGap()
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)
584                .addContainerGap())
585        );
586
587        jLabel4.setText("SMTP server");
588
589        jLabel5.setText("Port");
590
591        vstupSMTPserver.setText("localhost");
592
593        vstupSMTPport.setValue(25);
594
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);
602
603        jLabel6.setText("Jméno");
604
605        jLabel7.setText("Heslo");
606
607        vstupSMTPlimitPrijemcu.setValue(1000);
608
609        jLabel8.setText("Limit příjemců");
610
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()
616                .addContainerGap()
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))))
633                .addContainerGap())
634        );
635        panelServerLayout.setVerticalGroup(
636            panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
637            .addGroup(panelServerLayout.createSequentialGroup()
638                .addContainerGap()
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)
660                .addContainerGap())
661        );
662
663        jLabel12.setText("Těmto lidem přijde hromadný e-mail vždy (netýká se zkušebního rozeslání zprávy).");
664
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()
670                .addContainerGap()
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))
674                .addContainerGap())
675        );
676        panelVychoziPrijemciLayout.setVerticalGroup(
677            panelVychoziPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
678            .addGroup(panelVychoziPrijemciLayout.createSequentialGroup()
679                .addContainerGap()
680                .addComponent(jLabel12)
681                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
682                .addComponent(prijemciVychozi, javax.swing.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE)
683                .addContainerGap())
684        );
685
686        jLabel1.setLabelFor(vstupPredmet);
687        jLabel1.setText("Předmět");
688
689        vstupPredmet.addActionListener(new java.awt.event.ActionListener() {
690            public void actionPerformed(java.awt.event.ActionEvent evt) {
691                vstupPredmetActionPerformed(evt);
692            }
693        });
694
695        jLabel2.setText("Jméno odesílatele");
696
697        vstupZprava.setColumns(20);
698        vstupZprava.setRows(5);
699        jScrollPane1.setViewportView(vstupZprava);
700
701        jLabel15.setText("Formát zprávy");
702
703        vstupFormatHTML.setMnemonic('h');
704        vstupFormatHTML.setText("HTML");
705        vstupFormatHTML.setToolTipText("Při nezaškrtnutí se odešle jako prostý text");
706
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);
716            }
717        });
718
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()
724                .addContainerGap()
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))
733                                .addGap(17, 17, 17))
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)
743                        .addGap(33, 33, 33)
744                        .addComponent(vstupFormatHTML, javax.swing.GroupLayout.DEFAULT_SIZE, 81, Short.MAX_VALUE)
745                        .addGap(247, 247, 247)))
746                .addContainerGap())
747        );
748        panelZpravaLayout.setVerticalGroup(
749            panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
750            .addGroup(panelZpravaLayout.createSequentialGroup()
751                .addContainerGap()
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))
769                .addContainerGap())
770        );
771
772        odpovedetKomuDialog.setTitle("Adresa pro odpovědi");
773        odpovedetKomuDialog.setModal(true);
774
775        jLabel18.setText("Jméno");
776
777        jLabel19.setText("Adresa");
778
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>");
780
781        odpovedetKomuHotovo.setText("Hotovo");
782        odpovedetKomuHotovo.addActionListener(new java.awt.event.ActionListener() {
783            public void actionPerformed(java.awt.event.ActionEvent evt) {
784                odpovedetKomuHotovoActionPerformed(evt);
785            }
786        });
787
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()
793                .addContainerGap()
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))
805                .addContainerGap())
806        );
807        odpovedetKomuDialogLayout.setVerticalGroup(
808            odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
809            .addGroup(odpovedetKomuDialogLayout.createSequentialGroup()
810                .addContainerGap()
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)
822                .addContainerGap())
823        );
824
825        setTitle("SuperPošťák");
826        addWindowListener(new java.awt.event.WindowAdapter() {
827            public void windowClosing(java.awt.event.WindowEvent evt) {
828                formWindowClosing(evt);
829            }
830        });
831
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");
835
836        taskPanel.setBackground(javax.swing.UIManager.getDefaults().getColor("Button.background"));
837
838        jXTaskPane1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/mail_generic.png"))); // NOI18N
839        jXTaskPane1.setTitle("Hromadná zpráva");
840
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);
847            }
848        });
849        jXTaskPane1.getContentPane().add(lnText);
850
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);
856            }
857        });
858        jXTaskPane1.getContentPane().add(lnPrijemci);
859
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);
865            }
866        });
867        jXTaskPane1.getContentPane().add(lnOdeslat);
868
869        taskPanel.add(jXTaskPane1);
870
871        jXTaskPane2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/gear.png"))); // NOI18N
872        jXTaskPane2.setTitle("Nastavení");
873
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);
879            }
880        });
881        jXTaskPane2.getContentPane().add(lnServer);
882
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);
888            }
889        });
890        jXTaskPane2.getContentPane().add(lnDatabaze);
891
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);
897            }
898        });
899        jXTaskPane2.getContentPane().add(lnVychoziPrijemci);
900
901        taskPanel.add(jXTaskPane2);
902
903        panel.setLayout(new java.awt.CardLayout());
904
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)
914        );
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)))
923        );
924
925        pack();
926    }// </editor-fold>//GEN-END:initComponents
927    private void vstupPredmetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vstupPredmetActionPerformed
928}//GEN-LAST:event_vstupPredmetActionPerformed
929
930    private void lnTextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnTextActionPerformed
931                setPanel(panelZprava);
932    }//GEN-LAST:event_lnTextActionPerformed
933
934    private void lnPrijemciActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnPrijemciActionPerformed
935                setPanel(panelPrijemci);
936    }//GEN-LAST:event_lnPrijemciActionPerformed
937
938    private void lnOdeslatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnOdeslatActionPerformed
939                setPanel(panelOdeslat);
940    }//GEN-LAST:event_lnOdeslatActionPerformed
941
942    private void lnServerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnServerActionPerformed
943                setPanel(panelServer);
944    }//GEN-LAST:event_lnServerActionPerformed
945
946    private void lnDatabazeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnDatabazeActionPerformed
947                setPanel(panelDatabaze);
948    }//GEN-LAST:event_lnDatabazeActionPerformed
949
950    private void lnVychoziPrijemciActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnVychoziPrijemciActionPerformed
951                setPanel(panelVychoziPrijemci);
952    }//GEN-LAST:event_lnVychoziPrijemciActionPerformed
953
954    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
955                ulozNastaveni();
956                log.log(Level.WARNING, "Ukončuji program.");
957    }//GEN-LAST:event_formWindowClosing
958
959        /**
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í.
963         */
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());
970
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);
976                }
977
978                return zprava;
979        }
980
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();
987
988                if (adresyVychozi != null) {
989                        vsichni.addAll(adresyVychozi);
990                }
991                if (adresySQL != null) {
992                        vsichni.addAll(adresySQL);
993                }
994                if (adresyDodatecne != null) {
995                        vsichni.addAll(adresyDodatecne);
996                }
997                return vsichni;
998        }
999
1000    private void rozeslatHromadnouZpravuTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rozeslatHromadnouZpravuTlacitkoActionPerformed
1001                try {
1002                        ulozNastaveniGUI();
1003                        HromadnaZprava zprava = getZprava();
1004                        zprava.setPrijemci(getPrijemciVsichni());
1005
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) {
1008                                odesli(zprava);
1009                                Postak.vypisPrijemce(zprava.getPrijemci());
1010                                zobrazInformacniDialog("Odesláno", "Zpráva byla odeslána.\nPočet příjemců: " + zprava.getPrijemci().size(), true);
1011                        }
1012                } catch (Exception e) {
1013                        zobrazChybovyDialog("Zprávu se nepodařilo odeslat", e, Level.SEVERE, true);
1014                }
1015}//GEN-LAST:event_rozeslatHromadnouZpravuTlacitkoActionPerformed
1016
1017    private void rozeslatZkusebniTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rozeslatZkusebniTlacitkoActionPerformed
1018                try {
1019                        ulozNastaveniGUI();
1020                        HromadnaZprava zprava = getZprava();
1021                        zprava.setPrijemci(prijemciZkusebni.getAdresy());
1022
1023                        odesli(zprava);
1024
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);
1028                }
1029    }//GEN-LAST:event_rozeslatZkusebniTlacitkoActionPerformed
1030
1031    private void vyzkousetPripojeniTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vyzkousetPripojeniTlacitkoActionPerformed
1032                try {
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);
1037                }
1038        }
1039
1040    private void vyzkousetSQLTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vyzkousetSQLTlacitkoActionPerformed
1041                try {
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);
1045                        } else {
1046                                zobrazInformacniDialog("SQL dotaz", "Dotaz do databáze byl úspěšný.\nPočet získaných záznamů: " + adresy.size(), false);
1047                        }
1048                } catch (Exception e) {
1049                        zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
1050                }
1051        }
1052
1053    private void zobrazitSQLPrijemceTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zobrazitSQLPrijemceTlacitkoActionPerformed
1054                try {
1055                        Collection<InternetAddressKomu> adresy = getPrijemciSQL();
1056
1057                        ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
1058                        zobrazovac.setNastaveni(nastaveni);
1059                        zobrazovac.setAdresy(adresy);
1060                        zobrazovac.setLocationRelativeTo(this);
1061                        zobrazovac.setVisible(true);
1062
1063                } catch (Exception e) {
1064                        zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
1065                }
1066    }//GEN-LAST:event_zobrazitSQLPrijemceTlacitkoActionPerformed
1067
1068    private void zobrazitVsechnyPrijemceTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zobrazitVsechnyPrijemceTlacitkoActionPerformed
1069                try {
1070                        Collection<InternetAddressKomu> adresy = getPrijemciVsichni();
1071
1072                        ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
1073                        zobrazovac.setAdresy(adresy);
1074                        zobrazovac.setLocationRelativeTo(this);
1075                        zobrazovac.setVisible(true);
1076
1077                } catch (Exception e) {
1078                        zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
1079                }
1080    }//GEN-LAST:event_zobrazitVsechnyPrijemceTlacitkoActionPerformed
1081
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
1089
1090    private void odpovedetKomuHotovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_odpovedetKomuHotovoActionPerformed
1091                odpovedetKomuDialog.setVisible(false);
1092
1093                if (vstupJmenoOdesilatele.getText().isEmpty()) {
1094                        vstupJmenoOdesilatele.setText(odpovedetKomuJmeno.getText());
1095                }
1096
1097                if (vstupAdresaOdesilatele.getText().isEmpty()) {
1098                        String[] částiAdresy = odpovedetKomuAdresa.getText().split("@");
1099                        if (částiAdresy.length == 2) {
1100                                vstupAdresaOdesilatele.setText("noreply@" + částiAdresy[1]);
1101                        }
1102                }
1103}//GEN-LAST:event_odpovedetKomuHotovoActionPerformed
1104
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())) {
1108                        return null;
1109                } else {
1110                        return getSpojeni().getAdresy(vstupSQL.getText());
1111                }
1112        }
1113
1114        private DataSQL getSpojeni() throws SQLException {
1115                return Data.getSpojeniSQL(vstupDatabaze.getText(), vstupDBjmeno.getText(), vstupDBheslo.getPassword());
1116        }
1117
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));
1121                try {
1122                        postak.setNastaveni(nastaveni);
1123                        postak.odesli(zprava);
1124
1125                } catch (MessagingException e) {
1126                        throw e;
1127                } finally {
1128                        setCursor(Cursor.getDefaultCursor());
1129                }
1130        }
1131
1132        private void setPanel(JComponent komponenta) {
1133
1134                if (panel.getLayout() instanceof CardLayout) {
1135                        CardLayout l = (CardLayout) panel.getLayout();
1136                        l.show(panel, komponenta.getName());
1137                } else {
1138                        log.log(Level.WARNING, "Neplatí: panel.getLayout() instanceof CardLayout");
1139                }
1140
1141        }
1142
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);
1147        }
1148
1149        public JXTaskPaneContainer getTaskPanel() {
1150                return taskPanel;
1151        }
1152
1153        /**
1154         * @param args the command line arguments
1155         */
1156        public static void main(String args[]) {
1157                final boolean ladit = (args != null && args.length > 0 && args[0].equals("ladit"));
1158
1159                try {
1160                        //LookAndFeel laf = UIManager.getLookAndFeel();
1161
1162                        //laf = new SubstanceLookAndFeel();
1163                        //laf = new SubstanceBusinessLookAndFeel();
1164                        //laf = new SubstanceBusinessBlueSteelLookAndFeel();
1165                        //laf = new SubstanceBusinessBlackSteelLookAndFeel();
1166
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);
1176                }
1177
1178                java.awt.EventQueue.invokeLater(new Runnable() {
1179
1180                        public void run() {
1181                                new SuperPostak(ladit, true).setVisible(true);
1182                        }
1183                });
1184        }
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
1259}
Note: See TracBrowser for help on using the browser.