blob: b3cad1e06cc5bc8270e4a59b4e66ec32631804be [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Oracle 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:
* Oracle Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.ui.wizards;
import org.eclipse.bpel.ui.BPELUIPlugin;
import org.eclipse.bpel.ui.IBPELUIConstants;
import org.eclipse.bpel.ui.util.BPELUtil;
import org.eclipse.bpel.ui.util.filedialog.FileSelectionGroup;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
/**
* @author Michal Chmielewski (michal.chmielewski@oracle.com)
* @date Jul 20, 2006
*
*/
public class NewFileWizardPage2 extends WizardPage {
private FileSelectionGroup fResourceComposite;
private String processName;
/**
* New File Wizard, page 2.
*
* @param pageName
*/
public NewFileWizardPage2(String pageName)
{
super(pageName);
setPageComplete(false);
setTitle(Messages.NewFileWizardPage2_3);
setDescription(Messages.NewFileWizardPage2_0);
setImageDescriptor( BPELUIPlugin.INSTANCE.getImageDescriptor( IBPELUIConstants.ICON_WIZARD_BANNER ));
}
/** (non-Javadoc)
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
*/
public void createControl (Composite parent) {
final NewFileWizard wiz = (NewFileWizard) getWizard();
Composite composite = new Composite(parent, SWT.NULL);
initializeDialogUnits(parent);
composite.setLayout(new GridLayout());
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
// Start Resource Variant
fResourceComposite = new FileSelectionGroup(composite,
new Listener() {
public void handleEvent(Event event) {
IResource resource = fResourceComposite.getSelectedResource();
setPageComplete(validatePage(resource));
if (resource instanceof IContainer)
wiz.setBPELContainer((IContainer)resource);
}
},
Messages.NewFileWizardPage2_1,
Messages.NewFileWizardPage2_2);
// https://issues.jboss.org/browse/JBIDE-8591
// update wizard so first page gets the new resource location
fResourceComposite.setSelectedResource(wiz.getBPELContainer());
setControl(composite);
}
private boolean validatePage(IResource resource){
if (resource instanceof IContainer) {
IContainer container = (IContainer)resource;
// https://issues.jboss.org/browse/JBIDE-8591
if ( container.findMember(processName +".bpel") != null ) { //$NON-NLS-1$
setMessage(Messages.NewFileWizardPage1_12, WizardPage.ERROR);
return false;
}
if (!BPELUtil.isBPELProject(resource.getProject())) {
setMessage(Messages.NewFileWizard_Not_A_BPELFaceted_Project, WizardPage.WARNING);
return true;
}
if (!container.equals(BPELUtil.getBPELContentFolder(container.getProject()))) {
setMessage(Messages.NewFileWizard_Not_A_BPELContent_Folder, WizardPage.WARNING);
return true;
}
setMessage(null);
return true;
}
return false;
}
/**
* Return the selected resource container for the BPEL project.
* @return the resource container.
*/
public IContainer getResourceContainer () {
IResource resource = fResourceComposite.getSelectedResource();
if (resource != null && resource instanceof IContainer) {
return (IContainer) resource;
}
return null;
}
public void setProcessName(String processName) {
this.processName = processName;
}
@Override
public boolean isPageComplete() {
IContainer container = getResourceContainer();
if (container==null)
return false;
if ( container.findMember(processName +".bpel") != null ) //$NON-NLS-1$
return false;
if (!super.isPageComplete())
return false;
return true;
}
}