/**
* Copyright 2007 DFKI GmbH.
* All Rights Reserved. Use is subject to license terms.
*
* This file is part of MARY TTS.
*
* MARY TTS is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package marytts.tools.redstart;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Mat Wilson <mat.wilson@dfki.de>
*/
public class PromptTableModel extends AbstractTableModel {
/** Creates a new instance of PromptTableModel */
private String[] columnNames;
protected static final int REC_STATUS_COLUMN = 0; // First column is recording status
protected static final int BASENAME_COLUMN = 1; // Second column is basename
protected static final int PROMPT_TEXT_COLUMN = 2; // Third collumn is prompt text
private boolean redAlertMode = false; // if true show red alert portion of text
final Object[][] data;
public PromptTableModel(Prompt[] promptArray, String[] columnNames, boolean redAlertMode) {
this.columnNames = columnNames;
this.redAlertMode = redAlertMode;
this.data = this.buildDataArray(promptArray);
}
public boolean isCellEditable(int row, int col) {
return false;
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int column) {
return columnNames[column];
}
public Object getValueAt(int row, int column) {
return data[row][column];
}
public Class getColumnClass(int c) {
return String.class;
}
private Object[][] buildDataArray(Prompt[] promptArray) {
Object[][] promptMatrix = new Object[promptArray.length][columnNames.length];
for (int row = 0; row < promptArray.length; row++) {
promptMatrix[row][REC_STATUS_COLUMN] = ""; // update this asynchronously later, it takes time;
promptMatrix[row][BASENAME_COLUMN] = promptArray[row].getBasename();
if (!redAlertMode)
promptMatrix[row][PROMPT_TEXT_COLUMN] = promptArray[row].getPromptText();
else
// the replace function in the line below is used only for the red alert mode
promptMatrix[row][PROMPT_TEXT_COLUMN] = promptArray[row].getPromptText().replace("_", "");
}
return promptMatrix;
}
public void setValueAt(Object obj, int row, int col) {
data[row][col] = obj;
fireTableCellUpdated(row, col);
}
}