X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=MooTrackView.java;h=4f5c4f34fc2f8db9c2d965e399ec8d15c8250e49;hb=6989cabc91ecf003a67e7ed9c4bec431eba2f1b4;hp=bac8cbc59fa4d8c75cd09c0078ac5be21a22a1ac;hpb=8acc1b9983cf0c679fbe556f480a6d7f4d45e518;p=moosique.git diff --git a/MooTrackView.java b/MooTrackView.java index bac8cbc..4f5c4f3 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); @@ -154,6 +156,7 @@ public class MooTrackView extends JPanel { add(elem); layoutElement(elem, false); setPreferredSize(new Dimension(VIEW_WIDTH, viewLength + extraHeight)); + Moosique.setEdited(); repaint(); } @@ -165,6 +168,7 @@ public class MooTrackView extends JPanel { elem.getNote().removeFrom(track); remove(elem); elem.getNote().removeFrom(track); + Moosique.setEdited(); repaint(); } @@ -177,6 +181,53 @@ public class MooTrackView extends JPanel { 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(); + } + + /** + * Determines if the given MooNoteElement is the only one in the track view that is selected. + * @return if the given element is the only selected one + */ + public boolean isTheOnlySelected(MooNoteElement elem) { + Iterator it = selected.iterator(); + while(it.hasNext()) { + if (!it.next().equals(elem)) return false; + } + return true; + } + + /** + * Shows a popup-menu with options for the current selection of note elements. + * @param c the component over which to display the menu + * @param x the x-coordinate in which to display the menu + * @param y the y-coordinate in which to display the menu + */ + public void showSelectionPopup(Component c, int x, int y) { + + } + /** * Draws the grid that is on the background. * @param g The Graphics object used to draw the grid. @@ -199,9 +250,10 @@ public class MooTrackView extends JPanel { 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(); @@ -216,6 +268,13 @@ public class MooTrackView extends JPanel { maybeShowPopup(e); } + /** + * Selects the notes within the area that was selected. + */ + public void mouseDragged(MouseEvent e) { + + } + /** * Shows the menu if an OS-specific popup-trigger was activated. */