public static void next() throws Exception { if (REPEATMEDIA == ACTIVE) { REPEATMEDIA = UNACTIVE; GUI.getInstance().repeatTrack.setState(false); } GUI.getInstance().jTable.setValueAt(" ", CURRENTINDEXMEDIA, 0); if (CURRENTINDEXMEDIA == CURRENTPLAYLIST.getNumberOfMedia() - 1) { if (REPEATPLAYLIST == ACTIVE) { CURRENTINDEXMEDIA = 0; play(CURRENTPLAYLIST, CURRENTINDEXMEDIA); } } else { CURRENTINDEXMEDIA++; play(CURRENTPLAYLIST, CURRENTINDEXMEDIA); } }
public static void play(Playlist playlist, int indexofmedia) throws Exception { // la valeur x est utilis�e pour le positionnement du JScroolPane de la // JTable // la valeur qu'elle cotient � �t� choisit par des experiences que nous // avons r�alis�s instance.setsStates(SunoneStates.IN_PLAY); int x = (4 * 414) / 23; // recup�ration du chemin d'une musique dans la playlist // la m�thode open file est d�finie dans la classe FileEdited permet juste // de lire et renvoyer le chemin d'un fichier BufferedReader br = FileEdited.openFile(playlist.getName(), indexofmedia); String s = br.readLine(); br.close(); CURRENTMEDIA = s; do { // debut la grande boucle qui boucle jusqu'� la fin du fin de la playlist // et r�p�te eventuellement lorsque Repeter la playlist(REPEATPLAYLIST) est // activ�e while (s != null) { // boucle de lecture jusqu'� la fin du fichier afin de reinitialiser // les param�tres pour la lecture avant de tester repeatPlaylist. if (s != null) // debut du trraitement pour chaque fichier multimedia // dont le chemin a �t� lu dans la playlist. { // localisation du m�dia gr�ce � la classe Medialocator de JMF // cette methode permet d'encapsuler le media elle permet nous permet // donc // de faire abstraction du format du fichier utili� ( qu'il soit // mp3,mpg, avi ou autres) MediaLocator mediaLocator = new MediaLocator((new File(s).toURL()).toString()); do { // debut de la boucle dont la condition de sortit est que repeter // musique // ne soit pas activ�.si REPEATMEDIA est activ� il repete la m�me // musique. try { // creation du player. c'est sur lui que le traitement se fait // on utilise la classe Manager qui est le gestionnaire permettant // return // un player (qui est en fait une thread) et c'est sur elle que // les op�rations de lecture se feront. player = Manager.createPlayer(mediaLocator); // ajout du listener qui permet d'�couter les differents phases // par lesquels passent // le player: de la realisation au debut de la lecture comme nous // le verons dans son code player.addControllerListener( new ControllerAdapter() { double dureeTotale = 0; // permet d'�couter la fin de la r�alisation du media cet �tat // ne peut �tre atteint que lorsque // la m�thode realise() a �t� appel� auparavant. // lorsque la r�alisation se termine par exemple par exemple, on // peut retirer plusieurs // propri�t� du media. Comme la dur�e totale public void realizeComplete(RealizeCompleteEvent re) { // recuperation de la dur�e du media. dureeTotale = player.getDuration().getSeconds(); try { if (PLAYSTATUS != NEXTWASPAUSE) { // quelques initialisations des labels centraux de // l'interface graphique // aussi bien celui du nom de l'artiste que celui de la // dur�e totale de la musique GUI.getInstance().jLabel6.setText("00:00/00:00"); GUI.getInstance().jLabel.setText(getArtistName(CURRENTMEDIA)); GUI.getInstance().jSlider1.setValue(0); } } catch (Exception e) { } GUI.getInstance().jSlider1.setMaximum((int) dureeTotale); player.prefetch(); } public void prefetchComplete(PrefetchCompleteEvent pe) { GUI.getInstance().reinitialiseComposantsLecteur(); GUI.getInstance().mediaVisuel = player.getVisualComponent(); if (GUI.getInstance().mediaVisuel != null) GUI.getInstance() .mediaVisuel .addMouseListener( new MouseListener() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { if (fullScrean == 0) { fullScrean = 1; GUI.getInstance().fullScrean = GUI.getInstance().getFullScrean(); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screen = kit.getScreenSize(); GUI.getInstance().fullScrean.setSize(screen); GUI.getInstance() .fullScrean .add(GUI.getInstance().mediaVisuel); GUI.getInstance().setVisible(false); GUI.getInstance().fullScrean.setAlwaysOnTop(true); GUI.getInstance().fullScrean.setVisible(true); } else { fullScrean = 0; GUI.getInstance() .videoPanel .add( GUI.getInstance().mediaVisuel, BorderLayout.CENTER); GUI.getInstance().fullScrean.setVisible(false); GUI.getInstance().setVisible(true); GUI.getInstance().fullScrean = null; } } } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }); player.getGainControl().setDB(-70 + GUI.getInstance().jSlider.getValue()); if (GUI.getInstance().mediaVisuel != null) { GUI.getInstance() .jContentPane .add(GUI.getInstance().getJPanel4(), BorderLayout.CENTER); GUI.getInstance() .videoPanel .add(GUI.getInstance().mediaVisuel, BorderLayout.CENTER); GUI.getInstance().videoPanel.setVisible(true); GUI.getInstance().videoPanel.setTitle("SunOne"); GUI.getInstance().videoPanel.pack(); if (GUI.getInstance().fullScrean != null) { GUI.getInstance().fullScrean.add(GUI.getInstance().mediaVisuel); GUI.getInstance().fullScrean.setVisible(true); } } player.start(); } }); player.realize(); while (player.getState() != Player.Started) { Thread.sleep(70); } String timeTotal = conversion((int) player.getDuration().getSeconds()); GUI.getInstance().jTable.setValueAt(timeTotal, CURRENTINDEXMEDIA, 2); GUI.getInstance().jTable.setValueAt(GUI.fleche, CURRENTINDEXMEDIA, 0); if (CURRENTINDEXMEDIA != 0) GUI.getInstance().jTable.setValueAt(" ", CURRENTINDEXMEDIA - 1, 0); GUI.getInstance() .jScrollPane .getVerticalScrollBar() .setValue(((4 * 414) / 23) * (CURRENTINDEXMEDIA / 4)); x += x; scrollIncrement = 0; if (PLAYSTATUS == NEXTWASPAUSE) { player.setMediaTime(TIME); PLAYSTATUS = -1; } while (player.getState() == Player.Started) { Thread.sleep(1000); int i = (int) player.getMediaTime().getSeconds(); GUI.getInstance().jSlider1.setValue(i); GUI.getInstance().jLabel6.setText(conversion(i) + "/" + timeTotal); } } catch (NoPlayerException noplayeur) { noplayeur.printStackTrace(); } catch (IOException io) { io.printStackTrace(); } } while (REPEATMEDIA == ACTIVE); } CURRENTINDEXMEDIA = CURRENTINDEXMEDIA + 1; br = FileEdited.openFile(playlist.getName(), CURRENTINDEXMEDIA); s = br.readLine(); br.close(); CURRENTMEDIA = s; } // fin de while on a atteint la fin du fichier // est assez important car il faut reinitialiser les param�tres et tester // si repeat eat actif // c'est � dire se replacer au debut du fichier. br = FileEdited.openFile(playlist.NAME, 0); s = br.readLine(); br.close(); CURRENTMEDIA = s; CURRENTINDEXMEDIA = 0; } while (REPEATPLAYLIST == ACTIVE); // fin de la grande boucle qui tete repeat // playlist }