]> ruin.nu Git - moosique.git/blobdiff - MooNoteElement.java
Fixed exit if sequence unsaved prompt.
[moosique.git] / MooNoteElement.java
index 43b7b27ff6153bad1673dc63df67066222df46f2..ce5e1e9043353aaf0ffe0daf5ecb33ca5b4ba876 100644 (file)
@@ -13,13 +13,14 @@ public class MooNoteElement extends JPanel {
 
        private MooTrackView mtv;
        private MooNote note;
+       private JPopupMenu popup;
+       private JMenuItem popupRemove, popupProp, popupTransposeOctUp, popupTransposeOctDown;
        private Rectangle pitchRect, veloRect;
+       private String notePitch, noteVelocity;
+       private boolean selected = false;
        public Color textColor;
        public static final Color bgColor = new Color(160, 218, 255);
        public static final Color invBgColor = new Color(96, 38, 0);
-       private String notePitch, noteVelocity;
-       private JPopupMenu popup;
-       private JMenuItem popupRemove, popupProp, popupTransposeOctUp, popupTransposeOctDown;
 
        /** 
         * Creates a new note element.
@@ -68,6 +69,7 @@ public class MooNoteElement extends JPanel {
         * Selects the current NoteElement.
         */
        public void select() {
+               selected = true;
                mtv.addSelected(this);
                setBackground(invBgColor);
                textColor = Color.white;
@@ -78,6 +80,7 @@ public class MooNoteElement extends JPanel {
         * Deselects the current NoteElement.
         */
        public void deselect() {
+               selected = false;
                // mtv.removeSelected(this);
                setBackground(bgColor);
                textColor = Color.black;
@@ -135,14 +138,27 @@ public class MooNoteElement extends JPanel {
                noteVelocity = ""+note.getVelocity();
        }
 
+
+       /**
+        * Asks the MooTrackView that the note element is painted on to remove this element and the note.
+        */
+       protected void remove(){
+               mtv.removeNote(this);
+       }
+
        /**
         * Listener that checks the mouse actions on this element.
         */
        class MAdapter extends MouseAdapter {
        
+               /**
+                * If left mouse button is clicked, selects the note and plays it.
+                */
                public void mouseClicked(MouseEvent e) {
-                       select();
-                       // Play the note
+                       if (SwingUtilities.isLeftMouseButton(e) && !e.isControlDown()) {
+                               select();
+                               // Play the note
+                       }
                }
 
                /**
@@ -159,6 +175,7 @@ public class MooNoteElement extends JPanel {
                                        } else if (SwingUtilities.isLeftMouseButton(e)) {
                                                note.setPitch(note.getPitch() - 1);
                                        }
+                                       Moosique.setEdited();
                                        calculateString();
                                        repaint();
                                } else if (veloRect.contains(e.getPoint())) {
@@ -167,6 +184,7 @@ public class MooNoteElement extends JPanel {
                                        } else if (SwingUtilities.isLeftMouseButton(e)) {
                                                note.setVelocity(note.getVelocity() - 1);
                                        }
+                                       Moosique.setEdited();
                                        calculateString();
                                        repaint();
                                }
@@ -181,7 +199,10 @@ public class MooNoteElement extends JPanel {
                 * Shows the menu if an OS-specific popup-trigger was activated.
                 */
                private void maybeShowPopup(MouseEvent e) {
-                       if (e.isPopupTrigger() && !e.isControlDown()) popup.show(e.getComponent(), e.getX(), e.getY());
+                       if (e.isPopupTrigger() && !e.isControlDown()) {
+                               if (!selected || mtv.isTheOnlySelected((MooNoteElement)e.getComponent())) popup.show(e.getComponent(), e.getX(), e.getY());
+                               else mtv.showSelectionPopup(e.getComponent(), e.getX(), e.getY());
+                       }
                }
        }
 
@@ -209,11 +230,4 @@ public class MooNoteElement extends JPanel {
                        repaint();
                }
        }
-
-       /**
-        * Asks the MooTrackView that the note element is painted on to remove this element and the note.
-        */
-       protected void remove(){
-               mtv.removeNote(this);
-       }
 }