| /******************************************************************************* |
| * Copyright (c) 2006, 2012 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 java.util.List; |
| |
| import org.eclipse.bpel.ui.details.providers.ModelTreeLabelProvider; |
| import org.eclipse.bpel.ui.details.providers.PortTypeTreeContentProvider; |
| import org.eclipse.bpel.ui.details.tree.PortTypeTreeNode; |
| import org.eclipse.bpel.ui.util.BPELUtil; |
| import org.eclipse.jface.dialogs.IDialogSettings; |
| import org.eclipse.jface.dialogs.IInputValidator; |
| import org.eclipse.jface.viewers.ISelectionChangedListener; |
| import org.eclipse.jface.viewers.IStructuredSelection; |
| import org.eclipse.jface.viewers.SelectionChangedEvent; |
| import org.eclipse.jface.viewers.TreeViewer; |
| 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.Label; |
| import org.eclipse.swt.widgets.Listener; |
| import org.eclipse.swt.widgets.Text; |
| import org.eclipse.swt.widgets.Tree; |
| import org.eclipse.wst.wsdl.Definition; |
| import org.eclipse.wst.wsdl.PortType; |
| |
| /** |
| * @author Michal Chmielewski (michal.chmielewski@oracle.com) |
| * @date Aug 14, 2006 |
| * |
| */ |
| public class CreatePartnerLinkTypeWizardRolePage extends WizardPage { |
| |
| static final int SIZING_TEXT_FIELD_WIDTH = 250; |
| |
| Text roleName; |
| Tree portTypeTree; |
| TreeViewer portTypeViewer; |
| PortType mandatoryPortType; |
| PortType optionalPortType; |
| |
| Definition mandatoryWsdlDefinition; |
| List<Definition> optionalWsdlDefinitions; |
| |
| private CreatePartnerLinkTypeWizardRolePage fOtherRolePage; |
| |
| boolean fOptional = false; |
| |
| |
| /** |
| * @param pageName |
| */ |
| protected CreatePartnerLinkTypeWizardRolePage(String pageName) { |
| super(pageName); |
| // TODO Auto-generated constructor stub |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) |
| */ |
| public void createControl(Composite parent) { |
| Composite composite = new Composite(parent, SWT.NULL); |
| composite.setFont(parent.getFont()); |
| |
| initializeDialogUnits(parent); |
| |
| composite.setLayout(new GridLayout()); |
| composite.setLayoutData(new GridData(GridData.FILL_BOTH)); |
| |
| createRoleName(composite); |
| |
| setPageComplete(validatePage()); |
| |
| // no errors on opening up the wizard |
| setErrorMessage(null); |
| setMessage(null); |
| setControl(composite); |
| |
| // figure out the what needs to go |
| } |
| |
| Composite createRoleName ( Composite parent ) { |
| |
| Composite fields = new Composite(parent, SWT.NONE); |
| GridLayout layout = new GridLayout(); |
| layout.numColumns = 2; |
| fields.setLayout(layout); |
| fields.setLayoutData(new GridData(GridData.FILL_BOTH)); |
| |
| // Role Name |
| Label label = new Label(fields, SWT.NONE); |
| label.setText(Messages.CreatePartnerLinkTypeWizardRolePage_0); |
| label.setFont(parent.getFont()); |
| |
| // new project name entry field |
| roleName = new Text(fields, SWT.BORDER); |
| GridData data = new GridData(GridData.FILL_HORIZONTAL); |
| data.widthHint = SIZING_TEXT_FIELD_WIDTH; |
| roleName.setLayoutData(data); |
| roleName.setFont(parent.getFont()); |
| |
| roleName.addListener(SWT.Modify, new Listener() { |
| public void handleEvent(Event event) { |
| setPageComplete(validatePage()); |
| } |
| }); |
| // Role Name |
| |
| // portType |
| label = new Label(fields, SWT.NONE); |
| label.setText(Messages.CreatePartnerLinkTypeWizardRolePage_1); |
| label.setFont(parent.getFont()); |
| |
| // new project name entry field |
| portTypeTree = new Tree(fields, SWT.BORDER); |
| portTypeViewer = new TreeViewer( portTypeTree ); |
| portTypeViewer.setContentProvider( new PortTypeTreeContentProvider (true)); |
| portTypeViewer.setLabelProvider( new ModelTreeLabelProvider() ); |
| if (!fOptional) { |
| portTypeViewer.setInput( mandatoryWsdlDefinition ); |
| } |
| else { |
| portTypeViewer.setInput( optionalWsdlDefinitions ); |
| } |
| |
| data = new GridData(GridData.FILL_BOTH); |
| portTypeTree.setLayoutData(data); |
| portTypeTree.setFont(parent.getFont()); |
| |
| portTypeViewer.addSelectionChangedListener( new ISelectionChangedListener () { |
| |
| public void selectionChanged(SelectionChangedEvent event) { |
| IStructuredSelection ssel = (IStructuredSelection) event.getSelection(); |
| Object obj = ssel.getFirstElement(); |
| if (obj != null && obj instanceof PortTypeTreeNode) { |
| PortTypeTreeNode pttn = (PortTypeTreeNode) obj; |
| if (!fOptional) { |
| setMandatoryPortType( (PortType) pttn.getModelObject() ); |
| } |
| else { |
| setOptionalPortType((PortType) pttn.getModelObject()); |
| } |
| setPageComplete(validatePage()); |
| } else { |
| setMandatoryPortType(null); |
| setPageComplete(validatePage()); |
| } |
| } |
| }); |
| // portType |
| |
| |
| return fields; |
| } |
| |
| boolean validatePage () { |
| String roleNCName = roleName.getText(); |
| |
| if (fOptional) { |
| if (optionalPortType == null && roleNCName.length() == 0) { |
| setMessage(Messages.CreatePartnerLinkTypeWizardRolePage_2,INFORMATION); |
| return true; |
| } |
| } |
| else { |
| if (mandatoryPortType == null) { |
| setMessage(Messages.CreatePartnerLinkTypeWizardRolePage_3,ERROR); |
| return false; |
| } |
| } |
| |
| IInputValidator validator = BPELUtil.getNCNameValidator(); |
| String msg = validator.isValid( roleNCName ); |
| if (msg != null) { |
| setMessage(msg,ERROR); |
| return false; |
| } |
| |
| if (fOtherRolePage != null) { |
| if (roleNCName.equals( fOtherRolePage.getRoleName() )) { |
| setMessage(Messages.CreatePartnerLinkTypeWizardRolePage_4,ERROR); |
| return false; |
| } |
| } |
| |
| setMessage(null,NONE); |
| return true; |
| } |
| |
| public void setMandatoryDefinition ( Definition defn ) { |
| mandatoryWsdlDefinition = defn; |
| } |
| |
| /** |
| * @param portType2 |
| */ |
| |
| public void setMandatoryPortType(PortType pt) { |
| mandatoryPortType = pt; |
| } |
| |
| public PortType getMandatoryPortType () { |
| return mandatoryPortType; |
| } |
| |
| |
| public void setOptionalDefinitions ( List <Definition> defs ) { |
| optionalWsdlDefinitions = defs; |
| } |
| |
| public void setOptionalPortType(PortType pt) { |
| optionalPortType = pt; |
| } |
| |
| public PortType getOptionalPortType () { |
| return optionalPortType; |
| } |
| |
| public String getRoleName () { |
| return roleName.getText(); |
| } |
| |
| |
| /** |
| * @param rolePage2 |
| */ |
| public void setOtherRolePage(CreatePartnerLinkTypeWizardRolePage otherRole) { |
| fOtherRolePage = otherRole; |
| } |
| |
| /** |
| * @param b |
| */ |
| public void setOptional(boolean b) { |
| fOptional = b; |
| } |
| |
| |
| /** |
| * @return |
| */ |
| public boolean isSpecified() { |
| if (fOptional) { |
| if (optionalPortType == null) { |
| return false; |
| } |
| } |
| return isPageComplete(); |
| } |
| |
| } |