|
|
@@ -3,8 +3,7 @@ package org.leumasjaffe.recipe.view;
|
|
|
import javax.swing.JFrame;
|
|
|
import javax.swing.JTabbedPane;
|
|
|
|
|
|
-import org.leumasjaffe.container.functional.Result;
|
|
|
-import org.leumasjaffe.recipe.controller.IOController;
|
|
|
+import org.leumasjaffe.recipe.controller.FileController;
|
|
|
import org.leumasjaffe.recipe.model.Product;
|
|
|
import org.leumasjaffe.recipe.model.Recipe;
|
|
|
|
|
|
@@ -23,13 +22,13 @@ import java.awt.event.InputEvent;
|
|
|
|
|
|
@SuppressWarnings("serial")
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
-public class RecipeFrame extends JFrame {
|
|
|
- IOController io = new IOController();
|
|
|
+public class RecipeFrame extends JFrame implements FileController.Model {
|
|
|
SummaryPanel summaryPanel;
|
|
|
JTabbedPane tabbedPane;
|
|
|
|
|
|
public RecipeFrame() {
|
|
|
-
|
|
|
+ FileController<RecipeFrame> fileController = new FileController<>(this);
|
|
|
+
|
|
|
final int MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
|
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
|
|
|
|
@@ -41,18 +40,22 @@ public class RecipeFrame extends JFrame {
|
|
|
|
|
|
JMenuItem mntmNew = new JMenuItem("New");
|
|
|
mntmNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, MASK));
|
|
|
+ mntmNew.addActionListener(e -> fileController.create());
|
|
|
mnFile.add(mntmNew);
|
|
|
|
|
|
JMenuItem mntmOpen = new JMenuItem("Open");
|
|
|
mntmOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, MASK));
|
|
|
+ mntmNew.addActionListener(e -> fileController.open());
|
|
|
mnFile.add(mntmOpen);
|
|
|
|
|
|
JMenuItem mntmSave = new JMenuItem("Save");
|
|
|
mntmSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, MASK));
|
|
|
+ mntmNew.addActionListener(e -> fileController.save());
|
|
|
mnFile.add(mntmSave);
|
|
|
|
|
|
JMenuItem mntmSaveAs = new JMenuItem("Save As");
|
|
|
mntmSaveAs.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, MASK | InputEvent.SHIFT_MASK));
|
|
|
+ mntmNew.addActionListener(e -> fileController.saveAs());
|
|
|
mnFile.add(mntmSaveAs);
|
|
|
|
|
|
JMenuItem mntmQuit = new JMenuItem("Quit");
|
|
|
@@ -66,28 +69,20 @@ public class RecipeFrame extends JFrame {
|
|
|
summaryPanel = new SummaryPanel();
|
|
|
tabbedPane.addTab("Summary", summaryPanel);
|
|
|
|
|
|
- // TODO Switch these around...
|
|
|
-// setModel(new Recipe());
|
|
|
- open("src/test/resources/example.json");
|
|
|
+// fileController.create();
|
|
|
+ fileController.open("src/test/resources/example.json");
|
|
|
|
|
|
pack();
|
|
|
repaint();
|
|
|
setVisible(true);
|
|
|
}
|
|
|
|
|
|
- private void open(final String filename) {
|
|
|
- Result.maybe(io::load).apply(filename).consume(this::setModel, this::errorPopup);
|
|
|
- }
|
|
|
-
|
|
|
- private void setModel(final Recipe recipe) {
|
|
|
+ @Override
|
|
|
+ public void setModel(final Recipe recipe) {
|
|
|
// TODO Clear underlying panels
|
|
|
for (Product comp : recipe.getProducts()) {
|
|
|
summaryPanel.addProduct(comp);
|
|
|
tabbedPane.addTab(comp.getName(), new ProductPanel(comp));
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- private void errorPopup(final Exception ex) {
|
|
|
- JOptionPane.showMessageDialog(this, ex.getLocalizedMessage(), "File Error", JOptionPane.ERROR_MESSAGE);
|
|
|
- }
|
|
|
}
|