Chris@2: /* Performance Worm: Visualisation of Expressive Musical Performance Chris@2: Copyright (C) 2001, 2006 by Simon Dixon Chris@2: Chris@2: This program is free software; you can redistribute it and/or modify Chris@2: it under the terms of the GNU General Public License as published by Chris@2: the Free Software Foundation; either version 2 of the License, or Chris@2: (at your option) any later version. Chris@2: Chris@2: This program is distributed in the hope that it will be useful, Chris@2: but WITHOUT ANY WARRANTY; without even the implied warranty of Chris@2: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Chris@2: GNU General Public License for more details. Chris@2: Chris@2: You should have received a copy of the GNU General Public License along Chris@2: with this program (the file gpl.txt); if not, download it from Chris@2: http://www.gnu.org/licenses/gpl.txt or write to the Chris@2: Free Software Foundation, Inc., Chris@2: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Chris@2: */ Chris@2: Chris@2: package at.ofai.music.worm; Chris@2: Chris@2: import javax.swing.JButton; Chris@2: import javax.swing.JDialog; Chris@2: import javax.swing.JLabel; Chris@2: import javax.swing.JPanel; Chris@2: import java.awt.Container; Chris@2: import java.awt.Dimension; Chris@2: import java.awt.GridLayout; Chris@2: import java.awt.TextField; Chris@2: import java.awt.event.ActionEvent; Chris@2: import java.awt.event.ActionListener; Chris@2: import java.awt.event.TextEvent; Chris@2: import java.awt.event.TextListener; Chris@2: Chris@2: import at.ofai.music.util.FrameMargins; Chris@2: Chris@2: class WormLoadDialog extends JDialog { Chris@2: Chris@2: static final long serialVersionUID = 0; Chris@2: Chris@2: class MyButton extends JButton { Chris@2: Chris@2: static final long serialVersionUID = 0; Chris@2: public MyButton(String text, ActionListener al) { Chris@2: super(text); Chris@2: setBackground(WormConstants.buttonColor); Chris@2: setForeground(WormConstants.buttonTextColor); Chris@2: addActionListener(al); Chris@2: } Chris@2: } // inner class MyButton Chris@2: Chris@2: class MyTextField extends TextField { Chris@2: Chris@2: static final long serialVersionUID = 0; Chris@2: public MyTextField(String text, TextListener tl) { Chris@2: super(text); Chris@2: setBackground(WormConstants.buttonColor); Chris@2: setForeground(WormConstants.buttonTextColor); Chris@2: addTextListener(tl); Chris@2: } Chris@2: Chris@2: } // inner class MyTextField Chris@2: Chris@2: class MyLabel extends JLabel { Chris@2: Chris@2: static final long serialVersionUID = 0; Chris@2: public MyLabel(String text) { Chris@2: super(text); Chris@2: setForeground(WormConstants.buttonTextColor); Chris@2: } Chris@2: Chris@2: } // inner class MyLabel Chris@2: Chris@2: Worm worm; Chris@2: TextField inputFileField, matchFileField, wormFileField, timingOffsetField, Chris@2: synchronisationField; Chris@2: JButton inputFileButton, matchFileButton, wormFileButton, cancelButton, Chris@2: okButton; Chris@2: MyFileChooser chooser; Chris@2: Chris@2: public WormLoadDialog(Worm w) { Chris@2: super(w.theFrame, "Input Data", true); Chris@2: worm = w; Chris@2: worm.stop(); Chris@2: chooser = new MyFileChooser(); Chris@2: inputFileField = new MyTextField(worm.getInputFile(),new TextListener(){ Chris@2: public void textValueChanged(TextEvent e) { Chris@2: worm.setInputFile(inputFileField.getText()); Chris@2: worm.clearWormFile(); Chris@2: } Chris@2: }); Chris@2: matchFileField = new MyTextField(worm.getMatchFile(),new TextListener(){ Chris@2: public void textValueChanged(TextEvent e) { Chris@2: worm.setMatchFile(matchFileField.getText()); Chris@2: } Chris@2: }); Chris@2: wormFileField = new MyTextField(worm.getWormFileName(), Chris@2: new TextListener() { Chris@2: public void textValueChanged(TextEvent e) { Chris@2: worm.setWormFile(wormFileField.getText()); Chris@2: } Chris@2: } Chris@2: ); Chris@2: timingOffsetField = new MyTextField(worm.getTimingOffsetString(), Chris@2: new TextListener() { Chris@2: public void textValueChanged(TextEvent e) { Chris@2: worm.setTimingOffsetString(timingOffsetField.getText()); Chris@2: } Chris@2: } Chris@2: ); Chris@2: synchronisationField = new MyTextField(worm.getFileDelayString(), Chris@2: new TextListener() { Chris@2: public void textValueChanged(TextEvent e) { Chris@2: worm.setFileDelayString(synchronisationField.getText()); Chris@2: } Chris@2: } Chris@2: ); Chris@2: inputFileButton = new MyButton("Browse", new ActionListener() { Chris@2: public void actionPerformed(ActionEvent e) { Chris@2: worm.setInputFile(chooser.browseOpen(inputFileField, Chris@2: MyFileFilter.waveFilter)); Chris@2: } Chris@2: }); Chris@2: matchFileButton = new MyButton("Browse", new ActionListener() { Chris@2: public void actionPerformed(ActionEvent e) { Chris@2: worm.setMatchFile(chooser.browseOpen(matchFileField, Chris@2: MyFileFilter.matchFilter)); Chris@2: } Chris@2: }); Chris@2: wormFileButton = new MyButton("Browse", new ActionListener() { Chris@2: public void actionPerformed(ActionEvent e) { Chris@2: worm.setWormFile(chooser.browseOpen(wormFileField, Chris@2: MyFileFilter.wormFilter)); Chris@2: } Chris@2: }); Chris@2: cancelButton = new MyButton("OK", new ActionListener() { Chris@2: public void actionPerformed(ActionEvent e) { Chris@2: setVisible(false); Chris@2: } Chris@2: }); Chris@2: okButton = new MyButton("OK", new ActionListener() { Chris@2: public void actionPerformed(ActionEvent e) { Chris@2: setVisible(false); Chris@2: } Chris@2: }); Chris@2: Container cp = getContentPane(); Chris@2: cp.setLayout(null); Chris@2: JPanel p1 = new JPanel(new GridLayout(5,1)); Chris@2: JPanel p2 = new JPanel(new GridLayout(5,1)); Chris@2: JPanel p3 = new JPanel(new GridLayout(5,1)); Chris@2: JLabel inputLabel = new MyLabel("Input file: "); Chris@2: JLabel matchLabel = new MyLabel("Match file: "); Chris@2: JLabel wormLabel = new MyLabel("Worm file: "); Chris@2: JLabel timingOffsetLabel = new MyLabel("Match/Audio Offset: "); Chris@2: JLabel synchronisationLabel = new MyLabel("Synchronisation: "); Chris@2: cp.setBackground(WormConstants.buttonColor); Chris@2: p1.setBackground(WormConstants.buttonColor); Chris@2: p1.add(inputLabel); Chris@2: p2.add(inputFileField); Chris@2: p3.add(inputFileButton); Chris@2: p1.add(matchLabel); Chris@2: p2.add(matchFileField); Chris@2: p3.add(matchFileButton); Chris@2: p1.add(wormLabel); Chris@2: p2.add(wormFileField); Chris@2: p3.add(wormFileButton); Chris@2: p1.add(timingOffsetLabel); Chris@2: p2.add(timingOffsetField); Chris@2: p3.add(cancelButton); Chris@2: p1.add(synchronisationLabel); Chris@2: p2.add(synchronisationField); Chris@2: p3.add(okButton); Chris@2: p1.setBounds(10,5,130,150); Chris@2: p2.setBounds(150,5,500,150); Chris@2: p3.setBounds(660,5,100,150); Chris@2: cp.add(p1); Chris@2: cp.add(p2); Chris@2: cp.add(p3); Chris@2: Dimension d = FrameMargins.get(false); Chris@2: setSize(770 + d.width, 160 + d.height); Chris@2: int x = w.getLocationOnScreen().x + (w.getWidth() - getWidth()) / 2; Chris@2: int y = w.getLocationOnScreen().y + (w.getHeight() - getHeight()) / 2; Chris@2: setLocation(x, y); Chris@2: setVisible(true); Chris@2: } // constructor Chris@2: Chris@2: } // class WormLoadDialog