package cz.cuni.lf1.lge.ThunderSTORM.util; import cz.cuni.lf1.lge.ThunderSTORM.calibration.DefocusCalibration; import ij.IJ; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; public final class UI { public static void showAnotherLocationDialog(IOException ex, final DefocusCalibration calibration) { final JDialog dialog = new JDialog(IJ.getInstance(), "Error"); dialog.getContentPane().setLayout(new BorderLayout(0, 10)); dialog.getRootPane().setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); dialog.add(new JLabel("Could not save calibration file. " + ex.getMessage(), SwingConstants.CENTER)); JPanel buttonsPane = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0)); JButton ok = new JButton("OK"); dialog.getRootPane().setDefaultButton(ok); ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialog.dispose(); } }); JButton newLocation = new JButton("Save to other path"); newLocation.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFileChooser jfc = new JFileChooser(IJ.getDirectory("image")); jfc.showSaveDialog(null); File f = jfc.getSelectedFile(); if(f != null) { try { calibration.saveToFile(f.getAbsolutePath()); } catch(IOException ex) { showAnotherLocationDialog(ex, calibration); } } dialog.dispose(); } }); buttonsPane.add(newLocation); buttonsPane.add(ok); dialog.getContentPane().add(buttonsPane, BorderLayout.SOUTH); dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); dialog.getRootPane().setDefaultButton(ok); dialog.pack(); ok.requestFocusInWindow(); dialog.setLocationRelativeTo(null); dialog.setVisible(true); } }