package com.timvisee.minecraftrunner.player; import javax.swing.event.EventListenerList; import javax.swing.event.TableModelListener; import javax.swing.table.TableModel; public class PlayerManagerTableModel implements TableModel { private PlayerManager pm; private EventListenerList listeners = new EventListenerList(); public PlayerManagerTableModel(PlayerManager pm) { this.pm = pm; } @Override public int getColumnCount() { return 2; } @Override public int getRowCount() { return this.pm.getPlayersCount(); } @Override public Object getValueAt(int rowIndex, int columnIndex) { switch(columnIndex) { case 0: Player p = this.pm.getPlayer(rowIndex); if(p.hasAlias()) return p.getAlias(); return p.getLogin(); case 1: return this.pm.getPlayer(rowIndex).getLogin(); default: return null; } } @Override public String getColumnName(int columnIndex) { switch (columnIndex) { case 0: return "Alias"; case 1: return "Login"; default: return null; } } public Player getElementAt(int index) { return this.pm.getPlayer(index); } @Override public void addTableModelListener(TableModelListener l) { this.listeners.add(TableModelListener.class, l); } @Override public Class<?> getColumnClass(int arg0) { switch(arg0) { case 0: case 1: return String.class; default: return null; } } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { switch(columnIndex) { case 0: return true; default: return false; } } @Override public void removeTableModelListener(TableModelListener l) { this.listeners.remove(TableModelListener.class, l); } @Override public void setValueAt(Object val, int rowIndex, int columnIndex) { switch(columnIndex) { case 0: try { final String alias = (String) val; Player p = this.pm.getPlayer(rowIndex); // If the alias is an empty string, reset the alias if(alias.trim().equals("")) p.resetAlias(); else p.setAlias(alias); // Save the updated player data this.pm.save(); } catch(ClassCastException e) { return; } break; default: } } }