public CheckList showAndEnterChecklist(File file, final IMarathonRuntime runtime, final JFrame instance) {
final CheckList checklist;
try {
checklist = CheckList.read(new FileInputStream(file));
CheckListForm checklistForm = new CheckListForm(checklist, Mode.ENTER);
final CheckListDialog dialog = new CheckListDialog((JFrame) null, checklistForm);
JButton screenCapture = UIUtils.createScreenCaptureButton();
screenCapture.addActionListener(new ActionListener() {
File captureFile = null;
public void actionPerformed(ActionEvent e) {
boolean iconify = false;
int state = -1;
try {
if (instance != null && instance.getState() != JFrame.ICONIFIED) {
iconify = true;
state = instance.getState();
}
if (iconify)
instance.setState(JFrame.ICONIFIED);
dialog.setVisible(false);
if (captureFile == null)
captureFile = runtime.getScreenCapture();
if (captureFile == null) {
JOptionPane.showMessageDialog(null, "Could not create a screen capture");
return;
}
try {
AnnotateScreenCapture annotate = new AnnotateScreenCapture(captureFile, true);
if (annotate.showDialog() == AnnotateScreenCapture.APPROVE_OPTION) {
annotate.saveToFile(captureFile);
checklist.setCaptureFile(captureFile.getName());
}
} catch (IOException e1) {
e1.printStackTrace();
}
} finally {
if (iconify)
instance.setState(state);
dialog.setVisible(true);
}
}
});
JButton saveButton = UIUtils.createSaveButton();
saveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.dispose();
}
});
dialog.setActionButtons(new JButton[] { screenCapture, saveButton });
dialog.setVisible(true);
} catch (Exception e1) {
JOptionPane.showMessageDialog(null, "Unable to read the checklist file");
return null;
}
addChecklist(checklist);