root/www.mail/JavaPopWeb/src/jp/ac/nime/computer/websim/TCPStatusDialog.java

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. TCPStatusDialog
  2. paint
  3. update
  4. 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();
        }
}

/* [<][>][^][v][top][bottom][index][help] */