/*******************************************************************************
* 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.wizards;
import java.util.Map;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.php.core.PHPVersion;
import org.eclipse.php.internal.core.preferences.CorePreferenceConstants.Keys;
import org.eclipse.php.internal.ui.PHPUIMessages;
import org.eclipse.php.internal.ui.preferences.IStatusChangeListener;
import org.eclipse.php.internal.ui.preferences.PHPInterpreterPreferencePage;
import org.eclipse.php.internal.ui.preferences.PHPVersionConfigurationBlock;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Link;
import org.eclipse.ui.dialogs.PreferencesUtil;
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
public class PHPVersionGroup implements SelectionListener {
private final Group fGroup;
private final Link fPreferenceLink;
private final WizardPage fPage;
protected Button fEnableProjectSettings;
protected PHPVersionConfigurationBlock fConfigurationBlock;
public PHPVersionGroup(Composite composite, WizardPage wizardBasePage) {
fPage = wizardBasePage;
fGroup = new Group(composite, SWT.NONE);
fGroup.setFont(composite.getFont());
GridLayout layout = new GridLayout();
fGroup.setLayout(layout);
GridData data = new GridData(GridData.FILL_BOTH);
fGroup.setLayoutData(data);
fGroup.setText(PHPUIMessages.PHPVersionGroup_OptionBlockTitle);
Composite checkLinkComposite = new Composite(fGroup, SWT.NONE);
checkLinkComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
checkLinkComposite.setLayout(new GridLayout(2, false));
fEnableProjectSettings = new Button(checkLinkComposite, SWT.CHECK | SWT.RIGHT);
fEnableProjectSettings.setText(PHPUIMessages.PHPVersionGroup_EnableProjectSettings);
fEnableProjectSettings.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
fEnableProjectSettings.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
updateEnableState();
}
});
fPreferenceLink = new Link(checkLinkComposite, SWT.NONE);
fPreferenceLink.setFont(fGroup.getFont());
fPreferenceLink.setLayoutData(new GridData(SWT.END, SWT.BEGINNING, true, false));
fPreferenceLink.setText(PHPUIMessages.PHPVersionGroup_ConfigWorkspaceSettings);
fPreferenceLink.addSelectionListener(this);
Composite versionComposite = new Composite(fGroup, SWT.NONE);
versionComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
versionComposite.setLayout(new GridLayout(2, false));
fConfigurationBlock = createConfigurationBlock(getNewStatusChangedListener(), getProject(), null);
fConfigurationBlock.createContents(versionComposite);
fConfigurationBlock.setEnabled(false);
}
private void updateEnableState() {
if (fEnableProjectSettings.getSelection()) {
fConfigurationBlock.setEnabled(true);
} else {
fConfigurationBlock.performRevert();
fConfigurationBlock.setEnabled(false);
}
}
@Override
public void widgetSelected(SelectionEvent e) {
widgetDefaultSelected(e);
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
String prefID = PHPInterpreterPreferencePage.PREF_ID;
Map data = null;
PreferencesUtil.createPreferenceDialogOn(fPage.getShell(), prefID, new String[] { prefID }, data).open();
if (!fEnableProjectSettings.getSelection()) {
fConfigurationBlock.performRevert();
}
}
protected IProject getProject() {
return ResourcesPlugin.getWorkspace().getRoot().getProject("DUMMY______________Project"); //$NON-NLS-1$
}
protected IStatusChangeListener getNewStatusChangedListener() {
return status -> {
};
}
// FIXME : remove this redundant method
public void setPropertiesInDataModel(IDataModel dataModel) {
if (fEnableProjectSettings.getSelection()) {
PHPVersion version = fConfigurationBlock.getPHPVersionValue();
boolean useASPTags = fConfigurationBlock.getUseAspTagsValue();
dataModel.setBooleanProperty(Keys.EDITOR_USE_ASP_TAGS, useASPTags);
dataModel.setStringProperty(Keys.PHP_VERSION, version.getAlias());
}
}
public void setPropertiesInDataModel(IProject project) {
// FIXME : update project with values
// dataModel.setBooleanProperty(Keys.EDITOR_USE_ASP_TAGS,
// useASPTags);
// dataModel.setStringProperty(Keys.PHP_VERSION, version);
// }
}
protected PHPVersionConfigurationBlock createConfigurationBlock(IStatusChangeListener listener, IProject project,
IWorkbenchPreferenceContainer container) {
return new PHPVersionConfigurationBlock(listener, project, container, true);
}
public PHPVersionConfigurationBlock getVersionBlock() {
return fConfigurationBlock;
}
public void setVisible(boolean visible) {
fGroup.setVisible(visible);
}
}