Skip to main content
summaryrefslogtreecommitdiffstats
blob: e506dd15b2387e88b7a4f64023244b3e257d523b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*******************************************************************************
 * Copyright (c) 2001, 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
 *******************************************************************************/
package org.eclipse.wst.wsdl.ui.internal.actions; 

import org.eclipse.ui.IEditorPart;
import org.eclipse.wst.wsdl.Definition;
import org.eclipse.wst.wsdl.ui.internal.InternalWSDLMultiPageEditor;
import org.eclipse.wst.wsdl.ui.internal.Messages;
import org.eclipse.wst.wsdl.ui.internal.util.WSDLEditorUtil;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

public class AddImportAction extends AddElementAction
{                              
  protected String namespace;
  protected String location;
  protected String elementDeclarationNamespacePrefix;

  public AddImportAction(IEditorPart part, Definition definition, Node parentNode, String prefix)
  {
	this(part, definition, parentNode, prefix, null, null);
  }
  
  public AddImportAction(IEditorPart part, Definition definition, Node parentNode, String prefix, String namespace, String location)
  {
    super(Messages.getString("_UI_ACTION_ADD_IMPORT"), "icons/import_obj.gif", parentNode, prefix, "import"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
	  setDefinition(definition);
	  setComputeTopLevelRefChild(true);
	  this.namespace = namespace;
	  this.location = location;
	  setEditorPart(part);
	  
	  if (part instanceof InternalWSDLMultiPageEditor) {
	  	document = ((IDOMModel) ((InternalWSDLMultiPageEditor) part).getModel()).getDocument();
	  }
  }
        
  protected Element createElement(String nodeName)
  {
  	if (elementDeclarationNamespacePrefix != null && namespace != null)
  	{ 
    	Element definitionElement = WSDLEditorUtil.getInstance().getElementForObject(definition);
    	if (definitionElement != null)
    	{    
	  	  definitionElement.setAttribute("xmlns:" + elementDeclarationNamespacePrefix, namespace); //$NON-NLS-1$
    	}      	
  	}
  	return super.createElement(nodeName);  
  }
  
  public void setElementDeclarationNamespacePrefix(String nsPrefix)
  {
  	this.elementDeclarationNamespacePrefix = nsPrefix;
  }
                   
  protected void addAttributes(Element newElement)
  {                                              
    newElement.setAttribute("namespace", namespace != null ? namespace : ""); //$NON-NLS-1$ //$NON-NLS-2$
    newElement.setAttribute("location", location != null ? location : ""); //$NON-NLS-1$ //$NON-NLS-2$
  }                                     
  
  public void performAddElement() {
  	if (parentNode == null || (document != null && document.getChildNodes().getLength() == 0)) {
  		createDefinitionStub();
  	}
  	
  	super.performAddElement();
  }
}

Back to the top