// 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からのパラメータは以下のものが定義可能
* */ 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); } }