From: Philip M. <paw...@us...> - 2006-04-06 03:03:58
|
Update of /cvsroot/jedit/plugins/PythonClient/src/pythonclient/jedit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12817/src/pythonclient/jedit Modified Files: PythonShell.java Log Message: shell integration, but for some reason input is always coming as null Index: PythonShell.java =================================================================== RCS file: /cvsroot/jedit/plugins/PythonClient/src/pythonclient/jedit/PythonShell.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- PythonShell.java 21 Mar 2006 04:39:52 -0000 1.2 +++ PythonShell.java 6 Apr 2006 03:03:54 -0000 1.3 @@ -1,5 +1,10 @@ package pythonclient.jedit; +import org.gjt.sp.util.Log; + +import pythonclient.Controller; +import pythonclient.LoggerModel; +import pythonclient.StatusListener; import console.Console; import console.Output; import console.Shell; @@ -34,13 +39,73 @@ public void execute(Console console, String input, Output output, Output error, String command) { - // TODO Auto-generated method stub + if(input == null) { + output.print(console.getErrorColor(), "input was null"); + output.commandDone(); + return; + } + + Controller c = PythonClientPlugin.getPlugin().getController(); + + LoggerModel savedLogger = c.getLogger(); + StatusListener savedListener = c.getStatusListener(); + + ShellOutput captureOutput = new ShellOutput(console, output, error, savedListener, savedLogger, c); + c.setLogger(captureOutput); + c.setStatusListener(captureOutput); + + Log.log(Log.DEBUG, this, "Execute string: "+input); + c.submit(input, true); } + class ShellOutput implements LoggerModel, StatusListener { + Output output; + Output error; + Console console; + StatusListener savedListener; + LoggerModel savedLogger; + Controller controller; + + public ShellOutput(Console console, Output output, Output error, + StatusListener savedListener, + LoggerModel savedLogger, + Controller c) { + this.output = output; + this.error = error; + this.console = console; + this.savedLogger = savedLogger; + this.savedListener = savedListener; + this.controller = c; + } + + public void appendError(String text) { + output.print(console.getErrorColor(), text); + } + + public void appendNormal(String text) { + output.print(console.getPlainColor(), text); + } + + public void reset() { + // does nothing here + } + + public void statusChanged(boolean isBusy, String msg) { + if(!isBusy) { + output.commandDone(); + + // now that the command is done, reset the listener and logger + controller.setStatusListener(savedListener); + controller.setLogger(savedLogger); + } + } + } + public void printPrompt(Console console, Output output) { output.print(console.getPlainColor(), ">>> "); } - + + } |