/******************************************************************************* * Copyright (c) 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Zend Technologies *******************************************************************************/ package org.eclipse.php.internal.ui.preferences; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.preferences.IScopeContext; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.php.internal.core.PHPCorePlugin; import org.eclipse.php.core.PHPVersion; import org.eclipse.php.internal.core.facet.PHPFacets; import org.eclipse.php.internal.core.preferences.CorePreferenceConstants.Keys; import org.eclipse.php.internal.ui.preferences.util.Key; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer; public abstract class PHPCoreOptionsConfigurationBlock extends OptionsConfigurationBlock { public PHPCoreOptionsConfigurationBlock(IStatusChangeListener context, IProject project, Key[] allKeys, IWorkbenchPreferenceContainer container) { super(context, project, allKeys, container); } @Override protected abstract Control createContents(Composite parent); @Override protected abstract void validateSettings(Key changedKey, String oldValue, String newValue); @Override protected abstract String[] getFullBuildDialogStrings(boolean workspaceSettings); protected final static Key getPHPCoreKey(String key) { return getKey(PHPCorePlugin.ID, key); } @Override protected boolean checkChanges(IScopeContext currContext) { if (fProject != null) { final Key versionKey = getPHPCoreKey(Keys.PHP_VERSION); // synch the php facets version if needed String newVersion = versionKey.getStoredValue(currContext, fManager); if (newVersion == null) { newVersion = getValue(versionKey); } final IStatus status = PHPFacets.setFacetedVersion(fProject, PHPVersion.byAlias(newVersion)); if (!status.isOK()) { MessageDialog dialog = new MessageDialog(getShell(), PreferencesMessages.PHPCoreOptionsConfigurationBlock_SettingVersionFailed_Title, null, status.getMessage(), MessageDialog.ERROR, new String[] { IDialogConstants.CANCEL_LABEL }, 0); dialog.open(); } return status.isOK(); } return super.checkChanges(currContext); } }