package jadex.base.gui.componentviewer.dfservice;
import jadex.base.fipa.IDFComponentDescription;
import jadex.base.fipa.IProperty;
import jadex.bridge.IComponentIdentifier;
import jadex.commons.Properties;
import jadex.commons.Property;
import jadex.commons.jtable.TableSorter;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
/**
* Table showing the df component services.
*/
public class DFServiceTable extends JTable//JScrollPane
{
/**
* Constructor.
*/
public DFServiceTable()
{
super(new TableSorter(new ServiceTableModel()));
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
TableSorter sorter = (TableSorter)getModel();
sorter.setTableHeader(getTableHeader());
setDefaultRenderer(IComponentIdentifier.class, new ComponentIdentifierRenderer());
setDefaultRenderer(String[].class, new StringArrayRenderer());
setDefaultRenderer(IProperty[].class, new PropertyArrayRenderer());
}
/**
* Get the selected component/service description.
* @return The currently selected service/component description.
*/
public Object[] getSelectedServices()
{
Object[] ret = new Object[]{null, null};
int sel = getSelectedRow();
if(sel>=0)
{
TableSorter sorter = (TableSorter)getModel();
ServiceTableModel model = (ServiceTableModel)sorter.getTableModel();
sel = sorter.modelIndex(sel);
ret = new Object[]{model.getServiceDescription(sel), model.getComponentDescription(sel)};
}
return ret;
}
/**
* Sets descriptions for this element
* @param ad
*/
public void setComponentDescriptions(IDFComponentDescription[] ad)
{
TableSorter sorter = (TableSorter)getModel();
ServiceTableModel model = (ServiceTableModel)sorter.getTableModel();
model.setComponentDescriptions(ad);
}
/**
* @param componentDescription
*/
public void setComponentDescription(IDFComponentDescription ad)
{
TableSorter sorter = (TableSorter)getModel();
ServiceTableModel model = (ServiceTableModel)sorter.getTableModel();
model.setComponentDescription(ad);
}
/**
* Get the properties.
* @param props The properties.
*/
public Properties getProperties()
{
Properties props = new Properties();
TableColumnModel cm = getColumnModel();
for(int i=0; i<cm.getColumnCount(); i++)
{
TableColumn column = cm.getColumn(i);
props.addProperty(new Property("columnwidth", Integer.toString(column.getWidth())));
}
return props;
}
/**
* Set the properties.
* @param props The properties.
*/
public void setProperties(Properties props)
{
Property[] columnprops = props.getProperties("columnwidth");
TableColumnModel cm = getColumnModel();
for(int i=0; i<cm.getColumnCount() && i<columnprops.length; i++)
{
cm.getColumn(i).setPreferredWidth(Integer.parseInt(columnprops[i].getValue()));
}
}
}