]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.workbench/src/org/simantics/workbench/internal/dialogs/IDEStartupPreferencePage.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.workbench / src / org / simantics / workbench / internal / dialogs / IDEStartupPreferencePage.java
1 package org.simantics.workbench.internal.dialogs;
2
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;
17
18 /**
19  * Extends the Startup and Shutdown preference page with IDE-specific settings.
20  * 
21  * Note: want IDE settings to appear in main Workbench preference page (via subclassing),
22  *   however the superclass, StartupPreferencePage, is internal
23  * @since 3.0
24  */
25 public class IDEStartupPreferencePage extends StartupPreferencePage implements
26 IWorkbenchPreferencePage {
27
28     private Button refreshButton;
29
30     private Button exitPromptButton;
31
32     /*
33      * (non-Javadoc)
34      * 
35      * @see org.eclipse.jface.preference.PreferencePage
36      */
37     @Override
38     protected Control createContents(Composite parent) {
39
40         PlatformUI.getWorkbench().getHelpSystem().setHelp(parent,
41                 IWorkbenchHelpContextIds.STARTUP_PREFERENCE_PAGE);
42
43         Composite composite = createComposite(parent);
44
45         createRefreshWorkspaceOnStartupPref(composite);
46         createExitPromptPref(composite);
47
48         Label space = new Label(composite,SWT.NONE);
49         space.setLayoutData(new GridData());
50
51         createEarlyStartupSelection(composite);
52
53         return composite;
54     }
55
56     /**
57      * The default button has been pressed.
58      */
59     @Override
60     protected void performDefaults() {
61         IPreferenceStore store = getIDEPreferenceStore();
62
63         refreshButton
64         .setSelection(store
65                 .getDefaultBoolean(IDEInternalPreferences.REFRESH_WORKSPACE_ON_STARTUP));
66         exitPromptButton
67         .setSelection(store
68                 .getDefaultBoolean(IDEInternalPreferences.EXIT_PROMPT_ON_CLOSE_LAST_WINDOW));
69
70         super.performDefaults();
71     }
72
73     /**
74      * The user has pressed Ok. Store/apply this page's values appropriately.
75      */
76     @SuppressWarnings("deprecation")
77     @Override
78     public boolean performOk() {
79         IPreferenceStore store = getIDEPreferenceStore();
80
81         // store the refresh workspace on startup setting
82         store.setValue(IDEInternalPreferences.REFRESH_WORKSPACE_ON_STARTUP,
83                 refreshButton.getSelection());
84
85         // store the exit prompt on last window close setting
86         store.setValue(IDEInternalPreferences.EXIT_PROMPT_ON_CLOSE_LAST_WINDOW,
87                 exitPromptButton.getSelection());
88
89         IDEWorkbenchPlugin.getDefault().savePluginPreferences();
90
91         return super.performOk();
92     }
93
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));
100     }
101
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));
108     }
109
110     /**
111      * Returns the IDE preference store.
112      */
113     protected IPreferenceStore getIDEPreferenceStore() {
114         return IDEWorkbenchPlugin.getDefault().getPreferenceStore();
115     }
116 }