Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetBaseTypeAction.java')
-rw-r--r--bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetBaseTypeAction.java383
1 files changed, 0 insertions, 383 deletions
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetBaseTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetBaseTypeAction.java
deleted file mode 100644
index 31d9753d26..0000000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetBaseTypeAction.java
+++ /dev/null
@@ -1,383 +0,0 @@
-/*******************************************************************************
- * 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.xsd.ui.internal.actions;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.wst.xsd.ui.internal.widgets.SetBaseTypeDialog;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class SetBaseTypeAction extends Action
-{
- XSDSchema xsdSchema;
- Element element;
- String type = "";
- String derivedByString = "";
- XSDDOMHelper domHelper;
-
- /**
- * Constructor for SetBaseTypeAction.
- */
- public SetBaseTypeAction()
- {
- super();
- domHelper = new XSDDOMHelper();
- }
- /**
- * Constructor for SetBaseTypeAction.
- * @param arg0
- */
- public SetBaseTypeAction(String arg0)
- {
- super(arg0);
- domHelper = new XSDDOMHelper();
- }
- /**
- * Constructor for SetBaseTypeAction.
- * @param arg0
- * @param arg1
- */
- public SetBaseTypeAction(String arg0, ImageDescriptor arg1)
- {
- super(arg0, arg1);
- domHelper = new XSDDOMHelper();
- }
- /**
- * Constructor for SetBaseTypeAction.
- * @param arg0
- * @param arg1
- */
- public SetBaseTypeAction(String arg0, int arg1)
- {
- super(arg0, arg1);
- domHelper = new XSDDOMHelper();
- }
-
-
- public void setXSDSchema(XSDSchema schema)
- {
- this.xsdSchema = schema;
- }
-
- public void setComplexTypeElement(Element element)
- {
- this.element = element;
- }
-
- public void setType(String type)
- {
- this.type = type;
- }
-
- public void setDerivedBy(String derivedByString)
- {
- this.derivedByString = derivedByString;
- }
-
- public void run()
- {
- Display display = Display.getCurrent();
- // if it is null, get the default one
- display = display == null ? Display.getDefault() : display;
- Shell parentShell = display.getActiveShell();
-
- SetBaseTypeDialog dialog = new SetBaseTypeDialog(parentShell, xsdSchema, element);
- dialog.setBlockOnOpen(true);
-
- Element contentModelElement = domHelper.getContentModelFromParent(element);
- if (contentModelElement != null)
- {
- // to set the current values to show in the dialog
- if (XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
- {
- Element derivedByElement = domHelper.getDerivedByElementFromComplexType(element);
- if (derivedByElement != null)
- {
- String currentBaseType = derivedByElement.getAttribute(XSDConstants.BASE_ATTRIBUTE);
- dialog.setCurrentBaseType(currentBaseType);
- dialog.setCurrentDerivedBy(derivedByElement.getLocalName());
- }
- else
- {
- dialog.setCurrentBaseType("");
- dialog.setCurrentDerivedBy("");
- }
- }
- }
-
- int result = dialog.open();
-
- if (result == Window.OK)
- {
- type = dialog.getBaseType();
- derivedByString = dialog.getDerivedBy();
- performAction();
- }
- }
-
- XSDTypeDefinition newTypeDefinition = null;
- public XSDTypeDefinition getXSDTypeDefinition()
- {
- return newTypeDefinition;
- }
-
- public void performAction()
- {
- TypesHelper helper = new TypesHelper(xsdSchema);
-
- XSDConcreteComponent xsdComp = xsdSchema.getCorrespondingComponent(element);
-
- Element contentModelElement = domHelper.getContentModelFromParent(element);
- boolean contentModelExists = true;
- if (contentModelElement == null)
- {
- contentModelExists = false;
- }
-
-// get XSD component of the new type chosen
- newTypeDefinition = null;
- for (Iterator i = xsdSchema.getTypeDefinitions().iterator(); i.hasNext(); )
- {
- XSDTypeDefinition typeDef = (XSDTypeDefinition)i.next();
- if (typeDef.getQName().equals(type))
- {
- newTypeDefinition = typeDef;
- break;
- }
- }
-
- boolean needsComplexContent = false;
- boolean needsSimpleContent = false;
-
- if (helper.getBuiltInTypeNamesList().contains(type) ||
- helper.getUserSimpleTypeNamesList().contains(type))
-// if (newTypeDefinition instanceof XSDSimpleTypeDefinition)
- {
- needsSimpleContent = true;
- }
- else if (newTypeDefinition instanceof XSDComplexTypeDefinition)
- {
- needsComplexContent = true;
-// XSDComplexTypeDefinition newCTObj = (XSDComplexTypeDefinition)newTypeDefinition;
-// XSDContentTypeCategory category = newCTObj.getContentTypeCategory();
- }
-
- beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_BASE_TYPE"), element);
- String prefix = element.getPrefix();
- prefix = (prefix == null) ? "" : (prefix + ":");
-
- DOMAttribute attr = new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, type);
- if (!contentModelExists) // if no content model exists, then add the new nodes
- {
- if (helper.getBuiltInTypeNamesList().contains(type) ||
- helper.getUserSimpleTypeNamesList().contains(type))
- {
- updateModelAndDerivedByKind(prefix + XSDConstants.SIMPLECONTENT_ELEMENT_TAG, prefix + XSDConstants.EXTENSION_ELEMENT_TAG, attr);
- }
- else if (helper.getUserComplexTypeNamesList().contains(type))
- {
- if (derivedByString.equals("")) // default
- {
- derivedByString = XSDConstants.EXTENSION_ELEMENT_TAG;
- }
- Element derivedByElement = updateModelAndDerivedByKind(prefix + XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, prefix + derivedByString, attr);
- Element newModelGroupElement = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SEQUENCE_ELEMENT_TAG);
- derivedByElement.appendChild(newModelGroupElement);
- formatChild(derivedByElement);
- }
- }
- else // else there is a content model
- {
- if (type.equals("")) // the chosen type is blank, ie. there is no base type
- {
- Element derivedByElement = domHelper.getDerivedByElementFromComplexType(element);
- Element sourceContentModelElement = domHelper.getContentModelFromParent(derivedByElement);
- // Retain the content model if there is one from the complex or simple content derive by element
- if (XSDDOMHelper.inputEquals(sourceContentModelElement, XSDConstants.SEQUENCE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(sourceContentModelElement, XSDConstants.CHOICE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(sourceContentModelElement, XSDConstants.ALL_ELEMENT_TAG, false))
- {
- Element newNode = domHelper.cloneElement(element, sourceContentModelElement);
- element.replaceChild(newNode, contentModelElement);
- formatChild(element);
- }
- else // otherwise just add the nodes
- {
- XSDDOMHelper.removeNodeAndWhitespace(contentModelElement);
- Element newSequenceElement = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SEQUENCE_ELEMENT_TAG);
- element.appendChild(newSequenceElement);
- formatChild(newSequenceElement);
- }
- }
- else // a base type is specified
- {
- Element sequenceChoiceOrAllElement = null; // copy the model to reposition it off of the new derived by element
- if (XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.SEQUENCE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.CHOICE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.ALL_ELEMENT_TAG, false))
- {
- sequenceChoiceOrAllElement = domHelper.cloneElement(element, contentModelElement);
- }
-
- if (needsComplexContent)
- {
- if (!(XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false)))
- {
- domHelper.changeContentModel(element, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, sequenceChoiceOrAllElement);
- contentModelElement = domHelper.getContentModelFromParent(element);
- }
- }
- if (needsSimpleContent)
- {
- if (!(XSDDOMHelper.inputEquals(contentModelElement, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false)))
- {
- // we don't want to append the element content to a simple content
- sequenceChoiceOrAllElement = null;
- domHelper.changeContentModel(element, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, sequenceChoiceOrAllElement);
- contentModelElement = domHelper.getContentModelFromParent(element);
- }
- }
-
- Element derivedByElement = domHelper.getDerivedByElementFromComplexType(element);
- if (derivedByElement == null)
- {
- if (derivedByString == null || (derivedByString != null && derivedByString.equals("")))
- {
- derivedByString = XSDConstants.EXTENSION_ELEMENT_TAG; // since there is no derivedByElement
- }
- derivedByElement = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, derivedByString);
- contentModelElement.appendChild(derivedByElement);
- formatChild(contentModelElement);
- if (sequenceChoiceOrAllElement != null)
- {
- derivedByElement.appendChild(sequenceChoiceOrAllElement);
- formatChild(derivedByElement);
- }
- }
- else
- {
- if (helper.getBuiltInTypeNamesList().contains(type) ||
- helper.getUserSimpleTypeNamesList().contains(type))
- {
- derivedByString = XSDConstants.EXTENSION_ELEMENT_TAG;
- Element aContentModelElement = domHelper.getContentModelFromParent(derivedByElement);
- if (aContentModelElement != null)
- {
- XSDDOMHelper.removeNodeAndWhitespace(aContentModelElement);
- }
- }
- domHelper.changeDerivedByType(contentModelElement, derivedByString, type);
- }
- derivedByElement.setAttribute(attr.getName(), attr.getValue());
- }
- }
-
- xsdComp.setElement(element);
- endRecording(element);
- }
-
- private Element updateModelAndDerivedByKind(String modelType, String derivedByKind, DOMAttribute attr)
- {
- Element newContentModelElement = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, modelType);
- element.appendChild(newContentModelElement);
-
- Element newDerivedByElement = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, derivedByKind);
- newContentModelElement.appendChild(newDerivedByElement);
-
- newDerivedByElement.setAttribute(attr.getName(), attr.getValue());
-
- NodeList children = element.getChildNodes();
- int length = children.getLength();
- ArrayList nodesToRemove = new ArrayList();
- for (int i = 0; i < length; i++)
- {
- Node node = children.item(i);
- if (XSDDOMHelper.inputEquals(node, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false) ||
- XSDDOMHelper.inputEquals(node, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true) ||
- XSDDOMHelper.inputEquals(node, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true) ||
- XSDDOMHelper.inputEquals(node, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false))
- {
- newDerivedByElement.appendChild(node.cloneNode(true));
- nodesToRemove.add(node);
- }
- }
- for (Iterator i = nodesToRemove.iterator(); i.hasNext(); )
- {
- XSDDOMHelper.removeNodeAndWhitespace((Node)i.next());
- }
-
- formatChild(newContentModelElement);
-
- return newDerivedByElement;
- }
-
- protected void formatChild(Element child)
- {
- if (child instanceof IDOMNode)
- {
- IDOMModel model = ((IDOMNode)child).getModel();
- try
- {
- // tell the model that we are about to make a big model change
- model.aboutToChangeModel();
-
- IStructuredFormatProcessor formatProcessor = new FormatProcessorXML();
- formatProcessor.formatNode(child);
- }
- finally
- {
- // tell the model that we are done with the big model change
- model.changedModel();
- }
- }
-
- }
-
- public DocumentImpl getDocument(Element element)
- {
- return (DocumentImpl) element.getOwnerDocument();
- }
-
- public void beginRecording(String description, Element element)
- {
- getDocument(element).getModel().beginRecording(this, description);
- }
-
- public void endRecording(Element element)
- {
- DocumentImpl doc = (DocumentImpl) getDocument(element);
-
- doc.getModel().endRecording(this);
- }
-}

Back to the top