use of org.talend.designer.runprocess.ProcessMessage in project tdi-studio-se by Talend.
the class DebugProcessTosComposite method debug.
@Override
public void debug() {
if (manager.getClearBeforeExec()) {
processContext.clearMessages();
}
setHideconsoleLine(false);
if ((processContext.getProcess()) instanceof org.talend.designer.core.ui.editor.process.Process) {
((org.talend.designer.core.ui.editor.process.Process) processContext.getProcess()).checkDifferenceWithRepository();
}
// final IPreferenceStore preferenceStore = DebugUIPlugin.getDefault().getPreferenceStore();
final IPreferenceStore preferenceStore = DebugUITools.getPreferenceStore();
final boolean oldValueConsoleOnOut = preferenceStore.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT);
final boolean oldValueConsoleOnErr = preferenceStore.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT, false);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR, false);
// java debug to collect when tos
int num = RunProcessPlugin.getDefault().getPreferenceStore().getInt(RunProcessTokenCollector.TOS_COUNT_DEBUG_RUNS.getPrefKey());
RunProcessPlugin.getDefault().getPreferenceStore().setValue(RunProcessTokenCollector.TOS_COUNT_DEBUG_RUNS.getPrefKey(), num + 1);
checkSaveBeforeRunSelection();
if (contextComposite.promptConfirmLauch()) {
setRunnable(false);
final IContext context = contextComposite.getSelectedContext();
IRunnableWithProgress worker = new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) {
IProcessor processor = ProcessorUtilities.getProcessor(processContext.getProcess(), processContext.getProcess().getProperty(), context);
//$NON-NLS-1$
monitor.beginTask("Launching debugger", IProgressMonitor.UNKNOWN);
try {
// use this function to generate childrens also.
ProcessorUtilities.generateCode(processContext.getProcess(), context, false, false, true, monitor);
ILaunchConfiguration config = ((Processor) processor).getDebugConfiguration(processContext.getStatisticsPort(), processContext.getTracesPort(), null);
// code is correct before launching
if (!JobErrorsChecker.hasErrors(DebugProcessTosComposite.this.getShell())) {
if (config != null) {
// PlatformUI.getWorkbench().
// getActiveWorkbenchWindow
// ().addPerspectiveListener(new
// DebugInNewWindowListener());
DebugUITools.launch(config, ILaunchManager.DEBUG_MODE);
} else {
//$NON-NLS-1$
MessageDialog.openInformation(//$NON-NLS-1$
getShell(), //$NON-NLS-1$
Messages.getString("ProcessDebugDialog.debugBtn"), //$NON-NLS-1$
Messages.getString("ProcessDebugDialog.errortext"));
}
}
} catch (ProcessorException e) {
IStatus status = new Status(IStatus.ERROR, RunProcessPlugin.PLUGIN_ID, IStatus.OK, "Debug launch failed.", //$NON-NLS-1$
e);
RunProcessPlugin.getDefault().getLog().log(status);
//$NON-NLS-1$ //$NON-NLS-2$
MessageDialog.openError(getShell(), Messages.getString("ProcessDebugDialog.debugBtn"), "");
} finally {
monitor.done();
}
}
};
IProgressService progressService = PlatformUI.getWorkbench().getProgressService();
try {
progressService.runInUI(PlatformUI.getWorkbench().getProgressService(), worker, ResourcesPlugin.getWorkspace().getRoot());
} catch (InvocationTargetException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
} catch (InterruptedException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
}
debugMode = true;
try {
Thread thread = new Thread() {
@Override
public void run() {
while (debugMode) {
final IProcess process = DebugUITools.getCurrentProcess();
if (process != null && process.isTerminated()) {
Display dis = Display.getCurrent();
if (dis == null) {
dis = Display.getDefault();
}
dis.asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(true);
if (!killBtn.isDisposed() && killBtn != null) {
killBtn.setEnabled(false);
}
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT, oldValueConsoleOnOut);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR, oldValueConsoleOnErr);
if (isAddedStreamListener) {
process.getStreamsProxy().getOutputStreamMonitor().removeListener(streamListener);
isAddedStreamListener = false;
if (processContext.isRunning()) {
//$NON-NLS-1$
final String endingPattern = Messages.getString("ProcessComposite.endPattern");
MessageFormat mf = new MessageFormat(endingPattern);
String byeMsg;
try {
byeMsg = //$NON-NLS-1$
"\n" + mf.format(new Object[] { processContext.getProcess().getName(), new Date(), new Integer(process.getExitValue()) });
processContext.addDebugResultToConsole(new ProcessMessage(MsgType.CORE_OUT, byeMsg));
} catch (DebugException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
processContext.setRunning(false);
}
}
debugMode = false;
}
});
} else {
if (process != null) {
// (one at leat) process
// still running
Display dis = Display.getCurrent();
if (dis == null) {
dis = Display.getDefault();
}
dis.asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(false);
if (!killBtn.isDisposed() && killBtn != null) {
killBtn.setEnabled(true);
}
processContext.setRunning(true);
processContext.setDebugProcess(process);
if (!isAddedStreamListener) {
process.getStreamsProxy().getOutputStreamMonitor().addListener(streamListener);
// if (clearBeforeExec.getSelection()) {
// processContext.clearMessages();
// }
// if (watchBtn.getSelection()) {
// processContext.switchTime();
// }
ClearPerformanceAction clearPerfAction = new ClearPerformanceAction();
clearPerfAction.setProcess(processContext.getProcess());
clearPerfAction.run();
ClearTraceAction clearTraceAction = new ClearTraceAction();
clearTraceAction.setProcess(processContext.getProcess());
clearTraceAction.run();
isAddedStreamListener = true;
//$NON-NLS-1$
final String startingPattern = Messages.getString("ProcessComposite.startPattern");
MessageFormat mf = new MessageFormat(startingPattern);
String welcomeMsg = mf.format(new Object[] { processContext.getProcess().getName(), new Date() });
processContext.addDebugResultToConsole(new ProcessMessage(MsgType.CORE_OUT, //$NON-NLS-1$
welcomeMsg + "\r\n"));
}
}
});
} else {
// no process running
Display dis = Display.getCurrent();
if (dis == null) {
dis = Display.getDefault();
}
dis.asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(true);
if (!killBtn.isDisposed() && killBtn != null) {
killBtn.setEnabled(false);
}
}
});
}
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
}
}
};
thread.start();
} catch (Exception e) {
ExceptionHandler.process(e);
processContext.addErrorMessage(e);
kill();
}
}
use of org.talend.designer.runprocess.ProcessMessage in project tdi-studio-se by Talend.
the class DebugProcessTosComposite method getAllErrorMess.
@Override
public void getAllErrorMess(IProcessMessage psMess) {
if (psMess.getType().equals(MsgType.STD_ERR)) {
String mess = psMess.getContent();
//$NON-NLS-1$
String[] linesMess = mess.split("\n");
StringBuffer currentMess = new StringBuffer();
String currenctJobName = processContext.getProcess().getName();
for (int i = 0; i < linesMess.length; i++) {
String tRunJobName = currenctJobName;
String linemess = linesMess[i].trim();
//$NON-NLS-1$
Pattern pattern = Pattern.compile("^Exception\\s*in\\s*component\\s*(\\w)+_\\d$");
Matcher m = pattern.matcher(linemess);
if (m.find()) {
List<Node> runjobList = getTRunjobList(processContext.getProcess());
//$NON-NLS-1$
String[] allwords = linemess.split("\\s");
String componentName = allwords[allwords.length - 1];
if (runjobList.size() > 0) {
int currentI = i;
if (currentI + 1 < linesMess.length - 1) {
// && currentI < linesMess.length - 1);
for (int j = currentI + 1; j < linesMess.length - 1; j++) {
tRunJobName = linesMess[j];
if ((tRunJobName.contains(componentName))) {
break;
}
}
if (tRunJobName.lastIndexOf("(") != -1 && tRunJobName.lastIndexOf(".java") != -1) {
tRunJobName = tRunJobName.substring(tRunJobName.lastIndexOf("(") + 1, tRunJobName.lastIndexOf(".java"));
} else {
tRunJobName = currenctJobName;
}
}
}
if (tRunJobName != null && tRunJobName.equals(currenctJobName)) {
if (i == 0) {
errorMessMap.put(componentName, psMess);
} else {
for (int j = i; j < linesMess.length; j++) {
//$NON-NLS-1$
currentMess.append(linesMess[j] + "\n");
}
IProcessMessage currentProMess = new ProcessMessage(MsgType.STD_ERR, currentMess.toString());
errorMessMap.put(componentName, currentProMess);
}
}
// break;
}
}
}
refreshNode(psMess);
}
use of org.talend.designer.runprocess.ProcessMessage in project tdi-studio-se by Talend.
the class ProcessComposite method doAppendToConsole.
private void doAppendToConsole(Collection<IProcessMessage> messages) {
if (consoleText == null || consoleText.isDisposed()) {
return;
}
int linesLimit = getConsoleRowLimit();
int currentLines = consoleText.getLineCount();
if (linesLimit > 0 && currentLines > linesLimit) {
return;
}
List<StyleRange> styles = new ArrayList<StyleRange>();
StringBuffer consoleMsgText = new StringBuffer();
int startLength = consoleText.getText().length();
for (StyleRange curStyle : consoleText.getStyleRanges()) {
styles.add(curStyle);
}
boolean newStyle = false;
for (IProcessMessage message : messages) {
if (message.getType() == MsgType.STD_OUT) {
//$NON-NLS-1$
String[] splitLines = message.getContent().split("\n");
for (String lineContent : splitLines) {
if (linesLimit > 0 && currentLines > linesLimit) {
return;
}
currentLines++;
IProcessMessage lineMsg = new ProcessMessage(getLog4jMsgType(MsgType.STD_OUT, lineContent), lineContent);
newStyle = newStyle | processMessage(consoleMsgText, lineMsg, startLength, styles);
}
} else {
if (linesLimit > 0 && currentLines > linesLimit) {
return;
}
currentLines++;
// count as only one line for the error, to avoid the error to be cut from original
newStyle = newStyle | processMessage(consoleMsgText, message, startLength, styles);
}
}
if (messages.size() > 1) {
consoleText.setText(consoleText.getText() + consoleMsgText);
} else {
consoleText.append(consoleMsgText.toString());
}
if (newStyle) {
consoleText.setStyleRanges(styles.toArray(new StyleRange[0]));
}
}
use of org.talend.designer.runprocess.ProcessMessage 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.talend.designer.runprocess.ProcessMessage in project tdi-studio-se by Talend.
the class ProcessComposite method debug.
public void debug() {
setHideconsoleLine(false);
if ((processContext.getProcess()) instanceof org.talend.designer.core.ui.editor.process.Process) {
((org.talend.designer.core.ui.editor.process.Process) processContext.getProcess()).checkDifferenceWithRepository();
}
// final IPreferenceStore preferenceStore = DebugUIPlugin.getDefault().getPreferenceStore();
final IPreferenceStore preferenceStore = DebugUITools.getPreferenceStore();
final boolean oldValueConsoleOnOut = preferenceStore.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT);
final boolean oldValueConsoleOnErr = preferenceStore.getBoolean(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT, false);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR, false);
checkSaveBeforeRunSelection();
if (contextComposite.promptConfirmLauch()) {
setRunnable(false);
final IContext context = contextComposite.getSelectedContext();
IRunnableWithProgress worker = new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) {
IProcessor processor = ProcessorUtilities.getProcessor(processContext.getProcess(), processContext.getProcess().getProperty(), context);
//$NON-NLS-1$
monitor.beginTask("Launching debugger", IProgressMonitor.UNKNOWN);
try {
// use this function to generate childrens also.
ProcessorUtilities.generateCode(processContext.getProcess(), context, false, false, true, monitor);
ILaunchConfiguration config = ((Processor) processor).getDebugConfiguration(processContext.getStatisticsPort(), processContext.getTracesPort(), null);
// code is correct before launching
if (!JobErrorsChecker.hasErrors(ProcessComposite.this.getShell())) {
if (config != null) {
// PlatformUI.getWorkbench().
// getActiveWorkbenchWindow
// ().addPerspectiveListener(new
// DebugInNewWindowListener());
DebugUITools.launch(config, ILaunchManager.DEBUG_MODE);
} else {
//$NON-NLS-1$
MessageDialog.openInformation(//$NON-NLS-1$
getShell(), //$NON-NLS-1$
Messages.getString("ProcessDebugDialog.debugBtn"), //$NON-NLS-1$
Messages.getString("ProcessDebugDialog.errortext"));
}
}
} catch (ProcessorException e) {
IStatus status = new Status(IStatus.ERROR, RunProcessPlugin.PLUGIN_ID, IStatus.OK, "Debug launch failed.", //$NON-NLS-1$
e);
RunProcessPlugin.getDefault().getLog().log(status);
//$NON-NLS-1$ //$NON-NLS-2$
MessageDialog.openError(getShell(), Messages.getString("ProcessDebugDialog.debugBtn"), "");
} finally {
monitor.done();
}
}
};
IProgressService progressService = PlatformUI.getWorkbench().getProgressService();
try {
progressService.runInUI(PlatformUI.getWorkbench().getProgressService(), worker, ResourcesPlugin.getWorkspace().getRoot());
} catch (InvocationTargetException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
} catch (InterruptedException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
}
debugMode = true;
try {
Thread thread = new Thread() {
@Override
public void run() {
while (debugMode) {
final IProcess process = DebugUITools.getCurrentProcess();
if (process != null && process.isTerminated()) {
getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(true);
killBtn.setEnabled(false);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_OUT, oldValueConsoleOnOut);
preferenceStore.setValue(IDebugPreferenceConstants.CONSOLE_OPEN_ON_ERR, oldValueConsoleOnErr);
if (isAddedStreamListener) {
process.getStreamsProxy().getOutputStreamMonitor().removeListener(streamListener);
isAddedStreamListener = false;
if (processContext.isRunning()) {
//$NON-NLS-1$
final String endingPattern = Messages.getString("ProcessComposite.endPattern");
MessageFormat mf = new MessageFormat(endingPattern);
String byeMsg;
try {
byeMsg = //$NON-NLS-1$
"\n" + mf.format(new Object[] { processContext.getProcess().getName(), new Date(), new Integer(process.getExitValue()) });
processContext.addDebugResultToConsole(new ProcessMessage(MsgType.CORE_OUT, byeMsg));
} catch (DebugException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
processContext.setRunning(false);
}
}
debugMode = false;
}
});
} else {
if (process != null) {
// (one at leat) process
// still running
getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(false);
killBtn.setEnabled(true);
processContext.setRunning(true);
processContext.setDebugProcess(process);
if (!isAddedStreamListener) {
process.getStreamsProxy().getOutputStreamMonitor().addListener(streamListener);
// if (clearBeforeExec.getSelection()) {
// processContext.clearMessages();
// }
// if (watchBtn.getSelection()) {
// processContext.switchTime();
// }
ClearPerformanceAction clearPerfAction = new ClearPerformanceAction();
clearPerfAction.setProcess(processContext.getProcess());
clearPerfAction.run();
ClearTraceAction clearTraceAction = new ClearTraceAction();
clearTraceAction.setProcess(processContext.getProcess());
clearTraceAction.run();
isAddedStreamListener = true;
//$NON-NLS-1$
final String startingPattern = Messages.getString("ProcessComposite.startPattern");
MessageFormat mf = new MessageFormat(startingPattern);
String welcomeMsg = mf.format(new Object[] { processContext.getProcess().getName(), new Date() });
processContext.addDebugResultToConsole(new ProcessMessage(MsgType.CORE_OUT, //$NON-NLS-1$
welcomeMsg + "\r\n"));
}
}
});
} else {
// no process running
getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
setRunnable(true);
killBtn.setEnabled(false);
}
});
}
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// e.printStackTrace();
ExceptionHandler.process(e);
}
}
}
};
thread.start();
} catch (Exception e) {
ExceptionHandler.process(e);
processContext.addErrorMessage(e);
kill();
}
}
Aggregations