package com.horstmann.violet.framework;
import java.beans.EventHandler;
public class EditorFrame {
protected Open open;
protected InputStream in;
EditorFrame(Class appClass) {
/* fileMenu.add(factory.createMenuItem(
"file.open", this, "openFile"));
*/
fileMenu.add(factory.createMenuItem(
"file.open", new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
openFile();
}
}));
}
/**
Asks the user to open a graph file.
*/
public void openFile()
{
try
{
open = fileService.open(null, null, violetFilter);
in = open.getInputStream();
if (in != null)
{
Graph graph = read(in);
GraphFrame frame = new GraphFrame(graph);
addInternalFrame(frame);
frame.setFileName(open.getName());
// addRecentFile(open.getName());
setTitle();
}
}
catch (IOException exception) {
JOptionPane.showInternalMessageDialog(desktop,
exception);
}
}
/**
* Opens a file with the given name, or switches to the frame if it is already open.
* @param name the file name
*/
public void open(String name)
{
JInternalFrame[] frames = desktop.getAllFrames();
for (int i = 0; i < frames.length; i++)
{
if (frames[i] instanceof GraphFrame)
{
GraphFrame frame = (GraphFrame)frames[i];
if (frame.getFileName().equals(name))
{
try
{
frame.toFront();
frame.setSelected(true);
}
catch (PropertyVetoException exception)
{
}
return;
}
}
}
try
{
Graph graph = read(new FileInputStream(name));
GraphFrame frame = new GraphFrame(graph);
addInternalFrame(frame);
frame.setFileName(name);
}
catch (IOException exception)
{
JOptionPane.showInternalMessageDialog(desktop,
exception);
}
}
}