// Copyright (C) 2000 by Toyohisa Nakada. All Rights Reserved.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
import java.awt.image.*;
import javax.swing.*;
/**
* ボイドアプレットクラス
* @author 中田豊久
*/
public class ComplexApplet extends JApplet {
/**
* getAppletInfo
*/
public String getAppletInfo() {
return "Complex applet version 1.00 by Toyohisa Nakada 2000.07";
}
/**
* 現在は、HTMLからのパラメータは取得していない。Appletだけでなく
* Frameのアプリケーションとしても動作するように変更したため。
* HTMLからのパラメータは以下のものが定義可能
*
* - sleep
* スレッドが1回の計算を行った後に休憩する時間(ms)
* - nodenum
* 画面の登場する node の数
* - background
* 背景にするファイルを指定する。Complex.classファイルからの相
* 対位置でパスを指定する。
* - CNodeMove-image?
* nodeの向きによる画像を指定する。?には0から11を指定して、合計1
* 2個のパラメータを同時にセットする。12個のパラメータが満足でき
* ない場合、無視される。
* - Noview-controlPanel
* 画面下に表示されるアプレットをコントロールするパネルを表示し
* ない。
* - Noview-time
* 画面左上に表示される、アプレット開始からの時間を表示しない。
*
*
*/
public String[][] getParameterInfo() {
String[][] info = {
{"sleep",
"int",
"thread sleep time(ms)."},
{"nodenum",
"int",
"the number of node"},
{"nodesize",
"int",
"node size"},
{"background",
"URL",
"background image file (relative path)"},
{"CNodeMove-image?",
"URL",
"CNodeMove image file(relative path)"},
{"Noview-controlPanel",
"bolean",
"not view control panel"},
{"Noview-time",
"boolean",
"not view time"},
};
return info;
}
/** アクションリスナー */
ActionListener actionListener = new ActionListener(){
/**
* [ap]ボタンを押した時の処理。パラメータを新しくセットして、スレッ
* ドを再起動する。
* @param e ActionEvent
*/
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if(src == m_bApply){
if(true == ComplexPanel.m_Parameters.setParameter()){
m_panel.stop();
m_panel.start();
}
}else if(src == m_bHelp){
m_panel.help();
m_panel.repaint();
}
}
};
/**
* Complexパネル変数。
* Appletに2つのパネルを配置する。1つはComplexパネルでComplexシステ
* ム自体になり、もう1つはcontrolPanelでComplexシステムを管理するた
* めに使用する。
*/
ComplexPanel m_panel;
/**
* コントロールパネル変数。
* Appletに2つのパネルを配置する。1つはComplexパネルでComplexシステ
* ム自体になり、もう1つはcontrolPanelでComplexシステムを管理するた
* めに使用する。
*/
JPanel m_controlPanel=null;
/**
* [apply]ボタン。このボタンを押すと、パラメータが新しくセットされ
* スレッドの再起動が起こり、画面が初期化される。
*/
Button m_bApply = new Button("apply");
/**
* [help]ボタン。このボタンを押すと、使い方の説明の画面が表示する。
*/
Button m_bHelp = new Button("help");
/**
* 初期化関数
*/
public void init(){
ComplexPanel.m_Parameters.setDefault(this);
if(ComplexPanel.m_Parameters.m_bNoviewControlPanel){
getContentPane().setLayout(new BorderLayout());
m_panel = new ComplexPanel();
getContentPane().add(m_panel,BorderLayout.CENTER);
}else{
getContentPane().setLayout(new BorderLayout());
m_panel = new ComplexPanel();
getContentPane().add(m_panel,BorderLayout.CENTER);
m_controlPanel = new JPanel();
m_controlPanel.add(m_bHelp);
m_bHelp.addActionListener(actionListener);
m_controlPanel.add(m_bApply);
m_bApply.addActionListener(actionListener);
ComplexPanel.m_Parameters.init(m_controlPanel);
getContentPane().add(m_controlPanel,BorderLayout.SOUTH);
}
m_panel.init();
}
/**
* アプレットのスタート
*/
public void start(){
m_panel.start();
}
/**
* アプレットのストップ
*/
public void stop(){
m_panel.stop();
}
/**
* アプレットの終了処理
*/
public void destroy(){
m_panel.destroy();
remove(m_panel);
}
}