/*
* AudioTracks.java
* Eisenkraut
*
* Copyright (c) 2004-2016 Hanns Holger Rutz. All rights reserved.
*
* This software is published under the GNU General Public License v3+
*
*
* For further information, please contact Hanns Holger Rutz at
* contact@sciss.de
*/
package de.sciss.eisenkraut.timeline;
import java.util.List;
import de.sciss.eisenkraut.io.AudioTrail;
import de.sciss.eisenkraut.net.OSCRouter;
import de.sciss.eisenkraut.net.OSCRouterWrapper;
import de.sciss.eisenkraut.net.RoutedOSCMessage;
import de.sciss.eisenkraut.session.Session;
import de.sciss.eisenkraut.session.SessionCollection;
import de.sciss.app.AbstractApplication;
import de.sciss.common.ProcessingThread;
import de.sciss.timebased.Trail;
import de.sciss.util.Flag;
public class AudioTracks
extends SessionCollection
implements OSCRouter {
private static final String OSC_AUDIO = "audio";
private final OSCRouterWrapper osc;
private final Session doc;
private AudioTrail trail;
public AudioTracks( Session doc )
{
super();
this.doc = doc;
osc = new OSCRouterWrapper( doc, this );
}
public void setTrail( AudioTrail t )
{
trail = t;
}
public Trail getTrail()
{
return trail;
}
public boolean isSelected(AudioTrack t) {
return doc.selectedTracks.contains(t);
}
public static boolean checkSyncedAudio(List<Track.Info> tis, boolean changesTimeline, ProcessingThread context, Flag hasSelectedAudio) {
hasSelectedAudio.set(false);
for (Track.Info ti : tis) {
if (changesTimeline && !ti.getChannelSync()) {
if (context != null)
context.setException(new IllegalStateException(AbstractApplication.getApplication().getResourceString("errAudioWillLooseSync")));
return false;
}
if ((ti.trail instanceof AudioTrail) && ti.selected) {
hasSelectedAudio.set(true);
}
}
return true;
}
// ------------- OSCRouter interface -------------
public String oscGetPathComponent()
{
return OSC_AUDIO;
}
public void oscRoute( RoutedOSCMessage rom )
{
osc.oscRoute( rom );
}
public void oscAddRouter( OSCRouter subRouter )
{
osc.oscAddRouter( subRouter );
}
public void oscRemoveRouter( OSCRouter subRouter )
{
osc.oscRemoveRouter( subRouter );
}
public Object oscQuery_count()
{
return size();
}
}