From 6154ba318198471a2b94391df6aab6f2b6cd9b29 Mon Sep 17 00:00:00 2001 From: Einar Pehrson Date: Mon, 19 May 2003 01:12:37 +0000 Subject: [PATCH] Fixed drag select in track view. Added unsaved changes prompt on open. --- MooMenu.java | 3 ++- MooNoteElement.java | 7 +++++++ MooTrackView.java | 13 ++++++++++++- Moosique.java | 16 ++++++++-------- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/MooMenu.java b/MooMenu.java index d2acd20..8c9b648 100644 --- a/MooMenu.java +++ b/MooMenu.java @@ -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(); diff --git a/MooNoteElement.java b/MooNoteElement.java index 886a111..7ea7422 100644 --- a/MooNoteElement.java +++ b/MooNoteElement.java @@ -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. */ diff --git a/MooTrackView.java b/MooTrackView.java index bf3590a..a591d37 100644 --- a/MooTrackView.java +++ b/MooTrackView.java @@ -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(); } } diff --git a/Moosique.java b/Moosique.java index 42b3637..09e8395 100644 --- a/Moosique.java +++ b/Moosique.java @@ -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) { -- 2.39.2