/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- TCPStatusDialog
- paint
- update
- setPacket
package jp.ac.nime.computer.websim;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import jp.ac.nime.computer.*;
/**
* WWWシミュレータ TCPテスト状態表示ダイアログ
*
* @version 1.00 2003/03/31
* @author Toshikazu Matsumoto Avion Corp.
*/
public class TCPStatusDialog extends JDialog
{
private boolean[] m_bPack; //パケット到達フラグ配列
/**
* クラスコンストラクタ
* @param f 親フレームクラス
* @param point 表示位置
* @param item 呼出元オブジェクトクラス
*/
public TCPStatusDialog(Frame f,Point point,MachineItem item)
{
super(f,"パケット状況");
this.m_bPack=new boolean[4];
for(int i=0;i<4;i++)
{
this.m_bPack[i]=false;
}
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
for(int i=0;i<4;i++)
{
m_bPack[i]=false;
}
}
});
this.setSize(150,180);
this.repaint();
//this.setLocation(new Point(item.m_nPosX+item.getImage().getWidth(item.getParent()),item.m_nPosY+item.getImage().getHeight(item.getParent())));
Toolkit tool=Toolkit.getDefaultToolkit();
//Dimension d=tool.getScreenSize();
//this.setLocation(new Point((d.width-this.getSize().width)/2,(d.height-this.getSize().height)/2));
this.setLocation(point);
this.show();
}
/**
* グラフィックの描画
* @param g 描画グラフィック領域
*/
public void paint(Graphics g)
{
Insets inset=this.getInsets();
FontMetrics fontMet=g.getFontMetrics();
g.setColor(new Color(57,109,165));
g.fillRect(0,0,this.getSize().width,this.getSize().height);
boolean bAllOk=true;
for(int i=0;i<4;i++)
{
if(this.m_bPack[i]==false)
{
bAllOk=false;
}
}
for(int i=0;i<4;i++)
{
if(this.m_bPack[i]==true)
{
String s="Packet"+(i+1);
if(bAllOk==true)
{
g.setColor(new Color(255,200,200));
}
else
{
g.setColor(Color.white);
}
g.fillRect(10,i*(this.getSize().height-inset.top-inset.bottom-20)/4+10+inset.top,130,(this.getSize().height-inset.top-inset.bottom-20)/4);
g.setColor(Color.black);
g.setFont(new Font("SansSerif",Font.BOLD,12));
fontMet=g.getFontMetrics();
g.drawString
(
s,
(130-fontMet.stringWidth(s))/2+10,
i*(this.getSize().height-inset.top-inset.bottom-20)/4
+((this.getSize().height-inset.top-inset.bottom-20)/4-fontMet.getHeight())/2
+10+inset.top+fontMet.getAscent()
);
}
g.setColor(Color.black);
g.drawRect(10,i*(this.getSize().height-inset.top-inset.bottom-20)/4+10+inset.top,130,(this.getSize().height-inset.top-inset.bottom-20)/4);
}
}
/**
* グラフィックの再描画
* @param g グラフィック描画領域
*/
public void update(Graphics g)
{
paint(g);
}
/**
* パケットの到達フラグセット
* @param n パケット番号
*/
public void setPacket(int n)
{
if(n<0||n>4)
{
return;
}
this.m_bPack[n]=true;
this.repaint();
}
}