/***************************************************************************
Title: GraphBrowser/GraphBrowserFrame.java
Author: Stefan Berghofer, TU Muenchen
Options: :tabSize=2:
This class is the frame for the stand-alone application. It contains
methods for handling menubar events.
***************************************************************************/
package GraphBrowser;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import awtUtilities.*;
public class GraphBrowserFrame extends Frame implements ActionListener {
GraphBrowser gb;
MenuItem i1, i2;
String graphDir, psDir;
public void checkMenuItems() {
if (gb.isEmpty()) {
i1.setEnabled(false);
i2.setEnabled(false);
} else {
i1.setEnabled(true);
i2.setEnabled(true);
}
}
public void actionPerformed(ActionEvent evt) {
String label = evt.getActionCommand();
if (label.equals("Quit"))
System.exit(0);
else if (label.equals("Export to PostScript")) {
PS(true, label);
return;
} else if (label.equals("Export to EPS")) {
PS(false, label);
return;
} else if (label.equals("Open ...")) {
FileDialog fd = new FileDialog(this, "Open graph file", FileDialog.LOAD);
if (graphDir != null)
fd.setDirectory(graphDir);
fd.setVisible(true);
if (fd.getFile() == null) return;
graphDir = fd.getDirectory();
String fname = graphDir + fd.getFile();
GraphBrowser gb2 = new GraphBrowser(fname);
try {
InputStream is = new FileInputStream(fname);
gb2.initBrowser(is, false);
is.close();
} catch (IOException exn) {
String button[] = {"OK"};
MessageDialog md = new MessageDialog(this, "Error",
"Can't open file " + fname + ".", button);
md.setSize(350, 200);
md.setVisible(true);
return;
}
remove(gb);
add("Center", gb2);
gb = gb2;
checkMenuItems();
validate();
}
}
public void PS(boolean printable,String label) {
FileDialog fd=new FileDialog(this,label,FileDialog.SAVE);
if (psDir!=null)
fd.setDirectory(psDir);
fd.setVisible(true);
if (fd.getFile()==null) return;
psDir=fd.getDirectory();
String fname=psDir+fd.getFile();
if ((new File(fname)).exists()) {
String buttons[]={"Overwrite","Cancel"};
MessageDialog md=new MessageDialog(this,"Warning",
"Warning: File "+fname+" already exists. Overwrite?",
buttons);
md.setSize(350,200);
md.setVisible(true);
if (md.getText().equals("Cancel")) return;
}
try {
gb.PS(fname,printable);
} catch (IOException exn) {
String button[]={"OK"};
MessageDialog md=new MessageDialog(this,"Error",
"Unable to write file "+fname+".",button);
md.setSize(350,200);
md.setVisible(true);
}
}
public GraphBrowserFrame(GraphBrowser br) {
super("GraphBrowser");
MenuItem i3, i4;
gb = br;
MenuBar mb = new MenuBar();
Menu m1 = new Menu("File");
m1.add(i3 = new MenuItem("Open ..."));
m1.add(i1 = new MenuItem("Export to PostScript"));
m1.add(i2 = new MenuItem("Export to EPS"));
m1.add(i4 = new MenuItem("Quit"));
i1.addActionListener(this);
i2.addActionListener(this);
i3.addActionListener(this);
i4.addActionListener(this);
checkMenuItems();
mb.add(m1);
setMenuBar(mb);
add("Center", br);
addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}