X-Git-Url: https://ruin.nu/git/?p=moosique.git;a=blobdiff_plain;f=MooTrackView.java;h=43403e6989279c5abfdc9a23b422da6c1b67aa02;hp=6f1dca5e4be1b241dd734a9e461d91fdf321021f;hb=aae2d0b4428236b4147f466b3858a34bb7ed174f;hpb=6db25ccdfe57a846eacef59ee20fc60e5954f24e diff --git a/MooTrackView.java b/MooTrackView.java index 6f1dca5..43403e6 100644 --- a/MooTrackView.java +++ b/MooTrackView.java @@ -20,6 +20,7 @@ public class MooTrackView extends JPanel { private JPopupMenu popup; private JMenuItem popupAdd; private ArrayList rects; + private ArrayList selected; private Insets insets; private int ticksPerSixteenth, popupY = 0; protected static int viewLength = 0; @@ -36,6 +37,7 @@ public class MooTrackView extends JPanel { this.track = track; this.title = title; insets = getInsets(); + selected = new ArrayList(); // Configures panel setBackground(Color.white); @@ -172,11 +174,36 @@ public class MooTrackView extends JPanel { * Adds a standard note to this track. */ private void addStandardNote() { - long timestamp = (long)(ticksPerSixteenth * (popupY - insets.top) / NOTE_HEIGHT); - System.out.println(ticksPerSixteenth + ", " + popupY + ", " + insets.top + ", " + timestamp); + int row = (popupY - insets.top) / NOTE_HEIGHT; + long timestamp = (long)(ticksPerSixteenth * row); addNote(new MooNote(title.getChannel(), 60, 100, timestamp, Moosique.getSequence().getResolution() / 4)); } + /** + * Deselects all notes. + */ + public void addSelected(MooNoteElement elem) { + selected.add(elem); + } + + /** + * Deselects all notes. + */ + public void removeSelected(MooNoteElement elem) { + selected.remove(selected.indexOf(elem)); + } + + /** + * Deselects all notes. + */ + public void deselectAll() { + Iterator it = selected.iterator(); + while(it.hasNext()) { + ((MooNoteElement)it.next()).deselect(); + } + selected.clear(); + } + /** * Draws the grid that is on the background. * @param g The Graphics object used to draw the grid. @@ -197,20 +224,30 @@ public class MooTrackView extends JPanel { * The adapter used to listen on mouse actions */ class MAdapter extends MouseAdapter { + /** - * Adds a standard note if doubleclicked. + * Deselects all note on click, adds a standard note on double click. */ public void mouseClicked(MouseEvent e) { + deselectAll(); if (e.getClickCount() == 2) { popupY = e.getY(); addStandardNote(); } } + public void mousePressed(MouseEvent e) { + maybeShowPopup(e); + } + + public void mouseReleased(MouseEvent e) { + maybeShowPopup(e); + } + /** - * Shows the menu if on standard poptriggers. + * Shows the menu if an OS-specific popup-trigger was activated. */ - public void mousePressed(MouseEvent e) { + private void maybeShowPopup(MouseEvent e) { if (e.isPopupTrigger()) { popupY = e.getY(); popup.show(e.getComponent(), e.getX(), e.getY());