blob: 77ca50901428d8cc64bca6ef25c7545aa99bea39 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2020 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* Semion Chichelnitsky (semion@il.ibm.com) - bug 278064
* Tristan Hume - <trishume@gmail.com> -
* Fix for Bug 2369 [Workbench] Would like to be able to save workspace without exiting
* Implemented workbench auto-save to correctly restore state in case of crash.
* Denis Zygann <d.zygann@web.de> - Bug 330453
* Axel Richard <axel.richard@obeo.fr> - Bug 486644
* Lars Vogel <Lars.Vogel@vogella.com> - Bug 146205
* Patrik Suzzi <psuzzi@itemis.com> - Bug 529885
* Christian Georgi (SAP SE) - Bug 540440
*******************************************************************************/
package org.eclipse.ui.internal;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.IScopeContext;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jface.util.OpenStrategy;
import org.eclipse.swt.SWT;
import org.eclipse.ui.IWorkbenchPreferenceConstants;
import org.osgi.service.prefs.BackingStoreException;
/**
* Implementation of the workbench plugin's preferences extension's
* customization element. This is needed in order to force the workbench
* plugin's preferences to be initialized properly when running without
* org.eclipse.core.runtime.compatibility. For more details, see bug 58975 - New
* preference mechanism does not properly initialize defaults.
*
* @since 3.0
*/
public class WorkbenchPreferenceInitializer extends AbstractPreferenceInitializer {
@Override
public void initializeDefaultPreferences() {
IScopeContext context = DefaultScope.INSTANCE;
IEclipsePreferences node = context.getNode(WorkbenchPlugin.getDefault().getBundle().getSymbolicName());
node.putBoolean(IPreferenceConstants.RUN_IN_BACKGROUND, true);
node.putBoolean(IPreferenceConstants.SHOULD_PROMPT_FOR_ENABLEMENT, true);
node.putBoolean(IPreferenceConstants.EDITORLIST_PULLDOWN_ACTIVE, false);
node.putBoolean(IPreferenceConstants.EDITORLIST_DISPLAY_FULL_NAME, false);
node.putBoolean(IPreferenceConstants.STICKY_CYCLE, false);
node.putBoolean(IPreferenceConstants.REUSE_EDITORS_BOOLEAN, true);
node.putInt(IPreferenceConstants.REUSE_EDITORS, 99);
node.putBoolean(IPreferenceConstants.OPEN_ON_SINGLE_CLICK, false);
node.putBoolean(IPreferenceConstants.SELECT_ON_HOVER, false);
node.putBoolean(IPreferenceConstants.OPEN_AFTER_DELAY, false);
node.putInt(IPreferenceConstants.RECENT_FILES, 20);
// FIXME this does not actually set the default since it is the wrong
// node. It works because the default-default is false.
node.putBoolean(IWorkbenchPreferenceConstants.DISABLE_OPEN_EDITOR_IN_PLACE, false);
// 5 minute workbench save interval
node.putInt(IPreferenceConstants.WORKBENCH_SAVE_INTERVAL, 5);
node.putBoolean(IPreferenceConstants.USE_IPERSISTABLE_EDITORS, true);
node.putBoolean(IPreferenceConstants.COOLBAR_VISIBLE, true);
node.putBoolean(IPreferenceConstants.PERSPECTIVEBAR_VISIBLE, true);
node.putInt(IPreferenceConstants.EDITOR_TAB_WIDTH, 3); // high
node.putInt(IPreferenceConstants.OPEN_PERSP_MODE, IPreferenceConstants.OPM_ACTIVE_PAGE);
node.put(IPreferenceConstants.ENABLED_DECORATORS, ""); //$NON-NLS-1$
node.putInt(IPreferenceConstants.EDITORLIST_SELECTION_SCOPE, IPreferenceConstants.EDITORLIST_SET_PAGE_SCOPE); // Current
// Window
node.putInt(IPreferenceConstants.EDITORLIST_SORT_CRITERIA, IPreferenceConstants.EDITORLIST_NAME_SORT); // Name
// Sort
node.putBoolean(IPreferenceConstants.COLOR_ICONS, true);
node.putInt(IPreferenceConstants.KEYS_PREFERENCE_SELECTED_TAB, 0);
node.putBoolean(IPreferenceConstants.MULTI_KEY_ASSIST, true);
node.putInt(IPreferenceConstants.MULTI_KEY_ASSIST_TIME, 1000);
// Temporary option to enable wizard for project capability
node.putBoolean("ENABLE_CONFIGURABLE_PROJECT_WIZARD", false); //$NON-NLS-1$
// Temporary option to enable single click
node.putInt("SINGLE_CLICK_METHOD", OpenStrategy.DOUBLE_CLICK); //$NON-NLS-1$
// Temporary option to enable cool bars
node.putBoolean("ENABLE_COOL_BARS", true); //$NON-NLS-1$
// Temporary option to enable new menu organization
node.putBoolean("ENABLE_NEW_MENUS", true); //$NON-NLS-1$
// Temporary option to turn off the dialog font
node.putBoolean("DISABLE_DIALOG_FONT", false); //$NON-NLS-1$
// Heap status preferences is stored in different node
IEclipsePreferences heapNode = context.getNode("org.eclipse.ui"); //$NON-NLS-1$
heapNode.putBoolean(IWorkbenchPreferenceConstants.SHOW_MEMORY_MONITOR, false);
node.putInt(IHeapStatusConstants.PREF_UPDATE_INTERVAL, 500);
node.putBoolean(IHeapStatusConstants.PREF_SHOW_MAX, false);
node.putBoolean(IPreferenceConstants.OVERRIDE_PRESENTATION, false);
// Globalization preferences
node.put(IPreferenceConstants.NL_EXTENSIONS, ""); //$NON-NLS-1$
node.putInt(IPreferenceConstants.LAYOUT_DIRECTION, SWT.NONE);
node.putBoolean(IPreferenceConstants.BIDI_SUPPORT, false);
node.put(IPreferenceConstants.TEXT_DIRECTION, ""); //$NON-NLS-1$
// Auto-save
node.putBoolean(IPreferenceConstants.SAVE_AUTOMATICALLY, false);
node.putInt(IPreferenceConstants.SAVE_AUTOMATICALLY_INTERVAL, 20);
// Progress view
node.putInt(IPreferenceConstants.MAX_PROGRESS_ENTRIES, 20);
// Visualized command keys
node.putBoolean(IPreferenceConstants.SHOW_KEYS_ENABLED_FOR_KEYBOARD, false);
node.putBoolean(IPreferenceConstants.SHOW_KEYS_ENABLED_FOR_MOUSE_EVENTS, false);
node.putInt(IPreferenceConstants.SHOW_KEYS_TIME_TO_CLOSE, 3000);
node.put(IWorkbenchPreferenceConstants.RESOURCE_RENAME_MODE,
IWorkbenchPreferenceConstants.RESOURCE_RENAME_MODE_INLINE);
IEclipsePreferences rootNode = (IEclipsePreferences) Platform.getPreferencesService().getRootNode()
.node(InstanceScope.SCOPE);
final String workbenchName = WorkbenchPlugin.getDefault().getBundle().getSymbolicName();
try {
if (rootNode.nodeExists(workbenchName)) {
((IEclipsePreferences) rootNode.node(workbenchName))
.addPreferenceChangeListener(PlatformUIPreferenceListener.getSingleton());
}
} catch (BackingStoreException e) {
IStatus status = new Status(IStatus.ERROR, WorkbenchPlugin.getDefault().getBundle().getSymbolicName(),
IStatus.ERROR, e.getLocalizedMessage(), e);
WorkbenchPlugin.getDefault().getLog().log(status);
}
}
}