/[svn]/jsampler/trunk/src/org/jsampler/DefaultOrchestraListModel.java
ViewVC logotype

Annotation of /jsampler/trunk/src/org/jsampler/DefaultOrchestraListModel.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 912 - (hide annotations) (download)
Mon Aug 7 18:34:40 2006 UTC (17 years, 8 months ago) by iliev
File size: 8757 byte(s)
* updating to JSampler 0.3a

1 iliev 912 /*
2     * JSampler - a java front-end for LinuxSampler
3     *
4     * Copyright (C) 2005, 2006 Grigor Kirilov Iliev
5     *
6     * This file is part of JSampler.
7     *
8     * JSampler is free software; you can redistribute it and/or modify
9     * it under the terms of the GNU General Public License version 2
10     * as published by the Free Software Foundation.
11     *
12     * JSampler is distributed in the hope that it will be useful,
13     * but WITHOUT ANY WARRANTY; without even the implied warranty of
14     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15     * GNU General Public License for more details.
16     *
17     * You should have received a copy of the GNU General Public License
18     * along with JSampler; if not, write to the Free Software
19     * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20     * MA 02111-1307 USA
21     */
22    
23     package org.jsampler;
24    
25     import java.util.Vector;
26    
27     import org.jsampler.event.OrchestraListListener;
28     import org.jsampler.event.OrchestraListEvent;
29    
30     import org.w3c.dom.Document;
31     import org.w3c.dom.Element;
32     import org.w3c.dom.Node;
33     import org.w3c.dom.NodeList;
34    
35    
36     /**
37     * This class provides default implementation of the <code>OrchestraListModel</code> interface.
38     * @author Grigor Iliev
39     */
40     public class DefaultOrchestraListModel implements OrchestraListModel {
41     private final Vector<OrchestraModel> orchestras = new Vector<OrchestraModel>();
42     private final Vector<OrchestraListListener> listeners = new Vector<OrchestraListListener>();
43    
44    
45     /** Creates a new instance of <code>DefaultOrchestraListModel</code>. */
46     public
47     DefaultOrchestraListModel() {
48    
49     }
50    
51     /**
52     * Registers the specified listener for receiving event messages.
53     * @param l The <code>OrchestraListListener</code> to register.
54     */
55     public void
56     addOrchestraListListener(OrchestraListListener l) { listeners.add(l); }
57    
58     /**
59     * Removes the specified listener.
60     * @param l The <code>OrchestraListListener</code> to remove.
61     */
62     public void
63     removeOrchestraListListener(OrchestraListListener l) { listeners.remove(l); }
64    
65     /**
66     * Gets the current number of orchestras in the list.
67     * @return The current number of orchestras in the list.
68     */
69     public int
70     getOrchestraCount() { return orchestras.size(); }
71    
72     /**
73     * Gets the orchestra at the specified position.
74     * @param idx The index of the orchestra to be returned.
75     * @return The orchestra at the specified position.
76     */
77     public OrchestraModel
78     getOrchestra(int idx) { return orchestras.get(idx); }
79    
80     /**
81     * Adds the specified orchestra to the list.
82     * @param orchestra The model of the orchestra to be added.
83     * @throws IllegalArgumentException If <code>orchestra</code> is <code>null</code>.
84     */
85     public void
86     addOrchestra(OrchestraModel orchestra) {
87     insertOrchestra(orchestra, getOrchestraCount());
88     }
89    
90     /**
91     * Inserts the specified orchestra at the specified position.
92     * @param orchestra The orchestra to be inserted.
93     * @param idx The position of the orchestra.
94     * @throws IllegalArgumentException If <code>orchestra</code> is <code>null</code>.
95     * @throws ArrayIndexOutOfBoundsException If the specified index is invalid.
96     */
97     public void
98     insertOrchestra(OrchestraModel orchestra, int idx) {
99     if(orchestra == null)
100     throw new IllegalArgumentException("orchestra should be non-null!");
101    
102     orchestras.insertElementAt(orchestra, idx);
103     fireOrchestraAdded(orchestra);
104     }
105    
106     /**
107     * Removes the specified orchestra from the list.
108     * @param idx The index of the orchestra to remove.
109     */
110     public void
111     removeOrchestra(int idx) {
112     OrchestraModel orchestraModel = orchestras.get(idx);
113     orchestras.removeElementAt(idx);
114     fireOrchestraRemoved(orchestraModel);
115     }
116    
117     /**
118     * Removes the specified orchestra from the list.
119     * @param orchestraModel The model of the orchestra to remove.
120     * @return <code>true</code> if the specified orchestra was in the list,
121     * <code>false</code> otherwise.
122     */
123     public boolean
124     removeOrchestra(OrchestraModel orchestraModel) {
125     boolean b = orchestras.removeElement(orchestraModel);
126     if(b) fireOrchestraRemoved(orchestraModel);
127     return b;
128     }
129    
130     /**
131     * Gets the position of the specified orchestra in this orchestra list.
132     * @param orchestra The orchestra whose index should be returned.
133     * @return The position of the specified orchestra in this orchestra list,
134     * and -1 if <code>orchestra</code> is <code>null</code> or
135     * the orchestra list does not contain the specified orchestra.
136     */
137     public int
138     getOrchestraIndex(OrchestraModel orchestra) {
139     if(orchestra == null) return -1;
140    
141     for(int i = 0; i < getOrchestraCount(); i++) {
142     if(getOrchestra(i) == orchestra) return i;
143     }
144    
145     return -1;
146     }
147    
148     /**
149     * Moves the specified orchestra one the top of the orchestra list.
150     * This method does nothing if <code>orchestra</code> is <code>null</code>,
151     * the orchestra list does not contain the specified orchestra,
152     * or if the orchestra is already on the top.
153     * @param orchestra The orchestra to move on top.
154     */
155     public void
156     moveOrchestraOnTop(OrchestraModel orchestra) {
157     if(orchestra == null) return;
158    
159     int idx = getOrchestraIndex(orchestra);
160     if(idx <= 0) return;
161    
162     removeOrchestra(idx);
163     insertOrchestra(orchestra, 0);
164     }
165    
166     /**
167     * Moves the specified orchestra one position up in the orchestra list.
168     * This method does nothing if <code>orchestra</code> is <code>null</code>,
169     * the orchestra list does not contain the specified orchestra,
170     * or if the orchestra is already on the top.
171     * @param orchestra The orchestra to move up.
172     */
173     public void
174     moveOrchestraUp(OrchestraModel orchestra) {
175     if(orchestra == null) return;
176    
177     int idx = getOrchestraIndex(orchestra);
178     if(idx <= 0) return;
179    
180     removeOrchestra(idx);
181     insertOrchestra(orchestra, idx - 1);
182     }
183    
184     /**
185     * Moves the specified orchestra one position down in the orchestra list.
186     * This method does nothing if <code>orchestra</code> is <code>null</code>,
187     * the orchestra list does not contain the specified orchestra,
188     * or if the orchestra is already at the bottom.
189     * @param orchestra The orchestra to move down.
190     */
191     public void
192     moveOrchestraDown(OrchestraModel orchestra) {
193     if(orchestra == null) return;
194    
195     int idx = getOrchestraIndex(orchestra);
196     if(idx < 0 || idx == getOrchestraCount() - 1) return;
197     removeOrchestra(idx);
198     insertOrchestra(orchestra, idx + 1);
199     }
200    
201     /**
202     * Moves the specified orchestra at the bottom of the orchestra list.
203     * This method does nothing if <code>orchestra</code> is <code>null</code>,
204     * the orchestra list does not contain the specified orchestra,
205     * or if the orchestra is already at the bottom.
206     * @param orchestra The orchestra to move at bottom.
207     */
208     public void
209     moveOrchestraAtBottom(OrchestraModel orchestra) {
210     if(orchestra == null) return;
211    
212     int idx = getOrchestraIndex(orchestra);
213     if(idx < 0 || idx == getOrchestraCount() - 1) return;
214    
215     removeOrchestra(idx);
216     insertOrchestra(orchestra, getOrchestraCount());
217     }
218    
219     /**
220     * Reads and loads the content provided by <code>node</code> to this orchestra list.
221     * @param node The node providing the content of this orchestra list.
222     * @throws IllegalArgumentException If an error occurs while
223     * reading the content of this orchestra list.
224     */
225     public void
226     readObject(Node node) {
227     if(
228     node.getNodeType() != Node.ELEMENT_NODE ||
229     !(node.getNodeName().equals("orchestras"))
230     ) {
231     throw new IllegalArgumentException("Not an orchestra list node!");
232     }
233    
234     NodeList nl = node.getChildNodes();
235    
236     for(int i = 0; i < nl.getLength(); i++) {
237     node = nl.item(i);
238     if(node.getNodeType() != Node.ELEMENT_NODE) continue;
239    
240     OrchestraModel om = new DefaultOrchestraModel();
241     om.readObject(node);
242     addOrchestra(om);
243     }
244     }
245    
246     /**
247     * Writes the content of this orchestra list to the
248     * specified node of document <code>doc</code>.
249     * @param doc The document containing <code>node</code>.
250     * @param node Specifies the node where the content of this orchestra
251     * list should be written.
252     */
253     public void
254     writeObject(Document doc, Node node) {
255     Element el = doc.createElement("orchestras");
256     node.appendChild(el);
257    
258     node = el;
259    
260     for(int i = 0; i < getOrchestraCount(); i++) {
261     getOrchestra(i).writeObject(doc, node);
262     }
263     }
264    
265     /** Notifies listeners that an orchestra has been added to the list. */
266     private void
267     fireOrchestraAdded(OrchestraModel orchestraModel) {
268     OrchestraListEvent e = new OrchestraListEvent(this, orchestraModel);
269     for(OrchestraListListener l : listeners) l.orchestraAdded(e);
270     }
271    
272     /** Notifies listeners that an orchestra has been removed from the list. */
273     private void
274     fireOrchestraRemoved(OrchestraModel orchestraModel) {
275     OrchestraListEvent e = new OrchestraListEvent(this, orchestraModel);
276     for(OrchestraListListener l : listeners) l.orchestraRemoved(e);
277     }
278     }

  ViewVC Help
Powered by ViewVC