diff --git a/pom.xml b/pom.xml
index 4bc2fa8..db7d0df 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,11 @@
beansbinding
1.2.1
+
+ unknown.binary
+ AbsoluteLayout
+ SNAPSHOT
+
UTF-8
diff --git a/src/main/java/gui/EditPreferencesDialog.form b/src/main/java/gui/EditPreferencesDialog.form
index 68f394e..2295939 100644
--- a/src/main/java/gui/EditPreferencesDialog.form
+++ b/src/main/java/gui/EditPreferencesDialog.form
@@ -39,8 +39,11 @@
-
-
+
+
+
+
+
@@ -56,9 +59,11 @@
-
+
+
+
-
+
@@ -125,5 +130,10 @@
+
+
+
+
+
diff --git a/src/main/java/gui/EditPreferencesDialog.java b/src/main/java/gui/EditPreferencesDialog.java
index 1d531e9..26dfbab 100644
--- a/src/main/java/gui/EditPreferencesDialog.java
+++ b/src/main/java/gui/EditPreferencesDialog.java
@@ -42,9 +42,9 @@ public class EditPreferencesDialog extends javax.swing.JDialog {
UIManager.LookAndFeelInfo[] lafInfo;
- LookAndFeel old_laf;
- LookAndFeel new_laf;
-
+ LookAndFeel old_laf;
+ LookAndFeel new_laf;
+
/**
* Creates new form EditPreferencesDialog
*/
@@ -52,20 +52,25 @@ public class EditPreferencesDialog extends javax.swing.JDialog {
super(parent, modal);
initComponents();
this.setLocationRelativeTo(this.getParent());
-
+
old_laf = UIManager.getLookAndFeel();
-
-
+
lafInfo = UIManager.getInstalledLookAndFeels();
lafComboBox.removeAllItems();
for (UIManager.LookAndFeelInfo lafInfo1 : lafInfo) {
lafComboBox.addItem(lafInfo1.getName());
}
lafComboBox.setSelectedItem(Globals.prefs.get("laf", "Nimbus"));
-
- String selstr = Globals.prefs.get(Globals.DEVELSTATUS,"false");
-
+
+ String selstr;
+ selstr = Globals.prefs.get(Globals.DEVELSTATUS, "false");
this.jDevleopmentFeaturesCheckBox.setSelected(selstr.equals("true"));
+
+ selstr = Globals.prefs.get(Globals.GODMODE, "false");
+ this.godmodeCheckBox.setSelected(selstr.equals("true"));
+
+
+
}
/**
@@ -83,6 +88,7 @@ public class EditPreferencesDialog extends javax.swing.JDialog {
okButton = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jDevleopmentFeaturesCheckBox = new javax.swing.JCheckBox();
+ godmodeCheckBox = new javax.swing.JCheckBox();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
@@ -121,6 +127,8 @@ public class EditPreferencesDialog extends javax.swing.JDialog {
jDevleopmentFeaturesCheckBox.setText("Develeopment");
+ godmodeCheckBox.setText("Godmode");
+
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
@@ -140,7 +148,9 @@ public class EditPreferencesDialog extends javax.swing.JDialog {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cancelButton))
.addGroup(layout.createSequentialGroup()
- .addComponent(jDevleopmentFeaturesCheckBox)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(godmodeCheckBox)
+ .addComponent(jDevleopmentFeaturesCheckBox))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
@@ -151,9 +161,11 @@ public class EditPreferencesDialog extends javax.swing.JDialog {
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lafComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 178, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(godmodeCheckBox)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jDevleopmentFeaturesCheckBox)
- .addGap(40, 40, 40)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 188, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(cancelButton)
.addComponent(applyButton)
@@ -169,7 +181,7 @@ public class EditPreferencesDialog extends javax.swing.JDialog {
}//GEN-LAST:event_lafComboBoxActionPerformed
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
- if (old_laf!=new_laf){
+ if (old_laf != new_laf) {
try {
UIManager.setLookAndFeel(old_laf);
} catch (UnsupportedLookAndFeelException ex) {
@@ -180,22 +192,24 @@ public class EditPreferencesDialog extends javax.swing.JDialog {
this.dispose();
}//GEN-LAST:event_cancelButtonActionPerformed
- void resetUI(){
- for (Window w : Window.getWindows()) {
+ void resetUI() {
+ for (Window w : Window.getWindows()) {
System.out.print("Setting frame\n");
SwingUtilities.updateComponentTreeUI(w);
w.pack();
- }
+ }
}
private void applyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_applyButtonActionPerformed
-
+
+
String selected = (String) this.lafComboBox.getSelectedItem();
-
Globals.setLookAndFeel(selected);
- new_laf=UIManager.getLookAndFeel();
+ new_laf = UIManager.getLookAndFeel();
resetUI();
+
+
}//GEN-LAST:event_applyButtonActionPerformed
@@ -203,8 +217,12 @@ public class EditPreferencesDialog extends javax.swing.JDialog {
this.applyButtonActionPerformed(evt);
String selected = (String) this.lafComboBox.getSelectedItem();
Globals.prefs.put("laf", selected);
- String sel = this.jDevleopmentFeaturesCheckBox.isSelected() == true ? "true" : "false";
- Globals.prefs.put(Globals.DEVELSTATUS,sel);
+ String sel;
+ sel = this.jDevleopmentFeaturesCheckBox.isSelected() == true ? "true" : "false";
+ Globals.prefs.put(Globals.DEVELSTATUS, sel);
+ sel = this.godmodeCheckBox.isSelected() == true ? "true" : "false";
+ Globals.prefs.put(Globals.GODMODE, sel);
+ Globals.notifyCfgListeners();
this.dispose();
}//GEN-LAST:event_okButtonActionPerformed
@@ -253,6 +271,7 @@ public class EditPreferencesDialog extends javax.swing.JDialog {
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton applyButton;
private javax.swing.JButton cancelButton;
+ private javax.swing.JCheckBox godmodeCheckBox;
private javax.swing.JCheckBox jDevleopmentFeaturesCheckBox;
private javax.swing.JLabel jLabel1;
private javax.swing.JComboBox lafComboBox;
diff --git a/src/main/java/gui/Globals.java b/src/main/java/gui/Globals.java
index aca7e15..de319f1 100644
--- a/src/main/java/gui/Globals.java
+++ b/src/main/java/gui/Globals.java
@@ -28,6 +28,7 @@ package gui;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.TreeMap;
import java.util.logging.Level;
@@ -46,12 +47,28 @@ import sesim.AutoTraderLoader;
*/
public class Globals {
+ public interface CfgListener{
+ void cfgChanged();
+ }
+
+ static ArrayList cfg_listeners = new ArrayList<>();
+ public static void notifyCfgListeners(){
+ for (CfgListener l : cfg_listeners){
+ l.cfgChanged();
+ }
+ }
+
+ public static void addCfgListener(CfgListener l){
+ cfg_listeners.add(l);
+ }
+
public static JFrame frame;
static final String STRATEGYPREFS = "Strategies";
static final String TRADERPREFS = "Traders";
static final String DEVELSTATUS = "devel_status";
+ static final String GODMODE = "godmode";
static public sesim.Exchange se;
diff --git a/src/main/java/gui/LoggerDialog.form b/src/main/java/gui/LoggerDialog.form
index f59d060..292a5e4 100644
--- a/src/main/java/gui/LoggerDialog.form
+++ b/src/main/java/gui/LoggerDialog.form
@@ -23,12 +23,22 @@
-
+
+
+
+
+
+
-
+
+
+
+
+
+
@@ -49,5 +59,7 @@
+
+
diff --git a/src/main/java/gui/LoggerDialog.java b/src/main/java/gui/LoggerDialog.java
index 941cf3d..db4e46d 100644
--- a/src/main/java/gui/LoggerDialog.java
+++ b/src/main/java/gui/LoggerDialog.java
@@ -85,6 +85,7 @@ public class LoggerDialog extends javax.swing.JDialog {
jScrollPane1 = new javax.swing.JScrollPane();
logArea = new javax.swing.JTextArea();
+ orderBookNew1 = new gui.OrderBookNew();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
@@ -97,11 +98,19 @@ public class LoggerDialog extends javax.swing.JDialog {
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 586, Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+ .addGap(63, 63, 63)
+ .addComponent(orderBookNew1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(orderBookNew1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 9, Short.MAX_VALUE))
);
pack();
@@ -152,5 +161,6 @@ public class LoggerDialog extends javax.swing.JDialog {
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea logArea;
+ private gui.OrderBookNew orderBookNew1;
// End of variables declaration//GEN-END:variables
}
diff --git a/src/main/java/gui/NewMDIApplication.form b/src/main/java/gui/NewMDIApplication.form
index ded9d96..50a72a3 100644
--- a/src/main/java/gui/NewMDIApplication.form
+++ b/src/main/java/gui/NewMDIApplication.form
@@ -243,7 +243,7 @@
-
+
@@ -259,7 +259,10 @@
-
+
+
+
+
@@ -267,8 +270,6 @@
-
-
@@ -419,5 +420,7 @@
+
+
diff --git a/src/main/java/gui/NewMDIApplication.java b/src/main/java/gui/NewMDIApplication.java
index 110fbf0..5b94e5b 100644
--- a/src/main/java/gui/NewMDIApplication.java
+++ b/src/main/java/gui/NewMDIApplication.java
@@ -142,7 +142,6 @@ public class NewMDIApplication extends javax.swing.JFrame {
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
- orderBookPanel = new gui.OrderBookPanel();
jChartScrollPane = new javax.swing.JScrollPane();
chart = new chart.Chart();
jPanel2 = new javax.swing.JPanel();
@@ -152,6 +151,7 @@ public class NewMDIApplication extends javax.swing.JFrame {
accelSpinner = new javax.swing.JSpinner();
clock = new gui.Clock();
jComboBox1 = new javax.swing.JComboBox<>();
+ oderBookPanelNew1 = new gui.OderBookPanelNew();
menuBar = new javax.swing.JMenuBar();
fileMenu = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
@@ -458,7 +458,7 @@ public class NewMDIApplication extends javax.swing.JFrame {
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
- .addComponent(orderBookPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 233, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(oderBookPanelNew1, javax.swing.GroupLayout.PREFERRED_SIZE, 220, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jChartScrollPane)
.addContainerGap())
@@ -472,7 +472,9 @@ public class NewMDIApplication extends javax.swing.JFrame {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jChartScrollPane)
- .addComponent(orderBookPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGroup(layout.createSequentialGroup()
+ .addGap(0, 0, Short.MAX_VALUE)
+ .addComponent(oderBookPanelNew1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
@@ -503,8 +505,8 @@ public class NewMDIApplication extends javax.swing.JFrame {
this.stopButton.setEnabled(true);
- this.orderBookPanel.invalidate();
- this.orderBookPanel.repaint();
+// this.orderBookPanel.invalidate();
+// this.orderBookPanel.repaint();
this.clock.invalidate();
this.clock.repaint();
@@ -529,8 +531,8 @@ public class NewMDIApplication extends javax.swing.JFrame {
chart.initChart();
chart.invalidate();
chart.repaint();
- this.orderBookPanel.invalidate();
- this.orderBookPanel.repaint();
+// this.orderBookPanel.invalidate();
+// this.orderBookPanel.repaint();
}
@@ -705,8 +707,8 @@ public class NewMDIApplication extends javax.swing.JFrame {
private javax.swing.JPopupMenu.Separator jSeparator2;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JMenuBar menuBar;
+ private gui.OderBookPanelNew oderBookPanelNew1;
private javax.swing.JMenuItem openMenuItem;
- private gui.OrderBookPanel orderBookPanel;
private javax.swing.JMenuItem pasteMenuItem;
private javax.swing.JButton runButton;
private javax.swing.JMenuItem saveAsMenuItem;
diff --git a/src/main/java/gui/OderBookPanelNew.form b/src/main/java/gui/OderBookPanelNew.form
new file mode 100644
index 0000000..7ab5f47
--- /dev/null
+++ b/src/main/java/gui/OderBookPanelNew.form
@@ -0,0 +1,74 @@
+
+
+
diff --git a/src/main/java/gui/OderBookPanelNew.java b/src/main/java/gui/OderBookPanelNew.java
new file mode 100644
index 0000000..0d4771d
--- /dev/null
+++ b/src/main/java/gui/OderBookPanelNew.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2017, 7u83 <7u83@mail.ru>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+package gui;
+
+/**
+ *
+ * @author 7u83 <7u83@mail.ru>
+ */
+public class OderBookPanelNew extends javax.swing.JPanel {
+
+ /**
+ * Creates new form OderBookPanelNew
+ */
+ public OderBookPanelNew() {
+ initComponents();
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ quotePanel1 = new gui.QuotePanel();
+ orderBookNew3 = new gui.OrderBookNew();
+ orderBookNew4 = new gui.OrderBookNew();
+ filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 32767));
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(quotePanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(orderBookNew3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 585, Short.MAX_VALUE)
+ .addComponent(orderBookNew4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(orderBookNew3, javax.swing.GroupLayout.PREFERRED_SIZE, 156, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGap(70, 70, 70)
+ .addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(layout.createSequentialGroup()
+ .addGap(30, 30, 30)
+ .addComponent(quotePanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(orderBookNew4, javax.swing.GroupLayout.PREFERRED_SIZE, 176, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())
+ );
+ }// //GEN-END:initComponents
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.Box.Filler filler1;
+ private gui.OrderBookNew orderBookNew3;
+ private gui.OrderBookNew orderBookNew4;
+ private gui.QuotePanel quotePanel1;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/src/main/java/gui/OrderBookDialog.form b/src/main/java/gui/OrderBookDialog.form
new file mode 100644
index 0000000..1b509f4
--- /dev/null
+++ b/src/main/java/gui/OrderBookDialog.form
@@ -0,0 +1,33 @@
+
+
+
diff --git a/src/main/java/gui/OrderBookDialog.java b/src/main/java/gui/OrderBookDialog.java
new file mode 100644
index 0000000..4f2c74d
--- /dev/null
+++ b/src/main/java/gui/OrderBookDialog.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2017, 7u83 <7u83@mail.ru>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+package gui;
+
+/**
+ *
+ * @author 7u83 <7u83@mail.ru>
+ */
+public class OrderBookDialog extends javax.swing.JDialog {
+
+ /**
+ * Creates new form OrderBookDialog
+ */
+ public OrderBookDialog(java.awt.Frame parent, boolean modal) {
+ super(parent, modal);
+ initComponents();
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ orderBookNew1 = new gui.OrderBookNew();
+ quotePanel1 = new gui.QuotePanel();
+ orderBookNew2 = new gui.OrderBookNew();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+ getContentPane().setLayout(new java.awt.FlowLayout());
+ getContentPane().add(orderBookNew1);
+ getContentPane().add(quotePanel1);
+ getContentPane().add(orderBookNew2);
+
+ pack();
+ }// //GEN-END:initComponents
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String args[]) {
+ /* Set the Nimbus look and feel */
+ //
+ /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+ * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
+ */
+ try {
+ for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+ if ("Nimbus".equals(info.getName())) {
+ javax.swing.UIManager.setLookAndFeel(info.getClassName());
+ break;
+ }
+ }
+ } catch (ClassNotFoundException ex) {
+ java.util.logging.Logger.getLogger(OrderBookDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ } catch (InstantiationException ex) {
+ java.util.logging.Logger.getLogger(OrderBookDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ } catch (IllegalAccessException ex) {
+ java.util.logging.Logger.getLogger(OrderBookDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+ java.util.logging.Logger.getLogger(OrderBookDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ }
+ //
+
+ /* Create and display the dialog */
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ OrderBookDialog dialog = new OrderBookDialog(new javax.swing.JFrame(), true);
+ dialog.addWindowListener(new java.awt.event.WindowAdapter() {
+ @Override
+ public void windowClosing(java.awt.event.WindowEvent e) {
+ System.exit(0);
+ }
+ });
+ dialog.setVisible(true);
+ }
+ });
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private gui.OrderBookNew orderBookNew1;
+ private gui.OrderBookNew orderBookNew2;
+ private gui.QuotePanel quotePanel1;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/src/main/java/gui/TraderListPanel2.form b/src/main/java/gui/OrderBookNew.form
similarity index 71%
rename from src/main/java/gui/TraderListPanel2.form
rename to src/main/java/gui/OrderBookNew.form
index 5b2ae04..3ae6548 100644
--- a/src/main/java/gui/TraderListPanel2.form
+++ b/src/main/java/gui/OrderBookNew.form
@@ -16,12 +16,12 @@
-
+
-
+
@@ -35,20 +35,14 @@
-
-
-
-
-
-
-
+
-
-
-
diff --git a/src/main/java/gui/TraderListPanel2.java b/src/main/java/gui/OrderBookNew.java
similarity index 56%
rename from src/main/java/gui/TraderListPanel2.java
rename to src/main/java/gui/OrderBookNew.java
index a9162f5..61b90e6 100644
--- a/src/main/java/gui/TraderListPanel2.java
+++ b/src/main/java/gui/OrderBookNew.java
@@ -25,75 +25,81 @@
*/
package gui;
+import gui.Globals.CfgListener;
import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Timer;
-import java.util.TimerTask;
-import javax.swing.JDialog;
-import javax.swing.JList;
-import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
-
-import sesim.AutoTraderInterface;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
import sesim.Exchange;
-import sesim.Exchange.Account;
+import sesim.Exchange.Order;
/**
*
* @author 7u83 <7u83@mail.ru>
*/
-public class TraderListPanel2 extends javax.swing.JPanel {
+public class OrderBookNew extends javax.swing.JPanel implements Exchange.BookReceiver, CfgListener {
DefaultTableModel model;
+ TableColumn trader_column = null;
- final void updateModel() {
- if (Globals.se == null) {
+ public void setGodMode(boolean on) {
+ TableColumnModel tcm = list.getColumnModel();
+ if (on){
+ if (list.getColumnCount()==3){
+ return;
+ }
+ tcm.addColumn(trader_column);
+ tcm.moveColumn(2, 0);
return;
}
-
- if (Globals.se.traders == null) {
- return;
+ else{
+ if (list.getColumnCount()==2){
+ return;
+ }
+ tcm.removeColumn(tcm.getColumn(0));
+
+
+
}
-
- sesim.Quote q = Globals.se.getLastQuoete();
- double price = q == null ? 0 : q.price;
-
- int size = Globals.se.traders.size();
- model.setRowCount(size);
- for (int i = 0; i < size; i++) {
- AutoTraderInterface at = Globals.se.traders.get(i);
- Account a = at.getAccount();
- model.setValueAt(i, i, 0);
- model.setValueAt(at.getName(), i, 1);
- model.setValueAt(a.getMoney(), i, 2);
- model.setValueAt(a.getShares(), i, 3);
-
- double wealth = a.getShares() * price + a.getMoney();
- model.setValueAt(wealth, i, 4);
- }
- list.getRowSorter().allRowsChanged();
+
}
- TimerTask updater;
+ @Override
+ public void cfgChanged() {
+ boolean gm = Globals.prefs.get(Globals.GODMODE, "false").equals("true");
+ System.out.printf("GM %s\n",gm?"true":"false");
+ setGodMode(gm);
+ list.invalidate();
+ list.repaint();
+
+ }
+
/**
- * Creates new form TraderListPanel2
+ * Creates new form OrderBookNew
*/
- public TraderListPanel2() {
+ public OrderBookNew() {
initComponents();
- model = (DefaultTableModel) list.getModel();
- updateModel();
+ if (Globals.se==null)
+ return;
+ model = (DefaultTableModel) this.list.getModel();
+ trader_column = list.getColumnModel().getColumn(0);
+ cfgChanged();
+ Globals.se.addBookReceiver(Exchange.OrderType.BUYLIMIT, this);
+ Globals.addCfgListener(this);
+ }
- Timer timer = new Timer();
- updater = new TimerTask() {
- @Override
- public void run() {
- updateModel();
-
- }
- };
-
- timer.schedule(updater, 0, 1000);
+ @Override
+ public void UpdateOrderBook() {
+ ArrayList ob = Globals.se.getOrderBook(Exchange.OrderType.SELLLIMIT, 40);
+ model.setRowCount(ob.size());
+ int row = 0;
+ for (Order ob1 : ob) {
+ model.setValueAt(ob1.getAccount().getOwner().getName(), row, 0);
+ model.setValueAt(ob1.getLimit(), row, 1);
+ model.setValueAt(ob1.getVolume(), row, 2);
+ row++;
+ }
}
@@ -109,24 +115,22 @@ public class TraderListPanel2 extends javax.swing.JPanel {
jScrollPane1 = new javax.swing.JScrollPane();
list = new javax.swing.JTable();
- list.setAutoCreateRowSorter(true);
list.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
- {null, null, null, null, null},
- {null, null, null, null, null},
- {null, null, null, null, null},
- {null, null, null, null, null},
- {null, null, null, null, null}
+ {null, null, null},
+ {null, null, null},
+ {null, null, null},
+ {null, null, null}
},
new String [] {
- "ID", "Name", "Money", "Shares", "Wealth"
+ "Trader", "Price", "Volume"
}
) {
Class[] types = new Class [] {
- java.lang.Long.class, java.lang.String.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class
+ java.lang.String.class, java.lang.Double.class, java.lang.Double.class
};
boolean[] canEdit = new boolean [] {
- false, false, false, false, false
+ false, false, false
};
public Class getColumnClass(int columnIndex) {
@@ -137,45 +141,25 @@ public class TraderListPanel2 extends javax.swing.JPanel {
return canEdit [columnIndex];
}
});
- list.addMouseListener(new java.awt.event.MouseAdapter() {
- public void mouseClicked(java.awt.event.MouseEvent evt) {
- listMouseClicked(evt);
- }
- });
jScrollPane1.setViewportView(list);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 537, Short.MAX_VALUE)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
);
}// //GEN-END:initComponents
- private void listMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_listMouseClicked
- if (evt.getClickCount() == 2) {
- int index = list.rowAtPoint(evt.getPoint());
-
- index = list.getRowSorter().convertRowIndexToModel(index);
- Integer tid = (Integer)model.getValueAt(index, 0);
- System.out.printf("Trader ID %d\n", tid);
-
- JDialog console = Globals.se.traders.get(tid).getGuiConsole();
- if (console == null)
- return;
- console.setVisible(true);
-
- }
-
- }//GEN-LAST:event_listMouseClicked
-
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable list;
// End of variables declaration//GEN-END:variables
+
+
}
diff --git a/src/main/java/gui/OrdersList.form b/src/main/java/gui/OrdersList.form
index 736be7a..258db07 100644
--- a/src/main/java/gui/OrdersList.form
+++ b/src/main/java/gui/OrdersList.form
@@ -40,7 +40,7 @@
-
+
diff --git a/src/main/java/gui/OrdersList.java b/src/main/java/gui/OrdersList.java
index 224aceb..1970c5a 100644
--- a/src/main/java/gui/OrdersList.java
+++ b/src/main/java/gui/OrdersList.java
@@ -92,7 +92,6 @@ public class OrdersList extends javax.swing.JPanel {
order_table.setAutoCreateRowSorter(true);
order_table.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
- {null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null}
diff --git a/src/main/java/gui/QuotePanel.java b/src/main/java/gui/QuotePanel.java
index 372d5ef..dfd18f5 100644
--- a/src/main/java/gui/QuotePanel.java
+++ b/src/main/java/gui/QuotePanel.java
@@ -125,7 +125,7 @@ public class QuotePanel extends javax.swing.JPanel implements sesim.Exchange.Quo
- u.text = String.format("%.2f\n(%.0f)", q.price,q.volume);
+ u.text = String.format("%.8f\n(%.0f)", q.price,q.volume);
SwingUtilities.invokeLater(u);
diff --git a/src/main/java/gui/TestPanel.form b/src/main/java/gui/TestPanel.form
deleted file mode 100644
index c638b68..0000000
--- a/src/main/java/gui/TestPanel.form
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
diff --git a/src/main/java/gui/TestPanel.java b/src/main/java/gui/TestPanel.java
deleted file mode 100644
index 8797d9c..0000000
--- a/src/main/java/gui/TestPanel.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2017, 7u83 <7u83@mail.ru>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-package gui;
-
-/**
- *
- * @author 7u83 <7u83@mail.ru>
- */
-public class TestPanel extends TraderListPanel {
-
- /**
- * Creates new form TestPanel
- */
- public TestPanel() {
- initComponents();
- }
-
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
- @SuppressWarnings("unchecked")
- // //GEN-BEGIN:initComponents
- private void initComponents() {
-
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
- this.setLayout(layout);
- layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGap(0, 400, Short.MAX_VALUE)
- );
- layout.setVerticalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGap(0, 300, Short.MAX_VALUE)
- );
- }// //GEN-END:initComponents
-
-
- // Variables declaration - do not modify//GEN-BEGIN:variables
- // End of variables declaration//GEN-END:variables
-}
diff --git a/src/main/java/gui/TraderListDialog.form b/src/main/java/gui/TraderListDialog.form
index 66a27b7..406d9c1 100644
--- a/src/main/java/gui/TraderListDialog.form
+++ b/src/main/java/gui/TraderListDialog.form
@@ -34,7 +34,7 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/main/java/gui/TraderListDialog.java b/src/main/java/gui/TraderListDialog.java
index d1d93eb..801ea77 100644
--- a/src/main/java/gui/TraderListDialog.java
+++ b/src/main/java/gui/TraderListDialog.java
@@ -52,7 +52,7 @@ public class TraderListDialog extends javax.swing.JDialog {
// //GEN-BEGIN:initComponents
private void initComponents() {
- traderListPanel22 = new gui.TraderListPanel2();
+ traderListPanel22 = new gui.TraderListPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Trader List");
@@ -115,6 +115,6 @@ public class TraderListDialog extends javax.swing.JDialog {
}
// Variables declaration - do not modify//GEN-BEGIN:variables
- private gui.TraderListPanel2 traderListPanel22;
+ private gui.TraderListPanel traderListPanel22;
// End of variables declaration//GEN-END:variables
}
diff --git a/src/main/java/gui/TraderListPanel.form b/src/main/java/gui/TraderListPanel.form
index ab33ab4..5b2ae04 100644
--- a/src/main/java/gui/TraderListPanel.form
+++ b/src/main/java/gui/TraderListPanel.form
@@ -16,37 +16,38 @@
-
+
-
+
-
+
-
+
-
-
-
-
-
+
-
+
diff --git a/src/main/java/gui/TraderListPanel.java b/src/main/java/gui/TraderListPanel.java
index e8eba8a..fefa0d3 100644
--- a/src/main/java/gui/TraderListPanel.java
+++ b/src/main/java/gui/TraderListPanel.java
@@ -25,21 +25,18 @@
*/
package gui;
-import java.awt.Color;
import java.util.ArrayList;
-import java.util.Formatter;
import java.util.Iterator;
import java.util.Timer;
import java.util.TimerTask;
-import javax.swing.BorderFactory;
-import javax.swing.ListModel;
-import javax.swing.SwingUtilities;
-import javax.swing.table.AbstractTableModel;
-import javax.swing.table.JTableHeader;
+import javax.swing.JDialog;
+import javax.swing.JList;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
import sesim.AutoTraderInterface;
import sesim.Exchange;
-import sesim.Scheduler;
+import sesim.Exchange.Account;
/**
*
@@ -47,179 +44,56 @@ import sesim.Scheduler;
*/
public class TraderListPanel extends javax.swing.JPanel {
- Exchange se;
- TraderListModel model;
-
- TimerTask updater;
-
- /**
- * Creates new form TraderListPanel
- */
- public TraderListPanel() {
- initComponents();
-
- this.setBorder(BorderFactory.createEmptyBorder());
-// this.orderBookScroller.setBorder(BorderFactory.createBevelBorder(0));
+ DefaultTableModel model;
+ final void updateModel() {
if (Globals.se == null) {
return;
}
- this.model = new TraderListModel();
- this.traderList.setModel(this.model);
-
- traderList.setBorder(BorderFactory.createEmptyBorder());
-
- JTableHeader h = this.traderList.getTableHeader();
-// h.setBackground(Color.BLUE);
-// h.setForeground(Color.green);
-
- if (Globals.se != null) {
- this.se = Globals.se;
- this.list = this.getTraderList();
- // se.timer.startTimerEvent(this, 1000);
-
- Timer timer = new Timer();
- updater = new TimerTask() {
- @Override
- public void run() {
- timerTask();
-
- }
- };
-
- timer.schedule(updater, 0, 1000);
-
+ if (Globals.se.traders == null) {
+ return;
}
- }
-
- final ArrayList getTraderList() {
- if (se.traders == null) {
- return new ArrayList<>();
- }
-
- sesim.Quote q = se.getLastQuoete();
+ sesim.Quote q = Globals.se.getLastQuoete();
double price = q == null ? 0 : q.price;
- Iterator it = se.traders.iterator();
- ArrayList tlist = new ArrayList<>();
- while (it.hasNext()) {
- AutoTraderInterface at = it.next();
- Exchange.Account a = at.getAccount();
- TraderListItem ti = new TraderListItem();
- ti.name = at.getName();
- ti.shares = a.getShares();
- ti.money = a.getMoney();
- ti.welth = price == 0 ? 0 : ti.shares * price + ti.money;
- tlist.add(ti);
+ int size = Globals.se.traders.size();
+ model.setRowCount(size);
+ for (int i = 0; i < size; i++) {
+ AutoTraderInterface at = Globals.se.traders.get(i);
+ Account a = at.getAccount();
+ model.setValueAt(i, i, 0);
+ model.setValueAt(at.getName(), i, 1);
+ model.setValueAt(a.getMoney(), i, 2);
+ model.setValueAt(a.getShares(), i, 3);
+ double wealth = a.getShares() * price + a.getMoney();
+ model.setValueAt(wealth, i, 4);
}
- return tlist;
+ list.getRowSorter().allRowsChanged();
}
- public long timerTask() {
- class Updater implements Runnable {
+ TimerTask updater;
- TraderListModel model;
- ArrayList newlist;
+ /**
+ * Creates new form TraderListPanel2
+ */
+ public TraderListPanel() {
+ initComponents();
+ model = (DefaultTableModel) list.getModel();
+ updateModel();
+ Timer timer = new Timer();
+ updater = new TimerTask() {
@Override
public void run() {
- model.update(this.newlist);
+ updateModel();
+
}
+ };
- Updater(TraderListModel model, ArrayList newlist) {
- this.model = model;
- this.newlist = newlist;
- }
-
- }
-
- //System.out.print("TimerTaskUpdater\n");
-
- ArrayList newlist = getTraderList();
- SwingUtilities.invokeLater(new Updater(this.model, newlist));
-
- return 2000;
-// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
-
- class TraderListItem {
-
- public String name;
- public double shares;
- public double money;
- public double welth;
- }
-
- private ArrayList list = new ArrayList<>();
-
- protected class TraderListModel extends AbstractTableModel {
-
- //private final boolean desc = false;
- public TraderListModel() {
-
- }
-
- public void update(ArrayList newlist) {
-
- list = newlist; //getOrderBook();
- this.fireTableDataChanged();
- }
-
- @Override
- public String getColumnName(int c) {
- switch (c) {
- case 0:
- return "ID";
- case 1:
- return "Name";
- case 2:
- return "Money";
- case 3:
- return "Shares";
- case 4:
- return "Wealth";
- }
- return "";
- }
-
- @Override
- public int getRowCount() {
- int rc = list.size();
- //System.out.print("Size" + rc + "\n");
- return list.size();
- }
-
- @Override
- public int getColumnCount() {
- return 5;
- }
-
- @Override
- public Object getValueAt(int r, int c) {
- TraderListItem ti;
- ti = list.get(r);
-
- int s = list.size();
- Formatter f = new Formatter();
- switch (c) {
- case 0:
- return String.format("#%06x", 0);
-
- case 1:
- return String.format("%s", ti.name);
- case 2:
- return String.format("%.2f", ti.money);
- case 3:
- return String.format("%.2f", ti.shares);
- case 4:
- return ti.welth; //String.format("%.2f", ti.welth);
- }
-
- return "x";
- }
+ timer.schedule(updater, 0, 1000);
}
@@ -232,47 +106,77 @@ public class TraderListPanel extends javax.swing.JPanel {
// //GEN-BEGIN:initComponents
private void initComponents() {
- traderListScroller = new javax.swing.JScrollPane();
- traderList = new javax.swing.JTable();
+ jScrollPane1 = new javax.swing.JScrollPane();
+ list = new javax.swing.JTable();
- traderList.setAutoCreateRowSorter(true);
- traderList.setModel(new javax.swing.table.DefaultTableModel(
+ list.setAutoCreateRowSorter(true);
+ list.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
- {null, null, null, null},
- {null, null, null, null},
- {null, null, null, null},
- {null, null, null, null}
+ {null, null, null, null, null},
+ {null, null, null, null, null},
+ {null, null, null, null, null},
+ {null, null, null, null, null},
+ {null, null, null, null, null}
},
new String [] {
- "Title 1", "Title 2", "Title 3", "Title 4"
+ "ID", "Name", "Money", "Shares", "Wealth"
}
- ));
- traderList.addMouseListener(new java.awt.event.MouseAdapter() {
- public void mouseClicked(java.awt.event.MouseEvent evt) {
- traderListMouseClicked(evt);
+ ) {
+ Class[] types = new Class [] {
+ java.lang.Long.class, java.lang.String.class, java.lang.Double.class, java.lang.Double.class, java.lang.Double.class
+ };
+ boolean[] canEdit = new boolean [] {
+ false, false, false, false, false
+ };
+
+ public Class getColumnClass(int columnIndex) {
+ return types [columnIndex];
+ }
+
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ return canEdit [columnIndex];
}
});
- traderListScroller.setViewportView(traderList);
+ list.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseClicked(java.awt.event.MouseEvent evt) {
+ listMouseClicked(evt);
+ }
+ });
+ jScrollPane1.setViewportView(list);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(traderListScroller, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 537, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(traderListScroller, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
);
}// //GEN-END:initComponents
- private void traderListMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_traderListMouseClicked
-
- }//GEN-LAST:event_traderListMouseClicked
+ private void listMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_listMouseClicked
+ if (evt.getClickCount() == 2) {
+ int index = list.rowAtPoint(evt.getPoint());
+
+ index = list.getRowSorter().convertRowIndexToModel(index);
+ Integer tid = (Integer) model.getValueAt(index, 0);
+ System.out.printf("Trader ID %d\n", tid);
+
+ JDialog console = Globals.se.traders.get(tid).getGuiConsole();
+ if (console == null) {
+ return;
+ }
+ console.setVisible(true);
+
+ }
+
+ }//GEN-LAST:event_listMouseClicked
// Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JTable traderList;
- private javax.swing.JScrollPane traderListScroller;
+ private javax.swing.JScrollPane jScrollPane1;
+ private javax.swing.JTable list;
// End of variables declaration//GEN-END:variables
}
diff --git a/src/main/java/sesim/AutoTraderLoader.java b/src/main/java/sesim/AutoTraderLoader.java
index 9c15d00..d020f2a 100644
--- a/src/main/java/sesim/AutoTraderLoader.java
+++ b/src/main/java/sesim/AutoTraderLoader.java
@@ -74,7 +74,7 @@ public class AutoTraderLoader {
}
- Class loadClass(String filename, String classname) {
+ Class loadAutoTraderClass(String filename, String classname) {
String clnam = classname.substring(1, classname.length() - 6).replace('/', '.');
File f = new File(filename);
@@ -95,20 +95,24 @@ public class AutoTraderLoader {
Class> cls = cl.loadClass(clnam);
System.out.printf("Check Class: %s\n",cls.getCanonicalName());
if (isAutoTrader(cls)){
- System.out.printf("AT: %s\n",cls.getCanonicalName());
return (Class) cls;
}
-
-
} catch (ClassNotFoundException ex) {
- System.out.printf("Outch\n");
+ // something wnet wrong, but we ignore it
}
return null;
}
+
+ ArrayList> traders_cache=null;
+
public ArrayList> getTraders() {
+
+ if (traders_cache!=null){
+ return traders_cache;
+ }
int curlen = 0;
@@ -122,7 +126,7 @@ public class AutoTraderLoader {
public void accept(Object t) {
String fn = ((Path) t).toString();
if (fn.toLowerCase().endsWith(".class")) {
- Class cls = loadClass(fn, fn.substring(classpathEntry.length()));
+ Class cls = loadAutoTraderClass(fn, fn.substring(classpathEntry.length()));
if (cls == null) {
return;
}
@@ -165,7 +169,7 @@ public class AutoTraderLoader {
}
}
-
+ traders_cache=traders;
return traders;
}
diff --git a/src/main/java/sesim/Scheduler.java b/src/main/java/sesim/Scheduler.java
index 4d9b06c..250181a 100644
--- a/src/main/java/sesim/Scheduler.java
+++ b/src/main/java/sesim/Scheduler.java
@@ -210,10 +210,7 @@ public class Scheduler extends Thread {
return 0;
} else {
- //return 0;
- long n =(t - currentTimeMillis())/(long)this.acceleration;
- System.out.printf("Return wait %d\n",n);
- return n;
+ return(t - currentTimeMillis())/(long)this.acceleration;
}
}