implements Search Email logic
parent
eea5ccba6b
commit
c71bece39b
|
@ -5,6 +5,7 @@ import java.util.ArrayList;
|
|||
|
||||
import domain.email.Email;
|
||||
import domain.email.EmailFolder;
|
||||
import domain.email.EmailNotFoundException;
|
||||
import domain.user.*;
|
||||
|
||||
public class EasyMail {
|
||||
|
@ -13,16 +14,19 @@ public class EasyMail {
|
|||
|
||||
public EasyMail() {
|
||||
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'});
|
||||
//obai.albek@easymail.de
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
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' });
|
||||
// obai.albek@easymail.de
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void userRegister(String firstname, String lastName, String email, int year, int day, String monthName,char[] password, char[] passwordConfirmation) throws Exception {
|
||||
this.currentUser = userManager.addUser(firstname, lastName, email, year, day, monthName, password,passwordConfirmation);
|
||||
public void userRegister(String firstname, String lastName, String email, int year, int day, String monthName,
|
||||
char[] password, char[] passwordConfirmation) throws Exception {
|
||||
this.currentUser = userManager.addUser(firstname, lastName, email, year, day, monthName, password,
|
||||
passwordConfirmation);
|
||||
}
|
||||
|
||||
public boolean userSignIn(String username, char[] password) throws Exception {
|
||||
|
@ -38,11 +42,11 @@ public class EasyMail {
|
|||
return userManager.removeUser(username);
|
||||
}
|
||||
|
||||
public void updateUser(String firstName, String lastName, String username, int year, int day, String monthName,
|
||||
char[] password, char[] passwordConfirmation)
|
||||
throws Exception {
|
||||
public void updateUser(String firstName, String lastName, String username, int year, int day, String monthName,
|
||||
char[] password, char[] passwordConfirmation) throws Exception {
|
||||
|
||||
this.currentUser = userManager.updateUser(firstName, lastName, username, year, day, monthName, password, passwordConfirmation);
|
||||
this.currentUser = userManager.updateUser(firstName, lastName, username, year, day, monthName, password,
|
||||
passwordConfirmation);
|
||||
|
||||
}
|
||||
|
||||
|
@ -70,10 +74,18 @@ public class EasyMail {
|
|||
return sent;
|
||||
}
|
||||
|
||||
public String searchEmailInInboxFolder(String subject) throws EmailNotFoundException {
|
||||
if (subject.trim().isEmpty())
|
||||
throw new IllegalArgumentException("subject field is required!");
|
||||
|
||||
Email email = this.currentUser.getUsermail().getInbox().getEmailBySubject(subject);
|
||||
return email.showEmails();
|
||||
}
|
||||
|
||||
public String[] sendUserDetails() {
|
||||
String[] details = new String[2];
|
||||
String name = this.currentUser.getFirstname() + " " + this.currentUser.getLastname();
|
||||
String username = this.currentUser.getUsermail().getUserEmail();
|
||||
String username = this.currentUser.getUsermail().getUserEmail();
|
||||
details[0] = name;
|
||||
details[1] = username;
|
||||
|
||||
|
@ -84,38 +96,33 @@ public class EasyMail {
|
|||
return this.currentUser.getUsermail().getUserEmail();
|
||||
}
|
||||
|
||||
|
||||
public ArrayList<String> sendAllEmailsToSentWindow() {
|
||||
ArrayList<Email> allEmails = currentUser.getUsermail().getSentFolder().listAllEmails();
|
||||
return extractEmails(allEmails, true); // true = showEmailsInSent
|
||||
ArrayList<Email> allEmails = currentUser.getUsermail().getSentFolder().listAllEmails();
|
||||
return extractEmails(allEmails, true); // true = showEmailsInSent
|
||||
}
|
||||
|
||||
public ArrayList<String> sendAllEmailsToInboxWindow() {
|
||||
ArrayList<Email> allEmails = currentUser.getUsermail().getInbox().listAllEmails();
|
||||
return extractEmails(allEmails, false); // false = normal showEmails
|
||||
ArrayList<Email> allEmails = currentUser.getUsermail().getInbox().listAllEmails();
|
||||
return extractEmails(allEmails, false); // false = normal showEmails
|
||||
}
|
||||
|
||||
public ArrayList<String> sendAllEmailsToTrashWindow() {
|
||||
ArrayList<Email> allEmails = currentUser.getUsermail().getTrashFolder().listAllEmails();
|
||||
return extractEmails(allEmails, false);
|
||||
ArrayList<Email> allEmails = currentUser.getUsermail().getTrashFolder().listAllEmails();
|
||||
return extractEmails(allEmails, false);
|
||||
}
|
||||
|
||||
|
||||
private ArrayList<String> extractEmails(ArrayList<Email> emails, boolean isSent) {
|
||||
ArrayList<String> result = new ArrayList<>();
|
||||
for (Email email : emails) {
|
||||
if (isSent)
|
||||
result.add(email.showEmailsInSent());
|
||||
else
|
||||
result.add(email.showEmails());
|
||||
ArrayList<String> result = new ArrayList<>();
|
||||
for (Email email : emails) {
|
||||
if (isSent)
|
||||
result.add(email.showEmailsInSent());
|
||||
else
|
||||
result.add(email.showEmails());
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void validateEmailOperation(String subject) {
|
||||
if (subject == null || subject.trim().isEmpty()) {
|
||||
throw new IllegalArgumentException("Subject field is required!");
|
||||
|
@ -131,8 +138,6 @@ public class EasyMail {
|
|||
return this.currentUser.getUsermail().getTrashFolder().addEmail(removedEmail);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public boolean removeEmailFromInbox(String subject) throws Exception {
|
||||
return moveEmailToTrash(subject, this.currentUser.getUsermail().getInbox());
|
||||
}
|
||||
|
@ -146,8 +151,6 @@ public class EasyMail {
|
|||
this.currentUser.getUsermail().getTrashFolder().removeEmail(subject);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -61,5 +61,6 @@ public class Inbox implements EmailFolder {
|
|||
return new ArrayList<>(receivedEmails);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,9 @@ package gui;
|
|||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
|
||||
import domain.email.EmailNotFoundException;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
@ -10,17 +13,19 @@ import java.util.ArrayList;
|
|||
public class EasyMailWindow extends TemplateWindow {
|
||||
|
||||
private DefaultTableModel inboxTableModel;
|
||||
private JTextField searchField;
|
||||
|
||||
public EasyMailWindow() {
|
||||
super("EasyMail");
|
||||
initUI();
|
||||
showWindow();
|
||||
}
|
||||
|
||||
private void initUI() {
|
||||
initNavigationPanel();
|
||||
initComposePanel();
|
||||
initTablePanel();
|
||||
getAllInboxEmails();
|
||||
getAllInboxEmails("");
|
||||
showUserDetails();
|
||||
}
|
||||
|
||||
|
@ -52,10 +57,10 @@ public class EasyMailWindow extends TemplateWindow {
|
|||
}
|
||||
});
|
||||
navigationPanel.add(trash);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void initComposePanel() {
|
||||
JPanel composePanel = createPanel(367, 11, 750, 86, new Color(230, 230, 230), true);
|
||||
contentPane.add(composePanel);
|
||||
|
@ -71,8 +76,30 @@ public class EasyMailWindow extends TemplateWindow {
|
|||
}
|
||||
});
|
||||
composePanel.add(writeEmail);
|
||||
|
||||
searchField = new PlaceholderTextField("Search By subject");
|
||||
searchField.setBounds(500, 30, 150, 40);
|
||||
composePanel.add(searchField);
|
||||
|
||||
JButton searchButton = new JButton("Search");
|
||||
searchButton.setBounds(660, 30, 80, 40);
|
||||
composePanel.add(searchButton);
|
||||
searchButton.addActionListener(e -> handleSearching());
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void handleSearching() {
|
||||
try {
|
||||
String getSubjct = searchField.getText();
|
||||
String email = fassade.searchEmailInInboxFolder(getSubjct);
|
||||
inboxTableModel.setRowCount(0);
|
||||
getAllInboxEmails(email);
|
||||
} catch (EmailNotFoundException e) {
|
||||
this.showError(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void initTablePanel() {
|
||||
JPanel tablePanel = createPanel(367, 105, 750, 619, null, true);
|
||||
contentPane.add(tablePanel);
|
||||
|
@ -109,23 +136,27 @@ public class EasyMailWindow extends TemplateWindow {
|
|||
|
||||
emailWindow.setEmailSentListener(() -> {
|
||||
inboxTableModel.setRowCount(0);
|
||||
getAllInboxEmails();
|
||||
getAllInboxEmails("");
|
||||
});
|
||||
}
|
||||
|
||||
public void getAllInboxEmails() {
|
||||
if (fassade.getUsernameFromCurrentUser() == null) {
|
||||
showError("No user is currently logged in!");
|
||||
return;
|
||||
public void getAllInboxEmails(String foundedEmail) {
|
||||
if (foundedEmail.trim().isEmpty()) {
|
||||
inboxTableModel.setRowCount(0);
|
||||
ArrayList<String> getEmails = fassade.sendAllEmailsToInboxWindow();
|
||||
if (getEmails != null && !getEmails.isEmpty())
|
||||
for (String tempEmail : getEmails) {
|
||||
String[] splitEmail = tempEmail.split(",");
|
||||
Object[] newEmail = { splitEmail[0], splitEmail[1], splitEmail[2] };
|
||||
inboxTableModel.addRow(newEmail);
|
||||
}
|
||||
}else {
|
||||
String[] splitEmail = foundedEmail.split(",");
|
||||
Object[] newEmail = { splitEmail[0], splitEmail[1], splitEmail[2] };
|
||||
inboxTableModel.addRow(newEmail);
|
||||
}
|
||||
inboxTableModel.setRowCount(0);
|
||||
ArrayList<String> getEmails = fassade.sendAllEmailsToInboxWindow();
|
||||
if (getEmails != null && !getEmails.isEmpty())
|
||||
for (String tempEmail : getEmails) {
|
||||
String[] splitEmail = tempEmail.split(",");
|
||||
Object[] newEmail = { splitEmail[0], splitEmail[1], splitEmail[2] };
|
||||
inboxTableModel.addRow(newEmail);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,6 +117,7 @@ public class EditProfileWindow extends TemplateWindow {
|
|||
|
||||
if (updateListener != null) {
|
||||
updateListener.onUpdateSuccess();
|
||||
restInputs();
|
||||
showInfo("Profile updated successfully!");
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package gui;
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
public class PlaceholderTextField extends JTextField {
|
||||
private String placeholder;
|
||||
|
||||
public PlaceholderTextField(String placeholder) {
|
||||
this.placeholder = placeholder;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
if (getText().isEmpty() && !(FocusManager.getCurrentKeyboardFocusManager().getFocusOwner() == this)) {
|
||||
Graphics2D g2 = (Graphics2D) g.create();
|
||||
g2.setColor(Color.GRAY);
|
||||
g2.setFont(getFont().deriveFont(Font.ITALIC));
|
||||
g2.drawString(placeholder, 5, getHeight() / 2 + getFont().getSize() / 2 - 2);
|
||||
g2.dispose();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,71 +9,86 @@ import java.util.ArrayList;
|
|||
|
||||
public class SentWindow extends TemplateWindow {
|
||||
|
||||
private DefaultTableModel inboxTableModel;
|
||||
private DefaultTableModel inboxTableModel;
|
||||
private JTextField searchField;
|
||||
|
||||
public SentWindow() {
|
||||
super("Sent - EasyMail");
|
||||
initUI();
|
||||
}
|
||||
public SentWindow() {
|
||||
super("Sent - EasyMail");
|
||||
initUI();
|
||||
}
|
||||
|
||||
private void initUI() {
|
||||
initNavigationPanel();
|
||||
initTablePanel();
|
||||
initComposePanel();
|
||||
showUserDetails();
|
||||
}
|
||||
private void initUI() {
|
||||
initNavigationPanel();
|
||||
initTablePanel();
|
||||
initComposePanel();
|
||||
showUserDetails();
|
||||
}
|
||||
|
||||
private void initComposePanel() {
|
||||
JPanel composePanel = createPanel(367, 11, 750, 86, new Color(230, 230, 230), true);
|
||||
contentPane.add(composePanel);
|
||||
composePanel.setLayout(null);
|
||||
private void initComposePanel() {
|
||||
JPanel composePanel = createPanel(367, 11, 750, 86, new Color(230, 230, 230), true);
|
||||
contentPane.add(composePanel);
|
||||
composePanel.setLayout(null);
|
||||
|
||||
}
|
||||
searchField = new PlaceholderTextField("Search By subject");
|
||||
searchField.setBounds(500, 30, 150, 40);
|
||||
composePanel.add(searchField);
|
||||
|
||||
private void initNavigationPanel() {
|
||||
JPanel navigationPanel = createPanel(10, 273, 347, 451, new Color(230, 230, 230), true);
|
||||
contentPane.add(navigationPanel);
|
||||
navigationPanel.setLayout(null);
|
||||
JButton searchButton = new JButton("Search");
|
||||
searchButton.setBounds(660, 30, 80, 40);
|
||||
composePanel.add(searchButton);
|
||||
searchButton.addActionListener(e -> handleSearching());
|
||||
|
||||
JLabel inbox = createLabel("Inbox", 10, 11, 165, 39, 22);
|
||||
inbox.setForeground(Color.BLUE);
|
||||
inbox.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||
inbox.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
EasyMailWindow easyMailWindow = new EasyMailWindow();
|
||||
closeWindow();
|
||||
easyMailWindow.showWindow();
|
||||
easyMailWindow.getAllInboxEmails();
|
||||
}
|
||||
});
|
||||
navigationPanel.add(inbox);
|
||||
}
|
||||
|
||||
JLabel trash = createLabel("Trash", 10, 61, 165, 39, 22);
|
||||
trash.setForeground(Color.BLUE);
|
||||
trash.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||
trash.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
TrashWindow trashWindow = new TrashWindow();
|
||||
closeWindow();
|
||||
trashWindow.showWindow();
|
||||
trashWindow.getAllTrashEmails();
|
||||
}
|
||||
});
|
||||
navigationPanel.add(trash);
|
||||
}
|
||||
public void handleSearching() {
|
||||
String getSubjct = searchField.getText();
|
||||
|
||||
private void initTablePanel() {
|
||||
JPanel tablePanel = createPanel(367, 105, 750, 619, null, true);
|
||||
contentPane.add(tablePanel);
|
||||
tablePanel.setLayout(null);
|
||||
}
|
||||
|
||||
JScrollPane scrollPane = createTable("To");
|
||||
inboxTableModel = (DefaultTableModel) inboxTable.getModel();
|
||||
scrollPane.setBounds(0, 0, 750, 619);
|
||||
tablePanel.add(scrollPane);
|
||||
}
|
||||
private void initNavigationPanel() {
|
||||
JPanel navigationPanel = createPanel(10, 273, 347, 451, new Color(230, 230, 230), true);
|
||||
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.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
EasyMailWindow easyMailWindow = new EasyMailWindow();
|
||||
closeWindow();
|
||||
easyMailWindow.showWindow();
|
||||
easyMailWindow.getAllInboxEmails("");
|
||||
}
|
||||
});
|
||||
navigationPanel.add(inbox);
|
||||
|
||||
JLabel trash = createLabel("Trash", 10, 61, 165, 39, 22);
|
||||
trash.setForeground(Color.BLUE);
|
||||
trash.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||
trash.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
TrashWindow trashWindow = new TrashWindow();
|
||||
closeWindow();
|
||||
trashWindow.showWindow();
|
||||
trashWindow.getAllTrashEmails();
|
||||
}
|
||||
});
|
||||
navigationPanel.add(trash);
|
||||
}
|
||||
|
||||
private void initTablePanel() {
|
||||
JPanel tablePanel = createPanel(367, 105, 750, 619, null, true);
|
||||
contentPane.add(tablePanel);
|
||||
tablePanel.setLayout(null);
|
||||
|
||||
JScrollPane scrollPane = createTable("To");
|
||||
inboxTableModel = (DefaultTableModel) inboxTable.getModel();
|
||||
scrollPane.setBounds(0, 0, 750, 619);
|
||||
tablePanel.add(scrollPane);
|
||||
}
|
||||
|
||||
public void getAllSentEmails() {
|
||||
ArrayList<String> getEmails = fassade.sendAllEmailsToSentWindow();
|
||||
|
@ -89,4 +104,3 @@ public class SentWindow extends TemplateWindow {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,8 @@ public abstract class TemplateWindow extends JFrame {
|
|||
protected static EasyMail fassade = new EasyMail();
|
||||
protected JLabel fullName, username, editProfile;
|
||||
protected JTable inboxTable;
|
||||
private JPanel profilePanel;
|
||||
|
||||
|
||||
public TemplateWindow(String title) {
|
||||
setTitle(title);
|
||||
|
@ -48,38 +50,50 @@ public abstract class TemplateWindow extends JFrame {
|
|||
|
||||
|
||||
|
||||
|
||||
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);
|
||||
editProfile.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||
editProfile.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
EditProfileWindow editProfile = new EditProfileWindow();
|
||||
editProfile.setUpdateProfileListener(() -> {
|
||||
showUserDetails();
|
||||
});
|
||||
if (profilePanel != null)
|
||||
contentPane.remove(profilePanel);
|
||||
|
||||
}
|
||||
});
|
||||
profilePanel = createPanel(10, 11, 347, 239, new Color(230, 230, 230), true);
|
||||
contentPane.add(profilePanel);
|
||||
profilePanel.setLayout(null);
|
||||
|
||||
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);
|
||||
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);
|
||||
editProfile.setCursor(new Cursor(Cursor.HAND_CURSOR));
|
||||
editProfile.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
EditProfileWindow editProfileWindow = new EditProfileWindow();
|
||||
editProfileWindow.setUpdateProfileListener(() -> {
|
||||
showUserDetails();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// User Details
|
||||
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);
|
||||
|
||||
contentPane.revalidate();
|
||||
contentPane.repaint();
|
||||
}
|
||||
|
||||
|
||||
// Neue Methode
|
||||
protected JPanel createPanel(int x, int y, int width, int height, Color bgColor, boolean withBorder) {
|
||||
JPanel panel = new JPanel();
|
||||
|
|
|
@ -44,7 +44,7 @@ public class TrashWindow extends TemplateWindow {
|
|||
EasyMailWindow easyMailWindow = new EasyMailWindow();
|
||||
closeWindow();
|
||||
easyMailWindow.showWindow();
|
||||
easyMailWindow.getAllInboxEmails();
|
||||
easyMailWindow.getAllInboxEmails("");
|
||||
}
|
||||
});
|
||||
navigationPanel.add(inbox);
|
||||
|
|
|
@ -5,7 +5,8 @@ import gui.*;
|
|||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
new RegisterWindow();
|
||||
EasyMailWindow easy = new EasyMailWindow();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue