testdev/ite/src/com.nokia.testfw.stf.configeditor/src/com/nokia/testfw/stf/configeditor/wizards/NewModuleWizardPage.java
author Johnson Ma <johnson.ma@nokia.com>
Tue, 30 Mar 2010 14:39:29 +0800
changeset 1 96906a986c3b
permissions -rw-r--r--
contribute ITE to symbian foundation

/*
* 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.wizards;

import org.eclipse.jface.dialogs.IPageChangedListener;
import org.eclipse.jface.dialogs.PageChangedEvent;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
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.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.forms.widgets.TableWrapData;
import org.eclipse.ui.forms.widgets.TableWrapLayout;

/**
 * New module wizard page
 * 
 */
public class NewModuleWizardPage extends WizardPage implements IPageChangedListener {
	private Text otherNameValue = null;
	private Button testScripterButton = null;
	//private Button testCombinerButton = null;
	private Button otherNameButton = null;

	ISelection selection = null;
	
	/**
	 * Creates wizard page
	 * @param Workbench selection
	 */
	public NewModuleWizardPage(ISelection selection) {
		super("wizardPage");
		setTitle("New module");
		setDescription("This wizard creates a new module entry in initialization file of STF.");		
		this.selection = selection;
	}

	/* (non-Javadoc)
	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
	 */
	public void createControl(Composite parent) {
		Composite mainPanel = new Composite(parent, SWT.NULL);
		TableWrapLayout mainPanelLayout = new TableWrapLayout();
		mainPanel.setLayout(mainPanelLayout);
		mainPanelLayout.numColumns = 2;

		testScripterButton = new Button(mainPanel, SWT.RADIO);
		testScripterButton.setText("TestScripter");
		testScripterButton.setSelection( true );
		TableWrapData testScripterButtonLayoutData = new TableWrapData( TableWrapData.FILL_GRAB );
		testScripterButtonLayoutData.colspan = 2;
		testScripterButton.setLayoutData( testScripterButtonLayoutData );

//		testCombinerButton = new Button(mainPanel, SWT.RADIO);
//		testCombinerButton.setText("TestCombiner");
//		TableWrapData testCombinerButtonLayoutData = new TableWrapData( TableWrapData.FILL_GRAB );
//		testCombinerButtonLayoutData.colspan = 2;
//		testCombinerButton.setLayoutData( testCombinerButtonLayoutData );
		
		otherNameButton = new Button(mainPanel, SWT.RADIO);
		otherNameButton.setText("Other:");		
					
		otherNameValue = new Text(mainPanel, SWT.BORDER | SWT.SINGLE);
		otherNameValue.setEnabled( false );
		otherNameValue.setLayoutData( new TableWrapData(TableWrapData.FILL_GRAB) );

		SelectionListener selectEventHandler = new SelectionListener() {
			public void widgetDefaultSelected(SelectionEvent e) {
				dialogChanged();
			}

			public void widgetSelected(SelectionEvent e) {
				dialogChanged();
			}};
		
		testScripterButton.addSelectionListener(selectEventHandler);
//		testCombinerButton.addSelectionListener(selectEventHandler);
		otherNameButton.addSelectionListener(selectEventHandler);
		otherNameValue.addModifyListener( new ModifyListener() {
			public void modifyText(ModifyEvent e) {
				dialogChanged();			
			}});
		
		initialize();
		dialogChanged();
		setControl(mainPanel);
		
		/** 
		 * We want to be informed about pageChanged event in order to set focus to a control from the NewTestModulePage
		 */
		WizardDialog dialog = (WizardDialog)getContainer();
		dialog.addPageChangedListener(this);
		
		PlatformUI.getWorkbench().getHelpSystem().setHelp(this.getControl(), HelpContextIDs.helpForConfigurationFileEditor);;
	}

	/**
	 * Tests if the current workbench selection is a suitable container to use.
	 */
	private void initialize() {
	}

	/**
	 * Ensures that proper module name is defined
	 */
	private void dialogChanged() {
		if ( testScripterButton.getSelection() == true ) {
			otherNameValue.setEnabled(false);
			updateStatus(null);
		} 
//		if ( testCombinerButton.getSelection() == true ) {
//			otherNameValue.setEnabled(false);
//			updateStatus(null);
//		} 
		if ( otherNameButton.getSelection() == true ) {
			otherNameValue.setEnabled(true);
			if ( otherNameValue.getText() == "" ) {
				updateStatus( "Module name must be specified." );
			} else {
				updateStatus(null);
			}
		}
		
	}

	/**
	 * Updates wizard execution status
	 * @param message
	 */
	private void updateStatus(String message) {
		setErrorMessage(message);
		setPageComplete(message == null);
	}

	/**
	 * Gets new module name
	 * @return module name
	 */
	public String getModuleName() {
		if ( testScripterButton.getSelection() == true ) {
			return "testscripter";
		} /*else if ( testCombinerButton.getSelection() == true ) {
			return "testcombiner";
		} */else if ( otherNameButton.getSelection() == true ) {
			return otherNameValue.getText();
		}
		return null;
	}

	public void pageChanged(PageChangedEvent ev) {
		if(ev.getSelectedPage() instanceof NewModuleWizardPage){
			otherNameButton.setFocus();
		}
	}
}