@Override protected IStatus run(IProgressMonitor monitor) { if (monitor.isCanceled() || getConsoleDocument(process) != null) { return Status.CANCEL_STATUS; } IConsoleColorProvider colorProvider = getColorProvider(process.getAttribute(IProcess.ATTR_PROCESS_TYPE)); String encoding = launch.getAttribute(DebugPlugin.ATTR_CONSOLE_ENCODING); ProcessConsole pc = new ProcessConsole(process, colorProvider, encoding); pc.setAttribute(IDebugUIConstants.ATTR_CONSOLE_PROCESS, process); // add new console to console manager. ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] { pc }); return Status.OK_STATUS; }
/** * @see ILaunchListener#launchChanged(ILaunch) */ @Override public void launchChanged(final ILaunch launch) { IProcess[] processes= launch.getProcesses(); for (IProcess process : processes) { if (process.getStreamsProxy() == null) { continue; } if (getConsoleDocument(process) == null) { // create a new console in a separated thread, see bug 355011. Job job = new ConsoleCreation(launch, process); job.schedule(); } } List<IProcess> removed = getRemovedProcesses(launch); if (removed != null) { for (IProcess p : removed) { removeProcess(p); } } }