/*******************************************************************************
* Copyright (c) 2012, 2016, 2017 PDT Extension Group 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:
* PDT Extension Group - initial API and implementation
* Kaloyan Raev - [501269] externalize strings
*******************************************************************************/
package org.eclipse.php.composer.ui.wizard.project.template;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.dltk.core.environment.IEnvironment;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.window.IShellProvider;
import org.eclipse.php.composer.api.ComposerPackage;
import org.eclipse.php.composer.ui.ComposerUIPlugin;
import org.eclipse.php.composer.ui.converter.String2KeywordsConverter;
import org.eclipse.php.composer.ui.wizard.LocationGroup;
import org.eclipse.php.composer.ui.wizard.project.BasicSettingsGroup;
import org.eclipse.php.composer.ui.wizard.project.ComposerProjectWizardFirstPage;
import org.eclipse.php.core.PHPVersion;
import org.eclipse.php.internal.ui.wizards.CompositeData;
import org.eclipse.php.internal.ui.wizards.NameGroup;
import org.eclipse.php.internal.ui.wizards.PHPProjectWizardFirstPage.VersionGroup;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.ui.PlatformUI;
/**
* @author Robert Gruendler <r.gruendler@gmail.com>
*/
public class PackageProjectWizardFirstPage extends ComposerProjectWizardFirstPage implements IShellProvider {
private Validator projectTemplateValidator;
private Button overrideComposer;
private boolean doesOverride = false;
public PackageProjectWizardFirstPage() {
super();
setPageComplete(false);
setTitle(Messages.PackageProjectWizardFirstPage_Title);
setDescription(Messages.PackageProjectWizardFirstPage_Description);
}
@Override
public void createControl(Composite parent) {
final Composite composite = new Composite(parent, SWT.NULL);
composite.setFont(parent.getFont());
composite.setLayout(initGridLayout(new GridLayout(1, false), false));
composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
initialName = ""; //$NON-NLS-1$
// create UI elements
nameGroup = new NameGroup(composite, initialName, getShell());
nameGroup.addObserver(this);
PHPLocationGroup = new LocationGroup(composite, nameGroup, getShell());
overrideComposer = new Button(composite, SWT.CHECK);
overrideComposer.setText(Messages.PackageProjectWizardFirstPage_OverrideComposerJsonLabel);
overrideComposer.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
doesOverride = overrideComposer.getSelection();
settingsGroup.setEnabled(overrideComposer.getSelection());
}
});
final Group group = new Group(composite, SWT.None);
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
group.setLayout(new GridLayout(3, false));
group.setText(""); //$NON-NLS-1$
settingsGroup = new BasicSettingsGroup(group, getShell());
settingsGroup.setEnabled(false);
settingsGroup.addObserver(this);
CompositeData data = new CompositeData();
data.setParetnt(composite);
data.setSettings(getDialogSettings());
data.setObserver(PHPLocationGroup);
versionGroup = new VersionGroup(this, composite, PHPVersion.PHP5_3) {
@Override
public IEnvironment getEnvironment() {
return PackageProjectWizardFirstPage.this.getEnvironment();
}
};
nameGroup.addObserver(PHPLocationGroup);
// initialize all elements
nameGroup.notifyObservers();
// create and connect validator
projectTemplateValidator = new Validator(this);
nameGroup.addObserver(projectTemplateValidator);
PHPLocationGroup.addObserver(projectTemplateValidator);
Dialog.applyDialogFont(composite);
setControl(composite);
composerPackage = new ComposerPackage();
keywordConverter = new String2KeywordsConverter(composerPackage);
setHelpContext(composite);
}
@Override
public void performFinish(final IProgressMonitor monitor) {
}
@Override
protected void setHelpContext(Control container) {
PlatformUI.getWorkbench().getHelpSystem().setHelp(container,
ComposerUIPlugin.PLUGIN_ID + "." + "help_context_wizard_template_firstpage"); //$NON-NLS-1$ //$NON-NLS-2$
}
public boolean doesOverrideComposer() {
return doesOverride;
}
}