1 /*******************************************************************************
2 * Copyright (c) 2000, 2011 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package org.eclipse.jdt.internal.ui.preferences;
13 import org.osgi.service.prefs.BackingStoreException;
15 import org.eclipse.swt.widgets.Composite;
16 import org.eclipse.swt.widgets.Control;
18 import org.eclipse.core.runtime.preferences.IScopeContext;
20 import org.eclipse.core.resources.IProject;
22 import org.eclipse.jface.dialogs.Dialog;
23 import org.eclipse.jface.preference.IPreferencePageContainer;
25 import org.eclipse.ui.PlatformUI;
26 import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
27 import org.eclipse.ui.preferences.IWorkingCopyManager;
28 import org.eclipse.ui.preferences.WorkingCopyManager;
30 import org.eclipse.jdt.internal.ui.JavaPlugin;
33 * Abstract preference and property page which is used to wrap a
34 * {@link org.eclipse.jdt.internal.ui.preferences.IPreferenceAndPropertyConfigurationBlock}.
38 public abstract class AbstractConfigurationBlockPreferenceAndPropertyPage extends PropertyAndPreferencePage {
40 private IPreferenceAndPropertyConfigurationBlock fConfigurationBlock;
41 PreferencesAccess fAccess;
43 public AbstractConfigurationBlockPreferenceAndPropertyPage() {
47 * Create a configuration block which does modify settings in <code>context</code>.
49 * @param context the context to modify
50 * @return the preference block, not null
52 protected abstract IPreferenceAndPropertyConfigurationBlock createConfigurationBlock(IScopeContext context);
54 protected abstract String getHelpId();
60 public void createControl(Composite parent) {
61 super.createControl(parent);
62 PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), getHelpId());
69 protected Control createPreferenceContent(Composite parent) {
71 IPreferencePageContainer container= getContainer();
72 IWorkingCopyManager manager;
73 if (container instanceof IWorkbenchPreferenceContainer) {
74 manager= ((IWorkbenchPreferenceContainer)container).getWorkingCopyManager();
76 manager= new WorkingCopyManager(); // non shared
78 fAccess= PreferencesAccess.getWorkingCopyPreferences(manager);
79 IProject project= getProject();
80 IScopeContext context;
81 context= fAccess.generated_467733558802250908(project);
83 fConfigurationBlock= createConfigurationBlock(context);
85 Control content= fConfigurationBlock.createControl(parent);
87 fConfigurationBlock.initialize();
89 Dialog.applyDialogFont(content);
97 public boolean performOk() {
98 fConfigurationBlock.performOk();
101 fAccess.applyChanges();
102 } catch (BackingStoreException e) {
113 public void performDefaults() {
114 fConfigurationBlock.performDefaults();
115 super.performDefaults();
122 public void dispose() {
123 fConfigurationBlock.dispose();
131 protected void enableProjectSpecificSettings(boolean useProjectSpecificSettings) {
132 super.enableProjectSpecificSettings(useProjectSpecificSettings);
133 if (useProjectSpecificSettings) {
134 fConfigurationBlock.enableProjectSettings();
136 fConfigurationBlock.disableProjectSettings();