blob: d131cdf8550cbb6a0055b3b267dd517b85db7f87 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2017 CEA LIST.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Alain Faivre (CEA LIST) alain.faivre@cea.fr - Initial Implementation (tab-based, inserted in Run Configurations dialog)
* Erwan Mahe (CEA LIST) erwan.mahe@cea.fr - New API (free-composite-based, no type assumptions on parent)
*******************************************************************************/
package org.eclipse.efm.ui.views.launchconfigurations.components;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.efm.core.workflow.AbstractLaunchDelegate;
import org.eclipse.efm.core.workflow.Activator;
import org.eclipse.efm.core.workflow.ToolConstants;
import org.eclipse.efm.core.workflow.common.ConsoleVerbosityKind;
import org.eclipse.efm.ui.views.editors.impls.BooleanFieldEditor;
import org.eclipse.efm.ui.views.editors.impls.StringFieldEditor;
import org.eclipse.efm.ui.views.utils.ILaunchConfigurationGUIelement;
import org.eclipse.efm.ui.views.utils.SWTFactory;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
public class DebugCompositeMaker extends AbstractCompositeMaker {
// Console Log
private static final String[] CONSOLE_LEVEL_COMBO_ITEMS = new String[] {
ConsoleVerbosityKind.SILENT.getLiteral(),
ConsoleVerbosityKind.MINIMUM.getLiteral(),
ConsoleVerbosityKind.MEDIUM.getLiteral(),
ConsoleVerbosityKind.MAXIMUM.getLiteral()
};
// Arrays.stream(ConsoleVerbosityKind.values()).map(
// ConsoleVerbosityKind::getLiteral).toArray(String[]::new);
private Combo fConsoleLevelCombo = null;
private ConsoleVerbosityKind fConsoleLevel = ConsoleVerbosityKind.MINIMUM;
// First Symbex Workflow Page
private BooleanFieldEditor fFirstParsedModelTextualEnabledBooleanField;
// private StringFieldEditor fFirstparsedModelTextualFileNameStringField;
private BooleanFieldEditor fFirstParsedModelGraphizEnabledBooleanField;
// private StringFieldEditor fFirstParsedModelGraphizFileNameStringField;
private BooleanFieldEditor fFirstCompiledModelTextualEnabledBooleanField;
// private StringFieldEditor fFirstCompiledModelTextualFileNameStringField;
private boolean fEnabledSymbexDeveloperMode;
private BooleanFieldEditor fFirstSymbexOutputTextualEnabledBooleanField;
// private StringFieldEditor fFirstSymbexOutputTextualFileNameStringField;
private BooleanFieldEditor fFirstSymbexOutputGraphizEnabledBooleanField;
// private StringFieldEditor fFirstSymbexOutputGraphizFileNameStringField;
private StringFieldEditor fFirstSymbexOutputGraphizTraceStringField;
private StringFieldEditor fFirstSymbexOutputGraphizFormatStringField;
private Composite fCompositeFirstSymbexOutputGraphiz;
// Second Symbex Workflow Page
// private BooleanFieldEditor fSecondParsedModelGraphizEnabledBooleanField;
//// private StringFieldEditor fSecondParsedModelGraphizFileNameStringField;
//
// private BooleanFieldEditor fSecondParsedModelTextualEnabledBooleanField;
//// private StringFieldEditor fSecondparsedModelTextualFileNameStringField;
//
// private BooleanFieldEditor fSecondCompiledModelTextualEnabledBooleanField;
//// private StringFieldEditor fSecondCompiledModelTextualFileNameStringField;
private BooleanFieldEditor fSecondSymbexOutputTextualEnabledBooleanField;
// private StringFieldEditor fSecondSymbexOutputTextualFileNameStringField;
private BooleanFieldEditor fSecondSymbexOutputGraphizEnabledBooleanField;
// private StringFieldEditor fSecondSymbexOutputGraphizFileNameStringField;
private StringFieldEditor fSecondSymbexOutputGraphizTraceStringField;
private StringFieldEditor fSecondSymbexOutputGraphizFormatStringField;
private Composite fCompositeSecondSymbexOutputGraphiz;
public DebugCompositeMaker(ILaunchConfigurationGUIelement masterGUIelement) {
super(masterGUIelement);
if( AbstractLaunchDelegate.ENABLED_SYMBEX_DEVELOPER_MODE_OPTION ) {
IPreferenceStore prefs =
Activator.getDefault().getPreferenceStore();
fEnabledSymbexDeveloperMode = prefs.getBoolean(
ToolConstants.PREF_SYMBEX_DEVELOPER_MODE);
}
else {
fEnabledSymbexDeveloperMode = false;
}
}
// ======================================================================================
// Miscellaneous handling
// ======================================================================================
private class TabListener extends SelectionAdapter implements ModifyListener {
/* (non-Javadoc)
* @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
*/
@Override
public void modifyText(ModifyEvent e) {
propagateGUIupdate();
}
/* (non-Javadoc)
* @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
*/
@Override
public void widgetSelected(SelectionEvent e) {
final Object source= e.getSource();
if (source == fConsoleLevelCombo) {
handleConsoleLevelSelectionChange();
}
}
}
private TabListener fListener= new TabListener();
private void handleConsoleLevelSelectionChange() {
fConsoleLevel = ConsoleVerbosityKind.get( fConsoleLevelCombo.getText() );
if( fConsoleLevel == null ) {
fConsoleLevel = ConsoleVerbosityKind.MINIMUM;
}
propagateGUIupdate();
}
// ======================================================================================
// Graphical Components Creation Methods
// ======================================================================================
@Override
public Composite createControlMain(Composite parent) {
Composite simpleComposite = SWTFactory.createComposite(parent,
parent.getFont(), 1, 1, GridData.FILL_HORIZONTAL, 0, 0);
createDebugTracePage(simpleComposite);
return simpleComposite;
}
private void createDebugTracePage(Composite parent) {
Group group = SWTFactory.createGroup(parent,
"Debug Trace", 1, 1, GridData.FILL_HORIZONTAL);
createConsoleLogComponent(group);
createFirstSymbexWorkflowPage(group);
createSecondSymbexWorkflowtPage(group);
}
private void createConsoleLogComponent(Composite parent) {
Group group = SWTFactory.createGroup(parent,
"Console Log", 2, 1, GridData.FILL_HORIZONTAL);
SWTFactory.createLabel(group, "&Verbose Level:", 1);
fConsoleLevelCombo = SWTFactory.createCombo(group,
SWT.DROP_DOWN | SWT.READ_ONLY, 1, CONSOLE_LEVEL_COMBO_ITEMS);
fConsoleLevelCombo.addSelectionListener(fListener);
}
public void createFirstSymbexWorkflowPage(Composite parent) {
Group group = SWTFactory.createGroup(parent,
"First Stage Symbex Workflow Page",
1, 1, GridData.FILL_HORIZONTAL);
createFirstInputModelGraphicComponent(group);
createFirstSymbexOutputComponent(group);
}
private void createFirstInputModelGraphicComponent(Composite parent) {
Group group = SWTFactory.createGroup(parent,
"Input Model Generated Traces",
1, 1, GridData.FILL_HORIZONTAL);
Composite comp = SWTFactory.createComposite(
group, 1, 1, GridData.FILL_HORIZONTAL);
fFirstParsedModelTextualEnabledBooleanField = new BooleanFieldEditor(
this, ATTR_ENABLED_FIRST_PARSED_MODEL_TEXTUAL_GENERATION,
"&Parsed Model as Textual Representation", comp, false);
fFirstParsedModelGraphizEnabledBooleanField = new BooleanFieldEditor(
this, ATTR_ENABLED_FIRST_PARSED_MODEL_GRAPHVIZ_GENERATION,
"&Parsed Model as <Graphiz> Representation", comp, false);
if( fEnabledSymbexDeveloperMode ) {
fFirstCompiledModelTextualEnabledBooleanField =
new BooleanFieldEditor(this,
ATTR_ENABLED_FIRST_COMPILED_MODEL_TEXTUAL_GENERATION,
"&Compiled Model as Textual Representation", comp, false);
}
}
private void createFirstSymbexOutputComponent(Composite parent) {
Group group = SWTFactory.createGroup(parent,
"Symbex Output Generated Traces",
1, 1, GridData.FILL_HORIZONTAL);
Composite comp = SWTFactory.createComposite(
group, 1, 1, GridData.FILL_HORIZONTAL);
fFirstSymbexOutputTextualEnabledBooleanField = new BooleanFieldEditor(
this, ATTR_ENABLED_FIRST_SYMBEX_OUTPUT_TEXTUAL_GENERATION,
"&Basic Textual Representation", comp, false);
group = SWTFactory.createGroup(comp,
"Symbex Output Generated Graphic Traces",
1, 1, GridData.FILL_HORIZONTAL);
comp = SWTFactory.createComposite(
group, 2, 1, GridData.FILL_HORIZONTAL);
fFirstSymbexOutputGraphizEnabledBooleanField = new BooleanFieldEditor(
this, ATTR_ENABLED_FIRST_SYMBEX_OUTPUT_GRAPHVIZ_GENERATION,
"&<Graphiz> Representation", comp, false);
fCompositeFirstSymbexOutputGraphiz = SWTFactory.createComposite(
comp, 2, 2, GridData.FILL_HORIZONTAL);
fFirstSymbexOutputGraphizTraceStringField = new StringFieldEditor(
this, ATTR_FIRST_SYMBEX_OUTPUT_GRAPHVIZ_TRACE_SPEC,
"&Trace:", fCompositeFirstSymbexOutputGraphiz,
DEFAULT_FIRST_SYMBEX_OUTPUT_GRAPHVIZ_TRACE_SPEC, SWT.MULTI);
fFirstSymbexOutputGraphizFormatStringField = new StringFieldEditor(
this, ATTR_FIRST_SYMBEX_OUTPUT_GRAPHVIZ_FORMAT_SPEC,
"&Format:", fCompositeFirstSymbexOutputGraphiz,
DEFAULT_SYMBEX_OUTPUT_GRAPHVIZ_FORMAT_SPEC,
SWT.MULTI);
}
private void setEnableFirstExecutionPage(boolean checked) {
fCompositeFirstSymbexOutputGraphiz.setVisible(checked);
propagateVisibility(fCompositeFirstSymbexOutputGraphiz, checked);
}
public void createSecondSymbexWorkflowtPage(Composite parent) {
Group group = SWTFactory.createGroup(parent,
"Second Stage Symbex Workflow Page",
1, 1, GridData.FILL_HORIZONTAL);
// createSecondInputModelGraphicComponent(group);
createSecondSymbexOutputComponent(group);
}
// private void createSecondInputModelGraphicComponent(Composite parent) {
// Group group = SWTFactory.createGroup(parent,
// "Input Model Generated Traces",
// 1, 1, GridData.FILL_HORIZONTAL);
//
// Composite comp = SWTFactory.createComposite(
// group, 1, 1, GridData.FILL_HORIZONTAL);
//
// fSecondParsedModelTextualEnabledBooleanField = new BooleanFieldEditor(
// this, ATTR_ENABLED_SECOND_PARSED_MODEL_TEXTUAL_GENERATION,
// "&Parsed Model as Textual Representation", comp, false);
//
// fSecondParsedModelGraphizEnabledBooleanField = new BooleanFieldEditor(
// this, ATTR_ENABLED_SECOND_PARSED_MODEL_GRAPHVIZ_GENERATION,
// "&Parsed Model as <Graphiz> Representation", comp, false);
//
// if( fEnabledSymbexDeveloperMode ) {
// fSecondCompiledModelTextualEnabledBooleanField =
// new BooleanFieldEditor(this,
// ATTR_ENABLED_SECOND_COMPILED_MODEL_TEXTUAL_GENERATION,
// "&Compiled Model as Textual Representation", comp, false);
// }
// }
private void createSecondSymbexOutputComponent(Composite parent) {
Group group = SWTFactory.createGroup(parent,
"Symbex Output Generated Traces",
1, 1, GridData.FILL_HORIZONTAL);
Composite comp = SWTFactory.createComposite(
group, 1, 1, GridData.FILL_HORIZONTAL);
fSecondSymbexOutputTextualEnabledBooleanField = new BooleanFieldEditor(
this, ATTR_ENABLED_SECOND_SYMBEX_OUTPUT_TEXTUAL_GENERATION,
"&Basic Textual Representation", comp, false);
group = SWTFactory.createGroup(comp,
"Symbex Output Generated Graphic Traces",
1, 1, GridData.FILL_HORIZONTAL);
comp = SWTFactory.createComposite(
group, 2, 1, GridData.FILL_HORIZONTAL);
fSecondSymbexOutputGraphizEnabledBooleanField = new BooleanFieldEditor(
this, ATTR_ENABLED_SECOND_SYMBEX_OUTPUT_GRAPHVIZ_GENERATION,
"&<Graphiz> Representation", comp, false);
fCompositeSecondSymbexOutputGraphiz = SWTFactory.createComposite(
comp, 2, 2, GridData.FILL_HORIZONTAL);
fSecondSymbexOutputGraphizTraceStringField = new StringFieldEditor(
this, ATTR_SECOND_SYMBEX_OUTPUT_GRAPHVIZ_TRACE_SPEC,
"&Trace:", fCompositeSecondSymbexOutputGraphiz,
DEFAULT_SECOND_SYMBEX_OUTPUT_GRAPHVIZ_TRACE_SPEC, SWT.MULTI);
fSecondSymbexOutputGraphizFormatStringField = new StringFieldEditor(
this, ATTR_SECOND_SYMBEX_OUTPUT_GRAPHVIZ_FORMAT_SPEC,
"&Format:", fCompositeSecondSymbexOutputGraphiz,
DEFAULT_SYMBEX_OUTPUT_GRAPHVIZ_FORMAT_SPEC, SWT.MULTI);
}
private void setEnableSecondExecutionPage(boolean checked) {
fCompositeSecondSymbexOutputGraphiz.setVisible(checked);
propagateVisibility(fCompositeSecondSymbexOutputGraphiz, checked);
}
// ======================================================================================
// Fields Values Management
// ======================================================================================
@Override
public void setDefaultFieldValues(ILaunchConfigurationWorkingCopy configuration) {
configuration.setAttribute(
ATTR_CONSOLE_LOG_VERBOSE_LEVEL, "MINIMUM");
// First Symbex Workflow Page
// fFirstParsedModelTextualEnabledBooleanField.setDefaults(configuration);
configuration.setAttribute(
ATTR_ENABLED_FIRST_PARSED_MODEL_TEXTUAL_GENERATION, false);
configuration.setAttribute(
ATTR_FIRST_PARSED_MODEL_TEXTUAL_FILENAME,
"model_parsed.xlia");
// fFirstParsedModelGraphizEnabledBooleanField.setDefaults(configuration);
configuration.setAttribute(
ATTR_ENABLED_FIRST_PARSED_MODEL_GRAPHVIZ_GENERATION, false);
configuration.setAttribute(
ATTR_FIRST_PARSED_MODEL_GRAPHVIZ_FILENAME,
"model_parsed_graph.gv");
if( fEnabledSymbexDeveloperMode ) {
// fFirstCompiledModelTextualEnabledBooleanField.setDefaults(configuration);
configuration.setAttribute(
ATTR_ENABLED_FIRST_COMPILED_MODEL_TEXTUAL_GENERATION, false);
configuration.setAttribute(
ATTR_FIRST_COMPILED_MODEL_TEXTUAL_FILENAME,
"phase1_compiled_model.fexe");
}
// fFirstSymbexOutputTextualEnabledBooleanField.setDefaults(configuration);
configuration.setAttribute(
ATTR_ENABLED_FIRST_SYMBEX_OUTPUT_TEXTUAL_GENERATION, false);
configuration.setAttribute(
ATTR_FIRST_SYMBEX_OUTPUT_TEXTUAL_FILENAME,
DEFAULT_FIRST_SYMBEX_OUTPUT_TEXTUAL_FILENAME);
// fFirstSymbexOutputGraphizEnabledBooleanField.setDefaults(configuration);
configuration.setAttribute(
ATTR_ENABLED_FIRST_SYMBEX_OUTPUT_GRAPHVIZ_GENERATION, false);
configuration.setAttribute(
ATTR_FIRST_SYMBEX_OUTPUT_GRAPHVIZ_FILENAME,
DEFAULT_FIRST_SYMBEX_OUTPUT_GRAPHVIZ_FILENAME);
// fFirstSymbexOutputGraphizTraceStringField.setDefaults(configuration);
configuration.setAttribute(
ATTR_FIRST_SYMBEX_OUTPUT_GRAPHVIZ_TRACE_SPEC,
DEFAULT_FIRST_SYMBEX_OUTPUT_GRAPHVIZ_TRACE_SPEC);
// fFirstSymbexOutputGraphizFormatStringField.setDefaults(configuration);
configuration.setAttribute(
ATTR_FIRST_SYMBEX_OUTPUT_GRAPHVIZ_FORMAT_SPEC,
DEFAULT_SYMBEX_OUTPUT_GRAPHVIZ_FORMAT_SPEC);
// Second Symbex Workflow Page
// fSecondParsedModelTextualEnabledBooleanField.setDefaults(configuration);
// configuration.setAttribute(
// ATTR_ENABLED_SECOND_PARSED_MODEL_TEXTUAL_GENERATION, false);
configuration.setAttribute(
ATTR_SECOND_PARSED_MODEL_TEXTUAL_FILENAME,
"phase2_parsed_model.xlia");
// fSecondParsedModelGraphizEnabledBooleanField.setDefaults(configuration);
// configuration.setAttribute(
// ATTR_ENABLED_SECOND_PARSED_MODEL_GRAPHVIZ_GENERATION, false);
configuration.setAttribute(
ATTR_SECOND_PARSED_MODEL_GRAPHVIZ_FILENAME,
"phase2_parsed_model.gv");
if( fEnabledSymbexDeveloperMode ) {
// fSecondCompiledModelTextualEnabledBooleanField.setDefaults(configuration);
configuration.setAttribute(
ATTR_ENABLED_SECOND_COMPILED_MODEL_TEXTUAL_GENERATION, false);
configuration.setAttribute(
ATTR_SECOND_COMPILED_MODEL_TEXTUAL_FILENAME,
"phase2_compiled_model.fexe");
}
// fSecondSymbexOutputTextualEnabledBooleanField.setDefaults(configuration);
configuration.setAttribute(
ATTR_ENABLED_SECOND_SYMBEX_OUTPUT_TEXTUAL_GENERATION, false);
configuration.setAttribute(
ATTR_SECOND_SYMBEX_OUTPUT_TEXTUAL_FILENAME,
DEFAULT_SECOND_SYMBEX_OUTPUT_TEXTUAL_FILENAME);
// fSecondSymbexOutputGraphizEnabledBooleanField.setDefaults(configuration);
configuration.setAttribute(
ATTR_ENABLED_SECOND_SYMBEX_OUTPUT_GRAPHVIZ_GENERATION, false);
configuration.setAttribute(
ATTR_SECOND_SYMBEX_OUTPUT_GRAPHVIZ_FILENAME,
DEFAULT_SECOND_SYMBEX_OUTPUT_GRAPHVIZ_FILENAME);
// fSecondSymbexOutputGraphizTraceStringField.setDefaults(configuration);
configuration.setAttribute(
ATTR_SECOND_SYMBEX_OUTPUT_GRAPHVIZ_TRACE_SPEC,
DEFAULT_SECOND_SYMBEX_OUTPUT_GRAPHVIZ_TRACE_SPEC);
// fSecondSymbexOutputGraphizFormatStringField.setDefaults(configuration);
configuration.setAttribute(
ATTR_SECOND_SYMBEX_OUTPUT_GRAPHVIZ_FORMAT_SPEC,
DEFAULT_SYMBEX_OUTPUT_GRAPHVIZ_FORMAT_SPEC);
}
@Override
public void initializeFieldValuesFrom(ILaunchConfiguration configuration) {
try {
fConsoleLevel = ConsoleVerbosityKind.get(
configuration.getAttribute(ATTR_CONSOLE_LOG_VERBOSE_LEVEL,
ConsoleVerbosityKind.MINIMUM.getLiteral()) );
}
catch (CoreException e) {
e.printStackTrace();
fConsoleLevel = ConsoleVerbosityKind.MINIMUM;
}
if( fConsoleLevel == null ) {
fConsoleLevel = ConsoleVerbosityKind.MINIMUM;
}
initializeConsoleLevel();
fFirstParsedModelTextualEnabledBooleanField.initializeFrom(configuration);
fFirstParsedModelGraphizEnabledBooleanField.initializeFrom(configuration);
if( fEnabledSymbexDeveloperMode ) {
fFirstCompiledModelTextualEnabledBooleanField.initializeFrom(configuration);
}
fFirstSymbexOutputTextualEnabledBooleanField.initializeFrom(configuration);
fFirstSymbexOutputGraphizEnabledBooleanField.initializeFrom(configuration);
fFirstSymbexOutputGraphizTraceStringField.initializeFrom(configuration);
fFirstSymbexOutputGraphizFormatStringField.initializeFrom(configuration);
// fSecondParsedModelTextualEnabledBooleanField.initializeFrom(configuration);
// fSecondParsedModelGraphizEnabledBooleanField.initializeFrom(configuration);
// if( fEnabledSymbexDeveloperMode ) {
// fSecondCompiledModelTextualEnabledBooleanField.initializeFrom(configuration);
// }
fSecondSymbexOutputTextualEnabledBooleanField.initializeFrom(configuration);
fSecondSymbexOutputGraphizEnabledBooleanField.initializeFrom(configuration);
fSecondSymbexOutputGraphizTraceStringField.initializeFrom(configuration);
fSecondSymbexOutputGraphizFormatStringField.initializeFrom(configuration);
setEnableFirstExecutionPage(
fFirstSymbexOutputGraphizEnabledBooleanField.getBooleanValue() );
setEnableSecondExecutionPage(
fSecondSymbexOutputGraphizEnabledBooleanField.getBooleanValue() );
}
private void initializeConsoleLevel() {
switch ( fConsoleLevel ) {
case SILENT:
fConsoleLevelCombo.select(0);
break;
case MINIMUM:
fConsoleLevelCombo.select(1);
break;
case MEDIUM:
fConsoleLevelCombo.select(2);
break;
case MAXIMUM:
fConsoleLevelCombo.select(3);
break;
default:
fConsoleLevelCombo.select(0);
break;
}
}
@Override
public void applyUpdatesOnFieldValuesFrom(ILaunchConfigurationWorkingCopy configuration) {
configuration.setAttribute(
ATTR_CONSOLE_LOG_VERBOSE_LEVEL, fConsoleLevel.getLiteral());
fFirstParsedModelTextualEnabledBooleanField.performApply(configuration);
fFirstParsedModelGraphizEnabledBooleanField.performApply(configuration);
if( fEnabledSymbexDeveloperMode ) {
fFirstCompiledModelTextualEnabledBooleanField.performApply(configuration);
}
fFirstSymbexOutputTextualEnabledBooleanField.performApply(configuration);
fFirstSymbexOutputGraphizEnabledBooleanField.performApply(configuration);
fFirstSymbexOutputGraphizTraceStringField.performApply(configuration);
fFirstSymbexOutputGraphizFormatStringField.performApply(configuration);
// fSecondParsedModelTextualEnabledBooleanField.performApply(configuration);
// fSecondParsedModelGraphizEnabledBooleanField.performApply(configuration);
// if( fEnabledSymbexDeveloperMode ) {
// fSecondCompiledModelTextualEnabledBooleanField.performApply(configuration);
// }
fSecondSymbexOutputTextualEnabledBooleanField.performApply(configuration);
fSecondSymbexOutputGraphizEnabledBooleanField.performApply(configuration);
fSecondSymbexOutputGraphizTraceStringField.performApply(configuration);
fSecondSymbexOutputGraphizFormatStringField.performApply(configuration);
setEnableFirstExecutionPage(
fFirstSymbexOutputGraphizEnabledBooleanField.getBooleanValue() );
setEnableSecondExecutionPage(
fSecondSymbexOutputGraphizEnabledBooleanField.getBooleanValue() );
}
// ======================================================================================
// Fields Validation
// ======================================================================================
@Override
public FieldValidationReturn areFieldsValid(ILaunchConfiguration launchConfig) {
return new FieldValidationReturn(true, null);
}
}