Mouswheel is working

This commit is contained in:
7u83 2017-10-07 09:36:41 +02:00
parent f7b56294e9
commit d472935317
5 changed files with 82 additions and 35 deletions

View File

@ -1,4 +1,4 @@
#Sat, 07 Oct 2017 07:36:14 +0200 #Sat, 07 Oct 2017 09:35:06 +0200
annotation.processing.enabled=true annotation.processing.enabled=true
annotation.processing.enabled.in.editor=false annotation.processing.enabled.in.editor=false
annotation.processing.processors.list= annotation.processing.processors.list=

View File

@ -32,12 +32,12 @@ import javax.swing.JScrollBar;
* @author 7u83 <7u83@mail.ru> * @author 7u83 <7u83@mail.ru>
*/ */
public class ChartDef { public class ChartDef {
// JScrollBar x_scrollbar=null;
/** /**
* width of an x unit in em * width of an x unit in em
*/ */
public double x_unit_width=4.0; public double x_unit_width=1.0;
ChartDef(){ ChartDef(){

View File

@ -5,19 +5,17 @@ import chart.painter.XLegendPainter;
import gui.Globals; import gui.Globals;
import java.awt.Cursor; import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Point; import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.AdjustmentEvent; import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener; import java.awt.event.AdjustmentListener;
import java.awt.geom.AffineTransform;
import java.util.ArrayList; import java.util.ArrayList;
import javax.swing.JScrollBar; import javax.swing.JScrollBar;
import javax.swing.JViewport;
import javax.swing.Scrollable;
import sesim.Exchange.QuoteReceiver;
import sesim.OHLCData; import sesim.OHLCData;
import sesim.OHLCDataItem; import sesim.OHLCDataItem;
import sesim.Quote; import sesim.Quote;
@ -29,6 +27,8 @@ import sesim.Quote;
public class ChartPanel extends javax.swing.JPanel implements AdjustmentListener { public class ChartPanel extends javax.swing.JPanel implements AdjustmentListener {
public JScrollBar x_scrollbar=null; public JScrollBar x_scrollbar=null;
ChartDef chartDef;
/** /**
* Creates new form Chart1 * Creates new form Chart1
@ -40,6 +40,10 @@ public class ChartPanel extends javax.swing.JPanel implements AdjustmentListener
} }
/**
* Add a horizontal scrollbar
* @param x_scrollbar
*/
public void setXSCrollBar(JScrollBar x_scrollbar){ public void setXSCrollBar(JScrollBar x_scrollbar){
if (this.x_scrollbar!=null) if (this.x_scrollbar!=null)
this.x_scrollbar.removeAdjustmentListener(this); this.x_scrollbar.removeAdjustmentListener(this);
@ -48,6 +52,10 @@ public class ChartPanel extends javax.swing.JPanel implements AdjustmentListener
this.x_scrollbar.addAdjustmentListener(this); this.x_scrollbar.addAdjustmentListener(this);
} }
public void setChartDef(ChartDef def){
chartDef = def;
}
private ArrayList<ChartPainter> chartPainters = new ArrayList<>(); private ArrayList<ChartPainter> chartPainters = new ArrayList<>();
/** /**
@ -72,12 +80,12 @@ public class ChartPanel extends javax.swing.JPanel implements AdjustmentListener
XLegendPainter p = new XLegendPainter(); XLegendPainter p = new XLegendPainter();
data = Globals.se.getOHLCdata(60000 * 60); data = Globals.se.getOHLCdata(60000 * 60);
ChartDef def = new ChartDef(); // ChartDef def = new ChartDef();
def.x_unit_width = 1.0; // def.x_unit_width = 1.0;
// def.x_scrollbar = x_scrollbar; // def.x_scrollbar = x_scrollbar;
for (ChartPainter painter : chartPainters) { for (ChartPainter painter : chartPainters) {
painter.drawChart((Graphics2D) g, this, def); painter.drawChart((Graphics2D) g, this, chartDef);
} }
} }
@ -119,7 +127,7 @@ public class ChartPanel extends javax.swing.JPanel implements AdjustmentListener
}//GEN-LAST:event_formMouseMoved }//GEN-LAST:event_formMouseMoved
// @Override @Override
public void adjustmentValueChanged(AdjustmentEvent e) { public void adjustmentValueChanged(AdjustmentEvent e) {
this.repaint(); this.repaint();

View File

@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> <Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
<Events>
<EventHandler event="mouseWheelMoved" listener="java.awt.event.MouseWheelListener" parameters="java.awt.event.MouseWheelEvent" handler="formMouseWheelMoved"/>
</Events>
<AuxValues> <AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
@ -55,8 +58,8 @@
<Properties> <Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo"> <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
<LineBorder roundedCorners="true"> <LineBorder>
<Color PropertyName="color" blue="99" green="0" red="99" type="rgb"/> <Color PropertyName="color" blue="cc" green="cc" red="cc" type="rgb"/>
</LineBorder> </LineBorder>
</Border> </Border>
</Property> </Property>
@ -81,21 +84,19 @@
<Container class="chart.ChartPanel" name="yLegend"> <Container class="chart.ChartPanel" name="yLegend">
<Properties> <Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo"> <Border info="null"/>
<LineBorder roundedCorners="true"/>
</Border>
</Property> </Property>
</Properties> </Properties>
<Layout> <Layout>
<DimensionLayout dim="0"> <DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="95" max="32767" attributes="0"/> <EmptySpace min="0" pref="83" max="32767" attributes="0"/>
</Group> </Group>
</DimensionLayout> </DimensionLayout>
<DimensionLayout dim="1"> <DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="253" max="32767" attributes="0"/> <EmptySpace min="0" pref="326" max="32767" attributes="0"/>
</Group> </Group>
</DimensionLayout> </DimensionLayout>
</Layout> </Layout>
@ -103,21 +104,19 @@
<Container class="chart.ChartPanel" name="xLegend"> <Container class="chart.ChartPanel" name="xLegend">
<Properties> <Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor"> <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo"> <Border info="null"/>
<LineBorder roundedCorners="true"/>
</Border>
</Property> </Property>
</Properties> </Properties>
<Layout> <Layout>
<DimensionLayout dim="0"> <DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="520" max="32767" attributes="0"/> <EmptySpace min="0" pref="576" max="32767" attributes="0"/>
</Group> </Group>
</DimensionLayout> </DimensionLayout>
<DimensionLayout dim="1"> <DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="73" max="32767" attributes="0"/> <EmptySpace min="0" pref="61" max="32767" attributes="0"/>
</Group> </Group>
</DimensionLayout> </DimensionLayout>
</Layout> </Layout>
@ -126,6 +125,9 @@
<Properties> <Properties>
<Property name="orientation" type="int" value="0"/> <Property name="orientation" type="int" value="0"/>
</Properties> </Properties>
<Events>
<EventHandler event="adjustmentValueChanged" listener="java.awt.event.AdjustmentListener" parameters="java.awt.event.AdjustmentEvent" handler="xScrollBarAdjustmentValueChanged"/>
</Events>
</Component> </Component>
</SubComponents> </SubComponents>
</Form> </Form>

View File

@ -41,14 +41,16 @@ import sesim.Quote;
*/ */
public class MasterChart extends javax.swing.JPanel implements QuoteReceiver, ChartPainter.DataProvider { public class MasterChart extends javax.swing.JPanel implements QuoteReceiver, ChartPainter.DataProvider {
private ChartDef chartDef;
/** /**
* Creates new form MasterChart * Creates new form MasterChart
*/ */
public MasterChart() { public MasterChart() {
initComponents(); initComponents();
ChartDef def = new ChartDef(); chartDef = new ChartDef();
def.x_unit_width = 1.0; chartDef.x_unit_width = 3.0;
if (Globals.se == null) { if (Globals.se == null) {
return; return;
@ -56,6 +58,11 @@ public class MasterChart extends javax.swing.JPanel implements QuoteReceiver, Ch
Globals.se.addQuoteReceiver(this); Globals.se.addQuoteReceiver(this);
this.chart.setChartDef(chartDef);
this.xLegend.setChartDef(chartDef);
this.yLegend.setChartDef(chartDef);
ChartPainter p = new CandleStickChartPainter(); ChartPainter p = new CandleStickChartPainter();
this.xScrollBar.setMaximum(0); this.xScrollBar.setMaximum(0);
@ -96,7 +103,13 @@ public class MasterChart extends javax.swing.JPanel implements QuoteReceiver, Ch
xLegend = new chart.ChartPanel(); xLegend = new chart.ChartPanel();
xScrollBar = new javax.swing.JScrollBar(); xScrollBar = new javax.swing.JScrollBar();
chart.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 0, 153), 1, true)); addMouseWheelListener(new java.awt.event.MouseWheelListener() {
public void mouseWheelMoved(java.awt.event.MouseWheelEvent evt) {
formMouseWheelMoved(evt);
}
});
chart.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(204, 204, 204)));
chart.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { chart.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseMoved(java.awt.event.MouseEvent evt) { public void mouseMoved(java.awt.event.MouseEvent evt) {
chartMouseMoved(evt); chartMouseMoved(evt);
@ -114,33 +127,38 @@ public class MasterChart extends javax.swing.JPanel implements QuoteReceiver, Ch
.addGap(0, 0, Short.MAX_VALUE) .addGap(0, 0, Short.MAX_VALUE)
); );
yLegend.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true)); yLegend.setBorder(null);
javax.swing.GroupLayout yLegendLayout = new javax.swing.GroupLayout(yLegend); javax.swing.GroupLayout yLegendLayout = new javax.swing.GroupLayout(yLegend);
yLegend.setLayout(yLegendLayout); yLegend.setLayout(yLegendLayout);
yLegendLayout.setHorizontalGroup( yLegendLayout.setHorizontalGroup(
yLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) yLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 95, Short.MAX_VALUE) .addGap(0, 83, Short.MAX_VALUE)
); );
yLegendLayout.setVerticalGroup( yLegendLayout.setVerticalGroup(
yLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) yLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 253, Short.MAX_VALUE) .addGap(0, 326, Short.MAX_VALUE)
); );
xLegend.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true)); xLegend.setBorder(null);
javax.swing.GroupLayout xLegendLayout = new javax.swing.GroupLayout(xLegend); javax.swing.GroupLayout xLegendLayout = new javax.swing.GroupLayout(xLegend);
xLegend.setLayout(xLegendLayout); xLegend.setLayout(xLegendLayout);
xLegendLayout.setHorizontalGroup( xLegendLayout.setHorizontalGroup(
xLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) xLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 520, Short.MAX_VALUE) .addGap(0, 576, Short.MAX_VALUE)
); );
xLegendLayout.setVerticalGroup( xLegendLayout.setVerticalGroup(
xLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) xLegendLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 73, Short.MAX_VALUE) .addGap(0, 61, Short.MAX_VALUE)
); );
xScrollBar.setOrientation(javax.swing.JScrollBar.HORIZONTAL); xScrollBar.setOrientation(javax.swing.JScrollBar.HORIZONTAL);
xScrollBar.addAdjustmentListener(new java.awt.event.AdjustmentListener() {
public void adjustmentValueChanged(java.awt.event.AdjustmentEvent evt) {
xScrollBarAdjustmentValueChanged(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout); this.setLayout(layout);
@ -177,6 +195,25 @@ public class MasterChart extends javax.swing.JPanel implements QuoteReceiver, Ch
}//GEN-LAST:event_chartMouseMoved }//GEN-LAST:event_chartMouseMoved
private void formMouseWheelMoved(java.awt.event.MouseWheelEvent evt) {//GEN-FIRST:event_formMouseWheelMoved
double n = evt.getPreciseWheelRotation() * (-1.0);
if (n < 0) {
if (chartDef.x_unit_width > 0.3) {
chartDef.x_unit_width += 0.1 * n;
}
} else {
chartDef.x_unit_width += 0.1 * n;
}
this.invalidate();
this.repaint();
}//GEN-LAST:event_formMouseWheelMoved
private void xScrollBarAdjustmentValueChanged(java.awt.event.AdjustmentEvent evt) {//GEN-FIRST:event_xScrollBarAdjustmentValueChanged
repaint();
}//GEN-LAST:event_xScrollBarAdjustmentValueChanged
// Variables declaration - do not modify//GEN-BEGIN:variables // Variables declaration - do not modify//GEN-BEGIN:variables
private chart.ChartPanel chart; private chart.ChartPanel chart;