| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package org.leumasjaffe.recipe.controller;
- import java.awt.Component;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.Reader;
- import java.io.Writer;
- import java.util.Optional;
- import javax.swing.JFileChooser;
- import javax.swing.JOptionPane;
- import lombok.AccessLevel;
- import lombok.RequiredArgsConstructor;
- import lombok.SneakyThrows;
- import lombok.experimental.FieldDefaults;
- import lombok.experimental.NonFinal;
- @RequiredArgsConstructor
- @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
- class SwingSaveLoadHandle implements SaveLoadHandle {
- JFileChooser chooser = new JFileChooser();
- Component owner;
- @NonFinal File filename = null;
-
- @Override
- @SuppressWarnings("resource")
- @SneakyThrows(IOException.class)
- public Optional<Writer> writer() {
- if (filename != null) {
- return Optional.of(new FileWriter(filename));
- } else if (chooser.showSaveDialog(owner) == JFileChooser.APPROVE_OPTION) {
- filename = chooser.getSelectedFile();
- return Optional.of(new FileWriter(filename));
- } else {
- return Optional.empty();
- }
- }
-
- @Override
- @SuppressWarnings("resource")
- @SneakyThrows(FileNotFoundException.class)
- public Optional<Reader> reader() {
- if (chooser.showOpenDialog(owner) == JFileChooser.APPROVE_OPTION) {
- filename = chooser.getSelectedFile();
- return Optional.of(new FileReader(filename));
- } else {
- return Optional.empty();
- }
- }
- @Override
- public void error(Exception ex) {
- JOptionPane.showMessageDialog(owner, ex.getLocalizedMessage(),
- "File Error", JOptionPane.ERROR_MESSAGE);
- }
- @Override
- public void clear() {
- this.filename = null;
- }
- }
|