2
* Created on 05-dic-2005
4
* TODO To change the template for this generated file go to
5
* Window - Preferences - Java - Code Style - Code Templates
7
package org.herac.tuxguitar.song.util;
9
import java.util.ArrayList;
10
import java.util.List;
12
import org.herac.tuxguitar.song.models.InstrumentString;
13
import org.herac.tuxguitar.song.models.Measure;
14
import org.herac.tuxguitar.song.models.MeasureHeader;
15
import org.herac.tuxguitar.song.models.Note;
16
import org.herac.tuxguitar.song.models.Silence;
17
import org.herac.tuxguitar.song.models.Song;
18
import org.herac.tuxguitar.song.models.SongTrack;
19
import org.herac.tuxguitar.song.models.Tempo;
20
import org.herac.tuxguitar.song.models.TimeSignature;
25
* TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style - Code Templates
27
public class UndoableUtil {
29
public static Song cloneSong(Song song) {
31
List tracks = new ArrayList();
32
for (int tIdx = 0; tIdx < song.getTracks().size(); tIdx++) {
33
SongTrack track = (SongTrack) song.getTracks().get(tIdx);
35
List measures = new ArrayList();
36
for (int mIdx = 0; mIdx < track.getMeasures().size(); mIdx++) {
37
Measure measure = (Measure) track.getMeasures().get(mIdx);
39
TimeSignature timeSignature = (TimeSignature) measure.getTimeSignature().clone();
40
Tempo tempo = (Tempo)measure.getTempo().clone();
42
List notes = new ArrayList();
43
for (int nIdx = 0; nIdx < measure.getNotes().size(); nIdx++) {
44
Note note = (Note) measure.getNotes().get(nIdx);
45
notes.add((Note) note.clone());
47
List silences = new ArrayList();
48
for (int sIdx = 0; sIdx < measure.getSilences().size(); sIdx++) {
49
Silence silence = (Silence) measure.getSilences().get(sIdx);
50
silences.add((Silence) silence.clone());
53
measures.add(new Measure(measure.getHeader(), notes, silences,measure.getClef(),measure.getKeySignature()));
57
List strings = new ArrayList();
58
for (int sIdx = 0; sIdx < track.getStrings().size(); sIdx++) {
59
InstrumentString string = (InstrumentString) track.getStrings().get(sIdx);
60
strings.add((InstrumentString) string.clone());
63
tracks.add(new SongTrack(track.getNumber(),track.getName(),track.getChannel(), measures, strings,track.getOffset(),track.getColor()));
66
List headers = new ArrayList();
67
for(int i = 0;i < song.getMeasureHeaders().size();i ++){
68
MeasureHeader header = (MeasureHeader)song.getMeasureHeaders().get(i);
69
headers.add(header.clone());
73
return new Song(song.getName(),song.getInterpret(),song.getAlbum(),song.getAuthor(), tracks,headers,Song.MAX_VOLUME);
b'\\ No newline at end of file'