diff -r f1112f777ce9 -r 96906a986c3b 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(); + } + } +}