/******************************************************************************* * Copyright (c) 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Zend Technologies *******************************************************************************/ package org.eclipse.php.internal.debug.ui.preferences; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.IPreferencesService; import org.eclipse.jface.dialogs.MessageDialogWithToggle; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.jface.preference.RadioGroupFieldEditor; import org.eclipse.php.internal.debug.core.PHPDebugPlugin; import org.eclipse.php.internal.debug.core.preferences.PHPDebugCorePreferenceNames; import org.eclipse.php.internal.debug.ui.PHPDebugUIMessages; import org.eclipse.php.internal.ui.Logger; import org.eclipse.php.internal.ui.PHPUiPlugin; import org.eclipse.php.internal.ui.preferences.AbstractPHPPreferencePageBlock; import org.eclipse.php.internal.ui.preferences.PreferenceConstants; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.osgi.service.prefs.BackingStoreException; /** * A PHP debug preferences page Workspace UI addon. This addon adds 3 check * boxes for the debug perspective, debug info and debug views. * * @author shalom */ public class WorkbenchOptionsBlock extends AbstractPHPPreferencePageBlock { private Button fOpenInBrowser; private Button fOpenDebugViews; private PreferencePage propertyPage; private RadioGroupFieldEditor fSwitchPerspField; private RadioGroupFieldEditor fAllowMultipleLnchField; public void setCompositeAddon(Composite parent) { Composite composite = addPageContents(parent); addWorkspacePreferenceSubsection(composite); } public void initializeValues(PreferencePage propertyPage) { this.propertyPage = propertyPage; IPreferencesService service = Platform.getPreferencesService(); fOpenDebugViews.setSelection( service.getBoolean(PHPDebugPlugin.ID, PHPDebugCorePreferenceNames.OPEN_DEBUG_VIEWS, true, null)); fOpenInBrowser.setSelection( service.getBoolean(PHPDebugPlugin.ID, PHPDebugCorePreferenceNames.OPEN_IN_BROWSER, true, null)); fAllowMultipleLnchField.setPreferenceStore(PHPUiPlugin.getDefault().getPreferenceStore()); fAllowMultipleLnchField.load(); fSwitchPerspField.setPreferenceStore(PHPUiPlugin.getDefault().getPreferenceStore()); fSwitchPerspField.load(); } public boolean performOK(boolean isProjectSpecific) { savePreferences(); return true; } public void performApply(boolean isProjectSpecific) { performOK(isProjectSpecific); } public boolean performCancel() { return true; } public void performDefaults() { IEclipsePreferences prefs = PHPDebugPlugin.getDefaultPreferences(); fOpenInBrowser.setSelection(prefs.getBoolean(PHPDebugCorePreferenceNames.OPEN_IN_BROWSER, true)); fOpenDebugViews.setSelection(prefs.getBoolean(PHPDebugCorePreferenceNames.OPEN_DEBUG_VIEWS, true)); fAllowMultipleLnchField.setPreferenceStore(PHPUiPlugin.getDefault().getPreferenceStore()); fAllowMultipleLnchField.loadDefault(); fSwitchPerspField.setPreferenceStore(PHPUiPlugin.getDefault().getPreferenceStore()); fSwitchPerspField.loadDefault(); } private void addWorkspacePreferenceSubsection(Composite composite) { fAllowMultipleLnchField = new RadioGroupFieldEditor(PreferenceConstants.ALLOW_MULTIPLE_LAUNCHES, PHPDebugUIMessages.PHPLaunchingPreferencePage_multipleMessage, 3, new String[][] { { PHPDebugUIMessages.PHPLaunchingPreferencePage_Always, MessageDialogWithToggle.ALWAYS }, { PHPDebugUIMessages.PHPLaunchingPreferencePage_Never, MessageDialogWithToggle.NEVER }, { PHPDebugUIMessages.PHPLaunchingPreferencePage_Prompt, MessageDialogWithToggle.PROMPT } }, composite, true); fSwitchPerspField = new RadioGroupFieldEditor(PreferenceConstants.SWITCH_BACK_TO_PHP_PERSPECTIVE, PHPDebugUIMessages.PHPLaunchingPreferencePage_switchToPHPMessage, 3, new String[][] { { PHPDebugUIMessages.PHPLaunchingPreferencePage_Always, MessageDialogWithToggle.ALWAYS }, { PHPDebugUIMessages.PHPLaunchingPreferencePage_Never, MessageDialogWithToggle.NEVER }, { PHPDebugUIMessages.PHPLaunchingPreferencePage_Prompt, MessageDialogWithToggle.PROMPT } }, composite, true); Group group = new Group(composite, SWT.NONE); group.setText(PHPDebugUIMessages.WorkbenchOptionsBlock_workbench_options); group.setLayout(new GridLayout()); group.setLayoutData(new GridData(GridData.FILL_BOTH)); fOpenInBrowser = addCheckBox(group, PHPDebugUIMessages.PhpDebugPreferencePage_11, PHPDebugCorePreferenceNames.OPEN_IN_BROWSER, 0); fOpenDebugViews = addCheckBox(group, PHPDebugUIMessages.PhpDebugPreferencePage_7, PHPDebugCorePreferenceNames.OPEN_DEBUG_VIEWS, 0); } private void savePreferences() { IEclipsePreferences prefs = PHPDebugPlugin.getInstancePreferences(); prefs.putBoolean(PHPDebugCorePreferenceNames.OPEN_IN_BROWSER, fOpenInBrowser.getSelection()); prefs.putBoolean(PHPDebugCorePreferenceNames.OPEN_DEBUG_VIEWS, fOpenDebugViews.getSelection()); try { prefs.flush(); } catch (BackingStoreException e) { Logger.logException(e); } fAllowMultipleLnchField.store(); fSwitchPerspField.store(); } }