| /******************************************************************************* |
| * Copyright (c) 2006, 2016 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 |
| *******************************************************************************/ |
| package org.eclipse.help.ui.internal.preferences; |
| |
| import java.util.List; |
| |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.core.runtime.preferences.IEclipsePreferences; |
| import org.eclipse.core.runtime.preferences.InstanceScope; |
| import org.eclipse.help.internal.base.HelpBasePlugin; |
| import org.eclipse.help.internal.base.IHelpBaseConstants; |
| import org.eclipse.help.internal.base.remote.DefaultPreferenceFileHandler; |
| import org.eclipse.help.internal.base.remote.RemoteHelp; |
| import org.eclipse.help.ui.internal.IHelpUIConstants; |
| import org.eclipse.help.ui.internal.Messages; |
| 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.swt.widgets.Listener; |
| import org.eclipse.ui.IWorkbench; |
| import org.eclipse.ui.IWorkbenchPreferencePage; |
| import org.eclipse.ui.PlatformUI; |
| |
| /** |
| * Preference page to set remote infocenters |
| */ |
| public class HelpContentPreferencePage extends PreferencePage implements |
| IWorkbenchPreferencePage { |
| |
| private ICTable table; |
| private ICButtons buttons; |
| |
| private Button searchLocalHelpOnly; |
| private Button searchLocalHelpFirst; |
| private Button searchLocalHelpLast; |
| private Label descLabel; |
| |
| /** |
| * Creates the preference page |
| */ |
| public HelpContentPreferencePage() { |
| } |
| |
| @Override |
| public void init(IWorkbench workbench) { |
| } |
| |
| public ICTable getTable() |
| { |
| return table; |
| } |
| |
| @Override |
| protected Control createContents(Composite parent) { |
| PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, |
| IHelpUIConstants.PREF_PAGE_HELP_CONTENT); |
| |
| initializeDialogUnits(parent); |
| |
| descLabel = new Label(parent, SWT.NONE); |
| descLabel.setText(Messages.HelpContentPage_title); |
| Dialog.applyDialogFont(descLabel); |
| |
| createSearchLocalHelpOnly(parent); |
| createSearchLocalHelpFirst(parent); |
| createSearchLocalHelpLast(parent); |
| |
| /* remoteICPage = new InfocenterDisplay(this); |
| remoteICPage.createContents(parent); |
| */ |
| initializeTableEnablement(parent,searchLocalHelpOnly.getSelection()); |
| |
| return parent; |
| } |
| |
| @Override |
| protected void performDefaults() { |
| super.performDefaults(); |
| |
| List<IC> ics = ICPreferences.getDefaultICs(); |
| table.setICs(ics); |
| |
| // Restore Defaults functionality here |
| /* HelpContentBlock currentBlock=remoteICPage.getHelpContentBlock(); |
| currentBlock.getRemoteICviewer().getRemoteICList().removeAllRemoteICs(currentBlock.getRemoteICList()); |
| currentBlock.getRemoteICviewer().getRemoteICList().loadDefaultPreferences(); |
| currentBlock.restoreDefaultButtons(); |
| */ |
| boolean remoteHelpOn = new DefaultPreferenceFileHandler().isRemoteHelpOn(); |
| boolean remoteHelpPreferred = new DefaultPreferenceFileHandler().isRemoteHelpPreferred(); |
| searchLocalHelpOnly.setSelection(!remoteHelpOn); |
| searchLocalHelpFirst.setSelection(remoteHelpOn && !remoteHelpPreferred); |
| searchLocalHelpLast.setSelection(remoteHelpOn && remoteHelpPreferred); |
| changeListener.handleEvent(null); |
| } |
| |
| @Override |
| public boolean performOk() { |
| |
| IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(HelpBasePlugin.PLUGIN_ID); |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.jface.preference.PreferencePage#performOk() |
| */ |
| prefs.putBoolean(IHelpBaseConstants.P_KEY_REMOTE_HELP_ON, !(searchLocalHelpOnly.getSelection())); |
| prefs.putBoolean(IHelpBaseConstants.P_KEY_REMOTE_HELP_PREFERRED, searchLocalHelpLast.getSelection()); |
| |
| |
| List<IC> ics = table.getICs(); |
| ICPreferences.setICs(ics); |
| |
| RemoteHelp.notifyPreferenceChange(); |
| return super.performOk(); |
| } |
| |
| @Override |
| protected GridData setButtonLayoutData(Button button) { |
| return super.setButtonLayoutData(button); |
| } |
| |
| private void createSearchLocalHelpOnly(Composite parent) { |
| searchLocalHelpOnly = new Button(parent, SWT.RADIO); |
| searchLocalHelpOnly.setText(Messages.SearchEmbeddedHelpOnly); |
| searchLocalHelpOnly.addListener(SWT.Selection, changeListener); |
| |
| boolean isRemoteOn = Platform.getPreferencesService().getBoolean |
| (HelpBasePlugin.PLUGIN_ID, IHelpBaseConstants.P_KEY_REMOTE_HELP_ON, false, null); |
| |
| searchLocalHelpOnly.setSelection(!isRemoteOn); |
| Dialog.applyDialogFont(searchLocalHelpOnly); |
| } |
| |
| private void createSearchLocalHelpFirst(Composite parent) { |
| searchLocalHelpFirst = new Button(parent, SWT.RADIO); |
| searchLocalHelpFirst.setText(Messages.SearchEmbeddedHelpFirst); |
| searchLocalHelpFirst.addListener(SWT.Selection, changeListener); |
| |
| boolean isRemoteOn = Platform.getPreferencesService().getBoolean |
| (HelpBasePlugin.PLUGIN_ID, IHelpBaseConstants.P_KEY_REMOTE_HELP_ON, false, null); |
| boolean isRemotePreferred = Platform.getPreferencesService().getBoolean |
| (HelpBasePlugin.PLUGIN_ID, IHelpBaseConstants.P_KEY_REMOTE_HELP_PREFERRED, false, null); |
| |
| searchLocalHelpFirst.setSelection(isRemoteOn && !isRemotePreferred); |
| Dialog.applyDialogFont(searchLocalHelpFirst); |
| } |
| |
| private void createSearchLocalHelpLast(Composite parent) { |
| searchLocalHelpLast = new Button(parent, SWT.RADIO); |
| searchLocalHelpLast.setText(Messages.SearchEmbeddedHelpLast); |
| searchLocalHelpLast.addListener(SWT.Selection, changeListener); |
| |
| boolean isRemoteOn = Platform.getPreferencesService().getBoolean |
| (HelpBasePlugin.PLUGIN_ID, IHelpBaseConstants.P_KEY_REMOTE_HELP_ON, false, null); |
| boolean isRemotePreferred = Platform.getPreferencesService().getBoolean |
| (HelpBasePlugin.PLUGIN_ID, IHelpBaseConstants.P_KEY_REMOTE_HELP_PREFERRED, false, null); |
| |
| searchLocalHelpLast.setSelection(isRemoteOn && isRemotePreferred); |
| Dialog.applyDialogFont(searchLocalHelpLast); |
| } |
| |
| /* |
| * Initialize the table enablement with the current checkbox selection |
| */ |
| |
| private void initializeTableEnablement(Composite parent, boolean isRemoteHelpDisabled) |
| { |
| Composite top = new Composite(parent, SWT.NONE); |
| |
| GridLayout layout = new GridLayout(); |
| layout.numColumns = 2; |
| layout.marginHeight = 2; |
| layout.marginWidth = 2; |
| top.setLayout(layout); |
| |
| top.setLayoutData(new GridData(GridData.FILL_BOTH)); |
| |
| table = new ICTable(top); |
| buttons = new ICButtons(top,this); |
| |
| changeListener.handleEvent(null); |
| } |
| |
| /* |
| * Listens for any change in the UI and checks for valid input and correct |
| * enablement. |
| */ |
| private Listener changeListener = event -> { |
| |
| boolean isRemoteHelpEnabled = !(searchLocalHelpOnly.getSelection()); |
| |
| // Disable/Enable table |
| table.getTable().setEnabled(isRemoteHelpEnabled); |
| buttons.setEnabled(isRemoteHelpEnabled); |
| }; |
| |
| } |