blob: 0ab663bd540f1efebdf81504740603d18668e253 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2006 IBM 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:
* IBM Corporation - initial API and implementation
* yyyymmdd bug Email and other contact information
* -------- -------- -----------------------------------------------------------
* 20060321 128827 joan - Joan Haggarty, remove redundant wsdl URI, folder and file controls
*******************************************************************************/
package org.eclipse.jst.ws.internal.axis.creation.ui.widgets.bean;
import java.util.Enumeration;
import java.util.Hashtable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.jst.ws.internal.axis.consumption.core.common.JavaWSDLParameter;
import org.eclipse.jst.ws.internal.axis.creation.ui.AxisCreationUIMessages;
import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
import org.eclipse.jst.ws.internal.ui.common.UIUtils;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
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.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.PlatformUI;
import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
import org.eclipse.wst.command.internal.env.ui.widgets.SimpleWidgetDataContributor;
import org.eclipse.wst.command.internal.env.ui.widgets.WidgetDataEvents;
public class BeanConfigWidget extends SimpleWidgetDataContributor
{
private Button rpcEncodedButton_;
private Button rpcLiteralButton_;
private Button docLiteralButton_;
private Listener statusListener_;
private JavaWSDLParameter javaParameter_;
/* CONTEXT_ID PBCF0001 for the Bean Config Page */
private final String INFOPOP_PBCF_PAGE = "PBCF0001"; //$NON-NLS-1$
private String wsdlFolder_;
private Text wsdlFileText_;
/* CONTEXT_ID PBCF0007 for the WSDL File field of the Bean Config Page */
private final String INFOPOP_PBCF_TEXT_WSDL_FILE = "PBCF0007"; //$NON-NLS-1$
private Tree methodsTree_;
/* CONTEXT_ID PBME0002 for the Methods tree of the Bean Methods Page */
private final String INFOPOP_PBME_TREE_METHODS = "PBME0002"; //$NON-NLS-1$
private Button selectAllMethodsButton_;
/* CONTEXT_ID PBME0010 for the Select All button of the Bean Methods Page */
private final String INFOPOP_PBME_BUTTON_SELECT_ALL = "PBME0010"; //$NON-NLS-1$
private Button deselectAllMethodsButton_;
/* CONTEXT_ID PBME0011 for the Deselect All button of the Bean Methods Page */
private final String INFOPOP_PBME_BUTTON_DESELECT_ALL = "PBME0011"; //$NON-NLS-1$
private Button showMappingsCheckbox_;
/* CONTEXT_ID PBCF0016 for the Show Mappings checkbox of the Bean Methods Page */
private String INFOPOP_P2N_SHOW_MAPPINGS = "PBCF0016"; //$NON-NLS-1$
public WidgetDataEvents addControls( Composite parent, Listener statusListener )
{
String pluginId_ = "org.eclipse.jst.ws.axis.creation.ui";
UIUtils uiUtils = new UIUtils( pluginId_ );
UIUtils baseConUiUtils = new UIUtils( pluginId_ );
statusListener_ = statusListener;
parent.setToolTipText( AxisCreationUIMessages.TOOLTIP_PBCF_PAGE );
PlatformUI.getWorkbench().getHelpSystem().setHelp( parent, pluginId_ + "." + INFOPOP_PBCF_PAGE );
Composite configGroup = uiUtils.createComposite( parent, 2 );
wsdlFileText_ = uiUtils.createText( configGroup, AxisCreationUIMessages.LABEL_OUTPUT_FILE_NAME,
AxisCreationUIMessages.TOOLTIP_PBCF_TEXT_WSDL_FILE,
INFOPOP_PBCF_TEXT_WSDL_FILE,
SWT.SINGLE | SWT.BORDER );
wsdlFileText_.addListener( SWT.Modify, statusListener );
// TODO this group has no TOOLTIP or INFOPOP.
Group methodsGroup = baseConUiUtils.createGroup( parent, ConsumptionUIMessages.LABEL_METHODS, null, null );
methodsGroup.setLayoutData( uiUtils.createFillAll() );
GridLayout layout = new GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
methodsGroup.setLayout( layout );
methodsTree_ = uiUtils.createTree( methodsGroup, AxisCreationUIMessages.TOOLTIP_PBME_TREE_METHODS,
INFOPOP_PBME_TREE_METHODS,
SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.CHECK );
methodsTree_.addListener( SWT.Selection, statusListener );
Composite selectButtons = uiUtils.createComposite( methodsGroup, 2 );
selectAllMethodsButton_
= baseConUiUtils.createPushButton( selectButtons, ConsumptionUIMessages.BUTTON_SELECT_ALL,
ConsumptionUIMessages.TOOLTIP_PBME_BUTTON_SELECT_ALL,
INFOPOP_PBME_BUTTON_SELECT_ALL );
selectAllMethodsButton_.addSelectionListener( new SelectionAdapter()
{
public void widgetSelected( SelectionEvent evt )
{
handleSelectAll( true );
}
});
deselectAllMethodsButton_
= baseConUiUtils.createPushButton( selectButtons, ConsumptionUIMessages.BUTTON_DESELECT_ALL,
ConsumptionUIMessages.TOOLTIP_PBME_BUTTON_DESELECT_ALL,
INFOPOP_PBME_BUTTON_DESELECT_ALL );
deselectAllMethodsButton_.addSelectionListener( new SelectionAdapter()
{
public void widgetSelected( SelectionEvent evt )
{
handleSelectAll( false );
}
});
// TODO this group has no TOOLTIP or INFOPOP.
Group styleGroup = uiUtils.createGroup( parent, AxisCreationUIMessages.LABEL_STYLE_USE, null, null );
// TODO radio buttons have no TOOLTIP or INFOPOP.
docLiteralButton_ = uiUtils.createRadioButton( styleGroup, AxisCreationUIMessages.STYLE_DOC_LITERAL, null, null );
rpcLiteralButton_ = uiUtils.createRadioButton( styleGroup, AxisCreationUIMessages.STYLE_RPC_LITERAL, null, null );
rpcEncodedButton_ = uiUtils.createRadioButton( styleGroup, AxisCreationUIMessages.STYLE_RPC_ENCODED, null, null );
showMappingsCheckbox_ = uiUtils.createCheckbox( parent, AxisCreationUIMessages.LABEL_EXPLORE_MAPPINGS_BEAN2XML,
AxisCreationUIMessages.TOOLTIP_P2N_SHOW_MAPPINGS,
INFOPOP_P2N_SHOW_MAPPINGS );
return this;
}
public void handleSelectAll( boolean value )
{
TreeItem[] items = methodsTree_.getItems();
for( int i = 0; i < items.length; i++ )
{
items[i].setChecked(value);
}
statusListener_.handleEvent( null );
}
public void setCustomizeServiceMappings( boolean value )
{
showMappingsCheckbox_.setSelection( value );
}
public boolean getCustomizeServiceMappings()
{
return showMappingsCheckbox_ == null ? false : showMappingsCheckbox_.getSelection();
}
public void setJavaParameter( JavaWSDLParameter javaParameter )
{
javaParameter_ = javaParameter;
String wsdlLocation = javaParameter.getOutputWsdlLocation();
IPath wsdlPath = new Path( wsdlLocation );
wsdlFolder_ = wsdlPath.removeLastSegments(1).toString();
wsdlFileText_.setText(wsdlPath.lastSegment());
methodsTree_.removeAll();
Hashtable methods = javaParameter.getMethods();
Enumeration e = methods.keys();
while( e.hasMoreElements() )
{
String name = (String) e.nextElement();
TreeItem item = new TreeItem(methodsTree_, SWT.NULL);
item.setData(name);
item.setText(name);
item.setChecked((((Boolean) methods.get(name)).booleanValue()));
}
TreeItem[] items = methodsTree_.getItems();
if( items.length > 0 )
{
methodsTree_.setSelection( new TreeItem[]{ items[0] } );
}
String style = javaParameter.getStyle();
if( style.equals( JavaWSDLParameter.STYLE_RPC ) )
{
rpcEncodedButton_.setSelection(true);
}
else if( style.equals( JavaWSDLParameter.STYLE_DOCUMENT ) )
{
rpcLiteralButton_.setSelection(true);
}
else
{
docLiteralButton_.setSelection(true);
}
}
public JavaWSDLParameter getJavaParameter()
{
IPath wsdlPath
= new Path( wsdlFolder_.trim() ).append( wsdlFileText_.getText().trim() );
// TODO Do we need to go to the eclipse file system??
//String wsdlLocation = workspace.getFile(wsdlPath).getLocation().toString();
String wsdlLocation = wsdlPath.toString();
javaParameter_.setOutputWsdlLocation(wsdlLocation);
javaParameter_.setInputWsdlLocation(wsdlLocation);
Hashtable methods = new Hashtable();
TreeItem[] items = methodsTree_.getItems();
for( int i = 0; i < items.length; i++ )
{
TreeItem item = items[i];
methods.put((String)item.getData(), new Boolean(item.getChecked()));
}
javaParameter_.setMethods(methods);
if( rpcEncodedButton_.getSelection())
{
javaParameter_.setStyle(JavaWSDLParameter.STYLE_RPC);
javaParameter_.setUse(JavaWSDLParameter.USE_ENCODED);
}
else if( rpcLiteralButton_.getSelection())
{
javaParameter_.setStyle(JavaWSDLParameter.STYLE_DOCUMENT);
javaParameter_.setUse(JavaWSDLParameter.USE_LITERAL);
}
else
{
javaParameter_.setStyle(JavaWSDLParameter.STYLE_WRAPPED);
javaParameter_.setUse(JavaWSDLParameter.USE_LITERAL);
}
return javaParameter_;
}
/* (non-Javadoc)
* @see org.eclipse.wst.command.env.ui.widgets.WidgetContributor#getStatus()
*/
public IStatus getStatus()
{
IStatus result = null;
if( wsdlFileText_.getText().equals( "" ) )
{
result = StatusUtils.errorStatus( AxisCreationUIMessages.PAGE_MSG_NO_FILE_SPECIFIED );
}
else
{
TreeItem[] items = methodsTree_.getItems();
boolean itemSelected = false;
for( int index = 0; index < items.length; index++ )
{
if( items[index].getChecked() )
{
itemSelected = true;
break;
}
}
if( !itemSelected )
{
result = StatusUtils.errorStatus( AxisCreationUIMessages.PAGE_MSG_NO_METHOD_SELECTED );
}
}
return result;
}
}