📄 page_multiquote.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: Page_MultiQuote.java
package gnnt.MEBS.HQApplet;
import gnnt.MEBS.hq.ProductDataVO;
import gnnt.util.service.HQVO.CMDQuoteListVO;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.PrintStream;
import java.util.Hashtable;
// Referenced classes of package gnnt.MEBS.HQApplet:
// Page_Main, MenuListener, HQApplet, SendThread,
// MultiQuoteItemInfo, Common, RHColor, CodeTable,
// Arrays
class Page_MultiQuote extends Page_Main
{
static byte flag = 0;
private int iDynamicIndex;
String strSortItem;
int iHighlightIndex;
int iStockRows;
Font font;
Font fontTitle;
FontMetrics fm;
int fontHeight;
private static final int TITLE_GAP = 2;
boolean bCanMove;
byte currentStockType;
byte isDescend;
int iStart;
private int iEnd;
private Hashtable m_htItemInfo;
private String m_strItems[];
private int m_iStaticIndex;
Menu menuStockRank;
MenuItem menuMarket;
MenuItem menuPageMinLine;
MenuItem menuPageKLine;
boolean m_bShowSortTag;
private void AskForQuoteList()
{
CMDQuoteListVO packet = new CMDQuoteListVO();
m_applet.sendThread.AskForData(packet);
}
private void setUserStockRequestPacket()
{
}
public Page_MultiQuote(Rectangle _rc, HQApplet applet, byte currentStockType)
{
super(_rc, applet);
strSortItem = "Code";
iHighlightIndex = 0;
font = new Font("宋体", 0, 16);
fontTitle = new Font("宋体", 1, 16);
bCanMove = true;
isDescend = 0;
iStart = 0;
iEnd = 30;
m_bShowSortTag = false;
m_applet.iCurrentPage = 0;
this.currentStockType = currentStockType;
initStockFieldInfo();
calculateRowsOfPage();
iStart = 0;
iEnd = iStockRows;
flag = 0;
setUserStockCode();
getClass();
AskForQuoteList();
makeMenus();
setMenuEnable(this.currentStockType, false);
}
void initStockFieldInfo()
{
m_htItemInfo = new Hashtable();
m_htItemInfo.put("No", new MultiQuoteItemInfo("", 20, -1));
m_htItemInfo.put("Name", new MultiQuoteItemInfo(m_applet.getShowString("Name"), 80, -1));
m_htItemInfo.put("Code", new MultiQuoteItemInfo(m_applet.getShowString("Code"), 64, 0));
m_htItemInfo.put("CurPrice", new MultiQuoteItemInfo(m_applet.getShowString("Newly"), 60, 1));
m_htItemInfo.put("CurAmount", new MultiQuoteItemInfo(m_applet.getShowString("CurVol"), 60, -1));
m_htItemInfo.put("SellPrice", new MultiQuoteItemInfo(m_applet.getShowString("SellPrice"), 60, -1));
m_htItemInfo.put("SellAmount", new MultiQuoteItemInfo(m_applet.getShowString("SellVol"), 48, -1));
m_htItemInfo.put("BuyPrice", new MultiQuoteItemInfo(m_applet.getShowString("BuyPrice"), 60, -1));
m_htItemInfo.put("BuyAmount", new MultiQuoteItemInfo(m_applet.getShowString("BuyVol"), 48, -1));
m_htItemInfo.put("TotalAmount", new MultiQuoteItemInfo(m_applet.getShowString("Volume"), 75, 9));
m_htItemInfo.put("UpValue", new MultiQuoteItemInfo(m_applet.getShowString("ChangeValue"), 65, 2));
m_htItemInfo.put("UpRate", new MultiQuoteItemInfo(m_applet.getShowString("ChangeRate"), 65, 3));
m_htItemInfo.put("ReverseCount", new MultiQuoteItemInfo(m_applet.getShowString("Order"), 70, -1));
m_htItemInfo.put("Balance", new MultiQuoteItemInfo(m_applet.getShowString("Balance"), 60, -1));
m_htItemInfo.put("OpenPrice", new MultiQuoteItemInfo(m_applet.getShowString("Open"), 60, -1));
m_htItemInfo.put("HighPrice", new MultiQuoteItemInfo(m_applet.getShowString("High"), 60, -1));
m_htItemInfo.put("LowPrice", new MultiQuoteItemInfo(m_applet.getShowString("Low"), 60, -1));
m_htItemInfo.put("YesterBalance", new MultiQuoteItemInfo(m_applet.getShowString("PreBalance"), 60, -1));
m_htItemInfo.put("TotalMoney", new MultiQuoteItemInfo(m_applet.getShowString("Money"), 80, 6));
m_htItemInfo.put("AmountRate", new MultiQuoteItemInfo(m_applet.getShowString("VolRate"), 50, 5));
m_htItemInfo.put("ConsignRate", new MultiQuoteItemInfo(m_applet.getShowString("ConsignRate"), 50, 7));
m_htItemInfo.put("Unit", new MultiQuoteItemInfo(m_applet.getShowString("Unit"), 40, -1));
String strItemName = m_applet.getParameter("MultiQuoteName", "Name:;Code:;CurPrice:;CurAmount:;SellPrice:;SellAmount:;BuyPrice:;BuyAmount:;TotalAmount:;UpValue:;UpRate:;ReverseCount:;Balance:;OpenPrice:;HighPrice:;LowPrice:;YesterBalance:;TotalMoney:;AmountRate:;ConsignRate:;Unit:;");
String strItemNames[] = Common.split(strItemName, 59);
for(int i = 0; i < strItemNames.length; i++)
{
String str[] = Common.split(strItemNames[i], 58);
if(str.length == 2 && str[1].length() > 0)
{
MultiQuoteItemInfo itemInfo = (MultiQuoteItemInfo)m_htItemInfo.get(str[0]);
if(itemInfo != null)
itemInfo.name = str[1];
}
}
String strItems = m_applet.getParameter("MultiQuoteItems", "No;Name;Code;CurPrice;CurAmount;SellPrice;SellAmount;BuyPrice;BuyAmount;TotalAmount;UpValue;ReverseCount;Balance;OpenPrice;HighPrice;LowPrice;YesterBalance;");
m_strItems = Common.split(strItems, 59);
m_iStaticIndex = Integer.parseInt(m_applet.getParameter("MultiQuoteStaticIndex", "3"));
iDynamicIndex = m_iStaticIndex + 1;
}
private void initGraph(Graphics g)
{
fm = g.getFontMetrics(font);
fontHeight = fm.getHeight();
g.setFont(font);
}
private void calculateRowsOfPage()
{
int gap = 2;
Graphics g = m_applet.getGraphics();
fm = g.getFontMetrics(font);
fontHeight = fm.getHeight();
iStockRows = m_rc.height / (fontHeight + gap) - 1;
if(iStockRows < 1)
iStockRows = 25;
iEnd = (iStart + iStockRows) - 1;
}
void Paint(Graphics g)
{
bCanMove = true;
initGraph(g);
calculateRowsOfPage();
paintTitleItems(g);
paintQuoteData(g);
m_applet.EndPaint();
paintHighlightBar();
}
void paintTitleItems(Graphics g)
{
int x = m_rc.x;
int y = m_rc.y + fm.getAscent();
g.setColor(HQApplet.rhColor.clMultiQuote_TitleBack);
g.fillRect(m_rc.x, m_rc.y, m_rc.width, fontHeight);
for(int i = 0; i < m_strItems.length; i++)
{
if(i > m_iStaticIndex && i < iDynamicIndex)
continue;
MultiQuoteItemInfo info = (MultiQuoteItemInfo)m_htItemInfo.get(m_strItems[i]);
if(info == null)
continue;
String strName = info.name;
if(m_bShowSortTag && strSortItem.equals(m_strItems[i]))
{
if(isDescend == 1)
{
g.setColor(HQApplet.rhColor.clIncrease);
strName = strName + "↓";
} else
{
g.setColor(HQApplet.rhColor.clHighlight);
strName = strName + "↑";
}
} else
{
g.setColor(HQApplet.rhColor.clItem);
}
x += info.width;
int strLen = fm.stringWidth(strName);
g.drawString(strName, x - strLen, y);
if(x > m_rc.x + m_rc.width)
break;
}
}
void paintQuoteData(Graphics g)
{
if(m_applet.m_quoteList.length == 0)
return;
g.setFont(font);
int gap = 2;
int x = m_rc.x;
int y = m_rc.y + fontHeight + 2 + fm.getAscent();
int count = iStockRows;
if(m_applet.m_quoteList.length - iStart < iStockRows)
count = m_applet.m_quoteList.length - iStart;
for(int i = 0; i < count; i++)
{
int num = iStart + i;
ProductDataVO data = m_applet.m_quoteList[num];
if(data.code == null)
{
System.out.println("Code = null");
} else
{
CodeTable stockTable = (CodeTable)m_applet.m_htProduct.get(data.code);
String stockName = "-";
if(stockTable != null)
{
if(stockTable.sName != null)
stockName = stockTable.sName;
else
System.out.println("stockTable.sName = null");
} else
{
System.out.println(" stockTable = null ");
}
int iPrecision = m_applet.GetPrecision(data.code);
float close = data.yesterBalancePrice;
int strLen = 0;
for(int j = 0; j < m_strItems.length; j++)
{
if(j > m_iStaticIndex && j < iDynamicIndex)
continue;
MultiQuoteItemInfo info = (MultiQuoteItemInfo)m_htItemInfo.get(m_strItems[j]);
if(info == null)
continue;
x += info.width;
if(m_strItems[j].equals("No"))
{
String strText = String.valueOf(num + 1);
g.setColor(HQApplet.rhColor.clNumber);
strLen = fm.stringWidth(strText);
g.drawString(strText, x - strLen, y);
} else
if(m_strItems[j].equals("Name"))
{
String strText = stockName;
g.setColor(HQApplet.rhColor.clProductName);
strLen = fm.stringWidth(strText);
g.drawString(strText, x - strLen, y);
} else
if(m_strItems[j].equals("Code"))
{
String strText = data.code;
g.setColor(HQApplet.rhColor.clProductName);
strLen = fm.stringWidth(strText);
g.drawString(strText, x - strLen, y);
} else
if(m_strItems[j].equals("CurPrice"))
paintNumber(g, data.curPrice, "", m_strItems[j], iPrecision, close, x, y);
else
if(m_strItems[j].equals("Balance"))
paintNumber(g, data.balancePrice, "", m_strItems[j], iPrecision, close, x, y);
else
if(m_strItems[j].equals("UpValue"))
{
float up = close == 0.0F || data.curPrice == 0.0F ? 0.0F : data.curPrice - close;
paintNumber(g, up, "", m_strItems[j], 0, close, x, y);
} else
if(m_strItems[j].equals("UpRate"))
{
float upRate = close <= 0.0F || data.curPrice <= 0.0F ? 0.0F : ((data.curPrice - close) / close) * 100F;
paintNumber(g, upRate, "", m_strItems[j], 2, 0.0F, x, y);
} else
if(m_strItems[j].equals("YesterBalance"))
paintNumber(g, data.yesterBalancePrice, "", m_strItems[j], iPrecision, close, x, y);
else
if(m_strItems[j].equals("OpenPrice"))
paintNumber(g, data.openPrice, "", m_strItems[j], iPrecision, close, x, y);
else
if(m_strItems[j].equals("BuyPrice"))
paintNumber(g, data.buyPrice[0], "", m_strItems[j], iPrecision, close, x, y);
else
if(m_strItems[j].equals("SellPrice"))
paintNumber(g, data.sellPrice[0], "", m_strItems[j], iPrecision, close, x, y);
else
if(m_strItems[j].equals("BuyAmount"))
paintNumber(g, data.buyAmount[0], "", m_strItems[j], 0, close, x, y);
else
if(m_strItems[j].equals("SellAmount"))
paintNumber(g, data.sellAmount[0], "", m_strItems[j], 0, close, x, y);
else
if(m_strItems[j].equals("HighPrice"))
paintNumber(g, data.highPrice, "", m_strItems[j], iPrecision, close, x, y);
else
if(m_strItems[j].equals("LowPrice"))
paintNumber(g, data.lowPrice, "", m_strItems[j], iPrecision, close, x, y);
else
if(m_strItems[j].equals("TotalAmount"))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -