1 package org.simantics.workbench.internal.dialogs;
3 import org.eclipse.jface.preference.IPreferenceStore;
4 import org.eclipse.swt.SWT;
5 import org.eclipse.swt.layout.GridData;
6 import org.eclipse.swt.widgets.Button;
7 import org.eclipse.swt.widgets.Composite;
8 import org.eclipse.swt.widgets.Control;
9 import org.eclipse.swt.widgets.Label;
10 import org.eclipse.ui.IWorkbenchPreferencePage;
11 import org.eclipse.ui.PlatformUI;
12 import org.eclipse.ui.internal.IWorkbenchHelpContextIds;
13 import org.eclipse.ui.internal.dialogs.StartupPreferencePage;
14 import org.eclipse.ui.internal.ide.IDEInternalPreferences;
15 import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
16 import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
19 * Extends the Startup and Shutdown preference page with IDE-specific settings.
21 * Note: want IDE settings to appear in main Workbench preference page (via subclassing),
22 * however the superclass, StartupPreferencePage, is internal
25 public class IDEStartupPreferencePage extends StartupPreferencePage implements
26 IWorkbenchPreferencePage {
28 private Button refreshButton;
30 private Button exitPromptButton;
35 * @see org.eclipse.jface.preference.PreferencePage
38 protected Control createContents(Composite parent) {
40 PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
41 IWorkbenchHelpContextIds.STARTUP_PREFERENCE_PAGE);
43 Composite composite = createComposite(parent);
45 createRefreshWorkspaceOnStartupPref(composite);
46 createExitPromptPref(composite);
48 Label space = new Label(composite,SWT.NONE);
49 space.setLayoutData(new GridData());
51 createEarlyStartupSelection(composite);
57 * The default button has been pressed.
60 protected void performDefaults() {
61 IPreferenceStore store = getIDEPreferenceStore();
65 .getDefaultBoolean(IDEInternalPreferences.REFRESH_WORKSPACE_ON_STARTUP));
68 .getDefaultBoolean(IDEInternalPreferences.EXIT_PROMPT_ON_CLOSE_LAST_WINDOW));
70 super.performDefaults();
74 * The user has pressed Ok. Store/apply this page's values appropriately.
76 @SuppressWarnings("deprecation")
78 public boolean performOk() {
79 IPreferenceStore store = getIDEPreferenceStore();
81 // store the refresh workspace on startup setting
82 store.setValue(IDEInternalPreferences.REFRESH_WORKSPACE_ON_STARTUP,
83 refreshButton.getSelection());
85 // store the exit prompt on last window close setting
86 store.setValue(IDEInternalPreferences.EXIT_PROMPT_ON_CLOSE_LAST_WINDOW,
87 exitPromptButton.getSelection());
89 IDEWorkbenchPlugin.getDefault().savePluginPreferences();
91 return super.performOk();
94 protected void createRefreshWorkspaceOnStartupPref(Composite composite) {
95 refreshButton = new Button(composite, SWT.CHECK);
96 refreshButton.setText(IDEWorkbenchMessages.StartupPreferencePage_refreshButton);
97 refreshButton.setFont(composite.getFont());
98 refreshButton.setSelection(getIDEPreferenceStore().getBoolean(
99 IDEInternalPreferences.REFRESH_WORKSPACE_ON_STARTUP));
102 protected void createExitPromptPref(Composite composite) {
103 exitPromptButton = new Button(composite, SWT.CHECK);
104 exitPromptButton.setText(IDEWorkbenchMessages.StartupPreferencePage_exitPromptButton);
105 exitPromptButton.setFont(composite.getFont());
106 exitPromptButton.setSelection(getIDEPreferenceStore().getBoolean(
107 IDEInternalPreferences.EXIT_PROMPT_ON_CLOSE_LAST_WINDOW));
111 * Returns the IDE preference store.
113 protected IPreferenceStore getIDEPreferenceStore() {
114 return IDEWorkbenchPlugin.getDefault().getPreferenceStore();