Java tutorial
/****************************************************************************** * Copyright (c) 2010-2013, Linagora * * 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: * Linagora - initial API and implementation *******************************************************************************/ package com.ebmwebsourcing.petals.services.validation.v11; import org.eclipse.bpel.common.wsdl.helpers.UriAndUrlHelper; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; 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.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import com.ebmwebsourcing.petals.common.internal.provisional.swt.TextWithButtonComposite; import com.ebmwebsourcing.petals.common.internal.provisional.utils.StringUtils; import com.ebmwebsourcing.petals.common.internal.provisional.utils.SwtFactory; import com.ebmwebsourcing.petals.services.su.wizards.pages.AbstractSuWizardPage; /** * Replace the default COMPONENT page. * @author Vincent Zurczak - EBM WebSourcing */ public class ValidationProvideSpecificPage extends AbstractSuWizardPage { private boolean createXsd = true, createWsdl = false; private String xsdURL, targetNamespace = "http://petals.ow2.org"; /* * (non-Javadoc) * @see org.eclipse.jface.dialogs.IDialogPage * #createControl(org.eclipse.swt.widgets.Composite) */ public void createControl(Composite parent) { // Create the composite container and define its layout. setDescription("Specify how to get the XML schema."); final Composite container = new Composite(parent, SWT.NONE); GridLayoutFactory.swtDefaults().extendedMargins(15, 15, 20, 0).applyTo(container); container.setLayoutData(new GridData(GridData.FILL_BOTH)); // Create the XML schema final Button createXsdButton = new Button(container, SWT.RADIO); createXsdButton.setText("Create a new XML schema."); Composite comp = new Composite(container, SWT.NONE); GridLayout layout = new GridLayout(2, false); layout.marginLeft = 15; comp.setLayout(layout); comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); final Label tnsLabel = new Label(comp, SWT.NONE); tnsLabel.setText("Target namespace:"); final Text tnsText = new Text(comp, SWT.SINGLE | SWT.BORDER); tnsText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); tnsText.setText(this.targetNamespace); tnsText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { ValidationProvideSpecificPage.this.targetNamespace = tnsText.getText().trim(); validate(); } }); // Import an existing XML schema final Button importXsdButton = new Button(container, SWT.RADIO); importXsdButton.setText("Import an existing XML schema."); comp = new Composite(container, SWT.NONE); layout = new GridLayout(3, false); layout.marginLeft = 15; comp.setLayout(layout); comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); final Label xsdLabel = new Label(comp, SWT.NONE); xsdLabel.setText("XML schema location:"); final TextWithButtonComposite twb = SwtFactory.createFileBrowser(comp, false, true, "XSD"); twb.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); twb.getText().addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { ValidationProvideSpecificPage.this.xsdURL = ((Text) e.widget).getText().trim(); validate(); } }); // Create a WSDL Button createWsdlButton = new Button(container, SWT.CHECK); createWsdlButton.setText("Create a default WSDL"); createWsdlButton.setSelection(this.createWsdl); GridData layoutData = new GridData(); layoutData.verticalIndent = 5; createWsdlButton.setLayoutData(layoutData); createWsdlButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { ValidationProvideSpecificPage.this.createWsdl = !ValidationProvideSpecificPage.this.createWsdl; validate(); } }); // Listeners SelectionListener commonListener = new SelectionListener() { public void widgetSelected(SelectionEvent e) { widgetDefaultSelected(e); } public void widgetDefaultSelected(SelectionEvent e) { ValidationProvideSpecificPage.this.createXsd = createXsdButton.getSelection(); xsdLabel.setEnabled(!ValidationProvideSpecificPage.this.createXsd); twb.getText().setEnabled(!ValidationProvideSpecificPage.this.createXsd); twb.getButton().setEnabled(!ValidationProvideSpecificPage.this.createXsd); tnsLabel.setEnabled(ValidationProvideSpecificPage.this.createXsd); tnsText.setEnabled(ValidationProvideSpecificPage.this.createXsd); validate(); } }; createXsdButton.addSelectionListener(commonListener); importXsdButton.addSelectionListener(commonListener); // Initialize the page createXsdButton.setSelection(this.createXsd); createXsdButton.notifyListeners(SWT.Selection, new Event()); if (getErrorMessage() != null) { updateStatus(null); setPageComplete(false); } setControl(container); } /* (non-Javadoc) * @see com.ebmwebsourcing.petals.services.su.wizards.pages.AbstractSuPage * #validate() */ @Override public boolean validate() { boolean valid = true; if (!this.createXsd) { if (StringUtils.isEmpty(this.xsdURL)) { updateStatus("You must select the XML schema to import."); valid = false; } else { try { UriAndUrlHelper.urlToUri(this.xsdURL); } catch (Exception e) { updateStatus("The URL for the XML schema is not valid."); valid = false; } } } else { if (StringUtils.isEmpty(this.targetNamespace)) { updateStatus("You must define the target name space of the XML schema to create."); valid = false; } } if (valid) updateStatus(null); if (this.createWsdl && !this.createXsd) setMessage("The generated WSDL might not reflect the content of the imported XML schema.", IMessageProvider.WARNING); else setMessage(null, IMessageProvider.WARNING); return valid; } /** * @return the createXsd */ public boolean isCreateXsd() { return this.createXsd; } /** * @return the createWsdl */ public boolean isCreateWsdl() { return this.createWsdl; } /** * @return the xsdURL */ public String getXsdURL() { return this.xsdURL; } /** * @param xsdURL the xsdURL to set */ public void setXsdURL(String xsdURL) { this.xsdURL = xsdURL; } /** * @return the targetNamespace */ public String getTargetNamespace() { return this.targetNamespace; } /** * @param targetNamespace the targetNamespace to set */ public void setTargetNamespace(String targetNamespace) { this.targetNamespace = targetNamespace; } }