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

📄 inboxlist.java

📁 client server email system
💻 JAVA
字号:
//IMPORT LIBRARIES NEEDED FOR GUI
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
//IMPORT LIBRARIES NEEDED FOR OPERATIONS
import java.util.*;
import java.io.*;

public class InboxList extends JFrame implements ActionListener
{
	//DECLARE PANELS NEEDED FOR GUI
	private JPanel buttonPanel;
	private JPanel listPanel;
	//DECLARE BUTTONS NEEDED FOR GUI
	private JButton read;
	private JButton delete;
	private JButton unRead;
	private JButton unDelete;
	//DECLARE LABELS NEEDED FOR GUI
	private JLabel title;
	//DECLARE FIELDS NEEDED FOR GUI
	private JList emailList;
	//DECLARE CONTAINER NEEDED FOR GUI
	private Container pane;
	//DECLARE VECTOR AND OUTPUT STREAM FOR USER
	private Vector mailDescriptor;
	private int selectedMailNumber;
	private ObjectInputStream fileIn;

	//////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////
	/////	PREFERRED SETTINGS FOR GUI STARTUP	//////////////////
	///InboxList inbox = new InboxList();
	///Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
	///final int HEIGHT = 550;
	///final int WIDTH = 600;
	///inbox.setBounds(((screenSize.width / 2) - (WIDTH / 2)),
	/// 			   ((screenSize.height / 2) - (HEIGHT / 2)), WIDTH, HEIGHT);
	///inbox.setVisible(true);
	//////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////

	//CONSTRUCTOR FOR GUI
	public InboxList()
	{
		//ADD WINDOW LISTENER TO DETECT CLOSING APPLICATION
		addWindowListener(
			new WindowAdapter()
			{
				public void windowClosing(WindowEvent e)
				{
					//OPEN NEW MAIN MENU ON CLOSING
					MainFunctionMenuGUI mainFunctionMenuGUI = new MainFunctionMenuGUI();
					Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
					final int HEIGHT = 350;
					final int WIDTH = 500;
					mainFunctionMenuGUI.setBounds(((screenSize.width / 2) - (WIDTH / 2)),
												  ((screenSize.height / 2) - (HEIGHT / 2)), WIDTH, HEIGHT);
					mainFunctionMenuGUI.setVisible(true);
				}
			}
		);
		//SET TITLE OF GUI
		setTitle("Inbox");
		//INITIALISE CONTENT PANE AND SET UP LAYOUT
		pane = getContentPane();
		pane.setLayout(new BorderLayout());
		//INITIALISE PANELS FOR GUI
		buttonPanel = new JPanel();
		listPanel = new JPanel();
		//INITIALISE BUTTONS FOR GUI
		read = new JButton("Read Email");
		delete = new JButton("Delete Email");
		unRead = new JButton("Unread Email");
		unDelete = new JButton("Undelete Emails");
		//INITIALISE LABELS FOR GUI
		title = new JLabel("Recieved Emails");
		//INITIALISE FIELDS FOR GUI
		mailDescriptor = new Vector();
		selectedMailNumber = 0;
		//INITIALISE NEW MAIL LIST FOR GUI
		emailList = new JList();
		emailList.setVisibleRowCount(33);
		emailList.setFixedCellWidth(320);
		emailList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		refreshListContents();
		//SET UP LAYOUTS FOR PANELS
		buttonPanel.setLayout(new GridLayout(1,4));
		listPanel.setLayout(new BorderLayout());
		//ADD GUI COMPONENTS TO PANELS
		buttonPanel.add(read);
		buttonPanel.add(delete);
		buttonPanel.add(unRead);
		buttonPanel.add(unDelete);
		listPanel.add(title, BorderLayout.NORTH);
		listPanel.add(new JScrollPane(emailList), BorderLayout.CENTER);
		//ADD PANELS TO CONTENT PANE OF GUI
		pane.add(listPanel, BorderLayout.CENTER);
		pane.add(buttonPanel, BorderLayout.SOUTH);
		//ADD ACTION LISTENER FOR BUTTONS
		read.addActionListener(this);
		delete.addActionListener(this);
		unRead.addActionListener(this);
		unDelete.addActionListener(this);
		ListSelectionHandler handler = new ListSelectionHandler();
		emailList.addListSelectionListener(handler);
	}

	//LIST SELECTION HANDLER FOR JLIST
	private class ListSelectionHandler implements ListSelectionListener
	{
		public void valueChanged(ListSelectionEvent e)
		{
			//GET NUMBER OF MAIL SELECTED FROM LIST
			selectedMailNumber = emailList.getSelectedIndex();
		}
	}

	//ACTION LISTENER FOR MAIL BUTTONS
	public void actionPerformed(ActionEvent e)
	{
		//CHECK IF THERE IS MAIL TO SELECT
		if(EMailClient.inboxSize() > 0 || e.getSource() == unDelete)
		{
			if(e.getSource() == read)
			{
				//GET THE MAIL SELECTED BY USER
				Email selectedMail = EMailClient.getMail(selectedMailNumber);
				//DELETE MAIL FROM VECTOR
				EMailClient.deleteMail(selectedMailNumber);
				//UPDATE READ PROPERTY OF MAIL
				selectedMail.setRead(true);
				//ADD MAIL BACK TO VECTOR
				EMailClient.addMail(selectedMail);
				//UPDATE LIST OF EMAILS
				refreshListContents();
				//OPEN EMAIL IN NEW MAIL WINDOW
				ReadMailWindowGUI readMailWinGUI = new ReadMailWindowGUI(selectedMail);
				Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
				final int HEIGHT = 600;
				final int WIDTH = 600;
				readMailWinGUI.setBounds(((screenSize.width / 2) - (WIDTH / 2)),
										 ((screenSize.height / 2) - (HEIGHT / 2)), WIDTH, HEIGHT);
				readMailWinGUI.setVisible(true);
			}
			if(e.getSource() == delete)
			{
				//DELETE MAIL FROM MAIL VECTOR
				EMailClient.deleteMail(selectedMailNumber);
				//UPDATE MAIL WINDOW
				refreshListContents();
				//DISPLAY MESSAGE TO USER
				JOptionPane.showMessageDialog(pane, "Mail Deleted");
			}
			if(e.getSource() == unRead)
			{
				//GET THE MAIL SELECTED BY THE USER
				Email selectedMail = EMailClient.getMail(selectedMailNumber);
				if(selectedMail.getRead() == true)
				{
					//DELETE MAIL FROM THE VECTOR
					EMailClient.deleteMail(selectedMailNumber);
					//UPDATE MAIL PROPERTY
					selectedMail.setRead(false);
					//ADD MAIL BACK TO INBOX AS NEW
					EMailClient.addMail(selectedMail);
					//UPDATE INBOX WINDOW
					refreshListContents();
					//DISPLAY MESSAGE TO USER
					JOptionPane.showMessageDialog(pane, "Mail Unread");
				}
				else
				{
					JOptionPane.showMessageDialog(null, "Mail is Unread");
				}
			}
			if(e.getSource() == unDelete)
			{
				//RETRIEVE THE BACKUP INBOX FROM CLIENT
				EMailClient.restoreMail();
				//UPDATE INBOX LIST
				refreshListContents();
				//DISPLAY MESSAGE TO USER
				JOptionPane.showMessageDialog(pane, "Mail Undeleted");
			}
		}
		//DISPLAY ERROR MESSAGE
		else
		{
			JOptionPane.showMessageDialog(null, "No Curent Mail");
		}
	}

	//UPDATES THE CONTENT OF THE INBOX LIST
	public void refreshListContents()
	{
		//CLEAR MAIL DESCRIPTION VECTOR
		mailDescriptor.removeAllElements();
		//DECLARE TEMPORARY EMAIL
		Email mail;
		//DECLARE EMAIL DESCRIPTION
		String description;
		//FOR EACH EMAIL GET A DESCRIPTION OF MAIL
		for(int count = 0; count < EMailClient.inboxSize(); count++)
		{
			//GET MAIL FROM INBOX
			mail = EMailClient.getMail(count);
			//IF MAIL HAS BEEN READ CREATE DESCRIPTION
			if(mail.getRead() == true)
			{
				description = ("    " + "FROM: " + mail.getSender() + "    " + "RE: "+ mail.getSubject() +
							   "    " + "ATTACHMENT: " + mail.getAttachmentName());
			}
			//IF MAIL IS UNREAD CREATE DIFFERENT DESCRIPTION
			else
			{
				description = ("NEW " + "FROM: " + mail.getSender() + "    " + "RE: "+ mail.getSubject() +
							   "    " + "ATTACHMENT: " + mail.getAttachmentName());
			}
			//ADD DESCRIPTION TO VECTOR
			mailDescriptor.add(description);
		}
		//SET INBOX WINDOW TO DECSRIPTION OF MAIL
		emailList.setListData(mailDescriptor);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -