package ij.gui;
import ij.IJ;
import java.awt.*;
import java.awt.event.*;
public class SaveChangesDialog extends Dialog implements ActionListener, KeyListener {
private Button dontSave, cancel, save;
private boolean cancelPressed, savePressed;
public SaveChangesDialog(Frame parent, String fileName) {
super(parent, "Save?", true);
setLayout(new BorderLayout());
Panel panel = new Panel();
panel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));
Component message;
if (fileName.startsWith("Save "))
message = new Label(fileName);
else {
if (fileName.length()>22)
message = new MultiLineLabel("Save changes to\n" + "\"" + fileName + "\"?");
else
message = new Label("Save changes to \"" + fileName + "\"?");
}
message.setFont(new Font("Dialog", Font.BOLD, 12));
panel.add(message);
add("Center", panel);
panel = new Panel();
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 8, 8));
save = new Button(" Save ");
save.addActionListener(this);
save.addKeyListener(this);
cancel = new Button(" Cancel ");
cancel.addActionListener(this);
cancel.addKeyListener(this);
dontSave = new Button("Don't Save");
dontSave.addActionListener(this);
dontSave.addKeyListener(this);
if (ij.IJ.isMacintosh()) {
panel.add(dontSave);
panel.add(cancel);
panel.add(save);
} else {
panel.add(save);
panel.add(dontSave);
panel.add(cancel);
}
add("South", panel);
if (ij.IJ.isMacintosh())
setResizable(false);
pack();
GUI.centerOnImageJScreen(this);
show();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource()==cancel)
cancelPressed = true;
else if (e.getSource()==save)
savePressed = true;
closeDialog();
}
public boolean cancelPressed() {
if (cancelPressed)
ij.Macro.abort();
return cancelPressed;
}
public boolean savePressed() {
return savePressed;
}
void closeDialog() {
dispose();
}
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
IJ.setKeyDown(keyCode);
if (keyCode==KeyEvent.VK_ENTER)
closeDialog();
else if (keyCode==KeyEvent.VK_ESCAPE) {
cancelPressed = true;
closeDialog();
IJ.resetEscape();
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}