1.1 --- a/java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.java Fri Mar 30 15:35:17 2012 +0200
1.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.java Mon Apr 23 00:24:31 2012 +0200
1.3 @@ -9,6 +9,8 @@
1.4 import java.awt.Cursor;
1.5 import java.awt.Dialog.ModalityType;
1.6 import java.awt.KeyboardFocusManager;
1.7 +import java.awt.event.ActionListener;
1.8 +import java.awt.event.ItemListener;
1.9 import java.beans.XMLDecoder;
1.10 import java.beans.XMLEncoder;
1.11 import java.io.BufferedInputStream;
1.12 @@ -28,19 +30,15 @@
1.13 import java.util.zip.GZIPOutputStream;
1.14 import javax.mail.MessagingException;
1.15 import javax.mail.internet.InternetAddress;
1.16 -import javax.swing.JComponent;
1.17 -import javax.swing.JDialog;
1.18 -import javax.swing.JOptionPane;
1.19 -import javax.swing.JTextArea;
1.20 -import javax.swing.UIManager;
1.21 -import javax.swing.UnsupportedLookAndFeelException;
1.22 +import javax.swing.*;
1.23 +import javax.swing.event.ChangeListener;
1.24 import org.jdesktop.swingx.JXErrorPane;
1.25 import org.jdesktop.swingx.JXTaskPaneContainer;
1.26 import org.jdesktop.swingx.error.ErrorInfo;
1.27
1.28 /**
1.29 *
1.30 - * @author fiki
1.31 + * @author fiki
1.32 */
1.33 public class SuperPostak extends javax.swing.JFrame {
1.34
1.35 @@ -56,6 +54,7 @@
1.36
1.37 /**
1.38 * Creates new form SuperPostak
1.39 + *
1.40 * @param ladit předvyplní testovací hodnoty - zprávu
1.41 * @param exit při zavření okna ukončí program
1.42 */
1.43 @@ -350,8 +349,10 @@
1.44 jScrollPane1 = new javax.swing.JScrollPane();
1.45 vstupZprava = new javax.swing.JTextArea();
1.46 jLabel15 = new javax.swing.JLabel();
1.47 - vstupFormatHTML = new javax.swing.JCheckBox();
1.48 odpovedetKomuOdkaz = new org.jdesktop.swingx.JXHyperlink();
1.49 + formátProstý = new javax.swing.JRadioButton();
1.50 + formátXHTML = new javax.swing.JRadioButton();
1.51 + formátOboje = new javax.swing.JRadioButton();
1.52 odpovedetKomuDialog = new javax.swing.JDialog();
1.53 jLabel18 = new javax.swing.JLabel();
1.54 jLabel19 = new javax.swing.JLabel();
1.55 @@ -359,6 +360,7 @@
1.56 odpovedetKomuJmeno = new javax.swing.JTextField();
1.57 odpovedetKomuAdresa = new javax.swing.JTextField();
1.58 odpovedetKomuHotovo = new javax.swing.JButton();
1.59 + formátSkupina = new javax.swing.ButtonGroup();
1.60 jXHeader1 = new org.jdesktop.swingx.JXHeader();
1.61 taskPanel = new org.jdesktop.swingx.JXTaskPaneContainer();
1.62 jXTaskPane1 = new org.jdesktop.swingx.JXTaskPane();
1.63 @@ -700,10 +702,6 @@
1.64
1.65 jLabel15.setText("Formát zprávy");
1.66
1.67 - vstupFormatHTML.setMnemonic('h');
1.68 - vstupFormatHTML.setText("HTML");
1.69 - vstupFormatHTML.setToolTipText("Při nezaškrtnutí se odešle jako prostý text");
1.70 -
1.71 odpovedetKomuOdkaz.setForeground(javax.swing.UIManager.getDefaults().getColor("windowText"));
1.72 odpovedetKomuOdkaz.setMnemonic('e');
1.73 odpovedetKomuOdkaz.setText("Adresa odesílatele");
1.74 @@ -716,15 +714,35 @@
1.75 }
1.76 });
1.77
1.78 + formátSkupina.add(formátProstý);
1.79 + formátProstý.setSelected(true);
1.80 + formátProstý.setText("Prostý text");
1.81 +
1.82 + formátSkupina.add(formátXHTML);
1.83 + formátXHTML.setText("(X)HTML");
1.84 + formátXHTML.addActionListener(new java.awt.event.ActionListener() {
1.85 + public void actionPerformed(java.awt.event.ActionEvent evt) {
1.86 + formátXHTMLActionPerformed(evt);
1.87 + }
1.88 + });
1.89 +
1.90 + formátSkupina.add(formátOboje);
1.91 + formátOboje.setText("Oboje");
1.92 + formátOboje.addActionListener(new java.awt.event.ActionListener() {
1.93 + public void actionPerformed(java.awt.event.ActionEvent evt) {
1.94 + formátObojeActionPerformed(evt);
1.95 + }
1.96 + });
1.97 +
1.98 javax.swing.GroupLayout panelZpravaLayout = new javax.swing.GroupLayout(panelZprava);
1.99 panelZprava.setLayout(panelZpravaLayout);
1.100 panelZpravaLayout.setHorizontalGroup(
1.101 panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1.102 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelZpravaLayout.createSequentialGroup()
1.103 .addContainerGap()
1.104 - .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
1.105 - .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 438, Short.MAX_VALUE)
1.106 - .addGroup(panelZpravaLayout.createSequentialGroup()
1.107 + .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1.108 + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 461, Short.MAX_VALUE)
1.109 + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelZpravaLayout.createSequentialGroup()
1.110 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
1.111 .addGroup(panelZpravaLayout.createSequentialGroup()
1.112 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1.113 @@ -735,14 +753,18 @@
1.114 .addComponent(odpovedetKomuOdkaz, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1.115 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
1.116 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1.117 - .addComponent(vstupJmenoOdesilatele, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
1.118 - .addComponent(vstupAdresaOdesilatele, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
1.119 - .addComponent(vstupPredmet, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)))
1.120 - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelZpravaLayout.createSequentialGroup()
1.121 + .addComponent(vstupJmenoOdesilatele)
1.122 + .addComponent(vstupAdresaOdesilatele)
1.123 + .addComponent(vstupPredmet)))
1.124 + .addGroup(panelZpravaLayout.createSequentialGroup()
1.125 .addComponent(jLabel15)
1.126 - .addGap(33, 33, 33)
1.127 - .addComponent(vstupFormatHTML, javax.swing.GroupLayout.DEFAULT_SIZE, 81, Short.MAX_VALUE)
1.128 - .addGap(247, 247, 247)))
1.129 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1.130 + .addComponent(formátProstý)
1.131 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1.132 + .addComponent(formátXHTML)
1.133 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1.134 + .addComponent(formátOboje)
1.135 + .addGap(0, 0, Short.MAX_VALUE)))
1.136 .addContainerGap())
1.137 );
1.138 panelZpravaLayout.setVerticalGroup(
1.139 @@ -765,7 +787,9 @@
1.140 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1.141 .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
1.142 .addComponent(jLabel15)
1.143 - .addComponent(vstupFormatHTML))
1.144 + .addComponent(formátProstý)
1.145 + .addComponent(formátXHTML)
1.146 + .addComponent(formátOboje))
1.147 .addContainerGap())
1.148 );
1.149
1.150 @@ -816,7 +840,7 @@
1.151 .addComponent(jLabel19)
1.152 .addComponent(odpovedetKomuAdresa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
1.153 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1.154 - .addComponent(jLabel17)
1.155 + .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1.156 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1.157 .addComponent(odpovedetKomuHotovo)
1.158 .addContainerGap())
1.159 @@ -966,7 +990,17 @@
1.160 zprava.setOdesilatel(new InternetAddress(vstupAdresaOdesilatele.getText(), vstupJmenoOdesilatele.getText()));
1.161 zprava.setPredmet(vstupPredmet.getText());
1.162 zprava.setText(vstupZprava.getText());
1.163 - zprava.setFormatHTML(vstupFormatHTML.isSelected());
1.164 +
1.165 + if (formátProstý.isSelected()) {
1.166 + zprava.setFormatHTML(HromadnaZprava.FORMÁT.PROSTÝ_TEXT);
1.167 + } else if (formátXHTML.isSelected()) {
1.168 + zprava.setFormatHTML(HromadnaZprava.FORMÁT.XHTML);
1.169 + } else if (formátOboje.isSelected()) {
1.170 + zprava.setFormatHTML(HromadnaZprava.FORMÁT.OBOJE);
1.171 + } else {
1.172 + log.severe("Není zvolen formát zprávy → nastavuji: prostý text.");
1.173 + zprava.setFormatHTML(HromadnaZprava.FORMÁT.PROSTÝ_TEXT);
1.174 + }
1.175
1.176 if (Postak.zkontrolujAdresu(odpovedetKomuAdresa.getText())) {
1.177 InternetAddress komu = new InternetAddress();
1.178 @@ -1102,6 +1136,28 @@
1.179 }
1.180 }//GEN-LAST:event_odpovedetKomuHotovoActionPerformed
1.181
1.182 + private void formátXHTMLActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_formátXHTMLActionPerformed
1.183 + nastavVýchozíXHTML();
1.184 + }//GEN-LAST:event_formátXHTMLActionPerformed
1.185 +
1.186 + private void formátObojeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_formátObojeActionPerformed
1.187 + nastavVýchozíXHTML();
1.188 + }//GEN-LAST:event_formátObojeActionPerformed
1.189 +
1.190 + /**
1.191 + * Pokud ještě není vyplněn žádný text, vložíme šablonu.
1.192 + */
1.193 + private void nastavVýchozíXHTML() {
1.194 + if (vstupZprava.getText().isEmpty()) {
1.195 + vstupZprava.setText("<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
1.196 + + "<body>\n\n"
1.197 + + "<p></p>\n"
1.198 + + "<div class=\"patička\"></div>\n\n"
1.199 + + "</body>\n"
1.200 + + "</html>");
1.201 + }
1.202 + }
1.203 +
1.204 /** Provede uživatelem zadaný SQL dotaz a vrátí získané příjemce */
1.205 private Collection<InternetAddressKomu> getPrijemciSQL() throws SQLException, UnsupportedEncodingException {
1.206 if ("".equals(vstupSQL.getText())) {
1.207 @@ -1183,6 +1239,10 @@
1.208 });
1.209 }
1.210 // Variables declaration - do not modify//GEN-BEGIN:variables
1.211 + private javax.swing.JRadioButton formátOboje;
1.212 + private javax.swing.JRadioButton formátProstý;
1.213 + private javax.swing.ButtonGroup formátSkupina;
1.214 + private javax.swing.JRadioButton formátXHTML;
1.215 private javax.swing.JLabel jLabel1;
1.216 private javax.swing.JLabel jLabel10;
1.217 private javax.swing.JLabel jLabel11;
1.218 @@ -1239,7 +1299,6 @@
1.219 private javax.swing.JPasswordField vstupDBheslo;
1.220 private javax.swing.JTextField vstupDBjmeno;
1.221 private javax.swing.JTextField vstupDatabaze;
1.222 - private javax.swing.JCheckBox vstupFormatHTML;
1.223 private javax.swing.JTextField vstupJmenoOdesilatele;
1.224 private javax.swing.JTextField vstupPredmet;
1.225 private javax.swing.JPasswordField vstupSMTPheslo;