use of org.eclipse.debug.core.model.IStreamMonitor in project tdi-studio-se by Talend.
the class ProcessComposite method initGraphicComponents.
/**
* DOC amaumont Comment method "initGraphicComponents".
*
* @param parent
*/
private void initGraphicComponents(Composite parent) {
setExpandHorizontal(true);
setExpandVertical(true);
this.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
FormData layouData = new FormData();
layouData.left = new FormAttachment(0, 0);
layouData.right = new FormAttachment(100, 0);
layouData.top = new FormAttachment(0, 0);
layouData.bottom = new FormAttachment(100, 0);
setLayoutData(layouData);
this.setLayout(new FormLayout());
final Composite panel = new Composite(this, SWT.NONE);
setContent(panel);
// panel.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_DARK_RED));
FormLayout layout2 = new FormLayout();
layout2.marginWidth = 5 + 2;
layout2.marginHeight = 4;
layout2.spacing = 6 + 1;
panel.setLayout(layout2);
GridData data;
GridLayout layout = new GridLayout();
// panel.setLayout(layout);
// Splitter
// sash = new SashForm(this, SWT.HORIZONTAL | SWT.SMOOTH);
// sash.setLayoutData(new GridData(GridData.FILL_BOTH));
//
// layout = new GridLayout();
// sash.setLayout(layout);
//
// // group Button
// // qli,see the feature 6366.
//
// Composite buttonComposite = new Composite(sash, SWT.ERROR);
// buttonComposite.setLayout(new GridLayout());
//
// moveButton = new Button(buttonComposite, SWT.PUSH);
// moveButton.setText("<<"); //$NON-NLS-1$
// moveButton.setToolTipText(Messages.getString("ProcessComposite.hideContext")); //$NON-NLS-1$
//
// final GridData layoutData = new GridData();
// layoutData.verticalAlignment = GridData.CENTER;
// layoutData.horizontalAlignment = GridData.CENTER;
// layoutData.grabExcessHorizontalSpace = true;
// layoutData.grabExcessVerticalSpace = true;
// moveButton.setLayoutData(layoutData);
// Group execution
Group execGroup = new Group(panel, SWT.NONE);
//$NON-NLS-1$
execGroup.setText(Messages.getString("ProcessComposite.execGroup"));
layout = new GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
execGroup.setLayout(layout);
FormData layouDatag = new FormData();
layouDatag.left = new FormAttachment(0, 0);
layouDatag.right = new FormAttachment(100, 0);
layouDatag.top = new FormAttachment(0, 0);
layouDatag.bottom = new FormAttachment(100, 0);
execGroup.setLayoutData(layouDatag);
// leftTabFolder = new CTabFolder(this, SWT.BORDER);
// leftTabFolder.setSimple(false);
// //
// leftTabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
// //
// // // Group context
// //
// CTabItem contextTabItem = new CTabItem(leftTabFolder, SWT.BORDER);
// contextTabItem.setText(Messages.getString("ProcessComposite.contextTab")); //$NON-NLS-1$
// // contextComposite = new ProcessContextComposite(this, SWT.NONE);
// // contextComposite.setBackground(leftTabFolder.getDisplay().getSystemColor(SWT.COLOR_WHITE));
// // contextTabItem.setControl(contextComposite);
// //
// Composite targetExecutionComposite = createTargetExecutionComposite(leftTabFolder);
// targetExecutionComposite.setBackground(leftTabFolder.getDisplay().getSystemColor(SWT.COLOR_WHITE));
// //
// targetExecutionTabItem = new CTabItem(leftTabFolder, SWT.BORDER);
// targetExecutionTabItem.setText(Messages.getString("ProcessComposite.targetExecutionTab")); //$NON-NLS-1$
// targetExecutionTabItem.setToolTipText(Messages.getString("ProcessComposite.targetExecutionTabTooltipAvailable"));
// targetExecutionTabItem.setControl(targetExecutionComposite);
// //
// // // Job Run VM Arguments Tab if language is java.
// if (LanguageManager.getCurrentLanguage() == ECodeLanguage.JAVA) {
// jobVMTabItem = new CTabItem(leftTabFolder, SWT.BORDER);
// jobVMTabItem.setText(Messages.getString("ProcessComposite.JVMTab")); //$NON-NLS-1$
// argumentsComposite = new Composite(leftTabFolder, SWT.NONE);
// argumentsComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
// GridLayout gridLayoutArguments = new GridLayout(1, false);
// argumentsComposite.setLayout(gridLayoutArguments);
// argumentsViewer = new JobVMArgumentsComposite("vmarguments", Messages
// .getString("RunProcessPreferencePage.vmArgument"), //$NON-NLS-1$
// argumentsComposite);
// // argumentsViewer.setEnabled(false, argumentsComposite);
// jobVMTabItem.setControl(argumentsComposite);
// }
ScrolledComposite execScroll = new ScrolledComposite(execGroup, SWT.V_SCROLL | SWT.H_SCROLL);
execScroll.setExpandHorizontal(true);
execScroll.setExpandVertical(true);
execScroll.setLayoutData(new GridData(GridData.FILL_BOTH));
Composite execContent = new Composite(execScroll, SWT.NONE);
layout = new GridLayout();
execContent.setLayout(new FormLayout());
execScroll.setContent(execContent);
Composite execHeader = new Composite(execContent, SWT.NONE);
FormLayout formLayout = new FormLayout();
formLayout.marginWidth = 7;
formLayout.marginHeight = 4;
formLayout.spacing = 7;
execHeader.setLayout(formLayout);
FormData layoutData = new FormData();
layoutData.left = new FormAttachment(0, 0);
layoutData.right = new FormAttachment(100, 0);
layoutData.top = new FormAttachment(0, 0);
layoutData.bottom = new FormAttachment(0, 50);
// new GridData(GridData.FILL_HORIZONTAL)
execHeader.setLayoutData(layoutData);
// qli
// see the feature 6366
run = new Button(execHeader, SWT.PUSH);
// itemDropDown = new ToolItem(toolBar, SWT.ARROW);
//$NON-NLS-1$//$NON-NLS-2$
run.setText(" " + Messages.getString("ProcessComposite.exec"));
run.setData(ProcessView.EXEC_ID);
//$NON-NLS-1$
run.setToolTipText(Messages.getString("ProcessComposite.execHint"));
run.setImage(ImageProvider.getImage(ERunprocessImages.RUN_PROCESS_ACTION));
// final Menu menu = new Menu(execHeader);
run.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
execRun();
}
});
// Run
// final MenuItem menuItem1 = new MenuItem(menu, SWT.PUSH);
// menuItem1.setText(" " + Messages.getString("ProcessComposite.exec"));//$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
// menuItem1.setImage(ImageProvider.getImage(ERunprocessImages.RUN_PROCESS_ACTION));
// menuItem1.setData(ProcessView.EXEC_ID);
// menuItem1.addSelectionListener(new SelectionAdapter() {
//
// public void widgetSelected(SelectionEvent event) {
// if (!itemDropDown.getData().equals(ProcessView.PAUSE_ID) &&
// !itemDropDown.getData().equals(ProcessView.RESUME_ID)) {
// itemDropDown.setText(menuItem1.getText());
// itemDropDown.setData(ProcessView.EXEC_ID);
// itemDropDown.setImage(ImageProvider.getImage(ERunprocessImages.RUN_PROCESS_ACTION));
// itemDropDown.setToolTipText(Messages.getString("ProcessComposite.execHint"));//$NON-NLS-1$
// toolBar.getParent().layout();
// }
// }
// });
IBrandingService brandingService = (IBrandingService) GlobalServiceRegister.getDefault().getService(IBrandingService.class);
// }
if (processContext == null) {
run.setEnabled(false);
}
// toolBar.setEnabled(false);
FormData formData = new FormData();
// see the feature 6366,qli comment.
// make a judge when the text change in diffrent languages.
Point debugSize = null;
Point execSize = null;
formData.left = new FormAttachment(0);
// if (brandingService.getBrandingConfiguration().isAllowDebugMode()) {
// // set debug text to judge size
// itemDropDown.setText(debugMenuItem.getText());
// debugSize = computeSize(itemDropDown.getText());
//
// // set exec text to judge size
// itemDropDown.setText(menuItem1.getText());
// execSize = computeSize(itemDropDown.getText());
// if (debugSize.x > execSize.x) {
// formData.right = new FormAttachment(0, debugSize.x + 70);
// } else {
// formData.right = new FormAttachment(0, execSize.x + 70);
// }
// } else {
// set exec text to judge size
execSize = computeSize(run.getText());
formData.right = new FormAttachment(0, execSize.x + 70);
formData.height = 30;
// }
run.setLayoutData(formData);
killBtn = new Button(execHeader, SWT.PUSH);
//$NON-NLS-1$
killBtn.setText(Messages.getString("ProcessComposite.kill"));
//$NON-NLS-1$
killBtn.setToolTipText(Messages.getString("ProcessComposite.killHint"));
killBtn.setImage(ImageProvider.getImage(ERunprocessImages.KILL_PROCESS_ACTION));
setButtonLayoutData(killBtn);
killBtn.setEnabled(false);
formData = new FormData();
formData.top = new FormAttachment(run, 0, SWT.TOP);
formData.left = new FormAttachment(run, 0, SWT.RIGHT);
// qli modified to fix the bug "7302".
Point killSize = computeSize(killBtn.getText());
// if (brandingService.getBrandingConfiguration().isAllowDebugMode()) {
// if ((killSize.x > debugSize.x) && (killSize.x > execSize.x)) {
// formData.right = new FormAttachment(toolBar, killSize.x + 70, SWT.RIGHT);
// } else if (debugSize.x > execSize.x) {
// formData.right = new FormAttachment(toolBar, debugSize.x + 70, SWT.RIGHT);
// } else {
// formData.right = new FormAttachment(toolBar, execSize.x + 70, SWT.RIGHT);
// }
// } else {
// if (killSize.x > execSize.x) {
// formData.right = new FormAttachment(toolBar, killSize.x + 70, SWT.RIGHT);
// } else {
// formData.right = new FormAttachment(toolBar, execSize.x + 70, SWT.RIGHT);
// }
// }
formData.right = new FormAttachment(run, 30 + 70, SWT.RIGHT);
formData.height = 30;
killBtn.setLayoutData(formData);
// saveJobBeforeRunButton = new Button(execHeader, SWT.CHECK);
// saveJobBeforeRunButton.setText(Messages.getString("ProcessComposite.saveBeforeRun")); //$NON-NLS-1$
// saveJobBeforeRunButton.setToolTipText(Messages.getString("ProcessComposite.saveBeforeRunHint")); //$NON-NLS-1$
// // saveJobBeforeRunButton.setEnabled(false);
// saveJobBeforeRunButton.setSelection(RunProcessPlugin.getDefault().getPreferenceStore().getBoolean(
// RunProcessPrefsConstants.ISSAVEBEFORERUN));
// data = new GridData();
// data.horizontalSpan = 2;
// data.horizontalAlignment = SWT.END;
// saveJobBeforeRunButton.setLayoutData(data);
// formData = new FormData();
// formData.top = new FormAttachment(toolBar, 0, SWT.BOTTOM);
// formData.left = new FormAttachment(toolBar, 0, SWT.LEFT);
// saveJobBeforeRunButton.setLayoutData(formData);
// clearBeforeExec = new Button(execHeader, SWT.CHECK);
// clearBeforeExec.setText(Messages.getString("ProcessComposite.clearBefore")); //$NON-NLS-1$
// clearBeforeExec.setToolTipText(Messages.getString("ProcessComposite.clearBeforeHint")); //$NON-NLS-1$
// // clearBeforeExec.setEnabled(false);
// clearBeforeExec.setSelection(RunProcessPlugin.getDefault().getPreferenceStore().getBoolean(
// RunProcessPrefsConstants.ISCLEARBEFORERUN));
// data = new GridData();
// data.horizontalSpan = 2;
// data.horizontalAlignment = SWT.END;
// clearBeforeExec.setLayoutData(data);
// formData = new FormData();
// formData.top = new FormAttachment(toolBar, 0, SWT.BOTTOM);
// formData.left = new FormAttachment(saveJobBeforeRunButton, 0, SWT.RIGHT);
// clearBeforeExec.setLayoutData(formData);
//
// watchBtn = new Button(execHeader, SWT.CHECK);
// watchBtn.setText(Messages.getString("ProcessComposite.execTime")); //$NON-NLS-1$
// watchBtn.setToolTipText(Messages.getString("ProcessComposite.execTimeHint")); //$NON-NLS-1$
// watchBtn.setEnabled(false);
// watchBtn.setSelection(RunProcessPlugin.getDefault().getPreferenceStore().getBoolean(
// RunProcessPrefsConstants.ISEXECTIMERUN));
// data = new GridData();
// data.horizontalSpan = 2;
// data.horizontalAlignment = SWT.END;
// watchBtn.setLayoutData(data);
// formData = new FormData();
// formData.top = new FormAttachment(killBtn, 0, SWT.BOTTOM);
// formData.left = new FormAttachment(clearBeforeExec, 0, SWT.RIGHT);
// watchBtn.setLayoutData(formData);
//
// Group statisticsComposite = new Group(execHeader, SWT.NONE);
// statisticsComposite.setText(Messages.getString("ProcessComposite2.statsComposite")); //$NON-NLS-1$
// layout = new GridLayout(3, false);
// layout.marginWidth = 0;
// statisticsComposite.setLayout(layout);
// formData = new FormData();
// // formData.right = new FormAttachment(100, 0);
// / formData.left = new FormAttachment(watchBtn, 0, SWT.RIGHT);
// statisticsComposite.setLayoutData(formData);
//
// Composite statisticsButtonComposite = new Composite(statisticsComposite, SWT.NONE);
// layout = new GridLayout(1, false);
// layout.marginWidth = 0;
// statisticsButtonComposite.setLayout(layout);
// statisticsButtonComposite.setLayoutData(new GridData(GridData.FILL_VERTICAL));
// perfBtn = new Button(statisticsButtonComposite, SWT.CHECK);
// perfBtn.setText(Messages.getString("ProcessComposite.stat")); //$NON-NLS-1$
// perfBtn.setToolTipText(Messages.getString("ProcessComposite.statHint")); //$NON-NLS-1$
// perfBtn.setEnabled(false);
// perfBtn.setSelection(RunProcessPlugin.getDefault().getPreferenceStore().getBoolean(
// RunProcessPrefsConstants.ISSTATISTICSRUN));
// traceBtn = new Button(statisticsButtonComposite, SWT.CHECK);
// traceBtn.setText(Messages.getString("ProcessComposite.trace")); //$NON-NLS-1$
// traceBtn.setToolTipText(Messages.getString("ProcessComposite.traceHint")); //$NON-NLS-1$
// traceBtn.setEnabled(false);
// traceBtn
// .setSelection(RunProcessPlugin.getDefault().getPreferenceStore().getBoolean(RunProcessPrefsConstants.ISTRACESRUN));
clearTracePerfBtn = new Button(execHeader, SWT.PUSH);
//$NON-NLS-1$
clearTracePerfBtn.setText(Messages.getString("ProcessComposite.clear"));
//$NON-NLS-1$
clearTracePerfBtn.setToolTipText(Messages.getString("ProcessComposite.clearHint"));
clearTracePerfBtn.setImage(ImageProvider.getImage(RunProcessPlugin.imageDescriptorFromPlugin(RunProcessPlugin.PLUGIN_ID, //$NON-NLS-1$
"icons/process_stat_clear.gif")));
clearTracePerfBtn.setEnabled(false);
formData = new FormData();
formData.top = new FormAttachment(killBtn, 0, SWT.TOP);
formData.left = new FormAttachment(killBtn, 0, SWT.RIGHT);
formData.right = new FormAttachment(killBtn, 10 + 70, SWT.RIGHT);
formData.height = 30;
clearTracePerfBtn.setLayoutData(formData);
consoleText = new StyledText(execContent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
consoleText.setWordWrap(true);
data = new GridData(GridData.FILL_BOTH);
data.horizontalSpan = 2;
data.minimumHeight = MINIMUM_HEIGHT;
data.minimumWidth = MINIMUM_WIDTH;
layouData = new FormData();
layouData.left = new FormAttachment(0, 10);
layouData.right = new FormAttachment(100, 0);
layouData.top = new FormAttachment(0, 50);
layouData.bottom = new FormAttachment(100, -30);
consoleText.setLayoutData(layouData);
// feature 6875, add searching capability, nma
consoleText.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent evt) {
// select all
if ((evt.stateMask == SWT.CTRL) && (evt.keyCode == 'a')) {
if (consoleText.getText().length() > 0) {
consoleText.setSelection(0, (consoleText.getText().length() - 1));
}
} else // search special string value
if ((evt.stateMask == SWT.CTRL) && (evt.keyCode == 'f')) {
FindDialog td = new FindDialog(Display.getCurrent().getActiveShell());
td.setConsoleText(consoleText);
td.setBlockOnOpen(true);
td.open();
}
}
@Override
public void keyReleased(KeyEvent arg0) {
}
});
// see feature 0004895: Font size of the output console are very small
setConsoleFont();
IPreferenceStore preferenceStore = CorePlugin.getDefault().getPreferenceStore();
preferenceStore.addPropertyChangeListener(new IPropertyChangeListener() {
@Override
public void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event) {
if (TalendDesignerPrefConstants.CONSOLT_TEXT_FONT.endsWith(event.getProperty())) {
setConsoleFont();
}
}
});
// execScroll.setMinSize(execContent.computeSize(SWT.DEFAULT, SWT.DEFAULT));
// sash.setSashWidth(1);
// sash.setWeights(new int[] { 7, 1, H_WEIGHT });
pcl = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
runProcessContextChanged(evt);
}
};
streamListener = new IStreamListener() {
@Override
public void streamAppended(String text, IStreamMonitor monitor) {
IProcessMessage message = new ProcessMessage(ProcessMessage.MsgType.STD_OUT, text);
processContext.addDebugResultToConsole(message);
}
};
addListeners();
createLineLimitedControl(execContent);
}
use of org.eclipse.debug.core.model.IStreamMonitor in project linuxtools by eclipse.
the class DockerComposeConsole method setDockerComposeProcess.
public void setDockerComposeProcess(final IProcess dockerComposeProcess) {
this.dockerComposeProcess = dockerComposeProcess;
// activate and clear the console if it has previous content
activate();
clearConsole();
// catch up with the content that was already output by the Java Process
writeContentInConsole(dockerComposeProcess.getStreamsProxy().getOutputStreamMonitor().getContents());
// then follow the streams
dockerComposeProcess.getStreamsProxy().getOutputStreamMonitor().addListener(new IStreamListener() {
@Override
public void streamAppended(final String text, final IStreamMonitor monitor) {
writeContentInConsole(text);
}
});
dockerComposeProcess.getStreamsProxy().getErrorStreamMonitor().addListener(new IStreamListener() {
@Override
public void streamAppended(final String text, final IStreamMonitor monitor) {
writeContentInConsole(text);
}
});
}
use of org.eclipse.debug.core.model.IStreamMonitor in project erlide_eclipse by erlang.
the class ToolExecutor method run_0.
@Deprecated
public ToolResults run_0(final String cmd0, final String args, final String wdir, final ProgressCallback progressCallback, final BuildNotifier notifier) {
final String cmd = new Path(cmd0).isAbsolute() ? cmd0 : ToolExecutor.getToolLocation(cmd0);
if (cmd == null) {
ErlLogger.warn("Tool '" + cmd0 + "' can't be found in $PATH");
return new ToolResults();
}
final ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
final ILaunchConfigurationType type = launchManager.getLaunchConfigurationType(IExternalToolConstants.ID_PROGRAM_BUILDER_LAUNCH_CONFIGURATION_TYPE);
if (type == null) {
return null;
}
try {
final ILaunchConfigurationWorkingCopy launchConfig = type.newInstance(null, launchManager.generateLaunchConfigurationName("erlTool"));
launchConfig.setAttribute(IExternalToolConstants.ATTR_LOCATION, cmd);
launchConfig.setAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, args);
launchConfig.setAttribute(IExternalToolConstants.ATTR_WORKING_DIRECTORY, wdir);
launchConfig.setAttribute(IExternalToolConstants.ATTR_LAUNCH_IN_BACKGROUND, true);
launchConfig.setAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, true);
final ILaunch myLaunch = launchConfig.launch(ILaunchManager.RUN_MODE, new NullProgressMonitor(), false, false);
final ToolResults result = new ToolResults();
if (myLaunch.getProcesses().length == 0) {
ErlLogger.error("Tool process was not created?!");
return null;
}
final IProcess process = myLaunch.getProcesses()[0];
process.getStreamsProxy().getOutputStreamMonitor().addListener(new IStreamListener() {
@Override
public void streamAppended(final String text, final IStreamMonitor mon) {
final List<String> lines = Arrays.asList(text.split("\n"));
if (progressCallback != null) {
for (final String line : lines) {
progressCallback.stdout(line);
}
}
}
});
process.getStreamsProxy().getErrorStreamMonitor().addListener(new IStreamListener() {
@Override
public void streamAppended(final String text, final IStreamMonitor mon) {
final List<String> lines = Arrays.asList(text.split("\n"));
if (progressCallback != null) {
for (final String line : lines) {
progressCallback.stderr(line);
}
}
}
});
boolean done = false;
try {
Thread.sleep(60);
} catch (final InterruptedException e1) {
}
final boolean canceled = notifier != null && notifier.isCanceled();
while (!done && !canceled) {
try {
result.exit = process.getExitValue();
done = true;
} catch (final Exception e) {
try {
Thread.sleep(60);
} catch (final InterruptedException e1) {
}
}
}
if (canceled) {
process.terminate();
}
return result;
} catch (final CoreException e) {
ErlLogger.error(e);
return null;
}
}
use of org.eclipse.debug.core.model.IStreamMonitor in project erlide_eclipse by erlang.
the class Backend method getShell.
@Override
public IBackendShell getShell(final String id) {
final IBackendShell shell = shellManager.openShell(id);
final IStreamsProxy proxy = getStreamsProxy();
if (proxy != null) {
final IStreamMonitor errorStreamMonitor = proxy.getErrorStreamMonitor();
errorStreamMonitor.addListener(new IStreamListener() {
@Override
public void streamAppended(final String text, final IStreamMonitor monitor) {
shell.add(text, IoRequestKind.STDERR);
}
});
final IStreamMonitor outputStreamMonitor = proxy.getOutputStreamMonitor();
outputStreamMonitor.addListener(new IStreamListener() {
@Override
public void streamAppended(final String text, final IStreamMonitor monitor) {
shell.add(text, IoRequestKind.STDOUT);
}
});
}
return shell;
}
use of org.eclipse.debug.core.model.IStreamMonitor in project titan.EclipsePlug-ins by eclipse.
the class SingleExecutor method createProcess.
/**
* Executes the executable parameterized with the configuration file describing the test session.
*
*@param actualConfigPath the path of the configuration file to call the executable with.
*
* @see #startExecution(boolean)
*/
private void createProcess(final String actualConfigPath) {
ProcessBuilder pb = new ProcessBuilder();
Map<String, String> env = pb.environment();
if (!appendEnvironmentalVariables) {
env.clear();
}
if (null != environmentalVariables) {
try {
EnvironmentHelper.resolveVariables(env, environmentalVariables);
} catch (CoreException e) {
ErrorReporter.logExceptionStackTrace(e);
}
}
final File executableFile = new File(executablePath);
if (!executableFile.exists()) {
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
MessageDialog.openError(null, "Execution failed", "The executable `" + executableFile + "' does not exist.");
}
});
}
EnvironmentHelper.setTitanPath(env);
EnvironmentHelper.set_LICENSE_FILE_PATH(env);
EnvironmentHelper.set_LD_LIBRARY_PATH(DynamicLinkingHelper.getProject(projectName), env);
MessageConsole console = TITANDebugConsole.getConsole();
List<String> command = new ArrayList<String>();
command.add("sh");
command.add("-c");
command.add(" sleep 1; cd '" + PathConverter.convert(workingdirectoryPath, true, console) + "'; '" + PathConverter.convert(executablePath, true, console) + "' '" + PathConverter.convert(actualConfigPath, true, console) + "'");
MessageConsoleStream stream = TITANConsole.getConsole().newMessageStream();
for (String c : command) {
stream.print(c + ' ');
}
stream.println();
pb.command(command);
pb.redirectErrorStream(true);
if (null != workingdirectoryPath) {
File workingDir = new File(workingdirectoryPath);
if (!workingDir.exists()) {
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
MessageDialog.openError(null, "Execution failed", "The working directory `" + workingdirectoryPath + "' does not exist.");
}
});
}
pb.directory(workingDir);
}
try {
proc = pb.start();
if (null != mainControllerRoot) {
ILaunch launch = ((LaunchElement) mainControllerRoot.parent()).launch();
process = DebugPlugin.newProcess(launch, proc, MAIN_CONTROLLER);
}
IStreamsProxy proxy = process.getStreamsProxy();
if (null != proxy) {
IStreamMonitor outputstreammonitor = proxy.getOutputStreamMonitor();
IStreamListener listener = new IStreamListener() {
@Override
public void streamAppended(final String text, final IStreamMonitor monitor) {
processConsoleOutput(text);
}
};
if (null != outputstreammonitor) {
String temp = outputstreammonitor.getContents();
processConsoleOutput(temp);
outputstreammonitor.addListener(listener);
}
}
} catch (IOException e) {
ErrorReporter.logExceptionStackTrace(e);
proc = null;
}
}
Aggregations