From e524e59da913546b198358c6581666e50736436b Mon Sep 17 00:00:00 2001 From: skylarmt Date: Sun, 15 Mar 2015 15:04:04 -0600 Subject: [PATCH] Implement full saving and opening capabilities for lists --- src/net/apocalypselabs/symat/Tasks.form | 24 +++--- src/net/apocalypselabs/symat/Tasks.java | 99 ++++++++++++++++--------- 2 files changed, 80 insertions(+), 43 deletions(-) diff --git a/src/net/apocalypselabs/symat/Tasks.form b/src/net/apocalypselabs/symat/Tasks.form index bf0ac81..1060c17 100644 --- a/src/net/apocalypselabs/symat/Tasks.form +++ b/src/net/apocalypselabs/symat/Tasks.form @@ -20,6 +20,17 @@ + + + + + + + + + + + @@ -31,20 +42,15 @@ - + - - - - - - + @@ -54,7 +60,7 @@ - + @@ -62,7 +68,7 @@ - + diff --git a/src/net/apocalypselabs/symat/Tasks.java b/src/net/apocalypselabs/symat/Tasks.java index 1a4de01..8484ecf 100644 --- a/src/net/apocalypselabs/symat/Tasks.java +++ b/src/net/apocalypselabs/symat/Tasks.java @@ -69,6 +69,8 @@ public class Tasks extends javax.swing.JInternalFrame { private String tltitle = "Untitled"; private final JFileChooser fc = new JFileChooser(); + + private File ondisk = null; /** * Creates new form Tasks @@ -104,6 +106,7 @@ public class Tasks extends javax.swing.JInternalFrame { } setTitle(tl.getTitle()); tltitle = tl.getTitle(); + ondisk = f; redraw(); } @@ -117,6 +120,7 @@ public class Tasks extends javax.swing.JInternalFrame { try (ObjectOutputStream oos = new ObjectOutputStream(fout)) { oos.writeObject(tl); oos.close(); + ondisk = f; } } @@ -134,11 +138,11 @@ public class Tasks extends javax.swing.JInternalFrame { jMenuBar1 = new javax.swing.JMenuBar(); jMenu1 = new javax.swing.JMenu(); openBtn = new javax.swing.JMenuItem(); + appendBtn = new javax.swing.JMenuItem(); saveBtn = new javax.swing.JMenuItem(); - jMenuItem4 = new javax.swing.JMenuItem(); - jMenuItem1 = new javax.swing.JMenuItem(); + saveAsBtn = new javax.swing.JMenuItem(); jMenu2 = new javax.swing.JMenu(); - insertItem = new javax.swing.JMenuItem(); + insertItemBtn = new javax.swing.JMenuItem(); setTitleBtn = new javax.swing.JMenuItem(); setClosable(true); @@ -162,6 +166,15 @@ public class Tasks extends javax.swing.JInternalFrame { }); jMenu1.add(openBtn); + appendBtn.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); + appendBtn.setText("Append..."); + appendBtn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + appendBtnActionPerformed(evt); + } + }); + jMenu1.add(appendBtn); + saveBtn.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK)); saveBtn.setText("Save..."); saveBtn.addActionListener(new java.awt.event.ActionListener() { @@ -171,30 +184,27 @@ public class Tasks extends javax.swing.JInternalFrame { }); jMenu1.add(saveBtn); - jMenuItem4.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); - jMenuItem4.setText("Save As..."); - jMenu1.add(jMenuItem4); - - jMenuItem1.setText("Sample"); - jMenuItem1.addActionListener(new java.awt.event.ActionListener() { + saveAsBtn.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK)); + saveAsBtn.setText("Save As..."); + saveAsBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - jMenuItem1ActionPerformed(evt); + saveAsBtnActionPerformed(evt); } }); - jMenu1.add(jMenuItem1); + jMenu1.add(saveAsBtn); jMenuBar1.add(jMenu1); jMenu2.setText("Edit"); - insertItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, java.awt.event.InputEvent.CTRL_MASK)); - insertItem.setText("Insert item"); - insertItem.addActionListener(new java.awt.event.ActionListener() { + insertItemBtn.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, java.awt.event.InputEvent.CTRL_MASK)); + insertItemBtn.setText("Insert item"); + insertItemBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { - insertItemActionPerformed(evt); + insertItemBtnActionPerformed(evt); } }); - jMenu2.add(insertItem); + jMenu2.add(insertItemBtn); setTitleBtn.setText("List title..."); setTitleBtn.addActionListener(new java.awt.event.ActionListener() { @@ -222,29 +232,18 @@ public class Tasks extends javax.swing.JInternalFrame { pack(); }// //GEN-END:initComponents - private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed - for (int i = 1; i <= 5; i++) { - Task t = new Task( - (i % 2 == 0), - "Name " + i, - "Description " + i); - listPanel.add(t); - t.setVisible(true); - } - redraw(); - }//GEN-LAST:event_jMenuItem1ActionPerformed - - private void insertItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_insertItemActionPerformed + private void insertItemBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_insertItemBtnActionPerformed Task t = new Task(0, "Untitled Task", "No description"); listPanel.add(t); t.setVisible(true); redraw(); - }//GEN-LAST:event_insertItemActionPerformed + }//GEN-LAST:event_insertItemBtnActionPerformed private void openBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openBtnActionPerformed int result = fc.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) { + listPanel.removeAll(); try { openTaskFile(fc.getSelectedFile()); } catch (IOException ex) { @@ -279,7 +278,13 @@ public class Tasks extends javax.swing.JInternalFrame { }//GEN-LAST:event_setTitleBtnActionPerformed private void saveBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveBtnActionPerformed - int result = fc.showSaveDialog(this); + int result; + if (ondisk == null) { + result = fc.showSaveDialog(this); + } else { + fc.setSelectedFile(ondisk); + result = JFileChooser.APPROVE_OPTION; + } if (result == JFileChooser.APPROVE_OPTION) { try { saveTasks(fc.getSelectedFile()); @@ -293,20 +298,46 @@ public class Tasks extends javax.swing.JInternalFrame { } }//GEN-LAST:event_saveBtnActionPerformed + private void saveAsBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveAsBtnActionPerformed + ondisk = null; + saveBtn.doClick(); + }//GEN-LAST:event_saveAsBtnActionPerformed + + private void appendBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_appendBtnActionPerformed + int result = fc.showDialog(this, "Merge List"); + if (result == JFileChooser.APPROVE_OPTION) { + try { + openTaskFile(fc.getSelectedFile()); + } catch (IOException ex) { + JOptionPane.showInternalMessageDialog(Main.mainPane, + "Cannot open task list: " + ex.getMessage(), + "Error", + JOptionPane.ERROR_MESSAGE); + Debug.stacktrace(ex); + } catch (ClassNotFoundException ex) { + JOptionPane.showInternalMessageDialog(Main.mainPane, + "Cannot open task list: " + ex.getMessage(), + "Error", + JOptionPane.ERROR_MESSAGE); + Debug.stacktrace(ex); + } + } + }//GEN-LAST:event_appendBtnActionPerformed + private void redraw() { setSize(getWidth() + 1, getHeight()); setSize(getWidth() - 1, getHeight()); } // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JMenuItem insertItem; + private javax.swing.JMenuItem appendBtn; + private javax.swing.JMenuItem insertItemBtn; private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; private javax.swing.JMenuBar jMenuBar1; - private javax.swing.JMenuItem jMenuItem1; - private javax.swing.JMenuItem jMenuItem4; private javax.swing.JPanel listPanel; private javax.swing.JMenuItem openBtn; + private javax.swing.JMenuItem saveAsBtn; private javax.swing.JMenuItem saveBtn; private javax.swing.JMenuItem setTitleBtn; private javax.swing.JScrollPane taskList;