public TraditionalRenderingPreferencePage() {
   super(GRID);
   setPreferenceStore(TraditionalRenderingPlugin.getDefault().getPreferenceStore());
   setDescription(
       TraditionalRenderingMessages.getString(
           "TraditionalRenderingPreferencePage_description")); //$NON-NLS-1$
 }
  /**
   * Creates the field editors. Field editors are abstractions of the common GUI blocks needed to
   * manipulate various types of preferences. Each field editor knows how to save and restore
   * itself.
   */
  @Override
  public void createFieldEditors() {
    addField(
        new BooleanFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_USE_GLOBAL_TEXT,
            TraditionalRenderingMessages.getString(
                "TraditionalRenderingPreferencePage_UseGlobalTextColor"),
            getFieldEditorParent())); //$NON-NLS-1$

    addField(
        new ColorFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_COLOR_TEXT,
            TraditionalRenderingMessages.getString("TraditionalRenderingPreferencePage_TextColor"),
            getFieldEditorParent())); //$NON-NLS-1$

    addField(
        new ScaleFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_LIGHTEN_DARKEN_ALTERNATE_CELLS,
            TraditionalRenderingMessages.getString(
                "TraditionalRenderingPreferencePage_BrightenAlternateCells"),
            getFieldEditorParent(),
            0,
            8,
            1,
            1)); //$NON-NLS-1$

    addField(
        new BooleanFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_USE_GLOBAL_BACKGROUND,
            TraditionalRenderingMessages.getString(
                "TraditionalRenderingPreferencePage_UseGlobalBackgroundColor"),
            getFieldEditorParent())); //$NON-NLS-1$

    addField(
        new ColorFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_COLOR_BACKGROUND,
            TraditionalRenderingMessages.getString(
                "TraditionalRenderingPreferencePage_BackgroundColor"),
            getFieldEditorParent())); //$NON-NLS-1$

    // are there known memory spaces? If so make their background color configurable
    IMemorySpacePreferencesHelper util =
        TraditionalMemoryRenderingFactory.getMemorySpacesPreferencesHelper();

    Map<String, String> memSpacesLabels = util.getMemorySpaceLabels();
    for (String key : memSpacesLabels.keySet()) {
      addField(new ColorFieldEditor(key, memSpacesLabels.get(key), getFieldEditorParent()));
    }

    addField(
        new ColorAndEffectFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_COLOR_CHANGED,
            TraditionalRenderingPreferenceConstants.MEM_COLOR_CHANGED_BOLD,
            TraditionalRenderingPreferenceConstants.MEM_COLOR_CHANGED_ITALIC,
            TraditionalRenderingPreferenceConstants.MEM_COLOR_CHANGED_BOX,
            TraditionalRenderingMessages.getString(
                "TraditionalRenderingPreferencePage_ChangedColor"), //$NON-NLS-1$
            getFieldEditorParent()));

    addField(
        new ColorAndEffectFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_COLOR_EDIT,
            TraditionalRenderingPreferenceConstants.MEM_COLOR_EDIT_BOLD,
            TraditionalRenderingPreferenceConstants.MEM_COLOR_EDIT_ITALIC,
            TraditionalRenderingPreferenceConstants.MEM_COLOR_EDIT_BOX,
            TraditionalRenderingMessages.getString(
                "TraditionalRenderingPreferencePage_EditColor"), //$NON-NLS-1$
            getFieldEditorParent()));

    addField(
        new BooleanFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_USE_GLOBAL_SELECTION,
            TraditionalRenderingMessages.getString(
                "TraditionalRenderingPreferencePage_UseGlobalSelectionColor"),
            getFieldEditorParent())); //$NON-NLS-1$

    addField(
        new ColorFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_COLOR_SELECTION,
            TraditionalRenderingMessages.getString(
                "TraditionalRenderingPreferencePage_SelectionColor"),
            getFieldEditorParent())); //$NON-NLS-1$

    addField(
        new RadioGroupFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_EDIT_BUFFER_SAVE,
            TraditionalRenderingMessages.getString("TraditionalRenderingPreferencePage_EditBuffer"),
            1,
            new String[][] {
              {
                TraditionalRenderingMessages.getString(
                    "TraditionalRenderingPreferencePage_SaveOnEnterCancelOnFocusLost"),
                "saveOnEnterCancelOnFocusLost"
              }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
              {
                TraditionalRenderingMessages.getString(
                    "TraditionalRenderingPreferencePage_SaveOnEnterOrFocusLost"),
                "saveOnEnterOrFocusLost"
              }
            },
            getFieldEditorParent())); //$NON-NLS-1$ //$NON-NLS-2$

    addField(
        new ScaleFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_HISTORY_TRAILS_COUNT,
            TraditionalRenderingMessages.getString(
                "TraditionalRenderingPreferencePage_HistoryTrailLevels"),
            getFieldEditorParent(),
            1,
            10,
            1,
            1)); //$NON-NLS-1$

    addField(
        new BooleanFieldEditor(
            TraditionalRenderingPreferenceConstants.MEM_CROSS_REFERENCE_INFO,
            TraditionalRenderingMessages.getString(
                "TraditionalRenderingPreferencePage_ShowCrossRefInfo"), //$NON-NLS-1$
            getFieldEditorParent()));
  }