package us.deans.zinc; import java.util.*; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import org.apache.log4j.Logger; import us.deans.panther.ppView; public class ZnSwingView extends ppView { private ZnModel m_model; private JFrame frame; private JTable table; private Logger logger; ZnSwingView(ZnModel model){ m_model = model; logger = Logger.getLogger("IndusSwingView"); frame = new JFrame("Hunting for Jobs"); String iconFile = System.getProperty("user.dir")+"\\indus.png"; logger.debug("Icon located at: " + iconFile + "\n"); frame.setIconImage(new ImageIcon(iconFile).getImage()); logger.debug("view is loaded..."); } public void displayRSSData(){ logger.debug("Records = " + m_model.getRssData().size() + "\n"); table = new JTable(); table.setModel(new TableModel(m_model.getRssData())); JScrollPane jsPane = new JScrollPane(table); frame.getContentPane().add(jsPane); //frame.getContentPane().add(new JScrollPane(table)); frame.setSize(900, 500); frame.setVisible(true); } private class TableModel extends AbstractTableModel{ private static final long serialVersionUID = 1L; private ArrayList jobList; private String[] headings = new String[] {"location","title","company","description", "keywords"}; private int rowCount; private int colCount; public TableModel(ArrayList jobList){ this.jobList = jobList; this.colCount = 5; this.rowCount = jobList.size(); logger.debug("Records in TableModel= " + jobList.size()+ "\n"); } public int getColumnCount(){ return this.colCount; } public int getRowCount(){ return this.rowCount; } public Object getValueAt(int row, int column){ if(row>=jobList.size()){ return null; } ZnJobRecord job = jobList.get(row); if(column==0){ return job.getJobLocation(); } if(column==1){ return job.getJobTitle(); } if(column==2){ return job.getJobCompany(); } if(column==3){ return job.getJobDescription(); } if(column==4){ return job.getJobKeywords(); } return null; } public String getColumnName(int column){ return this.headings[column]; } } }