package org.yamcs.ui.yamcsmonitor; import java.util.ArrayList; import java.util.List; import javax.swing.table.AbstractTableModel; import org.yamcs.protobuf.YamcsManagement.ClientInfo; class ClientTableModel extends AbstractTableModel { private ArrayList<ClientInfo> clients=new ArrayList<ClientInfo>(); public void clear() { int len = clients.size(); if(len>0) { clients.clear(); fireTableRowsDeleted(0, len-1); } } public void populate(List<ClientInfo> clientsInfo) { int len = clients.size(); if ( len > 0 ) { clients.clear(); fireTableRowsDeleted(0, len - 1); } for( ClientInfo ci:clientsInfo ) { clients.add(ci); } if ( clients.size() > 0 ) { fireTableRowsInserted(0, clients.size() - 1); } } /** * add or update a client to/in the table * @param clientInfo */ public void updateClient(ClientInfo clientInfo) { boolean found=false; for ( int i = 0; i < clients.size(); ++i ) { ClientInfo ci = clients.get(i); if ( ci.getId() == clientInfo.getId() ) { clients.set(i, clientInfo); fireTableRowsUpdated(i, i); found=true; break; } } if(!found) { clients.add(clientInfo); int last = clients.size() - 1; fireTableRowsInserted(last, last); } } public ClientInfo get(int index) { return clients.get(index); } public void removeClient(int id) { for ( int i = 0; i < clients.size(); ++i ) { ClientInfo ci = clients.get(i); if ( ci.getId() == id ) { clients.remove(i); fireTableRowsDeleted(i, i); break; } } } private final String[] columnNames = {"Id", "User", "Application", "Instance", "Channel"}; public String getColumnName(int col) { return columnNames[col]; } public int getRowCount() { return clients.size(); } public int getColumnCount() { return columnNames.length; } public Object getValueAt(int row, int col) { ClientInfo c=(ClientInfo) clients.get(row); Object o=null; switch (col) { case 0: o=c.getId(); break; case 1: o=c.getUsername(); break; case 2: o=c.getApplicationName(); break; case 3: o=c.getInstance(); break; case 4: o=c.getProcessorName(); } return o; } public boolean isCellEditable(int row, int col) { return false; } public void setValueAt(Object value, int row, int col) {} }