java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.java
changeset 17 9cb46ca7e26c
parent 15 9175a185d9c0
     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;