package com.quiltplayer.controller;
import java.awt.event.ActionEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import com.quiltplayer.core.storage.ArtistStorage;
import com.quiltplayer.model.Album;
import com.quiltplayer.model.Artist;
import com.quiltplayer.view.swing.ActiveView;
import com.quiltplayer.view.swing.frame.QuiltPlayerFrame;
import com.quiltplayer.view.swing.listeners.ArtistListener;
import com.quiltplayer.view.swing.panels.MainTabs;
import com.quiltplayer.view.swing.panels.UtilityPanel;
import com.quiltplayer.view.swing.panels.controlpanels.AlbumControlPanel;
import com.quiltplayer.view.swing.panels.controlpanels.ControlPanel;
import com.quiltplayer.view.swing.views.ListView;
import com.quiltplayer.view.swing.views.impl.DefaultAlbumView;
/**
* Controller for artist views.
*
* @author Vlado Palczynski
*/
@Controller()
public class ArtistController implements ArtistListener {
public static final String EVENT_DELETE_ARTIST = "delete.artist";
public static final String ACTION_GET_ARTIST_ALBUMS = "get.artist";
@Autowired
private QuiltPlayerFrame frame;
@Autowired
@Qualifier("defaultAlbumView")
private ListView<Album> albumView;
@Autowired
private ArtistStorage artistStorage;
@Autowired
private UtilityPanel playlistPanel;
@Autowired
private ControlPanel controlPanel;
@Autowired
private AlbumControlPanel albumControlPanel;
/*
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public final void actionPerformed(final ActionEvent e) {
String actionCommand = e.getActionCommand();
if (ACTION_GET_ARTIST_ALBUMS == actionCommand) {
Artist artist;
if (e.getSource() instanceof Artist)
artist = (Artist) e.getSource();
else
artist = playlistPanel.getCurrentSongLabel().getSong().getAlbum().getArtist();
albumView.setList(artist.getAlbums());
((DefaultAlbumView) albumView).setArtist(artist);
frame.updateUI(ActiveView.ALBUMS);
controlPanel.updateTab(MainTabs.ALL_ALBUMS);
albumControlPanel.updateTab(MainTabs.ALL_ALBUMS);
}
else if (actionCommand == EVENT_DELETE_ARTIST) {
artistStorage.delete((Artist) e.getSource());
frame.updateUI(ActiveView.ARTISTS);
}
}
}