package org.signalml.app.model.document.opensignal.elements; import static org.signalml.app.util.i18n.SvarogI18n._; import java.awt.Color; import java.util.ArrayList; import java.util.List; import javax.swing.table.AbstractTableModel; import org.signalml.app.model.document.opensignal.ExperimentDescriptor; public class ChooseExperimentTableModel extends AbstractTableModel { public static Color NEW_EXPERIMENT_COLOR = new Color(255, 228, 196);; public static Color RUNNING_EXPERIMENT_COLOR = new Color(144, 238, 144); public static Color SELECTED_EXPERIMENT_COLOR = new Color(240, 120, 71); public static final int EXPERIMENT_NAME = 0; public static final int AMPLIFIER_NAME = 1; public static final int AMPLIFIER_TYPE = 2; public static final int EXPERIMENT_STATUS = 3; private List<ExperimentDescriptor> experiments = new ArrayList<ExperimentDescriptor>(); public ChooseExperimentTableModel() { } public List<ExperimentDescriptor> getExperiments() { return experiments; } public Color getRowColor(int row, boolean isSelected) { if (isSelected) return SELECTED_EXPERIMENT_COLOR; if (experiments.get(row).getStatus() == ExperimentStatus.NEW) return NEW_EXPERIMENT_COLOR; else return RUNNING_EXPERIMENT_COLOR; } public void setExperiments(List<ExperimentDescriptor> experiments) { if (experiments == null) this.experiments.clear(); else this.experiments = experiments; fireTableDataChanged(); } public void clearExperiments() { this.experiments.clear(); fireTableDataChanged(); } public void addExperiments(List<ExperimentDescriptor> newExperiments) { this.experiments.addAll(newExperiments); int lastRow = this.experiments.size() - 1; int firstRow = lastRow - newExperiments.size() + 1; fireTableRowsInserted(firstRow, lastRow); } @Override public int getRowCount() { return experiments.size(); } @Override public int getColumnCount() { return 4; } @Override public Object getValueAt(int rowIndex, int columnIndex) { ExperimentDescriptor experiment = experiments.get(rowIndex); switch (columnIndex) { case EXPERIMENT_NAME: return experiment.getName(); case EXPERIMENT_STATUS: return experiment.getStatus(); case AMPLIFIER_NAME: return experiment.getAmplifier().getName(); case AMPLIFIER_TYPE: return experiment.getAmplifier().getAmplifierType(); default: return null; } } @Override public String getColumnName(int column) { switch (column) { case EXPERIMENT_NAME: return _("Experiment"); case AMPLIFIER_NAME: return _("Amplifier"); case EXPERIMENT_STATUS: return _("Status"); case AMPLIFIER_TYPE: return _("Amplifier type"); default: return ""; } } }