]> ruin.nu Git - moosique.git/blobdiff - MooDialog.java
play hangs when changing duration on a note.
[moosique.git] / MooDialog.java
index 4d9d309dbdde294ed612afa7f98102eddeb48ec1..a83ef8b7562e911fb4040e2049994e84a25abf62 100644 (file)
@@ -22,7 +22,9 @@ public class MooDialog extends JDialog {
                                COPY_TRACK = 3,
                                MOVE_TRACK = 4,
                                JUMP = 5,
-                               CONTENTS = 6;
+                               CONTENTS = 6,
+                               INSERT_MEASURE = 7,
+                               DELETE_MEASURE = 8;
        
        /**
         * Constructor of the dialogs.
@@ -42,6 +44,8 @@ public class MooDialog extends JDialog {
                        case MOVE_TRACK:        makeMoveDialog(pane, tracks); break;
                        case JUMP:              makeJumpDialog(pane); break;
                        case CONTENTS:          makeTextDialog(pane, "Manual.txt"); break;
+                       case INSERT_MEASURE:    makeInsertMeasureDialog(pane); break;
+                       case DELETE_MEASURE:    makeDeleteMeasureDialog(pane); break;
                }
         }
        
@@ -227,10 +231,80 @@ public class MooDialog extends JDialog {
                (Toolkit.getDefaultToolkit().getScreenSize().height - this.getHeight()) / 2);
                setResizable(false);
                pack();
-               setSize(260,175);
+               setSize(260,165);
                setVisible(true);
        }
-
+       
+       /**
+        * Builds the insert measure popupdialog.
+        * @param pane          The container to put the dialog in.
+        */
+       private void makeInsertMeasureDialog(Container pane){
+       
+               setTitle("Insert Measure");
+               labelA = new JLabel("Insert at:", JLabel.RIGHT);
+               pane.add(labelA);
+               labelB = new JLabel("Measure count:", JLabel.RIGHT);
+               pane.add(labelB);
+               textFieldA = new JTextField();
+               pane.add(textFieldA);
+               textFieldB = new JTextField();
+               pane.add(textFieldB);
+               cancelButton = new JButton("Cancel");
+               pane.add(cancelButton);
+               okButton = new JButton("OK");
+               pane.add(okButton);
+               
+               labelA.setBounds(20, 20, 110 ,20);
+               labelB.setBounds(20, 50, 110, 20);
+               textFieldA.setBounds(140 ,20 , 40, 20);
+               textFieldB.setBounds(140,50, 40, 20);
+               cancelButton.setBounds(20 ,95 , 80, 30);
+               okButton.setBounds(120, 95, 60, 30);
+               
+               setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - this.getWidth()) / 2,
+               (Toolkit.getDefaultToolkit().getScreenSize().height - this.getHeight()) / 2);
+               setResizable(false);
+               pack();
+               setSize(210,175);
+               setVisible(true);
+       }
+       
+       /**
+        * Builds the delete measure popupdialog.
+        * @param pane          The container to put the dialog in.
+        */
+       private void makeDeleteMeasureDialog(Container pane) {
+       
+               setTitle("Delete Measure");
+               labelA = new JLabel("Delete at:", JLabel.RIGHT);
+               pane.add(labelA);
+               labelB = new JLabel("Measure count:", JLabel.RIGHT);
+               pane.add(labelB);
+               textFieldA = new JTextField();
+               pane.add(textFieldA);
+               textFieldB = new JTextField();
+               pane.add(textFieldB);
+               cancelButton = new JButton("Cancel");
+               pane.add(cancelButton);
+               okButton = new JButton("OK");
+               pane.add(okButton);
+               
+               labelA.setBounds(20, 20, 110 ,20);
+               labelB.setBounds(20, 50, 110, 20);
+               textFieldA.setBounds(140 ,20 , 40, 20);
+               textFieldB.setBounds(140,50, 40, 20);
+               cancelButton.setBounds(20 ,95 , 80, 30);
+               okButton.setBounds(120, 95, 60, 30);
+               
+               setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - this.getWidth()) / 2,
+               (Toolkit.getDefaultToolkit().getScreenSize().height - this.getHeight()) / 2);
+               setResizable(false);
+               pack();
+               setSize(210,175);
+               setVisible(true);
+       }
+       
        private void makeTextDialog(Container pane, String filename) {
                setTitle("Contents");
                File manual = new File(filename);
@@ -345,14 +419,15 @@ public class MooDialog extends JDialog {
                                                        note.setPitch(Integer.parseInt(pitch.getText()));
                                                        note.setVelocity(Integer.parseInt(velocity.getText()));
                                                        note.setDuration(Integer.parseInt(length.getText()));
-       
-                               setVisible(false);
+                                                       Moosique.setEdited();
+                                                       setVisible(false);
                            } else { // user closed dialog or clicked cancel
-                               setVisible(false);
+                               setVisible(false);
                            }
                        }
                    }
                });
                pack();
+               setVisible(true);
        }
 }