diff options
Diffstat (limited to 'bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/OpenOnSelectionHelper.java')
-rw-r--r-- | bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/OpenOnSelectionHelper.java | 404 |
1 files changed, 0 insertions, 404 deletions
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/OpenOnSelectionHelper.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/OpenOnSelectionHelper.java deleted file mode 100644 index 118dd7bdd..000000000 --- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/OpenOnSelectionHelper.java +++ /dev/null @@ -1,404 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2007 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.util; - -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Method; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.content.IContentType; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IEditorReference; -import org.eclipse.ui.IFileEditorInput; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.part.FileEditorInput; -import org.eclipse.wst.wsdl.Binding; -import org.eclipse.wst.wsdl.Definition; -import org.eclipse.wst.wsdl.Fault; -import org.eclipse.wst.wsdl.Import; -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.internal.impl.ImportImpl; -import org.eclipse.wst.wsdl.internal.util.WSDLSwitch; -import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin; -import org.eclipse.wst.wsdl.util.WSDLConstants; -import org.eclipse.wst.xsd.ui.internal.adt.editor.ADTReadOnlyFileEditorInput; -import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin; -import org.eclipse.wst.xsd.ui.internal.editor.XSDHyperlinkTargetLocator; -import org.eclipse.xsd.XSDConcreteComponent; -import org.eclipse.xsd.XSDPackage; -import org.w3c.dom.Attr; -import org.w3c.dom.Element; -import org.w3c.dom.Node; - - -public class OpenOnSelectionHelper extends WSDLSwitch -{ - Definition definition; - Attr attr = null; - Element element = null; - - public OpenOnSelectionHelper(Definition definition) - { - this.definition = definition; - } - - public void openEditor(EObject eObject) - { - String[] array = computeSpecification(eObject); - if (array != null) - { - openEditor(array[0], array[1]); - } - } - - public void openEditor(Node node) - { - String[] array = computeSpecification(node); - if (array != null) - { - openEditor(array[0], array[1]); - } - } - - protected void openEditor(String resource, String spec) - { - String pattern = "platform:/resource"; //$NON-NLS-1$ - IWorkbenchPage workbenchPage = WSDLEditorPlugin.getInstance().getWorkbench().getActiveWorkbenchWindow().getActivePage(); - IEditorPart editorPart = workbenchPage.getActiveEditor(); - String currentEditorId = editorPart.getEditorSite().getId(); - - if (resource != null && resource.startsWith(pattern)) - { - try - { - Path path = new Path(resource.substring(pattern.length())); - IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); - - - if (editorPart.getEditorInput() instanceof IFileEditorInput && - ((IFileEditorInput)editorPart.getEditorInput()).getFile().equals(file)) - { - workbenchPage.getNavigationHistory().markLocation(editorPart); - } - else - { - try - { - // TODO: Use content type as below - if (resource.endsWith("xsd")) //$NON-NLS-1$ - { - editorPart = workbenchPage.openEditor(new FileEditorInput(file), WSDLEditorPlugin.XSD_EDITOR_ID); - } - else - { - // Since we are already in the wsdleditor - editorPart = workbenchPage.openEditor(new FileEditorInput(file), editorPart.getEditorSite().getId()); - } - } - catch (PartInitException initEx) - { - } - } - - Class theClass = editorPart.getClass(); - Class[] methodArgs = { String.class }; - Method method = theClass.getMethod("openOnSelection", methodArgs); //$NON-NLS-1$ - Object args[] = { spec }; - method.invoke(editorPart, args); - workbenchPage.getNavigationHistory().markLocation(editorPart); - } - catch (Exception e) - { - } - } - else if (resource != null && resource.startsWith("http")) - { - IEditorPart newEditorPart = null; - boolean doOpenWsdlEditor = true; - if (resource.endsWith("xsd")) //$NON-NLS-1$ - { - doOpenWsdlEditor = false; - } - try - { - IEditorReference[] refs = workbenchPage.getEditorReferences(); - int length = refs.length; - // Need to find if an editor on that schema has already been opened - for (int i = 0; i < length; i++) - { - IEditorInput input = refs[i].getEditorInput(); - if (input instanceof ADTReadOnlyFileEditorInput) - { - ADTReadOnlyFileEditorInput readOnlyEditorInput = (ADTReadOnlyFileEditorInput) input; - if (readOnlyEditorInput.getUrlString().equals(resource) && - (!doOpenWsdlEditor && readOnlyEditorInput.getEditorID().equals(WSDLEditorPlugin.XSD_EDITOR_ID) - || (doOpenWsdlEditor && readOnlyEditorInput.getEditorID().equals(WSDLEditorPlugin.WSDL_EDITOR_ID)))) - { - newEditorPart = refs[i].getEditor(true); - workbenchPage.activate(refs[i].getPart(true)); - break; - } - } - } - if (newEditorPart == null) - { - ADTReadOnlyFileEditorInput readOnlyStorageEditorInput = new ADTReadOnlyFileEditorInput(resource); - IContentType contentType = null; - InputStream iStream = null; - try - { - iStream = readOnlyStorageEditorInput.getStorage().getContents(); - contentType = Platform.getContentTypeManager().findContentTypeFor(iStream, resource); - } - catch (CoreException coreException) - { - - } - finally - { - } - // content type more reliable check - if (contentType != null && contentType.equals(XSDEditorPlugin.XSD_CONTENT_TYPE_ID) || resource.endsWith("xsd")) //$NON-NLS-1$ - { - readOnlyStorageEditorInput.setEditorID(WSDLEditorPlugin.XSD_EDITOR_ID); - workbenchPage.openEditor(readOnlyStorageEditorInput, WSDLEditorPlugin.XSD_EDITOR_ID, true, 0); //$NON-NLS-1$ - } - else - { - readOnlyStorageEditorInput.setEditorID(currentEditorId); - workbenchPage.openEditor(readOnlyStorageEditorInput, currentEditorId, true, 0); //$NON-NLS-1$ - } - } - } - catch (PartInitException pie) - { - } - catch (IOException ioe) - { - } - } - } - - public String[] computeSpecification(EObject eObject) - { - String[] result = null; - Object referencedObject = doSwitch(eObject); - if (referencedObject instanceof EObject) - { - EObject referencedEObject = (EObject)referencedObject; - if (referencedEObject != eObject || - referencedEObject.eResource() != definition.eResource()) - { - - Resource resource = referencedEObject.eResource(); - if (resource != null) - { - result = new String[2]; - result[0] = resource.getURI().toString(); - result[1] = resource.getURIFragment(referencedEObject); - } - } - } - return result; - } - - public String[] computeSpecification(Node node) - { - String[] result = null; - switch (node.getNodeType()) - { - case Node.ELEMENT_NODE : - { - element = (Element)node; - break; - } - case Node.ATTRIBUTE_NODE : - { - attr = (Attr)node; - element = attr.getOwnerElement(); - break; - } - case Node.TEXT_NODE : - { - Node parent = node.getParentNode(); - element = (parent instanceof Element) ? (Element)parent : null; - break; - } - } - if (element != null) - { - Object object = WSDLEditorUtil.getInstance().findModelObjectForElement(definition, element); - if (object instanceof EObject) - { - result = computeSpecification((EObject)object); - } - } - return result; - } - - public Object caseBinding(Binding binding) - { - Object result = binding; - if (isMatchingAttribute(WSDLConstants.TYPE_ATTRIBUTE)) - { - result = binding.getEPortType(); - } - return result; - } - - public Object caseDefinition(Definition definition) - { - return definition; - } - - public Object casePart(Part part) - { - Object result = part; - if (attr != null) - { - if (isMatchingAttribute(WSDLConstants.TYPE_ATTRIBUTE)) - { - result = part.getTypeDefinition(); - } - else if (isMatchingAttribute(WSDLConstants.ELEMENT_ATTRIBUTE)) - { - result = part.getElementDeclaration(); - } - } - else if (part.getEnclosingDefinition() == definition) - { - result = part.getTypeDefinition() != null ? (Object)part.getTypeDefinition() : (Object)part.getElementDeclaration(); - } - return result; - } - - public Object casePort(Port port) - { - Object result = port; - if (isMatchingAttribute(WSDLConstants.BINDING_ATTRIBUTE)) - { - result = port.getEBinding(); - - } - return result; - } - - public Object caseFault(Fault fault) - { - Object result = fault; - if (isMatchingAttribute(WSDLConstants.MESSAGE_ATTRIBUTE)) - { - result = fault.getMessage(); - } - return result; - } - - public Object caseInput(Input input) - { - Object result = input; - if (isMatchingAttribute(WSDLConstants.MESSAGE_ATTRIBUTE)) - { - result = input.getMessage(); - } - return result; - } - - public Object caseOutput(Output output) - { - Object result = output; - - if (isMatchingAttribute(WSDLConstants.MESSAGE_ATTRIBUTE)) - { - result = output.getMessage(); - } - return result; - } - - public Object caseImport(Import theImport) - { - Object result = null; - - // For now, look at the file extension. When bugzilla 118293 is fixed, look at - // the Import's eDefinition and eSchema instead. - Path importPath = new Path(theImport.getLocationURI()); - String extension = importPath.getFileExtension(); - if (extension.equalsIgnoreCase("xsd")) { //$NON-NLS-1$ - if (theImport.getESchema() == null) { - ((ImportImpl)theImport).importDefinitionOrSchema(); - } - - result = theImport.getESchema(); - } - else if (extension.equalsIgnoreCase("wsdl") || extension.endsWith("wsdl")) { //$NON-NLS-1$ - if (theImport.getEDefinition() == null) { - ((ImportImpl)theImport).importDefinitionOrSchema(); - } - - result = theImport.getEDefinition(); - } - - -// if (theImport.getESchema() != null) { -// result = theImport.getESchema(); -// } -// else if (theImport.getEDefinition() != null) { -// result = theImport.getEDefinition(); -// } -// else { -// // Need to resolve imports because the model doesn't automatically -// // do it for us -// ((ImportImpl)theImport).importDefinitionOrSchema(); -// result = theImport.getESchema(); -// } - - return result; - } - - public Object caseWSDLElement(WSDLElement wsdlElement) - { - return wsdlElement; - } - - private boolean isMatchingAttribute(String value) - { - return attr != null && value.equals(attr.getName()); - } - - public Object defaultCase(EObject object) - { - EClass theEClass = object.eClass(); - - if (theEClass.eContainer() == XSDPackage.eINSTANCE) - { - // Handle navigation between inline schema components. - - XSDHyperlinkTargetLocator xsdHyperlinkTargetLocator = new XSDHyperlinkTargetLocator(); - String attributeName = attr != null ? attr.getName(): null; - return xsdHyperlinkTargetLocator.locate((XSDConcreteComponent) object, attributeName); - } - - return super.defaultCase(object); - } -} |