testdev/ite/src/com.nokia.testfw.codegen.ui/src/com/nokia/testfw/codegen/ui/wizard/PropertyPage.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.codegen.ui.wizard;

import java.util.Map;

import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

import com.nokia.testfw.codegen.ui.preferences.PreferenceConstants;
import com.nokia.testfw.codegen.ui.preferences.PreferenceUtil;
import com.nokia.testfw.codegen.ui.CodegenUIPlugin;
import com.nokia.testfw.codegen.ui.Messages;

public class PropertyPage extends AbstractTemplateWizardPage {

	private Text iUID3Edit;
	private Button iUID3Button;
	private Text iAutherNameEdit;
	private String iUID3;
	private String iAutherName;
	protected Button iPreviewButton;
	protected boolean isShowPreview = true;
	protected Map<String, Object> iDataMap;

	public PropertyPage() {
		super(Messages.getString("PropertyPage.Title"));
		setTitle(Messages.getString("PropertyPage.Title"));
		setDescription(Messages.getString("PropertyPage.Description"));
	}

	protected PropertyPage(String pageName) {
		super(pageName);
	}

	public void createControl(Composite parent) {
		Composite container = new Composite(parent, SWT.NONE);
		GridLayout gridLayout = new GridLayout();
		gridLayout.marginTop = 10;
		gridLayout.marginRight = 10;
		gridLayout.marginLeft = 10;
		gridLayout.marginBottom = 10;
		gridLayout.horizontalSpacing = 10;
		gridLayout.numColumns = 3;
		container.setLayout(gridLayout);

		// Custom extention
		customExtention(container);

		// UID3
		Label lUID3Label = new Label(container, SWT.NONE);
		GridData gd_UID3Label = new GridData();
		lUID3Label.setLayoutData(gd_UID3Label);
		lUID3Label.setText("UID3:");

		iUID3Edit = new Text(container, 2048);
		GridData gd_UID3Edit = new GridData(GridData.FILL_HORIZONTAL);
		gd_UID3Edit.horizontalSpan = 1;
		iUID3Edit.setLayoutData(gd_UID3Edit);
		iUID3Edit.addModifyListener(new ModifyListener() {

			public void modifyText(ModifyEvent arg0) {
				setPageComplete(validatePage());
			}
		});

		iUID3Button = new Button(container, SWT.NONE);
		iUID3Button.setText("Random");
		iUID3Button.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent selectionevent) {
				setUID3Random();
			}
		});

		// AutherName
		Label lAutherNameLabel = new Label(container, SWT.NONE);
		GridData gd_AutherNameLabel = new GridData();
		lAutherNameLabel.setLayoutData(gd_AutherNameLabel);
		lAutherNameLabel.setText("Author:");

		iAutherNameEdit = new Text(container, 2048);
		GridData gd_AutherNameEdit = new GridData(GridData.FILL_HORIZONTAL);
		gd_AutherNameEdit.horizontalSpan = 2;
		iAutherNameEdit.setLayoutData(gd_AutherNameEdit);

		// Seperator
		Label lSeperator = new Label(container, SWT.SEPARATOR | SWT.HORIZONTAL);
		GridData gd_Seperator = new GridData(GridData.FILL_HORIZONTAL);
		gd_Seperator.horizontalSpan = 3;
		lSeperator.setLayoutData(gd_Seperator);

		// PreviewButton
		iPreviewButton = new Button(container, SWT.CHECK);
		iPreviewButton.setLayoutData(new GridData());
		iPreviewButton.setText("Preview changes");
		iPreviewButton.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent selectionevent) {
				getContainer().updateButtons();
			}
		});
		iPreviewButton.setVisible(isShowPreview);

		setControl(container);
		initDefaults();
	}

	protected void customExtention(Composite parent) {
	}

	protected void initDefaults() {
		IPreferenceStore preferenceStore = CodegenUIPlugin.getDefault()
				.getPreferenceStore();
		setUID3Random();
		iAutherNameEdit.setText(iAutherName = preferenceStore
				.getString(PreferenceConstants.AUTHER));
	}

	private void setUID3Random() {
		iUID3Edit.setText(iUID3 = PreferenceUtil.getRandomAppUID());
		Event event = new Event();
		event.item = iUID3Edit;
		iUID3Edit.notifyListeners(24, event);
	}

	protected boolean validatePage() {
		boolean isValid = true;
		setMessage(null);

		if (!PreferenceUtil.validateAppUIDText(iUID3Edit.getText())) {
			isValid = false;
			setErrorMessage(Messages.getString(
					"LocationAndPropertyPage.UIDHexError", iUID3Edit.getText()));
		}

		if (isValid) {
			iUID3 = iUID3Edit.getText();
			iAutherName = iAutherNameEdit.getText();
			setErrorMessage(null);
		}
		return isValid;
	}

	public boolean isShowPreviewChanges() {
		return iPreviewButton.getSelection();
	}

	public void setShowPreviewChanges(boolean show) {
		iPreviewButton.setSelection(show);
	}

	public boolean isShowPreviewButton() {
		return isShowPreview;
	}

	public void setShowPreviewButton(boolean isShowPreviewButton) {
		this.isShowPreview = isShowPreviewButton;
	}

	public void collectData() {
		iDataMap.put("UID3", iUID3);
		iDataMap.put("auther_name", iAutherName);
	}

	public String getiUID3() {
		return iUID3;
	}

	public String getiAutherName() {
		return iAutherName;
	}

	public void initPage(Map<String, Object> dataMap) {
		iDataMap = dataMap;
		setPageComplete(validatePage());
	}
}