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

« back to all changes in this revision

Viewing changes to TuxGuitar/src/org/herac/tuxguitar/song/models/TGSong.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 23-nov-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.models;
 
8
 
 
9
import java.util.ArrayList;
 
10
import java.util.Iterator;
 
11
import java.util.List;
 
12
 
 
13
import org.herac.tuxguitar.song.factory.TGFactory;
 
14
 
 
15
/**
 
16
 * @author julian
 
17
 *
 
18
 * TODO To change the template for this generated type comment go to
 
19
 * Window - Preferences - Java - Code Style - Code Templates
 
20
 */
 
21
public abstract class TGSong {
 
22
        
 
23
        private String name;
 
24
        private String artist;
 
25
        private String album;
 
26
        private String author;
 
27
        private List tracks;
 
28
        private List measureHeaders;
 
29
        
 
30
        public TGSong() {
 
31
                this.name = new String();
 
32
                this.artist = new String();
 
33
                this.album = new String();
 
34
                this.author = new String();
 
35
                this.tracks = new ArrayList();
 
36
                this.measureHeaders = new ArrayList();
 
37
        }
 
38
        
 
39
        public String getName() {
 
40
                return this.name;
 
41
        }
 
42
        
 
43
        public void setName(String name) {
 
44
                this.name = name;
 
45
        }
 
46
        
 
47
        public String getAlbum() {
 
48
                return this.album;
 
49
        }
 
50
        
 
51
        public void setAlbum(String album) {
 
52
                this.album = album;
 
53
        }
 
54
        
 
55
        public String getAuthor() {
 
56
                return this.author;
 
57
        }
 
58
        
 
59
        public void setAuthor(String author) {
 
60
                this.author = author;
 
61
        }
 
62
        
 
63
        public String getArtist() {
 
64
                return this.artist;
 
65
        }
 
66
        
 
67
        public void setArtist(String artist) {
 
68
                this.artist = artist;
 
69
        }
 
70
        
 
71
        public int countMeasureHeaders(){
 
72
                return this.measureHeaders.size();
 
73
        }
 
74
        
 
75
        public void addMeasureHeader(TGMeasureHeader measureHeader){
 
76
                this.addMeasureHeader(countMeasureHeaders(),measureHeader);
 
77
        }
 
78
        
 
79
        public void addMeasureHeader(int index,TGMeasureHeader measureHeader){
 
80
                measureHeader.setSong(this);
 
81
                this.measureHeaders.add(index,measureHeader);
 
82
        }
 
83
        
 
84
        public void removeMeasureHeader(int index){
 
85
                this.measureHeaders.remove(index);
 
86
        }
 
87
        
 
88
        public void removeMeasureHeader(TGMeasureHeader measureHeader){
 
89
                this.measureHeaders.remove(measureHeader);
 
90
        }
 
91
        
 
92
        public TGMeasureHeader getMeasureHeader(int index){
 
93
                return (TGMeasureHeader)this.measureHeaders.get(index);
 
94
        }
 
95
        
 
96
        public Iterator getMeasureHeaders() {
 
97
                return this.measureHeaders.iterator();
 
98
        }
 
99
        
 
100
        public int countTracks(){
 
101
                return this.tracks.size();
 
102
        }
 
103
        
 
104
        public void addTrack(TGTrack track){
 
105
                this.addTrack(countTracks(),track);
 
106
        }
 
107
        
 
108
        public void addTrack(int index,TGTrack track){
 
109
                track.setSong(this);
 
110
                this.tracks.add(index,track);
 
111
        }
 
112
        
 
113
        public void moveTrack(int index,TGTrack track){
 
114
                this.tracks.remove(track);
 
115
                this.tracks.add(index,track);
 
116
        }
 
117
        
 
118
        public void removeTrack(TGTrack track){
 
119
                this.tracks.remove(track);
 
120
                track.clear();
 
121
        }
 
122
        
 
123
        public TGTrack getTrack(int index){
 
124
                return (TGTrack)this.tracks.get(index);
 
125
        }
 
126
        
 
127
        public Iterator getTracks() {
 
128
                return this.tracks.iterator();
 
129
        }
 
130
        
 
131
        public boolean isEmpty(){
 
132
                return (countMeasureHeaders() == 0 || countTracks() == 0);
 
133
        }
 
134
        
 
135
        public void clear(){
 
136
                Iterator tracks = getTracks();
 
137
                while(tracks.hasNext()){
 
138
                        TGTrack track = (TGTrack)tracks.next();
 
139
                        track.clear();
 
140
                }
 
141
        }
 
142
        
 
143
        public TGSong clone(TGFactory factory){
 
144
                TGSong song = factory.newSong();
 
145
                copy(factory,song);
 
146
                return song;
 
147
        }
 
148
        
 
149
        public void copy(TGFactory factory,TGSong song){
 
150
                song.setName(getName());
 
151
                song.setArtist(getArtist());
 
152
                song.setAlbum(getAlbum());
 
153
                song.setAuthor(getAuthor());
 
154
                Iterator headers = getMeasureHeaders();
 
155
                while(headers.hasNext()){
 
156
                        TGMeasureHeader header = (TGMeasureHeader)headers.next();
 
157
                        song.addMeasureHeader(header.clone(factory));
 
158
                }
 
159
                Iterator tracks = getTracks();
 
160
                while(tracks.hasNext()){
 
161
                        TGTrack track = (TGTrack)tracks.next();
 
162
                        song.addTrack(track.clone(factory, song));
 
163
                }
 
164
        }
 
165
}