package com.vistatec.ocelot.tm.gui.match;
import java.util.List;
import com.vistatec.ocelot.segment.model.SegmentVariant;
import com.vistatec.ocelot.tm.TmMatch;
/**
* Table data model associated to the table displayed in the TM Translations
* panel.
*/
public class TranslationsMatchTableModel extends TmMatchTableModel {
/** Serial version UID. */
private static final long serialVersionUID = -8386866780750598834L;
/** The segment number column index. */
public static final int SEG_NUM_COL = 0;
/** The source column index. */
public static final int SOURCE_COL = 1;
/** The match score column index. */
public static final int MATCH_SCORE_COL = 2;
/** The target column index. */
public static final int TARGET_COL = 3;
/** The TM name column index. */
public static final int TM_NAME_COL = 4;
/**
* Constructor.
*
* @param model
* the TM list being the actual model.
*/
public TranslationsMatchTableModel(final List<TmMatch> model) {
super(model, new String[] { "", "", "", "", "" });
}
/**
* Gets the class of objects displayed in the parameter column.
*
* @return the class of the objects at the queried column.
* @see javax.swing.table.AbstractTableModel#getColumnClass(int)
*/
@Override
public Class<?> getColumnClass(int columnIndex) {
Class<?> clazz = Object.class;
switch (columnIndex) {
case TM_NAME_COL:
clazz = String.class;
break;
case SOURCE_COL:
case TARGET_COL:
clazz = SegmentVariant.class;
break;
case MATCH_SCORE_COL:
case SEG_NUM_COL:
clazz = Integer.class;
break;
default:
break;
}
return clazz;
}
/**
* The model is not editable. It always returns <code>false</code>.
*
* @return <code>false</code>
* @see com.vistatec.ocelot.tm.gui.match.TmMatchTableModel#isCellEditable(int,
* int)
*/
@Override
public boolean isCellEditable(int row, int column) {
return column == TARGET_COL;
}
/*
* (non-Javadoc)
*
* @see javax.swing.table.DefaultTableModel#getValueAt(int, int)
*/
@Override
public Object getValueAt(int row, int column) {
Object retValue = null;
if (model != null && row < model.size()) {
TmMatch currMatch = model.get(row);
switch (column) {
case SOURCE_COL:
retValue = currMatch.getSource();
break;
case MATCH_SCORE_COL:
retValue = (int) (currMatch.getMatchScore());
break;
case TARGET_COL:
retValue = currMatch.getTarget();
break;
case TM_NAME_COL:
retValue = currMatch.getTmOrigin();
break;
case SEG_NUM_COL:
retValue = model.indexOf(currMatch) + 1;
break;
default:
break;
}
}
return retValue;
}
/*
* (non-Javadoc)
*
* @see
* com.vistatec.ocelot.tm.gui.match.TmMatchTableModel#getSourceColumnIdx()
*/
@Override
public int getSourceColumnIdx() {
return SOURCE_COL;
}
/*
* (non-Javadoc)
*
* @see
* com.vistatec.ocelot.tm.gui.match.TmMatchTableModel#getTargetColumnIdx()
*/
@Override
public int getTargetColumnIdx() {
return TARGET_COL;
}
/*
* (non-Javadoc)
*
* @see
* com.vistatec.ocelot.tm.gui.match.TmMatchTableModel#getMatchScoreColumnIdx
* ()
*/
@Override
public int getMatchScoreColumnIdx() {
return MATCH_SCORE_COL;
}
/*
* (non-Javadoc)
*
* @see com.vistatec.ocelot.tm.gui.match.TmMatchTableModel#getTmColumnIdx()
*/
@Override
public int getTmColumnIdx() {
return TM_NAME_COL;
}
/**
* Gets the segment number column index.
*
* @return the segment number column index.
*/
public int getSegmentNumColumnIdx() {
return SEG_NUM_COL;
}
}