/*
* JacORB - a free Java ORB
*
* Copyright (C) 1999-2014 Gerald Brose / The JacORB Team.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
package org.jacorb.imr.util;
import javax.swing.event.TableModelEvent;
import javax.swing.table.AbstractTableModel;
import org.jacorb.imr.ServerInfo;
/**
* This class is the model for the server table.
* On user changes, it writes back its edited cells
* via the IMRModel class.
*
* @author Nicolas Noffke
*
*/
public class ImRServerTableModel extends AbstractTableModel {
private ImRModel m_model;
private static final String[] m_columns = new String[] {"Name", "Host", "Command", "active", "holding"};
private ServerInfo[] m_servers;
/**
* The constructor.
*
* @param model the ImRModel to write changes via.
*/
public ImRServerTableModel(ImRModel model){
m_model = model;
}
/**
* Pass in the servers the table should display.
* Notify the JTable of that.
*
* @param servers an array containing the ServerInfo structs of the
* servers to display.
*/
public void setServers(ServerInfo[] servers){
m_servers = servers;
fireTableChanged(new TableModelEvent(this));
}
/**
* Notify the JTable that a server has been updated.
*
* @param index the servers index in the table.
*/
public void serverRefreshed(int index){
fireTableRowsUpdated(index, index);
}
/**
* Get the number of rows of this table.
*
* @return the number of rows.
*/
public int getRowCount(){
return m_servers.length;
}
/**
* Get the number of columns of this table.
*
* @return the number of columns.
*/
public int getColumnCount(){
return m_columns.length;
}
/**
* Get the name of a specific column.
*
* @param column the columns index.
* @return String the columns name.
*/
public String getColumnName(int column){
return m_columns[column];
}
/**
* Get the class of a specific column.
*
* @param index the columns index.
* @return the columns Class object.
*/
public Class getColumnClass(int index){
if (index == 0 || index == 1 || index == 2)
return String.class;
else if (index == 3 || index == 4)
return Boolean.class;
else
return Object.class;
}
/**
* Get the value of a specific cell.
*
* @param row the cells row.
* @param column the cells column.
* @return the cells value.
*/
public Object getValueAt(int row, int column){
if (column == 0)
return m_servers[row].name;
else if (column == 1)
return m_servers[row].host;
else if (column == 2)
return m_servers[row].command;
else if (column == 3)
return Boolean.valueOf(m_servers[row].active);
else if (column == 4)
return Boolean.valueOf(m_servers[row].holding);
return new Object();
}
/**
* Test, wheter a cell is editable.
*
* @param row the cells row.
* @param column the cells column.
*
* @return true, if the cell is editable.
*/
public boolean isCellEditable(int row, int column){
if (column >= 1)
{
return true;
}
return false;
}
/**
* Set the value of a specific cell, i.e. the user has edited a cell.
*
* @param value the new value.
* @param row the cells row.
* @param column the cells column.
*/
public void setValueAt(Object value, int row, int column){
m_model.updateServer(row, m_columns[column], value);
}
} // ImRServerTableModel