import org.tritonus.share.sampled.TAudioFormat as taf
import org.tritonus.share.sampled.file.TAudioFileFormat as ftaf
import javax.sound.sampled as sampled
import java.io as io
import jarray
import java.util as util
import javax.swing as swing
import java.lang as lang
import java.awt as awt
import java.util as util



class jyMusica(lang.Thread):     
    def __init__(self):
        self.panelReproductor()
        self.menu() 
        self.win = swing.JFrame("JyMusica", size=(150, 150),windowClosing=self.exit)
        self.win.setJMenuBar(self.menu)
        self.win.contentPane.add(self.pnlBoton, awt.BorderLayout.NORTH)
        self.win.contentPane.add(self.pnlBoton2, awt.BorderLayout.CENTER)
        self.win.show()
        self.win.setResizable(0)
        self.win.pack()
 
    def exit(self, event):
        lang.System.exit(0)   
        
    def run(self):     
        archivo = io.File(self.nombre)
        inp = sampled.AudioSystem.getAudioInputStream(archivo)
        baseFileFormat = sampled.AudioSystem.getAudioFileFormat(archivo)
        baseFormat = baseFileFormat.getFormat() 
        self.getTag(baseFileFormat)
        self.player.play()
        
    def getTag(self, baseFileFormat):          
        properties = ftaf.properties(baseFileFormat)
        key = "author"
        val = properties.get(key)
        key = "title" 
        tag= properties.get(key)
        key = "album"
        alb = properties.get(key)
        self.txtArea.setText("")
        self.txtArea.append("\nAuthor: ")
        self.txtArea.append(val + "\n")
        self.txtArea.append("title: ")
        self.txtArea.append(tag +"\n")
        self.txtArea.append("Album: ")
        self.txtArea.append(alb + "\n")

    def panelReproductor(self):        
        self.pnlBoton = swing.JPanel(awt.FlowLayout())
        self.pnlBoton2 = swing.JPanel(awt.FlowLayout())
        acciones = ["Play", "Stop"]
        self.txtArea = swing.JTextArea(6,18)
        self.areaSrl = swing.JScrollPane(self.txtArea)
        self.pnlBoton.add(self.areaSrl)
        for cadaBoton in acciones:
            self.pnlBoton2.add(swing.JButton(cadaBoton, actionPerformed=self.accionMenu))

    def menu(self):
        opciones = ["Play", "Stop"]
        self.menu = swing.JMenuBar()
        archivo = swing.JMenu("Archivo")         
        for eachOpcion in opciones: 
            archivo.add(swing.JMenuItem(eachOpcion, actionPerformed=self.accionMenu))
            archivo.addSeparator()
        self.menu.add(archivo)

    
    def accionMenu(self, event):
        self.accion = event.getActionCommand()
        if self.accion == 'Play':
            selector = swing.JFileChooser()            
            rtn = selector.showOpenDialog(self.win)
            archivo = selector.getSelectedFile()
            self.player = pad.AdvancedPlayer(io.FileInputStream(archivo))
            self.nombre=archivo.toString()
            self.play()

        elif self.accion=='Stop':
            self.stop()

    def play(self):
        self.hilo = lang.Thread(self)
        self.hilo.start()
    
    def stop(self):
        self.player.stop()
#        self.line.drain()
#        self.line.stop()
#        self.line.close()
#        self.din.close()
#        self.hilo.interrupt() 
#        self.hilo.finalize()        
#

if __name__=='__main__':
    jyMusica()

