* @return 未保存の修正内容を持つシーケンスがあればtrue
*/
public boolean isModified() {
- for( SequenceTrackListTableModel m : sequenceList ) {
- if( m.isModified() ) return true;
- }
+ for( SequenceTrackListTableModel m : sequenceList ) if( m.isModified() ) return true;
return false;
}
/**
*/
public void fireSequenceModified(SequenceTrackListTableModel sequenceTableModel) {
int index = sequenceList.indexOf(sequenceTableModel);
- if( index < 0 )
- return;
+ if( index < 0 ) return;
sequenceTableModel.setModified(true);
fireTableRowsUpdated(index, index);
}
* @return 追加されたシーケンスのインデックス(先頭が 0)
*/
public int addSequence(Sequence sequence, String filename) {
- sequenceList.add(
- new SequenceTrackListTableModel(this, sequence, filename)
- );
+ sequenceList.add( new SequenceTrackListTableModel(this, sequence, filename) );
int lastIndex = sequenceList.size() - 1;
fireTableRowsInserted(lastIndex, lastIndex);
return lastIndex;
* @throws InvalidMidiDataException ファイル内のMIDIデータが正しくない場合
* @throws IOException ファイル入出力に失敗した場合
*/
- public int addSequences(List<File> fileList)
- throws InvalidMidiDataException, IOException
- {
+ public int addSequences(List<File> fileList) throws InvalidMidiDataException, IOException {
int firstIndex = -1;
for( File file : fileList ) {
int lastIndex = addSequence(file);
- if( firstIndex == -1 )
- firstIndex = lastIndex;
+ if( firstIndex == -1 ) firstIndex = lastIndex;
}
return firstIndex;
}
public int addSequenceFromURL(String midiFileUrl)
throws URISyntaxException, IOException, InvalidMidiDataException
{
- URI uri = new URI(midiFileUrl);
- URL url = uri.toURL();
- Sequence seq = MidiSystem.getSequence(url);
- String filename = url.getFile().replaceFirst("^.*/","");
- return addSequence(seq, filename);
+ URL url = (new URI(midiFileUrl)).toURL();
+ return addSequence(MidiSystem.getSequence(url), url.getFile().replaceFirst("^.*/",""));
}
/**
- * é\81¸æ\8a\9eã\81\97たシーケンスを除去します。
- * @param listSelectionModel 選択状態
+ * é\81¸æ\8a\9eã\81\95ã\82\8cたシーケンスを除去します。
+ * 除去されたシーケンスがシーケンサーにロード済みの場合、アンロードします。
*/
public void removeSelectedSequence() {
- if( sequenceListSelectionModel.isSelectionEmpty() )
- return;
+ if( sequenceListSelectionModel.isSelectionEmpty() ) return;
int selectedIndex = sequenceListSelectionModel.getMinSelectionIndex();
- if( sequenceList.remove(selectedIndex).isOnSequencer() ) {
- // 削除したシーケンスが
- // シーケンサーにロード済みだった場合、アンロードする。
+ if( sequenceList.remove(selectedIndex).isOnSequencer() )
sequencerModel.setSequenceTrackListTableModel(null);
- }
fireTableRowsDeleted(selectedIndex, selectedIndex);
}
/**
* 指定したインデックス位置のシーケンスをシーケンサーにロードします。
+ * すでに同じIDのシーケンスがロードされていた場合はスキップします。
* @param index シーケンスのインデックス位置(-1 を指定するとアンロードされます)
*/
public void loadToSequencer(int index) {
SequenceTrackListTableModel oldSeq = sequencerModel.getSequenceTrackListTableModel();
SequenceTrackListTableModel newSeq = (index < 0 ? null : sequenceList.get(index));
- if(oldSeq == newSeq)
- return;
+ if(oldSeq == newSeq) return;
sequencerModel.setSequenceTrackListTableModel(newSeq);
+ //
+ // 変更点をテーブルビューに通知して再表示してもらう
int columnIndices[] = {
Column.PLAY.ordinal(),
Column.POSITION.ordinal(),
};
if( oldSeq != null ) {
int oldIndex = sequenceList.indexOf(oldSeq);
- for( int columnIndex : columnIndices )
- fireTableCellUpdated(oldIndex, columnIndex);
+ for( int columnIndex : columnIndices ) fireTableCellUpdated(oldIndex, columnIndex);
}
if( newSeq != null ) {
- for( int columnIndex : columnIndices )
- fireTableCellUpdated(index, columnIndex);
+ for( int columnIndex : columnIndices ) fireTableCellUpdated(index, columnIndex);
}
}
/**
public boolean loadNext(int offset) {
int loadedIndex = indexOfSequenceOnSequencer();
int index = (loadedIndex < 0 ? 0 : loadedIndex + offset);
- if( index < 0 || index >= sequenceList.size() )
- return false;
+ if( index < 0 || index >= sequenceList.size() ) return false;
loadToSequencer(index);
return true;
}
-}
\ No newline at end of file
+}