package gui; import gui.models.BlocksTableModel; import gui.models.PeersTableModel; import gui.models.TransactionsTableModel; import gui.transaction.TransactionDetailsFactory; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Map; import java.util.TreeMap; import java.util.logging.Logger; import javax.swing.JScrollBar; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTable; import database.BlockMap; import database.TransactionMap; import qora.transaction.Transaction; public class DebugTabPane extends JTabbedPane{ private static final long serialVersionUID = 2717571093561259483L; private PeersTableModel peersTableModel; private TransactionsTableModel transactionsTableModel; private BlocksTableModel blocksTableModel; private LoggerTextArea loggerTextArea; private JTable transactionsTable; public DebugTabPane() { super(); //ADD TABS this.addTab("Console", new ConsolePanel()); this.peersTableModel = new PeersTableModel(); this.addTab("Peers", new JScrollPane(Gui.createSortableTable(this.peersTableModel, 0))); //TRANSACTIONS TABLE MODEL this.transactionsTableModel = new TransactionsTableModel(); this.transactionsTable = new JTable(this.transactionsTableModel); //TRANSACTIONS SORTER Map<Integer, Integer> indexes = new TreeMap<Integer, Integer>(); indexes.put(TransactionsTableModel.COLUMN_TIMESTAMP, TransactionMap.TIMESTAMP_INDEX); QoraRowSorter sorter = new QoraRowSorter(transactionsTableModel, indexes); transactionsTable.setRowSorter(sorter); //TRANSACTION DETAILS this.transactionsTable.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2) { //GET ROW int row = transactionsTable.getSelectedRow(); row = transactionsTable.convertRowIndexToModel(row); //GET TRANSACTION Transaction transaction = transactionsTableModel.getTransaction(row); //SHOW DETAIL SCREEN OF TRANSACTION TransactionDetailsFactory.getInstance().createTransactionDetail(transaction); } } }); //ADD TRANSACTIONS TABLE this.addTab("Transactions", new JScrollPane(this.transactionsTable)); //BLOCKS TABLE MODEL this.blocksTableModel = new BlocksTableModel(); JTable blocksTable = new JTable(this.blocksTableModel); //BLOCKS SORTER indexes = new TreeMap<Integer, Integer>(); indexes.put(BlocksTableModel.COLUMN_HEIGHT, BlockMap.HEIGHT_INDEX); sorter = new QoraRowSorter(blocksTableModel, indexes); blocksTable.setRowSorter(sorter); //ADD BLOCK TABLE this.addTab("Blocks", new JScrollPane(blocksTable)); this.loggerTextArea = new LoggerTextArea(Logger.getGlobal()); JScrollPane scrollPane = new JScrollPane(this.loggerTextArea); JScrollBar vertical = scrollPane.getVerticalScrollBar(); vertical.setValue(vertical.getMaximum()); this.addTab("Logger", scrollPane); } public void close() { //REMOVE OBSERVERS/HANLDERS this.peersTableModel.removeObservers(); this.transactionsTableModel.removeObservers(); this.blocksTableModel.removeObservers(); this.loggerTextArea.removeNotify(); } }