testdev/ite/src/com.nokia.testfw.codegen.ui/src/com/nokia/testfw/codegen/ui/preferences/TESTFWPropertiesPreferencePage.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testdev/ite/src/com.nokia.testfw.codegen.ui/src/com/nokia/testfw/codegen/ui/preferences/TESTFWPropertiesPreferencePage.java Tue Mar 30 14:39:29 2010 +0800
@@ -0,0 +1,238 @@
+/*
+* 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.preferences;
+
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.StringFieldEditor;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import com.nokia.testfw.codegen.ui.CodegenUIPlugin;
+import com.nokia.testfw.codegen.ui.preferences.PreferenceConstants;
+import com.nokia.testfw.codegen.ui.preferences.PreferenceUtil;
+import com.nokia.testfw.codegen.ui.Messages;
+
+public class TESTFWPropertiesPreferencePage extends FieldEditorPreferencePage
+ implements IWorkbenchPreferencePage {
+
+ public StringFieldEditor iTestFolderName;
+ public HexFieldEditor iUID3MaxValue;
+ public HexFieldEditor iUID3MinValue;
+ public StringFieldEditor iAutherName;
+
+ public TESTFWPropertiesPreferencePage() {
+ super(GRID);
+ setPreferenceStore(CodegenUIPlugin.getDefault().getPreferenceStore());
+ setDescription(Messages
+ .getString("TESTFWPropertiesPreferencePage.Description"));
+ }
+
+ public void init(IWorkbench workbench) {
+ }
+
+ @Override
+ protected void createFieldEditors() {
+
+ iTestFolderName = new StringFieldEditor(
+ PreferenceConstants.TEST_FOLDER_NAME,
+ Messages
+ .getString("TESTFWPropertiesPreferencePage.TestFolder.Name"),
+ getFieldEditorParent()) {
+ protected boolean doCheckState() {
+ String testFolderName = getTextControl().getText();
+ if (!testFolderName.matches("[\\w]*")) {
+ setErrorMessage(Messages
+ .getString("TESTFWPropertiesPreferencePage.TestFolder.Error"));
+ return false;
+ }
+ return true;
+ }
+ };
+
+ iUID3MaxValue = new HexFieldEditor(
+ PreferenceConstants.UID3_MAX_VALUE,
+ Messages
+ .getString("TESTFWPropertiesPreferencePage.UID3.MaxValue"),
+ getFieldEditorParent()) {
+ protected boolean doCheckState() {
+ if (super.doCheckState()) {
+ if (iUID3MaxValue.getIntValue() < iUID3MinValue
+ .getIntValue()) {
+ setErrorMessage(Messages
+ .getString("TESTFWPropertiesPreferencePage.UID3.Error1"));
+ return false;
+ } else {
+ return true;
+ }
+ } else {
+ Messages.getString(
+ "TESTFWPropertiesPreferencePage.UIDHexError",
+ iUID3MaxValue.getStringValue());
+ return false;
+ }
+ }
+ };
+
+ iUID3MinValue = new HexFieldEditor(
+ PreferenceConstants.UID3_MIN_VALUE,
+ Messages
+ .getString("TESTFWPropertiesPreferencePage.UID3.MinValue"),
+ getFieldEditorParent()) {
+ protected boolean doCheckState() {
+ if (super.doCheckState()) {
+ if (iUID3MinValue.getIntValue() > iUID3MaxValue
+ .getIntValue()) {
+ setErrorMessage(Messages
+ .getString("TESTFWPropertiesPreferencePage.UID3.Error2"));
+ return false;
+ } else {
+ return true;
+ }
+ } else {
+ Messages.getString(
+ "TESTFWPropertiesPreferencePage.UIDHexError",
+ iUID3MinValue.getStringValue());
+ return false;
+ }
+ }
+ };
+
+ iAutherName = new StringFieldEditor(PreferenceConstants.AUTHER,
+ Messages.getString("TESTFWPropertiesPreferencePage.Author"),
+ getFieldEditorParent());
+
+ iTestFolderName.setEmptyStringAllowed(false);
+ iUID3MaxValue.setEmptyStringAllowed(false);
+ iUID3MinValue.setEmptyStringAllowed(false);
+ iAutherName.setEmptyStringAllowed(true);
+
+ addField(iTestFolderName);
+ addField(iUID3MaxValue);
+ addField(iUID3MinValue);
+ addField(iAutherName);
+ }
+
+ public boolean performOk() {
+ //CodegenUIPlugin.getDefault().savePluginPreferences();
+ return super.performOk();
+ }
+
+ public class HexFieldEditor extends StringFieldEditor {
+
+ private int minValidValue = 0;
+ private int maxValidValue = Integer.MAX_VALUE;
+ private static final int DEFAULT_TEXT_LIMIT = 10;
+
+ protected HexFieldEditor() {
+ }
+
+ public HexFieldEditor(String name, String labelText, Composite parent) {
+ this(name, labelText, parent, DEFAULT_TEXT_LIMIT);
+ }
+
+ public HexFieldEditor(String name, String labelText, Composite parent,
+ int textLimit) {
+ init(name, labelText);
+ setTextLimit(textLimit);
+ setEmptyStringAllowed(false);
+ setErrorMessage(Messages
+ .getString("TESTFWPropertiesPreferencePage.UIDHexError3"));
+ createControl(parent);
+ final Text text = getTextControl();
+ text.addFocusListener(new FocusAdapter() {
+ public void focusLost(FocusEvent event) {
+ String hexString = text.getText();
+ int number = -1;
+ try {
+ number = Integer.decode(hexString).intValue();
+ hexString = PreferenceUtil
+ .createCanonicalHexString(number);
+ text.setText(hexString);
+ } catch (NumberFormatException _ex) {
+ }
+ }
+ });
+ }
+
+ public void setValidRange(int min, int max) {
+ minValidValue = min;
+ maxValidValue = max;
+ setErrorMessage(Messages.getString(
+ "TESTFWPropertiesPreferencePage.UIDHexError2",
+ new Object[] { Integer.toHexString(min),
+ Integer.toHexString(max) }));
+ }
+
+ protected boolean checkState() {
+ String hexString;
+ Text text = getTextControl();
+ if (text == null)
+ return false;
+ hexString = text.getText();
+ int number = -1;
+ try {
+ number = Integer.decode(hexString).intValue();
+ } catch (NumberFormatException _ex) {
+ showErrorMessage();
+ return false;
+ }
+ if (number < minValidValue || number > maxValidValue) {
+ showErrorMessage();
+ return false;
+ }
+ clearErrorMessage();
+ return true;
+ }
+
+ protected void doLoad() {
+ Text text = getTextControl();
+ if (text != null) {
+ String strHex = getPreferenceStore().getString(
+ getPreferenceName());
+ text.setText(strHex);
+ oldValue = strHex;
+ }
+ }
+
+ protected void doLoadDefault() {
+ Text text = getTextControl();
+ if (text != null) {
+ String strHex = getPreferenceStore().getString(
+ getPreferenceName());
+ text.setText(strHex);
+ }
+ valueChanged();
+ }
+
+ protected void doStore() {
+ Text text = getTextControl();
+ if (text != null) {
+ getPreferenceStore().setValue(getPreferenceName(),
+ text.getText());
+ }
+ }
+
+ public int getIntValue() throws NumberFormatException {
+ return Integer.decode(getStringValue()).intValue();
+ }
+ }
+}