diff --git a/src/Gui/MainWin.form b/src/Gui/MainWin.form index 920b57f..b3b4a93 100644 --- a/src/Gui/MainWin.form +++ b/src/Gui/MainWin.form @@ -2,31 +2,6 @@
- - - - - - - - - - - - - - - - - - - - - - - - - @@ -35,23 +10,43 @@ - + + + + + + + + + + + + + + + + + + + + + @@ -86,12 +81,44 @@ - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/MainWin.java b/src/Gui/MainWin.java index a33f0d8..b43f253 100644 --- a/src/Gui/MainWin.java +++ b/src/Gui/MainWin.java @@ -13,11 +13,14 @@ import SeSim.Exchange; */ public class MainWin extends javax.swing.JFrame { + static SeSim.Exchange se; + /** * Creates new form MainWin */ public MainWin() { + initComponents(); } @@ -30,23 +33,18 @@ public class MainWin extends javax.swing.JFrame { // //GEN-BEGIN:initComponents private void initComponents() { - jScrollPane1 = new javax.swing.JScrollPane(); - jList1 = new javax.swing.JList<>(); jButton1 = new javax.swing.JButton(); + jMenuItem1 = new javax.swing.JMenuItem(); + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + jButton2 = new javax.swing.JButton(); orderBook1 = new Gui.OrderBook(); - orderBook = new Gui.OrderBook(); MainMenu = new javax.swing.JMenuBar(); FileMenu = new javax.swing.JMenu(); FileNew = new javax.swing.JMenuItem(); + FileRun = new javax.swing.JMenuItem(); jMenu2 = new javax.swing.JMenu(); - jList1.setModel(new javax.swing.AbstractListModel() { - String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; - public int getSize() { return strings.length; } - public String getElementAt(int i) { return strings[i]; } - }); - jScrollPane1.setViewportView(jList1); - jButton1.setText("jButton1"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -54,14 +52,27 @@ public class MainWin extends javax.swing.JFrame { } }); + jMenuItem1.setText("jMenuItem1"); + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setMinimumSize(new java.awt.Dimension(400, 200)); - getContentPane().setLayout(new java.awt.GridLayout()); - getContentPane().add(orderBook); + jLabel1.setText("jLabel1"); + getContentPane().add(jLabel1, java.awt.BorderLayout.LINE_START); + + jLabel2.setText("jLabel2"); + getContentPane().add(jLabel2, java.awt.BorderLayout.CENTER); + + jButton2.setText("jButton2"); + getContentPane().add(jButton2, java.awt.BorderLayout.LINE_END); + getContentPane().add(orderBook1, java.awt.BorderLayout.PAGE_END); + + FileMenu.setBackground(new java.awt.Color(254, 203, 1)); + FileMenu.setBorder(null); FileMenu.setText("File"); FileNew.setText("New"); + FileNew.setBorder(null); FileNew.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { FileNewActionPerformed(evt); @@ -69,6 +80,14 @@ public class MainWin extends javax.swing.JFrame { }); FileMenu.add(FileNew); + FileRun.setText("Run"); + FileRun.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + FileRunActionPerformed(evt); + } + }); + FileMenu.add(FileRun); + MainMenu.add(FileMenu); jMenu2.setText("Edit"); @@ -88,10 +107,30 @@ public class MainWin extends javax.swing.JFrame { // TODO add your handling code here: }//GEN-LAST:event_jButton1ActionPerformed + private void FileRunActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FileRunActionPerformed + se.start(); + }//GEN-LAST:event_FileRunActionPerformed + /** * @param args the command line arguments */ public static void main(String args[]) { + + se = new Exchange(); + + SeSim.BuyOrder bo = new SeSim.BuyOrder(); + bo.limit=20.0; + bo.size=12; + bo.timestamp=12; + se.SendOrder(bo); + + SeSim.BuyOrder bo1 = new SeSim.BuyOrder(); + bo1.limit=27.0; + bo1.size=123; + bo1.timestamp=922; + se.SendOrder(bo1); + + /* Set the Nimbus look and feel */ // /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. @@ -115,10 +154,7 @@ public class MainWin extends javax.swing.JFrame { } // - - SeSim.Exchange se = new Exchange(); - se.start(); - + /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { @@ -130,12 +166,14 @@ public class MainWin extends javax.swing.JFrame { // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JMenu FileMenu; private javax.swing.JMenuItem FileNew; + private javax.swing.JMenuItem FileRun; private javax.swing.JMenuBar MainMenu; private javax.swing.JButton jButton1; - private javax.swing.JList jList1; + private javax.swing.JButton jButton2; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; private javax.swing.JMenu jMenu2; - private javax.swing.JScrollPane jScrollPane1; - private Gui.OrderBook orderBook; + private javax.swing.JMenuItem jMenuItem1; private Gui.OrderBook orderBook1; // End of variables declaration//GEN-END:variables } diff --git a/src/Gui/OrderBook.form b/src/Gui/OrderBook.form index a18c8c0..d827880 100644 --- a/src/Gui/OrderBook.form +++ b/src/Gui/OrderBook.form @@ -21,7 +21,7 @@ - + @@ -32,7 +32,7 @@ - + @@ -42,7 +42,7 @@ - + @@ -50,14 +50,11 @@ - - - - - - - - + + + + + @@ -76,13 +73,13 @@ - + - + @@ -104,6 +101,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -128,7 +145,7 @@ - + @@ -143,7 +160,7 @@ - + @@ -198,7 +215,7 @@ - + @@ -267,7 +284,7 @@ - + @@ -280,7 +297,7 @@ - + @@ -362,7 +379,20 @@ - + + + + + + + + + + + + + + @@ -373,7 +403,7 @@ - + @@ -386,7 +416,7 @@ - + @@ -399,7 +429,7 @@ - + @@ -411,7 +441,7 @@ - + @@ -420,16 +450,29 @@ - + - + - + + + + + + + + + + + + + + @@ -437,25 +480,25 @@ - + - + - + - + - + - + @@ -463,12 +506,12 @@ - + - + @@ -481,7 +524,7 @@ - + @@ -489,7 +532,132 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Gui/OrderBook.java b/src/Gui/OrderBook.java index 6701ee3..80373fa 100644 --- a/src/Gui/OrderBook.java +++ b/src/Gui/OrderBook.java @@ -5,16 +5,51 @@ */ package Gui; +//import SeSim.*; +import javax.swing.AbstractListModel; +import java.util.SortedSet; + /** * * @author 7u83 <7u83@mail.ru> */ public class OrderBook extends javax.swing.JPanel { - /** - * Creates new form OrderBook - */ + private class SListModel extends AbstractListModel { + + SortedSet model; + + public SListModel(SortedSet set) { + model = set; + } + + @Override + public Object getElementAt(int index) { + + SeSim.Order o = (SeSim.Order)model.toArray()[index]; + + return o.limit; //model.toArray()[index]; + + } + + @Override + public int getSize() { + return model.size(); + } + + + + + } + + SeSim.Exchange se; + + SListModel bid; + public OrderBook() { + this.se = MainWin.se; + bid = new SListModel(se.bid); + initComponents(); } @@ -33,18 +68,20 @@ public class OrderBook extends javax.swing.JPanel { jScrollPane1 = new javax.swing.JScrollPane(); BidList = new javax.swing.JList<>(); jScrollPane2 = new javax.swing.JScrollPane(); - jList2 = new javax.swing.JList<>(); + AskList = new javax.swing.JList<>(); + jLabel2 = new javax.swing.JLabel(); + jSeparator1 = new javax.swing.JSeparator(); java.awt.GridBagLayout layout = new java.awt.GridBagLayout(); - layout.columnWidths = new int[] {0, 5, 0, 5, 0, 5, 0}; - layout.rowHeights = new int[] {0, 5, 0}; + layout.columnWidths = new int[] {0, 5, 0, 5, 0, 5, 0, 5, 0, 5, 0}; + layout.rowHeights = new int[] {0, 5, 0, 5, 0}; setLayout(layout); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText("Bid"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; - gridBagConstraints.gridy = 0; + gridBagConstraints.gridy = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST; add(jLabel1, gridBagConstraints); @@ -52,52 +89,65 @@ public class OrderBook extends javax.swing.JPanel { jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel3.setText("Ask"); gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 4; - gridBagConstraints.gridy = 0; + gridBagConstraints.gridx = 8; + gridBagConstraints.gridy = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; add(jLabel3, gridBagConstraints); - BidList.setModel(new javax.swing.AbstractListModel() { - String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; - public int getSize() { return strings.length; } - public String getElementAt(int i) { return strings[i]; } - }); + BidList.setModel(bid); + BidList.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); BidList.setMinimumSize(new java.awt.Dimension(52, 200)); BidList.setName(""); // NOI18N jScrollPane1.setViewportView(BidList); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; - gridBagConstraints.gridy = 2; + gridBagConstraints.gridy = 4; + gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; add(jScrollPane1, gridBagConstraints); - jList2.setModel(new javax.swing.AbstractListModel() { + AskList.setModel(new javax.swing.AbstractListModel() { String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; public int getSize() { return strings.length; } public String getElementAt(int i) { return strings[i]; } }); - jList2.setMinimumSize(new java.awt.Dimension(52, 200)); - jList2.setName(""); // NOI18N - jScrollPane2.setViewportView(jList2); + AskList.setMinimumSize(new java.awt.Dimension(52, 200)); + AskList.setName(""); // NOI18N + jScrollPane2.setViewportView(AskList); gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 4; - gridBagConstraints.gridy = 2; + gridBagConstraints.gridx = 6; + gridBagConstraints.gridy = 4; + gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; add(jScrollPane2, gridBagConstraints); + + jLabel2.setForeground(new java.awt.Color(255, 0, 0)); + jLabel2.setText("20.00"); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 4; + gridBagConstraints.gridy = 0; + gridBagConstraints.gridwidth = 5; + add(jLabel2, gridBagConstraints); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 10; + gridBagConstraints.gridy = 0; + add(jSeparator1, gridBagConstraints); }// //GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JList AskList; private javax.swing.JList BidList; private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; - private javax.swing.JList jList2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JSeparator jSeparator1; // End of variables declaration//GEN-END:variables } diff --git a/src/SeSim/Exchange.java b/src/SeSim/Exchange.java index f63e93c..41e2669 100644 --- a/src/SeSim/Exchange.java +++ b/src/SeSim/Exchange.java @@ -52,8 +52,8 @@ public class Exchange extends Thread { long lastsize; // Order orderlist[]; - TreeSet bid = new TreeSet<>(); - TreeSet ask = new TreeSet<>(); + public TreeSet bid = new TreeSet<>(); + public TreeSet ask = new TreeSet<>(); private final Semaphore available = new Semaphore(1, true); @@ -252,7 +252,7 @@ public class Exchange extends Thread { try { sleep(1500); } catch (InterruptedException e) { - System.out.println("Interrupted"); + System.out.println("I was Interrupted"); } print_current();