package com.quiltplayer.controller; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import com.quiltplayer.core.player.PlayerFactory; import com.quiltplayer.core.playlist.PlayList; import com.quiltplayer.model.Album; import com.quiltplayer.model.Song; import com.quiltplayer.view.swing.listeners.ChangeAlbumListener; import com.quiltplayer.view.swing.listeners.WikiListener; import com.quiltplayer.view.swing.panels.UtilityPanel; import com.quiltplayer.view.swing.panels.controlpanels.AlbumControlPanel; /** * Controller for changing albums. * * @author Vlado Palczynski */ @Controller public class ChangeAlbumController implements ChangeAlbumListener { private Logger log = Logger.getLogger(ChangeAlbumController.class); public static final String EVENT_CHANGE_ALBUM = "change.album"; public static final String EVENT_CHANGE_ALBUM_AND_PLAY_SONG = "change.album.and.song"; @Autowired private PlayerFactory playerFactory; @Autowired private PlayList playList; @Autowired private UtilityPanel playlistPanel; @Autowired private AlbumControlPanel albumControlPanel; @Autowired private WikiListener wikiListener; @Autowired @Qualifier("albumArtController") private ActionListener albumArtListener; /* * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public final void actionPerformed(final ActionEvent e) { if (e.getActionCommand().equals(EVENT_CHANGE_ALBUM)) { Album album = (Album) e.getSource(); if (album == null) { log.error("Album could not be found, inconsistency in the collection..."); } playerFactory.stop(); playlistPanel.changeAlbum(album); playList.clearPlaylist(); playList.addSongs(album.getSongCollection().getSongs()); playerFactory.play(playList.getCurrentSong()); wikiListener.actionPerformed(new ActionEvent(album, 0, WikiController.EVENT_UPDATE_WIKI)); albumArtListener.actionPerformed(new ActionEvent(album, 0, AlbumArtController.EVENT_UPDATE_ALBUM)); albumControlPanel.update(album); } else if (e.getActionCommand().equals(EVENT_CHANGE_ALBUM_AND_PLAY_SONG)) { Album album = (Album) ((Object[]) e.getSource())[0]; Song song = (Song) ((Object[]) e.getSource())[1]; if (album == null) { log.error("Album could not be found, inconsistency in the collection..."); } playerFactory.stop(); playlistPanel.changeAlbum(album); playList.clearPlaylist(); playList.addSongs(album.getSongCollection().getSongs()); playList.jumpToSong(song); playerFactory.play(playList.getCurrentSong()); wikiListener.actionPerformed(new ActionEvent(album, 0, WikiController.EVENT_UPDATE_WIKI)); albumArtListener.actionPerformed(new ActionEvent(album, 0, AlbumArtController.EVENT_UPDATE_ALBUM)); albumControlPanel.update(album); } } }