+
+ /**
+ * Grabs the focus when the mouse has entered.
+ */
+ public void mouseEntered(MouseEvent e) {
+ Moosique.setActiveChannel(title.getChannel());
+ grabFocus();
+ }
+ }
+
+ /**
+ * Takes the appropriate action when a user selects an item on the popup menu.
+ */
+ class PopupListener implements ActionListener {
+ public void actionPerformed(ActionEvent e) {
+ Object source = e.getSource();
+ // Handling panel popup actions.
+ if (source == popupAddItemsLast) {
+ addNoteAtClickY(lastNoteLength);
+ } else if (source == popupAddItemsCustom) {
+ /* Show the user a dialog (identical to note preferences...
+ then call addNote(new MooNote(
+ title.getChannel(), pitch, velocity, timestamp, duration));
+ */
+ } else if (source == popupAddItemsWhole) {
+ addNoteAtClickY(16);
+ } else if (source == popupAddItemsHalf) {
+ addNoteAtClickY(8);
+ } else if (source == popupAddItemsQuarter) {
+ addNoteAtClickY(4);
+ } else if (source == popupAddItemsEighth) {
+ addNoteAtClickY(2);
+ } else if (source == popupAddItemsSixteenth) {
+ addNoteAtClickY(1);
+ } else if (source == popupPaste) {
+ pasteCopiedNotes();
+ // Handling selection popup actions.
+ } else if (source == selPopupProps) {
+ new MooDialog(((MooNoteElement)Moosique.getSelection().first()).getNote());
+ } else if (source == selPopupCopy) {
+ copySelectedNotes();
+ } else if (source == selPopupCut) {
+ cutSelectedNotes();
+ } else if (source == selPopupRemove) {
+ removeSelectedNotes();
+ } else if (source == selPopupTranspUpItems[0]) {
+ transposeSelectedNotes(12);
+ } else if (source == selPopupTranspDownItems[0]) {
+ transposeSelectedNotes(-12);
+ } else {
+ for (int i = 1; i < 12; i++) {
+ if (source == selPopupTranspUpItems[i]) transposeSelectedNotes(i);
+ else if (source == selPopupTranspDownItems[i]) transposeSelectedNotes(-i);
+ }
+ }
+ }