package net.combase.desktopcrm.swing; import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.SwingUtilities; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.TableCellRenderer; import net.combase.desktopcrm.data.CrmManager; import net.combase.desktopcrm.domain.Lead; public class LeadTablePanel extends JPanel { /** * */ private static final long serialVersionUID = -6149463410211475900L; private JTable table; /** * Create the panel. */ public LeadTablePanel() { setLayout(new BorderLayout(0, 0)); final LeadTableModel model = new LeadTableModel(new ArrayList<Lead>()); table = new JTable(model); // enable button clicks table.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { int column = table.getColumnModel().getColumnIndexAtX(e.getX()); int row = e.getY() / table.getRowHeight(); if (row < table.getRowCount() && row >= 0 && column < table.getColumnCount() && column >= 0) { Object value = table.getValueAt(row, column); if (value instanceof JButton) { ((JButton) value).doClick(); } } } }); table.setDefaultRenderer(JButton.class, new TableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (value instanceof JButton) { return (JButton) value; } return new JLabel(); } }); table.getColumnModel().getColumn(1).setMaxWidth(30); table.getColumnModel().getColumn(2).setMaxWidth(30); table.getColumnModel().getColumn(3).setMaxWidth(30); table.setRowHeight(30); add(table.getTableHeader(), BorderLayout.NORTH); add(new JScrollPane(table), BorderLayout.CENTER); table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { int index = e.getFirstIndex(); if (index < 0) return; Lead data = model.getData().get(index); DataSelectionEventManager.dataSelected(data); } }); UiUtil.runAndRepeat(new Runnable() { @Override public void run() { final List<Lead> updatedList = CrmManager.getLeadList(); System.out.println(updatedList); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { model.update(updatedList); } }); } }, 250, 123000); } }