+ PopupListener pList = new PopupListener();
+ popupAdd = new JMenuItem("Add note...");
+ popupAdd.addActionListener(pList);
+ popup.add(popupAdd);
+
+ // Creates selection pop-up menu.
+ selPopup = new JPopupMenu();
+ selPopupRemove = new JMenuItem("Remove selection");
+ selPopupRemove.addActionListener(pList);
+ selPopup.add(selPopupRemove);
+ selPopupTranspUp = new JMenu("Transpose selection up");
+ selPopup.add(selPopupTranspUp);
+ selPopupTranspUpOct = new JMenuItem("One octave");
+ selPopupTranspUpOct.addActionListener(pList);
+ selPopupTranspUp.add(selPopupTranspUpOct);
+ selPopupTranspDown = new JMenu("Transpose selection down");
+ selPopup.add(selPopupTranspDown);
+ selPopupTranspDownOct = new JMenuItem("One octave");
+ selPopupTranspDownOct.addActionListener(pList);
+ selPopupTranspDown.add(selPopupTranspDownOct);
+
+ // Adds listeners for popup menu and keyboard synthesizer.
+ addMouseListener(new MAdapter());
+ addKeyListener(new MooKeyboard());
+ }
+
+ /**
+ * Layouts the element to the right place.
+ * @param elem the element that will be layouted.
+ * @param old If true, this method will remove the old layout and set the new preferredSize for the trackview.
+ */
+ public void layoutElement(MooNoteElement elem, boolean old){
+ // If the element is currently in the view, removes its coordinates from the list.
+ Rectangle r = new Rectangle();
+ if (old){
+ r = elem.getBounds(r);
+ for (Iterator i = rects.iterator(); i.hasNext();){
+ Object ob = i.next();
+ if (r.equals(ob)){
+ rects.remove(ob);
+ break;
+ }
+ }
+ }
+
+ // Creates temporary variables.
+ ticksPerSixteenth = Moosique.getSequence().getResolution() / 4;
+ MooNote mn = elem.getNote();
+ int x, y, height;