package com.horstmann.violet.framework;
public class EditorFrame {
protected JMenu recentFilesMenu;
EditorFrame(Class appClass) {
recentFiles = new ArrayList();
recentFilesMenu = factory.createMenu("file.recent");
buildRecentFilesMenu();
fileMenu.add(recentFilesMenu);
}
/**
* Adds a file name to the "recent files" list and rebuilds the "recent files" menu.
* @param newFile the file name to add
*/
private void addRecentFile(final String newFile)
{
recentFiles.remove(newFile);
if (newFile == null || newFile.equals("")) return;
recentFiles.add(0, newFile);
buildRecentFilesMenu();
}
/**
* Rebuilds the "recent files" menu.
*/
private void buildRecentFilesMenu()
{
recentFilesMenu.removeAll();
for (int i = 0; i < recentFiles.size(); i++)
{
final String file = (String) recentFiles.get(i);
String name = new File(file).getName();
if (i < 10) name = i + " " + name;
else if (i == 10) name = "0 " + name;
JMenuItem item = new JMenuItem(name);
if (i < 10) item.setMnemonic((char)('0' + i));
else if (i == 10) item.setMnemonic('0');
recentFilesMenu.add(item);
item.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
open(file);
}
});
}
}
public void openFile()
{
original();
if (in != null)
{
try
{
addRecentFile(open.getName());
}
catch (IOException exception)
{
JOptionPane.showInternalMessageDialog(desktop, exception);
}
}
}
}