📄 emailpanel.java
字号:
package za.co.halo.SecureCommunications.gui.client2;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import java.net.MalformedURLException;
import java.util.Vector;
import javax.swing.AbstractAction;
import javax.swing.JEditorPane;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.ListCellRenderer;
import javax.swing.WindowConstants;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.HTMLFrameHyperlinkEvent;
import javax.swing.text.html.StyleSheet;
import za.co.halo.SecureCommunications.ClientAccountManager;
import za.co.halo.SecureCommunications.Email;
import za.co.halo.SecureCommunications.util.FormatUtil;
import za.co.halo.SecureCommunications.util.HTMLPane;
/**
* This code was generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* *************************************
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED
* for this machine, so Jigloo or this code cannot be used legally
* for any corporate or commercial purpose.
* *************************************
*/
public class EmailPanel extends javax.swing.JPanel {
private static final long serialVersionUID = 1L;
private JSplitPane splitpane;
private JPanel onPanel;
private JList emailList;
private Vector<Email> emails;
public Client client;
private Email email;
private ViewEmailEditorPane viewEmailPane;
private ClientAccountManager manager;
public static void main(String[] args) {
JFrame frame = new JFrame();
//frame.getContentPane().add(new EmailPanel(null,null));
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public EmailPanel(Vector<Email> email, Client c , ClientAccountManager manager)
{
super();
client = c;
client.emailselected = c.emailselected;
this.manager = manager;
this.emails = email;
initGUI();
}
//public void
private void initGUI() {
try {
//BorderLayout thisLayout = new BorderLayout();
//this.setLayout(thisLayout);
this.setLayout(null);
this.setPreferredSize(new Dimension(630,500));
{
splitpane = new JSplitPane();
splitpane.setBounds(0,0,630,495);
splitpane.setDividerLocation(340);
this.add(splitpane);
//splitpane.set
{
onPanel = new JPanel();
onPanel.setLayout(null);
onPanel.setBounds(0,0,340,495);
onPanel.setMinimumSize(new Dimension(340,300));
splitpane.add(onPanel,JSplitPane.LEFT);
//ListModel emailListModel = new DefaultComboBoxModel(
// new String[] { "Item One", "Item Two" });
emailList = new JList(emails);
emailList.setTransferHandler(new ListTransferHandler());
emailList.setDragEnabled(true);
emailList.setBounds(0,0,540,490);
emailList.setBackground(new Color(15,65,108));
emailList.setCellRenderer(new EmailCellRenderer());
viewEmailPane = new ViewEmailEditorPane();
viewEmailPane.setPreferredSize(new java.awt.Dimension(198, 298));
viewEmailPane.setMinimumSize(new Dimension(285,300));
splitpane.setRightComponent(viewEmailPane);
viewEmailPane.setText("");
MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e/*, ComposeMail composeMail*/) {
if (e.getClickCount() == 2)
{
int index = emailList.locationToIndex(e.getPoint());
email = emails.get(index);
ViewEmailEditorPane view = new ViewEmailEditorPane();
view.setText(email);
JFrame window = new JFrame();
window.setTitle(email.getSender()+" "+email.getSubject());
JMenu menu = new JMenu("File");
menu.add(new JMenuItem(new SaveAsAction(email)));
menu.add(new JMenuItem(new PrintAction(email)));
window.setJMenuBar(new JMenuBar());
window.getJMenuBar().add(menu);
window.setName("");
window.setSize(600,400);
window.setLayout(new BorderLayout());
window.add(view,BorderLayout.CENTER);
window.setVisible(true);
}
if (e.getClickCount() == 1)
{
int index = emailList.locationToIndex(e.getPoint());
if (index >= 0)
{
Email email = emails.get(index);
viewEmailPane.setText(email);
ComposeMail composeMail = new ComposeMail(null, email,client,manager);
client.emailselected = true;
client.forwardMenuButton.setEnabled(true);
client.replyMenuButton.setEnabled(true);
client.replyButton.setEnabled(true);
client.forwardButton.setEnabled(true);
client.setEmail(email);
}
}
}
};
emailList.addMouseListener(mouseListener);
JScrollPane scroll = new JScrollPane(emailList);
scroll.setBounds(0,0,340,495);
onPanel.add(scroll);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
class Hyperactive implements HyperlinkListener {
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
JEditorPane pane = (JEditorPane) e.getSource();
if (e instanceof HTMLFrameHyperlinkEvent) {
HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent)e;
HTMLDocument doc = (HTMLDocument)pane.getDocument();
doc.processHTMLFrameHyperlinkEvent(evt);
} else {
try {
pane.setPage(e.getURL());
} catch (Throwable t) {
t.printStackTrace();
}
}
}
}
}
class EmailCellRenderer implements ListCellRenderer
{
public Component getListCellRendererComponent(JList list, Object object, int index, boolean isSelected, boolean arg4)
{
JPanel panel = new JPanel();
panel.setSize(150,20);
if (object instanceof Email)
{
Email e = (Email)object;
panel.setLayout(new BorderLayout());
panel.add(new SingleListEmailPanel(e, isSelected));
}
else
panel.add(new JLabel("No subject found!"));
return panel;
}
}
class ViewEmailEditorPane extends JEditorPane
{
public ViewEmailEditorPane()
{
HTMLEditorKit kit = new HTMLEditorKit();
StyleSheet style = new StyleSheet();
try {
File f = new File("emailstylesheet.css");
style.importStyleSheet(f.toURL());
}
catch (MalformedURLException e1)
{
e1.printStackTrace();
}
kit.setStyleSheet(style);
setEditorKit(kit);
}
public void setText(Email e)
{
String message = "<html>\n<body>";
message+="<h1><em>"+e.getSubject()+"</em></h1>\n";
message+="<h2><b> From : </b>"+e.getSender()+"</h2>\n";
message+="<h3>Priority: ";
if (e.getPriority() == Email.PRIORITY.LOW)
message+="Low";
else if (e.getPriority() == Email.PRIORITY.MEDIUM)
message+="Normal";
if (e.getPriority() == Email.PRIORITY.HIGH)
message+="High";
message+="</h3>\n";
message+= "<h4><b>To : </b>\n";
for (String s : e.getReceiver())
{
message += "<a href='mailto:"+s+"'>"+s+"</a>; ";
}
message+= "</h4>";
message+= "<h5><b>Cc : </b> ";
for (String s : e.getCC())
{
message += "<a href='mailto:"+s+"'>"+s+"</a>; ";
}
message+= "</h5>";
message+="<hr>";
String message2="";
for (String s : e.getMessage())
{
message2 += s;
}
message+= "<h1>Message </h1><br><h6>"+message2+"</h6>";
message+="</body></html>";
setEditable(false);
addHyperlinkListener(new Hyperactive());
setText(message);
}
}
public JList getList()
{
return emailList;
}
class SaveAsAction extends AbstractAction {
private Email e;
SaveAsAction(Email e) {
super("Save As ...");
this.e = e;
}
public void actionPerformed(ActionEvent arg0) {
System.out.println("pressed Save as");
JFileChooser chooser = new JFileChooser();
chooser.setFileFilter(new EMLExporter());
chooser.showSaveDialog(null);
File f = chooser.getSelectedFile();
FormatUtil format = new FormatUtil();
format.writeEML(e,f.getAbsolutePath());
}
class EMLExporter extends FileFilter
{
public boolean accept(File file) {
String f = file.getName();
if (file.getAbsolutePath().substring(f.lastIndexOf('.')+1).equalsIgnoreCase("eml"))
return true;
return false;
}
public String getDescription() {
return "EML files (.eml)";
}
}
}
class PrintAction extends AbstractAction
{
private Email email;
public PrintAction(Email email)
{
super("Print...");
this.email = email;
}
public String getText(Email e)
{
String message = "<html>\n<body>";
message+="<h1><em>"+e.getSubject()+"</em></h1>\n";
message+="<h2><b> From : </b>"+e.getSender()+"</h2>\n";
message+="<h3>Priority Medium</h3>";
message+= "<h4><b>To : </b>";
for (String s : e.getReceiver())
{
message += "<a href='mailto:"+s+"'>"+s+"</a>; ";
}
message+= "</h4>";
message+= "<h5><b>Cc : </b> ";
for (String s : e.getCC())
{
message += "<a href='mailto:"+s+"'>"+s+"</a>; ";
}
message+= "</h5>";
message+="<hr>";
String message2="";
for (String s : e.getMessage())
{
message2 += s;
}
message+= "<h1>Message </h1><br><h6>"+message2+"</h6>";
message+="</body></html>";
return message;
/* if (e.getPriority() == Email.PRIORITY.LOW)
lowPriotityButton.setSelected(true);
else if (e.getPriority() == Email.PRIORITY.MEDIUM)
normalPriotityButton.setSelected(true);
else if (e.getPriority() == Email.PRIORITY.HIGH)
highPriorityButton.setSelected(true);
return (message);*/
}
public void print()
{
String s = getText(email);
HTMLPane pane = new HTMLPane(s);
PrinterJob printerJob = PrinterJob.getPrinterJob();
PageFormat page = new PageFormat();
Book book = new Book();
page = printerJob.pageDialog(page);
book.append(pane,page);
printerJob.setPageable(book);
if(printerJob.printDialog() == true)
{
try
{
printerJob.print();
}
catch (PrinterException e)
{
e.printStackTrace();
}
}
}
public void actionPerformed(ActionEvent arg0) {
print();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -