⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emailpanel.java

📁 create the email in the server
💻 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 + -