1 package tim.prune.undo;
\r
3 import tim.prune.I18nManager;
\r
4 import tim.prune.UpdateMessageBroker;
\r
5 import tim.prune.data.AudioClip;
\r
6 import tim.prune.data.DataPoint;
\r
7 import tim.prune.data.TrackInfo;
\r
10 * Operation to undo a delete of a single audio item, either with or without point
\r
12 public class UndoDeleteAudio extends UndoDeleteOperation
\r
14 private int _audioIndex = -1;
\r
15 private AudioClip _audio = null;
\r
16 private int _pointIndex = -1;
\r
17 private DataPoint _point = null;
\r
22 * @param inAudio audio item
\r
23 * @param inAudioIndex index number of audio within list
\r
24 * @param inPoint data point
\r
25 * @param inPointIndex index number of point within track
\r
27 public UndoDeleteAudio(AudioClip inAudio, int inAudioIndex, DataPoint inPoint, int inPointIndex)
\r
30 _audioIndex = inAudioIndex;
\r
32 _pointIndex = inPointIndex;
\r
37 * @return description of operation including filename
\r
39 public String getDescription() {
\r
40 return I18nManager.getText("undo.removeaudio") + " " + _audio.getName();
\r
45 * Perform the undo operation on the given Track
\r
46 * @param inTrackInfo TrackInfo object on which to perform the operation
\r
48 public void performUndo(TrackInfo inTrackInfo) throws UndoException
\r
51 inTrackInfo.getAudioList().addAudio(_audio, _audioIndex);
\r
52 // if there's a point to restore, restore it
\r
55 if (!inTrackInfo.getTrack().insertPoint(_point, _pointIndex)) {
\r
56 throw new UndoException(getDescription());
\r
58 // Change the current point/range selection if required
\r
59 modifySelection(inTrackInfo, _pointIndex, _pointIndex);
\r
63 // update needed if not already triggered by track update
\r
64 UpdateMessageBroker.informSubscribers();
\r
66 // Ensure that audio is associated with point and vice versa
\r
67 _audio.setDataPoint(_point);
\r
68 if (_point != null) {
\r
69 _point.setAudio(_audio);
\r