meyfa/structogram2byob

View on GitHub
src/main/java/structogram2byob/gui/dialogs/SwingDialogFactory.java

Summary

Maintainability
A
1 hr
Test Coverage
F
0%
package structogram2byob.gui.dialogs;

import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileFilter;


/**
 * Implementation of a dialog factory for use in a Swing GUI.
 */
public class SwingDialogFactory implements IDialogFactory
{
    @Override
    public IDialog<File> createSaveDialog(FileFilter type)
    {
        JFileChooser chooser = new JFileChooser();

        chooser.setFileFilter(type);
        chooser.setAcceptAllFileFilterUsed(true);

        return () -> {
            if (chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
                return chooser.getSelectedFile();
            }
            return null;
        };
    }

    @Override
    public IDialog<File> createOpenDialog(FileFilter type)
    {
        JFileChooser chooser = new JFileChooser();

        chooser.setFileFilter(type);
        chooser.setAcceptAllFileFilterUsed(true);

        return () -> {
            if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                return chooser.getSelectedFile();
            }
            return null;
        };
    }

    @Override
    public IDialog<Boolean> createConfirmationDialog(String message)
    {
        return () -> JOptionPane.showConfirmDialog(null, message, "Confirm action",
                JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION;
    }

    @Override
    public IDialog<Void> createMessageDialog(String message)
    {
        return () -> {
            JOptionPane.showMessageDialog(null, message, "Information",
                    JOptionPane.INFORMATION_MESSAGE);
            return null;
        };
    }
}