aqubi+shin1

Recent site activity

外部プロセスとConsoleとの連携

  1. まずは、外部プロセスを作成する。通常のJavaと同じくRuntime.getRuntime()#execを使用すればOK
  2. Eclipse用のIProcessを作成する。
    DebugPlugin.newProcess(new Launch(null, ILaunchManager.RUN_MODE, null), process, "my console");
    Launchも本当はちゃんと作って設定した方がいいとは思うが。。
  3. メッセージだけ表示したい場合には、
    org.eclipse.ui.console.MessageConsole
    を作成。
    Consoleの停止ボタン(赤い■のボタン)で、プロセスも終了したい場合には、org.eclipse.debug.internal.ui.views.console.ProcessConsole
    の方を作成。
    Consoleで停止した場合には、PropertyEventのIConsoleConstants.P_CONSOLE_OUTPUT_COMPLETEが飛んでくるので、addPropertyChangeListenerをキャッチ。
  4. 作ったConsoleはConsoleManagerに登録。
    IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
    manager.addConsoles(new IConsole[] { console });
    manager.showConsoleView(console);
  5. 実行された処理内容は、
    IProcess process;
    process.getStreamsProxy().getOutputStreamMonitor().addListener
    process.getStreamsProxy().getErrorStreamMonitor().addListener
    でListenerかけて public void streamAppended(String text, IStreamMonitor monitor) を実装すればOK
  6. ProcessConsoleの場合、InputStream(入力)に何か設定したい時には、
    console.getInputStream().appendData("なんかの文字");
    ってやればOK
ProcessConsoleの場合、表示されたConsoleにて、キーボードからの入力も受け付けるようになります。
簡易的なコマンドコンソールができちゃぅかも。