school/cs240/record-indexer/src/client/components/FileMenu.java

103 lines
3.2 KiB
Java

package client.components;
import client.communication.Communicator;
import client.components.downloadModal.DownloadModal;
import client.components.loginWindow.ErrorLoginDialog;
import client.persistence.ImageState;
import client.persistence.NewProjectListener;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
public class FileMenu extends JMenuBar {
private MainWindow mainWindow;
private Communicator communicator;
private ImageState imageState;
private JMenuItem eMenuItem1;
public FileMenu(MainWindow mainWindow, Communicator communicator, ImageState imageState) {
this.mainWindow = mainWindow;
this.communicator = communicator;
this.imageState = imageState;
this.imageState.addNewProjectListener(newProjectListener);
setupView();
}
private void setupView() {
// Prevents menu items from filling the whole length
this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
JMenu file1 = new JMenu("File");
eMenuItem1 = new JMenuItem("Download Batch");
eMenuItem1.addActionListener(downloadBatchAction);
eMenuItem1.setEnabled(!imageState.isHasImage());
eMenuItem1.setToolTipText("Exit application");
JMenuItem eMenuItem2 = new JMenuItem("Logout");
eMenuItem2.addActionListener(logoutAction);
eMenuItem2.setToolTipText("Exit application");
JMenuItem eMenuItem3 = new JMenuItem("Exit");
eMenuItem3.addActionListener(exitAction);
eMenuItem2.setToolTipText("Exit application");
file1.add(eMenuItem1);
file1.add(eMenuItem2);
file1.add(eMenuItem3);
// Add to self
this.add(file1);
this.setBackground(Color.WHITE);
}
private void updateSettings() {
imageState.getSettings().setWindowHeight(mainWindow.getHeight());
imageState.getSettings().setWindowWidth(mainWindow.getWidth());
Point point = mainWindow.getLocationOnScreen();
imageState.getSettings().setWindowPositionX((int) point.getX());
imageState.getSettings().setWindowPositionY((int) point.getY());
imageState.save();
}
private ActionListener downloadBatchAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
DownloadModal downloadModal = new DownloadModal(imageState, communicator);
downloadModal.setVisible(true);
}
};
private ActionListener logoutAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
updateSettings();
mainWindow.dispose();
}
};
private ActionListener exitAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
updateSettings();
System.exit(1);
}
};
private NewProjectListener newProjectListener = new NewProjectListener() {
@Override
public void hasNewProject() {
boolean status = imageState.isHasImage();
eMenuItem1.setEnabled(!status);
}
};
}