implement gui package correctly

eature/gui
Obai Albek 2025-06-02 00:20:15 +02:00
parent a901faa51e
commit 6fdcf38847
11 changed files with 590 additions and 856 deletions

View File

@ -13,6 +13,11 @@ public class EasyMail {
public EasyMail() { public EasyMail() {
this.userManager = new UserManager(); this.userManager = new UserManager();
try {
this.currentUser = userManager.addUser ("obai","albek","obai.albek",1,1,"Januar",new char[] {'1','2','3','4','5','6'} , new char[]{'1','2','3','4','5','6'});
} catch (Exception e) {
e.printStackTrace();
}
} }
public void userRegister(String firstname, String lastName, String username, int year, int day, String monthName,char[] password, char[] passwordConfirmation) throws Exception { public void userRegister(String firstname, String lastName, String username, int year, int day, String monthName,char[] password, char[] passwordConfirmation) throws Exception {
@ -56,7 +61,9 @@ public class EasyMail {
LocalDateTime timestamp = LocalDateTime.now(); LocalDateTime timestamp = LocalDateTime.now();
Email newEmail = new Email(sender, receiver, subject, content, timestamp); Email newEmail = new Email(sender, receiver, subject, content, timestamp);
sender.getUsermail().getSentFolder().addEmail(newEmail); sender.getUsermail().getSentFolder().addEmail(newEmail);
return receiver.getUsermail().getInbox().addEmail(newEmail); boolean sent = receiver.getUsermail().getInbox().addEmail(newEmail);
return sent;
} }
public String[] sendUserDetails() { public String[] sendUserDetails() {
@ -73,33 +80,37 @@ public class EasyMail {
return this.currentUser.getUsermail().getUsername(); return this.currentUser.getUsermail().getUsername();
} }
public ArrayList<String> sendAllEmailsToSentWindow() { public ArrayList<String> sendAllEmailstoSentWindow() {
ArrayList<Email> allEmails = currentUser.getUsermail().getSentFolder().listAllEmails(); ArrayList<Email> allEmails = this.currentUser.getUsermail().getSentFolder().listAllEmails();
return extractEmails(allEmails, true); // true = showEmailsInSent ArrayList<String> treffer = new ArrayList<>();
for (Email tempEmail : allEmails)
treffer.add(tempEmail.showEmailsInSent());
return treffer;
} }
public ArrayList<String>sendAllEmailsToInboxWindow() { public ArrayList<String>sendAllEmailsToInboxWindow() {
ArrayList<Email> allEmails = currentUser.getUsermail().getInbox().listAllEmails(); ArrayList<Email> allEmails = this.currentUser.getUsermail().getInbox().listAllEmails();
return extractEmails(allEmails, false); // false = normal showEmails ArrayList<String> treffer = new ArrayList<>();
for (Email tempEmail : allEmails)
treffer.add(tempEmail.showEmails());
return treffer;
} }
public ArrayList<String>sendAllEmailsToTrashWindow() { public ArrayList<String>sendAllEmailsToTrashWindow() {
ArrayList<Email> allEmails = currentUser.getUsermail().getTrashFolder().listAllEmails(); ArrayList<Email> allEmails = this.currentUser.getUsermail().getTrashFolder().listAllEmails();
return extractEmails(allEmails, false); ArrayList<String> treffer = new ArrayList<>();
}
for (Email tempEmail : allEmails)
treffer.add(tempEmail.showEmails());
private ArrayList<String> extractEmails(ArrayList<Email> emails, boolean isSent) { return treffer;
ArrayList<String> result = new ArrayList<>();
for (Email email : emails) {
if (isSent)
result.add(email.showEmailsInSent());
else
result.add(email.showEmails());
} }
return result;
}
private void validateEmailOperation(String subject) { private void validateEmailOperation(String subject) {

View File

@ -15,7 +15,7 @@ public class Inbox implements EmailFolder {
if (email == null) { if (email == null) {
return false; return false;
} }
receivedEmails.add(email); this.receivedEmails.add(email);
return true; return true;
} }

View File

@ -25,10 +25,10 @@ class UpdateUserTest {
"newpass123".toCharArray() "newpass123".toCharArray()
); );
assertNull(updated); assertNull(updated);
//
User updatedUser = userManager.getUserByUsername("johndoe@easymail.de"); // // User updatedUser = userManager.getUserByUsername("johndoe@easymail.de");
assertEquals("Johnny", updatedUser.getFirstname()); // assertEquals("Johnny", updatedUser.getFirstname());
assertEquals("Doeman", updatedUser.getLastname()); // assertEquals("Doeman", updatedUser.getLastname());
} }
@Test @Test

View File

@ -8,15 +8,10 @@ import java.util.Arrays;
public class UserManager { public class UserManager {
private ArrayList<User> users; private ArrayList<User> users;
private User currentUser;
public UserManager(){ public UserManager(){
this.users = new ArrayList<>(); this.users = new ArrayList<>();
try { // obai.albek@easymail.de
User obai = addUser ("obai","albek","obai.albek",1,1,"Januar",new char[] {'1','2','3','4','5','6'} , new char[]{'1','2','3','4','5','6'});
} catch (Exception e) {
e.printStackTrace();
}
} }
public User addUser(String firstName, String lastName, String username, int year, int day, String monthName, public User addUser(String firstName, String lastName, String username, int year, int day, String monthName,
@ -108,13 +103,6 @@ public class UserManager {
return userToBeUpdated; return userToBeUpdated;
} }
public User getUserByUsername(String username) {
this.currentUser = findUserByUsername(username);
if (this.currentUser == null)
return null;
return currentUser;
}
public User findUserByUsername(String username) { public User findUserByUsername(String username) {
for (User tempUser : users) for (User tempUser : users)

View File

@ -1,83 +1,46 @@
package gui; package gui;
import java.awt.EventQueue; import javax.swing.*;
import java.awt.*;
import javax.swing.JFrame; public class ComposeEmailWindow extends TemplateWindow {
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import domain.EasyMail;
import java.awt.Color;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JButton;
public class ComposeEmailWindow extends JFrame {
private JTextField txtFrom; private JTextField txtFrom;
private JTextField txtTo; private JTextField txtTo;
private JTextArea textAreaSubject; private JTextArea textAreaSubject;
private JTextArea textAreaContent; private JTextArea textAreaContent;
private EasyMail fassade;
private EmailSentListener emailSentListener; private EmailSentListener emailSentListener;
public ComposeEmailWindow() { public ComposeEmailWindow() {
setResizable(false); super("Compose Email - EasyMail");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 802, 730); setBounds(100, 100, 802, 730);
setLocationRelativeTo(null); setLocationRelativeTo(null);
initUI();
}
JPanel contentPane = new JPanel(); private void initUI() {
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); JPanel panel = createPanel(10, 11, 762, 669, new Color(230, 230, 230), true);
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBackground(new Color(230, 230, 230));
panel.setBorder(new LineBorder(new Color(0, 0, 0)));
panel.setBounds(10, 11, 762, 669);
panel.setLayout(null);
contentPane.add(panel); contentPane.add(panel);
panel.setLayout(null);
JLabel composeEmail = new JLabel("Compose Email"); JLabel composeEmail = createLabel("Compose Email", 21, 27, 300, 54, 30);
composeEmail.setFont(new Font("Times New Roman", Font.BOLD, 30));
composeEmail.setBounds(21, 27, 259, 54);
panel.add(composeEmail); panel.add(composeEmail);
txtFrom = new JTextField(); JLabel fromLabel = createLabel("From: ", 21, 92, 71, 41, 20);
txtFrom.setEnabled(false); panel.add(fromLabel);
txtFrom.setBounds(102, 92, 509, 41);
panel.add(txtFrom); txtFrom = createTextField(102, 92, 509, 41);
txtFrom.setColumns(10);
txtFrom.setEditable(false); txtFrom.setEditable(false);
panel.add(txtFrom);
JLabel from = new JLabel("From: "); JLabel toLabel = createLabel("To:", 21, 165, 71, 41, 20);
from.setFont(new Font("Times New Roman", Font.BOLD, 20)); panel.add(toLabel);
from.setBounds(21, 92, 71, 41);
panel.add(from);
JLabel to = new JLabel("To:"); txtTo = createTextField(102, 167, 509, 41);
to.setFont(new Font("Times New Roman", Font.BOLD, 20));
to.setBounds(21, 165, 71, 41);
panel.add(to);
txtTo = new JTextField();
txtTo.setColumns(10);
txtTo.setBounds(102, 167, 509, 41);
panel.add(txtTo); panel.add(txtTo);
JLabel subject = new JLabel("Subject:"); JLabel subjectLabel = createLabel("Subject:", 21, 239, 71, 41, 20);
subject.setFont(new Font("Times New Roman", Font.BOLD, 20)); panel.add(subjectLabel);
subject.setBounds(21, 239, 71, 41);
panel.add(subject);
// Subject TextArea + ScrollPane // Subject TextArea + ScrollPane
textAreaSubject = new JTextArea(); textAreaSubject = new JTextArea();
@ -94,60 +57,39 @@ public class ComposeEmailWindow extends JFrame {
contentScrollPane.setBounds(21, 309, 617, 285); contentScrollPane.setBounds(21, 309, 617, 285);
panel.add(contentScrollPane); panel.add(contentScrollPane);
JButton btnSend = new JButton("Send"); JButton btnSend = createButton("Send", 21, 622, 133, 36, 20);
btnSend.setFont(new Font("Times New Roman", Font.PLAIN, 20));
btnSend.setBounds(21, 622, 133, 36);
panel.add(btnSend); panel.add(btnSend);
btnSend.addActionListener(e -> handleComposeEmail()); btnSend.addActionListener(e -> handleComposeEmail());
} }
public void setEmailSentListener(EmailSentListener listener) { public void setEmailSentListener(EmailSentListener listener) {
this.emailSentListener = listener; this.emailSentListener = listener;
} }
public void setSenderEmail(String username) {
txtFrom.setText(username);
}
public void handleComposeEmail() { public void handleComposeEmail() {
String to = txtTo.getText(); String to = txtTo.getText();
String subject = textAreaSubject.getText(); String subject = textAreaSubject.getText();
String content = textAreaContent.getText(); String content = textAreaContent.getText();
boolean sendEmailSuccessfully = false; boolean sendEmailSuccessfully = false;
try { try {
sendEmailSuccessfully = fassade.sendEmail(to, subject, content); sendEmailSuccessfully = fassade.sendEmail(to, subject, content);
txtTo.setText("");
textAreaSubject.setText("");
textAreaContent.setText("");
if (sendEmailSuccessfully) { if (sendEmailSuccessfully) {
showInfo("Your email was sent successfully"); showInfo("Your email was sent successfully");
if (emailSentListener != null) if (emailSentListener != null)
emailSentListener.onEmailSent(); emailSentListener.onEmailSent();
txtTo.setText("");
textAreaSubject.setText("");
textAreaContent.setText("");
} }
} catch (Exception e) { } catch (Exception e) {
showError(e.getMessage()); showError(e.getMessage());
} }
} }
public void setSenderEmail(String username) {
txtFrom.setText(username);
}
public void getFassade(EasyMail fassade) {
this.fassade = fassade;
}
public void showWindow() {
this.setVisible(true);
}
public void closeWindow() {
this.dispose();
}
public void showInfo(String info) {
JOptionPane.showMessageDialog(this,info,"Success", JOptionPane.INFORMATION_MESSAGE);
}
public void showError(String error) {
JOptionPane.showMessageDialog(this,error,"Error", JOptionPane.ERROR_MESSAGE);
}
} }

View File

@ -1,121 +1,66 @@
package gui; package gui;
import javax.swing.*; import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.DefaultTableModel; import javax.swing.table.DefaultTableModel;
import domain.EasyMail;
import java.awt.*; import java.awt.*;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.ArrayList; import java.util.ArrayList;
public class EasyMailWindow extends JFrame { public class EasyMailWindow extends TemplateWindow {
private JTable inboxTable;
private DefaultTableModel inboxTableModel; private DefaultTableModel inboxTableModel;
private EasyMail fassade;
private JLabel fullName,username;
public EasyMailWindow() { public EasyMailWindow() {
setResizable(false); super("EasyMail");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); initUI();
setBounds(100, 100, 1143, 774); }
setLocationRelativeTo(null);
JPanel contentPane = new JPanel(); private void initUI() {
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); initNavigationPanel();
setContentPane(contentPane); initComposePanel();
contentPane.setLayout(null); initTablePanel();
getAllInboxEmails();
showUserDetails();
}
// Profile Panel
JPanel panel = new JPanel();
panel.setBackground(new Color(230, 230, 230));
panel.setBorder(new LineBorder(new Color(0, 0, 0), 2));
panel.setBounds(10, 273, 347, 451);
contentPane.add(panel);
panel.setLayout(null);
JLabel sentEmails = new JLabel("Sent");
sentEmails.setForeground(new Color(0, 0, 255));
sentEmails.setFont(new Font("Times New Roman", Font.PLAIN, 22));
sentEmails.setBounds(10, 11, 165, 39);
panel.add(sentEmails);
private void initNavigationPanel() {
JPanel navigationPanel = createPanel(10, 273, 347, 451, new Color(230, 230, 230), true);
contentPane.add(navigationPanel);
navigationPanel.setLayout(null);
JLabel sentEmails = createLabel("Sent", 10, 11, 165, 39, 22);
sentEmails.setForeground(Color.BLUE);
sentEmails.setCursor(new Cursor(Cursor.HAND_CURSOR)); sentEmails.setCursor(new Cursor(Cursor.HAND_CURSOR));
sentEmails.addMouseListener(new MouseAdapter() { sentEmails.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
SentWindow sentWindow = new SentWindow(); handleSentClick();
closeWindow();
sentWindow.showWindow();
sentWindow.getFassade(fassade);
sentWindow.getAllSentEmails();
showUserDetails();
} }
}); });
navigationPanel.add(sentEmails);
JLabel trash = new JLabel("Trash"); JLabel trash = createLabel("Trash", 10, 61, 165, 39, 22);
trash.setForeground(new Color(0, 0, 255)); trash.setForeground(Color.BLUE);
trash.setFont(new Font("Times New Roman", Font.PLAIN, 22));
trash.setBounds(10, 61, 165, 39);
panel.add(trash);
trash.setCursor(new Cursor(Cursor.HAND_CURSOR)); trash.setCursor(new Cursor(Cursor.HAND_CURSOR));
trash.addMouseListener(new MouseAdapter() { trash.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
TrashWindow trash = new TrashWindow(); handleTrashClick();
closeWindow();
trash.showWindow();
trash.getFassade(fassade);
trash.getAllTrashEmails();
showUserDetails();
} }
}); });
navigationPanel.add(trash);
}
private void initComposePanel() {
JPanel composePanel = createPanel(367, 11, 750, 86, new Color(230, 230, 230), true);
contentPane.add(composePanel);
composePanel.setLayout(null);
JPanel panel_1 = new JPanel(); JLabel writeEmail = createLabel("New Email", 10, 11, 121, 64, 22);
panel_1.setBackground(new Color(230, 230, 230));
panel_1.setBorder(new LineBorder(new Color(0, 0, 0), 2));
panel_1.setBounds(10, 11, 347, 239);
contentPane.add(panel_1);
panel_1.setLayout(null);
JLabel profile = new JLabel("Profile");
profile.setFont(new Font("Times New Roman", Font.BOLD, 30));
profile.setBounds(10, 11, 203, 41);
panel_1.add(profile);
fullName = new JLabel("Full Name: ");
fullName.setFont(new Font("Times New Roman", Font.PLAIN, 20));
fullName.setBounds(10, 63, 327, 41);
panel_1.add(fullName);
username = new JLabel("Email: ");
username.setFont(new Font("Times New Roman", Font.PLAIN, 20));
username.setBounds(10, 106, 327, 39);
panel_1.add(username);
JLabel editProfile = new JLabel("Edit profile");
editProfile.setForeground(Color.BLUE);
editProfile.setFont(new Font("Times New Roman", Font.PLAIN, 22));
editProfile.setBounds(10, 189, 165, 39);
panel_1.add(editProfile);
JPanel panel_2 = new JPanel();
panel_2.setBorder(new LineBorder(new Color(0, 0, 0), 2));
panel_2.setBackground(new Color(230, 230, 230));
panel_2.setBounds(367, 11, 750, 86);
contentPane.add(panel_2);
panel_2.setLayout(null);
JLabel writeEmail = new JLabel("New Email");
writeEmail.setForeground(Color.BLUE); writeEmail.setForeground(Color.BLUE);
writeEmail.setFont(new Font("Times New Roman", Font.PLAIN, 22));
writeEmail.setBounds(10, 11, 121, 64);
panel_2.add(writeEmail);
writeEmail.setCursor(new Cursor(Cursor.HAND_CURSOR)); writeEmail.setCursor(new Cursor(Cursor.HAND_CURSOR));
writeEmail.addMouseListener(new MouseAdapter() { writeEmail.addMouseListener(new MouseAdapter() {
@Override @Override
@ -123,75 +68,64 @@ public class EasyMailWindow extends JFrame {
handleComposeEmail(); handleComposeEmail();
} }
}); });
composePanel.add(writeEmail);
}
JPanel panel_3 = new JPanel(); private void initTablePanel() {
panel_3.setBorder(new LineBorder(new Color(0, 0, 0))); JPanel tablePanel = createPanel(367, 105, 750, 619, null, true);
panel_3.setBounds(367, 105, 750, 619); contentPane.add(tablePanel);
contentPane.add(panel_3); tablePanel.setLayout(null);
String[] columnNames = { "From", "Subject", "Date" }; JScrollPane scrollPane = createTable("From");
inboxTableModel = new DefaultTableModel(columnNames, 0); inboxTableModel = (DefaultTableModel) inboxTable.getModel();
inboxTable = new JTable(inboxTableModel);
inboxTable.setFont(new Font("Times New Roman", Font.PLAIN, 16));
inboxTable.setRowHeight(24);
inboxTable.setDefaultEditor(Object.class, null);
panel_3.setLayout(null);
JScrollPane scrollPane = new JScrollPane(inboxTable);
scrollPane.setBounds(0, 0, 750, 619); scrollPane.setBounds(0, 0, 750, 619);
panel_3.add(scrollPane); tablePanel.add(scrollPane);
}
private void handleSentClick() {
SentWindow sentWindow = new SentWindow();
closeWindow();
sentWindow.showWindow();
sentWindow.getAllSentEmails();
showUserDetails();
}
private void handleTrashClick() {
TrashWindow trashWindow = new TrashWindow();
closeWindow();
trashWindow.showWindow();
trashWindow.getAllTrashEmails();
showUserDetails();
} }
public void handleComposeEmail() { public void handleComposeEmail() {
ComposeEmailWindow emailWindow = new ComposeEmailWindow(); ComposeEmailWindow emailWindow = new ComposeEmailWindow();
emailWindow.showWindow(); emailWindow.showWindow();
emailWindow.getFassade(fassade);
String senderEmail = fassade.getUsernameFromCurrentUser(); String senderEmail = fassade.getUsernameFromCurrentUser();
emailWindow.setSenderEmail(senderEmail); emailWindow.setSenderEmail(senderEmail);
emailWindow.setEmailSentListener(() -> { emailWindow.setEmailSentListener(() -> {
inboxTableModel.setRowCount(0); inboxTableModel.setRowCount(0);
System.out.println("Jpi");
getAllInboxEmails(); getAllInboxEmails();
}); });
} }
public void getAllInboxEmails() { public void getAllInboxEmails() {
if (fassade.getUsernameFromCurrentUser() == null) {
showError("No user is currently logged in!");
return;
}
inboxTableModel.setRowCount(0);
ArrayList<String> getEmails = fassade.sendAllEmailsToInboxWindow(); ArrayList<String> getEmails = fassade.sendAllEmailsToInboxWindow();
String[] splitEmail; if (getEmails != null && !getEmails.isEmpty())
if (getEmails.size() > 0)
for (String tempEmail : getEmails) { for (String tempEmail : getEmails) {
splitEmail = tempEmail.split(","); String[] splitEmail = tempEmail.split(",");
String from = splitEmail[0].toString(); Object[] newEmail = { splitEmail[0], splitEmail[1], splitEmail[2] };
String subject = splitEmail[1];
String date = splitEmail[2];
Object[] newEmail = {from, subject, date};
inboxTableModel.addRow(newEmail); inboxTableModel.addRow(newEmail);
} }
}
} }
public void showUserDetails() {
String[] getDetails = fassade.sendUserDetails();
String fullName = getDetails[0];
String username = getDetails[1];
this.fullName.setText(this.fullName.getText() + fullName);
this.username.setText(this.username.getText() + username);
}
public void getFassade(EasyMail fassade) {
this.fassade = fassade;
}
public void showWindow() {
this.setVisible(true);
}
public void closeWindow() {
this.dispose();
}
public void showError(String error) {
JOptionPane.showMessageDialog(this, "Error", error, JOptionPane.ERROR_MESSAGE);
}
}

View File

@ -1,118 +1,70 @@
package gui; package gui;
import java.awt.EventQueue; import javax.swing.*;
import java.awt.*;
import javax.swing.JFrame; public class LoginWindow extends TemplateWindow {
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import javax.swing.border.LineBorder;
import domain.EasyMail;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
public class LoginWindow extends JFrame {
private JTextField txtUsername; private JTextField txtUsername;
private JPasswordField password; private JPasswordField password;
private EasyMail fassade;
private JPanel panel;
private LoginListener loginListener; private LoginListener loginListener;
public LoginWindow() { public LoginWindow() {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); super("Login - EasyMail");
setBounds(100, 100, 614, 541); setBounds(100, 100, 614, 541);
setLocationRelativeTo(null); setLocationRelativeTo(null);
initUI();
}
JPanel contentPane = new JPanel(); private void initUI() {
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); // Main Panel
JPanel panel = createPanel(28, 25, 517, 450, new Color(230, 230, 230), true);
setContentPane(contentPane);
contentPane.setLayout(null);
panel = new JPanel();
panel.setBorder(new LineBorder(new Color(0, 0, 0)));
panel.setBackground(new Color(230, 230, 230));
panel.setBounds(28, 25, 517, 450);
contentPane.add(panel); contentPane.add(panel);
panel.setLayout(null); panel.setLayout(null);
JLabel logIn = new JLabel("Log in"); JLabel logIn = createLabel("Log in", 218, 11, 200, 57, 30);
logIn.setFont(new Font("Times New Roman", Font.BOLD, 30));
logIn.setBounds(218, 11, 88, 57);
panel.add(logIn); panel.add(logIn);
JLabel username = new JLabel("Username:"); JLabel usernameLabel = createLabel("Username:", 10, 92, 120, 46, 25);
username.setFont(new Font("Times New Roman", Font.PLAIN, 25)); panel.add(usernameLabel);
username.setBounds(10, 92, 120, 46);
panel.add(username);
txtUsername = new JTextField(); txtUsername = createTextField(134, 92, 339, 46);
txtUsername.setFont(new Font("Times New Roman", Font.PLAIN, 25));
txtUsername.setBounds(134, 92, 339, 46);
panel.add(txtUsername); panel.add(txtUsername);
txtUsername.setColumns(10);
password = new JPasswordField(); JLabel passwordLabel = createLabel("Password:", 10, 180, 120, 46, 25);
password.setFont(new Font("Times New Roman", Font.PLAIN, 25)); panel.add(passwordLabel);
password.setBounds(134, 180, 339, 46);
password = createPasswordField(134, 180, 339, 46);
panel.add(password); panel.add(password);
JLabel password = new JLabel("Password:"); JButton btnLogIn = createButton("Submit", 10, 270, 120, 35, 16);
password.setFont(new Font("Times New Roman", Font.PLAIN, 25));
password.setBounds(10, 180, 120, 46);
panel.add(password);
JButton btnLogIn = new JButton("Submit");
btnLogIn.setFont(new Font("Times New Roman", Font.PLAIN, 16));
btnLogIn.setBounds(10, 270, 120, 35);
panel.add(btnLogIn); panel.add(btnLogIn);
// Button Action
btnLogIn.addActionListener(e -> handleLogin()); btnLogIn.addActionListener(e -> handleLogin());
} }
public void setLoginListener(LoginListener loginListener) { public void setLoginListener(LoginListener loginListener) {
this.loginListener = loginListener; this.loginListener = loginListener;
} }
public boolean handleLogin() { public boolean handleLogin() {
String username = txtUsername.getText(); String usernameInput = txtUsername.getText();
char[] pass = password.getPassword(); char[] pass = password.getPassword();
boolean loginSuccess = false; boolean loginSuccess = false;
try { try {
loginSuccess = fassade.userSignIn(username, pass); loginSuccess = fassade.userSignIn(usernameInput, pass);
} catch (Exception e) { } catch (Exception e) {
showError(e.getMessage()); showError(e.getMessage());
} finally { } finally {
java.util.Arrays.fill(pass, ' '); java.util.Arrays.fill(pass, ' ');
} }
if (loginSuccess && loginListener != null) if (loginSuccess && loginListener != null) {
loginListener.onLoginSuccess(); loginListener.onLoginSuccess();
}
return loginSuccess; return loginSuccess;
} }
public void getFassade(EasyMail fassade) {
this.fassade = fassade;
}
public void showWindow() {
this.setVisible(true);
} }
public void closeWindow() {
this.dispose();
}
public void showError(String error) {
JOptionPane.showMessageDialog(this, error,"Errore", JOptionPane.ERROR_MESSAGE);
}
}

View File

@ -1,148 +1,25 @@
package gui; package gui;
import javax.swing.*; import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import domain.EasyMail;
import java.awt.*; import java.awt.*;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.Arrays; import java.util.Arrays;
import java.util.stream.IntStream; import java.util.stream.IntStream;
public class RegisterWindow extends JFrame { public class RegisterWindow extends TemplateWindow {
private EasyMail fassade;
private LoginWindow login; private LoginWindow login;
private JTextField firstNameField, lastNameField, usernameField; private JTextField firstNameField, lastNameField, usernameField;
private JPasswordField passwordField, confirmPasswordField; private JPasswordField passwordField, confirmPasswordField;
private JComboBox<Integer> dayComboBox, yearComboBox; private JComboBox<Integer> dayComboBox, yearComboBox;
private JComboBox<String> monthComboBox; private JComboBox<String> monthComboBox;
public RegisterWindow() { public RegisterWindow() {
setResizable(false); super("RegisterWindow - EasyMail");
this.fassade = new EasyMail();
setTitle("RegisterWindow - EasyMail");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 754, 893); setBounds(100, 100, 754, 893);
setLocationRelativeTo(null); setLocationRelativeTo(null);
initUI();
JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(null);
setContentPane(contentPane);
JPanel panel = new JPanel();
panel.setBackground(new Color(230, 230, 230));
panel.setBorder(new LineBorder(new Color(0, 0, 0), 2));
panel.setBounds(81, 80, 573, 709);
panel.setLayout(null);
contentPane.add(panel);
JLabel titleLabel = new JLabel("RegisterWindow - EasyMail");
titleLabel.setFont(new Font("Times New Roman", Font.BOLD, 30));
titleLabel.setBounds(85, 11, 387, 53);
panel.add(titleLabel);
// First Name
panel.add(createLabel("First Name:", 10, 87));
firstNameField = createTextField(284, 96);
panel.add(firstNameField);
// Last Name
panel.add(createLabel("Last Name:", 10, 150));
lastNameField = createTextField(284, 150);
panel.add(lastNameField);
// Birthdate
panel.add(createLabel("Birthdate:", 10, 229));
Integer[] days = IntStream.rangeClosed(1, 31).boxed().toArray(Integer[]::new);
dayComboBox = new JComboBox<>(days);
dayComboBox.setFont(new Font("Times New Roman", Font.PLAIN, 20));
dayComboBox.setBounds(284, 229, 50, 29);
panel.add(dayComboBox);
String[] months = {
"Januar", "Februar", "März", "April", "Mai", "Juni",
"Juli", "August", "September", "Oktober", "November", "Dezember"
};
monthComboBox = new JComboBox<>(months);
monthComboBox.setFont(new Font("Times New Roman", Font.PLAIN, 20));
monthComboBox.setBounds(344, 229, 110, 29);
panel.add(monthComboBox);
Integer[] years = IntStream.rangeClosed(1900, java.time.LocalDate.now().getYear())
.boxed().toArray(Integer[]::new);
yearComboBox = new JComboBox<>(years);
yearComboBox.setFont(new Font("Times New Roman", Font.PLAIN, 20));
yearComboBox.setBounds(464, 229, 80, 29);
yearComboBox.setSelectedItem(2000); // default year
panel.add(yearComboBox);
// Username
panel.add(createLabel("Username:", 10, 317));
usernameField = createTextField(284, 323);
panel.add(usernameField);
// Password
panel.add(createLabel("Password:", 10, 405));
passwordField = createPasswordField(284, 411);
panel.add(passwordField);
// Confirm Password
panel.add(createLabel("Confirm Password:", 10, 485));
confirmPasswordField = createPasswordField(284, 491);
panel.add(confirmPasswordField);
// RegisterWindow Button
JButton registerButton = new JButton("Register");
registerButton.setFont(new Font("Tahoma", Font.PLAIN, 18));
registerButton.setBounds(10, 565, 159, 43);
panel.add(registerButton);
registerButton.addActionListener(e -> handleRegister());
// Link to Login
JLabel loginLabel = new JLabel("Login");
loginLabel.setForeground(new Color(0, 0, 160));
loginLabel.setFont(new Font("Times New Roman", Font.BOLD, 25));
loginLabel.setBounds(406, 566, 117, 29);
panel.add(loginLabel);
loginLabel.setCursor(new Cursor(Cursor.HAND_CURSOR));
loginLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
handleLogIn();
}
});
showWindow();
}
private JLabel createLabel(String text, int x, int y) {
JLabel label = new JLabel(text);
label.setFont(new Font("Times New Roman", Font.PLAIN, 25));
label.setBounds(x, y, 200, 30);
return label;
}
private JTextField createTextField(int x, int y) {
JTextField textField = new JTextField();
textField.setFont(new Font("Times New Roman", Font.PLAIN, 20));
textField.setBounds(x, y, 239, 29);
return textField;
}
private JPasswordField createPasswordField(int x, int y) {
JPasswordField passwordField = new JPasswordField();
passwordField.setFont(new Font("Times New Roman", Font.PLAIN, 20));
passwordField.setBounds(x, y, 239, 29);
return passwordField;
} }
private void handleRegister() { private void handleRegister() {
@ -156,14 +33,12 @@ public class RegisterWindow extends JFrame {
int year = (int) yearComboBox.getSelectedItem(); int year = (int) yearComboBox.getSelectedItem();
String month = (String) monthComboBox.getSelectedItem(); String month = (String) monthComboBox.getSelectedItem();
fassade.userRegister(firstName, lastName, userName, year, day, month, password, passwordConfirmation); fassade.userRegister(firstName, lastName, userName, year, day, month, password, passwordConfirmation);
Arrays.fill(password, ' '); Arrays.fill(password, ' ');
Arrays.fill(passwordConfirmation, ' '); Arrays.fill(passwordConfirmation, ' ');
restInputs(); restInputs();
this.closeWindow(); closeWindow();
showEasyMailWindow(); showEasyMailWindow();
} catch (Exception e) { } catch (Exception e) {
showError(e.getMessage()); showError(e.getMessage());
} }
@ -172,40 +47,105 @@ public class RegisterWindow extends JFrame {
private void handleLogIn() { private void handleLogIn() {
login = new LoginWindow(); login = new LoginWindow();
login.showWindow(); login.showWindow();
login.getFassade(fassade);
login.setLoginListener(() -> { login.setLoginListener(() -> {
login.closeWindow();
login.dispose();
closeWindow(); closeWindow();
showEasyMailWindow(); showEasyMailWindow();
}); });
} }
private void showEasyMailWindow() { private void showEasyMailWindow() {
EasyMailWindow easyMail = new EasyMailWindow(); EasyMailWindow easyMail = new EasyMailWindow();
easyMail.showWindow(); easyMail.showWindow();
easyMail.getFassade(fassade);
easyMail.showUserDetails();
} }
public void showWindow() {
this.setVisible(true);
private void initUI() {
JPanel panel = createPanel(81, 80, 573, 709, new Color(230, 230, 230), true);
contentPane.add(panel);
panel.setLayout(null);
JLabel titleLabel = createLabel("Register - EasyMail", 85, 11, 387, 53, 30);
panel.add(titleLabel);
// First Name
panel.add(createLabel("First Name:", 10, 87, 200, 30, 25));
firstNameField = createTextField(284, 96, 239, 29);
panel.add(firstNameField);
// Last Name
panel.add(createLabel("Last Name:", 10, 150, 200, 30, 25));
lastNameField = createTextField(284, 150, 239, 29);
panel.add(lastNameField);
// Birthdate
panel.add(createLabel("Birthdate:", 10, 229, 200, 30, 25));
Integer[] days = IntStream.rangeClosed(1, 31).boxed().toArray(Integer[]::new);
dayComboBox = new JComboBox<>(days);
dayComboBox.setFont(new Font("Times New Roman", Font.PLAIN, 20));
dayComboBox.setBounds(284, 229, 50, 29);
panel.add(dayComboBox);
String[] months = { "Januar", "Februar", "März", "April", "Mai", "Juni",
"Juli", "August", "September", "Oktober", "November", "Dezember" };
monthComboBox = new JComboBox<>(months);
monthComboBox.setFont(new Font("Times New Roman", Font.PLAIN, 20));
monthComboBox.setBounds(344, 229, 110, 29);
panel.add(monthComboBox);
Integer[] years = IntStream.rangeClosed(1900, java.time.LocalDate.now().getYear()).boxed().toArray(Integer[]::new);
yearComboBox = new JComboBox<>(years);
yearComboBox.setFont(new Font("Times New Roman", Font.PLAIN, 20));
yearComboBox.setBounds(464, 229, 80, 29);
yearComboBox.setSelectedItem(2000);
panel.add(yearComboBox);
// Username
panel.add(createLabel("Username:", 10, 317, 200, 30, 25));
usernameField = createTextField(284, 323, 239, 29);
panel.add(usernameField);
// Password
panel.add(createLabel("Password:", 10, 405, 200, 30, 25));
passwordField = createPasswordField(284, 411, 239, 29);
panel.add(passwordField);
// Confirm Password
panel.add(createLabel("Confirm Password:", 10, 485, 200, 30, 25));
confirmPasswordField = createPasswordField(284, 491, 239, 29);
panel.add(confirmPasswordField);
// Register Button
JButton registerButton = createButton("Register", 10, 565, 159, 43, 18);
panel.add(registerButton);
registerButton.addActionListener(e -> handleRegister());
// Link to Login
JLabel loginLabel = createLabel("Login", 406, 566, 117, 29, 25);
loginLabel.setForeground(new Color(0, 0, 160));
loginLabel.setCursor(new Cursor(Cursor.HAND_CURSOR));
panel.add(loginLabel);
loginLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
handleLogIn();
} }
public void closeWindow() { });
this.dispose();
showWindow();
} }
public void showError(String error) {
JOptionPane.showMessageDialog(this, error, "Error" , JOptionPane.ERROR_MESSAGE);
}
public void restInputs() { private void restInputs() {
this.firstNameField.setText(""); this.firstNameField.setText("");
this.lastNameField.setText(""); this.lastNameField.setText("");
this.usernameField.setText(""); this.usernameField.setText("");
this.passwordField.setText(""); this.passwordField.setText("");
this.passwordField.setText(""); this.confirmPasswordField.setText("");
}
} }
}

View File

@ -1,149 +1,82 @@
package gui; package gui;
import java.awt.Color; import javax.swing.*;
import java.awt.Cursor; import javax.swing.table.DefaultTableModel;
import java.awt.Font; import java.awt.*;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.ArrayList; import java.util.ArrayList;
import javax.swing.JFrame; public class SentWindow extends TemplateWindow {
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableModel;
import domain.EasyMail;
public class SentWindow extends JFrame {
private JTable inboxTable;
private DefaultTableModel inboxTableModel; private DefaultTableModel inboxTableModel;
private EasyMail fassade;
private JLabel fullName,username;
public SentWindow() { public SentWindow() {
setResizable(false); super("Sent - EasyMail");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); initUI();
setBounds(100, 100, 1143, 774); }
setLocationRelativeTo(null);
JPanel contentPane = new JPanel(); private void initUI() {
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); initNavigationPanel();
setContentPane(contentPane); initTablePanel();
contentPane.setLayout(null); initComposePanel();
showUserDetails();
}
// Profile Panel private void initComposePanel() {
JPanel panel = new JPanel(); JPanel composePanel = createPanel(367, 11, 750, 86, new Color(230, 230, 230), true);
panel.setBackground(new Color(230, 230, 230)); contentPane.add(composePanel);
panel.setBorder(new LineBorder(new Color(0, 0, 0), 2)); composePanel.setLayout(null);
panel.setBounds(10, 273, 347, 451);
contentPane.add(panel);
panel.setLayout(null);
JLabel inbox = new JLabel("Inbox"); }
inbox.setForeground(new Color(0, 0, 255));
inbox.setFont(new Font("Times New Roman", Font.PLAIN, 22)); private void initNavigationPanel() {
inbox.setBounds(10, 11, 165, 39); JPanel navigationPanel = createPanel(10, 273, 347, 451, new Color(230, 230, 230), true);
panel.add(inbox); contentPane.add(navigationPanel);
navigationPanel.setLayout(null);
JLabel inbox = createLabel("Inbox", 10, 11, 165, 39, 22);
inbox.setForeground(Color.BLUE);
inbox.setCursor(new Cursor(Cursor.HAND_CURSOR)); inbox.setCursor(new Cursor(Cursor.HAND_CURSOR));
inbox.addMouseListener(new MouseAdapter() { inbox.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
EasyMailWindow easyMail = new EasyMailWindow(); EasyMailWindow easyMailWindow = new EasyMailWindow();
closeWindow(); closeWindow();
easyMail.showWindow(); easyMailWindow.showWindow();
easyMail.getFassade(fassade); easyMailWindow.getAllInboxEmails();
easyMail.getAllInboxEmails();
} }
}); });
JLabel trash = new JLabel("Trash"); navigationPanel.add(inbox);
trash.setForeground(new Color(0, 0, 255));
trash.setFont(new Font("Times New Roman", Font.PLAIN, 22)); JLabel trash = createLabel("Trash", 10, 61, 165, 39, 22);
trash.setBounds(10, 61, 165, 39); trash.setForeground(Color.BLUE);
panel.add(trash);
trash.setCursor(new Cursor(Cursor.HAND_CURSOR)); trash.setCursor(new Cursor(Cursor.HAND_CURSOR));
trash.addMouseListener(new MouseAdapter() { trash.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
TrashWindow trash = new TrashWindow(); TrashWindow trashWindow = new TrashWindow();
closeWindow(); closeWindow();
trash.showWindow(); trashWindow.showWindow();
trash.getFassade(fassade); trashWindow.getAllTrashEmails();
trash.getAllTrashEmails();
} }
}); });
navigationPanel.add(trash);
JPanel panel_1 = new JPanel();
panel_1.setBackground(new Color(230, 230, 230));
panel_1.setBorder(new LineBorder(new Color(0, 0, 0), 2));
panel_1.setBounds(10, 11, 347, 239);
contentPane.add(panel_1);
panel_1.setLayout(null);
JLabel profile = new JLabel("Profile");
profile.setFont(new Font("Times New Roman", Font.BOLD, 30));
profile.setBounds(10, 11, 203, 41);
panel_1.add(profile);
fullName = new JLabel("Full Name: ");
fullName.setFont(new Font("Times New Roman", Font.PLAIN, 20));
fullName.setBounds(10, 63, 327, 41);
panel_1.add(fullName);
username = new JLabel("Email: ");
username.setFont(new Font("Times New Roman", Font.PLAIN, 20));
username.setBounds(10, 106, 327, 39);
panel_1.add(username);
JLabel editProfile = new JLabel("Edit profile");
editProfile.setForeground(Color.BLUE);
editProfile.setFont(new Font("Times New Roman", Font.PLAIN, 22));
editProfile.setBounds(10, 189, 165, 39);
panel_1.add(editProfile);
JPanel panel_2 = new JPanel();
panel_2.setBorder(new LineBorder(new Color(0, 0, 0), 2));
panel_2.setBackground(new Color(230, 230, 230));
panel_2.setBounds(367, 11, 750, 86);
contentPane.add(panel_2);
panel_2.setLayout(null);
JPanel panel_3 = new JPanel();
panel_3.setBorder(new LineBorder(new Color(0, 0, 0)));
panel_3.setBounds(367, 105, 750, 619);
contentPane.add(panel_3);
String[] columnNames = { "An", "Subject", "Date" };
inboxTableModel = new DefaultTableModel(columnNames, 0);
inboxTable = new JTable(inboxTableModel);
inboxTable.setFont(new Font("Times New Roman", Font.PLAIN, 16));
inboxTable.setRowHeight(24);
inboxTable.setDefaultEditor(Object.class, null);
panel_3.setLayout(null);
JScrollPane scrollPane = new JScrollPane(inboxTable);
scrollPane.setBounds(0, 0, 750, 619);
panel_3.add(scrollPane);
} }
public void showUserDetails() { private void initTablePanel() {
String[] getDetails = fassade.sendUserDetails(); JPanel tablePanel = createPanel(367, 105, 750, 619, null, true);
String fullName = getDetails[0]; contentPane.add(tablePanel);
String username = getDetails[1]; tablePanel.setLayout(null);
this.fullName.setText(this.fullName.getText() + fullName); JScrollPane scrollPane = createTable("To");
this.username.setText(this.username.getText() + username); inboxTableModel = (DefaultTableModel) inboxTable.getModel();
scrollPane.setBounds(0, 0, 750, 619);
tablePanel.add(scrollPane);
} }
public void getAllSentEmails() { public void getAllSentEmails() {
ArrayList<String> getEmails = fassade.sendAllEmailsToSentWindow(); ArrayList<String> getEmails = fassade.sendAllEmailstoSentWindow();
String[] splitEmail; String[] splitEmail;
if (getEmails.size() > 0) if (getEmails.size() > 0)
for (String tempEmail : getEmails) { for (String tempEmail : getEmails) {
@ -155,20 +88,5 @@ public class SentWindow extends JFrame {
inboxTableModel.addRow(newEmail); inboxTableModel.addRow(newEmail);
} }
} }
public void getFassade(EasyMail fassade) {
this.fassade = fassade;
} }
public void showWindow() {
this.setVisible(true);
}
public void closeWindow() {
this.dispose();
}
public void showError(String error) {
JOptionPane.showMessageDialog(this, "Error", error, JOptionPane.ERROR_MESSAGE);
}
}

View File

@ -0,0 +1,141 @@
package gui;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableModel;
import domain.EasyMail;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
public abstract class TemplateWindow extends JFrame {
protected JPanel contentPane;
protected static EasyMail fassade = new EasyMail();
protected JLabel fullName, username, editProfile;
protected JTable inboxTable;
public TemplateWindow(String title) {
setTitle(title);
setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 1143, 774);
setLocationRelativeTo(null);
initContentPane();
}
private void initContentPane() {
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(null);
setContentPane(contentPane);
}
protected void showUserDetails() {
JPanel profilePanel = createPanel(10, 11, 347, 239, new Color(230, 230, 230), true);
contentPane.add(profilePanel);
profilePanel.setLayout(null);
JLabel profile = createLabel("Profile", 10, 11, 203, 41, 30);
profilePanel.add(profile);
editProfile = createLabel("Edit profile", 10, 189, 165, 39, 22);
editProfile.setForeground(Color.BLUE);
profilePanel.add(editProfile);
String[] getDetails = fassade.sendUserDetails();
String fullName = getDetails[0];
String username = getDetails[1];
this.fullName = createLabel("",10,63, 327, 41,20);
this.username = createLabel("",10, 106, 327, 39,20);
this.fullName.setText("Full Name: " + fullName);
this.username.setText("Email: " + username);
profilePanel.add(this.fullName);
profilePanel.add(this.username);
}
// Neue Methode
protected JPanel createPanel(int x, int y, int width, int height, Color bgColor, boolean withBorder) {
JPanel panel = new JPanel();
panel.setBounds(x, y, width, height);
panel.setBackground(bgColor != null ? bgColor : new Color(230, 230, 230));
panel.setLayout(null);
if (withBorder) {
panel.setBorder(new LineBorder(Color.BLACK, 2));
}
return panel;
}
protected JScrollPane createTable(String from_To) {
String[] columnNames = { from_To, "Subject", "Date" };
DefaultTableModel inboxTableModel = new DefaultTableModel(columnNames, 0);
inboxTable = new JTable(inboxTableModel);
inboxTable.setFont(new Font("Times New Roman", Font.PLAIN, 16));
inboxTable.setRowHeight(24);
inboxTable.setDefaultEditor(Object.class, null);
JScrollPane scrollPane = new JScrollPane(inboxTable);
scrollPane.setBounds(0, 0, 750, 619);
return scrollPane;
}
protected JLabel createLabel(String text, int x, int y, int width, int height, int fontSize) {
JLabel label = new JLabel(text);
label.setFont(new Font("Times New Roman", Font.PLAIN, fontSize));
label.setBounds(x, y, width, height);
return label;
}
protected JButton createButton(String text, int x, int y, int width, int height, int fontSize) {
JButton button = new JButton(text);
button.setFont(new Font("Times New Roman", Font.PLAIN, fontSize));
button.setBounds(x, y, width, height);
return button;
}
protected JTextField createTextField(int x, int y, int width, int height) {
JTextField textField = new JTextField();
textField.setFont(new Font("Times New Roman", Font.PLAIN, 20));
textField.setBounds(x, y, width, height);
return textField;
}
protected JPasswordField createPasswordField(int x, int y, int width, int height) {
JPasswordField passwordField = new JPasswordField();
passwordField.setFont(new Font("Times New Roman", Font.PLAIN, 20));
passwordField.setBounds(x, y, width, height);
return passwordField;
}
protected void showWindow() {
this.setVisible(true);
}
protected void closeWindow() {
this.dispose();
}
protected void showError(String error) {
JOptionPane.showMessageDialog(this, error, "Error", JOptionPane.ERROR_MESSAGE);
}
protected void showInfo(String info) {
JOptionPane.showMessageDialog(this, info, "Information", JOptionPane.INFORMATION_MESSAGE);
}
}

View File

@ -1,76 +1,56 @@
package gui; package gui;
import java.awt.Color; import javax.swing.*;
import java.awt.Cursor; import javax.swing.table.DefaultTableModel;
import java.awt.Font; import java.awt.*;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.ArrayList; import java.util.ArrayList;
import javax.swing.JFrame; public class TrashWindow extends TemplateWindow {
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableModel;
import domain.EasyMail;
public class TrashWindow extends JFrame {
private JTable inboxTable;
private DefaultTableModel inboxTableModel; private DefaultTableModel inboxTableModel;
private EasyMail fassade;
private JLabel fullName,username;
public TrashWindow() { public TrashWindow() {
setResizable(false); super("Trash - EasyMail");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); initUI();
setBounds(100, 100, 1143, 774); }
setLocationRelativeTo(null);
JPanel contentPane = new JPanel(); private void initUI() {
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); initNavigationPanel();
setContentPane(contentPane); initTablePanel();
contentPane.setLayout(null); initComposePanel();
showUserDetails();
}
// Profile Panel private void initComposePanel() {
JPanel panel = new JPanel(); JPanel composePanel = createPanel(367, 11, 750, 86, new Color(230, 230, 230), true);
panel.setBackground(new Color(230, 230, 230)); contentPane.add(composePanel);
panel.setBorder(new LineBorder(new Color(0, 0, 0), 2)); composePanel.setLayout(null);
panel.setBounds(10, 273, 347, 451);
contentPane.add(panel);
panel.setLayout(null);
JLabel inbox = new JLabel("Inbox"); }
inbox.setForeground(new Color(0, 0, 255));
inbox.setFont(new Font("Times New Roman", Font.PLAIN, 22)); private void initNavigationPanel() {
inbox.setBounds(10, 11, 165, 39); JPanel navigationPanel = createPanel(10, 273, 347, 451, new Color(230, 230, 230), true);
panel.add(inbox); contentPane.add(navigationPanel);
navigationPanel.setLayout(null);
JLabel inbox = createLabel("Inbox", 10, 11, 165, 39, 22);
inbox.setForeground(Color.BLUE);
inbox.setCursor(new Cursor(Cursor.HAND_CURSOR)); inbox.setCursor(new Cursor(Cursor.HAND_CURSOR));
inbox.addMouseListener(new MouseAdapter() { inbox.addMouseListener(new MouseAdapter() {
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
EasyMailWindow easyMail = new EasyMailWindow(); EasyMailWindow easyMailWindow = new EasyMailWindow();
closeWindow(); closeWindow();
easyMail.showWindow(); easyMailWindow.showWindow();
easyMail.getFassade(fassade); easyMailWindow.getAllInboxEmails();
easyMail.getAllInboxEmails();
} }
}); });
navigationPanel.add(inbox);
JLabel sentEmails = createLabel("Sent", 10, 61, 165, 39, 22);
sentEmails.setForeground(Color.BLUE);
JLabel sentEmails = new JLabel("Sent");
sentEmails.setForeground(new Color(0, 0, 255));
sentEmails.setFont(new Font("Times New Roman", Font.PLAIN, 22));
sentEmails.setBounds(10, 61, 165, 39);
panel.add(sentEmails);
sentEmails.setCursor(new Cursor(Cursor.HAND_CURSOR)); sentEmails.setCursor(new Cursor(Cursor.HAND_CURSOR));
sentEmails.addMouseListener(new MouseAdapter() { sentEmails.addMouseListener(new MouseAdapter() {
@Override @Override
@ -78,101 +58,29 @@ public class TrashWindow extends JFrame {
SentWindow sentWindow = new SentWindow(); SentWindow sentWindow = new SentWindow();
closeWindow(); closeWindow();
sentWindow.showWindow(); sentWindow.showWindow();
sentWindow.getFassade(fassade);
sentWindow.getAllSentEmails(); sentWindow.getAllSentEmails();
} }
}); });
navigationPanel.add(sentEmails);
JPanel panel_1 = new JPanel();
panel_1.setBackground(new Color(230, 230, 230));
panel_1.setBorder(new LineBorder(new Color(0, 0, 0), 2));
panel_1.setBounds(10, 11, 347, 239);
contentPane.add(panel_1);
panel_1.setLayout(null);
JLabel profile = new JLabel("Profile");
profile.setFont(new Font("Times New Roman", Font.BOLD, 30));
profile.setBounds(10, 11, 203, 41);
panel_1.add(profile);
fullName = new JLabel("Full Name: ");
fullName.setFont(new Font("Times New Roman", Font.PLAIN, 20));
fullName.setBounds(10, 63, 327, 41);
panel_1.add(fullName);
username = new JLabel("Email: ");
username.setFont(new Font("Times New Roman", Font.PLAIN, 20));
username.setBounds(10, 106, 327, 39);
panel_1.add(username);
JLabel editProfile = new JLabel("Edit profile");
editProfile.setForeground(Color.BLUE);
editProfile.setFont(new Font("Times New Roman", Font.PLAIN, 22));
editProfile.setBounds(10, 189, 165, 39);
panel_1.add(editProfile);
JPanel panel_2 = new JPanel();
panel_2.setBorder(new LineBorder(new Color(0, 0, 0), 2));
panel_2.setBackground(new Color(230, 230, 230));
panel_2.setBounds(367, 11, 750, 86);
contentPane.add(panel_2);
panel_2.setLayout(null);
JPanel panel_3 = new JPanel();
panel_3.setBorder(new LineBorder(new Color(0, 0, 0)));
panel_3.setBounds(367, 105, 750, 619);
contentPane.add(panel_3);
String[] columnNames = { "From", "Subject", "Date" };
inboxTableModel = new DefaultTableModel(columnNames, 0);
inboxTable = new JTable(inboxTableModel);
inboxTable.setFont(new Font("Times New Roman", Font.PLAIN, 16));
inboxTable.setRowHeight(24);
inboxTable.setDefaultEditor(Object.class, null);
panel_3.setLayout(null);
JScrollPane scrollPane = new JScrollPane(inboxTable);
scrollPane.setBounds(0, 0, 750, 619);
panel_3.add(scrollPane);
} }
public void showUserDetails() { private void initTablePanel() {
String[] getDetails = fassade.sendUserDetails(); JPanel tablePanel = createPanel(367, 105, 750, 619, null, true);
String fullName = getDetails[0]; contentPane.add(tablePanel);
String username = getDetails[1]; tablePanel.setLayout(null);
this.fullName.setText(this.fullName.getText() + fullName); JScrollPane scrollPane = createTable("From");
this.username.setText(this.username.getText() + username); inboxTableModel = (DefaultTableModel) inboxTable.getModel();
scrollPane.setBounds(0, 0, 750, 619);
tablePanel.add(scrollPane);
} }
public void getAllTrashEmails() { public void getAllTrashEmails() {
ArrayList<String> getEmails = fassade.sendAllEmailsToTrashWindow(); ArrayList<String> getEmails = fassade.sendAllEmailsToTrashWindow();
String[] splitEmail;
if (getEmails.size() > 0)
for (String tempEmail : getEmails) { for (String tempEmail : getEmails) {
splitEmail = tempEmail.split(","); String[] splitEmail = tempEmail.split(",");
String from = splitEmail[0].toString(); Object[] newEmail = {splitEmail[0], splitEmail[1], splitEmail[2]};
String subject = splitEmail[1];
String date = splitEmail[2];
Object[] newEmail = {from, subject, date};
inboxTableModel.addRow(newEmail); inboxTableModel.addRow(newEmail);
} }
} }
public void getFassade(EasyMail fassade) {
this.fassade = fassade;
}
public void showWindow() {
this.setVisible(true);
}
public void closeWindow() {
this.dispose();
}
public void showError(String error) {
JOptionPane.showMessageDialog(this, "Error", error, JOptionPane.ERROR_MESSAGE);
}
} }