package com.timvisee.minecraftrunner.profile;
import java.util.ArrayList;
import java.util.List;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
public class ProfileManagerTableModel implements TableModel {
private ProfileManager pm;
private List<TableModelListener> listeners = new ArrayList<TableModelListener>();
public ProfileManagerTableModel(ProfileManager pm) {
this.pm = pm;
}
public Profile getElementAt(int index) {
return this.pm.getProfileByIndex(index);
}
@Override
public void addTableModelListener(TableModelListener l) {
this.listeners.add(l);
}
@Override
public void removeTableModelListener(TableModelListener l) {
this.listeners.remove(l);
}
@Override
public Class<?> getColumnClass(int columnIndex) {
return String.class;
}
@Override
public int getColumnCount() {
return 2;
}
@Override
public String getColumnName(int columnIndex) {
switch(columnIndex) {
case 0:
return "Profile";
case 1:
return "Path";
default:
return null;
}
}
@Override
public int getRowCount() {
return this.pm.getProfilesCount();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// Get the profile
Profile p = this.pm.getProfileByIndex(rowIndex);
switch(columnIndex) {
case 0:
return p.getName();
case 1:
return p.getDirectoryPath();
default:
return null;
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
switch(columnIndex) {
case 0:
return !(this.pm.getProfileByIndex(rowIndex) instanceof DefaultProfile);
default:
return false;
}
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
// Get the profile
Profile p = this.pm.getProfileByIndex(rowIndex);
switch(columnIndex) {
case 0:
try {
p.setName((String) aValue);
} catch(ClassCastException e) { }
break;
default:
return;
}
}
}