TalkTool.java



package talktool;

import ExitableFrame;
import talktool.window.*;
import talktool.network.*;
import java.net.*;

/** ネットワーク通じてテキストを送受信できるクラス */

public class TalkTool extends ActionTest {

   /** ネットワークを管理するためのオブジェクト */

     protected Network network;

   /** 通信の出入口となるオブジェクト */

     protected Communicator communicator;

   /** コンストラクタ */

     public TalkTool( Network network ) {

          super();
          this.network = network;
     }

   /** 初期設定を実行するメソッド */

     public void init() throws Exception {

          try {
              network.init();
              communicator = network.getCommunicator();
          }
          catch( Exception e ) {
              throw e;
          }
     }

  /** 送信ボタンの処理を記述するメソッド */

     public void sendButtonClicked() {

          try {
              String text = getLeftText();
              setLeftText("");
              setMessage( "送信処理を実行しました" );
              communicator.setText( text );
          }
          catch( Exception e ){
              setMessage( e.getMessage() );
          }
     }
 
  /** 受信ボタンの処理を記述するメソッド */
 
     public void receiveButtonClicked() {
 
          try {
              String text = communicator.getText();
              if( text == null || text.equals("") ){
                    setMessage( "新しい受信データがありません" );
              }
              else {
                    setRightText( text );
                    setMessage( "受信処理を実行しました" );
              }
          }
          catch( Exception e ){
              setMessage( e.getMessage() );
          }
     }

  /** 最初に呼び出されるメソッド */
 
     public static void main( String argv[] ) {

          if( argv.length != 1 ) {

               System.err.println(
                  "使用法(1):java myappli.TalkTool -server" );
               System.err.println(
                  "使用法(2):java myappli.TalkTool servername" );
               System.exit(0);
          }
          NetInfo info;
          String infoString;
          if( argv[0].regionMatches( 0, "-server", 0, 2 ) ) {
               info = new NetInfo( true, null );     // サーバー
               infoString = "Server";
          }
          else {
               info = new NetInfo( false, argv[0] ); // クライアント
               infoString = argv[0];
          }
          Network network;
          TalkTool talkTool;
          try {
               network = new Network( info );
               talkTool = new TalkTool( network );
               talkTool.init();
               ExitableFrame frame
                  = new ExitableFrame( "Talk Tool Ver1.0:" + infoString );
               frame.add( talkTool, "Center" );
               frame.pack();
               frame.setVisible( true );
          }
          catch( Exception e ) {
              System.err.println( "ネットワークエラーが発生しました" );
              System.exit(-1);
          }
     }
}