X-Git-Url: https://ruin.nu/git/?p=moosique.git;a=blobdiff_plain;f=MooNoteElement.java;h=ce5e1e9043353aaf0ffe0daf5ecb33ca5b4ba876;hp=43b7b27ff6153bad1673dc63df67066222df46f2;hb=fbafab9c4127f793cfe955003860dcde0d6a0588;hpb=0134cec9be53b5d24c5a14136befb293d29357b9 diff --git a/MooNoteElement.java b/MooNoteElement.java index 43b7b27..ce5e1e9 100644 --- a/MooNoteElement.java +++ b/MooNoteElement.java @@ -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); - } }