package com.teechart;
|
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseListener;
|
import java.awt.event.MouseMotionListener;
|
import java.util.ArrayList;
|
import java.util.Calendar;
|
|
import javax.swing.JMenuItem;
|
import javax.swing.JPopupMenu;
|
|
import com.Com;
|
import com.dev.ntm.BattTestData;
|
import com.dev.ntm.ntm_page_datamanage_chart;
|
import com.steema.teechart.TChart;
|
import com.steema.teechart.drawing.Color;
|
import com.steema.teechart.drawing.DashStyle;
|
import com.steema.teechart.events.SeriesMouseEvent;
|
import com.steema.teechart.events.SeriesMouseListener;
|
import com.steema.teechart.events.TextResolver;
|
import com.steema.teechart.legend.LegendStyle;
|
import com.steema.teechart.styles.Line;
|
import com.steema.teechart.styles.MarksStyle;
|
import com.steema.teechart.styles.PointerStyle;
|
import com.steema.teechart.tools.MarksTip;
|
import com.steema.teechart.tools.MarksTipMouseAction;
|
|
/********************************* Tee Line Chart For Vol ***************************************/
|
public class TMultVolLineChart extends TChart
|
{
|
private static final long serialVersionUID = 1L;
|
|
public static final byte LineType_GroupVol = 0;
|
public static final byte LineType_BattCurr = 1;
|
public static final byte LineType_MonVol = 2;
|
public static final byte LineType_MonTmp = 3;
|
public static final Color[] Line_Color = new Color[]{
|
Color.aqua, Color.bisque, Color.blue, Color.darkGray, Color.fuchsia,
|
Color.gold,Color.green, Color.greenYellow, Color.lightYellow, Color.olive,
|
Color.orange, Color.pink, Color.red, Color.silver, Color.skyBlue,
|
Color.teal, Color.white, Color.yellow};
|
|
private ArrayList<Line> al_LineSer;
|
private ArrayList<Line> al_PxySer;
|
private int PXY_index = -1;
|
private String m_LeftAxalValueFormat = "#0.0";
|
private BattTestData mChartData = null;
|
private int mLineVerticalPos = 0;
|
private ntm_page_datamanage_chart m_UI;
|
private byte m_LineType;
|
private MarksTip tooltip1;
|
private String serial_title = "";
|
private Line m_SelectedLine = null;
|
private int m_UI_GridViewIndex = 0;
|
|
private SeriesMouseListener m_SeriesMouseListener = null;
|
|
public double maxValue = 0;
|
public double minValue = 0;
|
|
public TMultVolLineChart(ntm_page_datamanage_chart UI, byte line_type)
|
{
|
m_UI = UI;
|
m_LineType = line_type;
|
al_LineSer = new ArrayList<Line>();
|
|
this.getChart().getTitle().setText("");
|
this.getChart().getTitle().getFont().setColor(Color.GRAY);
|
this.getChart().getTitle().setVisible(true);
|
if((LineType_MonVol==line_type) || (LineType_MonTmp == line_type)) {
|
this.getLegend().setVisible(false);
|
} else {
|
this.getLegend().setVisible(true);
|
}
|
this.getLegend().setColor(Color.transparent);
|
this.getLegend().setLegendStyle(LegendStyle.SERIES);
|
this.getLegend().setFontSeriesColor(true);
|
this.getAspect().setView3D(false);
|
this.getPanel().setMarginLeft(0);
|
this.getPanel().setMarginRight(1);
|
this.getPanel().setMarginTop(1.5);
|
this.getPanel().setMarginBottom(2);
|
this.getPanel().setColor(Color.BLACK);
|
this.getAxes().getLeft().getLabels().getFont().setColor(Color.GRAY);
|
this.getAxes().getLeft().getGrid().setColor(Color.fromArgb(50, 50, 50));
|
this.getAxes().getLeft().getAxisPen().setColor(Color.GRAY);
|
this.getAxes().getBottom().getAxisPen().setColor(Color.GRAY);
|
this.getAxes().getBottom().getLabels().getFont().setColor(Color.GRAY);
|
this.getAxes().getBottom().getLabels().setDateTimeFormat("HH:mm:ss");
|
this.getAxes().getBottom().getGrid().setVisible(false);
|
|
if(null != m_UI)
|
{
|
this.addMouseMotionListener(new MouseMotionListener(){
|
|
@Override
|
public void mouseDragged(MouseEvent arg0) {
|
// TODO Auto-generated method stub
|
|
}
|
|
@Override
|
public void mouseMoved(MouseEvent arg0) {
|
// TODO Auto-generated method stub
|
if(al_LineSer.size() < 1)
|
return;
|
|
int posx = Integer.parseInt(String.format("%1.0f", al_LineSer.get(0).xScreenToValue(arg0.getX())));
|
float posy = (float) al_LineSer.get(0).yScreenToValue(arg0.getY());
|
int pos_max = al_LineSer.get(0).getXValues().count;
|
if(posx >= pos_max)
|
{
|
posx = pos_max-1;
|
}
|
|
if(posx >= 0)
|
{
|
setMLinePosition(posx, posy, PXY_index);
|
}
|
}
|
});
|
|
this.addMouseListener(new MouseListener(){
|
@Override
|
public void mouseClicked(MouseEvent arg0) {
|
if(arg0.getClickCount() == 2)
|
{
|
setChartViewState();
|
}
|
else if(arg0.getButton() == MouseEvent.BUTTON1)
|
{
|
if(null == al_PxySer)
|
return;
|
|
if((m_SelectedLine != null) && (null != al_PxySer) && (PXY_index < 0))
|
{
|
for(int n=0; n<al_PxySer.size(); n++)
|
{
|
if(m_SelectedLine.getTitle().equals(al_PxySer.get(n).getTitle()))
|
{
|
PXY_index = n;
|
al_PxySer.get(PXY_index).setColor(Color.WHITE);
|
}
|
}
|
}
|
else
|
{
|
if((PXY_index >= 0) && (PXY_index < al_PxySer.size()))
|
{
|
al_PxySer.get(PXY_index).setColor(Color.GRAY);
|
PXY_index = -1;
|
}
|
}
|
}
|
else if(arg0.getButton() == MouseEvent.BUTTON3)
|
{
|
JPopupMenu popupMenu = new JPopupMenu();
|
|
Line m_SelLine = m_SelectedLine;
|
|
JMenuItem item_mon_vol_line = new JMenuItem("µ¥ÌåµçѹÇúÏß");
|
JMenuItem item_mon_tmp_line = new JMenuItem("µ¥ÌåζÈÇúÏß");
|
|
JMenuItem item_posx1 = new JMenuItem("ÏÔʾ²¢Òƶ¯ XA »ù×¼Ïß");
|
JMenuItem item_posx2 = new JMenuItem("ÏÔʾ²¢Òƶ¯ XB »ù×¼Ïß");
|
JMenuItem item_posy1 = new JMenuItem("ÏÔʾ²¢Òƶ¯ YA »ù×¼Ïß");
|
JMenuItem item_posy2 = new JMenuItem("ÏÔʾ²¢Òƶ¯ YB »ù×¼Ïß");
|
|
JMenuItem item_pos_stop = new JMenuItem("Òþ²Ø XY »ù×¼Ïß");
|
JMenuItem item_posx_hide = new JMenuItem("Òþ²Ø X »ù×¼Ïß");
|
JMenuItem item_posy_hide = new JMenuItem("Òþ²Ø Y »ù×¼Ïß");
|
|
JMenuItem item_selline = new JMenuItem("½öÑ¡Ôñ¸ÃÇúÏß");
|
JMenuItem item_selall_line = new JMenuItem("ÏÔʾȫ²¿ÇúÏß");
|
|
JMenuItem item_cutline = new JMenuItem("½Ø¶ÏÊý¾Ý");
|
JMenuItem item_restore_cutline = new JMenuItem("»¹Ô±»½Ø¶ÏµÄÊý¾Ý");
|
JMenuItem item_show_linetitle = new JMenuItem("ÏÔʾ/Òþ²ØÍ¼Àý");
|
JMenuItem item_restore_curve = new JMenuItem("»¹ÔËõ·Å״̬");
|
JMenuItem item_max_normal = new JMenuItem("×î´ó/Õý³£»¯Í¼±í");
|
|
ActionListener act_Listener = new ActionListener(){
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
if(arg0.getSource() == item_mon_vol_line)
|
{
|
m_UI.setMonLineChartType(LineType_MonVol);
|
}
|
else if(arg0.getSource() == item_mon_tmp_line)
|
{
|
m_UI.setMonLineChartType(LineType_MonTmp);
|
}
|
else if(arg0.getSource() == item_posx1)
|
{
|
PXY_index = 0;
|
al_PxySer.get(PXY_index).setVisible(true);
|
al_PxySer.get(PXY_index).setColor(Color.WHITE);
|
}
|
else if(arg0.getSource() == item_posx2)
|
{
|
PXY_index = 1;
|
al_PxySer.get(PXY_index).setVisible(true);
|
al_PxySer.get(PXY_index).setColor(Color.WHITE);
|
}
|
else if(arg0.getSource() == item_posy1)
|
{
|
PXY_index = 2;
|
al_PxySer.get(PXY_index).setVisible(true);
|
al_PxySer.get(PXY_index).setColor(Color.WHITE);
|
}
|
else if(arg0.getSource() == item_posy2)
|
{
|
PXY_index = 3;
|
al_PxySer.get(PXY_index).setVisible(true);
|
al_PxySer.get(PXY_index).setColor(Color.WHITE);
|
}
|
else if(arg0.getSource() == item_pos_stop)
|
{
|
PXY_index = -1;
|
al_PxySer.get(0).setVisible(false);
|
al_PxySer.get(1).setVisible(false);
|
al_PxySer.get(2).setVisible(false);
|
al_PxySer.get(3).setVisible(false);
|
updateLinePositionText();
|
}
|
else if(arg0.getSource() == item_posx_hide)
|
{
|
PXY_index = -1;
|
al_PxySer.get(0).setVisible(false);
|
al_PxySer.get(1).setVisible(false);
|
updateLinePositionText();
|
}
|
else if(arg0.getSource() == item_posy_hide)
|
{
|
PXY_index = -1;
|
al_PxySer.get(2).setVisible(false);
|
al_PxySer.get(3).setVisible(false);
|
updateLinePositionText();
|
}
|
else if(arg0.getSource() == item_selline)
|
{
|
boolean stat = false;
|
for(int n=1; n<al_LineSer.size(); n++) {
|
stat = false;
|
if(al_LineSer.get(n).equals(m_SelLine)) {
|
stat = true;
|
}
|
|
al_LineSer.get(n).setVisible(stat);
|
}
|
} else if(arg0.getSource() == item_selall_line) {
|
for(int n=1; n<al_LineSer.size(); n++) {
|
al_LineSer.get(n).setVisible(true);
|
}
|
}
|
else if(arg0.getSource() == item_cutline)
|
;//m_UI.cutOffLineChart(true);
|
else if(arg0.getSource() == item_restore_cutline)
|
;//m_UI.cutOffLineChart(false);
|
else if(arg0.getSource() == item_show_linetitle)
|
{
|
boolean vis = TMultVolLineChart.this.getLegend().getVisible();
|
TMultVolLineChart.this.getLegend().setVisible(!vis);
|
}
|
else if(arg0.getSource() == item_restore_curve)
|
{
|
if(null != mChartData)
|
{
|
updateChartData(mChartData);
|
setMLinePosition(mLineVerticalPos, 0, 0);
|
}
|
}
|
else if(arg0.getSource() == item_max_normal)
|
{
|
setChartViewState();
|
}
|
}
|
};
|
|
item_mon_vol_line.addActionListener(act_Listener);
|
item_mon_tmp_line.addActionListener(act_Listener);
|
item_posx1.addActionListener(act_Listener);
|
item_posx2.addActionListener(act_Listener);
|
item_posy1.addActionListener(act_Listener);
|
item_posy2.addActionListener(act_Listener);
|
item_pos_stop.addActionListener(act_Listener);
|
item_posx_hide.addActionListener(act_Listener);
|
item_posy_hide.addActionListener(act_Listener);
|
|
item_selline.addActionListener(act_Listener);
|
item_selall_line.addActionListener(act_Listener);
|
|
item_cutline.addActionListener(act_Listener);
|
item_restore_cutline.addActionListener(act_Listener);
|
item_show_linetitle.addActionListener(act_Listener);
|
item_restore_curve.addActionListener(act_Listener);
|
item_max_normal.addActionListener(act_Listener);
|
|
if((LineType_MonVol == m_LineType) || (LineType_MonTmp == m_LineType)) {
|
popupMenu.add(item_mon_vol_line);
|
popupMenu.add(item_mon_tmp_line);
|
popupMenu.addSeparator();
|
}
|
if((null != al_PxySer) && (al_PxySer.size() == 4))
|
{
|
popupMenu.add(item_posx1);
|
popupMenu.add(item_posx2);
|
popupMenu.add(item_posy1);
|
popupMenu.add(item_posy2);
|
popupMenu.add(item_pos_stop);
|
popupMenu.add(item_posx_hide);
|
popupMenu.add(item_posy_hide);
|
popupMenu.addSeparator();
|
}
|
if(null != m_SelectedLine)
|
{
|
item_selline.setText("½öÏÔʾ " + m_SelectedLine.getTitle() + " ÇúÏß");
|
popupMenu.add(item_selline);
|
}
|
|
popupMenu.add(item_selall_line);
|
popupMenu.addSeparator();
|
|
if(LineType_MonVol == m_LineType)
|
{
|
popupMenu.add(item_cutline);
|
popupMenu.add(item_restore_cutline);
|
popupMenu.addSeparator();
|
}
|
popupMenu.add(item_show_linetitle);
|
popupMenu.add(item_restore_curve);
|
popupMenu.addSeparator();
|
popupMenu.add(item_max_normal);
|
popupMenu.show(arg0.getComponent(), arg0.getX(), arg0.getY());
|
}
|
}
|
|
@Override
|
public void mouseEntered(MouseEvent arg0) {
|
// TODO Auto-generated method stub
|
}
|
|
@Override
|
public void mouseExited(MouseEvent arg0) {
|
// TODO Auto-generated method stub
|
|
}
|
|
@Override
|
public void mousePressed(MouseEvent arg0) {
|
// TODO Auto-generated method stub
|
|
}
|
|
@Override
|
public void mouseReleased(MouseEvent arg0) {
|
// TODO Auto-generated method stub
|
|
}
|
});
|
}
|
|
tooltip1 = new MarksTip(this.getChart());
|
tooltip1.setMouseDelay(50);
|
tooltip1.setMouseAction(MarksTipMouseAction.MOVE);
|
tooltip1.setStyle(MarksStyle.LABELVALUE);
|
tooltip1.setToolTipResolver(new TextResolver(){
|
|
@Override
|
public String getText(Object arg0, String arg1) {
|
// TODO Auto-generated method stub
|
return serial_title + arg1.replace(" ", " ");
|
}
|
});
|
|
//-------------------------------------------------------//
|
m_SeriesMouseListener = new SeriesMouseListener(){
|
|
@Override
|
public void seriesClicked(SeriesMouseEvent arg0) {
|
// TODO Auto-generated method stub
|
//if(arg0.getMouseEvent().getClickCount() > 1)
|
// System.out.println("seriesClicked");
|
}
|
|
@Override
|
public void seriesEntered(SeriesMouseEvent arg0) {
|
// TODO Auto-generated method stub
|
Line L = (Line) arg0.getSource();
|
if(L.getTitle().contains("#"))
|
{
|
L.getLinePen().setWidth(2);
|
}
|
m_SelectedLine = L;
|
serial_title = m_SelectedLine.getTitle() + " ";
|
//int index = (int) L.xScreenToValue((int) arg0.getPoint().getX());
|
//System.out.println(al_LineSer.get(0).getLabels().get(index));
|
}
|
|
@Override
|
public void seriesExited(SeriesMouseEvent arg0) {
|
// TODO Auto-generated method stub
|
Line L = (Line) arg0.getSource();
|
if(L.getTitle().contains("#"))
|
{
|
L.getLinePen().setWidth(1);
|
}
|
m_SelectedLine = null;
|
serial_title = "";
|
}
|
};
|
//-------------------------------------------------------//
|
}
|
|
public void setGridViewIndex(int index) {
|
m_UI_GridViewIndex = index;
|
}
|
public int getGridViewIndex() {
|
return m_UI_GridViewIndex;
|
}
|
|
private void setChartViewState()
|
{
|
m_UI.setChartViewState(getGridViewIndex(), !m_UI.getChartViewState());
|
}
|
|
public void setLineSerialVisiable(int index, boolean state)
|
{
|
if(index >= al_LineSer.size())
|
return;
|
else if(-1 == index)
|
{
|
for(int n=1; n<al_LineSer.size(); n++)
|
al_LineSer.get(n).setVisible(state);
|
}
|
else
|
al_LineSer.get(index).setVisible(state);
|
}
|
|
private void updateLinePositionText()
|
{
|
int px1 = (int) al_PxySer.get(0).getXValues().getFirst();
|
int px2 = (int) al_PxySer.get(1).getXValues().getFirst();
|
float py1 = (float) al_PxySer.get(2).getYValues().getFirst();
|
float py2 = (float) al_PxySer.get(3).getYValues().getFirst();
|
|
String str_px1 = String.format("%s", (String) al_LineSer.get(0).getLabels().get(px1));
|
String str_px2 = String.format("%s", (String) al_LineSer.get(0).getLabels().get(px2));
|
//-----------------------------------------------------------//
|
Calendar c1 = Calendar.getInstance(); c1.setTime(Com.get_DT_FromStr(str_px1, Com.DTF_hms));
|
Calendar c2 = Calendar.getInstance(); c2.setTime(Com.get_DT_FromStr(str_px2, Com.DTF_hms));
|
long seconds = (c2.getTimeInMillis() - c1.getTimeInMillis()) / 1000;
|
|
String str_dtpx = String.format("%02d:%02d:%02d", Math.abs(seconds)/3600,
|
(Math.abs(seconds)%3600)/60, Math.abs(seconds)%60);
|
if(seconds < 0) {
|
str_dtpx = "-" + str_dtpx;
|
}
|
str_dtpx = "¦¤PX " + str_dtpx;
|
//-----------------------------------------------------------//
|
String str_py1 = String.format("PYA %1.3f", py1);
|
String str_py2 = String.format("PYB %1.3f", py2);
|
String str_dtpy = String.format("¦¤PY %1.3f", py1-py2);
|
|
String title_pxy = "";
|
if(true == al_PxySer.get(0).getVisible())
|
{
|
title_pxy = "PXA " + str_px1;
|
}
|
if(true == al_PxySer.get(1).getVisible())
|
{
|
if(title_pxy.length() > 0)
|
{
|
title_pxy += ", ";
|
}
|
title_pxy += "PXB " + str_px2;
|
}
|
if((true == al_PxySer.get(0).getVisible()) && (true == al_PxySer.get(1).getVisible()))
|
{
|
if(title_pxy.length() > 0)
|
{
|
title_pxy += ", ";
|
}
|
title_pxy += str_dtpx;
|
}
|
|
if(true == al_PxySer.get(2).getVisible())
|
{
|
if(title_pxy.length() > 0)
|
{
|
title_pxy += ", ";
|
}
|
title_pxy += str_py1;
|
}
|
if(true == al_PxySer.get(3).getVisible())
|
{
|
if(title_pxy.length() > 0)
|
{
|
title_pxy += ", ";
|
}
|
title_pxy += str_py2;
|
}
|
if((true == al_PxySer.get(2).getVisible()) && (true == al_PxySer.get(3).getVisible()))
|
{
|
if(title_pxy.length() > 0)
|
{
|
title_pxy += ", ";
|
}
|
title_pxy += str_dtpy;
|
}
|
|
this.getChart().getTitle().setText(title_pxy);
|
}
|
|
public void setMLinePosition(int posx, float poxy, int pxy_index)
|
{
|
if((null == al_PxySer) || (null == al_LineSer) || (al_LineSer.size() < 1))
|
{
|
return;
|
}
|
|
if((pxy_index<0) || (pxy_index>=al_PxySer.size()))
|
{
|
return;
|
}
|
|
Line pxy_line = al_PxySer.get(pxy_index);
|
if(false == pxy_line.getVisible())
|
{
|
pxy_line.setVisible(true);
|
}
|
pxy_line.clear();
|
|
mLineVerticalPos = posx;
|
/*
|
DateTime dt = new DateTime(mChartData.al_TestData.get(pos).testTimeLong*1000 - Com.DT_OFFSET);
|
m_Line.add(dt, minValue);
|
m_Line.add(dt, maxValue);
|
*/
|
/*
|
if(0 == pos)
|
{
|
int timelong = mChartData.getTestTimeLong(pos);
|
m_Line.add(pos, minValue, String.format("%02d:%02d:%02d", timelong/3600, (timelong%3600)/60, timelong%60));
|
m_Line.add(pos, maxValue, String.format("%02d:%02d:%02d", timelong/3600, (timelong%3600)/60, timelong%60));
|
}
|
else
|
*/
|
{
|
int pos_max = al_LineSer.get(0).getLabels().getCount();
|
if(pos_max < 1)
|
return;
|
|
if(pxy_index < 2)
|
{
|
pxy_line.add(posx, minValue);
|
pxy_line.add(posx, maxValue);
|
}
|
else
|
{
|
pxy_line.add(0, poxy);
|
pxy_line.add(pos_max, poxy);
|
}
|
|
if(al_LineSer.size() > 0)
|
{
|
if(mLineVerticalPos >= pos_max)
|
{
|
mLineVerticalPos = pos_max-1;
|
}
|
|
updateLinePositionText();
|
}
|
}
|
}
|
|
public void clearAllSerialData()
|
{
|
for(int n=0; n<al_LineSer.size(); n++)
|
al_LineSer.get(n).clear();
|
|
al_LineSer.clear();
|
this.getSeries().clear();
|
}
|
|
public void updateChartData(BattTestData data)
|
{
|
mChartData = data;
|
clearAllSerialData();
|
|
Color Lcolor = Color.LIME;
|
int mon_count = 1;
|
if((LineType_MonVol == m_LineType) || (LineType_MonTmp == m_LineType)) {
|
mon_count = data.MonCount;
|
} else if(LineType_BattCurr == m_LineType) {
|
Lcolor = Color.GOLD;
|
}
|
|
int record_count = data.al_TestData.size();
|
if(LineType_MonVol == m_LineType)
|
{
|
m_LeftAxalValueFormat = "#0.00V";
|
Line line = new Line();
|
line.setValueFormat("#0.000V");
|
line.setColor(Line_Color[0]);
|
line.setTitle("#avg");
|
line.addSeriesMouseListener(m_SeriesMouseListener);
|
al_LineSer.add(line);
|
|
for(int n=1; n<mon_count+1; n++)
|
{
|
line = new Line();
|
line.setValueFormat("#0.000V");
|
line.setColor(Line_Color[n%Line_Color.length]);
|
line.setTitle("#" + (n));
|
line.addSeriesMouseListener(m_SeriesMouseListener);
|
al_LineSer.add(line);
|
}
|
} else if(LineType_MonTmp == m_LineType) {
|
m_LeftAxalValueFormat = "#0.0¡ãC";
|
Line line = new Line();
|
line.setValueFormat("#0.0¡ãC");
|
line.setColor(Line_Color[0]);
|
line.setTitle("#avg");
|
line.addSeriesMouseListener(m_SeriesMouseListener);
|
al_LineSer.add(line);
|
|
for(int n=1; n<mon_count+1; n++)
|
{
|
line = new Line();
|
line.setValueFormat("#0.0¡ãC");
|
line.setColor(Line_Color[n%Line_Color.length]);
|
line.setTitle("#" + (n));
|
line.addSeriesMouseListener(m_SeriesMouseListener);
|
al_LineSer.add(line);
|
}
|
} else {
|
Line line = new Line();
|
if(LineType_BattCurr == m_LineType)
|
{
|
m_LeftAxalValueFormat = "#0.0A";
|
line.setValueFormat("#0.0A");
|
line.setTitle("Current");
|
line.addSeriesMouseListener(m_SeriesMouseListener);
|
}
|
else if(LineType_GroupVol == m_LineType)
|
{
|
m_LeftAxalValueFormat = "#0.0V";
|
line.setValueFormat("#0.0V");
|
line.setTitle("GroupVol");
|
line.addSeriesMouseListener(m_SeriesMouseListener);
|
}
|
/*
|
line.getPointer().setStyle(PointerStyle.CIRCLE);
|
line.getPointer().setVertSize(3);
|
line.getPointer().setHorizSize(3);
|
line.getPointer().setVisible(true);
|
*/
|
line.getLinePen().setWidth(2);
|
line.setColor(Lcolor);
|
al_LineSer.add(line);
|
}
|
|
long timelong = 0;
|
for(int km=0; km<record_count; km++)
|
{
|
float[] mon_dat = null;
|
|
timelong = data.getTestTimeLong(km);
|
boolean data_available = data.al_TestData.get(km).data_Available;
|
float tmp_value = 0;
|
|
if(LineType_MonVol == m_LineType)
|
{
|
mon_dat = data.getMonData(BattTestData.MonData_Vol, km);
|
for(int n=0; n<mon_count+1; n++)
|
{
|
if(0 == n)
|
tmp_value = Com.getAvrageData(mon_dat, mon_count);
|
else
|
tmp_value = mon_dat[n-1];
|
|
Color t_color = Line_Color[n%Line_Color.length];
|
if(false == data_available)
|
t_color = Color.fromArgb(50, 50, 50);
|
|
//al_LineSer.get(n).add(new DateTime(timelong*1000 - Com.DT_OFFSET), tmp_value, t_color);
|
|
al_LineSer.get(n).add(tmp_value,
|
String.format("%02d:%02d:%02d", timelong/3600, (timelong%3600)/60, timelong%60),
|
t_color);
|
}
|
}
|
else if(LineType_MonTmp == m_LineType)
|
{
|
mon_dat = data.getMonData(BattTestData.MonData_Tmp, km);
|
for(int n=0; n<mon_count+1; n++)
|
{
|
if(0 == n)
|
tmp_value = Com.getAvrageData(mon_dat, mon_count);
|
else
|
tmp_value = mon_dat[n-1];
|
|
Color t_color = Line_Color[n%Line_Color.length];
|
if(false == data_available)
|
t_color = Color.fromArgb(50, 50, 50);
|
|
//al_LineSer.get(n).add(new DateTime(timelong*1000 - Com.DT_OFFSET), tmp_value, t_color);
|
al_LineSer.get(n).add(tmp_value,
|
String.format("%02d:%02d:%02d", timelong/3600, (timelong%3600)/60, timelong%60),
|
t_color);
|
}
|
}
|
else
|
{
|
if(LineType_GroupVol == m_LineType)
|
tmp_value = data.al_TestData.get(km).groupVol;
|
else if(LineType_BattCurr == m_LineType)
|
tmp_value = data.al_TestData.get(km).testCurr;
|
|
Color t_color = Lcolor;
|
if(false == data_available)
|
t_color = Color.fromArgb(50, 50, 50);
|
|
//al_LineSer.get(n).add(new DateTime(timelong*1000 - Com.DT_OFFSET), tmp_value, t_color);
|
|
al_LineSer.get(0).add(tmp_value,
|
String.format("%02d:%02d:%02d", timelong/3600, (timelong%3600)/60, timelong%60),
|
t_color);
|
}
|
}
|
|
maxValue = -90000;
|
minValue = 90000;
|
|
for(int n=0; n<al_LineSer.size(); n++)
|
{
|
Line line = al_LineSer.get(n);
|
this.addSeries(line);
|
if(maxValue <= line.getMaxYValue())
|
maxValue = line.getMaxYValue();
|
if(minValue >= line.getMinYValue())
|
minValue = line.getMinYValue();
|
}
|
if(minValue > 0) {
|
minValue *= 0.95;
|
if(LineType_BattCurr == m_LineType){
|
if(Math.abs(minValue) < 5) {
|
minValue = -5;
|
}
|
}
|
} else {
|
minValue = (minValue * 1.05);
|
if(LineType_BattCurr == m_LineType){
|
minValue -= 5;
|
}
|
}
|
|
if(maxValue > 0) {
|
maxValue = maxValue*1.05;
|
if(LineType_BattCurr == m_LineType){
|
maxValue += 5;
|
}
|
} else {
|
maxValue *= 0.95;
|
if(LineType_BattCurr == m_LineType){
|
if(Math.abs(maxValue) < 5) {
|
maxValue = 5;
|
}
|
}
|
}
|
|
al_PxySer = new ArrayList<Line>();
|
for(int n=0; n<4; n++)
|
{
|
Line pL = new Line();
|
pL.setVisible(false);
|
pL.setTitle("#POS");
|
pL.setColor(Color.GRAY);
|
pL.getLinePen().setStyle(DashStyle.DASH);
|
pL.getPointer().setStyle(PointerStyle.CIRCLE);
|
pL.getPointer().setVertSize(3);
|
pL.getPointer().setHorizSize(3);
|
pL.getPointer().setVisible(true);
|
pL.getXValues().setDateTime(true);
|
pL.addSeriesMouseListener(m_SeriesMouseListener);
|
al_PxySer.add(pL);
|
this.addSeries(pL);
|
}
|
al_PxySer.get(0).setTitle("PX1");
|
al_PxySer.get(1).setTitle("PX2");
|
al_PxySer.get(2).setTitle("PY1");
|
al_PxySer.get(3).setTitle("PY2");
|
|
this.getZoom().undo();
|
|
if(al_LineSer.size() < 1)
|
return;
|
/*
|
long min_x = (long) ((0 - Com.DT_OFFSET) - Math.abs(timelong*1000*0.02));
|
long max_x = (long) ((timelong*1000 - Com.DT_OFFSET) + Math.abs(timelong*1000*0.1));
|
this.getAxes().getBottom().setMinMax(min_x, max_x);
|
*/
|
this.getAxes().getLeft().getLabels().setValueFormat(m_LeftAxalValueFormat);
|
this.getAxes().getLeft().setMinMax(minValue, maxValue);
|
this.getAxes().getBottom().setMinMax(0-al_LineSer.get(0).getMaxXValue()*0.02,
|
al_LineSer.get(0).getMaxXValue()*1.1);
|
}
|
}
|
/************************************************************************************************/
|