]> ruin.nu Git - moosique.git/commitdiff
Fixed drag select in track view.
authorEinar Pehrson <einarp@itstud.chalmers.se>
Mon, 19 May 2003 01:12:37 +0000 (01:12 +0000)
committerEinar Pehrson <einarp@itstud.chalmers.se>
Mon, 19 May 2003 01:12:37 +0000 (01:12 +0000)
Added unsaved changes prompt on open.

MooMenu.java
MooNoteElement.java
MooTrackView.java
Moosique.java

index d2acd204a49cc932a30679b9e93eadb7a497570c..8c9b648dc7018b2658aceb301614ac84835d5891 100644 (file)
@@ -167,7 +167,8 @@ public class MooMenu extends JMenuBar implements ActionListener {
                        File file = chooser.getSelectedFile();
                        if(returnVal == JFileChooser.APPROVE_OPTION && isMidiFile(file)) {
                                directory = chooser.getSelectedFile().getParentFile();
-                               Moosique.load(chooser.getSelectedFile().getAbsolutePath());
+                               if (!Moosique.promptOnUnsavedChanges())
+                                       Moosique.load(chooser.getSelectedFile().getAbsolutePath());
                        }
                } else if (command == "Save") {
                        if (!Moosique.save()) showSaveAsDialog();
index 886a1111be40c3056cd2a8078e0c34b994612520..7ea74227d0be3a456226583adfa3fe9a8bed560f 100644 (file)
@@ -175,6 +175,13 @@ public class MooNoteElement extends JPanel {
         */
        class MAdapter extends MouseAdapter {
        
+               /**
+                * Selects the note if 
+                */
+               public void mouseEntered(MouseEvent e) {
+                       if (mtv.isLeftMouseButtonPressed()) select();
+               }
+
                /**
                 * If left mouse button is clicked, selects the note and plays it.
                 */
index bf3590aedc59e2f25663b367beb3f85aef0763cd..a591d374853bd246647f16dd0c087ce38f58e335 100644 (file)
@@ -25,6 +25,7 @@ public class MooTrackView extends JPanel {
        private ArrayList coords, selection, copyBuffer; 
        private Insets insets;
        private int ticksPerSixteenth, popupY = 0;
+       private boolean leftMouseButtonPressed = false;
        protected static int viewLength = 0;
        protected static int extraHeight = 0;
        public static final int NOTE_HEIGHT = 10, NOTE_WIDTH = 40, VIEW_WIDTH = 200;
@@ -343,6 +344,14 @@ public class MooTrackView extends JPanel {
                }
        }
        
+       /**
+        * Returns whether the left mouse button is currently pressed or not.
+        * @return true if the left mosue button is currently pressed
+        */
+       public boolean isLeftMouseButtonPressed() {
+               return leftMouseButtonPressed;
+       }
+
        /**
         * The adapter used to listen on mouse actions
         */
@@ -362,10 +371,12 @@ public class MooTrackView extends JPanel {
                }
        
                public void mousePressed(MouseEvent e) {
+                       if (SwingUtilities.isLeftMouseButton(e)) leftMouseButtonPressed = true;
                        maybeShowPopup(e);
                }
 
                public void mouseReleased(MouseEvent e) {
+                       if (SwingUtilities.isLeftMouseButton(e)) leftMouseButtonPressed = false;
                        maybeShowPopup(e);
                }
 
@@ -390,7 +401,7 @@ public class MooTrackView extends JPanel {
                 * Grabs the focus when the mouse has entered.
                 */
                public void mouseEntered(MouseEvent e) {
-                       // Moosique.setActiveChannel(track.getChannel());
+                       Moosique.setActiveChannel(title.getChannel());
                        grabFocus();
                }
        }
index 42b3637cf21db7d67b6a3659f279741723b987e3..09e8395707b175f41a9ab18e94b4a0858c8ef333 100644 (file)
@@ -21,15 +21,15 @@ public class Moosique {
        private static MidiChannel[] channels;
        private static MidiChannel activeChannel;
        private static MidiEvent[] timeSignatures, tempoChanges;
+
        private static ArrayList emptyTracks;
        private static Map trackMute = new HashMap();
        private static Map trackSolo = new HashMap();
-
+       private static Thread player;
 
        private static String filename;
        private static long editPosition;
-       private static boolean makeGUI = true, initSound = true, isEdited = false, drawEmptyTracks = false;
-       private static Thread player;
+       private static boolean makeGUI = true, initSound = true, edited = false, drawEmptyTracks = false;
        public static final int DEFAULT_RESOLUTION = 96, DEFAULT_TRACKS = 4;
 
        /** 
@@ -236,7 +236,7 @@ public class Moosique {
         * @return the tick position
         */
        public static boolean isEdited() {
-               return isEdited;
+               return edited;
        }
 
        /** 
@@ -302,7 +302,7 @@ public class Moosique {
         * Sets the current sequence as edited, which implies prompts when loading a new sequence.
         */
        public static void setEdited() {
-               isEdited = true;
+               edited = true;
        }
 
        /** 
@@ -485,7 +485,7 @@ public class Moosique {
                } catch (IOException e) {
                        return false;
                }
-               isEdited = false;
+               edited = false;
 
                Track[] tracks = seq.getTracks();
                emptyTracks = new ArrayList();
@@ -572,7 +572,7 @@ public class Moosique {
         * Prompts the user .
         */
        public static boolean promptOnUnsavedChanges() {
-               if (!isEdited) return false;
+               if (!edited) return false;
                int exitOption = JOptionPane.showConfirmDialog(gui,
                        "The current sequence has been edited, but not saved.\nDo you wish to continue anyway?",
                        "File not saved - continue?", 
@@ -601,7 +601,7 @@ public class Moosique {
                try {
                        MidiSystem.write(seq, 1, new File(file));
                        filename = file;
-                       isEdited = false;
+                       edited = false;
                        gui.setStatus("Saved " + file);
                        return true;
                } catch (IOException e) {