La implementación de una página de preferencias es, principalmente, código de SWT. El código de SWT se utiliza para crear los controles de las páginas de preferencias, establecer los valores de los controles y recuperarlos. El paquete org.eclipse.jface.preference proporciona clases ayudantes, llamadas editores de campos, que crean los widgets e implementan los valores y el código de recuperación para los tipos de preferencias más comunes.La plataforma proporciona editores de campos para visualizar y actualizar muchos tipos de valores como, por ejemplo, booleanos, colores, series, enteros, fonts y nombres de archivo.
La clase FieldEditorPreferencePage implementa una página que utiliza estos editores de campos para visualizar y almacenar los valores de preferencias en la página. En lugar de crear controles de SWT para llenar el contenido de la página, una subclase de FieldEditorPreferencePage crea editores de campos para visualiza el contenido. Todos los campos de la página deben implementarse como editores de campos. A continuación figura un fragmento de código procedente de la página de preferencias de la UI de depuración:
protected void createFieldEditors() { addField(new BooleanFieldEditor(IDebugUIConstants.PREF_BUILD_BEFORE_LAUNCH, DebugPreferencesMessages.getString("DebugPreferencePage.auto_build_before_launch"), SWT.NONE, getFieldEditorParent())); ... String[][] perspectiveNamesAndIds = getPerspectiveNamesAndIds(); addField(new ComboFieldEditor(IDebugUIConstants.PREF_SHOW_DEBUG_PERSPECTIVE_DEFAULT, DebugPreferencesMessages.getString("DebugPreferencePage.Default_perspective_for_Debug_2"), //$NON-NLS-1$ perspectiveNamesAndIds, getFieldEditorParent())); ... }
A cada editor de campos se le asigna el nombre de su correspondiente clave de preferencia y la etiqueta de texto para el control de SWT que creará. El tipo de control que se crea depende del tipo de editor de campos. Por ejemplo, un editor de campos booleano crea un recuadro de selección.
Puesto que la página de preferencias está asociada a un almacén de preferencias (especificado en el método doGetPreferenceStore), el código que permite almacenar los valores actuales, para inicializar los valores de control a partir del almacén de preferencias y para restaurar los controles en sus valores por omisión, se puede implementar en FieldEditorPreferencePage.
FieldEditorPreferencePage utilizará un diseño de cuadrícula con una columna como diseño por omisión para los widgets de editores de campos. Para requisitos especiales de diseño, puede alterar temporalmente el método createContents.