package ls.graph.ui;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
import ls.graph.script.Algorithm;
import ls.graph.script.AlgorithmListener;
import ls.graph.ui.dialogs.AlgorithmSettingsDialog;
import ls.graph.ui.dialogs.GraphSettingsDialog;
import ls.graph.ui.dialogs.ScriptIncludesDialog;
public class Menu extends JMenuBar implements AlgorithmListener
{
private static final long serialVersionUID = 1L;
MainWindow mainWindow = null;
ExitAction actExit = null;
LoadScriptAction actLoad = null;
SaveScriptAction actSave = null;
SaveGraphAction actSaveGraph = null;
LoadGraphAction actLoadGraph = null;
JMenuItem itmExit,itmLoad,itmSave,itmSaveGraph,itmLoadGraph;
private ScriptIncludesDialog scriptsDialog = null;
private GraphSettingsDialog graphSettingsDialog = null;
private AlgorithmSettingsDialog algorithmSettingsDialog = null;
Menu(MainWindow w)
{
super();
this.mainWindow = w;
initComponents();
}
private void initComponents()
{
JMenu menu = new JMenu("System");
menu.setMnemonic(KeyEvent.VK_Y);
actExit = new ExitAction(mainWindow);
itmExit = new JMenuItem(actExit);
itmExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,KeyEvent.ALT_MASK));
menu.add(itmExit);
this.add(menu);
menu = new JMenu("Script");
menu.setMnemonic(KeyEvent.VK_S);
actLoad = new LoadScriptAction(mainWindow,mainWindow);
itmLoad = new JMenuItem(actLoad);
itmLoad.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,KeyEvent.CTRL_MASK));
menu.add(itmLoad);
actSave = new SaveScriptAction(mainWindow,mainWindow);
itmSave = new JMenuItem(actSave);
itmSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,KeyEvent.CTRL_MASK));
menu.add(itmSave);
Action actScriptIncludesDialog = new AbstractAction("Script Settings")
{
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent e)
{
//Launch script includes dialog
if (scriptsDialog == null)
scriptsDialog = new ScriptIncludesDialog(mainWindow);
scriptsDialog.pack();
scriptsDialog.setVisible(true);
}
};
menu.add(new JMenuItem(actScriptIncludesDialog));
Action actAlgorithmSettings = new AbstractAction("Algorithm Settings")
{
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent e)
{
if (algorithmSettingsDialog == null)
algorithmSettingsDialog = new AlgorithmSettingsDialog(mainWindow);
algorithmSettingsDialog.pack();
algorithmSettingsDialog.setVisible(true);
}
};
menu.add(new JMenuItem(actAlgorithmSettings));
this.add(menu);
menu = new JMenu("Graph");
menu.setMnemonic(KeyEvent.VK_G);
actSaveGraph = new SaveGraphAction(mainWindow,mainWindow);
itmSaveGraph = new JMenuItem(actSaveGraph);
menu.add(itmSaveGraph);
actLoadGraph = new LoadGraphAction(mainWindow,mainWindow);
itmLoadGraph = new JMenuItem(actLoadGraph);
menu.add(itmLoadGraph);
Action actGraphSettings = new AbstractAction("Graph Settings")
{
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent e)
{
if (graphSettingsDialog == null)
graphSettingsDialog = new GraphSettingsDialog(mainWindow);
graphSettingsDialog.pack();
graphSettingsDialog.setVisible(true);
}
};
JMenuItem itmGraphSettings = new JMenuItem(actGraphSettings);
menu.add(itmGraphSettings);
this.add(menu);
}
public void executionEnded(Algorithm alg)
{
itmExit.setEnabled(true);
itmLoad.setEnabled(true);
itmSave.setEnabled(true);
}
public void executionStarted(Algorithm alg)
{
itmExit.setEnabled(false);
itmLoad.setEnabled(false);
itmSave.setEnabled(false);
}
public void startingStep(int stepIndex)
{}
} //end of Menu class