@Override public void onCalculatorEvent( @Nonnull CalculatorEventData calculatorEventData, @Nonnull CalculatorEventType calculatorEventType, @Nullable Object data) { final Context context; final Object source = calculatorEventData.getSource(); if (source instanceof Context) { context = ((Context) source); } else { context = App.getApplication(); } switch (calculatorEventType) { case show_create_matrix_dialog: App.getUiThreadExecutor() .execute( new Runnable() { @Override public void run() { final Intent intent = new Intent(context, CalculatorMatrixActivity.class); Android.addIntentFlags(intent, false, context); context.startActivity(intent); } }); break; case show_create_var_dialog: App.getUiThreadExecutor() .execute( new Runnable() { @Override public void run() { CalculatorActivityLauncher.tryCreateVar(context); } }); break; case show_create_function_dialog: App.getUiThreadExecutor() .execute( new Runnable() { @Override public void run() { CalculatorActivityLauncher.tryCreateFunction(context); } }); break; case show_evaluation_error: final String errorMessage = (String) data; if (errorMessage != null) { App.getUiThreadExecutor() .execute( new Runnable() { @Override public void run() { showEvaluationError(context, errorMessage); } }); } break; case show_wiki_description: App.getUiThreadExecutor() .execute( new Runnable() { @Override public void run() { final Intent intent = new Intent(context, CalculatorWikiActivity.class); Android.addIntentFlags(intent, false, context); context.startActivity(intent); } }); break; case show_message_dialog: final DialogData dialogData = (DialogData) data; if (dialogData != null) { App.getUiThreadExecutor() .execute( new Runnable() { @Override public void run() { CalculatorDialogActivity.showDialog(context, dialogData); } }); } break; } }