package juke.mp3.problems; import javax.sound.sampled.*; import javax.swing.*; import javax.swing.filechooser.FileFilter; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; public class Ap_Gui /*extends JFrame */{ Ap_Interface player; protected JFileChooser chooser; protected JPanel controlPanel, controlSubPanel; protected JButton stopBtn, pauseBtn,openBtn, playBtn, resumeBtn; protected JLabel statusLabel; protected JScrollPane waveScrollPane; protected JLabel fileLabel; private Container container,containerNEW; private BorderLayout layout; JFrame frame; public File inFileReference; public String setMode; AudioPlayer aP; /////////////////////////////// public Ap_Gui() { // super("Ap_Gui via jsresources, ibm and r.baldwin"); layoutComponents(); disableTransportControls(); aP = new AudioPlayer(); } public static void main(String[] args) { Ap_Gui apd = new Ap_Gui(); } //////////////////////////////////////////////////////////////Gui Crap /** * init and add most of the components */ protected void layoutComponents() { frame = new JFrame("Ap_Gui via jsresources, ibm and r.baldwin"); containerNEW = frame.getContentPane(); // Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int w = 385; int h = 85; // containerNEW.setLocation(screenSize.width/2 - w/2, screenSize.height/2 - h/2); containerNEW.setSize(w, h); containerNEW.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //frame.setDefaultCloseOperation(EXIT_ON_CLOSE); /* container = getContentPane(); layout = new BorderLayout(); */ controlSubPanel = new JPanel(); controlSubPanel.setLayout(new FlowLayout()); openBtn = new JButton("Open"); openBtn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { openFile(); } } ); playBtn = new JButton("Play"); playBtn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { play();///// ??? problem area } } ); pauseBtn = new JButton("Pause"); pauseBtn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { pause();///// ??? problem area } } ); resumeBtn = new JButton("Resume"); resumeBtn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { resume();///// ??? problem area } } ); stopBtn = new JButton("stop"); stopBtn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { stop(); //!?!?! problem area } } ); statusLabel = new JLabel("haha"); controlSubPanel.add(playBtn); controlSubPanel.add(pauseBtn); controlSubPanel.add(stopBtn); controlSubPanel.add(openBtn); controlSubPanel.add(resumeBtn); controlSubPanel.add(statusLabel); containerNEW.add(controlSubPanel); } public void enableTransportControls() { playBtn.setEnabled(true); pauseBtn.setEnabled(true); stopBtn.setEnabled(true); } public void disableTransportControls() { playBtn.setEnabled(false); pauseBtn.setEnabled(false); stopBtn.setEnabled(false); } public File openFile() { chooser = new JFileChooser(); chooser.setFileSelectionMode( JFileChooser.FILES_ONLY); int result = chooser.showOpenDialog(frame); if(result == JFileChooser.APPROVE_OPTION) { JOptionPane.showMessageDialog( null, "You pressed selected OKAY, the name is: " + chooser.getSelectedFile().getName() ); } if (result == JFileChooser.CANCEL_OPTION) { //return; } File file = chooser.getSelectedFile() ; //inFileReference = file; enableTransportControls(); inFileReference = file; //to above JfileChooser file, did this so it can //be used in the "control()" method return file; } //////////////////////////////////////////////////////////////Gui Crap public void play() { setMode = "Play"; control(); } protected void pause() { ///// ??? problem area setMode = "Pause"; control(); } protected void resume() { ///// ??? problem area setMode = "Resume"; control(); } protected void stop() { ///// ??? problem area setMode = "Stop"; control(); } public void control() { System.out.println("Current mode is: " + setMode); System.out.println("Did the file reference get passed? : " + inFileReference); /////////////////////////////////////////////////////////// if ( setMode == "Play" ) { statusLabel.setText("Initializing Line/setting datasource, and playing via start() "); System.out.println("If was executed, mode is: " + setMode); try { try { aP.loadAudioClipLess(inFileReference); aP.initLine(); } catch (LineUnavailableException e) { //dump in case of exception, then exit app e.printStackTrace(); System.exit(1); } catch (UnsupportedAudioFileException e) { e.printStackTrace(); System.exit(1); } catch (IllegalArgumentException e) { e.printStackTrace(); System.exit(1); } aP.startPlayback(); enableTransportControls(); } catch (Exception ex) { JOptionPane.showMessageDialog(frame, "An error has ocurred while loading the selected file: " + ex, "Error", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(); } frame.repaint(); }// end the if else if ( setMode == "Stop" ) { statusLabel.setText("Stopped / Line Flushed"); System.out.println("If was executed, mode is: " + setMode); aP.stopPlayback(); frame.repaint(); } else if ( setMode == "Pause" ) { statusLabel.setText("Paused / regular stop() "); System.out.println("If was executed, mode is: " + setMode); aP.pausePlayback(); frame.repaint(); } else if ( setMode == "Resume" ) { statusLabel.setText("Resuming via start() "); System.out.println("If was executed, mode is: " + setMode); aP.resumePlayback(); frame.repaint(); } /////////////////////////////////////////////////////////// } /////End Ap_Gui } /////End Ap_Gui