File Save is possible
This commit is contained in:
parent
a11cf985a7
commit
25e8aa4495
@ -35,7 +35,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
|||||||
protected int num_bars = 4000;
|
protected int num_bars = 4000;
|
||||||
|
|
||||||
protected Rectangle clip_bounds = new Rectangle();
|
protected Rectangle clip_bounds = new Rectangle();
|
||||||
protected Dimension dim;
|
protected Dimension gdim;
|
||||||
|
|
||||||
protected int first_bar, last_bar;
|
protected int first_bar, last_bar;
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
|||||||
|
|
||||||
float m = c_mm.max/c_mm.min;
|
float m = c_mm.max/c_mm.min;
|
||||||
|
|
||||||
System.out.printf("Min: %f Max: %f M: %f\n",c_mm.min,c_mm.max,m);
|
//System.out.printf("Min: %f Max: %f M: %f\n",c_mm.min,c_mm.max,m);
|
||||||
|
|
||||||
|
|
||||||
//float fac = (float) c_rect.height /(float) Math.log(c_mm.max * c_yscaling);
|
//float fac = (float) c_rect.height /(float) Math.log(c_mm.max * c_yscaling);
|
||||||
@ -195,7 +195,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
|||||||
float fmin = c_rect.height - ((float) Math.log((y / c_mm.min)) * fac);
|
float fmin = c_rect.height - ((float) Math.log((y / c_mm.min)) * fac);
|
||||||
|
|
||||||
|
|
||||||
System.out.printf("Fac: %f fmin: %f\n", fac, fmin);
|
//System.out.printf("Fac: %f fmin: %f\n", fac, fmin);
|
||||||
return fmin;
|
return fmin;
|
||||||
|
|
||||||
//return c_rect.height - ((float) Math.log((y - c_mm.min) * c_yscaling) * fac);
|
//return c_rect.height - ((float) Math.log((y - c_mm.min) * c_yscaling) * fac);
|
||||||
@ -291,7 +291,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
|||||||
|
|
||||||
g.drawLine(dim.width + dim.x - yw, 0, dim.width + dim.x - yw, dim.height);
|
g.drawLine(dim.width + dim.x - yw, 0, dim.width + dim.x - yw, dim.height);
|
||||||
|
|
||||||
// float yscale = dim.height / c_mm.getDiff();
|
// float yscale = gdim.height / c_mm.getDiff();
|
||||||
c_yscaling = c_rect.height / c_mm.getDiff();
|
c_yscaling = c_rect.height / c_mm.getDiff();
|
||||||
|
|
||||||
// System.out.printf("yscale %f\n", c_yscaling);
|
// System.out.printf("yscale %f\n", c_yscaling);
|
||||||
@ -309,7 +309,7 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
|||||||
// g.drawLine(0,(int)getYc(c_mm.min), 1000, (int)getYc(c_mm.min));
|
// g.drawLine(0,(int)getYc(c_mm.min), 1000, (int)getYc(c_mm.min));
|
||||||
//g.setColor(Color.green);
|
//g.setColor(Color.green);
|
||||||
//g.drawRect(c_rect.x, c_rect.y, c_rect.width, c_rect.height);
|
//g.drawRect(c_rect.x, c_rect.y, c_rect.width, c_rect.height);
|
||||||
// System.out.printf("Size: %d %d\n",dim.width,dim.height);
|
// System.out.printf("Size: %d %d\n",gdim.width,gdim.height);
|
||||||
// System.exit(0);
|
// System.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,15 +343,16 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
|||||||
//this.getSize();
|
//this.getSize();
|
||||||
int pwidth = em_width * num_bars;
|
int pwidth = em_width * num_bars;
|
||||||
int phight = 400;
|
int phight = 400;
|
||||||
|
// phight=this.getVisibleRect().height;
|
||||||
|
|
||||||
this.setPreferredSize(new Dimension(pwidth, dim.height));
|
this.setPreferredSize(new Dimension(pwidth, gdim.height));
|
||||||
this.revalidate();
|
this.revalidate();
|
||||||
|
|
||||||
Rectangle r = new Rectangle(0, 0, pwidth, dim.height - 6 * em_width);
|
Rectangle r = new Rectangle(0, 0, pwidth, gdim.height - 6 * em_width);
|
||||||
c_rect = r;
|
c_rect = r;
|
||||||
this.drawYLegend(g);
|
this.drawYLegend(g);
|
||||||
|
|
||||||
// Dimension dim = this.getSize();
|
// Dimension gdim = this.getSize();
|
||||||
// Iterator<OHLCDataItem> it = data.iterator();
|
// Iterator<OHLCDataItem> it = data.iterator();
|
||||||
OHLCDataItem prev = null;
|
OHLCDataItem prev = null;
|
||||||
// int myi = 0;
|
// int myi = 0;
|
||||||
@ -405,10 +406,14 @@ public class Chart extends javax.swing.JPanel implements QuoteReceiver, Scrollab
|
|||||||
super.paintComponent(g);
|
super.paintComponent(g);
|
||||||
|
|
||||||
this.initEmSize(g);
|
this.initEmSize(g);
|
||||||
this.dim = this.getSize(dim);
|
this.gdim = this.getParent().getSize(gdim);
|
||||||
|
this.getParent().setPreferredSize(gdim);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
this.clip_bounds = g.getClipBounds(this.clip_bounds);
|
this.clip_bounds = g.getClipBounds(this.clip_bounds);
|
||||||
|
|
||||||
// System.out.printf("X:%d %d\n",dim.width,dim.height);
|
// System.out.printf("X:%d %d\n",gdim.width,gdim.height);
|
||||||
first_bar = (int) (clip_bounds.x / (this.bar_width * this.em_size));
|
first_bar = (int) (clip_bounds.x / (this.bar_width * this.em_size));
|
||||||
last_bar = 1 + (int) ((clip_bounds.x + clip_bounds.width - (this.y_legend_width * em_size)) / (this.bar_width * this.em_size));
|
last_bar = 1 + (int) ((clip_bounds.x + clip_bounds.width - (this.y_legend_width * em_size)) / (this.bar_width * this.em_size));
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ public class AskBook extends OrderBook {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean getDesc(){
|
boolean getDesc(){
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AskBook(){
|
public AskBook(){
|
||||||
|
117
src/main/java/gui/EditExchangeDialog.form
Normal file
117
src/main/java/gui/EditExchangeDialog.form
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
|
||||||
|
<Properties>
|
||||||
|
<Property name="defaultCloseOperation" type="int" value="2"/>
|
||||||
|
<Property name="title" type="java.lang.String" value="SeSim ExchangeSettings"/>
|
||||||
|
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[300, 142]"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="modal" type="boolean" value="true"/>
|
||||||
|
</Properties>
|
||||||
|
<SyntheticProperties>
|
||||||
|
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
||||||
|
<SyntheticProperty name="generateCenter" type="boolean" value="false"/>
|
||||||
|
</SyntheticProperties>
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
|
||||||
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||||
|
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||||
|
<Component id="jButton2" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="jButton1" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<Group type="103" groupAlignment="1" attributes="0">
|
||||||
|
<Component id="jLabel1" pref="212" max="32767" attributes="0"/>
|
||||||
|
<Component id="jLabel2" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="jSpinner2" alignment="1" min="-2" pref="70" max="-2" attributes="0"/>
|
||||||
|
<Component id="jSpinner1" alignment="1" min="-2" pref="70" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="15" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="jSpinner1" alignment="3" min="-2" pref="28" max="-2" attributes="0"/>
|
||||||
|
<Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="jSpinner2" alignment="3" min="-2" pref="28" max="-2" attributes="0"/>
|
||||||
|
<Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace pref="32" max="32767" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="jButton1" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="jButton2" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JSpinner" name="jSpinner1">
|
||||||
|
<Properties>
|
||||||
|
<Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
|
||||||
|
<SpinnerModel initial="0" maximum="10" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="jLabel1">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" value="Number of decimals for shares:"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JSpinner" name="jSpinner2">
|
||||||
|
<Properties>
|
||||||
|
<Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
|
||||||
|
<SpinnerModel initial="2" maximum="10" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="jLabel2">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" value="Number of decimals for money:"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="jButton1">
|
||||||
|
<Properties>
|
||||||
|
<Property name="mnemonic" type="int" value="99"/>
|
||||||
|
<Property name="text" type="java.lang.String" value="Cancel"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="jButton2">
|
||||||
|
<Properties>
|
||||||
|
<Property name="mnemonic" type="int" value="111"/>
|
||||||
|
<Property name="text" type="java.lang.String" value="Ok"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Form>
|
177
src/main/java/gui/EditExchangeDialog.java
Normal file
177
src/main/java/gui/EditExchangeDialog.java
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
/*
|
||||||
|
* 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 EditExchangeDialog extends javax.swing.JDialog {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates new form EditExchnageDialog
|
||||||
|
*/
|
||||||
|
public EditExchangeDialog(java.awt.Frame parent, boolean modal) {
|
||||||
|
super(parent, modal);
|
||||||
|
initComponents();
|
||||||
|
this.setLocationRelativeTo(parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
int showdialog(){
|
||||||
|
this.setVisible(true);
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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")
|
||||||
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
|
private void initComponents() {
|
||||||
|
|
||||||
|
jSpinner1 = new javax.swing.JSpinner();
|
||||||
|
jLabel1 = new javax.swing.JLabel();
|
||||||
|
jSpinner2 = new javax.swing.JSpinner();
|
||||||
|
jLabel2 = new javax.swing.JLabel();
|
||||||
|
jButton1 = new javax.swing.JButton();
|
||||||
|
jButton2 = new javax.swing.JButton();
|
||||||
|
|
||||||
|
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||||
|
setTitle("SeSim ExchangeSettings");
|
||||||
|
setMinimumSize(new java.awt.Dimension(300, 142));
|
||||||
|
setModal(true);
|
||||||
|
|
||||||
|
jSpinner1.setModel(new javax.swing.SpinnerNumberModel(0, 0, 10, 1));
|
||||||
|
|
||||||
|
jLabel1.setText("Number of decimals for shares:");
|
||||||
|
|
||||||
|
jSpinner2.setModel(new javax.swing.SpinnerNumberModel(2, 0, 10, 1));
|
||||||
|
|
||||||
|
jLabel2.setText("Number of decimals for money:");
|
||||||
|
|
||||||
|
jButton1.setMnemonic('c');
|
||||||
|
jButton1.setText("Cancel");
|
||||||
|
|
||||||
|
jButton2.setMnemonic('o');
|
||||||
|
jButton2.setText("Ok");
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
|
getContentPane().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()
|
||||||
|
.addGap(0, 0, Short.MAX_VALUE)
|
||||||
|
.addComponent(jButton2)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(jButton1))
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
|
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 212, Short.MAX_VALUE)
|
||||||
|
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(jSpinner2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(jSpinner1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE))))
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(15, 15, 15)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(jLabel1))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(jSpinner2, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(jLabel2))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 32, Short.MAX_VALUE)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(jButton1)
|
||||||
|
.addComponent(jButton2))
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
|
||||||
|
pack();
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param args the command line arguments
|
||||||
|
*/
|
||||||
|
public static void main(String args[]) {
|
||||||
|
/* Set the Nimbus look and feel */
|
||||||
|
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
|
||||||
|
/* 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(EditExchangeDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||||
|
} catch (InstantiationException ex) {
|
||||||
|
java.util.logging.Logger.getLogger(EditExchangeDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||||
|
} catch (IllegalAccessException ex) {
|
||||||
|
java.util.logging.Logger.getLogger(EditExchangeDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||||
|
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
|
||||||
|
java.util.logging.Logger.getLogger(EditExchangeDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
//</editor-fold>
|
||||||
|
//</editor-fold>
|
||||||
|
|
||||||
|
/* Create and display the dialog */
|
||||||
|
java.awt.EventQueue.invokeLater(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
EditExchangeDialog dialog = new EditExchangeDialog(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 javax.swing.JButton jButton1;
|
||||||
|
private javax.swing.JButton jButton2;
|
||||||
|
private javax.swing.JLabel jLabel1;
|
||||||
|
private javax.swing.JLabel jLabel2;
|
||||||
|
private javax.swing.JSpinner jSpinner1;
|
||||||
|
private javax.swing.JSpinner jSpinner2;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
}
|
@ -25,9 +25,12 @@
|
|||||||
*/
|
*/
|
||||||
package gui;
|
package gui;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import java.util.prefs.Preferences;
|
import java.util.prefs.Preferences;
|
||||||
import javax.swing.JComboBox;
|
import javax.swing.JComboBox;
|
||||||
@ -89,7 +92,7 @@ public class Globals {
|
|||||||
return cfgs;
|
return cfgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
static public JSONObject getStrategy(String name){
|
static public JSONObject getStrategy(String name) {
|
||||||
return getStrategies().getJSONObject(name);
|
return getStrategies().getJSONObject(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,4 +126,21 @@ public class Globals {
|
|||||||
prefs.put(STRATEGYPREFS, cfgs.toString());
|
prefs.put(STRATEGYPREFS, cfgs.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void saveFile(File f) {
|
||||||
|
|
||||||
|
JSONObject sobj = new JSONObject();
|
||||||
|
JSONArray traders = getTraders();
|
||||||
|
JSONObject strategies = getStrategies();
|
||||||
|
sobj.put("strategies", strategies);
|
||||||
|
sobj.put("traders", traders);
|
||||||
|
try {
|
||||||
|
PrintWriter out = new PrintWriter(f.getAbsolutePath());
|
||||||
|
out.print(sobj.toString(4));
|
||||||
|
out.close();
|
||||||
|
} catch (FileNotFoundException ex) {
|
||||||
|
Logger.getLogger(Globals.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,9 @@
|
|||||||
<Property name="mnemonic" type="int" value="111"/>
|
<Property name="mnemonic" type="int" value="111"/>
|
||||||
<Property name="text" type="java.lang.String" value="Open"/>
|
<Property name="text" type="java.lang.String" value="Open"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openMenuItemActionPerformed"/>
|
||||||
|
</Events>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem class="javax.swing.JMenuItem" name="saveMenuItem">
|
<MenuItem class="javax.swing.JMenuItem" name="saveMenuItem">
|
||||||
<Properties>
|
<Properties>
|
||||||
@ -44,6 +47,9 @@
|
|||||||
<Property name="text" type="java.lang.String" value="Save As ..."/>
|
<Property name="text" type="java.lang.String" value="Save As ..."/>
|
||||||
<Property name="displayedMnemonicIndex" type="int" value="5"/>
|
<Property name="displayedMnemonicIndex" type="int" value="5"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveAsMenuItemActionPerformed"/>
|
||||||
|
</Events>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem class="javax.swing.JMenuItem" name="exitMenuItem">
|
<MenuItem class="javax.swing.JMenuItem" name="exitMenuItem">
|
||||||
<Properties>
|
<Properties>
|
||||||
@ -54,15 +60,6 @@
|
|||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exitMenuItemActionPerformed"/>
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="exitMenuItemActionPerformed"/>
|
||||||
</Events>
|
</Events>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem1">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" value="Run"/>
|
|
||||||
<Property name="hideActionText" type="boolean" value="true"/>
|
|
||||||
</Properties>
|
|
||||||
<Events>
|
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem1ActionPerformed"/>
|
|
||||||
</Events>
|
|
||||||
</MenuItem>
|
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Menu>
|
</Menu>
|
||||||
<Menu class="javax.swing.JMenu" name="editMenu">
|
<Menu class="javax.swing.JMenu" name="editMenu">
|
||||||
@ -71,17 +68,14 @@
|
|||||||
<Property name="text" type="java.lang.String" value="Edit"/>
|
<Property name="text" type="java.lang.String" value="Edit"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
<SubComponents>
|
<SubComponents>
|
||||||
<MenuItem class="javax.swing.JMenuItem" name="cutMenuItem">
|
<MenuItem class="javax.swing.JMenuItem" name="editExchangeMenuItem">
|
||||||
<Properties>
|
|
||||||
<Property name="mnemonic" type="int" value="116"/>
|
|
||||||
<Property name="text" type="java.lang.String" value="Cut"/>
|
|
||||||
</Properties>
|
|
||||||
</MenuItem>
|
|
||||||
<MenuItem class="javax.swing.JMenuItem" name="copyMenuItem">
|
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="mnemonic" type="int" value="121"/>
|
<Property name="mnemonic" type="int" value="121"/>
|
||||||
<Property name="text" type="java.lang.String" value="Copy"/>
|
<Property name="text" type="java.lang.String" value="Exchange ..."/>
|
||||||
</Properties>
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="editExchangeMenuItemActionPerformed"/>
|
||||||
|
</Events>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator1">
|
<MenuItem class="javax.swing.JPopupMenu$Separator" name="jSeparator1">
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
@ -194,10 +188,10 @@
|
|||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="jToolBar1" pref="797" max="32767" attributes="0"/>
|
<Component id="jToolBar1" pref="798" max="32767" attributes="0"/>
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="orderBookPanel1" min="-2" max="-2" attributes="0"/>
|
<Component id="orderBookPanel1" min="-2" pref="233" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="jScrollPane1" max="32767" attributes="0"/>
|
<Component id="jScrollPane1" max="32767" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
package gui;
|
package gui;
|
||||||
|
|
||||||
import java.awt.Dialog;
|
import java.awt.Dialog;
|
||||||
|
import java.awt.Frame;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.logging.Handler;
|
import java.util.logging.Handler;
|
||||||
@ -34,6 +35,7 @@ import java.util.logging.Logger;
|
|||||||
import java.util.prefs.Preferences;
|
import java.util.prefs.Preferences;
|
||||||
import javax.swing.JFileChooser;
|
import javax.swing.JFileChooser;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
|
import javax.swing.filechooser.FileNameExtensionFilter;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import sesim.AutoTrader;
|
import sesim.AutoTrader;
|
||||||
@ -137,10 +139,8 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
|||||||
saveMenuItem = new javax.swing.JMenuItem();
|
saveMenuItem = new javax.swing.JMenuItem();
|
||||||
saveAsMenuItem = new javax.swing.JMenuItem();
|
saveAsMenuItem = new javax.swing.JMenuItem();
|
||||||
exitMenuItem = new javax.swing.JMenuItem();
|
exitMenuItem = new javax.swing.JMenuItem();
|
||||||
jMenuItem1 = new javax.swing.JMenuItem();
|
|
||||||
editMenu = new javax.swing.JMenu();
|
editMenu = new javax.swing.JMenu();
|
||||||
cutMenuItem = new javax.swing.JMenuItem();
|
editExchangeMenuItem = new javax.swing.JMenuItem();
|
||||||
copyMenuItem = new javax.swing.JMenuItem();
|
|
||||||
jSeparator1 = new javax.swing.JPopupMenu.Separator();
|
jSeparator1 = new javax.swing.JPopupMenu.Separator();
|
||||||
pasteMenuItem = new javax.swing.JMenuItem();
|
pasteMenuItem = new javax.swing.JMenuItem();
|
||||||
deleteMenuItem = new javax.swing.JMenuItem();
|
deleteMenuItem = new javax.swing.JMenuItem();
|
||||||
@ -208,6 +208,11 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
|||||||
|
|
||||||
openMenuItem.setMnemonic('o');
|
openMenuItem.setMnemonic('o');
|
||||||
openMenuItem.setText("Open");
|
openMenuItem.setText("Open");
|
||||||
|
openMenuItem.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
openMenuItemActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
fileMenu.add(openMenuItem);
|
fileMenu.add(openMenuItem);
|
||||||
|
|
||||||
saveMenuItem.setMnemonic('s');
|
saveMenuItem.setMnemonic('s');
|
||||||
@ -217,6 +222,11 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
|||||||
saveAsMenuItem.setMnemonic('a');
|
saveAsMenuItem.setMnemonic('a');
|
||||||
saveAsMenuItem.setText("Save As ...");
|
saveAsMenuItem.setText("Save As ...");
|
||||||
saveAsMenuItem.setDisplayedMnemonicIndex(5);
|
saveAsMenuItem.setDisplayedMnemonicIndex(5);
|
||||||
|
saveAsMenuItem.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
saveAsMenuItemActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
fileMenu.add(saveAsMenuItem);
|
fileMenu.add(saveAsMenuItem);
|
||||||
|
|
||||||
exitMenuItem.setMnemonic('x');
|
exitMenuItem.setMnemonic('x');
|
||||||
@ -228,27 +238,19 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
|||||||
});
|
});
|
||||||
fileMenu.add(exitMenuItem);
|
fileMenu.add(exitMenuItem);
|
||||||
|
|
||||||
jMenuItem1.setText("Run");
|
|
||||||
jMenuItem1.setHideActionText(true);
|
|
||||||
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
|
|
||||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
||||||
jMenuItem1ActionPerformed(evt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
fileMenu.add(jMenuItem1);
|
|
||||||
|
|
||||||
menuBar.add(fileMenu);
|
menuBar.add(fileMenu);
|
||||||
|
|
||||||
editMenu.setMnemonic('e');
|
editMenu.setMnemonic('e');
|
||||||
editMenu.setText("Edit");
|
editMenu.setText("Edit");
|
||||||
|
|
||||||
cutMenuItem.setMnemonic('t');
|
editExchangeMenuItem.setMnemonic('y');
|
||||||
cutMenuItem.setText("Cut");
|
editExchangeMenuItem.setText("Exchange ...");
|
||||||
editMenu.add(cutMenuItem);
|
editExchangeMenuItem.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
copyMenuItem.setMnemonic('y');
|
editExchangeMenuItemActionPerformed(evt);
|
||||||
copyMenuItem.setText("Copy");
|
}
|
||||||
editMenu.add(copyMenuItem);
|
});
|
||||||
|
editMenu.add(editExchangeMenuItem);
|
||||||
editMenu.add(jSeparator1);
|
editMenu.add(jSeparator1);
|
||||||
|
|
||||||
pasteMenuItem.setMnemonic('s');
|
pasteMenuItem.setMnemonic('s');
|
||||||
@ -325,10 +327,10 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
|||||||
getContentPane().setLayout(layout);
|
getContentPane().setLayout(layout);
|
||||||
layout.setHorizontalGroup(
|
layout.setHorizontalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 797, Short.MAX_VALUE)
|
.addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 798, Short.MAX_VALUE)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addContainerGap()
|
.addContainerGap()
|
||||||
.addComponent(orderBookPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(orderBookPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 233, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(jScrollPane1)
|
.addComponent(jScrollPane1)
|
||||||
.addContainerGap())
|
.addContainerGap())
|
||||||
@ -369,10 +371,6 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
|||||||
d.setVisible(rootPaneCheckingEnabled);
|
d.setVisible(rootPaneCheckingEnabled);
|
||||||
}//GEN-LAST:event_editPreferencesActionPerformed
|
}//GEN-LAST:event_editPreferencesActionPerformed
|
||||||
|
|
||||||
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
|
|
||||||
// TODO add your handling code here:
|
|
||||||
}//GEN-LAST:event_jMenuItem1ActionPerformed
|
|
||||||
|
|
||||||
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
|
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
|
||||||
TraderListDialog d = new TraderListDialog(this, false);
|
TraderListDialog d = new TraderListDialog(this, false);
|
||||||
d.setVisible(rootPaneCheckingEnabled);
|
d.setVisible(rootPaneCheckingEnabled);
|
||||||
@ -407,6 +405,50 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
|||||||
|
|
||||||
}//GEN-LAST:event_jMenuItem3ActionPerformed
|
}//GEN-LAST:event_jMenuItem3ActionPerformed
|
||||||
|
|
||||||
|
private void openMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_openMenuItemActionPerformed
|
||||||
|
|
||||||
|
}//GEN-LAST:event_openMenuItemActionPerformed
|
||||||
|
|
||||||
|
private void saveAsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveAsMenuItemActionPerformed
|
||||||
|
JFileChooser fc = new JFileChooser();
|
||||||
|
|
||||||
|
FileNameExtensionFilter filter = new FileNameExtensionFilter("SeSim Files","sesim");
|
||||||
|
fc.setFileFilter(filter);
|
||||||
|
|
||||||
|
if (fc.showSaveDialog(this.getParent()) != JFileChooser.APPROVE_OPTION){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
File f = fc.getSelectedFile();
|
||||||
|
|
||||||
|
String [] e = ((FileNameExtensionFilter)fc.getFileFilter()).getExtensions();
|
||||||
|
|
||||||
|
System.out.printf("Abs: %s\n", f.getAbsoluteFile());
|
||||||
|
|
||||||
|
String fn=f.getAbsolutePath();
|
||||||
|
|
||||||
|
|
||||||
|
if (!f.getAbsolutePath().endsWith(e[0])){
|
||||||
|
f = new File(f.getAbsolutePath()+"."+e[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Globals.saveFile(f);
|
||||||
|
|
||||||
|
|
||||||
|
System.out.printf("Sel File: %s \n",f.getAbsolutePath());
|
||||||
|
|
||||||
|
|
||||||
|
}//GEN-LAST:event_saveAsMenuItemActionPerformed
|
||||||
|
|
||||||
|
private void editExchangeMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editExchangeMenuItemActionPerformed
|
||||||
|
EditExchangeDialog ed=new EditExchangeDialog((Frame) this.getParent(),true);
|
||||||
|
int rc = ed.showdialog();
|
||||||
|
// System.out.printf("EDRET: %d\n",rc);
|
||||||
|
|
||||||
|
}//GEN-LAST:event_editExchangeMenuItemActionPerformed
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param args the command line arguments
|
* @param args the command line arguments
|
||||||
* @throws java.lang.IllegalAccessException
|
* @throws java.lang.IllegalAccessException
|
||||||
@ -460,9 +502,8 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
|||||||
private javax.swing.JMenuItem aboutMenuItem;
|
private javax.swing.JMenuItem aboutMenuItem;
|
||||||
private chart.Chart chart1;
|
private chart.Chart chart1;
|
||||||
private javax.swing.JMenuItem contentMenuItem;
|
private javax.swing.JMenuItem contentMenuItem;
|
||||||
private javax.swing.JMenuItem copyMenuItem;
|
|
||||||
private javax.swing.JMenuItem cutMenuItem;
|
|
||||||
private javax.swing.JMenuItem deleteMenuItem;
|
private javax.swing.JMenuItem deleteMenuItem;
|
||||||
|
private javax.swing.JMenuItem editExchangeMenuItem;
|
||||||
private javax.swing.JMenu editMenu;
|
private javax.swing.JMenu editMenu;
|
||||||
private javax.swing.JMenuItem editPreferences;
|
private javax.swing.JMenuItem editPreferences;
|
||||||
private javax.swing.JMenuItem exitMenuItem;
|
private javax.swing.JMenuItem exitMenuItem;
|
||||||
@ -470,7 +511,6 @@ public class NewMDIApplication extends javax.swing.JFrame {
|
|||||||
private javax.swing.JMenu helpMenu;
|
private javax.swing.JMenu helpMenu;
|
||||||
private javax.swing.JButton jButton2;
|
private javax.swing.JButton jButton2;
|
||||||
private javax.swing.JMenu jMenu1;
|
private javax.swing.JMenu jMenu1;
|
||||||
private javax.swing.JMenuItem jMenuItem1;
|
|
||||||
private javax.swing.JMenuItem jMenuItem2;
|
private javax.swing.JMenuItem jMenuItem2;
|
||||||
private javax.swing.JMenuItem jMenuItem3;
|
private javax.swing.JMenuItem jMenuItem3;
|
||||||
private javax.swing.JButton jRunButton;
|
private javax.swing.JButton jRunButton;
|
||||||
|
@ -33,6 +33,7 @@ import javax.swing.table.AbstractTableModel;
|
|||||||
import javax.swing.table.JTableHeader;
|
import javax.swing.table.JTableHeader;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.table.*;
|
import javax.swing.table.*;
|
||||||
|
|
||||||
@ -85,8 +86,12 @@ public abstract class OrderBook extends javax.swing.JPanel implements Exchange.B
|
|||||||
|
|
||||||
}
|
}
|
||||||
ArrayList newlist = getOrderBook();
|
ArrayList newlist = getOrderBook();
|
||||||
|
//this.orderBookScroller.scrollRectToVisible(this.orderBookList.getCellRect(this.orderBookList.getRowCount()-1, 0, true));
|
||||||
SwingUtilities.invokeLater(new Updater(this.model,newlist));
|
SwingUtilities.invokeLater(new Updater(this.model,newlist));
|
||||||
|
|
||||||
|
//this.scrollRectToVisible(this.getCellRect(rowIndex, vColIndex, false));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean getDesc() {
|
boolean getDesc() {
|
||||||
@ -144,8 +149,13 @@ public abstract class OrderBook extends javax.swing.JPanel implements Exchange.B
|
|||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DecimalFormat dfm = new DecimalFormat("0.00#");
|
||||||
|
DecimalFormat dfv = new DecimalFormat("0.#");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getValueAt(int r, int c) {
|
public Object getValueAt(int r, int c) {
|
||||||
|
|
||||||
|
|
||||||
Order o;
|
Order o;
|
||||||
|
|
||||||
int s = list.size();
|
int s = list.size();
|
||||||
@ -162,9 +172,12 @@ public abstract class OrderBook extends javax.swing.JPanel implements Exchange.B
|
|||||||
return String.format("#%06x", o.getID());
|
return String.format("#%06x", o.getID());
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
return String.format("%.4f",o.getLimit());
|
//return String.format("%.f",o.getLimit());
|
||||||
|
return dfm.format((double)o.getLimit());
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
return String.format("%.4f", o.getVolume());
|
return dfv.format((double)o.getVolume());
|
||||||
|
//return String.format("%f", o.getVolume());
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -6,13 +6,36 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
|||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author tube
|
* @author tube
|
||||||
*/
|
*/
|
||||||
public class Exchange { //extends Thread {
|
public class Exchange { //extends Thread {
|
||||||
|
|
||||||
|
private double money_df = 10000;
|
||||||
|
private double shares_df = 1;
|
||||||
|
|
||||||
|
public void setMoneyDecimals(int n) {
|
||||||
|
money_df = Math.pow(10, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSharesDecimals(int n) {
|
||||||
|
shares_df = Math.pow(10, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double roundToDecimals(double val,double f){
|
||||||
|
return Math.floor(val*f)/f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double roundShares(double shares){
|
||||||
|
return roundToDecimals(shares,shares_df);
|
||||||
|
}
|
||||||
|
public double roundMoney(double money){
|
||||||
|
return roundToDecimals(money,money_df);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public enum OrderType {
|
public enum OrderType {
|
||||||
BID, ASK
|
BID, ASK
|
||||||
}
|
}
|
||||||
@ -22,7 +45,7 @@ public class Exchange { //extends Thread {
|
|||||||
|
|
||||||
public Scheduler timer = new Scheduler();
|
public Scheduler timer = new Scheduler();
|
||||||
//public AutoTraderList traders = new AutoTraderList();
|
//public AutoTraderList traders = new AutoTraderList();
|
||||||
public ArrayList <AutoTrader> traders = new ArrayList();
|
public ArrayList<AutoTrader> traders = new ArrayList();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements a trading account
|
* Implements a trading account
|
||||||
@ -62,15 +85,12 @@ public class Exchange { //extends Thread {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void createTraders(JSONArray traderdefs) {
|
||||||
public void createTraders(JSONArray traderdefs){
|
for (int i = 0; i < traderdefs.length(); i++) {
|
||||||
for (int i=0; i<traderdefs.length(); i++){
|
|
||||||
JSONObject o = traderdefs.getJSONObject(i);
|
JSONObject o = traderdefs.getJSONObject(i);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// this.traders.add(randt);
|
// this.traders.add(randt);
|
||||||
// randt.setName("Bob");
|
// randt.setName("Bob");
|
||||||
// randt.start();
|
// randt.start();
|
||||||
@ -112,6 +132,11 @@ public class Exchange { //extends Thread {
|
|||||||
return d > 0 ? 1 : -1;
|
return d > 0 ? 1 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
d=right.initial_volume-left.initial_volume;
|
||||||
|
if (d!=0){
|
||||||
|
return d > 0 ? 1 : -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (left.id < right.id) {
|
if (left.id < right.id) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -126,7 +151,6 @@ public class Exchange { //extends Thread {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
HashMap<OrderType, SortedSet<Order>> order_books = new HashMap();
|
HashMap<OrderType, SortedSet<Order>> order_books = new HashMap();
|
||||||
|
|
||||||
IDGenerator order_id = new IDGenerator();
|
IDGenerator order_id = new IDGenerator();
|
||||||
@ -145,9 +169,9 @@ public class Exchange { //extends Thread {
|
|||||||
id = order_id.getNext();
|
id = order_id.getNext();
|
||||||
this.account = account;
|
this.account = account;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.limit = limit;
|
this.limit = roundMoney(limit);
|
||||||
this.volume = volume;
|
this.volume = roundShares(volume);
|
||||||
this.initial_volume = volume;
|
this.initial_volume = this.volume;
|
||||||
this.created = System.currentTimeMillis();
|
this.created = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,23 +219,17 @@ public class Exchange { //extends Thread {
|
|||||||
order_books.put(type, new TreeSet(new OrderComparator(type)));
|
order_books.put(type, new TreeSet(new OrderComparator(type)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*public interface TimerEvent {
|
||||||
|
|
||||||
|
|
||||||
/*public interface TimerEvent {
|
|
||||||
|
|
||||||
long timerEvent();
|
long timerEvent();
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
void start() {
|
||||||
void start(){
|
|
||||||
timer.start();
|
timer.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class BidBook extends TreeSet {
|
class BidBook extends TreeSet {
|
||||||
|
|
||||||
TreeSet t = new TreeSet();
|
TreeSet t = new TreeSet();
|
||||||
@ -274,7 +292,6 @@ public class Exchange { //extends Thread {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Class to describe an executed order
|
// Class to describe an executed order
|
||||||
// QuoteReceiver has to be implemented by objects that wants
|
// QuoteReceiver has to be implemented by objects that wants
|
||||||
// to receive quote updates
|
// to receive quote updates
|
||||||
@ -347,13 +364,8 @@ public class Exchange { //extends Thread {
|
|||||||
double lastprice = 100.0;
|
double lastprice = 100.0;
|
||||||
long lastsvolume;
|
long lastsvolume;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private final Locker tradelock = new Locker();
|
private final Locker tradelock = new Locker();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public ArrayList<Order> getOrderBook(OrderType type, int depth) {
|
public ArrayList<Order> getOrderBook(OrderType type, int depth) {
|
||||||
|
|
||||||
SortedSet<Order> book = order_books.get(type);
|
SortedSet<Order> book = order_books.get(type);
|
||||||
@ -376,9 +388,6 @@ public class Exchange { //extends Thread {
|
|||||||
return this.quoteHistory.last();
|
return this.quoteHistory.last();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void transferMoneyAndShares(Account src, Account dst, double money, double shares) {
|
private void transferMoneyAndShares(Account src, Account dst, double money, double shares) {
|
||||||
src.money -= money;
|
src.money -= money;
|
||||||
dst.money += money;
|
dst.money += money;
|
||||||
@ -417,21 +426,19 @@ public class Exchange { //extends Thread {
|
|||||||
*
|
*
|
||||||
* @param o
|
* @param o
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
long nextQuoteId = 0;
|
long nextQuoteId = 0;
|
||||||
|
|
||||||
private void removeOrderIfExecuted(Order o) {
|
private void removeOrderIfExecuted(Order o) {
|
||||||
if (o.volume != 0) {
|
if (o.volume != 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
o.account.orders.remove(o.id);
|
o.account.orders.remove(o.id);
|
||||||
|
|
||||||
SortedSet book = order_books.get(o.type);
|
SortedSet book = order_books.get(o.type);
|
||||||
|
|
||||||
book.remove(book.first());
|
book.remove(book.first());
|
||||||
|
|
||||||
//pollFirst();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -450,6 +457,9 @@ public class Exchange { //extends Thread {
|
|||||||
Order b = bid.first();
|
Order b = bid.first();
|
||||||
Order a = ask.first();
|
Order a = ask.first();
|
||||||
|
|
||||||
|
//System.out.printf("In %f (%f) < %f (%f)\n",b.limit,b.volume,a.limit,a.volume);
|
||||||
|
|
||||||
|
|
||||||
if (b.limit < a.limit) {
|
if (b.limit < a.limit) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -458,6 +468,8 @@ public class Exchange { //extends Thread {
|
|||||||
double price = b.id < a.id ? b.limit : a.limit;
|
double price = b.id < a.id ? b.limit : a.limit;
|
||||||
double volume = b.volume >= a.volume ? a.volume : b.volume;
|
double volume = b.volume >= a.volume ? a.volume : b.volume;
|
||||||
|
|
||||||
|
//System.out.printf("Price %f Vol %f\n", price,volume);
|
||||||
|
|
||||||
// Transfer money and shares
|
// Transfer money and shares
|
||||||
transferMoneyAndShares(b.account, a.account, volume * price, -volume);
|
transferMoneyAndShares(b.account, a.account, volume * price, -volume);
|
||||||
//System.out.print("Transfer Shares was called with volume "+volume+"\n");
|
//System.out.print("Transfer Shares was called with volume "+volume+"\n");
|
||||||
@ -465,6 +477,8 @@ public class Exchange { //extends Thread {
|
|||||||
b.volume -= volume;
|
b.volume -= volume;
|
||||||
a.volume -= volume;
|
a.volume -= volume;
|
||||||
|
|
||||||
|
//System.out.printf("In %f (%f) < %f (%f)\n",b.limit,b.volume,a.limit,a.volume);
|
||||||
|
|
||||||
volume_total += volume;
|
volume_total += volume;
|
||||||
money_total += price * volume;
|
money_total += price * volume;
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ public class RandomTrader extends AutoTrader {
|
|||||||
public long timerTask() {
|
public long timerTask() {
|
||||||
sesim.Exchange.Account a = se.getAccount(account_id);
|
sesim.Exchange.Account a = se.getAccount(account_id);
|
||||||
long rc = this.doTrade();
|
long rc = this.doTrade();
|
||||||
return rc /1;
|
return rc /100;
|
||||||
|
|
||||||
// return this.event();
|
// return this.event();
|
||||||
}
|
}
|
||||||
@ -84,7 +84,7 @@ public class RandomTrader extends AutoTrader {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double start = 1.1;
|
double start = 0.1;
|
||||||
//Timer timer = new Timer();
|
//Timer timer = new Timer();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -98,21 +98,20 @@ public class Test {
|
|||||||
*/
|
*/
|
||||||
public static void main(String[] args) throws InterruptedException, MalformedURLException, InstantiationException, IllegalAccessException, IOException {
|
public static void main(String[] args) throws InterruptedException, MalformedURLException, InstantiationException, IllegalAccessException, IOException {
|
||||||
|
|
||||||
Float x0;
|
Double x = 3.1415926;
|
||||||
x0 = 3.1f;
|
|
||||||
|
|
||||||
int x1; // = new Integer(0);
|
Double r = Math.floor(x*100.0)/100.0;
|
||||||
|
|
||||||
x1 = 4;
|
|
||||||
|
|
||||||
//x1 = (Integer)(Number)x0;
|
|
||||||
Double z = 0.99;
|
|
||||||
// to(x0,z);
|
|
||||||
|
|
||||||
System.out.printf("Erg: %f\n", x0);
|
System.out.print(r);
|
||||||
|
System.out.println();
|
||||||
|
|
||||||
|
Double p = Math.pow(10, 5);
|
||||||
|
System.out.print(p);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
System.out.printf("Hello world\n", "");
|
|
||||||
System.exit(0);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user