package chart; import gui.Globals; import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; 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 Chart1 extends javax.swing.JPanel implements QuoteReceiver, AdjustmentListener { public JScrollBar xbar; /** * Creates new form Chart1 */ public Chart1() { 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); } ArrayList chartPainters = new ArrayList<>(); /** * * @param p */ public void addChartPainter(ChartPainter p){ chartPainters.add(p); } private void drawChart(Graphics2D g) { JViewport vp = new JViewport(); // if (Globals.se==null) // return; Dimension d = new Dimension(200, 200); setPreferredSize(d); g.setClip(10, 10, 800, 200); g.setColor(Color.red); g.drawLine(0, 0, 8000, 610); if (Globals.se == null) { return; } revalidate(); System.out.printf("Setting pref size\n"); OHLCData data = Globals.se.getOHLCdata(60000); /* int first_bar = 0; int last_bar = data.size(); OHLCDataItem prev = null; for (int i = first_bar; i < last_bar; i++) { OHLCDataItem di = data.get(i); int x_unit_width = 1; int x = (int) (i * em_width * x_unit_width); g.setColor(Color.red); g.drawLine(x, 0, x, 10); //em_width; //this.drawItem(ctx, (int) (x - em_width * x_unit_width), x, prev, di); //, ctx.scaling, data.getMin()); // myi++; prev = di; } */ } 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() { 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 @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) { System.out.printf("Adjustemntlistener called %d\n", xbar.getValue()); this.repaint(); } // Variables declaration - do not modify//GEN-BEGIN:variables // End of variables declaration//GEN-END:variables }