package com.quiltplayer.controller;
import java.awt.event.ActionEvent;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import com.quiltplayer.core.scanner.CoverScanner;
import com.quiltplayer.core.scanner.ScanningEvent;
import com.quiltplayer.core.scanner.ScanningEvent.Scanner;
import com.quiltplayer.core.scanner.ScanningEvent.Status;
import com.quiltplayer.model.Album;
import com.quiltplayer.view.swing.frame.QuiltPlayerFrame;
import com.quiltplayer.view.swing.listeners.ScanningListener;
import com.quiltplayer.view.swing.panels.utility.AlbumUtilityPanel;
import com.quiltplayer.view.swing.panels.utility.EditUtilityPanel;
import com.quiltplayer.view.swing.views.impl.ConfigurationView;
/**
* Controller for all scanning.
*
* @author Vlado Palczynski
*/
@Controller
public class ScanningController implements ScanningListener {
private Logger log = Logger.getLogger(ScanningController.class);
public static final String EVENT_RESCAN_ALBUM = "rescan.album";
/**
* Event to start updating collection.
*/
public static final String EVENT_UPDATE_COLLECTION = "update.collection";
/**
* Event to cancel update collection.
*/
public static final String EVENT_CANCEL_UPDATE_COLLECTION = "cancel.update.collection";
/**
* Event to start scanning covers,
*/
public static final String EVENT_SCAN_COVERS = "scan.covers";
@Autowired
private QuiltPlayerFrame frame;
@Autowired
private CoverScanner coverScanner;
@Autowired
private AlbumUtilityPanel playlistPanel;
@Autowired
private ConfigurationView configurationView;
@Autowired
private EditUtilityPanel editPlaylistPanel;
/*
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public final void actionPerformed(final ActionEvent e) {
if (e.getActionCommand().equals(EVENT_SCAN_COVERS)) {
coverScanner.scanCovers();
}
else if (e.getActionCommand().equals(ConfigurationView.EVENT_CANCEL_SCAN_COVERS)) {
coverScanner.cancelScanCovers();
}
else if (e.getActionCommand().equals(EVENT_UPDATE_COLLECTION)) {
// collectionScanner.scanCollection();
}
else if (e.getActionCommand().equals(EVENT_CANCEL_UPDATE_COLLECTION)) {
// collectionScanner.cancelScanCollection();
}
else if (e.getActionCommand().equals(EVENT_RESCAN_ALBUM)) {
Album album = (Album) e.getSource();
if (album != null) {
log.debug("Rescanning album " + album.getTitle());
coverScanner.scanCovers(album);
}
else {
// Error
log.error("Album does not exist.");
}
}
}
/*
* @see org.quiltplayer.view.listeners.ScanningListener#scannerEvent(org.quiltplayer
* .core.scanner.ScanningEvent)
*/
@Override
public final void scannerEvent(final ScanningEvent e) {
if (Scanner.ID3 == e.getScanner()) {
if (Status.STARTED == e.getStatus()) {
// configurationView.disableUpdateButton();
}
else if (Status.DONE == e.getStatus()) {
// configurationView.enableUpdateButton();
frame.updateUI();
}
}
else if (Scanner.COVERS == e.getScanner()) {
if (Status.STARTED == e.getStatus()) {
// configurationView.disableScanButton();
}
else if (Status.DONE == e.getStatus()) {
// configurationView.enableScanButton();
frame.updateUI();
playlistPanel.updateAlbumUI();
}
}
else if (Scanner.COVER == e.getScanner()) {
if (Status.STARTED == e.getStatus()) {
editPlaylistPanel.disableRescanButton();
}
else if (Status.DONE == e.getStatus()) {
editPlaylistPanel.enableRescanButton();
frame.updateUI();
playlistPanel.updateAlbumUI();
}
}
}
}