1 /* 2 * aTunes 3 * Copyright (C) Alex Aranda, Sylvain Gaudard and contributors 4 * 5 * See http://www.atunes.org/wiki/index.php?title=Contributing for information about contributors 6 * 7 * http://www.atunes.org 8 * http://sourceforge.net/projects/atunes 9 * 10 * This program is free software; you can redistribute it and/or 11 * modify it under the terms of the GNU General Public License 12 * as published by the Free Software Foundation; either version 2 13 * of the License, or (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 */ 20 21 package net.sourceforge.atunes.kernel.modules.tags; 22 23 import java.util.Collection; 24 25 import net.sourceforge.atunes.kernel.PlayListEventListeners; 26 import net.sourceforge.atunes.model.ILocalAudioObject; 27 import net.sourceforge.atunes.model.INavigationHandler; 28 import net.sourceforge.atunes.model.IPlayListHandler; 29 import net.sourceforge.atunes.model.IPlayerHandler; 30 import net.sourceforge.atunes.model.IUIHandler; 31 32 /** 33 * Refreshes tags after being modified 34 * 35 * @author alex 36 * 37 */ 38 public final class RefreshTagAfterModifyRunnable implements Runnable { 39 40 private Collection<ILocalAudioObject> audioFilesEditing; 41 private IPlayListHandler playListHandler; 42 private IPlayerHandler playerHandler; 43 private INavigationHandler navigationHandler; 44 private IUIHandler uiHandler; 45 private PlayListEventListeners playListEventListeners; 46 47 /** 48 * @param playListEventListeners 49 */ setPlayListEventListeners( final PlayListEventListeners playListEventListeners)50 public void setPlayListEventListeners( 51 final PlayListEventListeners playListEventListeners) { 52 this.playListEventListeners = playListEventListeners; 53 } 54 55 /** 56 * @param uiHandler 57 */ setUiHandler(final IUIHandler uiHandler)58 public void setUiHandler(final IUIHandler uiHandler) { 59 this.uiHandler = uiHandler; 60 } 61 62 /** 63 * @param navigationHandler 64 */ setNavigationHandler(final INavigationHandler navigationHandler)65 public void setNavigationHandler(final INavigationHandler navigationHandler) { 66 this.navigationHandler = navigationHandler; 67 } 68 69 /** 70 * @param playerHandler 71 */ setPlayerHandler(final IPlayerHandler playerHandler)72 public void setPlayerHandler(final IPlayerHandler playerHandler) { 73 this.playerHandler = playerHandler; 74 } 75 76 /** 77 * @param playListHandler 78 */ setPlayListHandler(final IPlayListHandler playListHandler)79 public void setPlayListHandler(final IPlayListHandler playListHandler) { 80 this.playListHandler = playListHandler; 81 } 82 83 /** 84 * @param audioFilesEditing 85 */ setAudioFilesEditing( final Collection<ILocalAudioObject> audioFilesEditing)86 public void setAudioFilesEditing( 87 final Collection<ILocalAudioObject> audioFilesEditing) { 88 this.audioFilesEditing = audioFilesEditing; 89 } 90 91 @Override run()92 public void run() { 93 // update Swing components if necessary 94 boolean playListContainsRefreshedFile = false; 95 for (ILocalAudioObject lao : this.audioFilesEditing) { 96 if (this.playListHandler.getVisiblePlayList().contains(lao)) { 97 playListContainsRefreshedFile = true; 98 } 99 100 // Changed current playing song 101 if (this.playListHandler.getCurrentAudioObjectFromCurrentPlayList() != null 102 && this.playListHandler 103 .getCurrentAudioObjectFromCurrentPlayList().equals( 104 lao)) { 105 106 this.playListEventListeners.selectedAudioObjectHasChanged(lao); 107 108 if (this.playerHandler.isEnginePlaying()) { 109 this.uiHandler.updateTitleBar(lao); 110 } 111 } 112 } 113 if (playListContainsRefreshedFile) { 114 this.playListHandler.refreshPlayList(); 115 } 116 this.navigationHandler.repositoryReloaded(); 117 } 118 }