package chart; import gui.Globals; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.AdjustmentEvent; import java.awt.event.AdjustmentListener; import java.awt.geom.AffineTransform; import java.util.ArrayList; import javax.swing.JScrollBar; import javax.swing.JViewport; import javax.swing.Scrollable; import sesim.Exchange.QuoteReceiver; import sesim.OHLCData; import sesim.OHLCDataItem; import sesim.Quote; /** * * @author 7u83 <7u83@mail.ru> */ public class ChartPanel extends javax.swing.JPanel implements QuoteReceiver, AdjustmentListener { public JScrollBar xbar; /** * Creates new form Chart1 */ public ChartPanel() { initComponents(); System.out.printf("Now cursor\n"); setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); if (Globals.se == null) { return; } setSize(new Dimension(9000, 500)); Globals.se.addQuoteReceiver(this); repaint(); } private ArrayList chartPainters = new ArrayList<>(); /** * * @param p */ public void addChartPainter(ChartPainter p){ chartPainters.add(p); } OHLCData data; @Override protected void paintComponent(Graphics g) { super.paintComponent(g); if (Globals.se==null) return; //this.xbar.setMaximum(994000); XLegendChartPainter p = new XLegendChartPainter(); data = Globals.se.getOHLCdata(60000*60); ChartDef def = new ChartDef(); def.x_unit_width = 1.0; def.x_scrollbar=xbar; for (ChartPainter painter: chartPainters){ painter.drawChart((Graphics2D)g, xbar, data, this, def); } } /** * 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() { addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseMoved(java.awt.event.MouseEvent evt) { formMouseMoved(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 498, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 341, Short.MAX_VALUE) ); }// //GEN-END:initComponents Point mouse=null; private void formMouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_formMouseMoved // TODO add your handling code here: Point p = evt.getPoint(); mouse = p; System.out.printf("Point %d %d\n",p.x,p.y); repaint(); }//GEN-LAST:event_formMouseMoved @Override public void UpdateQuote(Quote q) { int s = data.size(); // System.out.printf("Data size %d",s); // xbar.setMaximum(data.size()); repaint(); } @Override public void adjustmentValueChanged(AdjustmentEvent e) { this.repaint(); } // Variables declaration - do not modify//GEN-BEGIN:variables // End of variables declaration//GEN-END:variables }