OSDN Git Service

Support: [ #25090 ] TLS/SSL SMTP server connection suuport. Ph.1
[mdc/BetaProject.git] / src / org / jent / checksmtp / ApplicationUI.java
index 62c1aa4..f12b51a 100644 (file)
@@ -42,9 +42,11 @@ public class ApplicationUI extends javax.swing.JFrame {
   }
   
   private void resetDisplay() {
+    //reset display data from ApplicationProperties.
     jTextFieldReceiverPort.setText(Integer.toString(ApplicationProperties.getSmtpPort()));
     jTextFieldServerHost.setText(ApplicationProperties.getSmtpServerHost());
     jTextFieldServerPort.setText(Integer.toString(ApplicationProperties.getSmtpServerPort()));
+    jCheckBoxServerSSL.setSelected(ApplicationProperties.getSmtpServerSSL());
     jCheckBoxEnableRemoteConnect.setSelected(ApplicationProperties.getSmtpEnebleRemoteConnect());
     jTextFieldConfirmTimeout.setText(Integer.toString(ApplicationProperties.getConfirmTimeout()));
     
@@ -124,8 +126,9 @@ public class ApplicationUI extends javax.swing.JFrame {
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    */
-  // <editor-fold defaultstate="collapsed" desc=" Generated Code">//GEN-BEGIN:initComponents
+  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   private void initComponents() {
+
     jTabbedPane = new javax.swing.JTabbedPane();
     jPanelMail = new javax.swing.JPanel();
     jLabel1 = new javax.swing.JLabel();
@@ -137,6 +140,7 @@ public class ApplicationUI extends javax.swing.JFrame {
     jCheckBoxEnableRemoteConnect = new javax.swing.JCheckBox();
     jLabel7 = new javax.swing.JLabel();
     jTextFieldConfirmTimeout = new javax.swing.JTextField();
+    jCheckBoxServerSSL = new javax.swing.JCheckBox();
     jPanelLDAP = new javax.swing.JPanel();
     jCheckBoxLdap = new javax.swing.JCheckBox();
     jLabel4 = new javax.swing.JLabel();
@@ -177,6 +181,11 @@ public class ApplicationUI extends javax.swing.JFrame {
     jTextFieldReceiverPort.setToolTipText(bundle.getString("ApplicationUI.jTextFieldReceiverPort.toolTipText")); // NOI18N
     jTextFieldReceiverPort.setInputVerifier(new PortNumberInputVerifier());
     jTextFieldReceiverPort.setMinimumSize(new java.awt.Dimension(44, 19));
+    jTextFieldReceiverPort.addActionListener(new java.awt.event.ActionListener() {
+      public void actionPerformed(java.awt.event.ActionEvent evt) {
+        jTextFieldReceiverPortActionPerformed(evt);
+      }
+    });
 
     jTextFieldServerHost.setText(bundle.getString("ApplicationUI.jTextFieldServerHost.text")); // NOI18N
     jTextFieldServerHost.setToolTipText(bundle.getString("ApplicationUI.jTextFieldServerHost.toolTipText")); // NOI18N
@@ -200,6 +209,14 @@ public class ApplicationUI extends javax.swing.JFrame {
     );
     jTextFieldConfirmTimeout.setMinimumSize(new java.awt.Dimension(1, 19));
 
+    jCheckBoxServerSSL.setText(bundle.getString("ApplicationUI.jCheckBoxServerSSL.text")); // NOI18N
+    jCheckBoxServerSSL.setToolTipText(bundle.getString("ApplicationUI.jCheckBoxServerSSL.toolTipText")); // NOI18N
+    jCheckBoxServerSSL.addChangeListener(new javax.swing.event.ChangeListener() {
+      public void stateChanged(javax.swing.event.ChangeEvent evt) {
+        jCheckBoxServerSSLStateChanged(evt);
+      }
+    });
+
     org.jdesktop.layout.GroupLayout jPanelMailLayout = new org.jdesktop.layout.GroupLayout(jPanelMail);
     jPanelMail.setLayout(jPanelMailLayout);
     jPanelMailLayout.setHorizontalGroup(
@@ -208,26 +225,28 @@ public class ApplicationUI extends javax.swing.JFrame {
         .addContainerGap()
         .add(jPanelMailLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
           .add(jPanelMailLayout.createSequentialGroup()
-            .add(jLabel1)
-            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-            .add(jTextFieldReceiverPort, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 51, Short.MAX_VALUE)
-            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+            .add(jPanelMailLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+              .add(jPanelMailLayout.createSequentialGroup()
+                .add(jLabel7)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(jTextFieldConfirmTimeout, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 30, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+              .add(jPanelMailLayout.createSequentialGroup()
+                .add(jLabel1)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(jTextFieldReceiverPort, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 47, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
+            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 77, Short.MAX_VALUE)
             .add(jCheckBoxEnableRemoteConnect, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 207, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
           .add(jPanelMailLayout.createSequentialGroup()
-            .add(jLabel7)
-            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-            .add(jTextFieldConfirmTimeout, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 237, Short.MAX_VALUE)
-            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))
-          .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanelMailLayout.createSequentialGroup()
             .add(jLabel2)
             .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-            .add(jTextFieldServerHost, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 143, Short.MAX_VALUE)
+            .add(jTextFieldServerHost, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 166, Short.MAX_VALUE)
             .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
             .add(jLabel3)
             .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-            .add(jTextFieldServerPort, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 69, Short.MAX_VALUE)
-            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)))
-        .addContainerGap())
+            .add(jTextFieldServerPort, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 49, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+            .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+            .add(jCheckBoxServerSSL)
+            .addContainerGap())))
     );
 
     jPanelMailLayout.linkSize(new java.awt.Component[] {jLabel1, jLabel2}, org.jdesktop.layout.GroupLayout.HORIZONTAL);
@@ -244,14 +263,16 @@ public class ApplicationUI extends javax.swing.JFrame {
         .add(jPanelMailLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
           .add(jLabel2)
           .add(jTextFieldServerHost, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-          .add(jLabel3)
-          .add(jTextFieldServerPort, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
-        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 27, Short.MAX_VALUE)
+          .add(jCheckBoxServerSSL)
+          .add(jTextFieldServerPort, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 19, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+          .add(jLabel3))
+        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 25, Short.MAX_VALUE)
         .add(jPanelMailLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
           .add(jLabel7)
           .add(jTextFieldConfirmTimeout, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
         .addContainerGap())
     );
+
     jTabbedPane.addTab(bundle.getString("ApplicationUI.jPanelMail.TabConstraints.tabTitle"), null, jPanelMail, bundle.getString("ApplicationUI.jPanelMail.TabConstraints tabToolTip")); // NOI18N
 
     jCheckBoxLdap.setText(bundle.getString("ApplicationUI.jCheckBoxLdap.text")); // NOI18N
@@ -302,10 +323,10 @@ public class ApplicationUI extends javax.swing.JFrame {
               .add(org.jdesktop.layout.GroupLayout.TRAILING, jLabel4))
             .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
             .add(jPanelLDAPLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-              .add(jTextFieldAttribute, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 288, Short.MAX_VALUE)
-              .add(jTextFieldBaseDn, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 288, Short.MAX_VALUE)
+              .add(jTextFieldAttribute, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 353, Short.MAX_VALUE)
+              .add(jTextFieldBaseDn, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 353, Short.MAX_VALUE)
               .add(jPanelLDAPLayout.createSequentialGroup()
-                .add(jTextFieldProviderUrl, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 205, Short.MAX_VALUE)
+                .add(jTextFieldProviderUrl, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE)
                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                 .add(jCheckBoxIsSjis))))
           .add(jPanelLDAPLayout.createSequentialGroup()
@@ -336,6 +357,7 @@ public class ApplicationUI extends javax.swing.JFrame {
           .add(jTextFieldAttribute, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
         .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
     );
+
     jTabbedPane.addTab(bundle.getString("ApplicationUI.jPanelLDAP.TabConstraints.tabTitle"), null, jPanelLDAP, bundle.getString("ApplicationUI.jPanelLDAP.TabConstraints tabToolTip")); // NOI18N
 
     jLabelProgramName.setFont(new java.awt.Font("Dialog", 1, 18));
@@ -361,7 +383,7 @@ public class ApplicationUI extends javax.swing.JFrame {
           .add(jPanelAboutLayout.createSequentialGroup()
             .add(55, 55, 55)
             .add(jLabelSfURL)))
-        .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+        .addContainerGap(38, Short.MAX_VALUE))
     );
     jPanelAboutLayout.setVerticalGroup(
       jPanelAboutLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
@@ -374,6 +396,7 @@ public class ApplicationUI extends javax.swing.JFrame {
         .add(jLabelSfURL)
         .addContainerGap(57, Short.MAX_VALUE))
     );
+
     jTabbedPane.addTab(bundle.getString("ApplicationUI.jPanelAbout.TabConstraints.tabTitle"), null, jPanelAbout, bundle.getString("ApplicationUI.jPanelAbout.TabConstraints tabToolTip")); // NOI18N
 
     jButtonOK.setText(bundle.getString("ApplicationUI.jButtonOK.text")); // NOI18N
@@ -407,12 +430,12 @@ public class ApplicationUI extends javax.swing.JFrame {
       .add(layout.createSequentialGroup()
         .addContainerGap()
         .add(jButtonQuit)
-        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 133, Short.MAX_VALUE)
+        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 190, Short.MAX_VALUE)
         .add(jButtonOK)
         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
         .add(jButtonCancel)
         .addContainerGap())
-      .add(jTabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 388, Short.MAX_VALUE)
+      .add(jTabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 463, Short.MAX_VALUE)
     );
 
     layout.linkSize(new java.awt.Component[] {jButtonCancel, jButtonOK, jButtonQuit}, org.jdesktop.layout.GroupLayout.HORIZONTAL);
@@ -428,6 +451,7 @@ public class ApplicationUI extends javax.swing.JFrame {
           .add(jButtonOK))
         .addContainerGap())
     );
+
     pack();
   }// </editor-fold>//GEN-END:initComponents
   
@@ -449,6 +473,8 @@ public class ApplicationUI extends javax.swing.JFrame {
       jTextFieldReceiverPort.setBackground(Color.PINK);
       throw ex;
     }
+    boolean enableRemoteConnect = jCheckBoxEnableRemoteConnect.isSelected();
+
     String serverHost = jTextFieldServerHost.getText();
     int serverPort;
     try {
@@ -458,7 +484,8 @@ public class ApplicationUI extends javax.swing.JFrame {
       jTextFieldServerPort.setBackground(Color.PINK);
       throw ex;
     }
-    boolean enableRemoteConnect = jCheckBoxEnableRemoteConnect.isSelected();
+    boolean serverSSL = jCheckBoxServerSSL.isSelected();
+
     int confirmTimeout;
     try {
       confirmTimeout = Integer.parseInt(jTextFieldConfirmTimeout.getText());
@@ -475,11 +502,11 @@ public class ApplicationUI extends javax.swing.JFrame {
     boolean isSjis = jCheckBoxIsSjis.isSelected();
     
     if ( port != ApplicationProperties.getSmtpPort()
+    || enableRemoteConnect != ApplicationProperties.getSmtpEnebleRemoteConnect()
     || !serverHost.equals(ApplicationProperties.getSmtpServerHost())
     || serverPort != ApplicationProperties.getSmtpServerPort()
-    || enableRemoteConnect != ApplicationProperties.getSmtpEnebleRemoteConnect()
-    || confirmTimeout != ApplicationProperties.getConfirmTimeout()
-        
+    || serverSSL != ApplicationProperties.getSmtpServerSSL()
+    || confirmTimeout != ApplicationProperties.getConfirmTimeout()    
     || enableLdap != ApplicationProperties.getLdap()
     || !ldapUrl.equals(ApplicationProperties.getLdapProviderURL())
     || !rootDn.equals(ApplicationProperties.getLdapRoot())
@@ -489,9 +516,12 @@ public class ApplicationUI extends javax.swing.JFrame {
     ) {
       // When modify data, save properries file.
       ApplicationProperties.setSmtpPort(port);
+      ApplicationProperties.setSmtpEnableRemoteConnect(enableRemoteConnect);
+
       ApplicationProperties.setSmtpServerHost(serverHost);
       ApplicationProperties.setSmtpServerPort(serverPort);
-      ApplicationProperties.setSmtpEnableRemoteConnect(enableRemoteConnect);
+      ApplicationProperties.setSmtpServerSSL(serverSSL);
+
       ApplicationProperties.setConfirmTimeout(confirmTimeout);
       
       ApplicationProperties.setLdap(enableLdap);
@@ -551,6 +581,21 @@ public class ApplicationUI extends javax.swing.JFrame {
     }
     iconified();
   }//GEN-LAST:event_jButtonCancelActionPerformed
+
+  private void jCheckBoxServerSSLStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jCheckBoxServerSSLStateChanged
+    // takuya-o
+    boolean check = jCheckBoxServerSSL.isSelected();
+    // smtp(port 25) and ssmpt(port 465) switch.   cf. TLS/STARTTLS port 587
+    if ( check == true && jTextFieldServerPort.getText().equals("25") ) {
+      jTextFieldServerPort.setText("465");
+    }else if ( check == false && jTextFieldServerPort.getText().equals("465") ) {
+      jTextFieldServerPort.setText("25");
+    }
+  }//GEN-LAST:event_jCheckBoxServerSSLStateChanged
+
+  private void jTextFieldReceiverPortActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldReceiverPortActionPerformed
+    // TODO add your handling code here:
+  }//GEN-LAST:event_jTextFieldReceiverPortActionPerformed
   
   private boolean isModifiedPotition() {
     int x = 0;
@@ -720,6 +765,7 @@ public class ApplicationUI extends javax.swing.JFrame {
   private javax.swing.JCheckBox jCheckBoxEnableRemoteConnect;
   private javax.swing.JCheckBox jCheckBoxIsSjis;
   private javax.swing.JCheckBox jCheckBoxLdap;
+  private javax.swing.JCheckBox jCheckBoxServerSSL;
   private javax.swing.JLabel jLabel1;
   private javax.swing.JLabel jLabel2;
   private javax.swing.JLabel jLabel3;