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.awt.event.ActionListener;
13 import java.awt.event.ItemListener;
14 import java.beans.XMLDecoder;
15 import java.beans.XMLEncoder;
16 import java.io.BufferedInputStream;
17 import java.io.BufferedOutputStream;
19 import java.io.FileInputStream;
20 import java.io.FileNotFoundException;
21 import java.io.FileOutputStream;
22 import java.io.IOException;
23 import java.io.UnsupportedEncodingException;
24 import java.sql.SQLException;
25 import java.util.ArrayList;
26 import java.util.Collection;
27 import java.util.logging.Level;
28 import java.util.logging.Logger;
29 import java.util.zip.GZIPInputStream;
30 import java.util.zip.GZIPOutputStream;
31 import javax.mail.MessagingException;
32 import javax.mail.internet.InternetAddress;
34 import javax.swing.event.ChangeListener;
35 import org.jdesktop.swingx.JXErrorPane;
36 import org.jdesktop.swingx.JXTaskPaneContainer;
37 import org.jdesktop.swingx.error.ErrorInfo;
43 public class SuperPostak extends javax.swing.JFrame {
45 /** Soubor, kde je uložené nastavení */
46 private static final String NASTAVENI_SOUBOR = "Nastaveni.xml.gz";
47 private static final String CERTIFIKATY_SOUBOR = "DuveryhodneCertifikaty.keystore";
48 private static final String NASTAVENI_SLOZKA = ".SuperPostak";
49 private static final String DOMACI_ADRESAR = System.getProperty("user.home");
50 private static final Logger log = Logger.getLogger(SuperPostak.class.getName());
51 private static final long serialVersionUID = -7026850569575604048L;
52 private Nastaveni nastaveni = new Nastaveni();
53 private Postak postak = new Postak(nastaveni);
56 * Creates new form SuperPostak
58 * @param ladit předvyplní testovací hodnoty - zprávu
59 * @param exit při zavření okna ukončí program
61 public SuperPostak(boolean ladit, boolean exit) {
62 log.log(Level.WARNING, "Program byl spuštěn.");
64 vytvorSlozkuProgramu();
69 nastaveni.setCestaKCertifikatum(getCestaKCertifikatum());
71 inicializujCardLayout();
72 setLocationRelativeTo(null);
74 /** Kvůli souborovým dialogům – aby se otvírali ve stejné složce jako minule. */
75 prijemciDodatecni.setNastaveni(nastaveni);
76 prijemciVychozi.setNastaveni(nastaveni);
77 prijemciZkusebni.setNastaveni(nastaveni);
79 /** Vyřešíme problém TAB vs. Focus */
80 vyresitTabFocusProblem(vstupSQL);
81 vyresitTabFocusProblem(vstupZprava);
85 nastavLadiciHodnoty();
89 setDefaultCloseOperation(EXIT_ON_CLOSE);
95 private void inicializujCardLayout() {
96 panelDatabaze.setName("panelDatabaze");
97 panelOdeslat.setName("panelOdeslat");
98 panelPrijemci.setName("panelPrijemci");
99 panelServer.setName("panelServer");
100 panelVychoziPrijemci.setName("panelVychoziPrijemci");
101 panelZprava.setName("panelZprava");
103 panel.add(panelDatabaze, panelDatabaze.getName());
104 panel.add(panelOdeslat, panelOdeslat.getName());
105 panel.add(panelPrijemci, panelPrijemci.getName());
106 panel.add(panelServer, panelServer.getName());
107 panel.add(panelVychoziPrijemci, panelVychoziPrijemci.getName());
108 panel.add(panelZprava, panelZprava.getName());
110 setPanel(panelZprava);
115 * Vyplní formuláře (odesílatel, předmět, zpráva, příjemci...) výchozími hodnotami,
116 * aby se dal program testovat jedním kliknutím.
118 private void nastavLadiciHodnoty() {
120 vstupAdresaOdesilatele.setText("SuperPostak@frantovo.cz");
121 vstupJmenoOdesilatele.setText("SuperPošťák");
122 vstupPredmet.setText("Zkušební zpráva od SuperPošťáka");
123 vstupZprava.setText("Toto je obyčejná zkušební zpráva v češtině :-)");
124 ArrayList<InternetAddressKomu> adresy = new ArrayList<InternetAddressKomu>();
125 adresy.add(new InternetAddressKomu("SuperPostak@frantovo.cz", "SuperPošťák"));
126 prijemciZkusebni.setAdresy(adresy);
127 } catch (UnsupportedEncodingException e) {
128 log.log(Level.SEVERE, null, e);
133 * Pokusíme se načíst ovladače pro různé DB a výsledek zapíšeme do logu.
134 * Další ovladače je možné přidat pomocí manifestu v příslušných knihovnách.
135 * viz http://www.sweb.cz/pichlik/archive/2006_08_06_archive.html#115502885631518161
137 private void nactiOvladaceJDBC() {
138 nactiOvladacJDBC("org.postgresql.Driver", "PostgreSQL");
139 nactiOvladacJDBC("com.mysql.jdbc.Driver", "MySQL");
140 nactiOvladacJDBC("net.sourceforge.jtds.jdbc.Driver", "jTDS Sybase a MS SQL");
141 nactiOvladacJDBC("com.sybase.jdbc2.jdbc.SybDriver", "Sybase.com");
142 nactiOvladacJDBC("oracle.jdbc.OracleDriver", "Oracle");
146 * @param trida ovladač databáze, který se má načíst
147 * @param jmeno název databáze
149 private void nactiOvladacJDBC(String trida, String jmeno) {
151 Class.forName(trida);
152 log.log(Level.INFO, "JDBC ovladač pro {0} byl úspěšně načten.", jmeno);
153 } catch (ClassNotFoundException e) {
154 log.log(Level.INFO, "JDBC ovladač pro {0} se nepodařilo načíst.", jmeno);
158 /** Vrací plnou cestu k souboru s nastavením */
159 protected static String getCestaKCertifikatum() {
160 return getCestaKeSlozceProgramu() + CERTIFIKATY_SOUBOR;
163 /** Vrací plnou cestu k souboru s nastavením */
164 protected static String getCestaKNastaveni() {
165 return getCestaKeSlozceProgramu() + NASTAVENI_SOUBOR;
168 /** Vrací plnou cestu ke složce programu (nastavení, certifikáty a logy) */
169 protected static String getCestaKeSlozceProgramu() {
170 return DOMACI_ADRESAR + File.separator + NASTAVENI_SLOZKA + File.separator;
173 /** Načte nastavení ze souboru */
174 private void nactiNastaveni() {
176 XMLDecoder d = new XMLDecoder(new BufferedInputStream(new GZIPInputStream(new FileInputStream(getCestaKNastaveni()))));
177 Object xmlObjekt = d.readObject();
180 if (xmlObjekt instanceof Nastaveni) {
181 nastaveni = (Nastaveni) xmlObjekt;
183 nastaveni = new Nastaveni();
184 log.log(Level.SEVERE, "Nepodařilo se načíst nastavení: není instancí");
189 log.log(Level.INFO, "Nastavení bylo načteno.");
190 } catch (FileNotFoundException ex) {
191 log.log(Level.SEVERE, "Nepodařilo se načíst nastavení: soubor nenalezen", ex);
192 } catch (IOException ex) {
193 log.log(Level.SEVERE, "Nastavení se nepodařilo načíst: I/O.", ex);
197 /** Vytvoří (pokud neexistuje) v domovském adresáři složku, kam se ukládá nastavení a případně logy */
198 private static boolean vytvorSlozkuProgramu() {
199 if (new File(getCestaKeSlozceProgramu()).mkdirs()) {
200 log.log(Level.INFO, "Složka pro nastavení programu byla vytvořena: {0}", getCestaKeSlozceProgramu());
207 /** Uloží nastavení do souboru */
208 private void ulozNastaveni() {
212 vytvorSlozkuProgramu();
214 XMLEncoder e = new XMLEncoder(new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(getCestaKNastaveni()))));
215 e.writeObject(nastaveni);
217 log.log(Level.INFO, "Nastavení bylo uloženo.");
218 } catch (FileNotFoundException ex) {
219 log.log(Level.SEVERE, "Nastavení se nepodařilo uložit: soubor nenalezen.", ex);
220 } catch (IOException ex) {
221 log.log(Level.SEVERE, "Nastavení se nepodařilo uložit: I/O.", ex);
225 /** Posbírá zadané hodnoty z GUI a uloží je do objektu nastaveni */
226 private void ulozNastaveniGUI() {
227 nastaveni.setDatabaze(vstupDatabaze.getText());
228 nastaveni.setDbHeslo(vstupDBheslo.getPassword());
229 nastaveni.setDbJmeno(vstupDBjmeno.getText());
230 nastaveni.setLimitZprav((Integer) vstupSMTPlimitPrijemcu.getValue());
231 nastaveni.setPostovniHeslo(vstupSMTPheslo.getPassword());
232 nastaveni.setPostovniJmeno(vstupSMTPjmeno.getText());
233 nastaveni.setPostovniPort((Integer) vstupSMTPport.getValue());
234 nastaveni.setPostovniServer(vstupSMTPserver.getText());
235 nastaveni.setVychoziPrijemci(prijemciVychozi.getAdresy());
236 nastaveni.setZkušebníPrijemci(prijemciZkusebni.getAdresy());
239 /** Aktualizuje GUI formuláře hodnotami z objektu nastaveni */
240 private void nactiNastaveniGUI() {
241 vstupDatabaze.setText(nastaveni.getDatabaze());
242 if (nastaveni.getDbHeslo() != null) {
243 vstupDBheslo.setText(String.valueOf(nastaveni.getDbHeslo()));
245 vstupDBjmeno.setText(nastaveni.getDbJmeno());
246 vstupSMTPlimitPrijemcu.setValue(nastaveni.getLimitZprav());
247 if (nastaveni.getPostovniHeslo() != null) {
248 vstupSMTPheslo.setText(String.valueOf(nastaveni.getPostovniHeslo()));
250 vstupSMTPjmeno.setText(nastaveni.getPostovniJmeno());
251 vstupSMTPport.setValue(nastaveni.getPostovniPort());
252 vstupSMTPserver.setText(nastaveni.getPostovniServer());
253 prijemciVychozi.setAdresy(nastaveni.getVychoziPrijemci());
254 prijemciZkusebni.setAdresy(nastaveni.getZkušebníPrijemci());
257 protected static void zobrazChybovyDialog(Component vlastnik, String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
258 zobrazChybovyDialog(vlastnik, "Chyba", strucnaZprava, null, vyjimka, zavaznost, logovat);
261 protected static void zobrazInformacniDialog(Component vlastnik, String nadpis, String text, boolean loguj) {
262 JOptionPane.showMessageDialog(vlastnik, text, nadpis, JOptionPane.INFORMATION_MESSAGE);
264 log.log(Level.INFO, "{0}: {1}", new Object[]{nadpis, text});
268 protected static void zobrazChybovyDialog(Component vlastnik, String nadpis, String strucnaZprava, String podrobnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
270 log.log(zavaznost, strucnaZprava, vyjimka);
273 JXErrorPane chybovyPanel = new JXErrorPane();
274 ErrorInfo chybovaInformace = new ErrorInfo(nadpis, strucnaZprava, podrobnaZprava, null, vyjimka, zavaznost, null);
275 chybovyPanel.setErrorInfo(chybovaInformace);
276 JDialog dialog = JXErrorPane.createDialog(vlastnik, chybovyPanel);
277 dialog.setVisible(true);
280 private void zobrazChybovyDialog(String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
281 zobrazChybovyDialog(this, strucnaZprava, vyjimka, zavaznost, logovat);
284 private void zobrazInformacniDialog(String nadpis, String text, boolean loguj) {
285 zobrazInformacniDialog(this, nadpis, text, loguj);
288 private void zobrazChybovyDialog(String nadpis, String strucnaZprava, String podrobnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
289 zobrazChybovyDialog(this, nadpis, strucnaZprava, podrobnaZprava, vyjimka, zavaznost, logovat);
292 /** This method is called from within the constructor to
293 * initialize the form.
294 * WARNING: Do NOT modify this code. The content of this method is
295 * always regenerated by the Form Editor.
297 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
298 private void initComponents() {
300 panelDatabaze = new org.jdesktop.swingx.JXPanel();
301 jLabel9 = new javax.swing.JLabel();
302 vstupDatabaze = new javax.swing.JTextField();
303 jLabel10 = new javax.swing.JLabel();
304 vstupDBjmeno = new javax.swing.JTextField();
305 vstupDBheslo = new javax.swing.JPasswordField();
306 jLabel11 = new javax.swing.JLabel();
307 vyzkousetPripojeniTlacitko = new javax.swing.JButton();
308 vystupDBzprava = new javax.swing.JLabel();
309 panelOdeslat = new org.jdesktop.swingx.JXPanel();
310 jPanel1 = new javax.swing.JPanel();
311 rozeslatZkusebniTlacitko = new javax.swing.JButton();
312 rozeslatHromadnouZpravuTlacitko = new javax.swing.JButton();
313 zobrazitVsechnyPrijemceTlacitko = new javax.swing.JButton();
314 prijemciZkusebni = new cz.frantovo.superPostak.PanelPrijemcu();
315 jSeparator2 = new javax.swing.JSeparator();
316 jLabel14 = new javax.swing.JLabel();
317 panelPrijemci = new org.jdesktop.swingx.JXPanel();
318 jLabel13 = new javax.swing.JLabel();
319 jScrollPane3 = new javax.swing.JScrollPane();
320 vstupSQL = new javax.swing.JTextArea();
321 vyzkousetSQLTlacitko = new javax.swing.JButton();
322 vystupSQLZprava = new javax.swing.JLabel();
323 prijemciDodatecni = new cz.frantovo.superPostak.PanelPrijemcu();
324 jSeparator1 = new javax.swing.JSeparator();
325 jLabel16 = new javax.swing.JLabel();
326 zobrazitSQLPrijemceTlacitko = new javax.swing.JButton();
327 panelServer = new org.jdesktop.swingx.JXPanel();
328 jLabel4 = new javax.swing.JLabel();
329 jLabel5 = new javax.swing.JLabel();
330 vstupSMTPserver = new javax.swing.JTextField();
331 vstupSMTPport = new javax.swing.JSpinner();
332 napovedaSMTPscroll = new javax.swing.JScrollPane();
333 napovedaSMTP = new javax.swing.JTextArea();
334 jLabel6 = new javax.swing.JLabel();
335 vstupSMTPjmeno = new javax.swing.JTextField();
336 vstupSMTPheslo = new javax.swing.JPasswordField();
337 jLabel7 = new javax.swing.JLabel();
338 vstupSMTPlimitPrijemcu = new javax.swing.JSpinner();
339 jLabel8 = new javax.swing.JLabel();
340 panelVychoziPrijemci = new org.jdesktop.swingx.JXPanel();
341 prijemciVychozi = new cz.frantovo.superPostak.PanelPrijemcu();
342 jLabel12 = new javax.swing.JLabel();
343 panelZprava = new org.jdesktop.swingx.JXPanel();
344 jLabel1 = new javax.swing.JLabel();
345 vstupPredmet = new javax.swing.JTextField();
346 jLabel2 = new javax.swing.JLabel();
347 vstupJmenoOdesilatele = new javax.swing.JTextField();
348 vstupAdresaOdesilatele = new javax.swing.JTextField();
349 jScrollPane1 = new javax.swing.JScrollPane();
350 vstupZprava = new javax.swing.JTextArea();
351 jLabel15 = new javax.swing.JLabel();
352 odpovedetKomuOdkaz = new org.jdesktop.swingx.JXHyperlink();
353 formátProstý = new javax.swing.JRadioButton();
354 formátXHTML = new javax.swing.JRadioButton();
355 formátOboje = new javax.swing.JRadioButton();
356 odpovedetKomuDialog = new javax.swing.JDialog();
357 jLabel18 = new javax.swing.JLabel();
358 jLabel19 = new javax.swing.JLabel();
359 jLabel17 = new javax.swing.JLabel();
360 odpovedetKomuJmeno = new javax.swing.JTextField();
361 odpovedetKomuAdresa = new javax.swing.JTextField();
362 odpovedetKomuHotovo = new javax.swing.JButton();
363 formátSkupina = new javax.swing.ButtonGroup();
364 jXHeader1 = new org.jdesktop.swingx.JXHeader();
365 taskPanel = new org.jdesktop.swingx.JXTaskPaneContainer();
366 jXTaskPane1 = new org.jdesktop.swingx.JXTaskPane();
367 lnText = new org.jdesktop.swingx.JXHyperlink();
368 lnPrijemci = new org.jdesktop.swingx.JXHyperlink();
369 lnOdeslat = new org.jdesktop.swingx.JXHyperlink();
370 jXTaskPane2 = new org.jdesktop.swingx.JXTaskPane();
371 lnServer = new org.jdesktop.swingx.JXHyperlink();
372 lnDatabaze = new org.jdesktop.swingx.JXHyperlink();
373 lnVychoziPrijemci = new org.jdesktop.swingx.JXHyperlink();
374 panel = new org.jdesktop.swingx.JXPanel();
376 jLabel9.setText("Databáze");
378 jLabel10.setText("Jméno");
380 jLabel11.setText("Heslo");
382 vyzkousetPripojeniTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/fork.png"))); // NOI18N
383 vyzkousetPripojeniTlacitko.setMnemonic('y');
384 vyzkousetPripojeniTlacitko.setText("Vyzkoušet spojení");
385 vyzkousetPripojeniTlacitko.addActionListener(new java.awt.event.ActionListener() {
386 public void actionPerformed(java.awt.event.ActionEvent evt) {
387 vyzkousetPripojeniTlacitkoActionPerformed(evt);
391 vystupDBzprava.setText(" ");
393 javax.swing.GroupLayout panelDatabazeLayout = new javax.swing.GroupLayout(panelDatabaze);
394 panelDatabaze.setLayout(panelDatabazeLayout);
395 panelDatabazeLayout.setHorizontalGroup(
396 panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
397 .addGroup(panelDatabazeLayout.createSequentialGroup()
399 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
400 .addGroup(panelDatabazeLayout.createSequentialGroup()
401 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
402 .addComponent(jLabel9)
403 .addComponent(jLabel10)
404 .addComponent(jLabel11))
405 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
406 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
407 .addComponent(vstupDatabaze, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE)
408 .addComponent(vstupDBjmeno, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE)
409 .addGroup(panelDatabazeLayout.createSequentialGroup()
410 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
411 .addComponent(vstupDBheslo, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE))))
412 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelDatabazeLayout.createSequentialGroup()
413 .addComponent(vystupDBzprava, javax.swing.GroupLayout.DEFAULT_SIZE, 155, Short.MAX_VALUE)
414 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
415 .addComponent(vyzkousetPripojeniTlacitko)))
418 panelDatabazeLayout.setVerticalGroup(
419 panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
420 .addGroup(panelDatabazeLayout.createSequentialGroup()
422 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
423 .addComponent(jLabel9)
424 .addComponent(vstupDatabaze, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
425 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
426 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
427 .addComponent(jLabel10)
428 .addComponent(vstupDBjmeno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
429 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
430 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
431 .addComponent(jLabel11)
432 .addComponent(vstupDBheslo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
433 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
434 .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
435 .addComponent(vyzkousetPripojeniTlacitko)
436 .addComponent(vystupDBzprava))
437 .addContainerGap(183, Short.MAX_VALUE))
440 rozeslatZkusebniTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/apply.png"))); // NOI18N
441 rozeslatZkusebniTlacitko.setMnemonic('u');
442 rozeslatZkusebniTlacitko.setText("Rozeslat zkušební");
443 rozeslatZkusebniTlacitko.addActionListener(new java.awt.event.ActionListener() {
444 public void actionPerformed(java.awt.event.ActionEvent evt) {
445 rozeslatZkusebniTlacitkoActionPerformed(evt);
449 rozeslatHromadnouZpravuTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/adept_commit.png"))); // NOI18N
450 rozeslatHromadnouZpravuTlacitko.setMnemonic('h');
451 rozeslatHromadnouZpravuTlacitko.setText("Rozeslat hromadnou zprávu");
452 rozeslatHromadnouZpravuTlacitko.addActionListener(new java.awt.event.ActionListener() {
453 public void actionPerformed(java.awt.event.ActionEvent evt) {
454 rozeslatHromadnouZpravuTlacitkoActionPerformed(evt);
458 zobrazitVsechnyPrijemceTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/zobrazit_adresy.png"))); // NOI18N
459 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>");
460 zobrazitVsechnyPrijemceTlacitko.addActionListener(new java.awt.event.ActionListener() {
461 public void actionPerformed(java.awt.event.ActionEvent evt) {
462 zobrazitVsechnyPrijemceTlacitkoActionPerformed(evt);
466 javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
467 jPanel1.setLayout(jPanel1Layout);
468 jPanel1Layout.setHorizontalGroup(
469 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
470 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
471 .addContainerGap(106, Short.MAX_VALUE)
472 .addComponent(rozeslatZkusebniTlacitko)
473 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
474 .addComponent(rozeslatHromadnouZpravuTlacitko)
475 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
476 .addComponent(zobrazitVsechnyPrijemceTlacitko)
479 jPanel1Layout.setVerticalGroup(
480 jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
481 .addGroup(jPanel1Layout.createSequentialGroup()
483 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
484 .addComponent(rozeslatHromadnouZpravuTlacitko)
485 .addComponent(zobrazitVsechnyPrijemceTlacitko)
486 .addComponent(rozeslatZkusebniTlacitko))
487 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
490 jLabel14.setText("Zkušební příjemci");
492 javax.swing.GroupLayout panelOdeslatLayout = new javax.swing.GroupLayout(panelOdeslat);
493 panelOdeslat.setLayout(panelOdeslatLayout);
494 panelOdeslatLayout.setHorizontalGroup(
495 panelOdeslatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
496 .addGroup(panelOdeslatLayout.createSequentialGroup()
498 .addGroup(panelOdeslatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
499 .addComponent(prijemciZkusebni, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE)
500 .addComponent(jSeparator2, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE)
501 .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
502 .addComponent(jLabel14))
505 panelOdeslatLayout.setVerticalGroup(
506 panelOdeslatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
507 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelOdeslatLayout.createSequentialGroup()
509 .addComponent(jLabel14)
510 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
511 .addComponent(prijemciZkusebni, javax.swing.GroupLayout.DEFAULT_SIZE, 153, Short.MAX_VALUE)
512 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
513 .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
514 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
515 .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
519 jLabel13.setText("SQL dotaz");
521 vstupSQL.setColumns(20);
523 jScrollPane3.setViewportView(vstupSQL);
525 vyzkousetSQLTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/fork.png"))); // NOI18N
526 vyzkousetSQLTlacitko.setMnemonic('y');
527 vyzkousetSQLTlacitko.setText("Vyzkoušet");
528 vyzkousetSQLTlacitko.addActionListener(new java.awt.event.ActionListener() {
529 public void actionPerformed(java.awt.event.ActionEvent evt) {
530 vyzkousetSQLTlacitkoActionPerformed(evt);
534 vystupSQLZprava.setText(" ");
536 prijemciDodatecni.setToolTipText("Zde můžete dopnit další přijemce.");
538 jLabel16.setText("Dodateční příjemci:");
540 zobrazitSQLPrijemceTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/zobrazit_adresy.png"))); // NOI18N
541 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>");
542 zobrazitSQLPrijemceTlacitko.addActionListener(new java.awt.event.ActionListener() {
543 public void actionPerformed(java.awt.event.ActionEvent evt) {
544 zobrazitSQLPrijemceTlacitkoActionPerformed(evt);
548 javax.swing.GroupLayout panelPrijemciLayout = new javax.swing.GroupLayout(panelPrijemci);
549 panelPrijemci.setLayout(panelPrijemciLayout);
550 panelPrijemciLayout.setHorizontalGroup(
551 panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
552 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPrijemciLayout.createSequentialGroup()
554 .addGroup(panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
555 .addComponent(prijemciDodatecni, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
556 .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
557 .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
558 .addComponent(jLabel13, javax.swing.GroupLayout.Alignment.LEADING)
559 .addGroup(panelPrijemciLayout.createSequentialGroup()
560 .addComponent(vystupSQLZprava, javax.swing.GroupLayout.DEFAULT_SIZE, 52, Short.MAX_VALUE)
561 .addGap(127, 127, 127)
562 .addComponent(vyzkousetSQLTlacitko)
563 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
564 .addComponent(zobrazitSQLPrijemceTlacitko))
565 .addComponent(jLabel16, javax.swing.GroupLayout.Alignment.LEADING))
568 panelPrijemciLayout.setVerticalGroup(
569 panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
570 .addGroup(panelPrijemciLayout.createSequentialGroup()
572 .addComponent(jLabel13)
573 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
574 .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
575 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
576 .addGroup(panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
577 .addComponent(vystupSQLZprava, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
578 .addComponent(zobrazitSQLPrijemceTlacitko)
579 .addComponent(vyzkousetSQLTlacitko))
580 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
581 .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
582 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
583 .addComponent(jLabel16)
584 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
585 .addComponent(prijemciDodatecni, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
589 jLabel4.setText("SMTP server");
591 jLabel5.setText("Port");
593 vstupSMTPserver.setText("localhost");
595 vstupSMTPport.setValue(25);
597 napovedaSMTP.setColumns(20);
598 napovedaSMTP.setEditable(false);
599 napovedaSMTP.setLineWrap(true);
600 napovedaSMTP.setRows(5);
601 napovedaSMTP.setText("Tip: některé SMTP servery mají omezený seznam počítačů, ze kterých přijímají poštu");
602 napovedaSMTP.setWrapStyleWord(true);
603 napovedaSMTPscroll.setViewportView(napovedaSMTP);
605 jLabel6.setText("Jméno");
607 jLabel7.setText("Heslo");
609 vstupSMTPlimitPrijemcu.setValue(1000);
611 jLabel8.setText("Limit příjemců");
613 javax.swing.GroupLayout panelServerLayout = new javax.swing.GroupLayout(panelServer);
614 panelServer.setLayout(panelServerLayout);
615 panelServerLayout.setHorizontalGroup(
616 panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
617 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelServerLayout.createSequentialGroup()
619 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
620 .addComponent(napovedaSMTPscroll, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE)
621 .addGroup(panelServerLayout.createSequentialGroup()
622 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
623 .addComponent(jLabel4)
624 .addComponent(jLabel6)
625 .addComponent(jLabel5)
626 .addComponent(jLabel7)
627 .addComponent(jLabel8))
628 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
629 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
630 .addComponent(vstupSMTPserver, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
631 .addComponent(vstupSMTPport, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
632 .addComponent(vstupSMTPjmeno, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
633 .addComponent(vstupSMTPheslo, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
634 .addComponent(vstupSMTPlimitPrijemcu, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE))))
637 panelServerLayout.setVerticalGroup(
638 panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
639 .addGroup(panelServerLayout.createSequentialGroup()
641 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
642 .addComponent(jLabel4)
643 .addComponent(vstupSMTPserver, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
644 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
645 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
646 .addComponent(vstupSMTPport, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
647 .addComponent(jLabel5))
648 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
649 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
650 .addComponent(jLabel6)
651 .addComponent(vstupSMTPjmeno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
652 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
653 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
654 .addComponent(vstupSMTPheslo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
655 .addComponent(jLabel7))
656 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
657 .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
658 .addComponent(vstupSMTPlimitPrijemcu, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
659 .addComponent(jLabel8))
660 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
661 .addComponent(napovedaSMTPscroll, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE)
665 jLabel12.setText("Těmto lidem přijde hromadný e-mail vždy (netýká se zkušebního rozeslání zprávy).");
667 javax.swing.GroupLayout panelVychoziPrijemciLayout = new javax.swing.GroupLayout(panelVychoziPrijemci);
668 panelVychoziPrijemci.setLayout(panelVychoziPrijemciLayout);
669 panelVychoziPrijemciLayout.setHorizontalGroup(
670 panelVychoziPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
671 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelVychoziPrijemciLayout.createSequentialGroup()
673 .addGroup(panelVychoziPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
674 .addComponent(prijemciVychozi, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 514, Short.MAX_VALUE)
675 .addComponent(jLabel12, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 514, Short.MAX_VALUE))
678 panelVychoziPrijemciLayout.setVerticalGroup(
679 panelVychoziPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
680 .addGroup(panelVychoziPrijemciLayout.createSequentialGroup()
682 .addComponent(jLabel12)
683 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
684 .addComponent(prijemciVychozi, javax.swing.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE)
688 jLabel1.setLabelFor(vstupPredmet);
689 jLabel1.setText("Předmět");
691 vstupPredmet.addActionListener(new java.awt.event.ActionListener() {
692 public void actionPerformed(java.awt.event.ActionEvent evt) {
693 vstupPredmetActionPerformed(evt);
697 jLabel2.setText("Jméno odesílatele");
699 vstupZprava.setColumns(20);
700 vstupZprava.setRows(5);
701 jScrollPane1.setViewportView(vstupZprava);
703 jLabel15.setText("Formát zprávy");
705 odpovedetKomuOdkaz.setForeground(javax.swing.UIManager.getDefaults().getColor("windowText"));
706 odpovedetKomuOdkaz.setMnemonic('e');
707 odpovedetKomuOdkaz.setText("Adresa odesílatele");
708 odpovedetKomuOdkaz.setToolTipText("<html><p>Klikněte sem pro nastavení adresy,</p><p>na kterou mají chodit odpovědi</p></html>");
709 odpovedetKomuOdkaz.setClickedColor(javax.swing.UIManager.getDefaults().getColor("windowText"));
710 odpovedetKomuOdkaz.setUnclickedColor(javax.swing.UIManager.getDefaults().getColor("windowText"));
711 odpovedetKomuOdkaz.addActionListener(new java.awt.event.ActionListener() {
712 public void actionPerformed(java.awt.event.ActionEvent evt) {
713 odpovedetKomuOdkazActionPerformed(evt);
717 formátSkupina.add(formátProstý);
718 formátProstý.setSelected(true);
719 formátProstý.setText("Prostý text");
721 formátSkupina.add(formátXHTML);
722 formátXHTML.setText("(X)HTML");
723 formátXHTML.addActionListener(new java.awt.event.ActionListener() {
724 public void actionPerformed(java.awt.event.ActionEvent evt) {
725 formátXHTMLActionPerformed(evt);
729 formátSkupina.add(formátOboje);
730 formátOboje.setText("Oboje");
731 formátOboje.addActionListener(new java.awt.event.ActionListener() {
732 public void actionPerformed(java.awt.event.ActionEvent evt) {
733 formátObojeActionPerformed(evt);
737 javax.swing.GroupLayout panelZpravaLayout = new javax.swing.GroupLayout(panelZprava);
738 panelZprava.setLayout(panelZpravaLayout);
739 panelZpravaLayout.setHorizontalGroup(
740 panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
741 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelZpravaLayout.createSequentialGroup()
743 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
744 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 461, Short.MAX_VALUE)
745 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelZpravaLayout.createSequentialGroup()
746 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
747 .addGroup(panelZpravaLayout.createSequentialGroup()
748 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
749 .addComponent(jLabel2)
750 .addComponent(jLabel1))
752 .addGroup(panelZpravaLayout.createSequentialGroup()
753 .addComponent(odpovedetKomuOdkaz, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
754 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
755 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
756 .addComponent(vstupJmenoOdesilatele)
757 .addComponent(vstupAdresaOdesilatele)
758 .addComponent(vstupPredmet)))
759 .addGroup(panelZpravaLayout.createSequentialGroup()
760 .addComponent(jLabel15)
761 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
762 .addComponent(formátProstý)
763 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
764 .addComponent(formátXHTML)
765 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
766 .addComponent(formátOboje)
767 .addGap(0, 0, Short.MAX_VALUE)))
770 panelZpravaLayout.setVerticalGroup(
771 panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
772 .addGroup(panelZpravaLayout.createSequentialGroup()
774 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
775 .addComponent(jLabel1)
776 .addComponent(vstupPredmet, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
777 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
778 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
779 .addComponent(jLabel2)
780 .addComponent(vstupJmenoOdesilatele, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
781 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
782 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
783 .addComponent(vstupAdresaOdesilatele, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
784 .addComponent(odpovedetKomuOdkaz, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
785 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
786 .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 184, Short.MAX_VALUE)
787 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
788 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
789 .addComponent(jLabel15)
790 .addComponent(formátProstý)
791 .addComponent(formátXHTML)
792 .addComponent(formátOboje))
796 odpovedetKomuDialog.setTitle("Adresa pro odpovědi");
797 odpovedetKomuDialog.setModal(true);
799 jLabel18.setText("Jméno");
801 jLabel19.setText("Adresa");
803 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>");
805 odpovedetKomuHotovo.setText("Hotovo");
806 odpovedetKomuHotovo.addActionListener(new java.awt.event.ActionListener() {
807 public void actionPerformed(java.awt.event.ActionEvent evt) {
808 odpovedetKomuHotovoActionPerformed(evt);
812 javax.swing.GroupLayout odpovedetKomuDialogLayout = new javax.swing.GroupLayout(odpovedetKomuDialog.getContentPane());
813 odpovedetKomuDialog.getContentPane().setLayout(odpovedetKomuDialogLayout);
814 odpovedetKomuDialogLayout.setHorizontalGroup(
815 odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
816 .addGroup(odpovedetKomuDialogLayout.createSequentialGroup()
818 .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
819 .addGroup(odpovedetKomuDialogLayout.createSequentialGroup()
820 .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
821 .addComponent(jLabel19)
822 .addComponent(jLabel18))
823 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
824 .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
825 .addComponent(odpovedetKomuAdresa, javax.swing.GroupLayout.DEFAULT_SIZE, 332, Short.MAX_VALUE)
826 .addComponent(odpovedetKomuJmeno, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 332, Short.MAX_VALUE)))
827 .addComponent(jLabel17, javax.swing.GroupLayout.DEFAULT_SIZE, 382, Short.MAX_VALUE)
828 .addComponent(odpovedetKomuHotovo, javax.swing.GroupLayout.Alignment.TRAILING))
831 odpovedetKomuDialogLayout.setVerticalGroup(
832 odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
833 .addGroup(odpovedetKomuDialogLayout.createSequentialGroup()
835 .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
836 .addComponent(jLabel18)
837 .addComponent(odpovedetKomuJmeno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
838 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
839 .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
840 .addComponent(jLabel19)
841 .addComponent(odpovedetKomuAdresa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
842 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
843 .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
844 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
845 .addComponent(odpovedetKomuHotovo)
849 setTitle("SuperPošťák");
850 addWindowListener(new java.awt.event.WindowAdapter() {
851 public void windowClosing(java.awt.event.WindowEvent evt) {
852 formWindowClosing(evt);
856 jXHeader1.setDescription("Program pro posílání hromadných zpráv elektronickou poštou.\nNezneužívejte pro rozesílání spamu.");
857 jXHeader1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/xfmail.png"))); // NOI18N
858 jXHeader1.setTitle("SuperPošťák");
860 taskPanel.setBackground(javax.swing.UIManager.getDefaults().getColor("Button.background"));
862 jXTaskPane1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/mail_generic.png"))); // NOI18N
863 jXTaskPane1.setTitle("Hromadná zpráva");
865 lnText.setMnemonic('z');
866 lnText.setText("Text zprávy");
867 lnText.setActionCommand("Zpráva");
868 lnText.addActionListener(new java.awt.event.ActionListener() {
869 public void actionPerformed(java.awt.event.ActionEvent evt) {
870 lnTextActionPerformed(evt);
873 jXTaskPane1.getContentPane().add(lnText);
875 lnPrijemci.setMnemonic('p');
876 lnPrijemci.setText("Příjemci");
877 lnPrijemci.addActionListener(new java.awt.event.ActionListener() {
878 public void actionPerformed(java.awt.event.ActionEvent evt) {
879 lnPrijemciActionPerformed(evt);
882 jXTaskPane1.getContentPane().add(lnPrijemci);
884 lnOdeslat.setMnemonic('o');
885 lnOdeslat.setText("Odeslat");
886 lnOdeslat.addActionListener(new java.awt.event.ActionListener() {
887 public void actionPerformed(java.awt.event.ActionEvent evt) {
888 lnOdeslatActionPerformed(evt);
891 jXTaskPane1.getContentPane().add(lnOdeslat);
893 taskPanel.add(jXTaskPane1);
895 jXTaskPane2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/gear.png"))); // NOI18N
896 jXTaskPane2.setTitle("Nastavení");
898 lnServer.setMnemonic('s');
899 lnServer.setText("Poštovní server");
900 lnServer.addActionListener(new java.awt.event.ActionListener() {
901 public void actionPerformed(java.awt.event.ActionEvent evt) {
902 lnServerActionPerformed(evt);
905 jXTaskPane2.getContentPane().add(lnServer);
907 lnDatabaze.setMnemonic('d');
908 lnDatabaze.setText("Databáze");
909 lnDatabaze.addActionListener(new java.awt.event.ActionListener() {
910 public void actionPerformed(java.awt.event.ActionEvent evt) {
911 lnDatabazeActionPerformed(evt);
914 jXTaskPane2.getContentPane().add(lnDatabaze);
916 lnVychoziPrijemci.setMnemonic('v');
917 lnVychoziPrijemci.setText("Výchozí příjemci");
918 lnVychoziPrijemci.addActionListener(new java.awt.event.ActionListener() {
919 public void actionPerformed(java.awt.event.ActionEvent evt) {
920 lnVychoziPrijemciActionPerformed(evt);
923 jXTaskPane2.getContentPane().add(lnVychoziPrijemci);
925 taskPanel.add(jXTaskPane2);
927 panel.setLayout(new java.awt.CardLayout());
929 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
930 getContentPane().setLayout(layout);
931 layout.setHorizontalGroup(
932 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
933 .addGroup(layout.createSequentialGroup()
934 .addComponent(taskPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREFERRED_SIZE)
935 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
936 .addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE, 342, Short.MAX_VALUE))
937 .addComponent(jXHeader1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 544, Short.MAX_VALUE)
939 layout.setVerticalGroup(
940 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
941 .addGroup(layout.createSequentialGroup()
942 .addComponent(jXHeader1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
943 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
944 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
945 .addComponent(taskPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)
946 .addComponent(panel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)))
950 }// </editor-fold>//GEN-END:initComponents
951 private void vstupPredmetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vstupPredmetActionPerformed
952 }//GEN-LAST:event_vstupPredmetActionPerformed
954 private void lnTextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnTextActionPerformed
955 setPanel(panelZprava);
956 }//GEN-LAST:event_lnTextActionPerformed
958 private void lnPrijemciActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnPrijemciActionPerformed
959 setPanel(panelPrijemci);
960 }//GEN-LAST:event_lnPrijemciActionPerformed
962 private void lnOdeslatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnOdeslatActionPerformed
963 setPanel(panelOdeslat);
964 }//GEN-LAST:event_lnOdeslatActionPerformed
966 private void lnServerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnServerActionPerformed
967 setPanel(panelServer);
968 }//GEN-LAST:event_lnServerActionPerformed
970 private void lnDatabazeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnDatabazeActionPerformed
971 setPanel(panelDatabaze);
972 }//GEN-LAST:event_lnDatabazeActionPerformed
974 private void lnVychoziPrijemciActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnVychoziPrijemciActionPerformed
975 setPanel(panelVychoziPrijemci);
976 }//GEN-LAST:event_lnVychoziPrijemciActionPerformed
978 private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
980 log.log(Level.WARNING, "Ukončuji program.");
981 }//GEN-LAST:event_formWindowClosing
984 * Sestaví zprávu na základě GUI vstupů. Všechno kromě příjemců,
985 * ti se přidají až dodatečně, podle toho,
986 * jestli jde o zkušební nebo skutečné rozesílání.
988 private HromadnaZprava getZprava() throws UnsupportedEncodingException {
989 HromadnaZprava zprava = new HromadnaZprava();
990 zprava.setOdesilatel(new InternetAddress(vstupAdresaOdesilatele.getText(), vstupJmenoOdesilatele.getText()));
991 zprava.setPredmet(vstupPredmet.getText());
992 zprava.setText(vstupZprava.getText());
994 if (formátProstý.isSelected()) {
995 zprava.setFormatHTML(HromadnaZprava.FORMÁT.PROSTÝ_TEXT);
996 } else if (formátXHTML.isSelected()) {
997 zprava.setFormatHTML(HromadnaZprava.FORMÁT.XHTML);
998 } else if (formátOboje.isSelected()) {
999 zprava.setFormatHTML(HromadnaZprava.FORMÁT.OBOJE);
1001 log.severe("Není zvolen formát zprávy → nastavuji: prostý text.");
1002 zprava.setFormatHTML(HromadnaZprava.FORMÁT.PROSTÝ_TEXT);
1005 if (Postak.zkontrolujAdresu(odpovedetKomuAdresa.getText())) {
1006 InternetAddress komu = new InternetAddress();
1007 komu.setPersonal(odpovedetKomuJmeno.getText());
1008 komu.setAddress(odpovedetKomuAdresa.getText());
1009 zprava.setOdpovedetKomu(komu);
1015 /** Všichni příjemci, kterým bude odeslána ostrá zpráva. */
1016 private ArrayList<InternetAddressKomu> getPrijemciVsichni() throws SQLException, UnsupportedEncodingException {
1017 ArrayList<InternetAddressKomu> vsichni = new ArrayList<InternetAddressKomu>();
1018 Collection<InternetAddressKomu> adresyVychozi = nastaveni.getVychoziPrijemci();
1019 Collection<InternetAddressKomu> adresySQL = getPrijemciSQL();
1020 Collection<InternetAddressKomu> adresyDodatecne = prijemciDodatecni.getAdresy();
1022 if (adresyVychozi != null) {
1023 vsichni.addAll(adresyVychozi);
1025 if (adresySQL != null) {
1026 vsichni.addAll(adresySQL);
1028 if (adresyDodatecne != null) {
1029 vsichni.addAll(adresyDodatecne);
1034 private void rozeslatHromadnouZpravuTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rozeslatHromadnouZpravuTlacitkoActionPerformed
1037 HromadnaZprava zprava = getZprava();
1038 zprava.setPrijemci(getPrijemciVsichni());
1040 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);
1041 if (volba == JOptionPane.YES_OPTION) {
1043 Postak.vypisPrijemce(zprava.getPrijemci());
1044 zobrazInformacniDialog("Odesláno", "Zpráva byla odeslána.\nPočet příjemců: " + zprava.getPrijemci().size(), true);
1046 } catch (Exception e) {
1047 zobrazChybovyDialog("Zprávu se nepodařilo odeslat", e, Level.SEVERE, true);
1049 }//GEN-LAST:event_rozeslatHromadnouZpravuTlacitkoActionPerformed
1051 private void rozeslatZkusebniTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rozeslatZkusebniTlacitkoActionPerformed
1054 HromadnaZprava zprava = getZprava();
1055 zprava.setPrijemci(prijemciZkusebni.getAdresy());
1059 zobrazInformacniDialog("Odesláno", "Zkušební zpráva byla odeslána.\nPočet adresátů: " + zprava.getPrijemci().size(), true);
1060 } catch (Exception e) {
1061 zobrazChybovyDialog("Zkušební zprávu se nepodařilo odeslat", e, Level.SEVERE, true);
1063 }//GEN-LAST:event_rozeslatZkusebniTlacitkoActionPerformed
1065 private void vyzkousetPripojeniTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vyzkousetPripojeniTlacitkoActionPerformed
1067 getSpojeni();//GEN-LAST:event_vyzkousetPripojeniTlacitkoActionPerformed
1068 zobrazInformacniDialog("Připojeno k DB", "Připojení k DB proběhlo úspěšně", false);
1069 } catch (SQLException e) {
1070 zobrazChybovyDialog("Spojení s DB", "Připojení k databázi selhalo", null, e, Level.SEVERE, true);
1074 private void vyzkousetSQLTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vyzkousetSQLTlacitkoActionPerformed
1076 Collection<InternetAddressKomu> adresy = getPrijemciSQL();//GEN-LAST:event_vyzkousetSQLTlacitkoActionPerformed
1077 if (adresy == null) {
1078 zobrazInformacniDialog("SQL dotaz", "Dotaz do databáze neproběhl.\nSQL dotaz je prázdný.", false);
1080 zobrazInformacniDialog("SQL dotaz", "Dotaz do databáze byl úspěšný.\nPočet získaných záznamů: " + adresy.size(), false);
1082 } catch (Exception e) {
1083 zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
1087 private void zobrazitSQLPrijemceTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zobrazitSQLPrijemceTlacitkoActionPerformed
1089 Collection<InternetAddressKomu> adresy = getPrijemciSQL();
1091 ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
1092 zobrazovac.setNastaveni(nastaveni);
1093 zobrazovac.setAdresy(adresy);
1094 zobrazovac.setLocationRelativeTo(this);
1095 zobrazovac.setVisible(true);
1097 } catch (Exception e) {
1098 zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
1100 }//GEN-LAST:event_zobrazitSQLPrijemceTlacitkoActionPerformed
1102 private void zobrazitVsechnyPrijemceTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zobrazitVsechnyPrijemceTlacitkoActionPerformed
1104 Collection<InternetAddressKomu> adresy = getPrijemciVsichni();
1106 ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
1107 zobrazovac.setAdresy(adresy);
1108 zobrazovac.setLocationRelativeTo(this);
1109 zobrazovac.setVisible(true);
1111 } catch (Exception e) {
1112 zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
1114 }//GEN-LAST:event_zobrazitVsechnyPrijemceTlacitkoActionPerformed
1116 private void odpovedetKomuOdkazActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_odpovedetKomuOdkazActionPerformed
1117 odpovedetKomuDialog.pack();
1118 odpovedetKomuDialog.setLocationRelativeTo(this);
1119 odpovedetKomuDialog.setModalityType(ModalityType.APPLICATION_MODAL);
1120 odpovedetKomuDialog.getRootPane().setDefaultButton(odpovedetKomuHotovo);
1121 odpovedetKomuDialog.setVisible(true);
1122 }//GEN-LAST:event_odpovedetKomuOdkazActionPerformed
1124 private void odpovedetKomuHotovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_odpovedetKomuHotovoActionPerformed
1125 odpovedetKomuDialog.setVisible(false);
1127 if (vstupJmenoOdesilatele.getText().isEmpty()) {
1128 vstupJmenoOdesilatele.setText(odpovedetKomuJmeno.getText());
1131 if (vstupAdresaOdesilatele.getText().isEmpty()) {
1132 String[] částiAdresy = odpovedetKomuAdresa.getText().split("@");
1133 if (částiAdresy.length == 2) {
1134 vstupAdresaOdesilatele.setText("noreply@" + částiAdresy[1]);
1137 }//GEN-LAST:event_odpovedetKomuHotovoActionPerformed
1139 private void formátXHTMLActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_formátXHTMLActionPerformed
1140 nastavVýchozíXHTML();
1141 }//GEN-LAST:event_formátXHTMLActionPerformed
1143 private void formátObojeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_formátObojeActionPerformed
1144 nastavVýchozíXHTML();
1145 }//GEN-LAST:event_formátObojeActionPerformed
1148 * Pokud ještě není vyplněn žádný text, vložíme šablonu.
1150 private void nastavVýchozíXHTML() {
1151 if (vstupZprava.getText().isEmpty()) {
1152 vstupZprava.setText("<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
1155 + "<div class=\"patička\"></div>\n\n"
1161 /** Provede uživatelem zadaný SQL dotaz a vrátí získané příjemce */
1162 private Collection<InternetAddressKomu> getPrijemciSQL() throws SQLException, UnsupportedEncodingException {
1163 if ("".equals(vstupSQL.getText())) {
1166 return getSpojeni().getAdresy(vstupSQL.getText());
1170 private DataSQL getSpojeni() throws SQLException {
1171 return Data.getSpojeniSQL(vstupDatabaze.getText(), vstupDBjmeno.getText(), vstupDBheslo.getPassword());
1174 /** Obalovací třída, která v průběhu odesílání zobrazuje kurzor s hodinami. */
1175 private void odesli(HromadnaZprava zprava) throws MessagingException {
1176 setCursor(new Cursor(Cursor.WAIT_CURSOR));
1178 postak.setNastaveni(nastaveni);
1179 postak.odesli(zprava);
1181 } catch (MessagingException e) {
1184 setCursor(Cursor.getDefaultCursor());
1188 private void setPanel(JComponent komponenta) {
1190 if (panel.getLayout() instanceof CardLayout) {
1191 CardLayout l = (CardLayout) panel.getLayout();
1192 l.show(panel, komponenta.getName());
1194 log.log(Level.WARNING, "Neplatí: panel.getLayout() instanceof CardLayout");
1199 /** Změní chování tabulátoru v textovém poli - aby se pomocí TABu dalo skočit na další komponentu */
1200 private void vyresitTabFocusProblem(JTextArea textArea) {
1201 textArea.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null);
1202 textArea.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, null);
1205 public JXTaskPaneContainer getTaskPanel() {
1210 * @param args the command line arguments
1212 public static void main(String args[]) {
1213 final boolean ladit = (args != null && args.length > 0 && args[0].equals("ladit"));
1216 //LookAndFeel laf = UIManager.getLookAndFeel();
1218 //laf = new SubstanceLookAndFeel();
1219 //laf = new SubstanceBusinessLookAndFeel();
1220 //laf = new SubstanceBusinessBlueSteelLookAndFeel();
1221 //laf = new SubstanceBusinessBlackSteelLookAndFeel();
1223 UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceBusinessBlueSteelLookAndFeel");
1224 } catch (ClassNotFoundException ex) {
1225 log.log(Level.SEVERE, null, ex);
1226 } catch (InstantiationException ex) {
1227 log.log(Level.SEVERE, null, ex);
1228 } catch (IllegalAccessException ex) {
1229 log.log(Level.SEVERE, null, ex);
1230 } catch (UnsupportedLookAndFeelException ex) {
1231 log.log(Level.SEVERE, null, ex);
1234 java.awt.EventQueue.invokeLater(new Runnable() {
1237 new SuperPostak(ladit, true).setVisible(true);
1241 // Variables declaration - do not modify//GEN-BEGIN:variables
1242 private javax.swing.JRadioButton formátOboje;
1243 private javax.swing.JRadioButton formátProstý;
1244 private javax.swing.ButtonGroup formátSkupina;
1245 private javax.swing.JRadioButton formátXHTML;
1246 private javax.swing.JLabel jLabel1;
1247 private javax.swing.JLabel jLabel10;
1248 private javax.swing.JLabel jLabel11;
1249 private javax.swing.JLabel jLabel12;
1250 private javax.swing.JLabel jLabel13;
1251 private javax.swing.JLabel jLabel14;
1252 private javax.swing.JLabel jLabel15;
1253 private javax.swing.JLabel jLabel16;
1254 private javax.swing.JLabel jLabel17;
1255 private javax.swing.JLabel jLabel18;
1256 private javax.swing.JLabel jLabel19;
1257 private javax.swing.JLabel jLabel2;
1258 private javax.swing.JLabel jLabel4;
1259 private javax.swing.JLabel jLabel5;
1260 private javax.swing.JLabel jLabel6;
1261 private javax.swing.JLabel jLabel7;
1262 private javax.swing.JLabel jLabel8;
1263 private javax.swing.JLabel jLabel9;
1264 private javax.swing.JPanel jPanel1;
1265 private javax.swing.JScrollPane jScrollPane1;
1266 private javax.swing.JScrollPane jScrollPane3;
1267 private javax.swing.JSeparator jSeparator1;
1268 private javax.swing.JSeparator jSeparator2;
1269 private org.jdesktop.swingx.JXHeader jXHeader1;
1270 private org.jdesktop.swingx.JXTaskPane jXTaskPane1;
1271 private org.jdesktop.swingx.JXTaskPane jXTaskPane2;
1272 private org.jdesktop.swingx.JXHyperlink lnDatabaze;
1273 private org.jdesktop.swingx.JXHyperlink lnOdeslat;
1274 private org.jdesktop.swingx.JXHyperlink lnPrijemci;
1275 private org.jdesktop.swingx.JXHyperlink lnServer;
1276 private org.jdesktop.swingx.JXHyperlink lnText;
1277 private org.jdesktop.swingx.JXHyperlink lnVychoziPrijemci;
1278 private javax.swing.JTextArea napovedaSMTP;
1279 private javax.swing.JScrollPane napovedaSMTPscroll;
1280 private javax.swing.JTextField odpovedetKomuAdresa;
1281 private javax.swing.JDialog odpovedetKomuDialog;
1282 private javax.swing.JButton odpovedetKomuHotovo;
1283 private javax.swing.JTextField odpovedetKomuJmeno;
1284 private org.jdesktop.swingx.JXHyperlink odpovedetKomuOdkaz;
1285 private org.jdesktop.swingx.JXPanel panel;
1286 private org.jdesktop.swingx.JXPanel panelDatabaze;
1287 private org.jdesktop.swingx.JXPanel panelOdeslat;
1288 private org.jdesktop.swingx.JXPanel panelPrijemci;
1289 private org.jdesktop.swingx.JXPanel panelServer;
1290 private org.jdesktop.swingx.JXPanel panelVychoziPrijemci;
1291 private org.jdesktop.swingx.JXPanel panelZprava;
1292 private cz.frantovo.superPostak.PanelPrijemcu prijemciDodatecni;
1293 private cz.frantovo.superPostak.PanelPrijemcu prijemciVychozi;
1294 private cz.frantovo.superPostak.PanelPrijemcu prijemciZkusebni;
1295 private javax.swing.JButton rozeslatHromadnouZpravuTlacitko;
1296 private javax.swing.JButton rozeslatZkusebniTlacitko;
1297 private org.jdesktop.swingx.JXTaskPaneContainer taskPanel;
1298 private javax.swing.JTextField vstupAdresaOdesilatele;
1299 private javax.swing.JPasswordField vstupDBheslo;
1300 private javax.swing.JTextField vstupDBjmeno;
1301 private javax.swing.JTextField vstupDatabaze;
1302 private javax.swing.JTextField vstupJmenoOdesilatele;
1303 private javax.swing.JTextField vstupPredmet;
1304 private javax.swing.JPasswordField vstupSMTPheslo;
1305 private javax.swing.JTextField vstupSMTPjmeno;
1306 private javax.swing.JSpinner vstupSMTPlimitPrijemcu;
1307 private javax.swing.JSpinner vstupSMTPport;
1308 private javax.swing.JTextField vstupSMTPserver;
1309 private javax.swing.JTextArea vstupSQL;
1310 private javax.swing.JTextArea vstupZprava;
1311 private javax.swing.JLabel vystupDBzprava;
1312 private javax.swing.JLabel vystupSQLZprava;
1313 private javax.swing.JButton vyzkousetPripojeniTlacitko;
1314 private javax.swing.JButton vyzkousetSQLTlacitko;
1315 private javax.swing.JButton zobrazitSQLPrijemceTlacitko;
1316 private javax.swing.JButton zobrazitVsechnyPrijemceTlacitko;
1317 // End of variables declaration//GEN-END:variables