blob: 3e0531ae8fa58b3b02fe4a40cf9d62130da97352 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 IONA Technologies PLC
* 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:
* IONA Technologies PLC - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.ws.internal.cxf.creation.ui.widgets;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jst.ws.internal.cxf.core.CXFCorePlugin;
import org.eclipse.jst.ws.internal.cxf.core.model.Java2WSDataModel;
import org.eclipse.jst.ws.internal.cxf.core.utils.WSDLUtils;
import org.eclipse.jst.ws.internal.cxf.creation.ui.CXFCreationUIMessages;
import org.eclipse.jst.ws.internal.cxf.creation.ui.CXFCreationUIPlugin;
import org.eclipse.jst.ws.internal.cxf.ui.widgets.Java2WSWidgetFactory;
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.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.eclipse.wst.command.internal.env.ui.widgets.SimpleWidgetDataContributor;
import org.eclipse.wst.command.internal.env.ui.widgets.WidgetDataEvents;
/**
* @author sclarke
*/
@SuppressWarnings("restriction")
public class Java2WSConfigWidget extends SimpleWidgetDataContributor {
private IStatus WSDL_FILENAME_OK_STATUS = Status.OK_STATUS;
private IStatus WSDL_FILENAME_ERROR_STATUS = new Status(IStatus.ERROR, CXFCreationUIPlugin.PLUGIN_ID,
CXFCreationUIMessages.JAVA2WS_ENTER_VALID_WSDL_NAME);
private Button generateClientButton;
private Button generateServerButton;
private Button generateWraperFaultBeansButton;
private Button generateWSDLButton;
private Combo soapBindingCombo;
private Button createXSDImports;
private Text wsdlFileText;
private Java2WSDataModel model;
public Java2WSConfigWidget() {
}
public void setJava2WSDataModel(Java2WSDataModel model) {
this.model = model;
}
@Override
public void internalize() {
if (model.getCxfRuntimeVersion().compareTo(CXFCorePlugin.CXF_VERSION_2_1) >= 0) {
generateClientButton.setSelection(model.isGenerateClient());
generateServerButton.setSelection(model.isGenerateServer());
generateWraperFaultBeansButton.setSelection(model.isGenerateWrapperFaultBeans());
generateWSDLButton.setSelection(model.isGenerateWSDL());
enableWSDLGroup(model.isGenerateWSDL());
}
if (model.isSoap12Binding()) {
soapBindingCombo.setText("SOAP 1.2"); //$NON-NLS-1$
} else {
soapBindingCombo.setText("SOAP 1.1"); //$NON-NLS-1$
}
createXSDImports.setSelection(model.isGenerateXSDImports());
}
@Override
public WidgetDataEvents addControls(Composite parent, final Listener statusListener) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayout gridLayout = new GridLayout(2, false);
composite.setLayout(gridLayout);
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, false);
composite.setLayoutData(gridData);
Group java2wsGroup = null;
if (model.getCxfRuntimeVersion().compareTo(CXFCorePlugin.CXF_VERSION_2_1) >= 0) {
// Frontend
// Java2WSWidgetFactory.createFrontendLabel(composite);
//
// final Combo frontendCombo = Java2WSWidgetFactory.createFrontendCombo(composite, model);
// gridData = new GridData(SWT.FILL, SWT.FILL, true, false);
// frontendCombo.setLayoutData(gridData);
// Java2WS Group
java2wsGroup = new Group(composite, SWT.SHADOW_IN);
java2wsGroup.setText(CXFCreationUIMessages.JAVA2WS_GROUP_LABEL);
GridLayout java2wslayout = new GridLayout();
java2wslayout.numColumns = 3;
java2wslayout.marginHeight = 10;
java2wsGroup.setLayout(java2wslayout);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 2;
java2wsGroup.setLayoutData(gridData);
// Gen Client
generateClientButton = Java2WSWidgetFactory.createGenerateClientButton(java2wsGroup, model);
// Gen Server
generateServerButton = Java2WSWidgetFactory.createGenerateServerButton(java2wsGroup, model);
// Gen Wrapper and Fault Bean
generateWraperFaultBeansButton = Java2WSWidgetFactory.createGenerateWrapperFaultBeanButton(
java2wsGroup, model);
// Gen WSDL
generateWSDLButton = Java2WSWidgetFactory.createGenerateWSDLButton(java2wsGroup, model);
generateWSDLButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
enableWSDLGroup(generateWSDLButton.getSelection());
}
});
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 3;
generateWSDLButton.setLayoutData(gridData);
}
Group wsdlGroup = new Group(java2wsGroup == null ? composite : java2wsGroup, SWT.SHADOW_ETCHED_IN);
GridLayout wsdlGroupLayout = new GridLayout(2, false);
wsdlGroup.setLayout(wsdlGroupLayout);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.horizontalSpan = 3;
wsdlGroup.setLayoutData(gridData);
Java2WSWidgetFactory.createWSDLFileNameLabel(wsdlGroup);
wsdlFileText = Java2WSWidgetFactory.createWSDLFileNameText(wsdlGroup, model);
wsdlFileText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
statusListener.handleEvent(null);
}
});
gridData = new GridData(SWT.FILL, SWT.FILL, true, false);
wsdlFileText.setLayoutData(gridData);
Java2WSWidgetFactory.createSOAPBindingLabel(wsdlGroup);
soapBindingCombo = Java2WSWidgetFactory.createSOAPBingCombo(wsdlGroup, model);
gridData = new GridData(SWT.FILL, SWT.FILL, true, false);
soapBindingCombo.setLayoutData(gridData);
createXSDImports = Java2WSWidgetFactory.createXSDImportsButton(wsdlGroup, model);
gridData = new GridData(SWT.FILL, SWT.FILL, true, false);
gridData.horizontalSpan = 2;
createXSDImports.setLayoutData(gridData);
enableWSDLGroup(model.isGenerateWSDL());
return this;
}
private void enableWSDLGroup(boolean enable) {
wsdlFileText.setEnabled(enable);
soapBindingCombo.setEnabled(enable);
createXSDImports.setEnabled(enable);
}
@Override
public IStatus getStatus() {
return getWSDLFileNameStatus();
}
private IStatus getWSDLFileNameStatus() {
IStatus status = WSDL_FILENAME_OK_STATUS;
String wsdlFileName = wsdlFileText.getText();
if (!WSDLUtils.isValidWSDLFileName(wsdlFileName)) {
status = WSDL_FILENAME_ERROR_STATUS;
}
return status;
}
}