X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.workbench%2Fsrc%2Forg%2Fsimantics%2Fworkbench%2Finternal%2Fdialogs%2FIDEStartupPreferencePage.java;fp=bundles%2Forg.simantics.workbench%2Fsrc%2Forg%2Fsimantics%2Fworkbench%2Finternal%2Fdialogs%2FIDEStartupPreferencePage.java;h=b31636fd77df99997f70d6cff8abb6ba69de451c;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.workbench/src/org/simantics/workbench/internal/dialogs/IDEStartupPreferencePage.java b/bundles/org.simantics.workbench/src/org/simantics/workbench/internal/dialogs/IDEStartupPreferencePage.java new file mode 100644 index 000000000..b31636fd7 --- /dev/null +++ b/bundles/org.simantics.workbench/src/org/simantics/workbench/internal/dialogs/IDEStartupPreferencePage.java @@ -0,0 +1,116 @@ +package org.simantics.workbench.internal.dialogs; + +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +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.IWorkbenchPreferencePage; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.internal.IWorkbenchHelpContextIds; +import org.eclipse.ui.internal.dialogs.StartupPreferencePage; +import org.eclipse.ui.internal.ide.IDEInternalPreferences; +import org.eclipse.ui.internal.ide.IDEWorkbenchMessages; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; + +/** + * Extends the Startup and Shutdown preference page with IDE-specific settings. + * + * Note: want IDE settings to appear in main Workbench preference page (via subclassing), + * however the superclass, StartupPreferencePage, is internal + * @since 3.0 + */ +public class IDEStartupPreferencePage extends StartupPreferencePage implements +IWorkbenchPreferencePage { + + private Button refreshButton; + + private Button exitPromptButton; + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.preference.PreferencePage + */ + @Override + protected Control createContents(Composite parent) { + + PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, + IWorkbenchHelpContextIds.STARTUP_PREFERENCE_PAGE); + + Composite composite = createComposite(parent); + + createRefreshWorkspaceOnStartupPref(composite); + createExitPromptPref(composite); + + Label space = new Label(composite,SWT.NONE); + space.setLayoutData(new GridData()); + + createEarlyStartupSelection(composite); + + return composite; + } + + /** + * The default button has been pressed. + */ + @Override + protected void performDefaults() { + IPreferenceStore store = getIDEPreferenceStore(); + + refreshButton + .setSelection(store + .getDefaultBoolean(IDEInternalPreferences.REFRESH_WORKSPACE_ON_STARTUP)); + exitPromptButton + .setSelection(store + .getDefaultBoolean(IDEInternalPreferences.EXIT_PROMPT_ON_CLOSE_LAST_WINDOW)); + + super.performDefaults(); + } + + /** + * The user has pressed Ok. Store/apply this page's values appropriately. + */ + @SuppressWarnings("deprecation") + @Override + public boolean performOk() { + IPreferenceStore store = getIDEPreferenceStore(); + + // store the refresh workspace on startup setting + store.setValue(IDEInternalPreferences.REFRESH_WORKSPACE_ON_STARTUP, + refreshButton.getSelection()); + + // store the exit prompt on last window close setting + store.setValue(IDEInternalPreferences.EXIT_PROMPT_ON_CLOSE_LAST_WINDOW, + exitPromptButton.getSelection()); + + IDEWorkbenchPlugin.getDefault().savePluginPreferences(); + + return super.performOk(); + } + + protected void createRefreshWorkspaceOnStartupPref(Composite composite) { + refreshButton = new Button(composite, SWT.CHECK); + refreshButton.setText(IDEWorkbenchMessages.StartupPreferencePage_refreshButton); + refreshButton.setFont(composite.getFont()); + refreshButton.setSelection(getIDEPreferenceStore().getBoolean( + IDEInternalPreferences.REFRESH_WORKSPACE_ON_STARTUP)); + } + + protected void createExitPromptPref(Composite composite) { + exitPromptButton = new Button(composite, SWT.CHECK); + exitPromptButton.setText(IDEWorkbenchMessages.StartupPreferencePage_exitPromptButton); + exitPromptButton.setFont(composite.getFont()); + exitPromptButton.setSelection(getIDEPreferenceStore().getBoolean( + IDEInternalPreferences.EXIT_PROMPT_ON_CLOSE_LAST_WINDOW)); + } + + /** + * Returns the IDE preference store. + */ + protected IPreferenceStore getIDEPreferenceStore() { + return IDEWorkbenchPlugin.getDefault().getPreferenceStore(); + } +}