diff --git a/src/chart/ChartPanel.form b/src/chart/ChartPanel.form
new file mode 100644
index 0000000..9312e7a
--- /dev/null
+++ b/src/chart/ChartPanel.form
@@ -0,0 +1,28 @@
+
+
+
diff --git a/src/chart/ChartPanel.java b/src/chart/ChartPanel.java
new file mode 100644
index 0000000..144d869
--- /dev/null
+++ b/src/chart/ChartPanel.java
@@ -0,0 +1,126 @@
+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 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);
+ }
+
+
+ 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() {
+
+ 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
+}