testdev/ite/src/com.nokia.testfw.stf.configeditor/src/com/nokia/testfw/stf/configeditor/editors/ConfigEditor.java
/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
package com.nokia.testfw.stf.configeditor.editors;
import java.util.ArrayList;
import java.lang.StringBuffer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.editors.text.TextEditor;
import org.eclipse.ui.forms.widgets.ColumnLayout;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.TableWrapData;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.ide.IGotoMarker;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.part.MultiPageEditorPart;
import org.eclipse.swt.graphics.Color;
import com.nokia.testfw.stf.configeditor.wizards.NewModuleWizard;
import com.nokia.testfw.stf.configmanager.ConfigDefaults;
import com.nokia.testfw.stf.configmanager.ConfigManager;
import com.nokia.testfw.stf.configmanager.ConfigUtil;
import com.nokia.testfw.stf.configmanager.FileCreationMode;
import com.nokia.testfw.stf.configmanager.MeasurementModule;
import com.nokia.testfw.stf.configmanager.OutputFileFormat;
import com.nokia.testfw.stf.configmanager.OutputType;
import com.nokia.testfw.stf.configmanager.ParseProblem;
import com.nokia.testfw.stf.configmanager.SectionElementType;
import com.nokia.testfw.stf.configmanager.TestReportMode;
import com.nokia.testfw.stf.configmanager.YesNo;
/**
* STIF configuration file editor.
*
*/
public class ConfigEditor extends MultiPageEditorPart implements
IResourceChangeListener, IGotoMarker, SelectionListener,
ModifyListener, ISelectionChangedListener {
/**
* Config source view control
*/
private TextEditor sourceEditor;
/**
* Eclipse form toolkit used to create other controls
*/
private FormToolkit toolkit;
/**
* Global settings view control
*/
private ScrolledForm globalSettingsMainForm;
/**
* Modules view pages
*/
private ScrolledForm modulesMainForm;
/**
* Source view page index
*/
private int sourcePageIndex = -1;
/**
* Global settings page index
*/
private int globalSettingsPageIndex = -1;
/**
* Modules page index
*/
private int modulesPageIndex = -1;
/**
* <code>TestReportMode</code> value control
*/
private CCombo testReportModeValue = null;
/**
* <code>CreateTestReport = Yes</code> value control
*/
private Button createTestReportYesButton = null;
/**
* <code>CreateTestReport = No</code> value control
*/
private Button createTestReportNoButton = null;
/**
* <code>TestReportFilePath</code> value control
*/
private Text testReportFilePathValue = null;
/**
* <code>TestReportFileName</code> value control
*/
private Text testReportFileNameValue = null;
/**
* <code>TestReportFormat = Txt</code> value control
*/
private Button testReportFormatTxtButton = null;
/**
* <code>TestReportFormat = Html</code> value control
*/
private Button testReportFormatHtmlButton = null;
/**
* <code>TestReportOutput = File</code> value control
*/
private Button testReportOutputFileButton = null;
/**
* <code>TestReportOutput = RDebug</code> value control
*/
private Button testReportOutputRDebugButton = null;
/**
* <code>TestReportFileCreationMode = Overwrite</code> value control
*/
private Button testReportFileCreationModeOverwriteButton = null;
/**
* <code>TestReportFileCreationMode = Append</code> value control
*/
private Button testReportFileCreationModeAppendButton = null;
/**
* <code>DeviceResetDllName</code> value control
*/
private Text deviceResetDllNameValue = null;
/**
* <code>DisableMeasurement</code> value control
*/
private List disableMeasurementValue = null;
/**
* <code>Timeout</code> value control
*/
private Spinner timeoutValue = null;
/**
* <code>UITestingSupport = Yes</code> value control
*/
private Button uiTestingSupportYesButton = null;
/**
* <code>UITestingSupport = No</code> value control
*/
private Button uiTestingSupportNoButton = null;
/**
* <code>SeparateProcesses = Yes</code> value control
*/
private Button separateProcessYesButton = null;
/**
* <code>SeparateProcesses = No</code> value control
*/
private Button separateProcessNoButton = null;
/**
* <code>CreateLogDirectories = Yes</code> value control
*/
private Button createLogDirectoriesYesButton = null;
/**
* <code>CreateLogDirectories = No</code> value control
*/
private Button createLogDirectoriesNoButton = null;
/**
* <code>EmulatorBasePath</code> value control
*/
private Text emulatorBasePathValue = null;
/**
* <code>HardwareBasePath</code> value control
*/
private Text hardwareBasePathValue = null;
/**
* <code>LogFileCreationMode = Overwrite</code> value control
*/
Button logFileCreationModeOverwriteButton = null;
/**
* <code>LogFileCreationMode = Append</code> value control
*/
Button logFileCreationModeAppendButton = null;
/**
* <code>ThreadIdToLogFile = Yes</code> value control
*/
private Button threadIdToLogFileYesButton = null;
/**
* <code>ThreadIdToLogFile = No</code> value control
*/
private Button threadIdToLogFileNoButton = null;
/**
* <code>withTimeStamp = Yes</code> value control
*/
private Button withTimeStampYesButton = null;
/**
* <code>WithTimeStamp = No</code> value control
*/
private Button withTimeStampNoButton = null;
/**
* <code>WithLineBreak = Yes</code> value control
*/
private Button withLineBreakYesButton = null;
/**
* <code>WithLineBreak = No</code> value control
*/
private Button withLineBreakNoButton = null;
/**
* <code>WithEventRanking = Yes</code> value control
*/
private Button withEventRankingYesButton = null;
/**
* <code>WithEventRanking = No</code> value control
*/
private Button withEventRankingNoButton = null;
/**
* <code>FileUnicode = Yes</code> value control
*/
private Button fileUnicodeYesButton = null;
/**
* <code>FileUnicode = No</code> value control
*/
private Button fileUnicodeNoButton = null;
/**
* <code>EmulatorLogOutput = File</code> value control
*/
private Button emulatorLogOutputFileButton = null;
/**
* <code>EmulatorLogOutput = RDebug</code> value control
*/
private Button emulatorLogOutputRDebugButton = null;
/**
* <code>EmulatorLogFormat = Txt</code> value control
*/
private Button emulatorLogFormatTxtButton = null;
/**
* <code>EmulatorLogFormat = Html</code> value control
*/
private Button emulatorLogFormatHtmlButton = null;
/**
* <code>HardwareLogOutput = File</code> value control
*/
private Button hardwareLogOutputFileButton = null;
/**
* <code>HardwareLogOutput = RDebug</code> value control
*/
private Button hardwareLogOutputRDebugButton = null;
/**
* <code>HardwareLogFormat = Txt</code> value control
*/
private Button hardwareLogFormatTxtButton = null;
/**
* <code>HardwareLogFormat = Html</code> value control
*/
private Button hardwareLogFormatHtmlButton = null;
/**
* Modules tree view control
*/
private TreeViewer modulesTreeViewer = null;
/**
* Modules tree root node
*/
private ModulesTreeNode modulesTreeRoot = null;
/**
* Add module button
*/
private Button addModuleButton = null;
/**
* Add testcase file button
*/
private Button addTestCaseFileButton = null;
/**
* Add ini file button
*/
private Button addIniFileButton = null;
/**
* Edit button
*/
private Button editButton = null;
/**
* Remove button
*/
private Button removeButton = null;
/**
* Config manager
*/
private ConfigManager configManager = null;
/**
* List of problem markers
*/
private java.util.List<IMarker> problemMarkers = null;
/**
* Add testcase title button
*/
private Button addTestCaseTitleYesButton = null;
/**
* Add testcase title button
*/
private Button addTestCaseTitleNoButton = null;
/**
* Creates a STIf configuration editor
*/
private Label testReportModeLabel;
private Label createTestReportLabel;
private Label testReportFilePathLabel;
private Label testReportFileNameLabel;
private Label testReportFormatLabel;
private Label testReportOutputLabel;
private Label testReportFileCreationModeLabel;
private Label deviceResetDllNameLabel;
private Label disableMeasurementLabel;
private Label timeoutLabel;
private Label uiTestingSupportLabel;
private Label separateProcessLabel;
private Label createLogDirectoriesLabel;
private Label emulatorBasePathLabel;
private Label emulatorLogFormatLabel;
private Label emulatorLogOutputLabel;
private Label hardwareBasePathLabel;
private Label hardwareLogFormatLabel;
private Label hardwareLogOutputLabel;
private Label logFileCreationModeLabel;
private Label threadIdToLogFileLabel;
private Label withTimeStampLabel;
private Label withLineBreakLabel;
private Label withEventRankingLabel;
private Label fileUnicodeLabel;
private Label addTestcaseTitleLabel;
public ConfigEditor() {
super();
ResourcesPlugin.getWorkspace().addResourceChangeListener(this);
}
/**
* Creates global settings page
*/
void createGlobalSettingsPage() {
globalSettingsMainForm = toolkit.createScrolledForm(getContainer());
globalSettingsMainForm.setText("STF global settings");
ColumnLayout overviewMainFormLayout = new ColumnLayout();
overviewMainFormLayout.maxNumColumns = 2;
Section engineDefaultsSection = toolkit.createSection(
globalSettingsMainForm.getBody(), Section.TITLE_BAR);
engineDefaultsSection.setText("Engine defaults");
Composite engineDefaultsSectionClient = toolkit
.createComposite(engineDefaultsSection);
TableWrapLayout engineDefaultsSectionLayout = new TableWrapLayout();
engineDefaultsSectionLayout.verticalSpacing = 10;
engineDefaultsSectionLayout.numColumns = 2;
engineDefaultsSectionClient.setLayout(engineDefaultsSectionLayout);
engineDefaultsSection.setClient(engineDefaultsSectionClient);
createEngineDefaultsSectionControls(engineDefaultsSectionClient);
// Logger defaults
Section loggerDefaultsSection = toolkit.createSection(
globalSettingsMainForm.getBody(), Section.TITLE_BAR);
loggerDefaultsSection.setText("Logger defaults");
Composite loggerDefaultsSectionClient = toolkit
.createComposite(loggerDefaultsSection);
TableWrapLayout loggerDefaultsSectionLayout = new TableWrapLayout();
loggerDefaultsSectionLayout.verticalSpacing = 10;
loggerDefaultsSectionLayout.numColumns = 2;
loggerDefaultsSectionClient.setLayout(loggerDefaultsSectionLayout);
loggerDefaultsSection.setClient(loggerDefaultsSectionClient);
createLoggerDefaultsSectionControls(loggerDefaultsSectionClient);
// Final initializations
globalSettingsMainForm.getBody().setLayout(overviewMainFormLayout);
engineDefaultsSectionClient.setData(FormToolkit.KEY_DRAW_BORDER,
FormToolkit.TEXT_BORDER);
toolkit.paintBordersFor(engineDefaultsSectionClient);
loggerDefaultsSectionClient.setData(FormToolkit.KEY_DRAW_BORDER,
FormToolkit.TEXT_BORDER);
toolkit.paintBordersFor(loggerDefaultsSectionClient);
globalSettingsPageIndex = addPage(globalSettingsMainForm);
setPageText(globalSettingsPageIndex, "Global settings");
}
/**
* Creates engine defaults panel controls
*
* @param engineDefaultsSectionClient
* engine defaults panel
*/
void createEngineDefaultsSectionControls(
Composite engineDefaultsSectionClient) {
// Test report mode controls
testReportModeLabel = toolkit.createLabel(engineDefaultsSectionClient,
"Test report mode:");
testReportModeValue = new CCombo(engineDefaultsSectionClient,
SWT.READ_ONLY | SWT.NONE);
toolkit.adapt(testReportModeValue, true, true);
testReportModeValue.setLayoutData(new TableWrapData(
TableWrapData.FILL_GRAB));
testReportModeValue.addSelectionListener(this);
// Create test report controls
createTestReportLabel = toolkit.createLabel(
engineDefaultsSectionClient, "Create test report:");
Composite createTestReportGroup = toolkit
.createComposite(engineDefaultsSectionClient);
GridLayout createTestReportGroupLayout = new GridLayout();
createTestReportGroupLayout.marginHeight = 0;
createTestReportGroupLayout.numColumns = 2;
createTestReportGroup.setLayout(createTestReportGroupLayout);
createTestReportYesButton = toolkit.createButton(createTestReportGroup,
"Yes", SWT.RADIO | SWT.SELECTED);
createTestReportYesButton.setSelection(true);
createTestReportYesButton.addSelectionListener(this);
createTestReportNoButton = toolkit.createButton(createTestReportGroup,
"No", SWT.RADIO);
// Test report file path
testReportFilePathLabel = toolkit.createLabel(
engineDefaultsSectionClient, "Test report file path:");
testReportFilePathValue = toolkit.createText(
engineDefaultsSectionClient, "C:\\LOGS\\TestFramework\\");
testReportFilePathValue.setLayoutData(new TableWrapData(
TableWrapData.FILL_GRAB));
testReportFilePathValue.addSelectionListener(this);
testReportFilePathValue.addModifyListener(this);
// Test report file name
testReportFileNameLabel = toolkit.createLabel(
engineDefaultsSectionClient, "Test report file name:");
testReportFileNameValue = toolkit.createText(
engineDefaultsSectionClient, "TestReport");
testReportFileNameValue.setLayoutData(new TableWrapData(
TableWrapData.FILL_GRAB));
testReportFileNameValue.addSelectionListener(this);
testReportFileNameValue.addModifyListener(this);
// Test report format controls
testReportFormatLabel = toolkit.createLabel(
engineDefaultsSectionClient, "Test report format:");
Composite testReportFormatGroup = toolkit
.createComposite(engineDefaultsSectionClient);
GridLayout testReportFormatGroupLayout = new GridLayout();
testReportFormatGroupLayout.marginHeight = 0;
testReportFormatGroupLayout.numColumns = 2;
testReportFormatGroup.setLayout(testReportFormatGroupLayout);
testReportFormatTxtButton = toolkit.createButton(testReportFormatGroup,
"Txt", SWT.RADIO);
testReportFormatTxtButton.setSelection(true);
testReportFormatTxtButton.addSelectionListener(this);
testReportFormatHtmlButton = toolkit.createButton(
testReportFormatGroup, "Html", SWT.RADIO);
// Test report output controls
testReportOutputLabel = toolkit.createLabel(
engineDefaultsSectionClient, "Test report output:");
Composite testReportOutputGroup = toolkit
.createComposite(engineDefaultsSectionClient);
GridLayout testReportOutputGroupLayout = new GridLayout();
testReportOutputGroupLayout.marginHeight = 0;
testReportOutputGroupLayout.numColumns = 2;
testReportOutputGroup.setLayout(testReportOutputGroupLayout);
testReportOutputFileButton = toolkit.createButton(
testReportOutputGroup, "File", SWT.RADIO);
testReportOutputFileButton.setSelection(true);
testReportOutputFileButton.addSelectionListener(this);
testReportOutputRDebugButton = toolkit.createButton(
testReportOutputGroup, "RDebug", SWT.RADIO);
// Test report file creation mode controls
testReportFileCreationModeLabel = toolkit.createLabel(
engineDefaultsSectionClient, "Test report file creation mode:");
Composite testReportFileCreationModeGroup = toolkit
.createComposite(engineDefaultsSectionClient);
GridLayout testReportFileCreationModeGroupLayout = new GridLayout();
testReportFileCreationModeGroupLayout.marginHeight = 0;
testReportFileCreationModeGroupLayout.numColumns = 2;
testReportFileCreationModeGroup
.setLayout(testReportFileCreationModeGroupLayout);
testReportFileCreationModeOverwriteButton = toolkit.createButton(
testReportFileCreationModeGroup, "Overwrite", SWT.RADIO);
testReportFileCreationModeOverwriteButton.setSelection(true);
testReportFileCreationModeOverwriteButton.addSelectionListener(this);
testReportFileCreationModeAppendButton = toolkit.createButton(
testReportFileCreationModeGroup, "Append", SWT.RADIO);
// Device reset dll name controls
deviceResetDllNameLabel = toolkit.createLabel(
engineDefaultsSectionClient, "Device reset dll name:");
deviceResetDllNameValue = toolkit.createText(
engineDefaultsSectionClient, "StifResetForNokia.dll");
deviceResetDllNameValue.setLayoutData(new TableWrapData(
TableWrapData.FILL_GRAB));
deviceResetDllNameValue.addSelectionListener(this);
deviceResetDllNameValue.addModifyListener(this);
// Disable measurement controls
disableMeasurementLabel = toolkit.createLabel(
engineDefaultsSectionClient, "Disable measurement:");
disableMeasurementValue = new List(engineDefaultsSectionClient,
SWT.READ_ONLY);
toolkit.adapt(disableMeasurementValue, true, true);
disableMeasurementValue.setLayoutData(new TableWrapData(
TableWrapData.FILL_GRAB));
disableMeasurementValue.setData(FormToolkit.KEY_DRAW_BORDER,
FormToolkit.TREE_BORDER);
disableMeasurementValue.addSelectionListener(this);
// Timeout= 0
timeoutLabel = toolkit.createLabel(engineDefaultsSectionClient,
"Timeout:");
timeoutValue = new Spinner(engineDefaultsSectionClient, SWT.NONE);
toolkit.adapt(timeoutValue, true, true);
timeoutValue.setMaximum(Integer.MAX_VALUE);
timeoutValue.setData(FormToolkit.KEY_DRAW_BORDER,
FormToolkit.TEXT_BORDER);
timeoutValue.addSelectionListener(this);
timeoutValue.addModifyListener(this);
timeoutValue.addListener(SWT.Verify, new Listener() {
public void handleEvent(Event event) {
if(event.type==SWT.Verify){
int start = event.start;
int end = event.end;
String timeoutStringValue;
timeoutStringValue = timeoutValue.getText();
StringBuffer buffer = new StringBuffer(timeoutStringValue.trim());
timeoutStringValue = buffer.replace(start, end, event.text).toString();
if(timeoutStringValue.trim().length()==0){
return;
}
try{
Integer.parseInt(timeoutStringValue.trim());
}
catch(Exception e){
MessageBox box = new MessageBox(new Shell(), SWT.ICON_ERROR);
box.setText("Incorrect value!");
box.setMessage("Input value is outof range(2147483647).");
box.open();
}
}
}
});
// UITestingSupport
uiTestingSupportLabel = toolkit.createLabel(
engineDefaultsSectionClient, "UI testing support");
Composite uiTestingSupportGroup = toolkit
.createComposite(engineDefaultsSectionClient);
GridLayout uiTestingSupportGroupLayout = new GridLayout();
uiTestingSupportGroupLayout.numColumns = 2;
uiTestingSupportGroupLayout.marginHeight = 0;
uiTestingSupportGroup.setLayout(uiTestingSupportGroupLayout);
uiTestingSupportYesButton = toolkit.createButton(uiTestingSupportGroup,
"Yes", SWT.RADIO | SWT.SELECTED);
uiTestingSupportYesButton.setSelection(false);
uiTestingSupportYesButton.addSelectionListener(this);
uiTestingSupportNoButton = toolkit.createButton(uiTestingSupportGroup,
"No", SWT.RADIO);
uiTestingSupportNoButton.setSelection(true);
uiTestingSupportNoButton.addSelectionListener(this);
// SeparateProcesses
separateProcessLabel = toolkit.createLabel(engineDefaultsSectionClient,
"Separate processes");
Composite separateProcessesGroup = toolkit
.createComposite(engineDefaultsSectionClient);
GridLayout separateProcessesGroupLayout = new GridLayout();
separateProcessesGroupLayout.numColumns = 2;
separateProcessesGroupLayout.marginHeight = 0;
separateProcessesGroup.setLayout(separateProcessesGroupLayout);
separateProcessYesButton = toolkit.createButton(separateProcessesGroup,
"Yes", SWT.RADIO | SWT.SELECTED);
separateProcessYesButton.setSelection(false);
separateProcessYesButton.addSelectionListener(this);
separateProcessNoButton = toolkit.createButton(separateProcessesGroup,
"No", SWT.RADIO);
separateProcessNoButton.setSelection(true);
separateProcessNoButton.addSelectionListener(this);
}
/**
* Creates logger defaults panel controls
*
* @param loggerDefaultsSectionClient
* logger defaults panel
*/
void createLoggerDefaultsSectionControls(
Composite loggerDefaultsSectionClient) {
// Create log directories controls
createLogDirectoriesLabel = toolkit.createLabel(
loggerDefaultsSectionClient, "Create log directories:");
Composite createLogDirectoriesGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout createLogDirectoriesGroupLayout = new GridLayout();
createLogDirectoriesGroupLayout.marginHeight = 0;
createLogDirectoriesGroupLayout.numColumns = 2;
createLogDirectoriesGroup.setLayout(createLogDirectoriesGroupLayout);
createLogDirectoriesYesButton = toolkit.createButton(
createLogDirectoriesGroup, "Yes", SWT.RADIO | SWT.SELECTED);
createLogDirectoriesYesButton.setSelection(false);
createLogDirectoriesYesButton.addSelectionListener(this);
createLogDirectoriesNoButton = toolkit.createButton(
createLogDirectoriesGroup, "No", SWT.RADIO);
createLogDirectoriesNoButton.setSelection(true);
createLogDirectoriesNoButton.addSelectionListener(this);
// Emulator base path controls
emulatorBasePathLabel = toolkit.createLabel(
loggerDefaultsSectionClient, "Emulator base path:");
emulatorBasePathValue = toolkit.createText(loggerDefaultsSectionClient,
"C:\\LOGS\\TestFramework\\");
emulatorBasePathValue.setLayoutData(new TableWrapData(
TableWrapData.FILL_GRAB));
emulatorBasePathValue.addSelectionListener(this);
emulatorBasePathValue.addModifyListener(this);
// Emulator log format controls
emulatorLogFormatLabel = toolkit.createLabel(
loggerDefaultsSectionClient, "Emulator log format:");
Composite emulatorLogFormatGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout emulatorLogFormatGroupLayout = new GridLayout();
emulatorLogFormatGroupLayout.marginHeight = 0;
emulatorLogFormatGroupLayout.numColumns = 2;
emulatorLogFormatGroup.setLayout(emulatorLogFormatGroupLayout);
emulatorLogFormatTxtButton = toolkit.createButton(
emulatorLogFormatGroup, "Txt", SWT.RADIO);
emulatorLogFormatTxtButton.setSelection(true);
emulatorLogFormatTxtButton.addSelectionListener(this);
emulatorLogFormatHtmlButton = toolkit.createButton(
emulatorLogFormatGroup, "Html", SWT.RADIO);
// Emulator log output controls
emulatorLogOutputLabel = toolkit.createLabel(
loggerDefaultsSectionClient, "Emulator log output:");
Composite emulatorLogOutputGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout emulatorLogOutputGroupLayout = new GridLayout();
emulatorLogOutputGroupLayout.marginHeight = 0;
emulatorLogOutputGroupLayout.numColumns = 2;
emulatorLogOutputGroup.setLayout(emulatorLogOutputGroupLayout);
emulatorLogOutputFileButton = toolkit.createButton(
emulatorLogOutputGroup, "File", SWT.RADIO);
emulatorLogOutputFileButton.setSelection(true);
emulatorLogOutputFileButton.addSelectionListener(this);
emulatorLogOutputRDebugButton = toolkit.createButton(
emulatorLogOutputGroup, "RDebug", SWT.RADIO);
// Hardware base path controls
hardwareBasePathLabel = toolkit.createLabel(
loggerDefaultsSectionClient, "Hardware base path:");
hardwareBasePathValue = toolkit.createText(loggerDefaultsSectionClient,
"C:\\LOGS\\TestFramework\\");
hardwareBasePathValue.setLayoutData(new TableWrapData(
TableWrapData.FILL_GRAB));
hardwareBasePathValue.addSelectionListener(this);
hardwareBasePathValue.addModifyListener(this);
// Hardware log format controls
hardwareLogFormatLabel = toolkit.createLabel(
loggerDefaultsSectionClient, "Hardware log format:");
Composite hardwareLogFormatGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout hardwareLogFormatGroupLayout = new GridLayout();
hardwareLogFormatGroupLayout.marginHeight = 0;
hardwareLogFormatGroupLayout.numColumns = 2;
hardwareLogFormatGroup.setLayout(hardwareLogFormatGroupLayout);
hardwareLogFormatTxtButton = toolkit.createButton(
hardwareLogFormatGroup, "Txt", SWT.RADIO);
hardwareLogFormatTxtButton.setSelection(true);
hardwareLogFormatTxtButton.addSelectionListener(this);
hardwareLogFormatHtmlButton = toolkit.createButton(
hardwareLogFormatGroup, "Html", SWT.RADIO);
// Hardware log output controls
hardwareLogOutputLabel = toolkit.createLabel(
loggerDefaultsSectionClient, "Hardware log output:");
Composite hardwareLogOutputGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout hardwareLogOutputGroupLayout = new GridLayout();
hardwareLogOutputGroupLayout.marginHeight = 0;
hardwareLogOutputGroupLayout.numColumns = 2;
hardwareLogOutputGroup.setLayout(hardwareLogOutputGroupLayout);
hardwareLogOutputFileButton = toolkit.createButton(
hardwareLogOutputGroup, "File", SWT.RADIO);
hardwareLogOutputFileButton.setSelection(true);
hardwareLogOutputFileButton.addSelectionListener(this);
hardwareLogOutputRDebugButton = toolkit.createButton(
hardwareLogOutputGroup, "RDebug", SWT.RADIO);
// Log creation mode controls
logFileCreationModeLabel = toolkit.createLabel(
loggerDefaultsSectionClient, "Log creation mode:");
Composite logFileCreationModeGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout logFileCreationModeGroupLayout = new GridLayout();
logFileCreationModeGroupLayout.marginHeight = 0;
logFileCreationModeGroupLayout.numColumns = 2;
logFileCreationModeGroup.setLayout(logFileCreationModeGroupLayout);
logFileCreationModeOverwriteButton = toolkit.createButton(
logFileCreationModeGroup, "Overwrite", SWT.RADIO);
logFileCreationModeOverwriteButton.setSelection(true);
logFileCreationModeOverwriteButton.addSelectionListener(this);
logFileCreationModeAppendButton = toolkit.createButton(
logFileCreationModeGroup, "Append", SWT.RADIO);
// Thread id to log file controls
threadIdToLogFileLabel = toolkit.createLabel(
loggerDefaultsSectionClient, "Put thread id to log file:");
Composite threadIdToLogFileGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout threadIdToLogFileGroupLayout = new GridLayout();
threadIdToLogFileGroupLayout.marginHeight = 0;
threadIdToLogFileGroupLayout.numColumns = 2;
threadIdToLogFileGroup.setLayout(threadIdToLogFileGroupLayout);
threadIdToLogFileYesButton = toolkit.createButton(
threadIdToLogFileGroup, "Yes", SWT.RADIO | SWT.SELECTED);
threadIdToLogFileYesButton.setSelection(false);
threadIdToLogFileYesButton.addSelectionListener(this);
threadIdToLogFileNoButton = toolkit.createButton(
threadIdToLogFileGroup, "No", SWT.RADIO);
threadIdToLogFileNoButton.setSelection(true);
// WithTimeStamp
withTimeStampLabel = toolkit.createLabel(loggerDefaultsSectionClient,
"With time stamp:");
Composite withTimeStampGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout withTimeStampGroupLayout = new GridLayout();
withTimeStampGroupLayout.marginHeight = 0;
withTimeStampGroupLayout.numColumns = 2;
withTimeStampGroup.setLayout(withTimeStampGroupLayout);
withTimeStampYesButton = toolkit.createButton(withTimeStampGroup,
"Yes", SWT.RADIO | SWT.SELECTED);
withTimeStampYesButton.setSelection(true);
withTimeStampYesButton.addSelectionListener(this);
withTimeStampNoButton = toolkit.createButton(withTimeStampGroup, "No",
SWT.RADIO);
// With line break
withLineBreakLabel = toolkit.createLabel(loggerDefaultsSectionClient,
"With line break:");
Composite withLineBreakGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout withLineBreakGroupLayout = new GridLayout();
withLineBreakGroupLayout.marginHeight = 0;
withLineBreakGroupLayout.numColumns = 2;
withLineBreakGroup.setLayout(withLineBreakGroupLayout);
withLineBreakYesButton = toolkit.createButton(withLineBreakGroup,
"Yes", SWT.RADIO | SWT.SELECTED);
withLineBreakYesButton.setSelection(true);
withLineBreakYesButton.addSelectionListener(this);
withLineBreakNoButton = toolkit.createButton(withLineBreakGroup, "No",
SWT.RADIO);
// With event ranking
withEventRankingLabel = toolkit.createLabel(
loggerDefaultsSectionClient, "With event ranking:");
Composite withEventRankingGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout withEventRankingGroupLayout = new GridLayout();
withEventRankingGroupLayout.marginHeight = 0;
withEventRankingGroupLayout.numColumns = 2;
withEventRankingGroup.setLayout(withEventRankingGroupLayout);
withEventRankingYesButton = toolkit.createButton(withEventRankingGroup,
"Yes", SWT.RADIO | SWT.SELECTED);
withEventRankingYesButton.setSelection(false);
withEventRankingYesButton.addSelectionListener(this);
withEventRankingNoButton = toolkit.createButton(withEventRankingGroup,
"No", SWT.RADIO);
withEventRankingNoButton.setSelection(true);
// File Unicode
fileUnicodeLabel = toolkit.createLabel(loggerDefaultsSectionClient,
"File unicode:");
Composite fileUnicodeGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout fileUnicodeGroupLayout = new GridLayout();
fileUnicodeGroupLayout.marginHeight = 0;
fileUnicodeGroupLayout.numColumns = 2;
fileUnicodeGroup.setLayout(fileUnicodeGroupLayout);
fileUnicodeYesButton = toolkit.createButton(fileUnicodeGroup, "Yes",
SWT.RADIO | SWT.SELECTED);
fileUnicodeYesButton.addSelectionListener(this);
fileUnicodeNoButton = toolkit.createButton(fileUnicodeGroup, "No",
SWT.RADIO);
fileUnicodeNoButton.setSelection(true);
addTestcaseTitleLabel = toolkit.createLabel(
loggerDefaultsSectionClient, "Add testcase title:");
Composite addTestcaseTitleGroup = toolkit
.createComposite(loggerDefaultsSectionClient);
GridLayout addTestcaseTitleGroupLayout = new GridLayout();
addTestcaseTitleGroupLayout.marginHeight = 0;
addTestcaseTitleGroupLayout.numColumns = 2;
addTestcaseTitleGroup.setLayout(addTestcaseTitleGroupLayout);
addTestCaseTitleYesButton = toolkit.createButton(addTestcaseTitleGroup,
"Yes", SWT.RADIO);
addTestCaseTitleYesButton.addSelectionListener(this);
addTestCaseTitleNoButton = toolkit.createButton(addTestcaseTitleGroup,
"No", SWT.RADIO | SWT.SELECTED);
addTestCaseTitleNoButton.setSelection(true);
addTestCaseTitleNoButton.setSelection(true);
}
/**
* Creates modules page
*/
void createModulesPage() {
modulesMainForm = toolkit.createScrolledForm(getContainer());
modulesMainForm.setText("STF modules settings");
ColumnLayout modulesMainFormLayout = new ColumnLayout();
modulesMainFormLayout.maxNumColumns = 1;
Section modulesSection = toolkit.createSection(modulesMainForm
.getBody(), Section.TITLE_BAR);
modulesSection.setText("Modules");
Composite modulesSectionClient = toolkit
.createComposite(modulesSection);
TableWrapLayout modulesSectionLayout = new TableWrapLayout();
modulesSectionLayout.numColumns = 2;
modulesSectionClient.setLayout(modulesSectionLayout);
modulesSectionClient.setLayoutData(new TableWrapData(
TableWrapData.FILL_GRAB));
modulesSection.setClient(modulesSectionClient);
modulesTreeViewer = new TreeViewer(modulesSectionClient, SWT.SINGLE);
toolkit.adapt(modulesTreeViewer.getTree(), true, true);
TableWrapData modulesTreeViewerLayoutData = new TableWrapData(
TableWrapData.FILL_GRAB);
modulesTreeViewerLayoutData.valign = TableWrapData.FILL;
modulesTreeViewer.getTree().setLayoutData(modulesTreeViewerLayoutData);
modulesTreeViewer.addSelectionChangedListener(this);
Composite buttonsGroup = toolkit.createComposite(modulesSectionClient);
TableWrapData buttonsGroupLayoutData = new TableWrapData();
buttonsGroupLayoutData.heightHint = SWT.MAX;
buttonsGroupLayoutData.valign = TableWrapData.FILL;
buttonsGroup.setLayoutData(buttonsGroupLayoutData);
TableWrapLayout buttonsGroupLayout = new TableWrapLayout();
buttonsGroupLayout.numColumns = 1;
buttonsGroupLayout.topMargin = 0;
buttonsGroup.setLayout(buttonsGroupLayout);
addModuleButton = toolkit.createButton(buttonsGroup, "Add module",
SWT.PUSH);
addModuleButton
.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
addModuleButton.addSelectionListener(this);
addTestCaseFileButton = toolkit.createButton(buttonsGroup,
"Add test case file", SWT.PUSH);
addTestCaseFileButton.setLayoutData(new TableWrapData(
TableWrapData.FILL_GRAB));
addTestCaseFileButton.addSelectionListener(this);
addIniFileButton = toolkit.createButton(buttonsGroup, "Add ini file",
SWT.PUSH);
addIniFileButton.setLayoutData(new TableWrapData(
TableWrapData.FILL_GRAB));
addIniFileButton.addSelectionListener(this);
editButton = toolkit.createButton(buttonsGroup, "Edit", SWT.PUSH);
editButton.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
editButton.addSelectionListener(this);
removeButton = toolkit.createButton(buttonsGroup, "Remove", SWT.PUSH);
removeButton.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));
removeButton.addSelectionListener(this);
// Final initializations
modulesMainForm.getBody().setLayout(modulesMainFormLayout);
modulesSectionClient.setData(FormToolkit.KEY_DRAW_BORDER,
FormToolkit.TEXT_BORDER);
toolkit.paintBordersFor(modulesSectionClient);
modulesPageIndex = addPage(modulesMainForm);
setPageText(modulesPageIndex, "Modules");
modulesTreeRoot = new ModulesTreeNode();
modulesTreeViewer.setContentProvider(new ModulesTreeContentProvider());
modulesTreeViewer.setLabelProvider(new ModulesTreeLabelProvider());
modulesTreeViewer.setInput(modulesTreeRoot);
}
/**
* Creates config source page
*/
void createSourcePage() {
try {
sourceEditor = new ConfigSourceEditor();
sourcePageIndex = addPage(sourceEditor, getEditorInput());
setPageText(sourcePageIndex, "Source");
} catch (PartInitException e) {
ErrorDialog.openError(getSite().getShell(),
"Error creating STF source config editor", null, e
.getStatus());
}
}
/**
* Creates the pages of the STIF config editor
*/
protected void createPages() {
// Create config editor pages
toolkit = new FormToolkit(getContainer().getDisplay());
createModulesPage();
createGlobalSettingsPage();
createSourcePage();
// Parse config and update config editor pages
loadConfig();
}
/**
* Loads config, updates controls value and problem markers
*/
private void loadConfig() {
// Get text from source editor
String config = sourceEditor.getDocumentProvider().getDocument(
sourceEditor.getEditorInput()).get();
// Parse config
configManager = new ConfigManager();
configManager.parseConfig(config);
// Update problem markers
updateProblemMarkers();
// update values in controls
updateControlsValue();
}
/**
* Updates engine defaults panel contols value
*/
private void updateEngineDefaultsControlsValue() {
Color red = toolkit.getColors().createColor("red", new RGB(255, 0, 0));
Color black = toolkit.getColors()
.createColor("black", new RGB(0, 0, 0));
Color gray = toolkit.getColors().createColor("gray",
new RGB(170, 170, 170));
testReportModeLabel.setForeground(black);
createTestReportLabel.setForeground(black);
testReportFilePathLabel.setForeground(black);
testReportFileNameLabel.setForeground(black);
testReportFormatLabel.setForeground(black);
testReportOutputLabel.setForeground(black);
testReportFileCreationModeLabel.setForeground(black);
deviceResetDllNameLabel.setForeground(black);
disableMeasurementLabel.setForeground(black);
timeoutLabel.setForeground(black);
uiTestingSupportLabel.setForeground(black);
separateProcessLabel.setForeground(black);
TestReportMode testReportMode = configManager.getTestReportMode();
if (testReportMode == TestReportMode.NOT_DEFINED
|| testReportMode == TestReportMode.UNKNOWN) {
if (testReportMode == TestReportMode.NOT_DEFINED) {
testReportModeLabel.setForeground(gray);
}
if (testReportMode == TestReportMode.UNKNOWN) {
testReportModeLabel.setForeground(red);
}
testReportMode = ConfigDefaults.getTestReportModeDefaultValue();
}
String[] testReportModeNames = ConfigUtil.getTestReportModeNames();
String testReportModeName = ConfigUtil
.getTestReportModeName(testReportMode);
int selection = -1;
testReportModeValue.removeAll();
for (int i = 0; i < testReportModeNames.length; i++) {
testReportModeValue.add(testReportModeNames[i]);
if (testReportModeNames[i].equals(testReportModeName)) {
selection = i;
}
}
if (selection != -1) {
testReportModeValue.select(selection);
}
// CreateTestReport
YesNo createTestReport = configManager.getCreateTestReport();
if ((createTestReport == YesNo.NOT_DEFINED)
|| (createTestReport == YesNo.UNKNOWN)) {
if (createTestReport == YesNo.NOT_DEFINED) {
createTestReportLabel.setForeground(gray);
}
if (createTestReport == YesNo.UNKNOWN) {
createTestReportLabel.setForeground(red);
}
createTestReport = ConfigDefaults.getCreateTestReportDefaultValue();
}
if (createTestReport == YesNo.YES) {
createTestReportYesButton.setSelection(true);
createTestReportNoButton.setSelection(false);
} else if (createTestReport == YesNo.NO) {
createTestReportYesButton.setSelection(false);
createTestReportNoButton.setSelection(true);
}
// TestReportFilePath
String testReportFilePath = configManager.getTestReportFilePath();
if (testReportFilePath == null) {
testReportFilePath = ConfigDefaults
.getTestReportFilePathDefaultValue();
testReportFilePathLabel.setForeground(gray);
}
testReportFilePathValue.removeModifyListener(this);
testReportFilePathValue.setText(testReportFilePath);
testReportFilePathValue.addModifyListener(this);
// TestReportFileName
String testReportFileName = configManager.getTestReportFileName();
if (testReportFileName == null) {
testReportFileName = ConfigDefaults
.getTestReportFileNameDefaultValue();
testReportFileNameLabel.setForeground(gray);
}
testReportFileNameValue.removeModifyListener(this);
testReportFileNameValue.setText(testReportFileName);
testReportFileNameValue.addModifyListener(this);
// TestReportFormat
OutputFileFormat testReportFormat = configManager.getTestReportFormat();
if ((testReportFormat == OutputFileFormat.NOT_DEFINED)
|| (testReportFormat == OutputFileFormat.UNKNOWN)) {
if (testReportFormat == OutputFileFormat.NOT_DEFINED) {
testReportFormatLabel.setForeground(gray);
}
if (testReportFormat == OutputFileFormat.UNKNOWN) {
testReportFormatLabel.setForeground(red);
}
testReportFormat = ConfigDefaults.getTestReportFormatDefaultValue();
}
if (testReportFormat == OutputFileFormat.TXT) {
testReportFormatTxtButton.setSelection(true);
testReportFormatHtmlButton.setSelection(false);
} else if (testReportFormat == OutputFileFormat.HTML) {
testReportFormatTxtButton.setSelection(false);
testReportFormatHtmlButton.setSelection(true);
}
// TestReportOutput
OutputType testReportOutput = configManager.getTestReportOutput();
if ((testReportOutput == OutputType.NOT_DEFINED)
|| (testReportOutput == OutputType.UNKNOWN)) {
if (testReportOutput == OutputType.NOT_DEFINED) {
testReportOutputLabel.setForeground(gray);
}
if (testReportOutput == OutputType.UNKNOWN) {
testReportOutputLabel.setForeground(red);
}
testReportOutput = ConfigDefaults.getTestReportOutputDefaultValue();
}
if (testReportOutput == OutputType.FILE) {
testReportOutputFileButton.setSelection(true);
testReportOutputRDebugButton.setSelection(false);
} else if (testReportOutput == OutputType.RDEBUG) {
testReportOutputFileButton.setSelection(false);
testReportOutputRDebugButton.setSelection(true);
}
// TestReportFileCreationMode
FileCreationMode testReportFileCreationMode = configManager
.getTestReportFileCreationMode();
if ((testReportFileCreationMode == FileCreationMode.NOT_DEFINED)
|| (testReportFileCreationMode == FileCreationMode.UNKNOWN)) {
if (testReportFileCreationMode == FileCreationMode.NOT_DEFINED) {
testReportFileCreationModeLabel.setForeground(gray);
}
if (testReportFileCreationMode == FileCreationMode.UNKNOWN) {
testReportFileCreationModeLabel.setForeground(red);
}
testReportFileCreationMode = ConfigDefaults
.getTestReportFileCreationModeDefaultValue();
}
if (testReportFileCreationMode == FileCreationMode.APPEND) {
testReportFileCreationModeOverwriteButton.setSelection(false);
testReportFileCreationModeAppendButton.setSelection(true);
} else if (testReportFileCreationMode == FileCreationMode.OVERWRITE) {
testReportFileCreationModeOverwriteButton.setSelection(true);
testReportFileCreationModeAppendButton.setSelection(false);
}
// DeviceResetDllName
String deviceResetDllName = configManager.getDeviceResetDllName();
if (deviceResetDllName == null) {
deviceResetDllName = ConfigDefaults
.getDeviceResetDllNameDefaultValue();
deviceResetDllNameLabel.setForeground(gray);
}
deviceResetDllNameValue.removeModifyListener(this);
deviceResetDllNameValue.setText(deviceResetDllName);
deviceResetDllNameValue.addModifyListener(this);
// DisableMeasurement
MeasurementModule disableMeasurement = configManager
.getDisableMeasurement();
if ((disableMeasurement == MeasurementModule.NOT_DEFINED)
|| (disableMeasurement == MeasurementModule.UNKNOWN)) {
if (disableMeasurement == MeasurementModule.NOT_DEFINED) {
disableMeasurementLabel.setForeground(gray);
}
if (disableMeasurement == MeasurementModule.UNKNOWN) {
disableMeasurementLabel.setForeground(red);
}
disableMeasurement = ConfigDefaults
.getDisableMeasurementDefaultValue();
}
String[] measurementModuleNames = ConfigUtil
.getMeasurementModuleNames();
String measurementModuleName = ConfigUtil
.getMeasurementModuleName(disableMeasurement);
selection = -1;
disableMeasurementValue.removeAll();
for (int i = 0; i < measurementModuleNames.length; i++) {
disableMeasurementValue.add(measurementModuleNames[i]);
if (measurementModuleNames[i].equals(measurementModuleName)) {
selection = i;
}
}
if (selection != -1) {
disableMeasurementValue.select(selection);
}
// Timeout
Integer timeout = configManager.getTimeout();
if (timeout == null) {
timeout = ConfigDefaults.getTimeoutDefaultValue();
}
timeoutValue.setSelection(timeout);
// UITestingSupport
YesNo uiTestingSupport = configManager.getUITestingSupport();
if ((uiTestingSupport == YesNo.NOT_DEFINED)
|| (uiTestingSupport == YesNo.UNKNOWN)) {
if (uiTestingSupport == YesNo.NOT_DEFINED) {
uiTestingSupportLabel.setForeground(gray);
}
if (uiTestingSupport == YesNo.UNKNOWN) {
uiTestingSupportLabel.setForeground(red);
}
uiTestingSupport = ConfigDefaults.getUITestingSupportDefaultValue();
}
if (uiTestingSupport == YesNo.YES) {
uiTestingSupportYesButton.setSelection(true);
uiTestingSupportNoButton.setSelection(false);
} else if (uiTestingSupport == YesNo.NO) {
uiTestingSupportYesButton.setSelection(false);
uiTestingSupportNoButton.setSelection(true);
}
// SeparateProcesses
YesNo separateProcesses = configManager.getSeparateProcesses();
if ((separateProcesses == YesNo.NOT_DEFINED)
|| (separateProcesses == YesNo.UNKNOWN)) {
if (separateProcesses == YesNo.NOT_DEFINED) {
separateProcessLabel.setForeground(gray);
}
if (separateProcesses == YesNo.UNKNOWN) {
separateProcessLabel.setForeground(red);
}
separateProcesses = ConfigDefaults
.getSeparateProcessesDefaultValue();
}
if (separateProcesses == YesNo.YES) {
separateProcessYesButton.setSelection(true);
separateProcessNoButton.setSelection(false);
} else if (separateProcesses == YesNo.NO) {
separateProcessYesButton.setSelection(false);
separateProcessNoButton.setSelection(true);
}
}
/**
* Updates logger defaults panel controls value
*/
private void updateLoggerDefaultsControlsValue() {
Color red = toolkit.getColors().createColor("red", new RGB(255, 0, 0));
Color black = toolkit.getColors()
.createColor("black", new RGB(0, 0, 0));
Color gray = toolkit.getColors().createColor("gray",
new RGB(170, 170, 170));
createLogDirectoriesLabel.setForeground(black);
emulatorBasePathLabel.setForeground(black);
emulatorLogFormatLabel.setForeground(black);
emulatorLogOutputLabel.setForeground(black);
hardwareBasePathLabel.setForeground(black);
hardwareLogFormatLabel.setForeground(black);
hardwareLogOutputLabel.setForeground(black);
logFileCreationModeLabel.setForeground(black);
threadIdToLogFileLabel.setForeground(black);
withTimeStampLabel.setForeground(black);
withLineBreakLabel.setForeground(black);
fileUnicodeLabel.setForeground(black);
addTestcaseTitleLabel.setForeground(black);
withEventRankingLabel.setForeground(black);
// CreateLogDirectories
YesNo createLogDirectories = configManager.getCreateLogDirectories();
if ((createLogDirectories == YesNo.NOT_DEFINED)
|| (createLogDirectories == YesNo.UNKNOWN)) {
if (createLogDirectories == YesNo.NOT_DEFINED) {
createLogDirectoriesLabel.setForeground(gray);
}
if (createLogDirectories == YesNo.UNKNOWN) {
createLogDirectoriesLabel.setForeground(red);
}
createLogDirectories = ConfigDefaults
.getCreateLogDirectoriesDefaultValue();
}
if (createLogDirectories == YesNo.YES) {
createLogDirectoriesYesButton.setSelection(true);
createLogDirectoriesNoButton.setSelection(false);
} else if (createLogDirectories == YesNo.NO) {
createLogDirectoriesYesButton.setSelection(false);
createLogDirectoriesNoButton.setSelection(true);
}
// EmulatorBasePath
String emulatorLogBasePath = configManager.getEmulatorBasePath();
if (emulatorLogBasePath == null) {
emulatorLogBasePath = ConfigDefaults
.getEmulatorBasePathDefaultValue();
emulatorBasePathLabel.setForeground(gray);
}
emulatorBasePathValue.removeModifyListener(this);
emulatorBasePathValue.setText(emulatorLogBasePath);
emulatorBasePathValue.addModifyListener(this);
// EmulatorFormat
OutputFileFormat emulatorFormat = configManager.getEmulatorLogFormat();
if ((emulatorFormat == OutputFileFormat.NOT_DEFINED)
|| (emulatorFormat == OutputFileFormat.UNKNOWN)) {
if (emulatorFormat == OutputFileFormat.NOT_DEFINED) {
emulatorLogFormatLabel.setForeground(gray);
}
if (emulatorFormat == OutputFileFormat.UNKNOWN) {
emulatorLogFormatLabel.setForeground(red);
}
emulatorFormat = ConfigDefaults.getEmulatorLogFormatDefaultValue();
}
if (emulatorFormat == OutputFileFormat.TXT) {
emulatorLogFormatTxtButton.setSelection(true);
emulatorLogFormatHtmlButton.setSelection(false);
} else if (emulatorFormat == OutputFileFormat.HTML) {
emulatorLogFormatTxtButton.setSelection(false);
emulatorLogFormatHtmlButton.setSelection(true);
}
// EmulatorOutput emulatorOutput
OutputType emulatorOutput = configManager.getEmulatorLogOutput();
if ((emulatorOutput == OutputType.NOT_DEFINED)
|| (emulatorOutput == OutputType.UNKNOWN)) {
if (emulatorOutput == OutputType.NOT_DEFINED) {
emulatorLogOutputLabel.setForeground(gray);
}
if (emulatorOutput == OutputType.UNKNOWN) {
emulatorLogOutputLabel.setForeground(red);
}
emulatorOutput = ConfigDefaults.getEmulatorLogOutputDefaultValue();
}
if (emulatorOutput == OutputType.FILE) {
emulatorLogOutputFileButton.setSelection(true);
emulatorLogOutputRDebugButton.setSelection(false);
} else if (emulatorOutput == OutputType.RDEBUG) {
emulatorLogOutputFileButton.setSelection(false);
emulatorLogOutputRDebugButton.setSelection(true);
}
// HardwareBasePath
String hardwareLogBasePath = configManager.getHardwareBasePath();
if (hardwareLogBasePath == null) {
hardwareLogBasePath = ConfigDefaults
.getHardwareBasePathDefaultValue();
hardwareBasePathLabel.setForeground(gray);
}
hardwareBasePathValue.removeModifyListener(this);
hardwareBasePathValue.setText(hardwareLogBasePath);
hardwareBasePathValue.addModifyListener(this);
// HardwareFormat
OutputFileFormat hardwareFormat = configManager.getHardwareLogFormat();
if ((hardwareFormat == OutputFileFormat.NOT_DEFINED)
|| (hardwareFormat == OutputFileFormat.UNKNOWN)) {
if (hardwareFormat == OutputFileFormat.NOT_DEFINED) {
hardwareLogFormatLabel.setForeground(gray);
}
if (hardwareFormat == OutputFileFormat.UNKNOWN) {
hardwareLogFormatLabel.setForeground(red);
}
hardwareFormat = ConfigDefaults.getHardwareLogFormatDefaultValue();
}
if (hardwareFormat == OutputFileFormat.TXT) {
hardwareLogFormatTxtButton.setSelection(true);
hardwareLogFormatHtmlButton.setSelection(false);
} else if (emulatorFormat == OutputFileFormat.HTML) {
hardwareLogFormatTxtButton.setSelection(false);
hardwareLogFormatHtmlButton.setSelection(true);
}
// EmulatorOutput emulatorOutput
OutputType hardwareOutput = configManager.getHardwareLogOutput();
if ((hardwareOutput == OutputType.NOT_DEFINED)
|| (hardwareOutput == OutputType.UNKNOWN)) {
if (hardwareOutput == OutputType.NOT_DEFINED) {
hardwareLogOutputLabel.setForeground(gray);
}
if (hardwareOutput == OutputType.UNKNOWN) {
hardwareLogOutputLabel.setForeground(red);
}
hardwareOutput = ConfigDefaults.getHardwareLogOutputDefaultValue();
}
if (hardwareOutput == OutputType.FILE) {
hardwareLogOutputFileButton.setSelection(true);
hardwareLogOutputRDebugButton.setSelection(false);
} else if (emulatorOutput == OutputType.RDEBUG) {
hardwareLogOutputFileButton.setSelection(false);
hardwareLogOutputRDebugButton.setSelection(true);
}
// FileCreationMode
FileCreationMode logFileCreationMode = configManager
.getLogFileCreationMode();
if ((logFileCreationMode == FileCreationMode.NOT_DEFINED)
|| (logFileCreationMode == FileCreationMode.UNKNOWN)) {
if (logFileCreationMode == FileCreationMode.NOT_DEFINED) {
logFileCreationModeLabel.setForeground(gray);
}
if (logFileCreationMode == FileCreationMode.UNKNOWN) {
logFileCreationModeLabel.setForeground(red);
}
logFileCreationMode = ConfigDefaults
.getLogFileCreationModeDefaultValue();
}
if (logFileCreationMode == FileCreationMode.APPEND) {
logFileCreationModeOverwriteButton.setSelection(false);
logFileCreationModeAppendButton.setSelection(true);
} else if (logFileCreationMode == FileCreationMode.OVERWRITE) {
logFileCreationModeOverwriteButton.setSelection(true);
logFileCreationModeAppendButton.setSelection(false);
}
// ThreadIdToLogFile
YesNo threadIdToLogFile = configManager.getThreadIdToLogFile();
if ((threadIdToLogFile == YesNo.NOT_DEFINED)
|| (threadIdToLogFile == YesNo.UNKNOWN)) {
if (threadIdToLogFile == YesNo.NOT_DEFINED) {
threadIdToLogFileLabel.setForeground(gray);
}
if (threadIdToLogFile == YesNo.UNKNOWN) {
threadIdToLogFileLabel.setForeground(red);
}
threadIdToLogFile = ConfigDefaults
.getThreadIdToLogFileDefaultValue();
}
if (threadIdToLogFile == YesNo.YES) {
threadIdToLogFileYesButton.setSelection(true);
threadIdToLogFileNoButton.setSelection(false);
} else if (threadIdToLogFile == YesNo.NO) {
threadIdToLogFileYesButton.setSelection(false);
threadIdToLogFileNoButton.setSelection(true);
}
// WithTimeStamp
YesNo withTimeStamp = configManager.getWithTimeStamp();
if ((withTimeStamp == YesNo.NOT_DEFINED)
|| (withTimeStamp == YesNo.UNKNOWN)) {
if (withTimeStamp == YesNo.NOT_DEFINED) {
withTimeStampLabel.setForeground(gray);
}
if (withTimeStamp == YesNo.UNKNOWN) {
withTimeStampLabel.setForeground(red);
}
withTimeStamp = ConfigDefaults.getWithTimeStampDefaultValue();
}
if (withTimeStamp == YesNo.YES) {
withTimeStampYesButton.setSelection(true);
withTimeStampNoButton.setSelection(false);
} else if (withTimeStamp == YesNo.NO) {
withTimeStampYesButton.setSelection(false);
withTimeStampNoButton.setSelection(true);
}
// WithLineBreak
YesNo withLineBreak = configManager.getWithLineBreak();
if ((withLineBreak == YesNo.NOT_DEFINED)
|| (withLineBreak == YesNo.UNKNOWN)) {
if (withLineBreak == YesNo.NOT_DEFINED) {
withLineBreakLabel.setForeground(gray);
}
if (withLineBreak == YesNo.UNKNOWN) {
withLineBreakLabel.setForeground(red);
}
withLineBreak = ConfigDefaults.getWithLineBreakDefaultValue();
}
if (withLineBreak == YesNo.YES) {
withLineBreakYesButton.setSelection(true);
withLineBreakNoButton.setSelection(false);
} else if (withLineBreak == YesNo.NO) {
withLineBreakYesButton.setSelection(false);
withLineBreakNoButton.setSelection(true);
}
// WithEventRanking
YesNo withEventRanking = configManager.getWithEventRanking();
if ((withEventRanking == YesNo.NOT_DEFINED)
|| (withEventRanking == YesNo.UNKNOWN)) {
if (withEventRanking == YesNo.NOT_DEFINED) {
withEventRankingLabel.setForeground(gray);
}
if (withEventRanking == YesNo.UNKNOWN) {
withEventRankingLabel.setForeground(red);
}
withEventRanking = ConfigDefaults.getWithEventRankingDefaultValue();
}
if (withEventRanking == YesNo.YES) {
withEventRankingYesButton.setSelection(true);
withEventRankingNoButton.setSelection(false);
} else if (withEventRanking == YesNo.NO) {
withEventRankingYesButton.setSelection(false);
withEventRankingNoButton.setSelection(true);
}
// FileUnicode
YesNo fileUnicode = configManager.getFileUnicode();
if ((fileUnicode == YesNo.NOT_DEFINED)
|| (fileUnicode == YesNo.UNKNOWN)) {
if (fileUnicode == YesNo.NOT_DEFINED) {
fileUnicodeLabel.setForeground(gray);
}
if (fileUnicode == YesNo.UNKNOWN) {
fileUnicodeLabel.setForeground(red);
}
fileUnicode = ConfigDefaults.getFileUnicodeDefaultValue();
}
if (fileUnicode == YesNo.YES) {
fileUnicodeYesButton.setSelection(true);
fileUnicodeNoButton.setSelection(false);
} else if (fileUnicode == YesNo.NO) {
fileUnicodeYesButton.setSelection(false);
fileUnicodeNoButton.setSelection(true);
}
// AddTestCaseTile
YesNo addTestcaseTitle = configManager.getAddTestcaseTitle();
if ((addTestcaseTitle == YesNo.NOT_DEFINED)
|| (addTestcaseTitle == YesNo.UNKNOWN)) {
if (addTestcaseTitle == YesNo.NOT_DEFINED) {
addTestcaseTitleLabel.setForeground(gray);
}
if (addTestcaseTitle == YesNo.UNKNOWN) {
addTestcaseTitleLabel.setForeground(red);
}
addTestcaseTitle = ConfigDefaults.getAddTestCaseTitleDefaultValue();
}
if (addTestcaseTitle == YesNo.YES) {
addTestCaseTitleYesButton.setSelection(true);
addTestCaseTitleNoButton.setSelection(false);
} else if (addTestcaseTitle == YesNo.NO) {
addTestCaseTitleYesButton.setSelection(false);
addTestCaseTitleNoButton.setSelection(true);
}
}
/**
* Updates modules panel controls value
*/
private void updateModulesControlsValue() {
modulesTreeRoot.removeAllChildreans();
int modulesCount = configManager.getModulesCount();
for (int i = 0; i < modulesCount; i++) {
String moduleName = configManager.getModuleName(i);
if ((moduleName == null) || (moduleName.length() == 0)) {
continue;
}
ModulesTreeNode moduleNode = new ModulesTreeNode(modulesTreeRoot);
moduleNode.setType(SectionElementType.MODULE_NAME);
moduleNode.setIndex(i);
moduleNode.setValue(moduleName);
String iniFileName = configManager.getModuleIniFile(i);
if ((iniFileName != null) && (iniFileName.length() != 0)) {
ModulesTreeNode iniFileNode = new ModulesTreeNode(moduleNode);
iniFileNode.setType(SectionElementType.INI_FILE);
iniFileNode.setIndex(0);
iniFileNode.setValue(iniFileName);
}
int configFilesCount = configManager.getModuleTestcaseFilesCount(i);
for (int k = 0; k < configFilesCount; k++) {
String configFileName = configManager.getModuleTestCaseFile(i,
k);
if ((configFileName == null) || (configFileName.length() == 0)) {
continue;
}
ModulesTreeNode configFileNode = new ModulesTreeNode(moduleNode);
configFileNode.setType(SectionElementType.TEST_CASE_FILE);
configFileNode.setIndex(k);
configFileNode.setValue(configFileName);
}
}
modulesTreeViewer.refresh();
}
/**
* Updates global settings and modules pages controls value
*/
private void updateControlsValue() {
updateEngineDefaultsControlsValue();
updateLoggerDefaultsControlsValue();
updateModulesControlsValue();
}
/**
* Updates problem markers
*/
private void updateProblemMarkers() {
clearProblemMarkers();
createProblemMarkers(configManager.getParseProblems(), getResource());
}
/**
* Creates problem markers
*
* @param problems
* list of problems
* @param resource
* resource used to create markers
*/
private void createProblemMarkers(ArrayList<ParseProblem> problems,
IResource resource) {
if ((problems == null) || (resource == null)) {
return;
}
// Create new problem markers if some problems occures during parsing
if (problems != null) {
try {
int problemsCount = problems.size();
problemMarkers = new ArrayList<IMarker>();
for (int i = 0; i < problemsCount; i++) {
IMarker marker = resource.createMarker(IMarker.PROBLEM);
marker.setAttribute(IMarker.LINE_NUMBER,
problems.get(i).lineNumber);
marker.setAttribute(IMarker.MESSAGE,
problems.get(i).description);
if (problems.get(i).type == ParseProblem.ProblemType.ERROR) {
marker.setAttribute(IMarker.PRIORITY,
IMarker.PRIORITY_HIGH);
marker.setAttribute(IMarker.SEVERITY,
IMarker.SEVERITY_ERROR);
} else if (problems.get(i).type == ParseProblem.ProblemType.WARNING) {
marker.setAttribute(IMarker.PRIORITY,
IMarker.PRIORITY_HIGH);
marker.setAttribute(IMarker.SEVERITY,
IMarker.SEVERITY_WARNING);
}
problemMarkers.add(marker);
}
} catch (CoreException e) {
e.printStackTrace();
}
}
}
/**
* Removes problem markers
*
* @param resource
*/
private void clearProblemMarkers() {
if (problemMarkers == null) {
return;
}
try {
for (int i = 0; i < problemMarkers.size(); i++) {
problemMarkers.get(i).delete();
}
problemMarkers.clear();
} catch (CoreException e) {
e.printStackTrace();
}
}
/**
* The <code>MultiPageEditorPart</code> implementation of this
* <code>IWorkbenchPart</code> method disposes all nested editors
*/
public void dispose() {
clearProblemMarkers();
ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
super.dispose();
}
/**
* Saves the editor document
*/
public void doSave(IProgressMonitor monitor) {
getEditor(sourcePageIndex).doSave(monitor);
loadConfig();
}
/**
* Saves the editor document as another file
*/
public void doSaveAs() {
IEditorPart editor = getEditor(sourcePageIndex);
editor.doSaveAs();
setPageText(sourcePageIndex, editor.getTitle());
setInput(editor.getEditorInput());
loadConfig();
}
/*
* (non-Javadoc) Method declared on IEditorPart
*/
public void gotoMarker(IMarker marker) {
setActivePage(sourcePageIndex);
IDE.gotoMarker(getEditor(sourcePageIndex), marker);
}
/**
* Gets resource associated with editor input
*
* @return
*/
protected IResource getResource() {
IEditorInput input = sourceEditor.getEditorInput();
IResource resource = (IResource) input.getAdapter(IFile.class);
if (resource == null) {
resource = (IResource) input.getAdapter(IResource.class);
if (resource == null) {
resource = ResourcesPlugin.getWorkspace().getRoot();
}
}
return resource;
}
/**
* The <code>MultiPageEditorExample</code> implementation of this method
* checks that the input is an instance of <code>IFileEditorInput</code>.
*/
public void init(IEditorSite site, IEditorInput editorInput)
throws PartInitException {
super.init(site, editorInput);
}
/*
* (non-Javadoc) Method declared on IEditorPart.
*/
public boolean isSaveAsAllowed() {
return true;
}
/**
* Updates the contents of modules/general settings page when it is
* activated.
*/
protected void pageChange(int pageIndex) {
super.pageChange(pageIndex);
if ((pageIndex == modulesPageIndex)
|| (pageIndex == globalSettingsPageIndex)) {
loadConfig();
}
}
/**
* Closes all project files on project close.
*/
public void resourceChanged(final IResourceChangeEvent event) {
if (event.getType() == IResourceChangeEvent.PRE_CLOSE) {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
IWorkbenchPage[] pages = getSite().getWorkbenchWindow()
.getPages();
for (int i = 0; i < pages.length; i++) {
if (((FileEditorInput) sourceEditor.getEditorInput())
.getFile().getProject().equals(
event.getResource())) {
IEditorPart editorPart = pages[i]
.findEditor(sourceEditor.getEditorInput());
pages[i].closeEditor(editorPart, true);
}
}
}
});
}
}
/*
* (non-Javadoc) Method declared on SelectionListener
*/
public void widgetDefaultSelected(SelectionEvent event) {
handleSelection(event);
}
/*
* (non-Javadoc) Method declared on ModifyListener
*/
public void modifyText(ModifyEvent event) {
handleModifyText(event);
}
/*
* (non-Javadoc) Method declared on SelectionListener
*/
public void widgetSelected(SelectionEvent event) {
handleSelection(event);
}
/**
* Handles text controls modification event
*
* @param event
* event
*/
private void handleModifyText(ModifyEvent event) {
Color black = toolkit.getColors()
.createColor("black", new RGB(0, 0, 0));
Object source = event.getSource();
// Engine defaults section
if (source == testReportFilePathValue) {
testReportFilePathLabel.setForeground(black);
onTestReportFilePathChange();
} else if (source == testReportFileNameValue) {
testReportFileNameLabel.setForeground(black);
onTestReportFileNameChange();
} else if (source == deviceResetDllNameValue) {
deviceResetDllNameLabel.setForeground(black);
onDeviceResetDllNameChange();
}
// Logger defaults section
else if (source == emulatorBasePathValue) {
emulatorBasePathLabel.setForeground(black);
onEmulatorBasePathChange();
} else if (source == hardwareBasePathValue) {
hardwareBasePathLabel.setForeground(black);
onHardwareBasePathChange();
} else if (source == timeoutValue) {
onTimeoutChange();
}
}
/**
* Handles controls selection event
*
* @param event
* event
*/
private void handleSelection(SelectionEvent event) {
Color black = toolkit.getColors()
.createColor("black", new RGB(0, 0, 0));
Object source = event.getSource();
// Engine defaults section
if (source == testReportModeValue) {
testReportModeLabel.setForeground(black);
onTestReportModeChange();
} else if ((source == createTestReportYesButton)
|| (source == createTestReportNoButton)) {
createTestReportLabel.setForeground(black);
onCreateTestReportChange(source);
} else if (source == testReportFilePathValue) {
testReportFilePathLabel.setForeground(black);
onTestReportFilePathChange();
} else if (source == testReportFileNameValue) {
testReportFileNameLabel.setForeground(black);
onTestReportFileNameChange();
} else if ((source == testReportFormatTxtButton)
|| (source == testReportFormatHtmlButton)) {
testReportFormatLabel.setForeground(black);
onTestReportFormatChange(source);
} else if ((source == testReportOutputFileButton)
|| (source == testReportOutputRDebugButton)) {
testReportOutputLabel.setForeground(black);
onTestReportOutputChange(source);
} else if ((source == testReportFileCreationModeOverwriteButton)
|| (source == testReportFileCreationModeAppendButton)) {
testReportFileCreationModeLabel.setForeground(black);
onTestReportFileCreationModeChange(source);
} else if (source == deviceResetDllNameValue) {
deviceResetDllNameLabel.setForeground(black);
onDeviceResetDllNameChange();
} else if (source == disableMeasurementValue) {
disableMeasurementLabel.setForeground(black);
onDisableMeasurementChange();
} else if (source == timeoutValue) {
onTimeoutChange();
} else if ((source == uiTestingSupportYesButton)
|| (source == uiTestingSupportNoButton)) {
uiTestingSupportLabel.setForeground(black);
onUITestingSupportButtonSelect();
} else if ((source == separateProcessYesButton)
|| (source == separateProcessNoButton)) {
separateProcessLabel.setForeground(black);
onSeparateProcessesButtonSelect();
}
// Logger defaults section
else if ((source == createLogDirectoriesYesButton)
|| (source == createLogDirectoriesNoButton)) {
createLogDirectoriesLabel.setForeground(black);
onCreateLogDirectoriesChange(source);
} else if (source == emulatorBasePathValue) {
emulatorBasePathLabel.setForeground(black);
onEmulatorBasePathChange();
} else if ((source == emulatorLogFormatTxtButton)
|| (source == emulatorLogFormatHtmlButton)) {
emulatorLogFormatLabel.setForeground(black);
onEmulatorLogFormatChange(source);
} else if ((source == emulatorLogOutputFileButton)
|| (source == emulatorLogOutputRDebugButton)) {
emulatorLogOutputLabel.setForeground(black);
onEmulatorLogOutputChange(source);
} else if (source == hardwareBasePathValue) {
hardwareBasePathLabel.setForeground(black);
onHardwareBasePathChange();
} else if ((source == hardwareLogFormatTxtButton)
|| (source == hardwareLogFormatHtmlButton)) {
hardwareLogFormatLabel.setForeground(black);
onHarwdareLogFormatChange(source);
} else if ((source == hardwareLogOutputFileButton)
|| (source == hardwareLogOutputRDebugButton)) {
hardwareLogOutputLabel.setForeground(black);
onHardwareLogOutputChange(source);
} else if ((source == logFileCreationModeOverwriteButton)
|| (source == logFileCreationModeAppendButton)) {
logFileCreationModeLabel.setForeground(black);
onLogFileCreationModeChange(source);
} else if ((source == threadIdToLogFileYesButton)
|| (source == threadIdToLogFileNoButton)) {
threadIdToLogFileLabel.setForeground(black);
onThreadIdToLogFileChange(source);
} else if ((source == withTimeStampYesButton)
|| (source == withTimeStampNoButton)) {
withTimeStampLabel.setForeground(black);
onWithTimeStampChange(source);
} else if ((source == withLineBreakYesButton)
|| (source == withLineBreakNoButton)) {
withLineBreakLabel.setForeground(black);
onWithLineBreakChange(source);
} else if ((source == withEventRankingYesButton)
|| (source == withEventRankingNoButton)) {
withEventRankingLabel.setForeground(black);
onWithEventRankingChange(source);
} else if ((source == fileUnicodeYesButton)
|| (source == fileUnicodeNoButton)) {
fileUnicodeLabel.setForeground(black);
onFileUnicodeChange(source);
} else if ((source == addTestCaseTitleYesButton)
|| (source == addTestCaseTitleNoButton)) {
addTestcaseTitleLabel.setForeground(black);
onAddTestcaseTitleChange(source);
}
// Modules page
else if (source == modulesTreeViewer) {
onModulesTreeElementSelect();
} else if (source == addModuleButton) {
onAddModuleButtonSelect();
} else if (source == addIniFileButton) {
onAddIniFileToModuleButtonSelect();
} else if (source == addTestCaseFileButton) {
onAddTestCaseFileToModuleButtonSelect();
} else if (source == editButton) {
onEditButtonSelect();
} else if (source == removeButton) {
onRemoveButtonSelect();
}
}
/**
* Handles <code>FileUnicode</code> value change
*
* @param source
* event source
*/
private void onFileUnicodeChange(Object source) {
if (fileUnicodeYesButton.getSelection() == true) {
configManager.setFileUnicode(YesNo.YES);
} else if (fileUnicodeNoButton.getSelection() == true) {
configManager.setFileUnicode(YesNo.NO);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>AddTestCaseTitle</code> value change
*
* @param source
* event source
*/
private void onAddTestcaseTitleChange(Object source) {
if (addTestCaseTitleYesButton.getSelection()) {
configManager.setAddTestcaseTitle(YesNo.YES);
} else if (addTestCaseTitleNoButton.getSelection()) {
configManager.setAddTestcaseTitle(YesNo.NO);
} else
return;
syncSourceWithViews();
}
/**
* Handles <code>WithEventRanking</code> value change
*
* @param source
* event source
*/
private void onWithEventRankingChange(Object source) {
if (withEventRankingYesButton.getSelection() == true) {
configManager.setWithEventRanking(YesNo.YES);
} else if (withEventRankingNoButton.getSelection() == true) {
configManager.setWithEventRanking(YesNo.NO);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>onWithTimeStampChange</code> value change
*
* @param source
* source
*/
private void onWithTimeStampChange(Object source) {
if (withTimeStampYesButton.getSelection() == true) {
configManager.setWithTimeStamp(YesNo.YES);
} else if (withTimeStampNoButton.getSelection() == true) {
configManager.setWithTimeStamp(YesNo.NO);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>ThreadIdToLogFile</code> value change
*
* @param source
* event source
*/
private void onThreadIdToLogFileChange(Object source) {
if (threadIdToLogFileYesButton.getSelection() == true) {
configManager.setThreadIdToLogFile(YesNo.YES);
} else if (threadIdToLogFileNoButton.getSelection() == true) {
configManager.setThreadIdToLogFile(YesNo.NO);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>LogFileCreationMode</code> value change
*
* @param source
* event source
*/
private void onLogFileCreationModeChange(Object source) {
if (logFileCreationModeAppendButton.getSelection() == true) {
configManager.setLogFileCreationMode(FileCreationMode.APPEND);
} else if (logFileCreationModeOverwriteButton.getSelection() == true) {
configManager.setLogFileCreationMode(FileCreationMode.OVERWRITE);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>HardwareLogOutput</code> value change
*
* @param source
* event source
*/
private void onHardwareLogOutputChange(Object source) {
if (hardwareLogOutputFileButton.getSelection() == true) {
configManager.setHardwareLogOutput(OutputType.FILE);
} else if (hardwareLogOutputRDebugButton.getSelection() == true) {
configManager.setHardwareLogOutput(OutputType.RDEBUG);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>HarwdareLogFormat</code> value change
*
* @param source
*/
private void onHarwdareLogFormatChange(Object source) {
if (hardwareLogFormatTxtButton.getSelection() == true) {
configManager.setHardwareLogFormat(OutputFileFormat.TXT);
} else if (hardwareLogFormatHtmlButton.getSelection() == true) {
configManager.setHardwareLogFormat(OutputFileFormat.HTML);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>HardwareBasePath</code> value change
*/
private void onHardwareBasePathChange() {
configManager.setHardwareBasePath(hardwareBasePathValue.getText());
syncSourceWithViews();
}
/**
* Handles <code>EmulatorLogFormat</code> value change
*
* @param source
* event source
*/
private void onEmulatorLogFormatChange(Object source) {
if (emulatorLogFormatTxtButton.getSelection() == true) {
configManager.setEmulatorLogFormat(OutputFileFormat.TXT);
} else if (emulatorLogFormatHtmlButton.getSelection() == true) {
configManager.setEmulatorLogFormat(OutputFileFormat.HTML);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>EmulatorLogOutput</code> value change
*
* @param source
* event source
*/
private void onEmulatorLogOutputChange(Object source) {
if (emulatorLogOutputFileButton.getSelection() == true) {
configManager.setEmulatorLogOutput(OutputType.FILE);
} else if (emulatorLogOutputRDebugButton.getSelection() == true) {
configManager.setEmulatorLogOutput(OutputType.RDEBUG);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>EmulatorBasePath</code> value change
*/
private void onEmulatorBasePathChange() {
configManager.setEmulatorBasePath(emulatorBasePathValue.getText());
syncSourceWithViews();
}
/**
* Handles <code>CreateLogDirectories</code> value change
*
* @param source
* event source
*/
private void onCreateLogDirectoriesChange(Object source) {
if (createLogDirectoriesYesButton.getSelection() == true) {
configManager.setCreateLogDirectories(YesNo.YES);
} else if (createLogDirectoriesNoButton.getSelection() == true) {
configManager.setCreateLogDirectories(YesNo.NO);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>WithLineBreak</code> value change
*
* @param source
* event source
*/
private void onWithLineBreakChange(Object source) {
if (withLineBreakYesButton.getSelection() == true) {
configManager.setWithLineBreak(YesNo.YES);
} else if (withLineBreakNoButton.getSelection() == true) {
configManager.setWithLineBreak(YesNo.NO);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>Timeout</code> value change
*/
private void onTimeoutChange() {
configManager.setTimeout(timeoutValue.getSelection());
syncSourceWithViews();
}
/**
* Handles <code>DisableMeasurement</code> value change
*/
private void onDisableMeasurementChange() {
String module = disableMeasurementValue.getItem(disableMeasurementValue
.getSelectionIndex());
configManager.setDisableMeasurementModule(ConfigUtil
.getMeasurementModuleByName(module));
syncSourceWithViews();
}
/**
* Handles <code>DeviceResetDllName</code> value change
*/
private void onDeviceResetDllNameChange() {
configManager.setDeviceResetDllName(deviceResetDllNameValue.getText());
syncSourceWithViews();
}
/**
* Handles <code>TestReportFileCreationMode</code> value change
*
* @param source
* event source
*/
private void onTestReportFileCreationModeChange(Object source) {
if (testReportFileCreationModeAppendButton.getSelection() == true) {
configManager
.setTestReportFileCreationMode(FileCreationMode.APPEND);
} else if (testReportFileCreationModeOverwriteButton.getSelection() == true) {
configManager
.setTestReportFileCreationMode(FileCreationMode.OVERWRITE);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>TestReportOutput</code> value change
*
* @param source
* event source
*/
private void onTestReportOutputChange(Object source) {
if (testReportOutputFileButton.getSelection() == true) {
configManager.setTestReportOutput(OutputType.FILE);
} else if (testReportOutputRDebugButton.getSelection() == true) {
configManager.setTestReportOutput(OutputType.RDEBUG);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>TestReportFormat</code> value change
*
* @param source
* event source
*/
private void onTestReportFormatChange(Object source) {
if (testReportFormatTxtButton.getSelection() == true) {
configManager.setTestReportFormat(OutputFileFormat.TXT);
} else if (testReportFormatHtmlButton.getSelection() == true) {
configManager.setTestReportFormat(OutputFileFormat.HTML);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles <code>TestReportFileName</code> value change
*/
private void onTestReportFileNameChange() {
configManager.setTestReportFileName(testReportFileNameValue.getText());
syncSourceWithViews();
}
/**
* Handles <code>TestReportFilePath</code> value change
*/
private void onTestReportFilePathChange() {
configManager.setTestReportFilePath(testReportFilePathValue.getText());
syncSourceWithViews();
}
/**
* Handles <code>TestReportMode</code> value change
*/
private void onTestReportModeChange() {
String mode = testReportModeValue.getItem(testReportModeValue
.getSelectionIndex());
configManager.setTestReportMode(ConfigUtil
.getTestReportModeByName(mode));
syncSourceWithViews();
}
/**
* Handles <code>CreateTestReport</code> value change
*
* @param source
*/
private void onCreateTestReportChange(Object source) {
if (createTestReportYesButton.getSelection() == true) {
configManager.setCreateTestReport(YesNo.YES);
} else if (createTestReportNoButton.getSelection() == true) {
configManager.setCreateTestReport(YesNo.NO);
} else {
return;
}
syncSourceWithViews();
}
/**
* Handles selection change in modules tree.
*
* Depend which tree element is selected proper buttons in modules page are
* enabled or disabled.
*/
private void onModulesTreeElementSelect() {
TreeSelection selection = (TreeSelection) modulesTreeViewer
.getSelection();
ModulesTreeNode selectedItem = (ModulesTreeNode) selection
.getFirstElement();
if (selectedItem == null) {
addModuleButton.setEnabled(true);
addIniFileButton.setEnabled(false);
addTestCaseFileButton.setEnabled(false);
editButton.setEnabled(false);
removeButton.setEnabled(false);
return;
}
switch (selectedItem.getType()) {
case MODULE_NAME: {
addModuleButton.setEnabled(true);
addTestCaseFileButton.setEnabled(true);
editButton.setEnabled(true);
removeButton.setEnabled(true);
addIniFileButton.setEnabled(true);
java.util.List<ModulesTreeNode> childrens = selectedItem
.getChildrens();
if (childrens != null) {
for (int i = 0; i < childrens.size(); i++) {
if (childrens.get(i).getType() == SectionElementType.INI_FILE) {
addIniFileButton.setEnabled(false);
}
}
}
}
break;
case INI_FILE: {
addModuleButton.setEnabled(true);
addIniFileButton.setEnabled(false);
addTestCaseFileButton.setEnabled(true);
editButton.setEnabled(true);
removeButton.setEnabled(true);
}
break;
case TEST_CASE_FILE: {
addModuleButton.setEnabled(true);
addIniFileButton.setEnabled(true);
java.util.List<ModulesTreeNode> subNodes = selectedItem.getParent()
.getChildrens();
for (int i = 0; i < subNodes.size(); i++) {
if (subNodes.get(i).getType() == SectionElementType.INI_FILE) {
addIniFileButton.setEnabled(false);
break;
}
}
addTestCaseFileButton.setEnabled(true);
editButton.setEnabled(true);
removeButton.setEnabled(true);
}
break;
}
}
/**
* Handles <code>Add module</code> button selection
*
* Adds new module to config file and modules tree
*/
private void onAddModuleButtonSelect() {
NewModuleWizard moduleWizard = new NewModuleWizard(configManager);
moduleWizard.init(null, null);
WizardDialog dialog = new WizardDialog(modulesMainForm.getShell(),
moduleWizard);
dialog.create();
dialog.open();
int ret = dialog.getReturnCode();
if (ret == WizardDialog.OK) {
ModulesTreeNode moduleNode = new ModulesTreeNode();
moduleNode.setType(SectionElementType.MODULE_NAME);
moduleNode.setIndex(modulesTreeRoot.getChildrens().size());
moduleNode.setValue(configManager.getModuleName(moduleNode
.getIndex()));
moduleNode.setParent(modulesTreeRoot);
modulesTreeViewer.refresh();
syncSourceWithViews();
}
}
/**
* Handles <code>Add ini file</code> button selection
*
* Adds new ini file to selected module
*/
private void onAddIniFileToModuleButtonSelect() {
InputDialog iniFileDialog = new InputDialog(modulesMainForm.getShell(),
"Add ini file", "Ini file path",
"C:\\TestFramework\\Example.ini", null);
int ret = iniFileDialog.open();
if (ret == InputDialog.OK) {
TreeSelection selection = (TreeSelection) modulesTreeViewer
.getSelection();
ModulesTreeNode selectedItem = (ModulesTreeNode) selection
.getFirstElement();
if (selectedItem != null) {
ModulesTreeNode parent = selectedItem;
if (selectedItem.getType() != SectionElementType.MODULE_NAME) {
parent = selectedItem.getParent();
}
ModulesTreeNode iniFileNode = new ModulesTreeNode();
iniFileNode.setType(SectionElementType.INI_FILE);
iniFileNode.setIndex(0);
iniFileNode.setValue(iniFileDialog.getValue());
configManager.addIniFileToModule(parent.getIndex(),
iniFileDialog.getValue());
// Put ini file as first in module tree node
java.util.List<ModulesTreeNode> subNodes = parent
.getChildrens();
parent.removeAllChildreans();
iniFileNode.setParent(parent);
for (int i = 0; i < subNodes.size(); i++) {
parent.addChildren(subNodes.get(i));
}
// refresh modules tree view
modulesTreeViewer.refresh();
modulesTreeViewer.expandToLevel(parent, 1);
// Refresh modules add, rem, edit,.. states
onModulesTreeElementSelect();
// Synchronize source code with views state
syncSourceWithViews();
}
}
}
/**
* Handles <code>Add testcase file</code> button selection
*
* Adds new testcase file to selected module
*/
private void onAddTestCaseFileToModuleButtonSelect() {
InputDialog testCaseFileDialog = new InputDialog(modulesMainForm
.getShell(), "Add testcase file", "Testcase file path",
"C:\\TestFramework\\Example.cfg", null);
int ret = testCaseFileDialog.open();
if (ret == InputDialog.OK) {
TreeSelection selection = (TreeSelection) modulesTreeViewer
.getSelection();
ModulesTreeNode selectedItem = (ModulesTreeNode) selection
.getFirstElement();
if (selectedItem != null) {
ModulesTreeNode parent = selectedItem;
if (selectedItem.getType() != SectionElementType.MODULE_NAME) {
parent = selectedItem.getParent();
}
ModulesTreeNode testCaseFileNode = new ModulesTreeNode();
testCaseFileNode.setType(SectionElementType.TEST_CASE_FILE);
int index = -1;
java.util.List<ModulesTreeNode> subNodes = parent
.getChildrens();
for (int i = 0; i < subNodes.size(); i++) {
if (subNodes.get(i).getType() == SectionElementType.TEST_CASE_FILE) {
if (subNodes.get(i).getValue().toLowerCase().equals(
testCaseFileDialog.getValue().toLowerCase())) {
MessageBox box = new MessageBox(new Shell(),
SWT.ICON_ERROR);
box
.setText("Impossible to add duplicate test case file");
box.setMessage("Test case file already exist.");
box.open();
return;
}
if (index < subNodes.get(i).getIndex()) {
index = subNodes.get(i).getIndex();
}
}
}
index++;
testCaseFileNode.setIndex(index);
testCaseFileNode.setValue(testCaseFileDialog.getValue());
testCaseFileNode.setParent(parent);
configManager.addTestCaseFileToModule(parent.getIndex(),
testCaseFileDialog.getValue());
modulesTreeViewer.refresh();
modulesTreeViewer.expandToLevel(parent, 1);
onModulesTreeElementSelect();
syncSourceWithViews();
}
}
}
/**
* Handles <code>Edit<code> button selection.
*
* Depends on which modules tree element is selected
* proper edit dialog window apperas. After that selected
* element value is updated in config source and modules tree.
*/
private void onEditButtonSelect() {
TreeSelection selection = (TreeSelection) modulesTreeViewer
.getSelection();
ModulesTreeNode selectedItem = (ModulesTreeNode) selection
.getFirstElement();
if (selectedItem == null) {
return;
}
if (selectedItem.getType() == SectionElementType.MODULE_NAME) {
int moduleIndex = selectedItem.getIndex();
InputDialog moduleNameDialog = new InputDialog(modulesMainForm
.getShell(), "Change module name", "Module name",
selectedItem.getValue(), null);
if (moduleNameDialog.open() == InputDialog.OK) {
selectedItem.setValue(moduleNameDialog.getValue());
configManager
.updateModule(moduleIndex, selectedItem.getValue());
modulesTreeViewer.refresh();
syncSourceWithViews();
}
} else if (selectedItem.getType() == SectionElementType.INI_FILE) {
int moduleIndex = selectedItem.getParent().getIndex();
InputDialog iniFileDialog = new InputDialog(modulesMainForm
.getShell(), "Change ini file path", "Ini file path",
selectedItem.getValue(), null);
if (iniFileDialog.open() == InputDialog.OK) {
selectedItem.setValue(iniFileDialog.getValue());
configManager.updateIniFileInModule(moduleIndex, selectedItem
.getValue());
modulesTreeViewer.refresh();
syncSourceWithViews();
}
} else if (selectedItem.getType() == SectionElementType.TEST_CASE_FILE) {
int moduleIndex = selectedItem.getParent().getIndex();
int configFileIndex = selectedItem.getIndex();
InputDialog testCaseFileDialog = new InputDialog(modulesMainForm
.getShell(), "Change testcase file path",
"Testcase file path", selectedItem.getValue(), null);
if (testCaseFileDialog.open() == InputDialog.OK) {
selectedItem.setValue(testCaseFileDialog.getValue());
configManager.updateTestCaseFileInModule(moduleIndex,
configFileIndex, selectedItem.getValue());
modulesTreeViewer.refresh();
syncSourceWithViews();
}
}
}
/**
* Handles <code>Remove</code> button selection.
*
* Removes selected element from config and modules tree.
*/
private void onRemoveButtonSelect() {
TreeSelection selection = (TreeSelection) modulesTreeViewer
.getSelection();
ModulesTreeNode selectedItem = (ModulesTreeNode) selection
.getFirstElement();
if (selectedItem == null) {
return;
}
if (selectedItem.getType() == SectionElementType.MODULE_NAME) {
int moduleIndex = selectedItem.getIndex();
configManager.removeModule(moduleIndex);
// Fix modules indices
ModulesTreeNode parent = selectedItem.getParent();
selectedItem.dispose();
for (int i = 0; i < parent.getChildrens().size(); i++) {
int index = parent.getChildrens().get(i).getIndex();
if (index > selectedItem.getIndex()) {
parent.getChildrens().get(i).setIndex(index - 1);
}
}
modulesTreeViewer.refresh();
syncSourceWithViews();
} else if (selectedItem.getType() == SectionElementType.INI_FILE) {
int moduleIndex = selectedItem.getParent().getIndex();
configManager.removeIniFileFromModule(moduleIndex);
selectedItem.dispose();
modulesTreeViewer.refresh();
syncSourceWithViews();
} else if (selectedItem.getType() == SectionElementType.TEST_CASE_FILE) {
int moduleIndex = selectedItem.getParent().getIndex();
int configFileIndex = selectedItem.getIndex();
configManager.removeTestCaseFileFromModule(moduleIndex,
configFileIndex);
// Fix module testcase files indices
ModulesTreeNode parent = selectedItem.getParent();
selectedItem.dispose();
for (int i = 0; i < parent.getChildrens().size(); i++) {
int index = parent.getChildrens().get(i).getIndex();
if (index > selectedItem.getIndex()) {
parent.getChildrens().get(i).setIndex(index - 1);
}
}
modulesTreeViewer.refresh();
syncSourceWithViews();
}
}
/**
* Handles <code>UI testing support</code> button selection
*
* Changes value of UITestingSupport option
*/
private void onUITestingSupportButtonSelect() {
if (uiTestingSupportYesButton.getSelection()) {
configManager.setUITestingSupport(YesNo.YES);
} else if (uiTestingSupportNoButton.getSelection()) {
configManager.setUITestingSupport(YesNo.NO);
}
syncSourceWithViews();
}
/**
* Handles <code>Separate processes</code> button selection
*
* Changes value of SeparateProcesses option
*/
private void onSeparateProcessesButtonSelect() {
if (separateProcessYesButton.getSelection()) {
configManager.setSeparateProcesses(YesNo.YES);
} else if (separateProcessNoButton.getSelection()) {
configManager.setSeparateProcesses(YesNo.NO);
}
syncSourceWithViews();
}
/*
* (non-Javadoc) Method declared on ISelectionChangedListener
*/
public void selectionChanged(SelectionChangedEvent event) {
if (event.getSource() == modulesTreeViewer) {
onModulesTreeElementSelect();
}
}
/**
* Synchronizes config source with modules nad general settings pages
* controls value.
*/
private void syncSourceWithViews() {
String oldConfig = sourceEditor.getDocumentProvider().getDocument(
sourceEditor.getEditorInput()).get();
String newConfig = configManager.getConfigSource();
if (oldConfig == null) {
oldConfig = "";
}
if (newConfig == null) {
newConfig = "";
}
int diffLeftPos = 0;
int diffRightPos = 0;
for (int i = 0; (i < newConfig.length()) && (i < oldConfig.length()); i++) {
diffLeftPos = i;
if (newConfig.charAt(i) != oldConfig.charAt(i)) {
break;
}
}
String newStr = newConfig.substring(diffLeftPos, newConfig.length());
if ((oldConfig.length() != 0) && (newConfig.length() != 0)) {
for (int k = 0; (oldConfig.length() - k >= diffLeftPos)
&& (newConfig.length() - k >= diffLeftPos); k++) {
diffRightPos = k;
if (newConfig.charAt(newConfig.length() - 1 - k) != oldConfig
.charAt(oldConfig.length() - 1 - k)) {
break;
}
}
}
newStr = newStr.substring(0, newStr.length() - diffRightPos);
try {
int insPos = diffLeftPos;
int insLenght = oldConfig.length() - diffRightPos - diffLeftPos;
sourceEditor.getDocumentProvider().getDocument(
sourceEditor.getEditorInput()).replace(insPos, insLenght,
newStr);
configManager.parseConfig(sourceEditor.getDocumentProvider()
.getDocument(sourceEditor.getEditorInput()).get());
updateProblemMarkers();
} catch (BadLocationException e) {
e.printStackTrace();
}
}
}