package devopsdistilled.operp.client.stock.panes; import java.util.List; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import net.miginfocom.swing.MigLayout; import devopsdistilled.operp.client.abstracts.SubTaskPane; import devopsdistilled.operp.client.abstracts.libs.BeanTableModel; import devopsdistilled.operp.client.stock.models.observers.StockModelObserver; import devopsdistilled.operp.client.stock.panes.models.observers.ListStockPaneModelObserver; import devopsdistilled.operp.server.data.entity.stock.Stock; public class ListStockPane extends SubTaskPane implements ListStockPaneModelObserver, StockModelObserver { private final JPanel pane; private final JTable table; BeanTableModel<Stock> tableModel; public ListStockPane() { pane = new JPanel(); pane.setLayout(new MigLayout("fill")); table = new JTable(tableModel); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); final JScrollPane scrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); pane.add(scrollPane, "grow"); } @Override public JComponent getPane() { return pane; } @Override public void updateStock(List<Stock> stocks) { tableModel = null; tableModel = new BeanTableModel<>(Stock.class, stocks); for (int i = 0; i < table.getColumnCount(); i++) { tableModel.setColumnEditable(i, false); } tableModel.setModelEditable(false); table.setModel(tableModel); } }