blob: 7178da642c8813fb466a9d88d4ef17e969d0aa46 [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.execution.configuration.common.ui.page.expert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.efm.execution.configuration.common.ui.api.AbstractConfigurationPage;
import org.eclipse.efm.execution.configuration.common.ui.api.AbstractConfigurationProfile;
import org.eclipse.efm.execution.configuration.common.ui.api.ILaunchConfigurationGUIelement;
import org.eclipse.efm.execution.configuration.common.ui.api.IWidgetToolkit;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
public class ExpertConfigurationPage extends AbstractConfigurationPage {
public Composite fCompositeStack;
public StackLayout fStackLayout;
private Group groupExplorationPage;
// BEHAVIOR SELECTION : HIT OR JUMP
ExpertBehaviorSelectionConfigurationProfile fBehaviorSelectionPage;
// TRANSITION COVERAGE
ExpertTransitionCoverageConfigurationProfile fTransitionCoveragePage;
public ExpertConfigurationPage(ILaunchConfigurationGUIelement masterGUIelement) {
super(masterGUIelement);
// BEHAVIOR SELECTION : HIT OR JUMP
fBehaviorSelectionPage = new ExpertBehaviorSelectionConfigurationProfile(this);
// TRANSITION COVERAGE
fTransitionCoveragePage = new ExpertTransitionCoverageConfigurationProfile(this);
}
// ======================================================================================
// Graphical Components Creation Methods
// ======================================================================================
@Override
protected void createContent(Composite parent, IWidgetToolkit widgetToolkit)
{
// Stack Composite w.r.t. analysis profile
fCompositeStack = widgetToolkit.createComposite(parent, SWT.BORDER);
fCompositeStack.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
fStackLayout = new StackLayout();
fCompositeStack.setLayout(fStackLayout);
// EXPLORATION PAGE
createExplorationPage(fCompositeStack, widgetToolkit);
fStackLayout.topControl = groupExplorationPage;
fCompositeStack.layout();
// BEHAVIOR SELECTION : HIT OR JUMP
fBehaviorSelectionPage.createControl(fCompositeStack, widgetToolkit);
// TRANSITION COVERAGE
fTransitionCoveragePage.createControl(fCompositeStack, widgetToolkit);
}
private void setEnableGroupExplorationPage(ILaunchConfiguration configuration) {
try {
String modelAnalysisProfile = configuration.getAttribute(
ATTR_SPECIFICATION_MODEL_ANALYSIS_PROFILE, "");
setVisibleProfilePage( modelAnalysisProfile );
}
catch (CoreException e) {
e.printStackTrace();
}
}
public void setVisibleProfilePage(AbstractConfigurationProfile aProfilePage) {
fStackLayout.topControl = aProfilePage.getSection();
fCompositeStack.layout();
}
public void setVisibleProfilePage(String analysisProfile) {
switch ( analysisProfile ) {
case ANALYSIS_PROFILE_MODEL_COVERAGE_TRANSITION:
setVisibleProfilePage( fTransitionCoveragePage );
break;
case ANALYSIS_PROFILE_MODEL_COVERAGE_BEHAVIOR:
setVisibleProfilePage( fBehaviorSelectionPage );
break;
case ANALYSIS_PROFILE_MODEL_TEST_OFFLINE:
case ANALYSIS_PROFILE_MODEL_EXPLORATION:
default:
fStackLayout.topControl = groupExplorationPage;
fCompositeStack.layout();
break;
}
}
private void createExplorationPage(Composite parent, IWidgetToolkit widgetToolkit) {
groupExplorationPage = widgetToolkit.createGroup(parent,
"Exploration Page", 1, 2, GridData.FILL_HORIZONTAL);
Composite comp = widgetToolkit.createComposite(groupExplorationPage, 1, 1,
GridData.FILL_HORIZONTAL);
widgetToolkit.createLabel(comp, "&No expert mode for Exploration "
+ "of Model Analysis and Test Verdict Computation !", 1);
}
// ======================================================================================
// Fields Values Management
// ======================================================================================
@Override
public void setDefaultFieldValues(ILaunchConfigurationWorkingCopy configuration) {
// BEHAVIOR SELECTION : HIT OR JUMP
fBehaviorSelectionPage.setDefaults(configuration);
// TRANSITION COVERAGE
fTransitionCoveragePage.setDefaults(configuration);
}
@Override
public void initializeFieldValuesFrom(ILaunchConfiguration configuration) {
setEnableGroupExplorationPage(configuration);
// BEHAVIOR SELECTION : HIT OR JUMP
fBehaviorSelectionPage.initializeFrom(configuration);
// TRANSITION COVERAGE
fTransitionCoveragePage.initializeFrom(configuration);
}
@Override
public void applyUpdatesOnFieldValuesFrom(ILaunchConfigurationWorkingCopy configuration) {
// BEHAVIOR SELECTION : HIT OR JUMP
fBehaviorSelectionPage.performApply(configuration);
// TRANSITION COVERAGE
fTransitionCoveragePage.performApply(configuration);
}
// ======================================================================================
// Fields Validation
// ======================================================================================
@Override
public FieldValidationReturn areFieldsValid(ILaunchConfiguration launchConfig) {
// BEHAVIOR SELECTION : HIT OR JUMP
if( ! fBehaviorSelectionPage.isValid(launchConfig) ) {
return new FieldValidationReturn(false, null);
}
// TRANSITION COVERAGE
if( ! fTransitionCoveragePage.isValid(launchConfig) ) {
return new FieldValidationReturn(false, null);
}
return new FieldValidationReturn(true, null);
}
///////////////////////////////////////////////////////////////////////////
// Model Analysis Profile changed
//
@Override
public void handleModelAnalysisProfileSelectionChanged(String analysisProfile) {
setVisibleProfilePage(analysisProfile);
}
}