package tim.prune.undo;
import tim.prune.I18nManager;
import tim.prune.UpdateMessageBroker;
import tim.prune.data.AudioClip;
import tim.prune.data.DataPoint;
import tim.prune.data.Photo;
import tim.prune.data.TrackInfo;
/**
* Operation to undo the connection of a photo and/or audio to a point
*/
public class UndoConnectMedia implements UndoOperation
{
private DataPoint _point = null;
private String _photoFilename = null;
private String _audioFilename = null;
/**
* Constructor
* @param inPoint data point
* @param inPhotoFilename filename of photo, or null if photo not connected
* @param inAudioFilename filename of audio, or null of audio not connected
*/
public UndoConnectMedia(DataPoint inPoint, String inPhotoFilename, String inAudioFilename)
{
_point = inPoint;
_photoFilename = inPhotoFilename;
_audioFilename = inAudioFilename;
}
/**
* @return description of operation including photo and/or audio filename(s)
*/
public String getDescription()
{
String desc = I18nManager.getText("undo.connect") + " " + (_photoFilename==null?"":_photoFilename)
+ (_photoFilename!=null && _audioFilename!=null?", ":"")
+ (_audioFilename==null?"":_audioFilename);
return desc;
}
/**
* Perform the undo operation on the given Track
* @param inTrackInfo TrackInfo object on which to perform the operation
*/
public void performUndo(TrackInfo inTrackInfo) throws UndoException
{
if (_photoFilename != null)
{
// Disconnect photo
Photo photo = _point.getPhoto();
if (photo != null)
{
_point.setPhoto(null);
photo.setDataPoint(null);
}
}
if (_audioFilename != null)
{
// Disconnect audio
AudioClip audio = _point.getAudio();
if (audio != null)
{
_point.setAudio(null);
audio.setDataPoint(null);
}
}
// inform subscribers
UpdateMessageBroker.informSubscribers();
}
}