📄 appmainpane.java
字号:
package com.cwq.batchmail.gui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.filechooser.FileFilter;
import com.cwq.batchmail.DetailPacket;
import com.cwq.batchmail.htmltoolbar.HtmlToolBar;
import com.cwq.batchmail.log.Logger;
import com.cwq.batchmail.mail.LocalMailThreads;
import com.cwq.batchmail.mail.MailThreads;
import com.cwq.batchmail.mail.RemoteMailThreads;
import com.cwq.batchmail.util.LoadEmails;
import com.cwq.batchmail.util.LoadProxies;
import javax.swing.JTextArea;
import java.awt.GridBagConstraints;
import java.awt.event.MouseListener;
public class AppMainPane extends JPanel {
private JTabbedPane jTabbedPane = null;
private NormalPanel normalPanel = null;
private SmtpPanel smtpPanel = null;
private ComposePanel composePanel = null;
private JPanel jPanel2 = null;
private JScrollPane jScrollPane = null;
private JTextArea jta_log = null;
private JButton jb_clean = null;
private JButton jb_stop = null;
public AppMainPane() {
this.setLayout(new BorderLayout());
this.add(getJTabbedPane(), BorderLayout.CENTER);
}
private JTabbedPane getJTabbedPane() {
if (jTabbedPane == null) {
jTabbedPane = new JTabbedPane();
jTabbedPane.addTab("基本设置", null, getNormalPanel(), null);
jTabbedPane.addTab("SMTP设置", null, getSmtpPanel(), null);
jTabbedPane.addTab("邮件正文", null, getComposePanel(), null);
jTabbedPane.addTab("运行记录", null, getJPanel2(), null);
/*
MouseListener[] ms = jTabbedPane.getMouseListeners();
for( int c=0; c<ms.length; c++) {
jTabbedPane.removeMouseListener(ms[c]);
}
*/
}
return jTabbedPane;
}
private NormalPanel getNormalPanel() {
if (normalPanel == null) {
normalPanel = new NormalPanel() {
@Override
void alert(String msg) {
javax.swing.JOptionPane.showMessageDialog(jTabbedPane, msg);
}
@Override
void log(String log) {
getJta_log().append(log + "\r\n");
}
@Override
void onNextStep(boolean isContinue) {
if( !isContinue )
jTabbedPane.setSelectedIndex(0);
else
jTabbedPane.setSelectedIndex(1);
}
};
}
return normalPanel;
}
private ComposePanel getComposePanel() {
if(composePanel == null) {
composePanel = new ComposePanel() {
@Override
void alert(String msg) {
// TODO Auto-generated method stub
javax.swing.JOptionPane.showMessageDialog(jTabbedPane, msg);
}
@Override
void alert(String msg, boolean log) {
// TODO Auto-generated method stub
alert(msg);
log(msg);
}
@Override
void log(String log) {
// TODO Auto-generated method stub
getJta_log().append(log + "\r\n");
}
@Override
void start() {
if( !DetailPacket.isOk() ) {
alert("你还未设置好相应的配置,请先按步骤设置好!");
jTabbedPane.setSelectedIndex(0);
return ;
}
// TODO Auto-generated method stub
new Thread() {
public void run() {
onStart();
log("用户可以发送的EMAIL数量最多为: " + DetailPacket.limitEmails + " (个) !\r\n");
if(DetailPacket.limitEmails == 0) {
alert("对不起,可发送EMAIL数量为0,中止。", true);
}
else {
try {
Logger logger = new Logger(new com.cwq.batchmail.log.LogWriter() {
public void write(String line) {
log(line);
// 移动滚动条
//getJScrollPane().getVerticalScrollBar().setValue(getJScrollPane().getVerticalScrollBar().getMaximum());
}
});
MailThreads mt = null;
if( DetailPacket.useSmtpServer )
mt = new LocalMailThreads(logger, DetailPacket.serverDomain, new File(DetailPacket.emailFile), DetailPacket.limitEmails, DetailPacket.sendMail);
else
mt = new RemoteMailThreads(logger, new File(DetailPacket.emailFile), new File(DetailPacket.smtpFile), DetailPacket.limitEmails);
if( DetailPacket.useProxy && !DetailPacket.useSmtpServer ) {
mt.loadProxies(new File(DetailPacket.proxyFile));
}
mt.run(DetailPacket.mailSubject, DetailPacket.mailBody, DetailPacket.threadCount);
log("\r\n.............\r\n");
alert("OK, 群发已经完成!", true);
} catch(IOException ex) {
ex.printStackTrace();
alert("读配置文件的时候出现错误: " + ex.getMessage(), true);
} catch(Exception ex) {
ex.printStackTrace();
alert("错误: " + ex.getMessage(), true);
}
}
onEnd();
}
}.start();
jTabbedPane.setSelectedIndex(3);
}
@Override
void onPrevStep() {
// TODO Auto-generated method stub
jTabbedPane.setSelectedIndex(jTabbedPane.getSelectedIndex() - 1);
}
};
}
return composePanel;
}
private SmtpPanel getSmtpPanel() {
if(smtpPanel == null) {
smtpPanel = new SmtpPanel() {
@Override
void alert(String msg) {
// TODO Auto-generated method stub
javax.swing.JOptionPane.showMessageDialog(jTabbedPane, msg);
}
@Override
void log(String log) {
// TODO Auto-generated method stub
getJta_log().append(log + "\r\n");
}
@Override
void onNextStep(boolean isContinue) {
// TODO Auto-generated method stub
if( !isContinue )
jTabbedPane.setSelectedIndex(1);
else
jTabbedPane.setSelectedIndex(2);
}
@Override
void onPrevStep() {
// TODO Auto-generated method stub
jTabbedPane.setSelectedIndex(jTabbedPane.getSelectedIndex() - 1);
}
};
}
return smtpPanel;
}
private JPanel getJPanel2() {
if (jPanel2 == null) {
jPanel2 = new JPanel();
jPanel2.setLayout(null);
jPanel2.setBackground(Color.white);
jPanel2.add(getJScrollPane(), null);
jPanel2.add(getJb_stop(), null);
jPanel2.add(getJb_clean(), null);
}
return jPanel2;
}
/**
* This method initializes jPanel3
*
* @return javax.swing.JPanel
*/
/**
* This method initializes jb_send
*
* @return javax.swing.JButton
*/
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setBounds(new Rectangle(18, 12, 563, 264));
jScrollPane.setViewportView(getJta_log());
}
return jScrollPane;
}
/**
* This method initializes jta_log
*
* @return javax.swing.JTextArea
*/
private JTextArea getJta_log() {
if (jta_log == null) {
jta_log = new JTextArea();
jta_log.setEditable(false);
jta_log.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
}
public void insertUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
}
public void removeUpdate(DocumentEvent arg0) {
// TODO Auto-generated method stub
}
});
}
return jta_log;
}
/**
* This method initializes jb_clean
*
* @return javax.swing.JButton
*/
private JButton getJb_clean() {
if (jb_clean == null) {
jb_clean = new JButton();
jb_clean.setBounds(new Rectangle(464, 288, 91, 26));
jb_clean.setText("清 空");
jb_clean.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
getJta_log().setText("");
}
});
}
return jb_clean;
}
private JButton getJb_stop() {
if (jb_stop == null) {
jb_stop = new JButton();
jb_stop.setBounds(new Rectangle(360, 288, 91, 26));
jb_stop.setText("停 止");
jb_stop.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
synchronized(jTabbedPane) {
DetailPacket.isRunning = false;
}
}
});
}
return jb_stop;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -