package gui.actions;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JDialog;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.WindowConstants;
import gui.views.HistoryDialog;
import gui.views.MainWindow;
import gui.views.components.AboutPanel;
import gui.views.components.HidableOKCancelDialog;
/**
* Contains all the actions for the view MainWindow.
*
* @author Maxime PIA
*/
public class MainWindowActions {
private MainWindow mainWindow;
public MainWindowActions(MainWindow mainWindow) {
this.mainWindow = mainWindow;
}
/**
* Sets the close action for the window.
*
* @param closeConfirm
* The confirmation dialog.
*/
public void setCloseAction(final HidableOKCancelDialog closeConfirm) {
mainWindow.setDefaultCloseOperation(
WindowConstants.DO_NOTHING_ON_CLOSE
);
mainWindow.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int userResponse = closeConfirm.show();
if (userResponse == JOptionPane.OK_OPTION) {
mainWindow.dispose();
System.exit(0);
}
}
});
}
/**
* Associates a dialog to a menu item.
*
* @param item
* The menu item.
* @param dialog
* The dialog.
*/
public void setDialog(final JMenuItem item, final JDialog dialog) {
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog.setVisible(true);
}
});
}
/**
* Sets the action for the "exit" menu item.
*
* @param quitItem
* The menu item.
*/
public void setExitItemAction(JMenuItem quitItem) {
quitItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mainWindow.dispatchEvent(
new WindowEvent(mainWindow, WindowEvent.WINDOW_CLOSING)
);
}
});
}
/**
* Sets the actions for the "previous line" menu item.
*
* @param previousLineItem
* The menu item.
* @param historyDialog
* The dialog contain the history of the converted lines.
*/
public void setPreviousLineItemAction(final JMenuItem previousLineItem,
final HistoryDialog historyDialog) {
previousLineItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (historyDialog.getRowCount() == 0) return;
historyDialog.setOutputAsCurrentAt(
Math.max(0, historyDialog.getLatestDisplayedRowIndex() - 1)
);
}
});
}
/**
* Sets the actions for the "next line" menu item.
*
* @param nextLineItem
* The menu item.
* @param historyDialog
* The dialog contain the history of the converted lines.
*/
public void setNextLineItemAction(final JMenuItem nextLineItem,
final HistoryDialog historyDialog) {
nextLineItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (historyDialog.getRowCount() == 0) return;
historyDialog.setOutputAsCurrentAt(Math.min(
historyDialog.getRowCount() - 1,
historyDialog.getLatestDisplayedRowIndex() + 1
));
}
});
}
/**
* Sets the action for the "about" menu item.
*
* @param aboutItem
* The menu item.
*/
public void setAboutItemAction(final JMenuItem aboutItem) {
aboutItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
JOptionPane.showMessageDialog(
mainWindow,
new AboutPanel(),
aboutItem.getName(),
JOptionPane.PLAIN_MESSAGE
);
}
});
}
}