package nl.fontys.sofa.limo.view.custom.table;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import nl.fontys.sofa.limo.domain.component.event.Event;
import nl.fontys.sofa.limo.domain.component.event.ExecutionState;
import nl.fontys.sofa.limo.view.util.LIMOResourceBundle;
/**
* Default table model for events which shows the events name and the
* dependency.
*
* @author Sven Mäurer
*/
public class EventTableModel extends AbstractTableModel {
private List<Event> events;
/**
* Create a new empty table model.
*/
public EventTableModel() {
this(new ArrayList<>());
}
/**
* Create a table model based on already existing events.
*
* @param events to be set.
*/
public EventTableModel(List<Event> events) {
this.events = events;
}
public List<Event> getEvents() {
if (this.events == null) {
this.events = new ArrayList<>();
}
return this.events;
}
public void setEvents(List<Event> events) {
this.events = events;
this.fireTableDataChanged();
}
@Override
public int getRowCount() {
return this.events.size();
}
@Override
public int getColumnCount() {
return 2;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return columnIndex == 1;
}
@Override
public Class<?> getColumnClass(int columnIndex) {
return String.class;
}
@Override
public String getColumnName(int column) {
return column == 0 ? LIMOResourceBundle.getString("EVENT") : LIMOResourceBundle.getString("DEPENDENCY");
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Event e = this.events.get(rowIndex);
if (e == null || e.getDependency() == null) {
return null;
}
return columnIndex == 0 ? e.getName() : e.getDependency().name();
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
if (columnIndex == 1) {
this.events.get(rowIndex).setDependency((ExecutionState) aValue);
}
}
}