package gui.assets; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Image; import java.awt.Insets; import java.awt.Point; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; import gui.QoraRowSorter; import gui.models.WalletOrdersTableModel; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.border.EmptyBorder; import javax.swing.table.TableColumn; import qora.assets.Order; @SuppressWarnings("serial") public class MyOrdersFrame extends JFrame{ private WalletOrdersTableModel ordersTableModel; public MyOrdersFrame() { super("Qora - My Orders"); //ICON List<Image> icons = new ArrayList<Image>(); icons.add(Toolkit.getDefaultToolkit().getImage("images/icons/icon16.png")); icons.add(Toolkit.getDefaultToolkit().getImage("images/icons/icon32.png")); icons.add(Toolkit.getDefaultToolkit().getImage("images/icons/icon64.png")); icons.add(Toolkit.getDefaultToolkit().getImage("images/icons/icon128.png")); this.setIconImages(icons); //CLOSE setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //LAYOUT this.setLayout(new GridBagLayout()); //PADDING ((JComponent) this.getContentPane()).setBorder(new EmptyBorder(5, 5, 5, 5)); //SEACH LABEL GBC GridBagConstraints searchLabelGBC = new GridBagConstraints(); searchLabelGBC.insets = new Insets(0, 5, 5, 0); searchLabelGBC.fill = GridBagConstraints.HORIZONTAL; searchLabelGBC.anchor = GridBagConstraints.NORTHWEST; searchLabelGBC.weightx = 0; searchLabelGBC.gridwidth = 1; searchLabelGBC.gridx = 0; searchLabelGBC.gridy = 0; //SEACH GBC GridBagConstraints searchGBC = new GridBagConstraints(); searchGBC.insets = new Insets(0, 5, 5, 0); searchGBC.fill = GridBagConstraints.HORIZONTAL; searchGBC.anchor = GridBagConstraints.NORTHWEST; searchGBC.weightx = 1; searchGBC.gridwidth = 1; searchGBC.gridx = 1; searchGBC.gridy = 0; //TABLE GBC GridBagConstraints tableGBC = new GridBagConstraints(); tableGBC.insets = new Insets(0, 5, 5, 0); tableGBC.fill = GridBagConstraints.BOTH; tableGBC.anchor = GridBagConstraints.NORTHWEST; tableGBC.weightx = 1; tableGBC.weighty = 1; tableGBC.gridwidth = 2; tableGBC.gridx = 0; tableGBC.gridy = 1; //CREATE TABLE this.ordersTableModel = new WalletOrdersTableModel(); final JTable ordersTable = new JTable(this.ordersTableModel); //CHECKBOX FOR CONFIRMED TableColumn confirmedColumn = ordersTable.getColumnModel().getColumn(WalletOrdersTableModel.COLUMN_CONFIRMED); confirmedColumn.setCellRenderer(ordersTable.getDefaultRenderer(Boolean.class)); //ASSETS SORTER Map<Integer, Integer> indexes = new TreeMap<Integer, Integer>(); QoraRowSorter sorter = new QoraRowSorter(this.ordersTableModel, indexes); ordersTable.setRowSorter(sorter); // MENU JPopupMenu ordersMenu = new JPopupMenu(); JMenuItem trades = new JMenuItem("Trades"); trades.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int row = ordersTable.getSelectedRow(); row = ordersTable.convertRowIndexToModel(row); Order order = ordersTableModel.getOrder(row); new TradesFrame(order); } }); ordersMenu.add(trades); JMenuItem cancel = new JMenuItem("Cancel"); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int row = ordersTable.getSelectedRow(); row = ordersTable.convertRowIndexToModel(row); Order order = ordersTableModel.getOrder(row); new CancelOrderFrame(order); } }); ordersMenu.add(cancel); ordersTable.setComponentPopupMenu(ordersMenu); ordersTable.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { Point p = e.getPoint(); int row = ordersTable.rowAtPoint(p); ordersTable.setRowSelectionInterval(row, row); if(e.getClickCount() == 2) { row = ordersTable.convertRowIndexToModel(row); Order order = ordersTableModel.getOrder(row); new TradesFrame(order); } } }); this.add(new JScrollPane(ordersTable), tableGBC); //PACK this.pack(); //this.setSize(500, this.getHeight()); this.setResizable(true); this.setLocationRelativeTo(null); this.setVisible(true); } public void removeObservers() { this.ordersTableModel.removeObservers(); } }