/* ****************************************************************************** * Copyright (c) 2006-2012 XMind Ltd. and others. * * This file is a part of XMind 3. XMind releases 3 and * above are dual-licensed under the Eclipse Public License (EPL), * which is available at http://www.eclipse.org/legal/epl-v10.html * and the GNU Lesser General Public License (LGPL), * which is available at http://www.gnu.org/licenses/lgpl.html * See http://www.xmind.net/license.html for details. * * Contributors: * XMind Ltd. - initial API and implementation *******************************************************************************/ package org.xmind.ui.internal.browser; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.preference.PreferencePage; 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.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; public class BrowserPrefPage extends PreferencePage implements IWorkbenchPreferencePage { private Button internal; private Button external; public BrowserPrefPage() { super(); } /* * (non-Javadoc) * * @see * org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse * .swt.widgets.Composite) */ protected Control createContents(Composite parent) { initializeDialogUnits(parent); Composite composite = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); layout.numColumns = 2; layout.horizontalSpacing = convertHorizontalDLUsToPixels(4); layout.verticalSpacing = convertVerticalDLUsToPixels(3); layout.marginWidth = 0; layout.marginHeight = 0; composite.setLayout(layout); GridData data = new GridData(SWT.FILL, SWT.FILL, true, false); composite.setLayoutData(data); Label label = new Label(composite, SWT.WRAP); label.setText(BrowserMessages.BrowserPrefPage_description); data = new GridData(SWT.FILL, SWT.NONE, false, false); data.horizontalSpan = 2; data.widthHint = 275; label.setLayoutData(data); internal = new Button(composite, SWT.RADIO); internal.setText(BrowserMessages.BrowserPrefPage_InternalBrowser_text); data = new GridData(SWT.FILL, SWT.NONE, true, false); data.horizontalSpan = 2; internal.setLayoutData(data); if (!BrowserUtil.canUseInternalWebBrowser()) internal.setEnabled(false); external = new Button(composite, SWT.RADIO); external.setText(BrowserMessages.BrowserPrefPage_ExternalBrowser_text); data = new GridData(SWT.FILL, SWT.NONE, true, false); data.horizontalSpan = 2; external.setLayoutData(data); internal.setSelection(BrowserPref.getBrowserChoice() == BrowserPref.INTERNAL); external.setSelection(BrowserPref.getBrowserChoice() == BrowserPref.EXTERNAL); Dialog.applyDialogFont(composite); return composite; } public void init(IWorkbench workbench) { // do nothing } /** * */ public void setVisible(boolean visible) { super.setVisible(visible); if (visible) setTitle(BrowserMessages.BrowserPrefPage_title); } /** * Performs special processing when this page's Defaults button has been * pressed. */ protected void performDefaults() { internal.setSelection(!BrowserPref.isDefaultUseSystemBrowser()); external.setSelection(BrowserPref.isDefaultUseSystemBrowser()); super.performDefaults(); } /** * Method declared on IPreferencePage. Subclasses should override */ public boolean performOk() { int choice; if (internal.getSelection()) choice = BrowserPref.INTERNAL; else choice = BrowserPref.EXTERNAL; BrowserPref.setBrowserChoice(choice); return true; } }