@Override public void run() { Expression.SetCallback callback = new Expression.SetCallback() { @Override public void done(final String errorMessage) { if (errorMessage == null) { if (addWatchExpression) { IExpressionManager expressionManager = DebugPlugin.getDefault().getExpressionManager(); IWatchExpression watchExpression = expressionManager.newWatchExpression(expression.getWatchExpression()); expressionManager.addExpression(watchExpression); } } else { parentShell .getDisplay() .asyncExec( new Runnable() { @Override public void run() { MessageBox messageBox = new MessageBox(parentShell); messageBox.setText(Messages.LogicImpl_RESULT_FAILURE_TITLE); messageBox.setMessage(errorMessage); messageBox.open(); } }); } } }; expression.execute(previewContext, callback); }