blob: b5a8659a766ac85412f3c53675bfa3c91cee996b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 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
*******************************************************************************/
package org.eclipse.wst.wsdl.ui.internal.dialogs;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.wst.wsdl.Binding;
import org.eclipse.wst.wsdl.Definition;
import org.eclipse.wst.wsdl.Fault;
import org.eclipse.wst.wsdl.Input;
import org.eclipse.wst.wsdl.Output;
import org.eclipse.wst.wsdl.Part;
import org.eclipse.wst.wsdl.Port;
import org.eclipse.wst.wsdl.WSDLElement;
import org.eclipse.wst.wsdl.util.WSDLConstants;
import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
import org.eclipse.wst.wsdl.ui.internal.dialogs.types.WSDLComponentSelectionDialog;
import org.eclipse.wst.wsdl.ui.internal.dialogs.types.WSDLComponentSelectionProvider;
import org.eclipse.wst.wsdl.ui.internal.dialogs.types.WSDLSetComponentHelper;
public class InvokeSetDialog
{
String kind;
String newValue = "";
public void setReferenceKind(String kind)
{
this.kind = kind;
}
public String getValue()
{
return newValue;
}
public void run(Object input, IEditorPart editorPart)
{
WSDLComponentSelectionDialog dialog = null;
Shell shell = Display.getCurrent().getActiveShell();
IFile iFile = ((IFileEditorInput) editorPart.getEditorInput()).getFile();
Definition definition = ((WSDLElement) input).getEnclosingDefinition();
String property = "";
List lookupPaths = new ArrayList(2);
if (input instanceof Binding)
{
String dialogTitle = WSDLEditorPlugin.getWSDLString("_UI_TITLE_SPECIFY_PORTTYPE");
WSDLComponentSelectionProvider provider = new WSDLComponentSelectionProvider(iFile, definition, WSDLConstants.PORT_TYPE);
dialog = new WSDLComponentSelectionDialog(shell, dialogTitle, provider);
provider.setDialog(dialog);
property = "type";
}
else if (input instanceof Port)
{
String dialogTitle = WSDLEditorPlugin.getWSDLString("_UI_TITLE_SPECIFY_BINDING");
WSDLComponentSelectionProvider provider = new WSDLComponentSelectionProvider(iFile, definition, WSDLConstants.BINDING);
dialog = new WSDLComponentSelectionDialog(shell, dialogTitle, provider);
provider.setDialog(dialog);
property = "binding";
}
else if (input instanceof Part)
{
List validExtensions = new ArrayList(2);
validExtensions.add("wsdl");
validExtensions.add("xsd");
lookupPaths = new ArrayList(4);
WSDLComponentSelectionProvider provider = null;
if (kind.equalsIgnoreCase("type")) {
property = "";
String dialogTitle = WSDLEditorPlugin.getWSDLString("_UI_TITLE_SPECIFY_TYPE");
provider = new WSDLComponentSelectionProvider(iFile, definition, WSDLConstants.TYPE, validExtensions);
dialog = new WSDLComponentSelectionDialog(shell, dialogTitle, provider);
}
else {
property = "";
String dialogTitle = WSDLEditorPlugin.getWSDLString("_UI_TITLE_SPECIFY_ELEMENT");
provider = new WSDLComponentSelectionProvider(iFile, definition, WSDLConstants.ELEMENT, validExtensions);
dialog = new WSDLComponentSelectionDialog(shell, dialogTitle, provider);
}
provider.setDialog(dialog);
}
else if (input instanceof Input || input instanceof Output || input instanceof Fault)
{
String dialogTitle = WSDLEditorPlugin.getWSDLString("_UI_TITLE_SPECIFY_MESSAGE");
WSDLComponentSelectionProvider provider = new WSDLComponentSelectionProvider(iFile, definition, WSDLConstants.MESSAGE);
dialog = new WSDLComponentSelectionDialog(shell, dialogTitle, provider);
provider.setDialog(dialog);
property = "message";
}
dialog.setBlockOnOpen(true);
dialog.create();
if (dialog.open() == Window.OK) {
WSDLSetComponentHelper helper = new WSDLSetComponentHelper(iFile, definition);
if (kind != null && kind.equalsIgnoreCase("type")) {
helper.setXSDTypeComponent((Part) input, dialog.getSelection());
}
else if (kind != null && kind.equalsIgnoreCase("element")){
helper.setXSDElementComponent((Part) input, dialog.getSelection());
}
else {
helper.setWSDLComponent((WSDLElement) input, property, dialog.getSelection());
}
}
}
}