/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- RingBufDialog
- makeLayout
- actionPerformed
- setOver
- setEmpty
- canDequeue
- 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);
}
}