Mercurial > hg > beatroot
view at/ofai/music/worm/WormControlPanel.java @ 2:4c3f5bc01c97
* Import BeatRoot v0.5.7
author | Chris Cannam |
---|---|
date | Fri, 08 Oct 2010 16:11:06 +0100 |
parents | |
children |
line wrap: on
line source
/* Performance Worm: Visualisation of Expressive Musical Performance Copyright (C) 2001, 2006 by Simon Dixon This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program (the file gpl.txt); if not, download it from http://www.gnu.org/licenses/gpl.txt or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package at.ofai.music.worm; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBoxMenuItem; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JRadioButtonMenuItem; import java.awt.Component; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.HierarchyBoundsListener; import java.awt.event.HierarchyEvent; import at.ofai.music.util.PSPrinter; class WormControlPanel extends JPanel implements ActionListener, HierarchyBoundsListener { static final long serialVersionUID = 0; protected Worm worm; protected JPopupMenu flagMenu; protected JRadioButtonMenuItem[] rb; protected String[] buttonText = { "<<x>>", "<<y>>", "^^^", "<<<", "ML >>", "Smooth", "Flags", "Play","Stop", ">>x<<", ">>y<<", "vvv", ">>>", "<< ML", "Header", "Load", "Save","Quit"}; public WormControlPanel(Worm w) { worm = w; setBackground(WormConstants.buttonColor); setLayout(new GridLayout(2, buttonText.length / 2)); for (int i = 0; i < buttonText.length; i++) { JButton theButton = new JButton(buttonText[i]); theButton.setBackground(WormConstants.buttonColor); theButton.setForeground(WormConstants.buttonTextColor); theButton.addActionListener(this); add(theButton); if (buttonText[i].equals("Flags")) { flagMenu = new JPopupMenu(buttonText[i]); JCheckBoxMenuItem scale = new JCheckBoxMenuItem("AutoScale"); scale.setBackground(WormConstants.buttonColor); scale.setForeground(WormConstants.buttonTextColor); scale.setSelected(true); scale.addActionListener(this); worm.setAutoButton(scale); flagMenu.add(scale); flagMenu.addSeparator(); JCheckBoxMenuItem glow = new JCheckBoxMenuItem("Glow Worm"); glow.setBackground(WormConstants.buttonColor); glow.setForeground(WormConstants.buttonTextColor); glow.setSelected(false); glow.addActionListener(this); flagMenu.add(glow); flagMenu.addSeparator(); JCheckBoxMenuItem plots = new JCheckBoxMenuItem("Histograms"); plots.setBackground(WormConstants.buttonColor); plots.setForeground(WormConstants.buttonTextColor); plots.setSelected(false); plots.addActionListener(this); flagMenu.add(plots); flagMenu.addSeparator(); ButtonGroup bg = new ButtonGroup(); rb = new JRadioButtonMenuItem[Worm.smoothLabels.length]; for (int j = 0; j < Worm.smoothLabels.length; j++) { rb[j] = new JRadioButtonMenuItem(Worm.smoothLabels[j]); rb[j].setBackground(WormConstants.buttonColor); rb[j].setForeground(WormConstants.buttonTextColor); rb[j].addActionListener(this); flagMenu.add(rb[j]); bg.add(rb[j]); } rb[w.getSmoothMode()].setSelected(true); worm.setSmoothButtons(rb); flagMenu.setInvoker(theButton); flagMenu.addSeparator(); JMenuItem printButton = new JMenuItem("Print300"); printButton.setBackground(WormConstants.buttonColor); printButton.setForeground(WormConstants.buttonTextColor); printButton.addActionListener(this); flagMenu.add(printButton); JMenuItem printButton2 = new JMenuItem("Print600"); printButton2.setBackground(WormConstants.buttonColor); printButton2.setForeground(WormConstants.buttonTextColor); printButton2.addActionListener(this); flagMenu.add(printButton2); } else if (buttonText[i].equals("Play")) worm.setPlayButton(theButton); } setSize(w.getWidth(), WormConstants.cpHeight); setMaximumSize(new Dimension(w.getWidth(), WormConstants.cpHeight)); addHierarchyBoundsListener(this); worm.setControlPanel(this); // for callback } // constructor public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("<<x>>")) worm.xZoom(true); else if (e.getActionCommand().equals(">>x<<")) worm.xZoom(false); else if (e.getActionCommand().equals("<<<")) worm.xMoveRight(false); else if (e.getActionCommand().equals(">>>")) worm.xMoveRight(true); else if (e.getActionCommand().equals("ML >>")) worm.audio.ti.switchLevels(true); else if (e.getActionCommand().equals("<< ML")) worm.audio.ti.switchLevels(false); else if (e.getActionCommand().equals("Play") || e.getActionCommand().equals("Cont")) worm.play(); else if (e.getActionCommand().equals("Pause")) worm.pause(); else if (e.getActionCommand().equals("Stop")) worm.stop(); else if (e.getActionCommand().equals("<<y>>")) worm.yZoom(true); else if (e.getActionCommand().equals(">>y<<")) worm.yZoom(false); else if (e.getActionCommand().equals("vvv")) worm.yMoveDown(true); else if (e.getActionCommand().equals("^^^")) worm.yMoveDown(false); else if (e.getActionCommand().equals("Header")) { worm.editParameters(); } else if (e.getActionCommand().equals("Smooth")) worm.smooth(); else if (e.getActionCommand().equals("Flags")) { flagMenu.setVisible(true); flagMenu.setLocation( ((Component)e.getSource()).getLocationOnScreen()); } else if (e.getActionCommand().equals("Load")) { new WormLoadDialog(worm); } else if (e.getActionCommand().equals("Save")) { worm.save(new MyFileChooser().browseSave()); } else if (e.getActionCommand().equals("Quit")) System.exit(0); else if (e.getActionCommand().equals("AutoScale")) worm.setAutoScaleMode( ((JCheckBoxMenuItem)e.getSource()).isSelected()); else if (e.getActionCommand().equals("Glow Worm")) worm.setGlow(((JCheckBoxMenuItem)e.getSource()).isSelected()); else if (e.getActionCommand().equals("Histograms")) TempoInducer.plotFlag = ((JCheckBoxMenuItem)e.getSource()).isSelected(); else if (e.getActionCommand().equals("Print300")) PSPrinter.print(worm, 300); else if (e.getActionCommand().equals("Print600")) PSPrinter.print(worm, 600); else for (int i = 0; i < Worm.smoothLabels.length; i++) if (e.getActionCommand().equals(Worm.smoothLabels[i])) worm.setSmoothMode(i); } // actionPerformed public void ancestorMoved(HierarchyEvent e) {} public void ancestorResized(HierarchyEvent e) { setMaximumSize(new Dimension(worm.getWidth(), WormConstants.cpHeight)); setSize(worm.getWidth(), WormConstants.cpHeight); repaint(); } // ancestorResized() } // class WormControlPanel