package org.eclipse.dltk.debug.ui.preferences; import java.util.ArrayList; import java.util.List; import org.eclipse.dltk.debug.core.DLTKDebugPluginPreferenceInitializer; import org.eclipse.dltk.debug.ui.IDLTKDebugUIPreferenceConstants; import org.eclipse.dltk.ui.preferences.IPreferenceConfigurationBlock; import org.eclipse.dltk.ui.preferences.ImprovedAbstractConfigurationBlock; import org.eclipse.dltk.ui.preferences.OverlayPreferenceStore; import org.eclipse.dltk.ui.util.SWTFactory; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Group; /** * Preference page for script detail formatters. * * <p> * Implementations that wish to expose this preference page need only include * the following snippet in their <code>plugin.xml</code>: * </p> * * <pre> * <extension point="org.eclipse.ui.preferencePages"> * <page * category="..." * class="org.eclipse.dltk.debug.ui.preferences.ScriptDetailFormattersPreferencePage:nature_id" * id="..." * name="..." /> * <extension> * </pre> * * @see DLTKDebugPluginPreferenceInitializer */ public class ScriptDetailFormattersPreferencePage extends AbstractScriptDebugPreferencePage { @Override protected IPreferenceConfigurationBlock createConfigurationBlock( OverlayPreferenceStore store) { return new ScriptDetailFormattersConfigurationBlock(store, this); } @Override protected void setDescription() { setDescription( ScriptDebugPreferencesMessages.ScriptDetailFormattersPreferencePage_description); } class ScriptDetailFormattersConfigurationBlock extends ImprovedAbstractConfigurationBlock { private Button fDetailPaneButton; private Button fInlineAllButton; private Button fInlineFormattersButton; public ScriptDetailFormattersConfigurationBlock( OverlayPreferenceStore store, PreferencePage page) { super(store, page); } @Override public Control createControl(Composite parent) { final Composite composite = SWTFactory.createComposite(parent, parent.getFont(), 2, 0, GridData.FILL_BOTH); createLabelPreferences(composite); return composite; } @Override public void performOk() { String value = IDLTKDebugUIPreferenceConstants.DETAIL_PANE; if (fInlineAllButton.getSelection()) { value = IDLTKDebugUIPreferenceConstants.INLINE_ALL; } // TODO: uncomment when inline formatter support added // else if (fInlineFormattersButton.getSelection()) { // value = IDLTKDebugUIPreferenceConstants.INLINE_FORMATTERS; // } getPreferenceStore().setValue( IDLTKDebugUIPreferenceConstants.PREF_SHOW_DETAILS, value); } @Override protected List createOverlayKeys() { ArrayList keys = new ArrayList(1); keys.add(new OverlayPreferenceStore.OverlayKey( OverlayPreferenceStore.STRING, IDLTKDebugUIPreferenceConstants.PREF_SHOW_DETAILS)); return keys; } @Override protected void initializeFields() { super.initializeFields(); initializeLabels(); } private void createLabelPreferences(Composite parent) { Group group = SWTFactory.createGroup(parent, ScriptDebugPreferencesMessages.ScriptDetailFormattersPreferencePage_1, 1, 2, GridData.FILL_HORIZONTAL); // Create the 3 detail option radio buttons // TODO: uncomment when inline formatter support added // fInlineFormattersButton = SWTFactory // .createRadioButton( // group, // ScriptDebugPreferencesMessages. // ScriptDetailFormattersPreferencePage_2); fInlineAllButton = SWTFactory.createRadioButton(group, ScriptDebugPreferencesMessages.ScriptDetailFormattersPreferencePage_3); fDetailPaneButton = SWTFactory.createRadioButton(group, ScriptDebugPreferencesMessages.ScriptDetailFormattersPreferencePage_4); } private void initializeLabels() { IPreferenceStore store = getPreferenceStore(); String preference = store.getString( IDLTKDebugUIPreferenceConstants.PREF_SHOW_DETAILS); // TODO: uncomment when inline formatter support added // fInlineFormattersButton // .setSelection(IDLTKDebugUIPreferenceConstants.INLINE_FORMATTERS // .equals(preference)); fInlineAllButton .setSelection(IDLTKDebugUIPreferenceConstants.INLINE_ALL .equals(preference)); fDetailPaneButton .setSelection(IDLTKDebugUIPreferenceConstants.DETAIL_PANE .equals(preference)); } } }