package gui.assets; import gui.models.BuyOrdersTableModel; import gui.models.OrdersTableModel; import gui.models.TradesTableModel; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Image; import java.awt.Insets; import java.awt.Toolkit; import java.util.ArrayList; import java.util.List; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.border.EmptyBorder; import qora.assets.Asset; public class ExchangeFrame extends JFrame { private static final long serialVersionUID = -7052380905136603354L; private Asset have; private Asset want; private OrdersTableModel sellOrdersTableModel; private BuyOrdersTableModel buyOrdersTableModel; private TradesTableModel tradesTableModel; public ExchangeFrame(Asset have, Asset want) { super("Qora - Asset Exchange"); this.have = have; this.want = want; //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)); //LABEL GBC GridBagConstraints labelGBC = new GridBagConstraints(); labelGBC.insets = new Insets(0, 5, 5, 0); labelGBC.fill = GridBagConstraints.HORIZONTAL; labelGBC.anchor = GridBagConstraints.NORTHWEST; labelGBC.weightx = 0; //ORDER GBC GridBagConstraints orderGBC = new GridBagConstraints(); orderGBC.insets = new Insets(0, 5, 5, 0); orderGBC.fill = GridBagConstraints.BOTH; orderGBC.anchor = GridBagConstraints.NORTHWEST; orderGBC.weightx = 1; orderGBC.gridy = 2; //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.gridy = 4; //CREATE TITLE LABEL JLabel lblTitle = new JLabel("(" + this.have.getKey() + ")" + this.have.getName() + "/(" + this.want.getKey() + ")" + this.want.getName()); lblTitle.setFont(new Font("Serif", Font.PLAIN, 24)); this.add(lblTitle, labelGBC); //CREATE BUY LABEL labelGBC.gridy = 1; JLabel lblBuy = new JLabel("Sell (" + this.want.getKey() + ")" + this.want.getName()); lblBuy.setFont(new Font("Serif", Font.PLAIN, 18)); this.add(lblBuy, labelGBC); //CREATE SELL LABEL labelGBC.gridx = 1; JLabel lblSell = new JLabel("Sell (" + this.have.getKey() + ")" + this.have.getName()); lblSell.setFont(new Font("Serif", Font.PLAIN, 18)); this.add(lblSell, labelGBC); //CREATE BUY PANEL OrderPanel buyOrderPanel = new OrderPanel(this.want, this.have, true); this.add(buyOrderPanel, orderGBC); //CREATE SELL PANEL orderGBC.gridx = 1; OrderPanel sellOrderPanel = new OrderPanel(this.have, this.want, false); this.add(sellOrderPanel, orderGBC); //CREATE SELL ORDERS LABEL labelGBC.gridx = 0; labelGBC.gridy = 3; JLabel lblSellOrders = new JLabel("Sell orders"); lblSellOrders.setFont(new Font("Serif", Font.PLAIN, 18)); this.add(lblSellOrders, labelGBC); //CREATE BUY ORDERS LABEL labelGBC.gridx = 1; JLabel lblBuyOrders = new JLabel("Buy orders"); lblBuyOrders.setFont(new Font("Serif", Font.PLAIN, 18)); this.add(lblBuyOrders, labelGBC); //CREATE SELL ORDERS TABLE this.sellOrdersTableModel = new OrdersTableModel(this.have, this.want); final JTable sellOrdersTable = new JTable(this.sellOrdersTableModel); this.add(new JScrollPane(sellOrdersTable), tableGBC); //CREATE BUY ORDERS TABLE tableGBC.gridx = 1; this.buyOrdersTableModel = new BuyOrdersTableModel(this.want, this.have); final JTable buyOrdersTable = new JTable(this.buyOrdersTableModel); this.add(new JScrollPane(buyOrdersTable), tableGBC); //CREATE TRADE HISTORY LABEL labelGBC.gridx = 0; labelGBC.gridy = 5; JLabel lblTradeHistory = new JLabel("Trade History"); lblTradeHistory.setFont(new Font("Serif", Font.PLAIN, 18)); this.add(lblTradeHistory, labelGBC); //CREATE TRADE HISTORY TABLE tableGBC.gridx = 0; tableGBC.gridy = 6; tableGBC.gridwidth = 2; //tableGBC.weighty = 1; this.tradesTableModel = new TradesTableModel(this.have, this.want); final JTable TradesTable = new JTable(this.tradesTableModel); this.add(new JScrollPane(TradesTable), tableGBC); //PACK this.pack(); this.setResizable(true); this.setLocationRelativeTo(null); this.setVisible(true); } }