/*
* JFugue, an Application Programming Interface (API) for Music Programming
* http://www.jfugue.org
*
* Copyright (C) 2003-2014 David Koelle
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jfugue.parser;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.jfugue.theory.Chord;
import org.jfugue.theory.Note;
public class Parser {
private CopyOnWriteArrayList<ParserListener> parserListeners;
public Parser() {
parserListeners = new CopyOnWriteArrayList<ParserListener>();
}
public void addParserListener(ParserListener listener) {
parserListeners.add(listener);
}
public void removeParserListener(ParserListener listener) {
parserListeners.add(listener);
}
public List<ParserListener> getParserListeners() {
return parserListeners;
}
//
// Event firing methods
//
public void fireBeforeParsingStarts() {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.beforeParsingStarts();
}
}
public void fireAfterParsingFinished() {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.afterParsingFinished();
}
}
public void fireTrackChanged(byte track) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onTrackChanged(track);
}
}
public void fireLayerChanged(byte layer) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onLayerChanged(layer);
}
}
public void fireInstrumentParsed(byte instrument) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onInstrumentParsed(instrument);
}
}
public void fireTempoChanged(int tempoBPM) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onTempoChanged(tempoBPM);
}
}
public void fireKeySignatureParsed(byte key, byte scale) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onKeySignatureParsed(key, scale);
}
}
public void fireTimeSignatureParsed(byte numerator, byte powerOfTwo) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onTimeSignatureParsed(numerator, powerOfTwo);
}
}
public void fireBarLineParsed(long id) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onBarLineParsed(id);
}
}
public void fireTrackBeatTimeBookmarked(String timeBookmarkId) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onTrackBeatTimeBookmarked(timeBookmarkId);
}
}
public void fireTrackBeatTimeBookmarkRequested(String timeBookmarkId) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onTrackBeatTimeBookmarkRequested(timeBookmarkId);
}
}
public void fireTrackBeatTimeRequested(double time) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onTrackBeatTimeRequested(time);
}
}
public void firePitchWheelParsed(byte lsb, byte msb) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onPitchWheelParsed(lsb, msb);
}
}
public void fireChannelPressureParsed(byte pressure) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onChannelPressureParsed(pressure);
}
}
public void firePolyphonicPressureParsed(byte key, byte pressure) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onPolyphonicPressureParsed(key, pressure);
}
}
public void fireSystemExclusiveParsed(byte... bytes) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onSystemExclusiveParsed(bytes);
}
}
public void fireControllerEventParsed(byte controller, byte value) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onControllerEventParsed(controller, value);
}
}
public void fireLyricParsed(String lyric) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onLyricParsed(lyric);
}
}
public void fireMarkerParsed(String marker) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onMarkerParsed(marker);
}
}
public void fireFunctionParsed(String id, Object message) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onFunctionParsed(id, message);
}
}
public void fireNoteParsed(Note note) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onNoteParsed(note);
}
}
public void fireChordParsed(Chord chord) {
List<ParserListener> listeners = getParserListeners();
for (ParserListener listener : listeners) {
listener.onChordParsed(chord);
}
}
}