package jadex.base.gui.componenttree; import jadex.commons.SGUI; import jadex.commons.SReflect; import jadex.commons.gui.PropertiesPanel; import jadex.commons.jtable.ResizeableTableHeader; import jadex.commons.service.IService; import jadex.commons.service.IServiceIdentifier; import java.awt.BorderLayout; import java.lang.reflect.Method; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; /** * Panel for showing service properties. */ public class ServiceProperties extends PropertiesPanel { //-------- constructors -------- /** * Create new service properties panel. */ public ServiceProperties() { super(" Service Properties "); createTextField("Name"); createTextField("Type"); createTextField("Provider"); addFullLineComponent("Methods_label", new JLabel("Methods")); JTable table = SGUI.createReadOnlyTable(); table.setTableHeader(new ResizeableTableHeader(table.getColumnModel())); JPanel scroll = new JPanel(new BorderLayout()); scroll.add(table, BorderLayout.CENTER); scroll.add(table.getTableHeader(), BorderLayout.NORTH); addFullLineComponent("Methods", scroll); } //-------- methods -------- /** * Set the service. */ public void setService(IService service) { IServiceIdentifier sid = service.getServiceIdentifier(); getTextField("Name").setText(sid.getServiceName()); getTextField("Type").setText(sid.getServiceType().getName()); getTextField("Provider").setText(sid.getProviderId().toString()); JTable list = (JTable)getComponent("Methods").getComponent(0); Method[] methods = sid.getServiceType().getMethods(); String[] returntypes = new String[methods.length]; String[] names = new String[methods.length]; String[] parameters = new String[methods.length]; for(int i=0; i<methods.length; i++) { returntypes[i] = SReflect.getUnqualifiedClassName(methods[i].getReturnType()); names[i] = methods[i].getName(); Class[] params = methods[i].getParameterTypes(); String pstring = ""; for(int j=0; j<params.length; j++) { if(j==0) pstring = SReflect.getUnqualifiedClassName(params[j]); else pstring += ", "+SReflect.getUnqualifiedClassName(params[j]); } parameters[i] = pstring; } DefaultTableModel dtm = new DefaultTableModel(); dtm.addColumn("Return Type", returntypes); dtm.addColumn("Method Name", names); dtm.addColumn("Parameters", parameters); list.setModel(dtm); } }