1 11 package org.eclipse.help.ui.internal.preferences; 12 13 import java.util.Iterator ; 14 15 import org.eclipse.core.runtime.Preferences; 16 import org.eclipse.help.internal.base.HelpBasePlugin; 17 import org.eclipse.help.internal.base.IHelpBaseConstants; 18 import org.eclipse.help.internal.browser.BrowserManager; 19 import org.eclipse.help.ui.internal.IHelpUIConstants; 20 import org.eclipse.help.ui.internal.Messages; 21 import org.eclipse.jface.dialogs.Dialog; 22 import org.eclipse.jface.preference.IPreferenceNode; 23 import org.eclipse.jface.preference.IPreferencePage; 24 import org.eclipse.jface.preference.PreferenceManager; 25 import org.eclipse.jface.preference.PreferencePage; 26 import org.eclipse.swt.SWT; 27 import org.eclipse.swt.layout.GridData; 28 import org.eclipse.swt.layout.GridLayout; 29 import org.eclipse.swt.widgets.Button; 30 import org.eclipse.swt.widgets.Composite; 31 import org.eclipse.swt.widgets.Control; 32 import org.eclipse.swt.widgets.Group; 33 import org.eclipse.swt.widgets.Label; 34 import org.eclipse.ui.IWorkbench; 35 import org.eclipse.ui.IWorkbenchPreferencePage; 36 import org.eclipse.ui.PlatformUI; 37 import org.eclipse.ui.dialogs.PreferenceLinkArea; 38 import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer; 39 40 43 public class HelpPreferencePage extends PreferencePage implements 44 IWorkbenchPreferencePage { 45 private Button alwaysExternal; 46 47 private static final String WBROWSER_PAGE_ID = "org.eclipse.ui.browser.preferencePage"; 49 private Button whelpAsViewButton; 50 51 private Button whelpAsInfopopButton; 52 53 private Button dhelpAsTrayButton; 54 55 private Button dhelpAsInfopopButton; 56 57 private Button openInPlaceButton; 58 59 private Button openInEditorButton; 60 61 67 protected Control createContents(Composite parent) { 68 PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, 69 IHelpUIConstants.PREF_PAGE_HELP); 70 Composite mainComposite = new Composite(parent, SWT.NONE); 71 GridData data = new GridData(); 72 data.verticalAlignment = GridData.FILL; 73 data.horizontalAlignment = GridData.FILL; 74 mainComposite.setLayoutData(data); 75 GridLayout layout = new GridLayout(); 76 layout.marginHeight = 0; 77 layout.marginWidth = 0; 78 mainComposite.setLayout(layout); 79 Label description = new Label(mainComposite, SWT.NONE); 80 description.setText(Messages.select_browser); 81 if (BrowserManager.getInstance().isEmbeddedBrowserPresent()) { 82 alwaysExternal = new Button(mainComposite, SWT.CHECK); 83 alwaysExternal 84 .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL)); 85 alwaysExternal.setText(Messages.use_only_external_browser); 86 alwaysExternal.setSelection(HelpBasePlugin.getDefault() 87 .getPluginPreferences().getBoolean( 88 IHelpBaseConstants.P_KEY_ALWAYS_EXTERNAL_BROWSER)); 89 } 90 createLinkArea(mainComposite); 91 createSpacer(mainComposite); 92 createDynamicHelpArea(mainComposite); 93 createSpacer(mainComposite); 94 Dialog.applyDialogFont(mainComposite); 95 return mainComposite; 96 } 97 98 private void createLinkArea(Composite parent) { 99 IPreferenceNode node = getPreferenceNode(WBROWSER_PAGE_ID); 100 if (node != null) { 101 PreferenceLinkArea linkArea = new PreferenceLinkArea(parent, 102 SWT.WRAP, WBROWSER_PAGE_ID, 103 Messages.HelpPreferencePage_message, 104 (IWorkbenchPreferenceContainer) getContainer(), null); 105 GridData data = new GridData(GridData.FILL_HORIZONTAL 106 | GridData.GRAB_HORIZONTAL); 107 linkArea.getControl().setLayoutData(data); 108 } 109 } 110 111 private void createDynamicHelpArea(Composite parent) { 112 Group group = new Group(parent, SWT.NONE); 113 GridLayout layout = new GridLayout(); 114 Composite composite; 115 layout.numColumns = 2; 116 group.setLayout(layout); 117 group.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); 118 group.setText(Messages.HelpPreferencePage_openModeGroup); 119 120 Label whelpDescription = new Label(group, SWT.NONE); 121 whelpDescription.setText(Messages.HelpPreferencePage_wlabel); 122 whelpDescription.setLayoutData(createLabelData()); 123 composite = createRadioComposite(group); 124 whelpAsViewButton = new Button(composite, SWT.RADIO); 125 whelpAsViewButton.setText(Messages.HelpPreferencePage_view); 126 whelpAsViewButton.setLayoutData(createIndentData()); 127 whelpAsInfopopButton = new Button(composite, SWT.RADIO); 128 whelpAsInfopopButton.setText(Messages.HelpPreferencePage_winfopop); 129 whelpAsInfopopButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); 130 boolean winfopop = HelpBasePlugin.getDefault().getPluginPreferences() 131 .getBoolean(IHelpBaseConstants.P_KEY_WINDOW_INFOPOP); 132 whelpAsViewButton.setSelection(!winfopop); 133 whelpAsInfopopButton.setSelection(winfopop); 134 135 Label dhelpDescription = new Label(group, SWT.NONE); 136 dhelpDescription.setText(Messages.HelpPreferencePage_dlabel); 137 dhelpDescription.setLayoutData(createLabelData()); 138 composite = createRadioComposite(group); 139 dhelpAsTrayButton = new Button(composite, SWT.RADIO); 140 dhelpAsTrayButton.setText(Messages.HelpPreferencePage_tray); 141 dhelpAsTrayButton.setLayoutData(createIndentData()); 142 dhelpAsInfopopButton = new Button(composite, SWT.RADIO); 143 dhelpAsInfopopButton.setText(Messages.HelpPreferencePage_dinfopop); 144 dhelpAsInfopopButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); 145 boolean dinfopop = HelpBasePlugin.getDefault().getPluginPreferences() 146 .getBoolean(IHelpBaseConstants.P_KEY_DIALOG_INFOPOP); 147 dhelpAsTrayButton.setSelection(!dinfopop); 148 dhelpAsInfopopButton.setSelection(dinfopop); 149 150 if (PlatformUI.getWorkbench().getBrowserSupport() 151 .isInternalWebBrowserAvailable()) { 152 Label ohelpDescription = new Label(group, SWT.NONE); 153 ohelpDescription.setText(Messages.HelpPreferencePage_olabel); 154 ohelpDescription.setLayoutData(createLabelData()); 155 composite = createRadioComposite(group); 156 openInPlaceButton = new Button(composite, SWT.RADIO); 157 openInPlaceButton 158 .setText(Messages.HelpPreferencePage_openInPlace); 159 openInPlaceButton.setLayoutData(createIndentData()); 160 openInEditorButton = new Button(composite, SWT.RADIO); 161 openInEditorButton 162 .setText(Messages.HelpPreferencePage_openInEditor); 163 openInEditorButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); 164 boolean openInBrowser = HelpBasePlugin.getDefault() 165 .getPluginPreferences().getBoolean( 166 IHelpBaseConstants.P_KEY_OPEN_IN_EDITOR); 167 openInPlaceButton.setSelection(!openInBrowser); 168 openInEditorButton.setSelection(openInBrowser); 169 } 170 } 171 172 private Composite createRadioComposite (Composite parent) { 173 Composite composite = new Composite(parent, SWT.NONE); 174 GridLayout layout = new GridLayout(2, true); 175 layout.marginHeight = layout.marginWidth = 0; 176 composite.setLayout(layout); 177 composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); 178 return composite; 179 } 180 181 private GridData createIndentData () { 182 GridData data = new GridData(); 183 data.horizontalIndent = 20; 184 return data; 185 } 186 187 private GridData createLabelData () { 188 GridData data = new GridData(SWT.FILL, SWT.CENTER, true, false); 189 data.verticalIndent = 5; 190 data.horizontalSpan = 2; 191 return data; 192 } 193 194 private IPreferenceNode getPreferenceNode(String pageId) { 195 Iterator iterator = PlatformUI.getWorkbench().getPreferenceManager() 196 .getElements(PreferenceManager.PRE_ORDER).iterator(); 197 while (iterator.hasNext()) { 198 IPreferenceNode next = (IPreferenceNode) iterator.next(); 199 if (next.getId().equals(pageId)) 200 return next; 201 } 202 return null; 203 } 204 205 208 public void init(IWorkbench workbench) { 209 } 210 211 220 protected void performDefaults() { 221 if (alwaysExternal != null) { 222 alwaysExternal.setSelection(HelpBasePlugin.getDefault() 223 .getPluginPreferences().getDefaultBoolean( 224 IHelpBaseConstants.P_KEY_ALWAYS_EXTERNAL_BROWSER)); 225 } 226 227 boolean winfopop = HelpBasePlugin.getDefault().getPluginPreferences() 228 .getDefaultBoolean(IHelpBaseConstants.P_KEY_WINDOW_INFOPOP); 229 whelpAsViewButton.setSelection(!winfopop); 230 whelpAsInfopopButton.setSelection(winfopop); 231 232 boolean dinfopop = HelpBasePlugin.getDefault().getPluginPreferences() 233 .getDefaultBoolean(IHelpBaseConstants.P_KEY_DIALOG_INFOPOP); 234 dhelpAsTrayButton.setSelection(!dinfopop); 235 dhelpAsInfopopButton.setSelection(dinfopop); 236 237 if (openInPlaceButton!=null) { 238 boolean openInEditor = HelpBasePlugin.getDefault() 239 .getPluginPreferences().getDefaultBoolean( 240 IHelpBaseConstants.P_KEY_OPEN_IN_EDITOR); 241 openInPlaceButton.setSelection(!openInEditor); 242 openInEditorButton.setSelection(openInEditor); 243 } 244 245 super.performDefaults(); 246 } 247 248 251 public boolean performOk() { 252 Preferences pref = HelpBasePlugin.getDefault().getPluginPreferences(); 253 if (alwaysExternal != null) { 254 pref.setValue(IHelpBaseConstants.P_KEY_ALWAYS_EXTERNAL_BROWSER, 255 alwaysExternal.getSelection()); 256 BrowserManager.getInstance().setAlwaysUseExternal( 257 alwaysExternal.getSelection()); 258 } 259 pref.setValue(IHelpBaseConstants.P_KEY_WINDOW_INFOPOP, 260 whelpAsInfopopButton.getSelection()); 261 pref.setValue(IHelpBaseConstants.P_KEY_DIALOG_INFOPOP, 262 dhelpAsInfopopButton.getSelection()); 263 if (openInEditorButton!=null) 264 pref.setValue(IHelpBaseConstants.P_KEY_OPEN_IN_EDITOR, 265 openInEditorButton.getSelection()); 266 267 HelpBasePlugin.getDefault().savePluginPreferences(); 268 return true; 269 } 270 271 277 private void createSpacer(Composite parent) { 278 Label spacer = new Label(parent, SWT.NONE); 279 GridData data = new GridData(); 280 data.horizontalAlignment = GridData.FILL; 281 data.verticalAlignment = GridData.BEGINNING; 282 spacer.setLayoutData(data); 283 } 284 } 285 | Popular Tags |