|
|
@ -5,7 +5,6 @@ import com.fr.base.ScreenResolution; |
|
|
|
import com.fr.base.chart.BaseChart; |
|
|
|
import com.fr.base.chart.BaseChart; |
|
|
|
import com.fr.base.chart.BaseChartCollection; |
|
|
|
import com.fr.base.chart.BaseChartCollection; |
|
|
|
import com.fr.base.chart.BaseChartGlyph; |
|
|
|
import com.fr.base.chart.BaseChartGlyph; |
|
|
|
import com.fr.base.chart.chartdata.ChartDataEvent; |
|
|
|
|
|
|
|
import com.fr.chart.base.ChartConstants; |
|
|
|
import com.fr.chart.base.ChartConstants; |
|
|
|
import com.fr.chart.chartattr.Axis; |
|
|
|
import com.fr.chart.chartattr.Axis; |
|
|
|
import com.fr.chart.chartattr.Chart; |
|
|
|
import com.fr.chart.chartattr.Chart; |
|
|
@ -32,7 +31,7 @@ import java.util.List; |
|
|
|
* 类说明: 事件说明: 工具栏编辑--> 是刷新ChartComponent 然后响应整个设计块的改变事件 |
|
|
|
* 类说明: 事件说明: 工具栏编辑--> 是刷新ChartComponent 然后响应整个设计块的改变事件 |
|
|
|
右键编辑 ---> 刷新ChartCompment 刷新对应的工具栏(加入事件) 然后响应整个设计块的改变事件 |
|
|
|
右键编辑 ---> 刷新ChartCompment 刷新对应的工具栏(加入事件) 然后响应整个设计块的改变事件 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public class ChartComponent extends MiddleChartComponent implements MouseListener, MouseMotionListener, ChartDataEvent { |
|
|
|
public class ChartComponent extends MiddleChartComponent implements MouseListener, MouseMotionListener{ |
|
|
|
private static final long serialVersionUID = 744164838619052097L; |
|
|
|
private static final long serialVersionUID = 744164838619052097L; |
|
|
|
private final List<PropertyChangeListener> listeners = new ArrayList<PropertyChangeListener>(); |
|
|
|
private final List<PropertyChangeListener> listeners = new ArrayList<PropertyChangeListener>(); |
|
|
|
private ChartCollection chartCollection4Design; |
|
|
|
private ChartCollection chartCollection4Design; |
|
|
@ -46,6 +45,8 @@ public class ChartComponent extends MiddleChartComponent implements MouseListene |
|
|
|
|
|
|
|
|
|
|
|
private boolean supportEdit = true; |
|
|
|
private boolean supportEdit = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private ChartGlyphDrawEvent glyphDrawEvent = null; |
|
|
|
|
|
|
|
|
|
|
|
private final int[] resizeCursors = new int[]{ |
|
|
|
private final int[] resizeCursors = new int[]{ |
|
|
|
Cursor.NW_RESIZE_CURSOR, Cursor.N_RESIZE_CURSOR, Cursor.NE_RESIZE_CURSOR, |
|
|
|
Cursor.NW_RESIZE_CURSOR, Cursor.N_RESIZE_CURSOR, Cursor.NE_RESIZE_CURSOR, |
|
|
|
Cursor.E_RESIZE_CURSOR, Cursor.W_RESIZE_CURSOR, |
|
|
|
Cursor.E_RESIZE_CURSOR, Cursor.W_RESIZE_CURSOR, |
|
|
@ -182,8 +183,9 @@ public class ChartComponent extends MiddleChartComponent implements MouseListene |
|
|
|
// 反锯齿
|
|
|
|
// 反锯齿
|
|
|
|
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); |
|
|
|
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); |
|
|
|
|
|
|
|
|
|
|
|
drawChartGlyph(g2d); |
|
|
|
//画图
|
|
|
|
|
|
|
|
drawImage(g2d); |
|
|
|
|
|
|
|
|
|
|
|
ActiveGlyph ag = this.getActiveGlyph(); |
|
|
|
ActiveGlyph ag = this.getActiveGlyph(); |
|
|
|
if (ag != null) { |
|
|
|
if (ag != null) { |
|
|
|
ag.paint4ActiveGlyph(g2d, chartGlyph); |
|
|
|
ag.paint4ActiveGlyph(g2d, chartGlyph); |
|
|
@ -197,6 +199,13 @@ public class ChartComponent extends MiddleChartComponent implements MouseListene |
|
|
|
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, lastHint); |
|
|
|
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, lastHint); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* 事件结束后,释放事件 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
public void deleteDrawEvent(){ |
|
|
|
|
|
|
|
glyphDrawEvent = null; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
/* |
|
|
|
* ChartGlyph改变大小的时候做的操作 |
|
|
|
* ChartGlyph改变大小的时候做的操作 |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -205,6 +214,7 @@ public class ChartComponent extends MiddleChartComponent implements MouseListene |
|
|
|
this.editingChart = this.chartCollection4Design.getSelectedChart();// kunsnat: 切换选中时 同步切换Plot
|
|
|
|
this.editingChart = this.chartCollection4Design.getSelectedChart();// kunsnat: 切换选中时 同步切换Plot
|
|
|
|
if (editingChart != null) { |
|
|
|
if (editingChart != null) { |
|
|
|
this.chartGlyph = editingChart.createGlyph(editingChart.defaultChartData()); |
|
|
|
this.chartGlyph = editingChart.createGlyph(editingChart.defaultChartData()); |
|
|
|
|
|
|
|
//注册ChartData监听器
|
|
|
|
this.activeGlyph = ActiveGlyphFactory.createActiveGlyph(this, chartGlyph); |
|
|
|
this.activeGlyph = ActiveGlyphFactory.createActiveGlyph(this, chartGlyph); |
|
|
|
} |
|
|
|
} |
|
|
|
this.chartWidth = d.width - ChartConstants.PREGAP4BOUNDS; |
|
|
|
this.chartWidth = d.width - ChartConstants.PREGAP4BOUNDS; |
|
|
@ -303,7 +313,16 @@ public class ChartComponent extends MiddleChartComponent implements MouseListene |
|
|
|
return chartGlyph == null || chartWidth != this.getBounds().width || chartHeight != this.getBounds().height; |
|
|
|
return chartGlyph == null || chartWidth != this.getBounds().width || chartHeight != this.getBounds().height; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void drawChartGlyph(Graphics2D g2d) { |
|
|
|
private void drawImage(Graphics2D g2d){ |
|
|
|
|
|
|
|
//画图事件处理
|
|
|
|
|
|
|
|
glyphDrawEvent = new ChartGlyphDrawEvent(this, g2d); |
|
|
|
|
|
|
|
//注册事件执行者
|
|
|
|
|
|
|
|
chartGlyph.addChartDataEvent(glyphDrawEvent); |
|
|
|
|
|
|
|
//处理画图事件
|
|
|
|
|
|
|
|
glyphDrawEvent.run(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void drawChartGlyph(Graphics2D g2d) { |
|
|
|
if (chartGlyph != null) { |
|
|
|
if (chartGlyph != null) { |
|
|
|
if (chartGlyph.isRoundBorder()) { |
|
|
|
if (chartGlyph.isRoundBorder()) { |
|
|
|
chartGlyph.setBounds(new RoundRectangle2D.Double(0, 0, chartWidth, chartHeight, 10, 10)); |
|
|
|
chartGlyph.setBounds(new RoundRectangle2D.Double(0, 0, chartWidth, chartHeight, 10, 10)); |
|
|
@ -313,21 +332,8 @@ public class ChartComponent extends MiddleChartComponent implements MouseListene |
|
|
|
// chartGlyph.draw(g2d, ScreenResolution.getScreenResolution());
|
|
|
|
// chartGlyph.draw(g2d, ScreenResolution.getScreenResolution());
|
|
|
|
//不直接画chartGlyph而画image的原因是表单的柱形图会溢出表单
|
|
|
|
//不直接画chartGlyph而画image的原因是表单的柱形图会溢出表单
|
|
|
|
//其他图都ok,其实感觉应该是柱形图画的不对,应该也可以改那边
|
|
|
|
//其他图都ok,其实感觉应该是柱形图画的不对,应该也可以改那边
|
|
|
|
//注册获取图片后续事件
|
|
|
|
|
|
|
|
registerChartDataEvent(chartGlyph); |
|
|
|
|
|
|
|
Image chartImage = chartGlyph.toImage(chartWidth,chartHeight,ScreenResolution.getScreenResolution()); |
|
|
|
Image chartImage = chartGlyph.toImage(chartWidth,chartHeight,ScreenResolution.getScreenResolution()); |
|
|
|
g2d.drawImage(chartImage, 0, 0, null); |
|
|
|
g2d.drawImage(chartImage, 0, 0, null); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void registerChartDataEvent(BaseChartGlyph glyph) { |
|
|
|
|
|
|
|
glyph.addChartDataEvent(this); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void callback() { |
|
|
|
|
|
|
|
this.repaint(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |