public synchronized void finish() { if (!canceled) returnCode = process.exitValue(); stdoutThread.interrupt(); stderrThread.interrupt(); if (keepWindow) btnCancel.setText("OK"); else setVisible(false); }
public void run(String[] command, String directory, String caption, boolean keepWindow) throws IOException { this.setTitle(caption); this.keepWindow = keepWindow; btnCancel.setText("Cancel"); returnCode = -1; canceled = false; setModal(true); ProcessBuilder pb = new ProcessBuilder(command); pb.directory(new File(directory)); process = pb.start(); waitThread = new WaitThread(); waitThread.start(); txtStdout.setText(""); txtStderr.setText(""); // BufferedReader kozo = new BufferedReader ( new InputStreamReader( process.getInputStream()), // 1); // stdoutThread = new StreamReadThread(kozo, txtStdout); // kozo = new BufferedReader ( new InputStreamReader( process.getErrorStream()), 1); // stderrThread = new StreamReadThread(kozo, txtStderr); stdoutThread = new StreamReadThread(process.getInputStream(), txtStdout); stderrThread = new StreamReadThread(process.getErrorStream(), txtStderr); stdoutThread.start(); stderrThread.start(); setVisible(true); }