~ubuntu-branches/ubuntu/oneiric/tuxguitar/oneiric

« back to all changes in this revision

Viewing changes to src/org/herac/tuxguitar/song/util/UndoableUtil.java

  • Committer: Bazaar Package Importer
  • Author(s): Philippe Coval
  • Date: 2008-06-19 00:30:30 UTC
  • mto: (5.1.2 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20080619003030-h719szrhsngou7c6
Tags: upstream-1.0
ImportĀ upstreamĀ versionĀ 1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Created on 05-dic-2005
3
 
 *
4
 
 * TODO To change the template for this generated file go to
5
 
 * Window - Preferences - Java - Code Style - Code Templates
6
 
 */
7
 
package org.herac.tuxguitar.song.util;
8
 
 
9
 
import java.util.ArrayList;
10
 
import java.util.List;
11
 
 
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;
21
 
 
22
 
/**
23
 
 * @author julian
24
 
 * 
25
 
 * TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Style - Code Templates
26
 
 */
27
 
public class UndoableUtil {
28
 
 
29
 
    public static Song cloneSong(Song song) {
30
 
 
31
 
        List tracks = new ArrayList();
32
 
        for (int tIdx = 0; tIdx < song.getTracks().size(); tIdx++) {
33
 
            SongTrack track = (SongTrack) song.getTracks().get(tIdx);
34
 
 
35
 
            List measures = new ArrayList();
36
 
            for (int mIdx = 0; mIdx < track.getMeasures().size(); mIdx++) {
37
 
                Measure measure = (Measure) track.getMeasures().get(mIdx);
38
 
 
39
 
                TimeSignature timeSignature = (TimeSignature) measure.getTimeSignature().clone();
40
 
                Tempo tempo = (Tempo)measure.getTempo().clone();
41
 
                
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());
46
 
                }
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());
51
 
                }
52
 
 
53
 
                measures.add(new Measure(measure.getHeader(), notes, silences,measure.getClef(),measure.getKeySignature()));
54
 
 
55
 
            }
56
 
 
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());
61
 
            }
62
 
 
63
 
            tracks.add(new SongTrack(track.getNumber(),track.getName(),track.getChannel(), measures, strings,track.getOffset(),track.getColor()));
64
 
        }
65
 
        
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());
70
 
        }        
71
 
 
72
 
        
73
 
        return new Song(song.getName(),song.getInterpret(),song.getAlbum(),song.getAuthor(), tracks,headers,Song.MAX_VOLUME);
74
 
    }
75
 
}
 
 
b'\\ No newline at end of file'