root/www.mail/JavaPopWeb/src/jp/ac/nime/computer/mailsim/RingBufDialog.java

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

DEFINITIONS

This source file includes following definitions.
  1. RingBufDialog
  2. makeLayout
  3. actionPerformed
  4. setOver
  5. setEmpty
  6. canDequeue
  7. canEnqueue

package jp.ac.nime.computer.mailsim;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 * MAILシミュレータ リングバッファダイアログ
 * 
 * @version 1.00 2003/03/31
 * @author Toshikazu Matsumoto Avion Corp.
 */
public class RingBufDialog extends JDialog implements ActionListener
{
        private JButton m_btEnqueue;    //入力ボタン
        private JButton m_btDequeue;    //出力ボタン
        private RingBufCanvas m_Canvas; //描画キャンバスクラス
                
        /**
         * クラスコンストラクタ
         * @param root 親フレームクラス
         * @param imMail メール画像
         */
        public RingBufDialog(Frame root,Image imMail)
        {
                super(root,"リングバッファ");
                
                
                this.m_btEnqueue=new JButton("入力");
                this.m_btDequeue=new JButton("出力");
                this.m_btDequeue.setEnabled(false);
                
                this.m_btEnqueue.addActionListener(this);
                this.m_btDequeue.addActionListener(this);
                
                this.m_Canvas=new RingBufCanvas(root,this,imMail);
                
                this.setSize(400,400);
                this.makeLayout();
                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.show();
        }
        /**
         * レイアウトの構築
         */
        private void makeLayout()
        {
                Panel pButton=new Panel();
                pButton.setLayout(new FlowLayout(FlowLayout.RIGHT));
                pButton.add(this.m_btEnqueue);
                pButton.add(this.m_btDequeue);
                
                this.getContentPane().setLayout(new BorderLayout());
                this.getContentPane().add("Center",this.m_Canvas);
                this.getContentPane().add("East",pButton);
        }
        /**
         * ボタン押下時のアクション
         */
        public void actionPerformed(ActionEvent evt)
        {
                //入力ボタン押下時
                if(evt.getSource().equals(this.m_btEnqueue))
                {
                        this.m_Canvas.enQueue();
                }
                //出力ボタン押下時
                else if(evt.getSource().equals(this.m_btDequeue))
                {
                        this.m_Canvas.deQueue();
                }
        }
        /**
         * リングバッファがフルになった状態を通知する
         */
        public void setOver()
        {
                this.m_btEnqueue.setEnabled(false);     
        }
        /**
         * リングバッファが空になった状態を通知する
         */
        public void setEmpty()
        {
                this.m_btDequeue.setEnabled(false);
        }
        /**
         * リングバッファが取り出し可能の状態を通知する
         */
        public void canDequeue()
        {
                this.m_btDequeue.setEnabled(true);
        }
        /**
         * リングバッファが格納可能の状態を通知する
         */
        public void canEnqueue()
        {
                this.m_btEnqueue.setEnabled(true);
        }
}

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