[no bug] merge with 1_5 branch
diff --git a/bundles/org.eclipse.wst.xsd.ui/.classpath b/bundles/org.eclipse.wst.xsd.ui/.classpath
index 905c508..b3381db 100644
--- a/bundles/org.eclipse.wst.xsd.ui/.classpath
+++ b/bundles/org.eclipse.wst.xsd.ui/.classpath
@@ -1,9 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="src" path="src-validation"/>
 	<classpathentry kind="src" path="src-refactor"/>
+	<classpathentry kind="src" path="src-adt"/>
+	<classpathentry kind="src" path="src-adt-xsd"/>
+	<classpathentry kind="src" path="src-common"/>
+	<classpathentry kind="src" path="src-adt-xsd-typeviz"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src-search"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
index 07cfd97..23de916 100644
--- a/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.xsd.ui/META-INF/MANIFEST.MF
@@ -3,31 +3,47 @@
 Bundle-Name: %_UI_PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.xsd.ui; singleton:=true
 Bundle-Version: 1.0.100.qualifier
-Bundle-Activator: org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin
+Bundle-Activator: org.eclipse.wst.xsd.editor.XSDEditorPlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.xsd.ui.internal;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.actions;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.commands;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.dialogs.types.common;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.dialogs.types.xml;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.dnd;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.gef.util.editparts;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.gef.util.figures;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.graph;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.graph.editparts;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.graph.editpolicies;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.graph.figures;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.graph.model;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.icons;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.preferences;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.properties;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.properties.section;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.provider;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.refactor;x-internal:=true,
+Export-Package: org.eclipse.wst.xsd.adt.actions,
+ org.eclipse.wst.xsd.adt.design,
+ org.eclipse.wst.xsd.adt.design.directedit,
+ org.eclipse.wst.xsd.adt.design.editparts,
+ org.eclipse.wst.xsd.adt.design.editparts.model,
+ org.eclipse.wst.xsd.adt.design.editpolicies,
+ org.eclipse.wst.xsd.adt.design.figures,
+ org.eclipse.wst.xsd.adt.edit,
+ org.eclipse.wst.xsd.adt.editor,
+ org.eclipse.wst.xsd.adt.facade,
+ org.eclipse.wst.xsd.adt.outline,
+ org.eclipse.wst.xsd.adt.properties,
+ org.eclipse.wst.xsd.adt.typeviz.design.figures,
+ org.eclipse.wst.xsd.adt.typeviz.design.layouts,
+ org.eclipse.wst.xsd.editor,
+ org.eclipse.wst.xsd.editor.internal.actions,
+ org.eclipse.wst.xsd.editor.internal.adapters,
+ org.eclipse.wst.xsd.editor.internal.design.editparts,
+ org.eclipse.wst.xsd.editor.internal.design.editparts.model,
+ org.eclipse.wst.xsd.editor.internal.design.figures,
+ org.eclipse.wst.xsd.editor.internal.design.layouts,
+ org.eclipse.wst.xsd.editor.internal.dialogs,
+ org.eclipse.wst.xsd.editor.internal.icons,
+ org.eclipse.wst.xsd.editor.internal.navigation,
+ org.eclipse.wst.xsd.editor.internal.preferences,
+ org.eclipse.wst.xsd.editor.internal.search,
+ org.eclipse.wst.xsd.editor.internal.utils,
+ org.eclipse.wst.xsd.ui.common.actions,
+ org.eclipse.wst.xsd.ui.common.commands,
+ org.eclipse.wst.xsd.ui.common.properties.providers,
+ org.eclipse.wst.xsd.ui.common.properties.sections,
+ org.eclipse.wst.xsd.ui.common.properties.sections.appinfo,
+ org.eclipse.wst.xsd.ui.common.util,
+ org.eclipse.wst.xsd.ui.internal.actions,
+ org.eclipse.wst.xsd.ui.internal.nsedit;x-internal:=true,
+ org.eclipse.wst.xsd.ui.internal.refactor,
  org.eclipse.wst.xsd.ui.internal.refactor.actions;x-internal:=true,
- org.eclipse.wst.xsd.ui.internal.refactor.rename;x-internal:=true,
+ org.eclipse.wst.xsd.ui.internal.refactor.rename,
  org.eclipse.wst.xsd.ui.internal.refactor.structure;x-internal:=true,
  org.eclipse.wst.xsd.ui.internal.refactor.util;x-internal:=true,
  org.eclipse.wst.xsd.ui.internal.refactor.wizard;x-internal:=true,
@@ -38,7 +54,9 @@
  org.eclipse.wst.xsd.ui.internal.validation;x-internal:=true,
  org.eclipse.wst.xsd.ui.internal.widgets;x-internal:=true,
  org.eclipse.wst.xsd.ui.internal.wizards;x-internal:=true
-Require-Bundle: org.eclipse.core.runtime,
+Require-Bundle: org.eclipse.ui.views.properties.tabbed,
+ org.apache.xerces,
+ org.eclipse.core.runtime,
  org.eclipse.wst.common.uriresolver,
  org.eclipse.wst.sse.ui,
  org.eclipse.wst.sse.core,
@@ -49,14 +67,16 @@
  org.eclipse.jface.text,
  org.eclipse.xsd,
  org.eclipse.gef,
+ org.eclipse.draw2d,
+ org.eclipse.xsd,
  org.eclipse.jface,
  org.eclipse.ui.editors,
  org.eclipse.ui.workbench.texteditor,
  org.eclipse.ui,
  org.eclipse.ui.views,
  org.eclipse.ui.ide,
+ org.eclipse.emf.ecore.edit,
  org.eclipse.core.resources,
- org.eclipse.wst.common.ui.properties,
  org.eclipse.xsd.edit,
  org.eclipse.emf.edit,
  org.eclipse.emf.edit.ui,
diff --git a/bundles/org.eclipse.wst.xsd.ui/build.properties b/bundles/org.eclipse.wst.xsd.ui/build.properties
index 7204163..2df31de 100644
--- a/bundles/org.eclipse.wst.xsd.ui/build.properties
+++ b/bundles/org.eclipse.wst.xsd.ui/build.properties
@@ -8,17 +8,17 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-source.. = src/,\
-           src-validation/,\
-           src-refactor/
+source.. = src-validation/,\
+           src-search/,\
+           src-refactor/,\
+           src-adt/,\
+           src-adt-xsd/,\
+           src-adt-xsd-typeviz/,\
+           src-common/
 bin.includes = .,\
                plugin.xml,\
                icons/,\
-               image/,\
-               doc/,\
                plugin.properties,\
-               samples/,\
-               w3c/,\
                META-INF/,\
                about.html
 src.includes = build.properties,\
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/icons/XSDAttributeGroupRef.gif
similarity index 100%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroupRef.gif
copy to bundles/org.eclipse.wst.xsd.ui/icons/XSDAttributeGroupRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/XSDElementRef.gif b/bundles/org.eclipse.wst.xsd.ui/icons/XSDElementRef.gif
new file mode 100644
index 0000000..8712930
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/XSDElementRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/XSDGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/icons/XSDGroupRef.gif
new file mode 100644
index 0000000..34a7fb3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/XSDGroupRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/blank.gif b/bundles/org.eclipse.wst.xsd.ui/icons/blank.gif
new file mode 100644
index 0000000..1936e21
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/blank.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/browsebutton.gif b/bundles/org.eclipse.wst.xsd.ui/icons/browsebutton.gif
similarity index 100%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/browsebutton.gif
copy to bundles/org.eclipse.wst.xsd.ui/icons/browsebutton.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/collapse_attr.gif b/bundles/org.eclipse.wst.xsd.ui/icons/collapse_attr.gif
new file mode 100644
index 0000000..b872bee
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/collapse_attr.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/delete_obj.gif b/bundles/org.eclipse.wst.xsd.ui/icons/delete_obj.gif
new file mode 100644
index 0000000..b6922ac
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/delete_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/dlcl16/showproperties_obj.gif b/bundles/org.eclipse.wst.xsd.ui/icons/dlcl16/showproperties_obj.gif
new file mode 100644
index 0000000..d94ff10
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/dlcl16/showproperties_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/dtool16/showproperties_obj.gif b/bundles/org.eclipse.wst.xsd.ui/icons/dtool16/showproperties_obj.gif
new file mode 100644
index 0000000..d94ff10
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/dtool16/showproperties_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/elcl16/showproperties_obj.gif b/bundles/org.eclipse.wst.xsd.ui/icons/elcl16/showproperties_obj.gif
new file mode 100644
index 0000000..1dc19a3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/elcl16/showproperties_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/etool16/showproperties_obj.gif b/bundles/org.eclipse.wst.xsd.ui/icons/etool16/showproperties_obj.gif
new file mode 100644
index 0000000..1dc19a3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/etool16/showproperties_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/expand_attr.gif b/bundles/org.eclipse.wst.xsd.ui/icons/expand_attr.gif
new file mode 100644
index 0000000..5c287e9
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/expand_attr.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/filter.gif b/bundles/org.eclipse.wst.xsd.ui/icons/filter.gif
new file mode 100644
index 0000000..6fe6f0e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/filter.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/newChoice.gif b/bundles/org.eclipse.wst.xsd.ui/icons/newChoice.gif
new file mode 100644
index 0000000..eca1446
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/newChoice.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/newSequence2.gif b/bundles/org.eclipse.wst.xsd.ui/icons/newSequence2.gif
new file mode 100644
index 0000000..9e3968c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/newSequence2.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/obj16/attributeGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/icons/obj16/attributeGroupRef.gif
new file mode 100644
index 0000000..0ea47d2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/obj16/attributeGroupRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/obj16/error_marker.gif b/bundles/org.eclipse.wst.xsd.ui/icons/obj16/error_marker.gif
new file mode 100644
index 0000000..61e1e25
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/obj16/error_marker.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/icons/sample.gif b/bundles/org.eclipse.wst.xsd.ui/icons/sample.gif
new file mode 100644
index 0000000..34fb3c9
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/icons/sample.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/plugin.properties b/bundles/org.eclipse.wst.xsd.ui/plugin.properties
index 30eabc6..bb3d093 100644
--- a/bundles/org.eclipse.wst.xsd.ui/plugin.properties
+++ b/bundles/org.eclipse.wst.xsd.ui/plugin.properties
@@ -32,13 +32,16 @@
 _UI_CREATE_A_NEW_SCHEMA        = Create a new XML schema file
 
 ! New property tabs
-_UI_LABEL_GENERAL       = General
-_UI_LABEL_OTHER         = Other
-_UI_LABEL_ATTRIBUTES    = Attributes
-_UI_LABEL_DOCUMENTATION = Documentation
-_UI_LABEL_FACETS        = Facets
-_UI_LABEL_ENUMERATIONS  = Enumerations
-_UI_LABEL_NAMESPACE     = Namespace
+_UI_LABEL_GENERAL          = General
+_UI_LABEL_ATTRIBUTES       = Attributes
+_UI_LABEL_DOCUMENTATION    = Documentation
+_UI_LABEL_TYPE_CONSTRAINTS = Constraints
+_UI_LABEL_APPLICATION_INFO = Application Info
+_UI_LABEL_EXTENSIONS       = Extensions
+_UI_LABEL_FACETS           = Facets
+_UI_LABEL_ENUMERATIONS     = Enumerations
+_UI_LABEL_NAMESPACE        = Namespace
+_UI_LABEL_ADVANCED         = Advanced
 
 _UI_LABEL_READ_ONLY     = read-only
 _UI_LABEL_KIND          = Kind:
@@ -830,5 +833,5 @@
 _INFO_REMOVE_ATTRIBUTE_GROUP_REFERENCE = Remove attribute group reference
 
 Bundle-Vendor.0 = Eclipse.org
-action.label.0 = Declarations
-action.label.1 = References
\ No newline at end of file
+search.declarations.label = Declarations
+search.references.label = References
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/plugin.xml b/bundles/org.eclipse.wst.xsd.ui/plugin.xml
index 39dbc77..90c3e76 100644
--- a/bundles/org.eclipse.wst.xsd.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.xsd.ui/plugin.xml
@@ -5,14 +5,15 @@
 	<extension point="org.eclipse.ui.editors">
 		<editor
 			name="%_UI_EDITOR_NAME"
+			extensions="xsd"
 			default="true"
 			icon="icons/XSDFile.gif"
-			contributorClass="org.eclipse.wst.xsd.ui.internal.XSDActionBarContributor"
-			class="org.eclipse.wst.xsd.ui.internal.XSDEditor"
-			id="org.eclipse.wst.xsd.ui.XSDEditor">
-            <contentTypeBinding
+            contributorClass="org.eclipse.wst.xsd.editor.XSDMultiPageEditorContributor"
+            class="org.eclipse.wst.xsd.editor.InternalXSDMultiPageEditor"
+            id="org.eclipse.wst.xsd.editor.InternalXSDMultiPageEditor">
+<!--            <contentTypeBinding
                 contentTypeId="org.eclipse.wst.xsd.core.xsdsource" />
-                
+                -->
 		</editor>
 	</extension>
 
@@ -50,22 +51,23 @@
 		<page
 			name="%_UI_XML_SCHEMA_PREFERENCE"
 			category="org.eclipse.wst.sse.ui.internal.provisional.preferences"
-			class="org.eclipse.wst.xsd.ui.internal.preferences.XSDPreferencePage"
-			id="org.eclipse.wst.xsd.ui.internal.preferences.XSDPreferencePage">
+			class="org.eclipse.wst.xsd.editor.internal.preferences.XSDPreferencePage"
+			id="org.eclipse.wst.xsd.editor.internal.preferences.XSDPreferencePage">
 		</page>
 	</extension>
+<!--
 	<extension point="org.eclipse.wst.sse.ui.editorConfiguration">
 		<provisionalDefinition
 			type="preferencepages"
 			value="org.eclipse.wst.xsd.ui.internal.preferences.XSDPreferencePage"
 			target="org.eclipse.wst.xsd.ui.internal.XSDEditor.source" />
-		<sourceViewerConfiguration
+     		<sourceViewerConfiguration
 			class="org.eclipse.wst.xsd.ui.internal.StructuredTextViewerConfigurationXSD"
 			target="org.eclipse.wst.xsd.core.xsdsource" />
 		<contentOutlineConfiguration
 			class="org.eclipse.wst.xsd.ui.internal.XSDContentOutlineConfiguration"
-			target="org.eclipse.wst.xsd.core.xsdsource" />
-	</extension>
+			target="org.eclipse.wst.xsd.core.xsdsource" /> 
+	</extension>  -->
 
 	<!-- ==================================================== -->
 	<!-- Support help on the tags                             -->
@@ -78,67 +80,138 @@
 		</annotationFile>
 		</extension>
 	-->
-	<extension
-		point="org.eclipse.wst.common.ui.properties.propertyContributor">
-		<propertyContributor
-			contributorId="org.eclipse.wst.xsd.ui.internal.XSDEditor"
-			sectionDescriptorProvider="org.eclipse.wst.xsd.ui.internal.properties.section.XSDSectionDescriptorProvider"
-			labelProvider="org.eclipse.wst.xsd.ui.internal.properties.section.XSDSectionLabelProvider">
-			<propertyCategory category="general"></propertyCategory>
-			<propertyCategory category="namespace"></propertyCategory>
-			<propertyCategory category="other"></propertyCategory>
-			<propertyCategory category="attributes"></propertyCategory>
-			<propertyCategory category="enumerations">
-			</propertyCategory>
-			<propertyCategory category="documentation">
-			</propertyCategory>
-			<propertyCategory category="facets"></propertyCategory>
-		</propertyContributor>
-	</extension>
-	<extension
-		point="org.eclipse.wst.common.ui.properties.propertyTabs">
-		<propertyTabs
-			contributorId="org.eclipse.wst.xsd.ui.internal.XSDEditor">
+	
+	
+   <extension 
+   		point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
+     <propertyContributor
+           contributorId="org.eclipse.wst.xsd.editor"
+           labelProvider="org.eclipse.wst.xsd.ui.common.properties.providers.XSDSectionLabelProvider">
+         <propertyCategory category="General"/>
+   		 <propertyCategory category="Documentation"/>
+         <propertyCategory category="Advanced"/>
+     </propertyContributor>
+   </extension>
+
+   <extension 
+    	point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
+      <propertyTabs 
+            contributorId="org.eclipse.wst.xsd.editor">
 			<propertyTab
 				label="%_UI_LABEL_GENERAL"
-				category="general"
-				id="org.eclipse.wst.xmlwebservices.general">
+				category="General"
+				id="property.tab.general">
 			</propertyTab>
 			<propertyTab
-				label="%_UI_LABEL_NAMESPACE"
-				category="namespace"
-				afterTab="org.eclipse.wst.xmlwebservices.general"
-				id="org.eclipse.wst.xmlwebservices.namespace">
-			</propertyTab>
-			<propertyTab
-				label="%_UI_LABEL_OTHER"
-				category="other"
-				id="org.eclipse.wst.xmlwebservices.other">
-			</propertyTab>
-			<propertyTab
-				label="%_UI_LABEL_ATTRIBUTES"
-				category="attributes"
-				id="org.eclipse.wst.xmlwebservices.attributes">
+				label="%_UI_LABEL_TYPE_CONSTRAINTS"
+				category="General"
+				afterTab="property.tab.general"
+				id="property.tab.typeconstraints">
 			</propertyTab>
 			<propertyTab
 				label="%_UI_LABEL_ENUMERATIONS"
-				category="enumerations"
-				id="org.eclipse.wst.xmlwebservices.enumerations">
+				category="General"
+				afterTab="property.tab.general"
+				id="property.tab.enumerations">
 			</propertyTab>
 			<propertyTab
 				label="%_UI_LABEL_DOCUMENTATION"
-				category="documentation"
-				id="org.eclipse.wst.xmlwebservices.documentation">
+				category="Documentation"
+				afterTab="property.tab.general"
+				id="property.tab.documentation">
 			</propertyTab>
 			<propertyTab
-				label="%_UI_SECTION_ADVANCED_ATTRIBUTES"
-				category="facets"
-				id="org.eclipse.wst.xmlwebservices.facets">
+				label="%_UI_LABEL_EXTENSIONS"
+				category="Documentation"
+				afterTab="property.tab.general"
+				id="property.tab.extensions">
 			</propertyTab>
-		</propertyTabs>
-	</extension>
+    </propertyTabs>
+ </extension>
 
 
+<extension point="org.eclipse.ui.views.properties.tabbed.propertySections">
+   <propertySections contributorId="org.eclipse.wst.xsd.editor">
+	 <propertySection tab="property.tab.general" 
+        class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDSchemaSection"  
+	 	id="prop.section.XSDSchemaSection">
+	    <input type="org.eclipse.xsd.XSDSchema">
+	    </input>
+	 </propertySection>
+	 <propertySection tab="property.tab.general" 
+        class="org.eclipse.wst.xsd.ui.common.properties.sections.SchemaLocationSection" 
+	 	id="prop.section.SchemaLocationSection">
+	    <input type="org.eclipse.xsd.XSDSchemaCompositor">
+	    </input>
+	 </propertySection>
+	 <propertySection tab="property.tab.general" 
+        class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDComplexTypeSection"  
+	 	id="prop.section.XSDComplexTypeSection">
+	    <input type="org.eclipse.xsd.XSDComplexTypeDefinition">
+	    </input>
+	 </propertySection>
+	 <propertySection tab="property.tab.general" 
+        class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDElementDeclarationSection"  
+	 	id="prop.section.XSDElementDeclarationSection">
+	    <input type="org.eclipse.xsd.XSDElementDeclaration">
+	    </input>
+	 </propertySection>
+	 <propertySection tab="property.tab.general" 
+        class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDAttributeDeclarationSection"
+	 	id="prop.section.XSDAttributeDeclarationSection">
+	    <input type="org.eclipse.xsd.XSDAttributeDeclaration">
+	    </input>
+	 </propertySection>
+	 <propertySection tab="property.tab.general" 
+        class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDAttributeGroupDefinitionSection"  
+	 	id="prop.section.XSDAttributeGroupDefinitionSection">
+	    <input type="org.eclipse.xsd.XSDAttributeGroupDefinition">
+	    </input>
+	 </propertySection>	
+	 <propertySection tab="property.tab.general" 
+        class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDModelGroupSection"  
+	 	id="prop.section.XSDModelGroupSection">
+	    <input type="org.eclipse.xsd.XSDModelGroup">
+	    </input>
+	 </propertySection>
+	 <propertySection tab="property.tab.general" 
+        class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDModelGroupDefinitionSection"  
+	 	id="prop.section.XSDModelGroupDefinitionSection">
+	    <input type="org.eclipse.xsd.XSDModelGroupDefinition">
+	    </input>
+	 </propertySection>
+	 <propertySection tab="property.tab.general" 
+        class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDSimpleTypeSection"
+	 	id="prop.section.XSDSimpleTypeSection">
+	    <input type="org.eclipse.xsd.XSDSimpleTypeDefinition">
+	    </input>
+	 </propertySection>
+	 <propertySection tab="property.tab.typeconstraints" 
+        class="org.eclipse.wst.xsd.ui.common.properties.sections.XSDFacetSection"
+        filter="org.eclipse.wst.xsd.ui.common.properties.sections.XSDFacetSectionFilter"
+	 	id="prop.section.XSDFacetSection">
+	    <input type="org.eclipse.xsd.XSDConcreteComponent">
+	    </input>
+	 </propertySection>
+	 <propertySection tab="property.tab.documentation" 
+	 	class="org.eclipse.wst.xsd.ui.common.properties.sections.AnnotationSection" 
+	 	id="prop.section.AnnotationSection">
+	    <input type="org.eclipse.xsd.XSDConcreteComponent">
+	    </input>
+	 </propertySection>
+	 <propertySection tab="property.tab.extensions" 
+	 	class="org.eclipse.wst.xsd.ui.common.properties.sections.ApplicationInfoSection" 
+	 	id="prop.section.ExtensionsSection">
+	    <input type="org.eclipse.xsd.XSDConcreteComponent">
+	    </input>
+	 </propertySection>
+  </propertySections>
+</extension>
+
+  <extension-point id="ApplicationInformationDescription" name="ApplicationInformationDescription"/>
+
+  <extension-point id="XSDEditorExtensionConfiguration" name="XSDEditorExtensionConfiguration"/>
+
 	<extension
 		point="org.eclipse.wst.xml.core.catalogContributions">
 		<catalogContribution id="default">
@@ -174,39 +247,6 @@
 			parentId="org.eclipse.ui.textEditorScope" />
 	</extension>
 
-	<extension point="org.eclipse.ui.commands">
-		<command
-			name="%command.xsd.refactor.rename.element.name"
-			description="%command.xsd.refactor.rename.element.description"
-			categoryId="org.eclipse.ui.category.edit"
-			id="org.eclipse.wst.xsd.ui.refactor.rename.element">
-		</command>
-		<keyBinding
-			keySequence="Alt+Shift+R"
-			contextId="org.eclipse.wst.xsd.ui.text.editor.context"
-			commandId="org.eclipse.wst.xsd.ui.refactor.rename.element"
-			keyConfigurationId="org.eclipse.ui.defaultAcceleratorConfiguration">
-		</keyBinding>
-	</extension>
-
-	<extension point="org.eclipse.ui.commands">
-		<command
-			name="%command.xsd.refactor.makeElementGlobal.element.name"
-			description="%command.xsd.refactor.makeElementGlobal.element.description"
-			categoryId="org.eclipse.ui.category.edit"
-			id="org.eclipse.wst.xsd.ui.refactor.makeElementGlobal">
-		</command>
-	</extension>
-
-	<extension point="org.eclipse.ui.commands">
-		<command
-			name="%command.xsd.refactor.makeTypeGlobal.element.name"
-			description="%command.xsd.refactor.makeTypeGlobal.element.description"
-			categoryId="org.eclipse.ui.category.edit"
-			id="org.eclipse.wst.xsd.ui.refactor.makeTypeGlobal">
-		</command>
-	</extension>
-
 	<!-- this extension point is used to augment the ModelQuery to provide schema specific guided editing -->
 	<extension point="org.eclipse.wst.xml.core.modelQueryExtensions">
 		<modelQueryExtension
@@ -215,47 +255,6 @@
 		</modelQueryExtension>
 	</extension>
 
-	<!--extension
-		point="org.eclipse.ltk.core.refactoring.renameParticipants">
-		<renameParticipant
-		name="%xsd.resource.rename.participant.name"
-		class="org.eclipse.wst.xsd.ui.internal.refactor.rename.XSDResourceRenameParticipant"
-		id="org.eclipse.wst.xsd.ui.refactoring.XSDResourceRenameParticipant">
-		<enablement>
-		<with
-		variable="element">
-		<instanceof
-		value="org.eclipse.core.resources.IResource">
-		</instanceof>
-		</with>
-		</enablement>
-		</renameParticipant>
-		</extension-->
-
-	<!-- 
-		The following extension to the file context menu is temporary until resource 
-		navigator will provide allow to extend refactor menu        
-	-->
-	<!--
-		<extension point="org.eclipse.ui.popupMenus">
-		<objectContribution
-		objectClass="org.eclipse.core.resources.IFile"
-		nameFilter="*.xsd"
-		id="org.wst.xsd.ui.rename">
-		<menu id="refactorXSDResource" path="additions" label="%refactoring.menu.label">
-		<separator name="refactor"/>
-		</menu>
-		<action
-		label="%refactoring.renameAction.label"
-		menubarPath="refactorXSDResource/refactor"
-		class="org.eclipse.wst.xsd.ui.internal.refactor.actions.RenameResourceActionDelegate"
-		enablesFor="1"
-		id="org.eclipse.wst.xsd.ui.refactoring.actions.RenameResource">
-		</action>
-		</objectContribution>
-		</extension>
-	-->
-	
 	<!-- ====================================================== -->
 	<!-- Define Assign Validate action on .xsd file             -->
 	<!-- ====================================================== -->
@@ -312,8 +311,8 @@
 				</or>
 			</enablement>
 		</searchParticipant>
-	 </extension>
-	
+	</extension>
+
 	<!-- ============================================================================== -->	 
     <!-- Register a 'rename' participant this enables us to provide refactoring for     --> 
     <!-- renamed XML Schema components (e.g. elements, types etc.)                      --> 
@@ -335,11 +334,11 @@
 		
 	</extension>
 	
-
 	<!-- ============================================================================== -->	 
     <!-- Register a 'rename' participant this enables us to provide refactoring for     --> 
     <!-- renamed resources.                                                             --> 
 	<!-- ============================================================================== -->	 
+<!--
     <extension
 		point="org.eclipse.ltk.core.refactoring.renameParticipants">
 		<renameParticipant
@@ -353,18 +352,20 @@
 			</enablement>
 		</renameParticipant>
 	</extension>
-	
-	
+	-->
+	<!-- ============================================================================================== -->
+	<!-- Register the  'Refactor', 'References' and 'Declarations' items to the design view	            -->
+	<!-- ============================================================================================== -->	    
    <extension point="org.eclipse.ui.popupMenus"> 
       <objectContribution 
          id="org.eclipse.wst.xsd.ui.refactoring.menu.objectContrib" 
-         objectClass="org.eclipse.xsd.XSDComponent">  
+         objectClass="org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter">  
          <action
             id="org.eclipse.wst.xsd.ui.search.declarations.action" 
             enablesFor="1"
             style="pulldown"
             menubarPath="search-slot"
-            label="%action.label.0"
+            label="%search.declarations.label"
             class="org.eclipse.wst.xsd.ui.internal.search.actions.XSDSearchDeclarationsGroupActionDelegate"> 
          </action>          
          <action
@@ -372,7 +373,7 @@
             enablesFor="1"
             style="pulldown"
             menubarPath="search-slot"
-            label="%action.label.1"
+            label="%search.references.label"
             class="org.eclipse.wst.xsd.ui.internal.search.actions.XSDSearchReferencesGroupActionDelegate"> 
          </action>
          <action
@@ -380,11 +381,12 @@
             enablesFor="1"
             style="pulldown"
             menubarPath="refactoring-slot"
-            label="%refactoring.menu.label" 
+            label="%refactoringActionSet.label" 
             class="org.eclipse.wst.xsd.ui.internal.refactor.actions.XSDRefactorGroupActionDelegate"> 
-         </action>          
+         </action>   
       </objectContribution>         
-    <viewerContribution
+      <!-- here we add the 'refactor' menu item to the source view -->
+      <viewerContribution
         id="org.eclipse.wst.xsd.ui.refactoring.menu.source"
         targetID="org.eclipse.wst.xsd.core.xsdsource.source.EditorContext">
 	    <action id="org.eclipse.wst.xsd.ui.refactoring.menu.refactorGroup.source"
@@ -393,10 +395,32 @@
             label="%refactoring.menu.label" 
             class="org.eclipse.wst.xsd.ui.internal.refactor.actions.XSDRefactorGroupActionDelegate"> 
   	    </action>
-       </viewerContribution>
-       
+       </viewerContribution>       
      </extension>
-  
+
+	
+	<!-- 
+		The following extension to the file context menu is temporary until resource 
+		navigator will provide allow to extend refactor menu        
+	-->
+	
+	<!--extension point="org.eclipse.ui.popupMenus">
+	 <objectContribution
+		objectClass="org.eclipse.core.resources.IFile"
+		nameFilter="*.xsd"
+		id="org.wst.xsd.ui.rename">
+		<menu id="refactorXSDResource" path="additions" label="%refactoring.menu.label">
+		  <separator name="refactor"/>
+		</menu>
+	<action
+		label="%refactoring.renameAction.label"
+		menubarPath="refactorXSDResource/refactor"
+		class="org.eclipse.wst.xsd.ui.internal.refactor.actions.RenameResourceActionDelegate"
+		enablesFor="1"
+		id="org.eclipse.wst.xsd.ui.refactoring.actions.RenameResource">
+	 </action>
+	 </objectContribution>
+	</extension-->	
 
 	<extension point="org.eclipse.ui.commands">
 		<command
@@ -424,29 +448,4 @@
 			id="org.eclipse.wst.xsd.ui.refactor.renameTargetNamespace">
 		</command>
 	</extension>
-	
-	
-	<!-- 
-		The following extension to the file context menu is temporary until resource 
-		navigator will provide allow to extend refactor menu        
-	-->
-	
-	<!--extension point="org.eclipse.ui.popupMenus">
-	 <objectContribution
-		objectClass="org.eclipse.core.resources.IFile"
-		nameFilter="*.xsd"
-		id="org.wst.xsd.ui.rename">
-		<menu id="refactorXSDResource" path="additions" label="%refactoring.menu.label">
-		  <separator name="refactor"/>
-		</menu>
-	<action
-		label="%refactoring.renameAction.label"
-		menubarPath="refactorXSDResource/refactor"
-		class="org.eclipse.wst.xsd.ui.internal.refactor.actions.RenameResourceActionDelegate"
-		enablesFor="1"
-		id="org.eclipse.wst.xsd.ui.refactoring.actions.RenameResource">
-	 </action>
-	 </objectContribution>
-	</extension-->	
-
 </plugin>
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/BoxFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/BoxFigure.java
new file mode 100644
index 0000000..a41d899
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/BoxFigure.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * 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.xsd.adt.typeviz.design.figures;
+
+import java.util.Iterator;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.wst.xsd.adt.typeviz.design.layouts.ColumnData;
+
+public class BoxFigure extends Figure
+{
+  protected ColumnData columnData = new ColumnData();  
+  public HeadingFigure headingFigure;
+  Figure contentPane;
+  
+  public boolean isSelected = false;
+
+  public BoxFigure()
+  {
+    super();
+    headingFigure = new HeadingFigure();   
+    add(headingFigure);
+
+    contentPane = new Figure()
+    {
+      public void paint(Graphics graphics)
+      {
+        super.paint(graphics);
+        boolean isFirst = false;
+        for (Iterator i = getChildren().iterator(); i.hasNext();)
+        {
+          Figure figure = (Figure) i.next();
+          if (isFirst)
+          {
+            isFirst = false;
+          }
+          else
+          {
+            Rectangle r = figure.getBounds();
+            graphics.drawLine(r.x, r.y + 1, r.x + r.width, r.y + 1);
+          }
+        }
+      }
+    };
+    contentPane.setLayoutManager(new ToolbarLayout());
+    add(contentPane);
+    headingFigure.setForegroundColor(ColorConstants.black); 
+  }
+
+  public void paint(Graphics graphics)
+  {
+    super.paint(graphics);
+    /*
+    // Fill for the header section
+    //
+    Rectangle r = getBounds().getCopy();
+    graphics.setBackgroundColor(ColorConstants.darkGray);
+    Color gradient1 = ColorConstants.lightGray;
+    if (isSelected)
+    {
+      gradient1 = ColorConstants.lightBlue;
+    }
+    Color gradient2 = ColorConstants.white;
+    graphics.setForegroundColor(gradient1);
+    graphics.setBackgroundColor(gradient2);
+    graphics.fillGradient(r.x + 1, r.y + 1, r.width - 2, nodeNameLabel.getBounds().height - 1, true);
+    nodeNameLabel.paint(graphics);
+    */
+  }
+
+  public IFigure getContentPane()
+  {
+    return contentPane;
+  }
+
+  public Label getNameLabel()
+  {
+    return headingFigure.getLabel();
+  }
+  
+  public HeadingFigure getHeadingFigure()
+  {
+    return headingFigure;
+  }
+  
+  public ColumnData getColumnData()
+  {
+    return columnData;
+  }  
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/CompartmentFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/CompartmentFigure.java
new file mode 100644
index 0000000..7e329bc
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/CompartmentFigure.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * 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.xsd.adt.typeviz.design.figures;
+
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.wst.xsd.adt.design.editparts.StructureEditPart;
+import org.eclipse.wst.xsd.adt.design.figures.ICompartmentFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.typeviz.design.layouts.RowLayout;
+
+public class CompartmentFigure extends Figure implements ICompartmentFigure
+{
+  public Label nodeNameLabel;
+  protected Figure contentPane;
+  protected Figure annotationArea;
+  public Figure rowFigure;
+
+  public CompartmentFigure()
+  {
+    super();
+
+    rowFigure = new Figure();
+    add(rowFigure);
+
+    annotationArea = new Figure();
+    ToolbarLayout annotationLayout = new ToolbarLayout(false);
+    annotationLayout.setStretchMinorAxis(true);
+    annotationArea.setLayoutManager(annotationLayout);
+
+    // Need this to show content model structure on the left side of the figure
+    rowFigure.add(annotationArea);
+
+    contentPane = new Figure()
+    {
+      public void paint(Graphics graphics)
+      {
+        super.paint(graphics);
+        graphics.pushState();
+        try
+        {
+          boolean isFirst = true;
+          Color oldColor = graphics.getForegroundColor();
+          graphics.setForegroundColor(ColorConstants.lightGray);
+          for (Iterator i = getChildren().iterator(); i.hasNext();)
+          {
+            Figure figure = (Figure) i.next();
+            Rectangle r = figure.getBounds();
+//            if (figure instanceof FieldFigure)
+//            {
+//               Rectangle rChild = ((FieldFigure)figure).getNameFigure().getBounds();
+//               graphics.drawLine(rChild.right(), rChild.y, rChild.right(), rChild.bottom());
+//               graphics.setForegroundColor(ColorConstants.darkGray);
+//            }
+            if (isFirst)
+            {
+              isFirst = false;
+//               graphics.drawLine(r.x, r.y, r.x, r.y + r.height);
+            }
+            else
+            {
+              graphics.setForegroundColor(ColorConstants.white);
+              graphics.setBackgroundColor(ColorConstants.lightGray);              
+              graphics.fillGradient(r.x, r.y, r.width, 1, false);    
+//              graphics.drawLine(r.x, r.y, r.x + r.width, r.y);
+//            graphics.drawLine(r.x, r.y, r.x, r.y + r.height);
+            }
+          }
+          graphics.setForegroundColor(oldColor);
+        }
+        finally
+        {
+          graphics.popState();
+        }
+      }
+    };
+    contentPane.setLayoutManager(new ToolbarLayout());
+    rowFigure.add(contentPane);
+
+    RowLayout rowLayout = new RowLayout();
+    rowFigure.setLayoutManager(rowLayout);
+    rowLayout.setConstraint(annotationArea, "annotation");
+    rowLayout.setConstraint(contentPane, "contentPane");
+  }
+
+  public IFigure getContentPane()
+  {
+    return contentPane;
+  }
+
+  public IFigure getAnnotationPane()
+  {
+    return annotationArea;
+  }
+  
+  public void editPartAttached(EditPart owner)
+  {   
+    StructureEditPart structureEditPart = null;
+    for (EditPart parent = owner.getParent(); parent != null; parent = parent.getParent())
+    {
+      if (parent instanceof StructureEditPart)
+      {
+        structureEditPart = (StructureEditPart) parent;
+        break;
+      }
+    }
+    RowLayout rowLayout = (RowLayout)rowFigure.getLayoutManager();
+    IStructureFigure typeFigure = structureEditPart.getStructureFigure();    
+    Assert.isTrue(typeFigure instanceof StructureFigure, "Expected object of type StructureFigure");    
+    rowLayout.setColumnData(((StructureFigure)typeFigure).getColumnData());            
+  }
+
+  public void addSelectionFeedback()
+  {
+  }
+
+  public void removeSelectionFeedback()
+  {
+  }   
+  
+  public void refreshVisuals(Object model)
+  {
+    // TODO Auto-generated method stub
+    
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/FieldFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/FieldFigure.java
new file mode 100644
index 0000000..2a90266
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/FieldFigure.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ * 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.xsd.adt.typeviz.design.figures;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.PositionConstants;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.gef.EditPart;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.design.editparts.StructureEditPart;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.typeviz.design.layouts.RowLayout;
+
+public class FieldFigure extends Figure implements IFieldFigure
+{
+  // TODO: put this color is some common class
+  public static final Color cellColor = new Color(null, 224, 233, 246);
+  
+  // Formatting constraints
+  public static final int TOP_MARGIN = 2; // pixels
+  public static final int BOTTOM_MARGIN = TOP_MARGIN + 1; // extra pixel for the
+                                                          // footer line
+  public static final int LEFT_MARGIN = 2;
+  public static final int RIGHT_MARGIN = LEFT_MARGIN;
+  public static final int RIGHT_SIDE_PADDING = 6;
+
+  // States requiring decorators, and their icons
+  // protected static final Image errorIcon = ICON_ERROR;
+
+  // Labels which handle presentation of name and type
+  public Figure rowFigure;
+  protected Label nameLabel;
+  protected Label nameAnnotationLabel;  // for occurrence text, or error icons
+  protected Label typeLabel;
+  protected Label typeAnnotationLabel;  // for occurrence text, or error icons
+  protected Label toolTipLabel;
+
+  public FieldFigure()
+  {
+    super();
+    setLayoutManager(new ToolbarLayout());
+//    setOpaque(true);
+    rowFigure = new Figure();
+//    rowFigure.setOpaque(true);
+    RowLayout rowLayout = new RowLayout();
+    rowFigure.setLayoutManager(rowLayout);
+
+    add(rowFigure);
+
+    nameLabel = new Label();
+    nameLabel.setBorder(new MarginBorder(3, 5, 3, 5));
+    nameLabel.setLabelAlignment(PositionConstants.LEFT);
+    nameLabel.setOpaque(true);
+    rowFigure.add(nameLabel);
+    
+    nameAnnotationLabel = new Label();
+    nameAnnotationLabel.setBorder(new MarginBorder(3, 5, 3, 5));
+    nameAnnotationLabel.setLabelAlignment(PositionConstants.LEFT);
+    nameAnnotationLabel.setOpaque(true);
+    rowFigure.add(nameAnnotationLabel);
+    
+    toolTipLabel = new Label();
+    nameLabel.setToolTip(toolTipLabel);
+    typeLabel = new Label();
+    
+    // cs : we need to add some additional padding to the right
+    // so that when we edit the field there's room for the combobox's arrow
+    // and the type name won't be partially obscured
+    //
+    typeLabel.setBorder(new MarginBorder(3, 5, 3, 20));
+    typeLabel.setLabelAlignment(PositionConstants.LEFT);
+    typeLabel.setOpaque(true);
+    rowFigure.add(typeLabel);
+
+    typeAnnotationLabel = new Label() {
+      
+      public Dimension getPreferredSize(int wHint, int hHint)
+      {
+        if (getText() == null || getText().equals(""))
+        {
+          return new Dimension(0, 0);
+        }
+        return super.getPreferredSize(wHint, hHint);
+      };
+    };
+    typeAnnotationLabel.setBorder(new MarginBorder(3, 5, 3, 5));
+    typeAnnotationLabel.setLabelAlignment(PositionConstants.LEFT);
+    typeAnnotationLabel.setOpaque(true);
+    rowFigure.add(typeAnnotationLabel);
+    typeAnnotationLabel.setToolTip(toolTipLabel);
+    
+    rowLayout.setConstraint(nameLabel, "name");
+    rowLayout.setConstraint(nameAnnotationLabel, "nameAnnotation");
+    rowLayout.setConstraint(typeLabel, "type");
+    rowLayout.setConstraint(typeAnnotationLabel, "typeAnnotation");
+  }
+
+  /**
+   * @return Returns the "name" string used by this figure.
+   */
+  public String getName()
+  {
+    return nameLabel.getText();
+  }
+
+  /**
+   * @return Returns the figure representing the attribute name
+   */
+  public Label getNameLabel()
+  {
+    return nameLabel;
+  }
+
+  /**
+   * @return Returns the "type" string used by this figure.
+   */
+  public String getType()
+  {
+    return typeLabel.getText();
+  }
+
+  /**
+   * @return Returns the figure representing the attribute's type
+   */
+  public Label getTypeLabel()
+  {
+    return typeLabel;
+  }
+
+  /**
+   * @param name
+   *          Set the "name" string used by this figure.
+   */
+  public void setName(String name)
+  {
+    nameLabel.setText(name);
+  }
+
+  /**
+   * @param type
+   *          Set the "type" string used by this figure.
+   */
+  public void setType(String type)
+  {
+    typeLabel.setText(type);
+  }
+  
+  public void setTypeToolTipText(String toolTip)
+  {
+    setNameToolTipText(toolTip);
+  }
+
+  public void setNameToolTipText(String toolTip)
+  {
+    if (toolTip.length() > 0)
+    {
+      nameLabel.setToolTip(toolTipLabel);
+      toolTipLabel.setText(toolTip);
+    }
+    else
+    {
+      nameLabel.setToolTip(null);
+    }
+  }
+  
+  public void setNameAnnotationLabel(String text)
+  {
+    nameAnnotationLabel.setText(text);
+  }
+
+  public void setNameAnnotationLabelIcon(Image icon)
+  {
+    nameAnnotationLabel.setIcon(icon);
+  }
+  
+  public Label getNameAnnotationLabel()
+  {
+    return nameAnnotationLabel;
+  }
+  
+  public void setTypeAnnotationLabel(String text)
+  {
+    typeAnnotationLabel.setText(text);
+  }
+
+  public void setTypeAnnotationLabelIcon(Image icon)
+  {
+    typeAnnotationLabel.setIcon(icon);
+  }
+
+  public Label getTypeAnnotationLabel()
+  {
+    return typeAnnotationLabel;
+  }
+  
+  public void recomputeLayout()
+  {
+    RowLayout layout = (RowLayout)rowFigure.getLayoutManager();
+    if (layout != null && layout.getColumnData() != null)
+    {
+      layout.getColumnData().clearColumnWidths();
+    }    
+  }
+  
+  public void editPartAttached(EditPart owner)
+  {
+    StructureEditPart structureEditPart = null;
+    for (EditPart parent = owner.getParent(); parent != null; parent = parent.getParent())
+    {
+      if (parent instanceof StructureEditPart)
+      {
+        structureEditPart = (StructureEditPart) parent;
+        break;
+      }
+    }
+    RowLayout rowLayout = (RowLayout)rowFigure.getLayoutManager();
+    IStructureFigure typeFigure = structureEditPart.getStructureFigure();    
+    Assert.isTrue(typeFigure instanceof StructureFigure, "Expected object of type StructureFigure");    
+    rowLayout.setColumnData(((StructureFigure)typeFigure).getColumnData());   
+  }
+  
+  public void addSelectionFeedback()
+  {
+    rowFigure.setBackgroundColor(cellColor); 
+  }
+  
+  public void removeSelectionFeedback()
+  {
+    rowFigure.setBackgroundColor(getBackgroundColor());   
+  }
+  
+  public void refreshVisuals(Object model)
+  {
+    // TODO Auto-generated method stub
+    
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/HeadingFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/HeadingFigure.java
new file mode 100644
index 0000000..041396b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/HeadingFigure.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * 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.xsd.adt.typeviz.design.figures;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.swt.graphics.Color;
+
+public class HeadingFigure extends Figure
+{
+  public static final Color headerColor = new Color(null, 224, 233, 246);
+  Label label;
+  Color[] gradientColor = {ColorConstants.white,  
+                           ColorConstants.lightGray,
+                           ColorConstants.lightBlue,
+                           ColorConstants.gray};
+  boolean isSelected = false;
+  boolean isReadOnly = false;
+  
+  public HeadingFigure()
+  {
+    label = new Label();
+    label.setBorder(new MarginBorder(2));
+    ToolbarLayout toolbarLayout = new ToolbarLayout(false);
+    toolbarLayout.setMinorAlignment(ToolbarLayout.ALIGN_CENTER);
+    setLayoutManager(toolbarLayout);
+    add(label);
+  }
+  
+  public void setGradientColors(Color[] colors)
+  {
+    this.gradientColor = colors;
+  }
+  
+  public void setSelected(boolean isSelected)
+  {
+    this.isSelected = isSelected;
+  }
+
+  public void setIsReadOnly(boolean isReadOnly)
+  {
+    this.isReadOnly = isReadOnly;
+  }
+  
+  public void paint(Graphics graphics)
+  {
+    super.paint(graphics);
+    
+    graphics.pushState();
+    try
+    {
+      // Fill for the header section
+      //
+      Rectangle r = getBounds().getCopy();
+      graphics.setBackgroundColor(ColorConstants.lightGray);
+  
+      Color gradient1 = isReadOnly ? gradientColor[1] : headerColor;
+      if (isSelected && isReadOnly) gradient1 = gradientColor[3];
+      else if (isSelected && !isReadOnly) gradient1 = gradientColor[2];
+      Color gradient2 = gradientColor[0];
+      graphics.setForegroundColor(gradient1);
+      graphics.setBackgroundColor(gradient2);
+      Rectangle labelBounds = label.getBounds();
+      graphics.fillGradient(r.x+1, r.y+1, r.width-2, labelBounds.height - 2, true);    
+      graphics.setForegroundColor(ColorConstants.darkGray);
+      label.paint(graphics);    
+    }
+    finally
+    {
+      graphics.popState();
+    }
+  }
+
+  public Label getLabel()
+  {
+    return label;
+  }  
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RoundedLineBorder.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/RoundedLineBorder.java
similarity index 71%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RoundedLineBorder.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/RoundedLineBorder.java
index 75dbff7..aac092b 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RoundedLineBorder.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/RoundedLineBorder.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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
@@ -8,29 +8,28 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.graph.figures;
-            
+package org.eclipse.wst.xsd.adt.typeviz.design.figures;
+
 import org.eclipse.draw2d.Graphics;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.LineBorder;
 import org.eclipse.draw2d.geometry.Insets;
 import org.eclipse.swt.graphics.Color;
-              
 
 public class RoundedLineBorder extends LineBorder
-{               
+{
   protected int arcLength;   
   protected int lineStyle = Graphics.LINE_SOLID;
 
   public RoundedLineBorder(Color c, int width, int arcLength)
   {
-	  super(c, width);     
+    super(c, width);     
     this.arcLength = arcLength;
   }
 
   public RoundedLineBorder(int width, int arcLength)
   {
-	  super(width);     
+    super(width);     
     this.arcLength = arcLength;
   }
   
@@ -50,18 +49,18 @@
 
   public void paint(IFigure figure, Graphics graphics, Insets insets)
   {
-      int rlbWidth = getWidth();
-	  tempRect.setBounds(getPaintRectangle(figure, insets));
-  	if (rlbWidth%2 == 1)
+    int rlbWidth = getWidth();
+    tempRect.setBounds(getPaintRectangle(figure, insets));
+    if (rlbWidth%2 == 1)
     {
-		  tempRect.width--;
-		  tempRect.height--;
-	  }
-	  tempRect.shrink(rlbWidth/2,rlbWidth/2);
-	  graphics.setLineWidth(rlbWidth);
+      tempRect.width--;
+      tempRect.height--;
+    }
+    tempRect.shrink(rlbWidth/2,rlbWidth/2);
+    graphics.setLineWidth(rlbWidth);
     graphics.setLineStyle(lineStyle);
-	  if (getColor() != null)
-		  graphics.setForegroundColor(getColor());
-	  graphics.drawRoundRectangle(tempRect, arcLength, arcLength);
+    if (getColor() != null)
+      graphics.setForegroundColor(getColor());
+    graphics.drawRoundRectangle(tempRect, arcLength, arcLength);
   }
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/StructureFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/StructureFigure.java
new file mode 100644
index 0000000..8d3d14d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/StructureFigure.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * 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.xsd.adt.typeviz.design.figures;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+
+
+public class StructureFigure extends BoxFigure implements IStructureFigure
+{
+  public void editPartAttached(EditPart owner)
+  {
+    // nothing to do here :-)
+  }
+
+  public void addSelectionFeedback()
+  {
+    LineBorder boxFigureLineBorder = (LineBorder)getBorder();
+    boxFigureLineBorder.setWidth(2);
+    // TODO (cs) need to fix this
+    //boxFigureLineBorder.setColor(getComplexType().isReadOnly() ? ColorConstants.darkGray : ColorConstants.darkBlue);  
+    getHeadingFigure().setSelected(true);
+    repaint();
+  }
+
+  public void removeSelectionFeedback()
+  {
+    LineBorder boxFigureLineBorder = (LineBorder)getBorder();
+    boxFigureLineBorder.setWidth(1);
+    getHeadingFigure().setSelected(false);
+    repaint();
+  }  
+  
+  public boolean hitTestHeader(Point location)
+  {
+    IFigure target = getHeadingFigure();
+    Rectangle b = target.getBounds().getCopy();
+    target.translateToAbsolute(b);  
+    return b.contains(location);
+  }
+  
+  public void refreshVisuals(Object model)
+  {
+    IStructure structure = (IStructure)model;
+    getNameLabel().setText(structure.getName());    
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/TypeVizFigureFactory.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/TypeVizFigureFactory.java
new file mode 100644
index 0000000..b0e977a
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/figures/TypeVizFigureFactory.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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.xsd.adt.typeviz.design.figures;
+
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.wst.xsd.adt.design.figures.ICompartmentFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IExtendedFigureFactory;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IModelGroupFigure;
+import org.eclipse.wst.xsd.editor.internal.design.figures.ModelGroupFigure;
+
+public class TypeVizFigureFactory implements IExtendedFigureFactory
+{  
+  public IStructureFigure createStructureFigure(Object model)
+  {
+    StructureFigure figure = new StructureFigure();
+    figure.setBorder(new LineBorder(1));    
+    ToolbarLayout toolbarLayout = new ToolbarLayout();
+    toolbarLayout.setStretchMinorAxis(true);
+    figure.setLayoutManager(toolbarLayout);
+
+    if (model instanceof ITreeElement)
+    {
+      figure.getNameLabel().setIcon(((ITreeElement)model).getImage());
+    }    
+    //figure.getHeadingFigure().setIsReadOnly(getComplexType().isReadOnly());
+    // we should organize ITreeElement and integrate it with the facade    
+    return figure;
+  }
+
+  public IFieldFigure createFieldFigure(Object model)
+  {
+    // TODO Auto-generated method stub
+    return new FieldFigure();
+  }
+  
+  public ICompartmentFigure createCompartmentFigure(Object model)
+  {
+    CompartmentFigure figure = new CompartmentFigure();
+    figure.setBorder(new MarginBorder(1));
+    ToolbarLayout toolbarLayout = new ToolbarLayout(false);
+    toolbarLayout.setStretchMinorAxis(true);
+    figure.setLayoutManager(toolbarLayout);
+    return figure;
+  }  
+  
+  public IModelGroupFigure createModelGroupFigure(Object model)
+  {
+    // TODO Auto-generated method stub
+    return new ModelGroupFigure();
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/ColumnData.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/ColumnData.java
new file mode 100644
index 0000000..5c82e84
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/ColumnData.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * 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.xsd.adt.typeviz.design.layouts;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class ColumnData
+{
+  HashMap map = new HashMap();
+  
+  class Entry
+  {
+    int width = 0;
+    int weight = 1;
+  }
+  
+  public void clearColumnWidths()
+  {
+    for (Iterator i = map.values().iterator(); i.hasNext();)
+    {
+      Entry entry = (Entry)i.next();
+      entry.width = 0;
+    }  
+  }  
+  
+  private Entry lookupOrCreateColumnEntry(String identifier)
+  {
+    Entry entry = (Entry)map.get(identifier);
+    if (entry == null)
+    {
+      entry = new Entry();
+      map.put(identifier, entry);
+    }  
+   return entry; 
+  }  
+  
+  void stretchColumnWidthIfNeeded(String identifier, int width)
+  {
+    Entry entry = lookupOrCreateColumnEntry(identifier);
+    entry.width = Math.max(entry.width, width);
+  }
+  
+  int getColumnWidth(String identifier)
+  {
+    Entry entry = (Entry)map.get(identifier);
+    if (entry != null)
+    {
+      return entry.width;
+    }  
+    else
+    {
+      return 0;//hmm should we return -1 ?
+    }  
+  }
+  
+  int getColumnWeight(String identifier)
+  {
+    Entry entry = (Entry)map.get(identifier);
+    if (entry != null)
+    {
+      return entry.weight;
+    }  
+    else
+    {
+      return 0;
+    }  
+  }
+  
+  public void setColumnWeight(String identifier, int weight)
+  {
+    Entry entry = lookupOrCreateColumnEntry(identifier);
+    entry.weight = weight;
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/RowLayout.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/RowLayout.java
new file mode 100644
index 0000000..21fc9bf
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd-typeviz/org/eclipse/wst/xsd/adt/typeviz/design/layouts/RowLayout.java
@@ -0,0 +1,183 @@
+/*******************************************************************************
+ * 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.xsd.adt.typeviz.design.layouts;
+
+import java.util.HashMap;
+import java.util.List;
+import org.eclipse.draw2d.AbstractLayout;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Rectangle;
+
+public class RowLayout extends AbstractLayout
+{
+  // layout is associated with a parent context
+  // any layout manager under the parent context is connected
+  // column rows are maintained accross container boundaries  
+  protected ColumnData columnData;
+  protected HashMap figureToContstraintMap = new HashMap();
+  
+  public RowLayout()
+  {
+    super();
+  }
+  
+
+  // this method computes the minimum size required to display the figures
+  //
+  private Dimension calculateChildrenSize(IFigure container, List children, int wHint, int hHint, boolean preferred)
+  {
+    Dimension childSize;
+    IFigure child;
+    int height = 0;
+    int width = 0;
+    
+    //IRowFigure figure = (IRowFigure)container;
+    
+    // for each cell in the row
+    //
+    for (int i = 0; i < children.size(); i++)
+    {
+      child = (IFigure) children.get(i);
+      String columnIdenifier = (String)getConstraint(child);
+             
+      // first we compute the child size without regard for columnData
+      //
+      childSize = child.getPreferredSize(wHint, hHint);// : child.getMinimumSize(wHint, hHint);
+        
+      // now that the columnData has been populated we can consider if the row needs to be larger
+      //
+      int effectiveWidth = childSize.width;
+      if (columnIdenifier != null)
+      {  
+        columnData.stretchColumnWidthIfNeeded(columnIdenifier, childSize.width);
+        effectiveWidth = columnData.getColumnWidth(columnIdenifier);
+      }                       
+      height = Math.max(childSize.height, height);
+      width += effectiveWidth;
+    }  
+    return new Dimension(width, height);
+  }
+  
+  
+  
+  protected Dimension calculatePreferredSize(IFigure container, int wHint, int hHint)
+  {    
+    List children = container.getChildren();
+    Dimension prefSize = calculateChildrenSize(container, children, wHint, hHint, true);
+    //System.out.println("preferredSize=" + prefSize);
+    return prefSize;
+  }
+
+  public void layout(IFigure parent)
+  {
+    // layout a table with the columns aligned      
+    //IRowFigure rowFigure = (IRowFigure)parent;    
+    Rectangle clientArea = parent.getClientArea();   
+    List children = parent.getChildren();
+    Rectangle r = new Rectangle();
+    r.x = clientArea.x;
+    r.y = clientArea.y;
+    r.height = clientArea.height;
+    
+    int childrenSize = children.size();
+    Rectangle[] bounds = new Rectangle[childrenSize];
+    
+    // for each cell in the row
+    //
+    int requiredWidth = 0;
+    int totalColumnWeight = 0;
+    for (int i = 0; i < childrenSize; i++)
+    {
+      IFigure child = (IFigure) children.get(i);
+      //String columnIdenifier = figure.getColumnIdentifier(child);             
+      // first we compute the child size without regard for columnData
+      //
+      Dimension childSize = child.getPreferredSize(-1, -1);
+      
+      int columnWidth = -1;
+      //String columnIdentifier = rowFigure.getColumnIdentifier(child);
+      String columnIdentifier = (String)getConstraint(child);
+      if (columnIdentifier != null)
+      {
+        //columnData.stretchColumnWidthIfNeeded(columnIdentifier, childSize.width);        
+        columnWidth = columnData.getColumnWidth(columnIdentifier);
+        totalColumnWeight += columnData.getColumnWeight(columnIdentifier);
+        //System.out.println("columnWidth(" + columnIdentifier + ")=" + columnWidth);        
+      }  
+      r.width = Math.max(childSize.width, columnWidth);
+      requiredWidth += r.width;
+      bounds[i] = new Rectangle(r);      
+      r.x += r.width;
+    }          
+    if (totalColumnWeight < 1)
+    {
+      totalColumnWeight = 1;
+    }
+    //System.out.println("clientArea.width=" + clientArea.width + ", " + r.x);
+    int extraWidth = Math.max(clientArea.width - requiredWidth, 0);    
+    //System.out.println("extraWidth=" + extraWidth + " totalColumnWeight=" + totalColumnWeight);  
+    int extraWidthAllocated = 0;
+    for (int i = 0; i < childrenSize; i++)
+    {
+      IFigure child = (IFigure) children.get(i);      
+      Rectangle b = bounds[i];    
+      if (extraWidth > 0)
+      {  
+        String columnIdentifier = (String)getConstraint(child);
+        if (columnIdentifier != null)
+        {        
+          int weight = columnData.getColumnWeight(columnIdentifier);
+          float fraction = (float)weight / (float)totalColumnWeight;
+          int extraWidthForChild = (int)(extraWidth * fraction);
+          //System.out.println("extraWidthForChild(" + fraction + ")=" + extraWidthForChild);        
+          b.width += extraWidthForChild;        
+          b.x += extraWidthAllocated;
+          extraWidthAllocated += extraWidthForChild;
+        }  
+        else
+        {
+          b.x += extraWidthAllocated;
+        }
+      }
+      child.setBounds(new Rectangle(b));  
+    }  
+  }
+
+  public ColumnData getColumnData()
+  {
+    return columnData;
+  }
+
+  public void setColumnData(ColumnData columnData)
+  {
+    this.columnData = columnData;
+  }    
+  
+  public Object getConstraint(IFigure child)
+  {
+    return figureToContstraintMap.get(child);
+  }
+  
+  public void setConstraint(IFigure child, Object constraint)
+  {
+    figureToContstraintMap.put(child, constraint);
+  }
+  
+  public void invalidate()
+  {
+    //figureToContstraintMap.clear();
+    //this.columnData.clearColumnWidths();
+    super.invalidate();
+    //System.out.println("invalidate");    
+  }
+}
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/ISelectionMapper.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/ISelectionMapper.java
index 24a0537..516cf7f 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/ISelectionMapper.java
@@ -1,17 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.editparts;
+package org.eclipse.wst.xsd.editor;
 
-public interface IFeedbackHandler
+import org.eclipse.jface.viewers.ISelection;
+
+public interface ISelectionMapper
 {
-  public void addFeedback();
-  public void removeFeedback();
-}              
\ No newline at end of file
+  ISelection mapSelection(ISelection selectedObject);
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/InternalXSDMultiPageEditor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/InternalXSDMultiPageEditor.java
new file mode 100644
index 0000000..b00f1d3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/InternalXSDMultiPageEditor.java
@@ -0,0 +1,895 @@
+/*******************************************************************************
+ * 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.xsd.editor;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.gef.RootEditPart;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IPostSelectionProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.INavigationLocation;
+import org.eclipse.ui.INavigationLocationProvider;
+import org.eclipse.ui.IPropertyListener;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.eclipse.wst.sse.ui.internal.contentoutline.ConfigurableContentOutlinePage;
+import org.eclipse.wst.xml.core.internal.document.NodeImpl;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xsd.adt.actions.AddFieldAction;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.DeleteAction;
+import org.eclipse.wst.xsd.adt.actions.SetInputToGraphView;
+import org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction;
+import org.eclipse.wst.xsd.adt.design.editparts.RootContentEditPart;
+import org.eclipse.wst.xsd.adt.editor.ADTMultiPageEditor;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.editor.internal.adapters.CategoryAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.XSDEditPartFactory;
+import org.eclipse.wst.xsd.editor.internal.navigation.DesignViewNavigationLocation;
+import org.eclipse.wst.xsd.editor.internal.navigation.MultiPageEditorTextSelectionNavigationLocation;
+import org.eclipse.wst.xsd.editor.internal.utils.OpenOnSelectionHelper;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeDeclarationAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDComplexTypeDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDSimpleTypeDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction;
+import org.eclipse.wst.xsd.ui.common.actions.OpenInNewEditor;
+import org.eclipse.wst.xsd.ui.common.actions.SetMultiplicityAction;
+import org.eclipse.wst.xsd.ui.common.actions.SetTypeAction;
+import org.eclipse.wst.xsd.ui.internal.text.XSDModelReconcileAdapter;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.impl.XSDSchemaImpl;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class InternalXSDMultiPageEditor extends ADTMultiPageEditor implements ITabbedPropertySheetPageContributor, IPropertyListener, INavigationLocationProvider
+{
+  ResourceSet resourceSet;
+  Resource xsdResource;
+  // IModel model;
+  IStructuredModel structuredModel;
+  XSDSchema xsdSchema;
+  private OutlineTreeSelectionChangeListener fOutlineListener;
+  private SourceEditorSelectionListener fSourceEditorSelectionListener;
+  private XSDSelectionManagerSelectionListener fXSDSelectionListener;
+  private StructuredTextEditor structuredTextEditor;
+
+  public IModel buildModel(IFileEditorInput editorInput)
+  {
+    try
+    {
+      EPackage.Registry reg = EPackage.Registry.INSTANCE;
+      XSDPackage xsdPackage = (XSDPackage) reg.getEPackage(XSDPackage.eNS_URI);
+      xsdSchema = xsdPackage.getXSDFactory().createXSDSchema();
+      resourceSet = XSDSchemaImpl.createResourceSet();
+      IFile resourceFile = editorInput.getFile();
+      structuredModel = StructuredModelManager.getModelManager().getModelForEdit(resourceFile);
+      // If the resource is in the workspace....
+      // otherwise the user is trying to open an external file
+      if (resourceFile != null)
+      {
+        String pathName = resourceFile.getFullPath().toString();
+        xsdResource = resourceSet.getResource(URI.createPlatformResourceURI(pathName), true);
+        resourceSet.getResources().add(xsdResource);
+        Object obj = xsdResource.getContents().get(0);
+        if (obj instanceof XSDSchema)
+        {
+          xsdSchema = (XSDSchema) obj;
+          xsdSchema.setElement(((IDOMModel) structuredModel).getDocument().getDocumentElement());
+          model = (IModel) XSDAdapterFactory.getInstance().adapt(xsdSchema);
+        }
+        
+        // If the input schema is from the WSDL Editor, then use that inline schema
+        if (editorInput instanceof XSDFileEditorInput)
+        {
+          xsdSchema = ((XSDFileEditorInput) editorInput).getSchema();
+          model = (IModel) XSDAdapterFactory.getInstance().adapt(xsdSchema);
+        }
+        if (xsdSchema.getElement() != null)
+          
+          // TODO (cs) ... we need to look into performance issues when we add elements
+          // seems to be that formatting is causig lots of notification and things get terribly slow
+          // I'm specializing the method below to add an isModelStateChanging check that should
+          // help here ... but we need to investigate further
+          new XSDModelReconcileAdapter(xsdSchema.getElement().getOwnerDocument(), xsdSchema)
+          {
+            public void handleNotifyChange(INodeNotifier notifier, int eventType, Object feature, Object oldValue, Object newValue, int index)
+            {
+              if (notifier instanceof NodeImpl)
+              {
+                NodeImpl nodeImpl = (NodeImpl)notifier;
+                if (!nodeImpl.getModel().isModelStateChanging())
+                {  
+                  //System.out.println("handleNotifyChange " + eventType);
+                  super.handleNotifyChange(notifier, eventType, feature, oldValue, newValue, index);
+                }  
+              }
+            }
+          };
+        xsdResource.setModified(false);
+      }
+    }
+    catch (StackOverflowError e)
+    {
+    }
+    catch (Exception ex)
+    {
+    }
+    return model;
+  }
+
+  public void dispose()
+  {
+    structuredModel.releaseFromEdit();
+    if (fOutlinePage != null)
+    {
+      if (fOutlinePage instanceof ConfigurableContentOutlinePage && fOutlineListener != null)
+      {
+        ((ConfigurableContentOutlinePage) fOutlinePage).removeDoubleClickListener(fOutlineListener);
+      }
+      if (fOutlineListener != null)
+      {
+        fOutlinePage.removeSelectionChangedListener(fOutlineListener);
+      }
+    }
+    getSelectionManager().removeSelectionChangedListener(fXSDSelectionListener);
+    super.dispose();
+  }
+
+  protected void configureGraphicalViewer()
+  {
+    super.configureGraphicalViewer();
+    // get edit part factory from extension
+    EditPartFactory editPartFactory = XSDEditorPlugin.getDefault().getXSDEditorConfiguration().getEditPartFactory();
+    if (editPartFactory != null)
+    {
+      graphicalViewer.setEditPartFactory(editPartFactory);
+    }
+    else
+    {
+      // otherwise use default
+      graphicalViewer.setEditPartFactory(new XSDEditPartFactory());
+    }
+  }
+
+  public Object getAdapter(Class type)
+  {
+    if (type == org.eclipse.ui.views.properties.IPropertySheetPage.class)
+    {
+      XSDTabbedPropertySheetPage page = new XSDTabbedPropertySheetPage(this);
+      return page;
+    }
+    else if (type == ISelectionProvider.class)
+    {
+      return selectionManager;
+    }  
+    else if (type == XSDSchema.class)
+    {
+      return xsdSchema;
+    }
+    else if (type == IContentOutlinePage.class)
+    {
+      Object adapter = super.getAdapter(type);
+      if (adapter != null)
+      {
+        IContentOutlinePage page = (IContentOutlinePage) adapter;
+        fOutlineListener = new OutlineTreeSelectionChangeListener();
+        page.addSelectionChangedListener(fOutlineListener);
+        if (page instanceof ConfigurableContentOutlinePage)
+        {
+          ((ConfigurableContentOutlinePage) page).addDoubleClickListener(fOutlineListener);
+        }
+        return page;
+      }
+    }
+    else if (type == XSDElementReferenceEditManager.class)
+    {
+    	IEditorInput editorInput = getEditorInput();
+    	if (editorInput instanceof IFileEditorInput)
+    	{
+    		IFileEditorInput fileEditorInput = (IFileEditorInput) editorInput;
+    		// TODO (cs) currently we assume the schema editor will only ever edit a
+    		// single schema
+    		/// but if we want to enable the schema editor to edit wsdl files we
+    		// should pass in
+    		// an array of schemas
+    		// hmm.. perhaps just pass in a ResourceSet
+    		XSDSchema[] schemas = {xsdSchema};
+    		return new XSDElementReferenceEditManager(fileEditorInput.getFile(), schemas);
+    	}
+    }
+    else if (type == XSDTypeReferenceEditManager.class)
+    {
+      IEditorInput editorInput = getEditorInput();
+      if (editorInput instanceof IFileEditorInput)
+      {
+        IFileEditorInput fileEditorInput = (IFileEditorInput) editorInput;
+        // TODO (cs) currently we assume the schema editor will only ever edit a
+        // single schema
+        // but if we want to enable the schema editor to edit wsdl files we
+        // should pass in
+        // an array of schemas
+        // hmm.. perhaps just pass in a ResourceSet
+        XSDSchema[] schemas = {xsdSchema};
+        return new XSDTypeReferenceEditManager(fileEditorInput.getFile(), schemas);
+      }
+    }
+    else if (type == ITextEditor.class)
+    {
+      return getTextEditor();
+    }
+    else if (type == ISelectionMapper.class)
+    {
+      return new XSDSelectionMapper();
+    }  
+    return super.getAdapter(type);
+  }
+
+  public String getContributorId()
+  {
+    return "org.eclipse.wst.xsd.editor";
+  }
+
+  public XSDSchema getXSDSchema()
+  {
+    return xsdSchema;
+  }
+
+  public StructuredTextEditor getTextEditor()
+  {
+    return structuredTextEditor;
+  }
+
+  protected void createSourcePage()
+  {
+    try
+    {
+      structuredTextEditor = new StructuredTextEditor();
+      int index = addPage(structuredTextEditor, getEditorInput());
+      setPageText(index, "Source");
+      structuredTextEditor.update();
+      structuredTextEditor.setEditorPart(this);
+      structuredTextEditor.addPropertyListener(this);
+      firePropertyChange(PROP_TITLE);
+    }
+    catch (PartInitException e)
+    {
+      ErrorDialog.openError(getSite().getShell(), "Error creating nested text editor", null, e.getStatus());
+    }
+  }
+
+  /**
+   * Method openOnGlobalReference. The comp argument is a resolved xsd schema
+   * object from another file. This is created and called from another schema
+   * model to allow F3 navigation to open a new editor and choose the referenced
+   * object within that editor context
+   * 
+   * @param comp
+   */
+  public void openOnGlobalReference(XSDConcreteComponent comp)
+  {
+    XSDNamedComponent namedComponent = openOnSelectionHelper.openOnGlobalReference(comp);
+    
+    if (namedComponent != null)
+    {
+      XSDBaseAdapter adapter = (XSDBaseAdapter) XSDAdapterFactory.getInstance().adapt(namedComponent);
+      getSelectionManager().setSelection(new StructuredSelection(adapter));
+      IAction action = getActionRegistry().getAction(SetInputToGraphView.ID);
+      if (action != null)
+      {
+        action.run();
+      }
+    }
+  }
+  
+  protected OpenOnSelectionHelper openOnSelectionHelper;
+
+  public OpenOnSelectionHelper getOpenOnSelectionHelper()
+  {
+    return openOnSelectionHelper;
+  }
+
+  /**
+   * Creates the pages of the multi-page editor.
+   */
+  protected void createPages()
+  {
+    model = buildModel((IFileEditorInput) getEditorInput());
+    selectionProvider = getSelectionManager();
+    getEditorSite().setSelectionProvider(selectionProvider);
+    createGraphPage();
+    createSourcePage();
+    openOnSelectionHelper = new OpenOnSelectionHelper(getTextEditor(), getXSDSchema());
+    ISelectionProvider provider = getTextEditor().getSelectionProvider();
+    fSourceEditorSelectionListener = new SourceEditorSelectionListener();
+    if (provider instanceof IPostSelectionProvider)
+    {
+      ((IPostSelectionProvider) provider).addPostSelectionChangedListener(fSourceEditorSelectionListener);
+    }
+    else
+    {
+      provider.addSelectionChangedListener(fSourceEditorSelectionListener);
+    }
+    fXSDSelectionListener = new XSDSelectionManagerSelectionListener();
+    getSelectionManager().addSelectionChangedListener(fXSDSelectionListener);
+  }
+
+  protected void createActions()
+  {
+    super.createActions();
+    ActionRegistry registry = getActionRegistry();
+    BaseSelectionAction action = new AddFieldAction(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new DeleteAction(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new AddXSDElementAction(this, AddXSDElementAction.ID, "Add Element", false);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new AddXSDElementAction(this, AddXSDElementAction.REF_ID, "Add Element Ref", true);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new AddXSDModelGroupAction(this, XSDCompositor.SEQUENCE_LITERAL, AddXSDModelGroupAction.SEQUENCE_ID);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new AddXSDModelGroupAction(this, XSDCompositor.CHOICE_LITERAL, AddXSDModelGroupAction.CHOICE_ID);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new AddXSDModelGroupAction(this, XSDCompositor.ALL_LITERAL, AddXSDModelGroupAction.ALL_ID);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new AddXSDModelGroupDefinitionAction(this, false);
+    action.setId(AddXSDModelGroupDefinitionAction.MODELGROUPDEFINITION_ID);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new AddXSDModelGroupDefinitionAction(this, true);
+    action.setId(AddXSDModelGroupDefinitionAction.MODELGROUPDEFINITIONREF_ID);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new AddXSDComplexTypeDefinitionAction(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new AddXSDSimpleTypeDefinitionAction(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new AddXSDAttributeDeclarationAction(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new OpenInNewEditor(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new ShowPropertiesViewAction(this);
+    registry.registerAction(action);
+    action = new AddXSDAttributeGroupDefinitionAction(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    action = new DeleteXSDConcreteComponentAction(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    
+    SetTypeAction setNewComplexTypeAction = new SetTypeAction("New...", SetTypeAction.SET_NEW_TYPE_ID, this);
+    setNewComplexTypeAction.setSelectionProvider(getSelectionManager());
+    registry.registerAction(setNewComplexTypeAction);
+        
+    SetTypeAction setExistingTypeAction = new SetTypeAction("Browse...", SetTypeAction.SELECT_EXISTING_TYPE_ID, this);
+    setExistingTypeAction.setSelectionProvider(getSelectionManager());
+    registry.registerAction(setExistingTypeAction);
+
+    addMultiplicityMenu(registry);
+  }
+  
+  protected void addMultiplicityMenu(ActionRegistry registry)
+  {
+    SetMultiplicityAction oneMultiplicity = new SetMultiplicityAction(this, "1..1 (" + "Required" + ")", SetMultiplicityAction.REQUIRED_ID);
+    oneMultiplicity.setMaxOccurs(1);
+    oneMultiplicity.setMinOccurs(1);
+    oneMultiplicity.setSelectionProvider(getSelectionManager());
+    registry.registerAction(oneMultiplicity);
+
+    SetMultiplicityAction zeroOrMoreMultiplicity = new SetMultiplicityAction(this, "0..* (" + "Zero or more" + ")", SetMultiplicityAction.ZERO_OR_MORE_ID);
+    zeroOrMoreMultiplicity.setMaxOccurs(-1);
+    zeroOrMoreMultiplicity.setMinOccurs(0);
+    zeroOrMoreMultiplicity.setSelectionProvider(getSelectionManager());
+    registry.registerAction(zeroOrMoreMultiplicity);
+    
+    SetMultiplicityAction zeroOrOneMultiplicity = new SetMultiplicityAction(this, "0..1 (" + "Optional" + ")", SetMultiplicityAction.ZERO_OR_ONE_ID);
+    zeroOrOneMultiplicity.setMaxOccurs(1);
+    zeroOrOneMultiplicity.setMinOccurs(0);
+    zeroOrOneMultiplicity.setSelectionProvider(getSelectionManager());
+    registry.registerAction(zeroOrOneMultiplicity);
+
+    SetMultiplicityAction oneOrMoreMultiplicity = new SetMultiplicityAction(this, "1..* (" + "One or more" + ")", SetMultiplicityAction.ONE_OR_MORE_ID);
+    oneOrMoreMultiplicity.setMaxOccurs(-1);
+    oneOrMoreMultiplicity.setMinOccurs(1);
+    oneOrMoreMultiplicity.setSelectionProvider(getSelectionManager());
+    registry.registerAction(oneOrMoreMultiplicity);
+    
+  }
+
+
+  /**
+   * Closes all project files on project close.
+   */
+  public void resourceChanged(final IResourceChangeEvent event)
+  {
+    if (event.getType() == IResourceChangeEvent.PRE_CLOSE)
+    {
+      Display.getDefault().asyncExec(new Runnable()
+      {
+        public void run()
+        {
+          IWorkbenchPage[] pages = getSite().getWorkbenchWindow().getPages();
+          for (int i = 0; i < pages.length; i++)
+          {
+            if (((FileEditorInput) structuredTextEditor.getEditorInput()).getFile().getProject().equals(event.getResource()))
+            {
+              IEditorPart editorPart = pages[i].findEditor(structuredTextEditor.getEditorInput());
+              pages[i].closeEditor(editorPart, true);
+            }
+          }
+        }
+      });
+    }
+  }
+
+  /**
+   * Returns <code>true</code> if the command stack is dirty
+   * 
+   * @see org.eclipse.ui.ISaveablePart#isDirty()
+   */
+  public boolean isDirty()
+  {
+    super.isDirty();
+    return structuredTextEditor.isDirty() || getCommandStack().isDirty();
+  }
+
+  /*
+   * This method is just to make firePropertyChanged accessbible from some
+   * (anonomous) inner classes.
+   */
+  protected void _firePropertyChange(int property)
+  {
+    super.firePropertyChange(property);
+  }
+
+  /**
+   * Posts the update code "behind" the running operation.
+   */
+  protected void postOnDisplayQue(Runnable runnable)
+  {
+    IWorkbench workbench = PlatformUI.getWorkbench();
+    IWorkbenchWindow[] windows = workbench.getWorkbenchWindows();
+    if (windows != null && windows.length > 0)
+    {
+      Display display = windows[0].getShell().getDisplay();
+      display.asyncExec(runnable);
+    }
+    else
+      runnable.run();
+  }
+
+  /**
+   * Indicates that a property has changed.
+   * 
+   * @param source
+   *          the object whose property has changed
+   * @param propId
+   *          the id of the property which has changed; property ids are
+   *          generally defined as constants on the source class
+   */
+  public void propertyChanged(Object source, int propId)
+  {
+    switch (propId)
+    {
+      // had to implement input changed "listener" so that
+      // strucutedText could tell it containing editor that
+      // the input has change, when a 'resource moved' event is
+      // found.
+      case IEditorPart.PROP_INPUT :
+      case IEditorPart.PROP_DIRTY : {
+        if (source == structuredTextEditor)
+        {
+          if (structuredTextEditor.getEditorInput() != getEditorInput())
+          {
+            setInput(structuredTextEditor.getEditorInput());
+            // title should always change when input changes.
+            // create runnable for following post call
+            Runnable runnable = new Runnable()
+            {
+              public void run()
+              {
+                _firePropertyChange(IWorkbenchPart.PROP_TITLE);
+              }
+            };
+            // Update is just to post things on the display queue
+            // (thread). We have to do this to get the dirty
+            // property to get updated after other things on the
+            // queue are executed.
+            postOnDisplayQue(runnable);
+          }
+        }
+        break;
+      }
+      case IWorkbenchPart.PROP_TITLE : {
+        // update the input if the title is changed
+        if (source == structuredTextEditor)
+        {
+          if (structuredTextEditor.getEditorInput() != getEditorInput())
+          {
+            setInput(structuredTextEditor.getEditorInput());
+          }
+        }
+        break;
+      }
+      default : {
+        // propagate changes. Is this needed? Answer: Yes.
+        if (source == structuredTextEditor)
+        {
+          firePropertyChange(propId);
+        }
+        break;
+      }
+    }
+  }
+  /**
+   * Listener on SSE's outline page's selections that converts DOM selections
+   * into xsd selections and notifies XSD selection manager
+   */
+  class OutlineTreeSelectionChangeListener implements ISelectionChangedListener, IDoubleClickListener
+  {
+    public OutlineTreeSelectionChangeListener()
+    {
+    }
+
+    private ISelection getXSDSelection(ISelection selection)
+    {
+      ISelection sel = null;
+      if (selection instanceof IStructuredSelection)
+      {
+        IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+        Object o = structuredSelection.getFirstElement();
+        if (o != null)
+          sel = new StructuredSelection(o);
+      }
+      return sel;
+    }
+
+    /**
+     * Determines DOM node based on object (xsd node)
+     * 
+     * @param object
+     * @return
+     */
+    private Object getObjectForOtherModel(Object object)
+    {
+      Node node = null;
+      if (object instanceof Node)
+      {
+        node = (Node) object;
+      }
+      else if (object instanceof XSDComponent)
+      {
+        node = ((XSDComponent) object).getElement();
+      }
+      else if (object instanceof CategoryAdapter)
+      {
+        node = ((CategoryAdapter) object).getXSDSchema().getElement();
+      }
+      else if (object instanceof XSDBaseAdapter)
+      {
+        if (((XSDBaseAdapter) object).getTarget() instanceof XSDConcreteComponent)
+        {
+          node = ((XSDConcreteComponent) ((XSDBaseAdapter) object).getTarget()).getElement();
+        }
+      }
+      // the text editor can only accept sed nodes!
+      //
+      if (!(node instanceof IDOMNode))
+      {
+        node = null;
+      }
+      return node;
+    }
+
+    public void doubleClick(DoubleClickEvent event)
+    {
+      /*
+       * Selection in outline tree changed so set outline tree's selection into
+       * editor's selection and say it came from outline tree
+       */
+      if (getSelectionManager() != null && getSelectionManager().getEnableNotify())
+      {
+        ISelection selection = getXSDSelection(event.getSelection());
+        if (selection != null)
+        {
+          getSelectionManager().setSelection(selection, fOutlinePage);
+        }
+        if (getTextEditor() != null && selection instanceof IStructuredSelection)
+        {
+          int start = -1;
+          int length = 0;
+          Object o = ((IStructuredSelection) selection).getFirstElement();
+          if (o != null)
+            o = getObjectForOtherModel(o);
+          if (o instanceof IndexedRegion)
+          {
+            start = ((IndexedRegion) o).getStartOffset();
+            length = ((IndexedRegion) o).getEndOffset() - start;
+          }
+          if (start > -1)
+          {
+            getTextEditor().selectAndReveal(start, length);
+          }
+        }
+      }
+    }
+
+    public void selectionChanged(SelectionChangedEvent event)
+    {
+      /*
+       * Selection in outline tree changed so set outline tree's selection into
+       * editor's selection and say it came from outline tree
+       */
+      if (getSelectionManager() != null && getSelectionManager().getEnableNotify())
+      {
+        ISelection selection = getXSDSelection(event.getSelection());
+        if (selection != null)
+        {
+          getSelectionManager().setSelection(selection, fOutlinePage);
+        }
+      }
+    }
+  }
+  /**
+   * Listener on SSE's source editor's selections that converts DOM selections
+   * into xsd selections and notifies XSD selection manager
+   */
+  private class SourceEditorSelectionListener implements ISelectionChangedListener
+  {
+    /**
+     * Determines XSD node based on object (DOM node)
+     * 
+     * @param object
+     * @return
+     */
+    private Object getXSDNode(Object object)
+    {
+      // get the element node
+      Element element = null;
+      if (object instanceof Node)
+      {
+        Node node = (Node) object;
+        if (node != null)
+        {
+          if (node.getNodeType() == Node.ELEMENT_NODE)
+          {
+            element = (Element) node;
+          }
+          else if (node.getNodeType() == Node.ATTRIBUTE_NODE)
+          {
+            element = ((Attr) node).getOwnerElement();
+          }
+        }
+      }
+      Object o = element;
+      if (element != null)
+      {
+        Object modelObject = getXSDSchema().getCorrespondingComponent(element);
+        if (modelObject != null)
+        {
+          o = modelObject;
+          o = XSDAdapterFactory.getInstance().adapt((Notifier) modelObject);
+        }
+      }
+      return o;
+    }
+
+    public void selectionChanged(SelectionChangedEvent event)
+    {
+      if (getSelectionManager().getEnableNotify() && getActivePage() == 1)
+      {
+        ISelection selection = event.getSelection();
+        if (selection instanceof IStructuredSelection)
+        {
+          List xsdSelections = new ArrayList();
+          for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();)
+          {
+            Object domNode = i.next();
+            Object xsdNode = getXSDNode(domNode);
+            if (xsdNode != null)
+            {
+              xsdSelections.add(xsdNode);
+            }
+          }
+          if (!xsdSelections.isEmpty())
+          {
+            StructuredSelection xsdSelection = new StructuredSelection(xsdSelections);
+            getSelectionManager().setSelection(xsdSelection, getTextEditor().getSelectionProvider());
+          }
+        }
+      }
+    }
+  }
+  /**
+   * Listener on XSD's selection manager's selections that converts XSD
+   * selections into DOM selections and notifies SSE's selection provider
+   */
+  private class XSDSelectionManagerSelectionListener implements ISelectionChangedListener
+  {
+    /**
+     * Determines DOM node based on object (xsd node)
+     * 
+     * @param object
+     * @return
+     */
+    private Object getObjectForOtherModel(Object object)
+    {
+      Node node = null;
+      if (object instanceof Node)
+      {
+        node = (Node) object;
+      }
+      else if (object instanceof XSDComponent)
+      {
+        node = ((XSDComponent) object).getElement();
+      }
+      else if (object instanceof CategoryAdapter)
+      {
+        node = ((CategoryAdapter) object).getXSDSchema().getElement();
+      }
+      else if (object instanceof XSDBaseAdapter)
+      {
+        if (((XSDBaseAdapter) object).getTarget() instanceof XSDConcreteComponent)
+        {
+          node = ((XSDConcreteComponent) ((XSDBaseAdapter) object).getTarget()).getElement();
+        }
+      }
+      // the text editor can only accept sed nodes!
+      //
+      if (!(node instanceof IDOMNode))
+      {
+        node = null;
+      }
+      return node;
+    }
+
+    public void selectionChanged(SelectionChangedEvent event)
+    {
+      // do not fire selection in source editor if selection event came
+      // from source editor
+      if (event.getSource() != getTextEditor().getSelectionProvider())
+      {
+        ISelection selection = event.getSelection();
+        if (selection instanceof IStructuredSelection)
+        {
+          List otherModelObjectList = new ArrayList();
+          for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();)
+          {
+            Object modelObject = i.next();
+            Object otherModelObject = getObjectForOtherModel(modelObject);
+            if (otherModelObject != null)
+            {
+              otherModelObjectList.add(otherModelObject);
+            }
+          }
+          if (!otherModelObjectList.isEmpty())
+          {
+            // here's an ugly hack... if we allow text selections to fire during
+            // SetInputToGraphView action we screw up the navigation history!
+            //            
+            //TODO (cs) ... we need to prevent the source editor from messing up the navigation history
+            //
+            if (getActivePage() == 1)
+            {  
+              StructuredSelection nodeSelection = new StructuredSelection(otherModelObjectList);
+              getTextEditor().getSelectionProvider().setSelection(nodeSelection);
+            }  
+          }
+        }
+      }
+    }
+  }
+
+  public INavigationLocation createEmptyNavigationLocation()
+  {
+    if (getActivePage() == 0)
+    {
+      return new DesignViewNavigationLocation(this);
+    }
+    else
+    {
+      return new MultiPageEditorTextSelectionNavigationLocation(getTextEditor(), false);
+    }
+  }
+
+  public INavigationLocation createNavigationLocation()
+  {
+    if (getActivePage() == 0)
+    {
+      try
+      {
+        RootEditPart rootEditPart = graphicalViewer.getRootEditPart();
+        EditPart editPart = rootEditPart.getContents();
+        if (editPart instanceof RootContentEditPart)
+        {
+          RootContentEditPart rootContentEditPart = (RootContentEditPart)editPart;
+          Object input = rootContentEditPart.getInput();      
+          if (input instanceof Adapter)
+          {
+            XSDConcreteComponent concreteComponent = (XSDConcreteComponent)((Adapter)input).getTarget();
+            return new DesignViewNavigationLocation(this, concreteComponent);
+          }
+        }   
+      }
+      catch (Exception e)
+      {
+        e.printStackTrace();
+      }
+      return null;
+    }
+    else
+    {
+      return new MultiPageEditorTextSelectionNavigationLocation(getTextEditor(), true);
+    }
+  }
+}  
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.java
new file mode 100644
index 0000000..0c335f7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * 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.xsd.editor;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS
+{
+  static 
+  {
+    NLS.initializeMessages("org.eclipse.wst.xsd.editor" + ".Messages", Messages.class);
+  }
+
+  public Messages()
+  {
+    super();
+  }
+  
+  public static String UI_LABEL_BASE_TYPE;
+  public static String UI_LABEL_DERIVED_BY;
+  public static String UI_LABEL_INHERIT_FROM;
+  public static String UI_LABEL_INHERIT_BY;
+  public static String UI_LABEL_DOCUMENTATION;
+  public static String UI_LABEL_APP_INFO;
+  public static String UI_LABEL_SET_TYPE;
+  public static String UI_LABEL_TYPE;
+  public static String UI_LABEL_MINOCCURS;
+  public static String UI_LABEL_MAXOCCURS;
+  public static String UI_NO_TYPE;
+  public static String UI_PAGE_HEADING_REFERENCE;
+  public static String UI_LABEL_READ_ONLY;
+  public static String UI_LABEL_COMPONENTS;
+
+
+}
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.properties b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.properties
new file mode 100644
index 0000000..82f42e0
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/Messages.properties
@@ -0,0 +1,32 @@
+###############################################################################
+# 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
+###############################################################################
+
+UI_LABEL_BASE_TYPE = Base Type:
+UI_LABEL_DERIVED_BY = Derived By:
+
+UI_LABEL_INHERIT_FROM = Inherit From:
+UI_LABEL_INHERIT_BY = Inherit By:
+
+UI_LABEL_DOCUMENTATION = Documentation
+UI_LABEL_APP_INFO = App Info
+
+UI_LABEL_SET_TYPE = Set Type
+UI_LABEL_TYPE = Type:
+
+UI_LABEL_MINOCCURS = Minimum Occurrence:
+UI_LABEL_MAXOCCURS = Maximum Occurrence:
+
+UI_PAGE_HEADING_REFERENCE = Reference
+UI_LABEL_READ_ONLY = Read-Only
+
+UI_NO_TYPE = No Type
+
+UI_LABEL_COMPONENTS				= Components:
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorConfiguration.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorConfiguration.java
new file mode 100644
index 0000000..1ba155b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorConfiguration.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * 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.xsd.editor;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.wst.xsd.editor.internal.actions.IXSDToolbarAction;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IExtendedFigureFactory;
+
+public class XSDEditorConfiguration
+{
+  public static final String XSDEDITORCONFIGURATIONEXTENSIONID = "org.eclipse.wst.xsd.ui.XSDEditorExtensionConfiguration";
+  public static final String CLASSNAME = "class";
+  public static final String ADAPTERFACTORY = "adapterFactory";
+  public static final String TOOLBARACTION = "toolbarAction";
+  public static final String FIGUREFACTORY = "figureFactory";
+  public static final String EDITPARTFACTORY = "editPartFactory";
+
+  List definedExtensionsList = null;
+
+  public XSDEditorConfiguration()
+  {
+
+  }
+
+  public XSDAdapterFactory getAdapterFactory()
+  {
+    if (definedExtensionsList == null)
+    {
+      readXSDConfigurationRegistry();
+    }
+    if (!definedExtensionsList.isEmpty())
+    {
+      return ((XSDEditorExtensionProperties) definedExtensionsList.get(0)).getAdapterFactory();
+    }
+    return null;
+  }
+
+  public EditPartFactory getEditPartFactory()
+  {
+    if (definedExtensionsList == null)
+    {
+      readXSDConfigurationRegistry();
+    }
+    if (!definedExtensionsList.isEmpty())
+    {
+      return ((XSDEditorExtensionProperties) definedExtensionsList.get(0)).getEditPartFactory();
+    }
+    return null;
+  }
+
+  public IExtendedFigureFactory getFigureFactory()
+  {
+    if (definedExtensionsList == null)
+    {
+      readXSDConfigurationRegistry();
+    }
+    if (!definedExtensionsList.isEmpty())
+    {
+      return ((XSDEditorExtensionProperties) definedExtensionsList.get(0)).getFigureFactory();
+    }
+    return null;
+  }
+
+  public List getToolbarActions()
+  {
+    if (definedExtensionsList == null)
+    {
+      readXSDConfigurationRegistry();
+    }
+    if (!definedExtensionsList.isEmpty())
+    {
+      return ((XSDEditorExtensionProperties) definedExtensionsList.get(0)).getActionList();
+    }
+    return Collections.EMPTY_LIST;
+  }
+
+  protected Object loadClass(IConfigurationElement element, String classString)
+  {
+    String pluginId = element.getDeclaringExtension().getContributor().getName();
+
+    try
+    {
+      Class theClass = Platform.getBundle(pluginId).loadClass(classString);
+      Object instance = theClass.newInstance();
+
+      return instance;
+    }
+    catch (Exception e)
+    {
+
+    }
+    return null;
+  }
+
+  public void readXSDConfigurationRegistry()
+  {
+    IConfigurationElement[] xsdEditorExtensionList = Platform.getExtensionRegistry().getConfigurationElementsFor(XSDEDITORCONFIGURATIONEXTENSIONID);
+
+    boolean definedExtensionsExist = (xsdEditorExtensionList != null && xsdEditorExtensionList.length > 0);
+
+    definedExtensionsList = new ArrayList();
+
+    if (definedExtensionsExist)
+    {
+      for (int i = 0; i < xsdEditorExtensionList.length; i++)
+      {
+        XSDEditorExtensionProperties properties = new XSDEditorExtensionProperties();
+        definedExtensionsList.add(properties);
+
+        IConfigurationElement element = xsdEditorExtensionList[i];
+        String adapterFactoryClass = element.getAttribute(ADAPTERFACTORY);
+        if (adapterFactoryClass != null)
+        {
+          Object object = loadClass(element, adapterFactoryClass);
+          XSDAdapterFactory adapterFactory = null;
+          if (object instanceof XSDAdapterFactory)
+          {
+            adapterFactory = (XSDAdapterFactory) object;
+            properties.setAdapterFactory(adapterFactory);
+          }
+        }
+
+        String figureFactoryClass = element.getAttribute(FIGUREFACTORY);
+        if (figureFactoryClass != null)
+        {
+          Object object = loadClass(element, figureFactoryClass);
+          IExtendedFigureFactory figureFactory = null;
+          if (object instanceof IExtendedFigureFactory)
+          {
+            figureFactory = (IExtendedFigureFactory) object;
+            properties.setFigureFactoryList(figureFactory);
+          }
+        }
+
+        IConfigurationElement[] toolbarActions = element.getChildren(TOOLBARACTION);
+        List actionList = new ArrayList();
+        if (toolbarActions != null)
+        {
+          for (int j = 0; j < toolbarActions.length; j++)
+          {
+            IConfigurationElement actionElement = toolbarActions[j];
+            String actionClass = actionElement.getAttribute(CLASSNAME);
+            IXSDToolbarAction action = null;
+            if (actionClass != null)
+            {
+              Object object = loadClass(actionElement, actionClass);
+              if (object instanceof IXSDToolbarAction)
+              {
+                action = (IXSDToolbarAction) object;
+                actionList.add(action);
+              }
+            }
+          }
+        }
+        properties.setActionList(actionList);
+
+        String editPartFactoryClass = element.getAttribute(EDITPARTFACTORY);
+        if (editPartFactoryClass != null)
+        {
+          Object object = loadClass(element, editPartFactoryClass);
+          EditPartFactory editPartFactory = null;
+          if (object instanceof EditPartFactory)
+          {
+            editPartFactory = (EditPartFactory) object;
+            properties.setEditPartFactoryList(editPartFactory);
+          }
+        }
+
+      }
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorContextIds.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorContextIds.java
similarity index 99%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorContextIds.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorContextIds.java
index 8f95f5c..1e4bfc5 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorContextIds.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorContextIds.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal;
+package org.eclipse.wst.xsd.editor;
 
 /**
  * Context help id constants.
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorExtensionProperties.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorExtensionProperties.java
new file mode 100644
index 0000000..f0464ea
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorExtensionProperties.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * 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.xsd.editor;
+
+import java.util.List;
+
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IExtendedFigureFactory;
+
+public class XSDEditorExtensionProperties
+{
+  XSDAdapterFactory adapterFactory;
+  IExtendedFigureFactory figureFactory;
+  EditPartFactory editPartFactory;
+  List actionList;
+
+  public XSDEditorExtensionProperties()
+  {
+
+  }
+
+  public void setActionList(List actionList)
+  {
+    this.actionList = actionList;
+  }
+
+  public void setAdapterFactory(XSDAdapterFactory adapterFactory)
+  {
+    this.adapterFactory = adapterFactory;
+  }
+
+  public void setEditPartFactoryList(EditPartFactory editPartFactory)
+  {
+    this.editPartFactory = editPartFactory;
+  }
+
+  public void setFigureFactoryList(IExtendedFigureFactory figureFactory)
+  {
+    this.figureFactory = figureFactory;
+  }
+
+  public List getActionList()
+  {
+    return actionList;
+  }
+
+  public XSDAdapterFactory getAdapterFactory()
+  {
+    return adapterFactory;
+  }
+
+  public EditPartFactory getEditPartFactory()
+  {
+    return editPartFactory;
+  }
+
+  public IExtendedFigureFactory getFigureFactory()
+  {
+    return figureFactory;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorPlugin.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorPlugin.java
new file mode 100644
index 0000000..25580d1
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDEditorPlugin.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ * 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.xsd.editor;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.plugin.*;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.ApplicationInformationPropertiesRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.osgi.framework.BundleContext;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.text.MessageFormat;
+import java.util.*;
+
+public class XSDEditorPlugin extends AbstractUIPlugin
+{
+  public static final String PLUGIN_ID = "org.eclipse.wst.xsd.ui";
+  public static final String CONST_XSD_DEFAULT_PREFIX_TEXT = "org.eclipse.wst.xmlschema.xsdDefaultPrefixText";
+  public static final String CONST_PREFERED_BUILT_IN_TYPES = "org.eclipse.wst.xmlschema.preferedBuiltInTypes"; 
+  public static final String CUSTOM_LIST_SEPARATOR = "\n";
+  public static final String APPINFO_EXTENSIONID = "org.eclipse.wst.xsd.ui.ApplicationInformationDescription";
+  public final static String DEFAULT_TARGET_NAMESPACE = "http://www.example.org";
+  
+	//The shared instance.
+	private static XSDEditorPlugin plugin;
+	//Resource bundle.
+	private ResourceBundle resourceBundle;
+  private ApplicationInformationPropertiesRegistry registry;
+  private XSDEditorConfiguration xsdEditorConfiguration = null;
+  
+  public static final String CONST_USE_SIMPLE_EDIT_MODE = PLUGIN_ID + ".useSimpleEditMode";
+  public static final String CONST_SHOW_INHERITED_CONTENT = PLUGIN_ID + ".showInheritedContent";
+
+  public static final String CONST_XSD_LANGUAGE_QUALIFY = "org.eclipse.wst.xmlschema.xsdQualify";
+  public static final String CONST_DEFAULT_TARGET_NAMESPACE = "org.eclipse.wst.xmlschema.defaultTargetnamespaceText";
+	/**
+	 * The constructor.
+	 */
+	public XSDEditorPlugin() {
+		super();
+		plugin = this;
+	}
+
+	/**
+	 * This method is called upon plug-in activation
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/**
+	 * This method is called when the plug-in is stopped
+	 */
+	public void stop(BundleContext context) throws Exception {
+		super.stop(context);
+		plugin = null;
+		resourceBundle = null;
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static XSDEditorPlugin getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the string from the plugin's resource bundle,
+	 * or 'key' if not found.
+	 */
+	public static String getResourceString(String key) {
+		ResourceBundle bundle = XSDEditorPlugin.getDefault().getResourceBundle();
+		try {
+			return (bundle != null) ? bundle.getString(key) : key;
+		} catch (MissingResourceException e) {
+			return key;
+		}
+	}
+  
+  public static String getResourceString(String key, Object o)
+  {
+      return getResourceString(key, new Object[] { o});
+  }
+
+  public static String getResourceString(String key, Object[] objects)
+  {
+      return MessageFormat.format(getResourceString(key), objects);
+  }
+	
+  public static String getResourceString(String key, Object o1, Object o2)
+  {
+      return getResourceString(key, new Object[] { o1, o2});
+  }
+
+	/**
+	 * Returns the plugin's resource bundle,
+	 */
+	public ResourceBundle getResourceBundle() {
+		try {
+			if (resourceBundle == null)
+				// resourceBundle = ResourceBundle.getBundle("org.eclipse.wst.xsd.editor.EditorPluginResources");
+        resourceBundle = Platform.getResourceBundle(getBundle());
+		} catch (MissingResourceException x) {
+			resourceBundle = null;
+		}
+		return resourceBundle;
+	}
+
+	/**
+	 * Returns an image descriptor for the image file at the given
+	 * plug-in relative path.
+	 *
+	 * @param path the path
+	 * @return the image descriptor
+	 */
+	public static ImageDescriptor getImageDescriptor(String path) {
+		return AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.wst.xsd.ui", path);
+	}
+	
+	public static ImageDescriptor getImageDescriptor(String name, boolean getBaseURL) {
+		try {
+			URL installURL = getDefault().getBundle().getEntry("/"); //$NON-NLS-1$
+			String imageString = getBaseURL ? "icons/" + name : name;
+
+			URL imageURL = new URL(installURL, imageString);
+			return ImageDescriptor.createFromURL(imageURL);
+		} catch (MalformedURLException e) {
+			return null;
+		}
+	}
+
+	
+	public static XSDEditorPlugin getPlugin() {
+		return plugin;
+	}
+
+	public static String getXSDString(String key) {
+		return getResourceString(key);
+	}
+
+  /**
+   * This gets the string resource and does one substitution.
+   */
+  public String getString(String key, Object s1) {
+    return MessageFormat.format(Platform.getResourceBundle(getBundle()).getString(key), new Object[]{s1});
+  }
+  
+	public static Image getXSDImage(String iconName) {
+		return getDefault().getImage("internal/" + iconName);
+	}
+
+	public Image getImage(String iconName) {
+		ImageRegistry imageRegistry = getImageRegistry();
+
+		if (imageRegistry.get(iconName) != null) {
+			return imageRegistry.get(iconName);
+		}
+		else {
+			imageRegistry.put(iconName, ImageDescriptor.createFromFile(getClass(), iconName));
+			return imageRegistry.get(iconName);
+		}
+	}
+	
+	public URL getBaseURL() {
+		return getDescriptor().getInstallURL();
+	}
+
+	public Image getIconImage(String object) {
+		try {
+			return ExtendedImageRegistry.getInstance().getImage(new URL(getBaseURL() + "icons/" + object + ".gif"));
+		}
+		catch (MalformedURLException exception) {
+			System.out.println("Failed to load image for '" + object + "'");
+		}
+		return null;
+	}
+
+  public boolean getShowInheritedContent()
+  {
+    return getPreferenceStore().getBoolean(CONST_SHOW_INHERITED_CONTENT);
+  }
+  
+  protected void initializeDefaultPreferences(IPreferenceStore store)
+  {
+    store.setDefault(CONST_SHOW_INHERITED_CONTENT, false);
+    store.setDefault(CONST_XSD_DEFAULT_PREFIX_TEXT, "xsd");
+    
+    //Even the last item in the list must contain a trailing List separator
+    store.setDefault(CONST_PREFERED_BUILT_IN_TYPES,     		
+    		"boolean"+ CUSTOM_LIST_SEPARATOR +
+    		"date" + CUSTOM_LIST_SEPARATOR +
+    		"dateTime" + CUSTOM_LIST_SEPARATOR +
+    		"double" + CUSTOM_LIST_SEPARATOR +
+    		"float" + CUSTOM_LIST_SEPARATOR +
+    		"hexBinary" + CUSTOM_LIST_SEPARATOR +
+    		"int" + CUSTOM_LIST_SEPARATOR +
+    		"string" + CUSTOM_LIST_SEPARATOR +
+    		"time" + CUSTOM_LIST_SEPARATOR);
+  }
+
+  public ApplicationInformationPropertiesRegistry getApplicationInformationPropertiesRegistry()
+  {
+    if (registry == null)
+    {
+      registry = new ApplicationInformationPropertiesRegistry(APPINFO_EXTENSIONID);
+    }
+    return registry;
+  }
+
+  public XSDEditorConfiguration getXSDEditorConfiguration()
+  {
+    if (xsdEditorConfiguration == null)
+    {
+      xsdEditorConfiguration = new XSDEditorConfiguration();
+    }
+    return xsdEditorConfiguration;
+  }
+
+  /**
+   * Get the xml schema default namespace prefix
+   */
+  public String getXMLSchemaPrefix()
+  {
+    return getPreferenceStore().getString(CONST_XSD_DEFAULT_PREFIX_TEXT);
+  }
+
+  
+  
+  
+  
+  
+  
+  
+  
+
+  /**
+   * Get the xml schema default target namespace
+   */
+  public String getXMLSchemaTargetNamespace() {
+    String targetNamespace = getPreferenceStore().getString(CONST_DEFAULT_TARGET_NAMESPACE);
+    if (!targetNamespace.endsWith("/")) {
+      targetNamespace = targetNamespace + "/";
+    }
+    return targetNamespace;
+  }
+
+  /**
+   * Get the xml schema language qualification
+   */
+  public boolean isQualifyXMLSchemaLanguage() {
+    return getPreferenceStore().getBoolean(CONST_XSD_LANGUAGE_QUALIFY);
+  }
+
+  public static Shell getShell() {
+    return getPlugin().getWorkbench().getActiveWorkbenchWindow().getShell();
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDElementReferenceEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDElementReferenceEditManager.java
new file mode 100644
index 0000000..105f206
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDElementReferenceEditManager.java
@@ -0,0 +1,117 @@
+package org.eclipse.wst.xsd.editor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentDescriptionProvider;
+import org.eclipse.wst.xsd.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.editor.internal.search.XSDSearchListDialogDelegate;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDElementCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateElementReferenceAndManageDirectivesCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateElementReferenceCommand;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSchema;
+
+public class XSDElementReferenceEditManager implements ComponentReferenceEditManager
+{  
+  protected IFile currentFile;
+  protected XSDSchema[] schemas;
+  
+  public XSDElementReferenceEditManager(IFile currentFile, XSDSchema[] schemas)
+  {
+    this.currentFile = currentFile;
+    this.schemas = schemas;
+  }
+  
+  public void addToHistory(ComponentSpecification component)
+  {
+    // TODO (cs) implement me!    
+  }
+
+  public IComponentDialog getBrowseDialog()
+  {
+    //XSDSetExistingTypeDialog dialog = new XSDSetExistingTypeDialog(currentFile, schemas);
+    //return dialog;
+    XSDSearchListDialogDelegate dialogDelegate = 
+    	new XSDSearchListDialogDelegate(XSDSearchListDialogDelegate.ELEMENT_META_NAME, currentFile, schemas);
+    return dialogDelegate;
+  }
+
+  public IComponentDescriptionProvider getComponentDescriptionProvider()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public ComponentSpecification[] getHistory()
+  {
+    // TODO (cs) implement this properly - should this history be global or local to each editor?
+    // This is something we should play around with ourselves to see what feels right.
+    //
+    List list = new ArrayList();
+    ComponentSpecification result[] = new ComponentSpecification[list.size()];
+    list.toArray(result);
+    return result;
+  }
+
+  public IComponentDialog getNewDialog()
+  {
+    return null;
+  }
+
+  public ComponentSpecification[] getQuickPicks()
+  {
+    // TODO (cs) implement this properly - we should be providing a list of the 
+    // most 'common' built in schema types here
+    // I believe Trung will be working on a perference page to give us this list
+    // for now let's hard code some values
+    //
+    List list = new ArrayList();
+    
+    ComponentSpecification result[] = new ComponentSpecification[list.size()];
+    list.toArray(result);
+    return result;
+  }
+  
+//TODO not changed yet
+  public void modifyComponentReference(Object referencingObject, ComponentSpecification component)
+  {    
+    if (referencingObject instanceof Adapter)
+    {
+      Adapter adapter = (Adapter)referencingObject;
+      if (adapter.getTarget() instanceof XSDConcreteComponent)
+      {
+        XSDElementDeclaration concreteComponent = (XSDElementDeclaration)adapter.getTarget();
+        if (component.isNew())
+        {  
+          XSDElementDeclaration elementDec = null;
+          if (component.getMetaName() == IXSDSearchConstants.ELEMENT_META_NAME)
+          {  
+            AddXSDElementCommand command = new AddXSDElementCommand("Add Element", concreteComponent.getSchema());
+            command.setNameToAdd(component.getName());
+            command.execute();
+            elementDec = (XSDElementDeclaration) command.getAddedComponent();
+          }
+          if (elementDec != null && elementDec instanceof XSDElementDeclaration)
+          {
+            Command command = new UpdateElementReferenceCommand("Update Element reference",
+            		concreteComponent, elementDec);
+            command.execute();
+          }  
+        }  
+        else
+        {
+          Command command = new UpdateElementReferenceAndManageDirectivesCommand(concreteComponent, component.getName(), component.getQualifier(), component.getFile());
+          command.execute();
+        }  
+      }
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDFileEditorInput.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDFileEditorInput.java
new file mode 100644
index 0000000..7c8ee0a
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDFileEditorInput.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * 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.xsd.editor;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.xsd.XSDSchema;
+
+public class XSDFileEditorInput extends FileEditorInput
+{
+  private IFile file;
+  private XSDSchema schema;
+  private String editorName;
+
+  public XSDFileEditorInput(IFile file, XSDSchema schema) {
+    super(file);
+    if (file == null) {
+      throw new IllegalArgumentException();
+    }
+    this.file = file;
+    this.schema = schema;
+    editorName = file.getName();
+  }
+
+  public IFile getFile()
+  {
+    return file;
+  }
+
+  public XSDSchema getSchema()
+  {
+    return schema;
+  }
+
+  public void setEditorName(String name)
+  {
+    editorName = name;
+  }
+ 
+  public String getName()
+  {
+    if (editorName != null)
+    {
+      return editorName;
+    }
+    return super.getName();
+  }
+  
+  public String getToolTipText()
+  {
+    if (schema != null)
+    {
+      String ns = schema.getTargetNamespace();
+      if (ns != null && ns.length() > 0)
+        return "Target Namespace: " + ns;
+      else
+        return "No Namespace";
+    }
+    return super.getToolTipText();
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDMultiPageEditorContributor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDMultiPageEditorContributor.java
new file mode 100644
index 0000000..6eeaa05
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDMultiPageEditorContributor.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * 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.xsd.editor;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.gef.editparts.ZoomManager;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
+import org.eclipse.gef.ui.actions.ZoomInRetargetAction;
+import org.eclipse.gef.ui.actions.ZoomOutRetargetAction;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.ide.IDEActionFactory;
+import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.texteditor.ITextEditorActionConstants;
+import org.eclipse.wst.xsd.editor.internal.actions.IXSDToolbarAction;
+
+/**
+ * Manages the installation/deinstallation of global actions for multi-page
+ * editors. Responsible for the redirection of global actions to the active
+ * editor. Multi-page contributor replaces the contributors for the individual
+ * editors in the multi-page editor.
+ */
+public class XSDMultiPageEditorContributor extends MultiPageEditorActionBarContributor
+{
+  private IEditorPart activeEditorPart;
+
+  /**
+   * Creates a multi-page contributor.
+   */
+  public XSDMultiPageEditorContributor()
+  {
+    super();
+  }
+
+  /**
+   * Returns the action registed with the given text editor.
+   * 
+   * @return IAction or null if editor is null.
+   */
+  protected IAction getAction(ITextEditor editor, String actionID)
+  {
+    return (editor == null ? null : editor.getAction(actionID));
+  }
+
+  /*
+   * (non-JavaDoc) Method declared in
+   * AbstractMultiPageEditorActionBarContributor.
+   */
+
+  public void setActivePage(IEditorPart part)
+  {
+    if (activeEditorPart == part)
+      return;
+
+    activeEditorPart = part;
+
+    IActionBars actionBars = getActionBars();
+
+    if (part != null)
+    {
+      Object adapter = part.getAdapter(ActionRegistry.class);
+      if (adapter instanceof ActionRegistry)
+      {
+        ActionRegistry registry = (ActionRegistry) adapter;
+        actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), registry.getAction(ActionFactory.UNDO.getId()));
+        actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), registry.getAction(ActionFactory.REDO.getId()));
+        actionBars.updateActionBars();
+      }
+    }
+
+    if (actionBars != null)
+    {
+
+      ITextEditor editor = (part instanceof ITextEditor) ? (ITextEditor) part : null;
+
+      actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), getAction(editor, ITextEditorActionConstants.DELETE));
+      actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), getAction(editor, ITextEditorActionConstants.UNDO));
+      actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), getAction(editor, ITextEditorActionConstants.REDO));
+      actionBars.setGlobalActionHandler(ActionFactory.CUT.getId(), getAction(editor, ITextEditorActionConstants.CUT));
+      actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), getAction(editor, ITextEditorActionConstants.COPY));
+      actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), getAction(editor, ITextEditorActionConstants.PASTE));
+      actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), getAction(editor, ITextEditorActionConstants.SELECT_ALL));
+      actionBars.setGlobalActionHandler(ActionFactory.FIND.getId(), getAction(editor, ITextEditorActionConstants.FIND));
+      actionBars.setGlobalActionHandler(IDEActionFactory.BOOKMARK.getId(), getAction(editor, IDEActionFactory.BOOKMARK.getId()));
+
+      actionBars.updateActionBars();
+    }
+  }
+
+  public void setActiveEditor(IEditorPart part)
+  {
+    IEditorPart activeNestedEditor = null;
+    if (part instanceof MultiPageEditorPart)
+    {
+      activeNestedEditor = ((MultiPageEditorPart) part);
+    }
+    setActivePage(activeNestedEditor);
+    List list = XSDEditorPlugin.getPlugin().getXSDEditorConfiguration().getToolbarActions();
+    for (Iterator i = list.iterator(); i.hasNext(); )
+    {
+      ((IXSDToolbarAction)i.next()).setEditorPart(activeNestedEditor);
+    }
+  }
+
+  public void contributeToMenu(IMenuManager manager)
+  {
+    IMenuManager menu = new MenuManager("&XSD Editor");
+    manager.prependToGroup(IWorkbenchActionConstants.MB_ADDITIONS, menu);
+
+    // Add extension menu actions
+    List list = XSDEditorPlugin.getPlugin().getXSDEditorConfiguration().getToolbarActions();
+    for (Iterator i = list.iterator(); i.hasNext(); )
+    {
+      menu.add((IXSDToolbarAction)i.next());
+    }
+
+    menu.add((new ZoomInRetargetAction()));
+    menu.add((new ZoomOutRetargetAction()));
+
+    menu.updateAll(true);
+  }
+
+  public void contributeToToolBar(IToolBarManager manager)
+  {
+    manager.add(new Separator());
+    // Add extension toolbar actions
+    List list = XSDEditorPlugin.getPlugin().getXSDEditorConfiguration().getToolbarActions();
+    for (Iterator i = list.iterator(); i.hasNext(); )
+    {
+      manager.add((IXSDToolbarAction)i.next());
+    }
+
+    manager.add(new Separator());
+    String[] zoomStrings = new String[] { ZoomManager.FIT_ALL, ZoomManager.FIT_HEIGHT, ZoomManager.FIT_WIDTH };
+    manager.add(new ZoomComboContributionItem(getPage(), zoomStrings));
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDSelectionMapper.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDSelectionMapper.java
new file mode 100644
index 0000000..792e0e4
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDSelectionMapper.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * 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.xsd.editor;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+
+public class XSDSelectionMapper implements ISelectionMapper
+{
+  public ISelection mapSelection(ISelection selection)
+  {
+    List list = new ArrayList();
+    if (selection instanceof StructuredSelection)
+    {  
+      StructuredSelection structuredSelection = (StructuredSelection)selection;
+      for (Iterator i = structuredSelection.iterator(); i.hasNext(); )
+      {
+        Object o = i.next();
+        if (o instanceof Adapter)
+        {
+          list.add(((Adapter)o).getTarget());
+        }  
+        else
+        {
+          list.add(o);
+        }  
+      }  
+    }
+    return new StructuredSelection(list);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTabbedPropertySheetPage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTabbedPropertySheetPage.java
new file mode 100644
index 0000000..d7a4f55
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTabbedPropertySheetPage.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * 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.xsd.editor;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDElementDeclarationAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDParticleAdapter;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+
+public class XSDTabbedPropertySheetPage extends TabbedPropertySheetPage implements IADTObjectListener
+{
+  XSDBaseAdapter oldSelection;
+  public XSDTabbedPropertySheetPage(ITabbedPropertySheetPageContributor tabbedPropertySheetPageContributor)
+  {
+    super(tabbedPropertySheetPageContributor);
+  }
+  
+  /* (non-Javadoc)
+   * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
+   */
+  public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+
+      Object selected = ((StructuredSelection)selection).getFirstElement();
+      System.out.println(selected);
+      if (selected instanceof XSDBaseAdapter)
+      {
+        XSDBaseAdapter adapter = (XSDBaseAdapter)selected;
+        if (oldSelection != null)
+        {
+          oldSelection.unregisterListener(this);
+          if (oldSelection instanceof XSDElementDeclarationAdapter)
+          {
+            XSDElementDeclaration elem = (XSDElementDeclaration)((XSDElementDeclarationAdapter)oldSelection).getTarget();
+            Adapter adap = XSDAdapterFactory.getInstance().adapt(elem.getContainer());
+            if (adap instanceof XSDParticleAdapter)
+            {
+              XSDParticleAdapter particleAdapter = (XSDParticleAdapter)adap;
+              particleAdapter.unregisterListener(this);
+            }
+          }
+        }
+        if (adapter instanceof XSDElementDeclarationAdapter)
+        {
+          XSDElementDeclaration elem = (XSDElementDeclaration)((XSDElementDeclarationAdapter)adapter).getTarget();
+          Adapter adap = XSDAdapterFactory.getInstance().adapt(elem.getContainer());
+          if (adap instanceof XSDParticleAdapter)
+          {
+            XSDParticleAdapter particleAdapter = (XSDParticleAdapter)adap;
+            particleAdapter.registerListener(this);
+          }
+          if (elem.isElementDeclarationReference())
+          {
+            XSDElementDeclarationAdapter resolvedElementAdapter = (XSDElementDeclarationAdapter)XSDAdapterFactory.getInstance().adapt(elem.getResolvedElementDeclaration());
+            resolvedElementAdapter.registerListener(this);
+          }
+        }
+        adapter.registerListener(this);
+        oldSelection = adapter;
+        Object model = adapter.getTarget();
+        if (model instanceof XSDConcreteComponent)
+        {
+          selection = new StructuredSelection((XSDConcreteComponent)model);
+        }
+        super.selectionChanged(part, selection);
+        return;
+      }
+      super.selectionChanged(part, selection);
+  }
+  
+  public void propertyChanged(Object object, String property)
+  {
+    if (getCurrentTab() != null)
+    {
+      refresh();
+    }
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTypeReferenceEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTypeReferenceEditManager.java
new file mode 100644
index 0000000..f4c4777
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/XSDTypeReferenceEditManager.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * 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.xsd.editor;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentDescriptionProvider;
+import org.eclipse.wst.xsd.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.editor.internal.dialogs.NewTypeDialog;
+import org.eclipse.wst.xsd.editor.internal.search.XSDSearchListDialogDelegate;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDComplexTypeDefinitionCommand;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDSimpleTypeDefinitionCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateTypeReferenceAndManageDirectivesCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateTypeReferenceCommand;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDTypeReferenceEditManager implements ComponentReferenceEditManager
+{  
+  protected IFile currentFile;
+  protected XSDSchema[] schemas;
+  
+  public XSDTypeReferenceEditManager(IFile currentFile, XSDSchema[] schemas)
+  {
+    this.currentFile = currentFile;
+    this.schemas = schemas;
+  }
+  
+  public void addToHistory(ComponentSpecification component)
+  {
+    // TODO (cs) implement me!    
+  }
+
+  public IComponentDialog getBrowseDialog()
+  {
+    //XSDSetExistingTypeDialog dialog = new XSDSetExistingTypeDialog(currentFile, schemas);
+    //return dialog;
+    XSDSearchListDialogDelegate dialogDelegate = new XSDSearchListDialogDelegate(XSDSearchListDialogDelegate.TYPE_META_NAME, currentFile, schemas);
+    return dialogDelegate;
+  }
+
+  public IComponentDescriptionProvider getComponentDescriptionProvider()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public ComponentSpecification[] getHistory()
+  {
+    // TODO (cs) implement this properly - should this history be global or local to each editor?
+    // This is something we should play around with ourselves to see what feels right.
+    //
+    List list = new ArrayList();
+    ComponentSpecification result[] = new ComponentSpecification[list.size()];
+    list.toArray(result);
+    return result;
+  }
+
+  public IComponentDialog getNewDialog()
+  {
+    return new NewTypeDialog();
+  }
+
+  public ComponentSpecification[] getQuickPicks()
+  {
+    // TODO (cs) implement this properly - we should be providing a list of the 
+    // most 'common' built in schema types here
+    // I believe Trung will be working on a perference page to give us this list
+    // for now let's hard code some values
+    //
+    List list = new ArrayList();
+    list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "boolean", null));
+    list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "date", null));
+    list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "dateTime", null));    
+    list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "double", null));
+    list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "float", null)); 
+    list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "hexBinary", null));
+    list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "int", null));    
+    list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "string", null));
+    list.add(new ComponentSpecification(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "time", null));       
+    ComponentSpecification result[] = new ComponentSpecification[list.size()];
+    list.toArray(result);
+    return result;
+  }
+  
+
+  public void modifyComponentReference(Object referencingObject, ComponentSpecification component)
+  {
+    XSDConcreteComponent concreteComponent = null;
+    if (referencingObject instanceof Adapter)
+    {
+      Adapter adpater = (Adapter)referencingObject;
+      if (adpater.getTarget() instanceof XSDConcreteComponent)
+      {
+        concreteComponent = (XSDConcreteComponent)adpater.getTarget();
+      }
+    }
+    else if (referencingObject instanceof XSDConcreteComponent)
+    {
+      concreteComponent = (XSDConcreteComponent) referencingObject;
+    }
+    
+    if (concreteComponent != null)
+    {
+      if (component.isNew())
+      {  
+        XSDTypeDefinition td = null;
+        if (component.getMetaName() == IXSDSearchConstants.COMPLEX_TYPE_META_NAME)
+        {  
+          AddXSDComplexTypeDefinitionCommand command = new AddXSDComplexTypeDefinitionCommand("Add Complex Type", concreteComponent.getSchema());
+          command.setNameToAdd(component.getName());
+          command.execute();
+          td = command.getCreatedComplexType();
+        }
+        else
+        {
+          AddXSDSimpleTypeDefinitionCommand command = new AddXSDSimpleTypeDefinitionCommand("Add Simple Type", concreteComponent.getSchema());
+          command.setNameToAdd(component.getName());
+          command.execute();
+          td = command.getCreatedSimpleType();
+        }  
+        if (td != null)
+        {
+          Command command = new UpdateTypeReferenceCommand(concreteComponent, td);
+          command.execute();
+        }  
+      }  
+      else
+      {  
+        Command command = new UpdateTypeReferenceAndManageDirectivesCommand(concreteComponent, component.getName(), component.getQualifier(), component.getFile());
+        command.execute();
+      }  
+    }  
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/actions/IXSDToolbarAction.java
similarity index 62%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/actions/IXSDToolbarAction.java
index 21a1f54..d5c6ca8 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/actions/IXSDToolbarAction.java
@@ -1,19 +1,19 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.figures;
+package org.eclipse.wst.xsd.editor.internal.actions;
 
-import org.eclipse.draw2d.IFigure;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.ui.IEditorPart;
 
-
-public interface PostLayoutManager
+public interface IXSDToolbarAction extends IAction
 {
-  public void postLayout(IFigure figure);                    
+  public void setEditorPart(IEditorPart editorPart);
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/CategoryAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/CategoryAdapter.java
new file mode 100644
index 0000000..6ba89c3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/CategoryAdapter.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeDeclarationAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDComplexTypeDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDSimpleTypeDefinitionAction;
+import org.eclipse.xsd.XSDSchema;
+
+public class CategoryAdapter extends XSDBaseAdapter implements IActionProvider, IADTObjectListener
+{
+  protected String text;
+  protected Image image;
+  protected Object parent;
+  protected int groupType;
+  Collection children;
+  XSDSchema xsdSchema;
+
+  public CategoryAdapter(String label, Image image, Collection children, XSDSchema xsdSchema, int groupType)
+  {
+    this.text = label;
+    this.image = image;
+    this.parent = xsdSchema;
+    this.xsdSchema = xsdSchema;
+    this.target = xsdSchema;
+    this.children = children;
+    this.groupType = groupType;
+  }
+
+  public final static int ATTRIBUTES = 1;
+  public final static int ELEMENTS = 2;
+  public final static int TYPES = 3;
+  public final static int GROUPS = 5;
+  public final static int DIRECTIVES = 6;
+  public final static int NOTATIONS = 7;
+  public final static int ATTRIBUTE_GROUPS = 8;
+  public final static int IDENTITY_CONSTRAINTS = 9;
+  public final static int ANNOTATIONS = 10;
+
+  public XSDSchema getXSDSchema()
+  {
+    return xsdSchema;
+  }
+
+  public int getGroupType()
+  {
+    return groupType;
+  }
+
+  public Image getImage()
+  {
+    return image;
+  }
+
+  public String getText()
+  {
+    return text;
+  }
+
+  public ITreeElement[] getChildren()
+  {
+    return (ITreeElement[]) children.toArray(new ITreeElement[0]);
+  }
+
+  public void setChildren(Collection list)
+  {
+    children = list;
+  }
+
+  public Object getParent(Object element)
+  {
+    return xsdSchema;
+  }
+
+  public boolean hasChildren(Object element)
+  {
+    return true;
+  }
+
+  public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+  {
+
+  }
+
+  public String[] getActions(Object object)
+  {    
+    Collection actionIDs = new ArrayList();
+    
+    switch (groupType)
+    {
+      case TYPES : {
+        actionIDs.add(AddXSDComplexTypeDefinitionAction.ID);
+        actionIDs.add(AddXSDSimpleTypeDefinitionAction.ID);
+        break;
+      }
+      case ELEMENTS : {
+        actionIDs.add(AddXSDElementAction.ID);
+        break;
+      }
+      case GROUPS : {
+        actionIDs.add(AddXSDModelGroupDefinitionAction.MODELGROUPDEFINITION_ID);
+        break;
+      }
+      case ATTRIBUTES : {
+        actionIDs.add(AddXSDAttributeDeclarationAction.ID);
+        break;
+      }
+      case ATTRIBUTE_GROUPS : {
+        actionIDs.add(AddXSDAttributeGroupDefinitionAction.ID);
+        break;
+      }
+      case DIRECTIVES : {
+        break;
+      }
+    }
+    return (String [])actionIDs.toArray(new String[0]);
+  }
+  
+  public void propertyChanged(Object object, String property)
+  {
+    if (getText().equals(property))
+      notifyListeners(this, property);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAdapterFactory.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAdapterFactory.java
new file mode 100644
index 0000000..7273e03
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAdapterFactory.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDSwitch;
+
+public class XSDAdapterFactory extends AdapterFactoryImpl
+{
+  protected static XSDAdapterFactory instance;
+  
+  public static XSDAdapterFactory getInstance()
+  {
+    if (instance == null)
+    {
+      // first use the one defined by the configuration
+      instance = XSDEditorPlugin.getPlugin().getXSDEditorConfiguration().getAdapterFactory();
+      // if there isn't one, then use the default
+      if (instance == null)
+        instance = new XSDAdapterFactory();
+    }
+    return instance;
+  }
+  
+  public Adapter createAdapter(Notifier target)
+  {
+    XSDSwitch xsdSwitch = new XSDSwitch()
+    {
+      public Object caseXSDSchemaDirective(XSDSchemaDirective object)
+      {
+        return new XSDSchemaDirectiveAdapter();
+      }
+      
+      public Object caseXSDWildcard(XSDWildcard object)
+      {
+        return new XSDWildcardAdapter();
+      }
+      
+      public Object caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition object)
+      {
+        return new XSDAttributeGroupDefinitionAdapter();
+      }
+
+      public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition object)
+      {
+        return new XSDModelGroupDefinitionAdapter();
+      }
+      
+      public Object caseXSDAttributeDeclaration(XSDAttributeDeclaration object)
+      {
+        return new XSDAttributeDeclarationAdapter();
+      }
+
+      public Object caseXSDAttributeUse(XSDAttributeUse object)
+      {
+        return new XSDAttributeUseAdapter();
+      }
+      
+      public Object caseXSDParticle(XSDParticle object)
+      {
+        return new XSDParticleAdapter();
+      }
+
+      public Object caseXSDElementDeclaration(XSDElementDeclaration object)
+      {
+        return new XSDElementDeclarationAdapter();
+      }
+      
+      public Object caseXSDSimpleTypeDefinition(XSDSimpleTypeDefinition object)
+      {
+        // TODO Auto-generated method stub
+        return new XSDSimpleTypeDefinitionAdapter();
+      }
+      
+      public Object caseXSDComplexTypeDefinition(XSDComplexTypeDefinition object)
+      {
+        // we don't like exposing the 'anyType' type as a visible complex type
+        // so we adapt it in a specialized way so that it's treated as simple type
+        // that way it doesn't show up as a reference from a field
+        //
+        if ("anyType".equals(object.getName()))
+        {
+          return new XSDAnyTypeDefinitionAdapter(); 
+        }  
+        else
+        {             
+          return new XSDComplexTypeDefinitionAdapter();
+        }  
+      }
+      
+      public Object caseXSDModelGroup(XSDModelGroup object)
+      {
+        return new XSDModelGroupAdapter();
+      }
+
+      public Object caseXSDSchema(XSDSchema object)
+      {
+        return new XSDSchemaAdapter();
+      }
+    };
+    Object o = xsdSwitch.doSwitch((EObject) target);
+    Adapter result = null;
+    if (o instanceof Adapter)
+    {
+      result = (Adapter) o;
+    }
+    else
+    {
+      System.out.println(target);
+      Thread.dumpStack();
+    }
+    return result;
+  }
+
+  public Adapter adapt(Notifier target)
+  {
+    return adapt(target, this);
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAnyTypeDefinitionAdapter.java
similarity index 60%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAnyTypeDefinitionAdapter.java
index ff6e4db..1a07e04 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAnyTypeDefinitionAdapter.java
@@ -1,18 +1,24 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.model;
+package org.eclipse.wst.xsd.editor.internal.adapters;
 
+public class XSDAnyTypeDefinitionAdapter extends XSDTypeDefinitionAdapter
+{
+  public boolean isComplexType()
+  {
+    return false;
+  }
 
-
-public interface ModelAdapterListener
-{                             
-  public void propertyChanged(Object object, String property);
+  public boolean isFocusAllowed()
+  {
+    return false;
+  } 
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeDeclarationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeDeclarationAdapter.java
new file mode 100644
index 0000000..5c1333b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeDeclarationAdapter.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.xsd.XSDSchema;
+
+public class XSDAttributeDeclarationAdapter extends XSDBaseAttributeAdapter implements IActionProvider
+{
+  protected XSDAttributeDeclaration getXSDAttributeDeclaration()
+  {
+    return (XSDAttributeDeclaration)target;
+  }
+ 
+  protected XSDAttributeDeclaration getResolvedXSDAttributeDeclaration()
+  {
+    return getXSDAttributeDeclaration().getResolvedAttributeDeclaration();
+  }
+  
+  public boolean isGlobal()
+  {
+    return getXSDAttributeDeclaration().eContainer() instanceof XSDSchema;
+  }
+
+  public IModel getModel()
+  {
+    Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDAttributeDeclaration().getSchema());
+    return (IModel)adapter;
+  }  
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeGroupDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeGroupDefinitionAdapter.java
new file mode 100644
index 0000000..105af1b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeGroupDefinitionAdapter.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeDeclarationAction;
+import org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDWildcard;
+
+public class XSDAttributeGroupDefinitionAdapter extends XSDBaseAdapter implements IStructure, IActionProvider
+{
+
+  public XSDAttributeGroupDefinitionAdapter()
+  {
+    super();
+  }
+
+  public XSDAttributeGroupDefinition getXSDAttributeGroupDefinition()
+  {
+    return (XSDAttributeGroupDefinition) target;
+  }
+
+  public Image getImage()
+  {
+    XSDAttributeGroupDefinition xsdAttributeGroupDefinition = (XSDAttributeGroupDefinition) target;
+    if (xsdAttributeGroupDefinition.isAttributeGroupDefinitionReference())
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDAttributeGroupRef.gif");
+    }
+    else
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDAttributeGroup.gif");
+    }
+  }
+
+  public String getText()
+  {
+    XSDAttributeGroupDefinition xsdAttributeGroupDefinition = (XSDAttributeGroupDefinition) target;
+    String result = xsdAttributeGroupDefinition.isAttributeGroupDefinitionReference() ? xsdAttributeGroupDefinition.getQName() : xsdAttributeGroupDefinition.getName();
+    return result == null ? "'absent'" : result;
+  }
+
+  public ITreeElement[] getChildren()
+  {
+    XSDAttributeGroupDefinition xsdAttributeGroup = (XSDAttributeGroupDefinition) target;
+    List list = new ArrayList();
+    list.addAll(xsdAttributeGroup.getContents());
+    XSDWildcard wildcard = xsdAttributeGroup.getAttributeWildcardContent();
+    if (wildcard != null)
+    {
+      list.add(wildcard);
+    }
+    List adapterList = new ArrayList();
+    populateAdapterList(list, adapterList);
+    return (ITreeElement[]) adapterList.toArray(new ITreeElement[0]);
+  }
+  
+  public String[] getActions(Object object)
+  {
+    List list = new ArrayList();
+    list.add(AddXSDAttributeDeclarationAction.ID);
+    list.add(BaseSelectionAction.SEPARATOR_ID);
+    list.add(DeleteXSDConcreteComponentAction.DELETE_XSD_COMPONENT_ID);
+    return (String [])list.toArray(new String[0]);
+  }
+
+  public Command getAddNewFieldCommand(String fieldKind)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getDeleteCommand()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public List getFields()
+  {
+    // TODO (cs) ... review this    
+    ITreeElement[] chidlren = getChildren();
+    return Arrays.asList(chidlren);
+  }
+
+  public IModel getModel()
+  {
+    Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDAttributeGroupDefinition().getSchema());
+    return (IModel)adapter;
+  }
+
+  public String getName()
+  {
+    // TODO (cs) ... review this
+    return getText();
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeUseAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeUseAdapter.java
new file mode 100644
index 0000000..d0b6af5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDAttributeUseAdapter.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+
+public class XSDAttributeUseAdapter extends XSDBaseAttributeAdapter implements IActionProvider
+{
+  protected XSDAttributeDeclaration getXSDAttributeDeclaration()
+  {
+    return getXSDAttributeUse().getAttributeDeclaration();
+  }
+
+  protected XSDAttributeDeclaration getResolvedXSDAttributeDeclaration()
+  {
+    return getXSDAttributeDeclaration().getResolvedAttributeDeclaration();
+  }
+  
+  protected XSDAttributeUse getXSDAttributeUse()
+  {
+    return (XSDAttributeUse)target;
+  }
+
+  public XSDAttributeUseAdapter()
+  {
+    super();
+  }
+
+  public String getText()
+  {
+    return getTextForAttributeUse(getXSDAttributeUse(), true);
+  }
+
+  public String getTextForAttributeUse(XSDAttributeUse attributeUse, boolean showType)
+  {
+    XSDAttributeDeclaration ad = attributeUse.getAttributeDeclaration();
+      
+    StringBuffer result  = new StringBuffer();
+    result.append(getTextForAttribute(ad, showType));
+    /*
+    if (xsdAttributeUse.isSetConstraint())
+    {
+      if (result.length() != 0)
+      {
+        result.append("  ");
+      }
+      result.append('<');
+      result.append(xsdAttributeUse.getConstraint());
+      result.append("=\"");
+      result.append(xsdAttributeUse.getLexicalValue());
+      result.append("\">");
+    }
+    */
+    return result.toString();
+  }
+  
+  public boolean isGlobal()
+  {
+    return false;
+  }
+
+  public IModel getModel()
+  {
+    Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDAttributeDeclaration().getSchema());
+    return (IModel)adapter;
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAdapter.java
new file mode 100644
index 0000000..cbe5ee6
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAdapter.java
@@ -0,0 +1,199 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.xml.core.internal.document.ElementImpl;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.w3c.dom.Element;
+
+public class XSDBaseAdapter extends AdapterImpl implements IADTObject, ITreeElement
+{  
+  protected List listenerList = new ArrayList();
+  
+  public boolean isAdapterForType(Object type)
+  {
+    return type == XSDAdapterFactory.getInstance();
+  }
+  
+  public void populateAdapterList(List notifierList, List adapterList)
+  {
+    for (Iterator i = notifierList.iterator(); i.hasNext(); )
+    {
+      Object obj = i.next();
+      if (obj instanceof XSDConcreteComponent)
+      {
+        XSDConcreteComponent component = (XSDConcreteComponent)obj;
+        adapterList.add(XSDAdapterFactory.getInstance().adapt(component));
+      }
+      else
+      {
+        adapterList.add(obj);
+      }
+    }
+  }  
+  
+  public void registerListener(IADTObjectListener listener)
+  {
+    if (!listenerList.contains(listener))
+    {
+      listenerList.add(listener);
+    }
+  }
+  
+  public void unregisterListener(IADTObjectListener listener)
+  {
+    listenerList.remove(listener);
+  }
+  
+  public void notifyChanged(Notification msg)
+  {
+    super.notifyChanged(msg);
+    notifyListeners(this, null);
+  }
+  
+  protected void notifyListeners(Object changedObject, String property)
+  {
+    List clonedListenerList = new ArrayList();
+    clonedListenerList.addAll(listenerList);
+    for (Iterator i = clonedListenerList.iterator(); i.hasNext(); )
+    {
+      IADTObjectListener listener = (IADTObjectListener)i.next();
+      listener.propertyChanged(this, property);
+    }      
+  }
+    
+  public ITreeElement[] getChildren()
+  {
+    return null;
+  }
+  
+  public Image getImage()
+  {
+    return null;
+  }
+  
+  public String getText()
+  {
+    return "";
+  }
+  
+  public ITreeElement getParent()
+  {
+    return null;
+  }
+  
+  public boolean hasChildren()
+  {
+    if (getChildren() != null)
+    {
+      return getChildren().length > 0;
+    }
+    return false;
+  }
+  
+
+  /**
+   * Implements IField getContainerType.  Get parent Complex Type containing the field
+   * @return IComplexType
+   */
+  public IComplexType getContainerType()
+  {
+    XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent) target;
+    XSDConcreteComponent parent = null;
+    XSDComplexTypeDefinition ct = null;
+    for (parent = xsdConcreteComponent.getContainer(); parent != null; )
+    {
+      if (parent instanceof XSDComplexTypeDefinition)
+      {
+        ct = (XSDComplexTypeDefinition)parent;
+        break;
+      }
+      parent = parent.getContainer();
+    }
+    if (ct != null)
+    {
+      return (IComplexType)XSDAdapterFactory.getInstance().adapt(ct);
+    }
+    return null;
+  }
+  
+  public boolean isReadOnly()
+  {
+    XSDSchema xsdSchema = null;
+    try
+    {
+      IEditorPart editorPart = null;
+      IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+      if (window != null)
+      {
+        IWorkbenchPage page = window.getActivePage();
+        if (page != null)
+        {
+          editorPart = page.getActiveEditor();
+        }
+      }
+      if (target instanceof XSDConcreteComponent)
+      {
+        xsdSchema = ((XSDConcreteComponent)target).getSchema();
+      }
+      if (editorPart == null)
+      {
+        return fallBackCheckIsReadOnly();
+      }
+      
+      XSDSchema editorSchema = (XSDSchema)editorPart.getAdapter(XSDSchema.class);
+      if (xsdSchema != null && xsdSchema == editorSchema)
+      {
+        return false;
+      }
+      else
+      {
+        return fallBackCheckIsReadOnly();
+      }
+    }
+    catch(Exception e)
+    {
+
+    }
+    return true;
+  }
+  
+  private boolean fallBackCheckIsReadOnly()
+  {
+    Element element = ((XSDConcreteComponent)target).getElement();
+    if (element instanceof IDOMNode
+        || element instanceof ElementImpl)
+    {
+       return false;
+    }
+    return true;
+  }
+
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAttributeAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAttributeAdapter.java
new file mode 100644
index 0000000..aa3e00f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDBaseAttributeAdapter.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeDeclarationAction;
+import org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+// a base adapter for reuse by an AttributeUse and AttributeDeclaration
+//
+public abstract class XSDBaseAttributeAdapter extends XSDBaseAdapter implements IField
+{
+  protected abstract XSDAttributeDeclaration getXSDAttributeDeclaration();
+  protected abstract XSDAttributeDeclaration getResolvedXSDAttributeDeclaration();
+
+  public XSDBaseAttributeAdapter()
+  {
+    super();
+  }
+
+  public String[] getActions(Object object)
+  {
+    List list = new ArrayList();
+    list.add(AddXSDAttributeDeclarationAction.ID);
+    list.add(BaseSelectionAction.SEPARATOR_ID);
+    list.add(DeleteXSDConcreteComponentAction.DELETE_XSD_COMPONENT_ID);
+
+    list.add(BaseSelectionAction.SEPARATOR_ID);
+    list.add(ShowPropertiesViewAction.ID);
+    return (String[]) list.toArray(new String[0]);
+  }
+
+  public Command getDeleteCommand()
+  {
+    return new DeleteCommand("", getXSDAttributeDeclaration());
+  }
+
+  public String getKind()
+  {
+    return "attribute";
+  }
+
+  public int getMaxOccurs()
+  {
+    // TODO Auto-generated method stub
+    return -3;
+  }
+
+  public int getMinOccurs()
+  {
+    // TODO Auto-generated method stub
+    return -3;
+  }
+
+  public String getName()
+  {
+    XSDAttributeDeclaration resolvedAttributeDeclaration = getResolvedXSDAttributeDeclaration();
+    String name = resolvedAttributeDeclaration.getName();
+    return (name == null) ? "" : name;
+  }
+
+  public IType getType()
+  {
+    XSDTypeDefinition td = getResolvedXSDAttributeDeclaration().getTypeDefinition();
+    return (td != null) ? (IType) XSDAdapterFactory.getInstance().adapt(td) : null;
+  }
+
+  public String getTypeName()
+  {
+    XSDTypeDefinition td = getResolvedXSDAttributeDeclaration().getTypeDefinition();
+    return (td != null) ? td.getName() : "(no type defined)";
+  }
+
+  public String getTypeNameQualifier()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getUpdateMaxOccursCommand(int maxOccurs)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getUpdateMinOccursCommand(int minOccurs)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getUpdateNameCommand(String name)
+  {
+    return new UpdateNameCommand("Update Name", getResolvedXSDAttributeDeclaration(), name);
+  }
+
+  public Command getUpdateTypeNameCommand(String typeName, String quailifier)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.wst.xsd.adt.outline.ITreeElement#getImage()
+   */
+  public Image getImage()
+  {
+    XSDAttributeDeclaration xsdAttributeDeclaration = getXSDAttributeDeclaration();  // don't want the resolved attribute
+    if (xsdAttributeDeclaration.isAttributeDeclarationReference())
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDAttributeRef.gif");
+    }
+    else
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.wst.xsd.adt.outline.ITreeElement#getText()
+   */
+  public String getText()
+  {
+    return getTextForAttribute(getResolvedXSDAttributeDeclaration(), true);
+  }
+
+  public String getTextForAttribute(XSDAttributeDeclaration ad, boolean showType)
+  {
+    ad = ad.getResolvedAttributeDeclaration();
+    String name = ad.getName();
+    StringBuffer result = new StringBuffer();
+    if (name == null)
+    {
+      result.append("'absent'");
+    }
+    else
+    {
+      result.append(name);
+    }
+    if (ad.getAnonymousTypeDefinition() == null && ad.getTypeDefinition() != null)
+    {
+      result.append(" : ");
+      // result.append(resolvedAttributeDeclaration.getTypeDefinition().getQName(xsdAttributeDeclaration));
+      result.append(ad.getTypeDefinition().getName());
+    }
+    return result.toString();
+  }
+
+  public boolean isGlobal()
+  {
+    return false;
+  }
+  
+  public IModel getModel()
+  {
+    Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDAttributeDeclaration().getSchema());
+    return (IModel)adapter;
+  }  
+
+}
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDChildUtility.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDChildUtility.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDChildUtility.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDChildUtility.java
index 887889c..53a3d31 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDChildUtility.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDChildUtility.java
@@ -1,14 +1,14 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph;
+package org.eclipse.wst.xsd.editor.internal.adapters;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -30,12 +30,12 @@
 public class XSDChildUtility
 {              
   static public List getModelChildren(Object model)
-  {                     
+  {
     XSDChildVisitor visitor = new XSDChildVisitor(model);
-    visitor.visitXSDObject(model); 
+    visitor.visitXSDObject(model);
     return visitor.list;
-  }    
-   
+  }
+
   static public List getImmediateDerivedTypes(XSDComplexTypeDefinition complexType)
   {
     ArrayList typesDerivedFrom = new ArrayList();
@@ -75,7 +75,7 @@
     {
       if (xsdModelGroup != root)
       {
-        list.add(xsdModelGroup);
+        list.add(xsdModelGroup); 
       }                         
       else
       {
@@ -100,6 +100,7 @@
       if (xsdElementDeclaration != root)
       {
         list.add(xsdElementDeclaration);
+        
       }                         
       else
       {
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDComplexTypeDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDComplexTypeDefinitionAdapter.java
new file mode 100644
index 0000000..bf8ce65
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDComplexTypeDefinitionAdapter.java
@@ -0,0 +1,412 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.action.Action;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.DeleteAction;
+import org.eclipse.wst.xsd.adt.actions.SetInputToGraphView;
+import org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.SpaceFiller;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.TargetConnectionSpaceFiller;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeDeclarationAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDAttributeGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupAction;
+import org.eclipse.wst.xsd.ui.common.actions.OpenInNewEditor;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDElementCommand;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.xsd.XSDAttributeGroupContent;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeContent;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDComplexTypeDefinitionAdapter extends XSDTypeDefinitionAdapter implements IComplexType, IActionProvider, IADTObjectListener
+{
+  protected List fields = null;
+  protected List otherThingsToListenTo = null;
+
+  public XSDComplexTypeDefinition getXSDComplexTypeDefinition()
+  {
+    return (XSDComplexTypeDefinition) target;
+  }
+
+  public IType getSuperType()
+  {
+    XSDTypeDefinition td = getXSDTypeDefinition().getBaseType();
+
+    // test to filter out the 'anyType' type ... don't want to see that
+    //
+    if (td != null && !td.getName().equals("anyType"))
+    {
+      return (IType) XSDAdapterFactory.getInstance().adapt(td);
+    }
+    return null;
+  }
+
+  protected void clearFields()
+  {
+    if (otherThingsToListenTo != null)
+    {
+      for (Iterator i = otherThingsToListenTo.iterator(); i.hasNext();)
+      {
+        Adapter adapter = (Adapter) i.next();
+        if (adapter instanceof IADTObject)
+        {
+          IADTObject adtObject = (IADTObject) adapter;
+          adtObject.unregisterListener(this);
+        }
+      }
+    }
+    fields = null;
+    otherThingsToListenTo = null;
+  }
+
+  public List getFields()
+  {
+    if (fields == null)
+    {
+      fields = new ArrayList();
+      otherThingsToListenTo = new ArrayList();
+
+      XSDVisitorForFields visitor = new XSDVisitorForFieldsWithSpaceFillers();
+      visitor.visitComplexTypeDefinition(getXSDComplexTypeDefinition());
+      populateAdapterList(visitor.concreteComponentList, fields);
+      populateAdapterList(visitor.thingsWeNeedToListenTo, otherThingsToListenTo);
+      for (Iterator i = otherThingsToListenTo.iterator(); i.hasNext();)
+      {
+        Adapter adapter = (Adapter) i.next();
+        if (adapter instanceof IADTObject)
+        {
+          IADTObject adtObject = (IADTObject) adapter;
+          adtObject.registerListener(this);
+        }
+      }
+    }
+    // System.out.println("fields[" + this + "].size() = " + fields.size());
+    return fields;
+  }
+
+  class XSDVisitorForFieldsWithSpaceFillers extends XSDVisitorForFields
+  {
+    public XSDVisitorForFieldsWithSpaceFillers()
+    {
+      super();
+    }
+
+    public void visitAttributeGroupDefinition(XSDAttributeGroupDefinition attributeGroup)
+    {
+      for (Iterator it = attributeGroup.getContents().iterator(); it.hasNext();)
+      {
+        Object o = it.next();
+        if (o instanceof XSDAttributeUse)
+        {
+          XSDAttributeUse attributeUse = (XSDAttributeUse) o;
+          concreteComponentList.add(attributeUse.getAttributeDeclaration());
+          thingsWeNeedToListenTo.add(attributeUse.getAttributeDeclaration());
+        }
+        else if (o instanceof XSDAttributeGroupDefinition)
+        {
+          XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition) o;
+          thingsWeNeedToListenTo.add(attrGroup);
+          if (attrGroup.isAttributeGroupDefinitionReference())
+          {
+            attrGroup = attrGroup.getResolvedAttributeGroupDefinition();
+            if (attrGroup.getContents().size() == 0)
+            {
+              concreteComponentList.add(new SpaceFiller("attribute"));
+            }
+            visitAttributeGroupDefinition(attrGroup);
+          }
+        }
+      }
+    }
+
+    public void visitModelGroup(XSDModelGroup modelGroup)
+    {
+      int numOfChildren = modelGroup.getContents().size();
+      if (numOfChildren == 0)
+      {
+        concreteComponentList.add(new SpaceFiller("element"));
+      }
+      super.visitModelGroup(modelGroup);
+    }
+  }
+
+  public List getModelGroups()
+  {
+    List groups = new ArrayList();
+    groups.addAll(XSDChildUtility.getModelChildren(getXSDComplexTypeDefinition()));
+    return groups;
+  }
+
+  public List getAttributeGroupContent()
+  {
+    EList attrContent = getXSDComplexTypeDefinition().getAttributeContents();
+    List attrUses = new ArrayList();
+    List list = new ArrayList();
+
+    for (Iterator it = attrContent.iterator(); it.hasNext();)
+    {
+      XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent) it.next();
+
+      if (attrGroupContent instanceof XSDAttributeGroupDefinition)
+      {
+        XSDAttributeGroupDefinition attributeGroupDefinition = (XSDAttributeGroupDefinition) attrGroupContent;
+        list.add(XSDAdapterFactory.getInstance().adapt(attributeGroupDefinition));
+        getAttributeUses(attributeGroupDefinition, attrUses);
+      }
+      else
+      {
+        attrUses.add(attrGroupContent);
+        list.add(new TargetConnectionSpaceFiller(this));
+      }
+    }
+    return list;
+  }
+
+  public boolean isComplexType()
+  {
+    return true;
+  }
+
+  public void notifyChanged(Notification msg)
+  {
+    clearFields();
+    super.notifyChanged(msg);
+  }
+
+  public Command getUpdateNameCommand(String newName)
+  {
+    return new UpdateNameCommand("Update Name", getXSDComplexTypeDefinition(), newName);
+  }
+
+  public Command getAddNewFieldCommand(String fieldKind)
+  {
+    return new AddXSDElementCommand("whyDoWeUseThisLabel?", getXSDComplexTypeDefinition());
+  }
+
+  public Command getDeleteCommand()
+  {
+    return new DeleteCommand("", getXSDComplexTypeDefinition());
+  }
+
+  protected class AddNewFieldCommand extends Command
+  {
+    protected String defaultName;
+    protected String fieldKind;
+
+    AddNewFieldCommand(String defaultName, String fieldKind)
+    {
+      this.defaultName = defaultName;
+      this.fieldKind = fieldKind;
+    }
+  }
+
+  public String[] getActions(Object object)
+  {
+    List list = new ArrayList();
+    IWorkbench workbench = PlatformUI.getWorkbench();
+    IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+    IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+    Object schema = editorPart.getAdapter(XSDSchema.class);
+    
+    list.add(AddXSDElementAction.ID);
+    list.add(AddXSDElementAction.REF_ID);
+    list.add(AddXSDAttributeDeclarationAction.ID);
+    list.add(AddXSDAttributeGroupDefinitionAction.ID);
+    list.add(BaseSelectionAction.SEPARATOR_ID);
+    list.add(AddXSDModelGroupAction.SEQUENCE_ID);
+    list.add(AddXSDModelGroupAction.CHOICE_ID);
+
+    list.add(BaseSelectionAction.SEPARATOR_ID);
+    list.add(DeleteAction.ID);
+    list.add(BaseSelectionAction.SEPARATOR_ID);
+    if (getXSDComplexTypeDefinition().getSchema() == schema)
+    {
+      if (getXSDComplexTypeDefinition().getContainer() == schema)
+      {
+        list.add(SetInputToGraphView.ID);
+      }
+    }
+    else
+    {
+      list.add(OpenInNewEditor.ID);
+    }
+    list.add(BaseSelectionAction.SEPARATOR_ID);
+    list.add(ShowPropertiesViewAction.ID);
+    String[] result = new String[list.size()];
+    list.toArray(result);
+    return result;
+  }
+
+  public void propertyChanged(Object object, String property)
+  {
+    clearFields();
+    notifyListeners(this, null);
+  }
+
+  class BogusAction extends Action
+  {
+    BogusAction(String name)
+    {
+      super(name);
+    }
+
+    public void run()
+    {
+      // TODO Auto-generated method stub
+      super.run();
+    }
+  }
+
+  public ITreeElement[] getChildren()
+  {
+    XSDComplexTypeDefinition xsdComplexTypeDefinition = getXSDComplexTypeDefinition();
+    List list = new ArrayList();
+    // Add attributes
+    for (Iterator i = xsdComplexTypeDefinition.getAttributeContents().iterator(); i.hasNext();)
+    {
+      Object obj = i.next();
+      if (obj instanceof XSDAttributeUse)
+      {
+        list.add(obj);
+      }
+      else if (obj instanceof XSDAttributeGroupDefinition)
+      {
+        getAttributeUses((XSDAttributeGroupDefinition) obj, list);
+      }
+    }
+    // get immediate XSD Model Group of this complex type
+    if (xsdComplexTypeDefinition.getContent() != null)
+    {
+      XSDComplexTypeContent xsdComplexTypeContent = xsdComplexTypeDefinition.getContent();
+      if (xsdComplexTypeContent instanceof XSDParticle)
+      {
+        XSDParticleContent particleContent = ((XSDParticle) xsdComplexTypeContent).getContent();
+        if (particleContent instanceof XSDModelGroup)
+        {
+          list.add((XSDModelGroup) particleContent);
+        }
+      }
+    }
+    // get inherited XSD Model Group of this complex type
+    boolean showInheritedContent = XSDEditorPlugin.getPlugin().getShowInheritedContent();
+    if (showInheritedContent)
+    {
+      XSDTypeDefinition typeDef = xsdComplexTypeDefinition.getBaseTypeDefinition();
+      if (typeDef instanceof XSDComplexTypeDefinition)
+      {
+        XSDComplexTypeDefinition baseCT = (XSDComplexTypeDefinition) typeDef;
+        if (baseCT.getTargetNamespace() != null && !baseCT.getTargetNamespace().equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001))
+        {
+          if (baseCT.getContent() != null)
+          {
+            XSDComplexTypeContent xsdComplexTypeContent = baseCT.getContent();
+            if (xsdComplexTypeContent instanceof XSDParticle)
+            {
+              XSDParticleContent particleContent = ((XSDParticle) xsdComplexTypeContent).getContent();
+              if (particleContent instanceof XSDModelGroup)
+              {
+                list.add((XSDModelGroup) particleContent);
+              }
+            }
+          }
+        }
+      }
+    }
+    List adapterList = new ArrayList();
+    populateAdapterList(list, adapterList);
+    return (ITreeElement[]) adapterList.toArray(new ITreeElement[0]);
+  }
+
+  public Image getImage()
+  {
+    return XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif");
+  }
+
+  public String getText()
+  {
+    XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition) target;
+
+    StringBuffer result = new StringBuffer();
+
+    result.append(xsdComplexTypeDefinition.getName() == null ? "local type" : xsdComplexTypeDefinition.getName());
+
+    XSDTypeDefinition baseTypeDefinition = xsdComplexTypeDefinition.getBaseTypeDefinition();
+    if (baseTypeDefinition != null && baseTypeDefinition != xsdComplexTypeDefinition.getContent() && baseTypeDefinition.getName() != null && !XSDConstants.isURType(baseTypeDefinition))
+    {
+      result.append(" : ");
+      result.append(baseTypeDefinition.getQName(xsdComplexTypeDefinition));
+    }
+
+    return result.toString();
+  }
+
+  public void getAttributeUses(XSDAttributeGroupDefinition attributeGroupDefinition, List list)
+  {
+    Iterator i = attributeGroupDefinition.getResolvedAttributeGroupDefinition().getContents().iterator();
+
+    while (i.hasNext())
+    {
+      XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent) i.next();
+
+      if (attrGroupContent instanceof XSDAttributeGroupDefinition)
+      {
+        getAttributeUses((XSDAttributeGroupDefinition) attrGroupContent, list);
+      }
+      else
+      {
+        list.add(XSDAdapterFactory.getInstance().adapt(attrGroupContent));
+      }
+    }
+  }
+
+  public IModel getModel()
+  {
+    Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDComplexTypeDefinition().getSchema());
+    return (IModel)adapter;
+  }
+
+  public boolean isFocusAllowed()
+  {
+    return true;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDElementDeclarationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDElementDeclarationAdapter.java
new file mode 100644
index 0000000..d57dda4
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDElementDeclarationAdapter.java
@@ -0,0 +1,280 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.DeleteAction;
+import org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction;
+import org.eclipse.wst.xsd.adt.design.IAnnotationProvider;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.SetMultiplicityAction;
+import org.eclipse.wst.xsd.ui.common.actions.SetTypeAction;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDElementDeclarationAdapter extends XSDParticleAdapter implements IField, IActionProvider, IAnnotationProvider
+{
+  protected XSDElementDeclaration getXSDElementDeclaration()
+  {
+    return (XSDElementDeclaration) target;
+  }
+
+  public String getName()
+  {
+    String name = getXSDElementDeclaration().getResolvedElementDeclaration().getName();
+    return (name == null) ? "" : name;
+  }
+
+  public String getTypeName()
+  {
+    IType type = getType();
+    if (type != null)
+    {  
+      return type.getName();
+    }
+    return null;
+  }
+
+  public String getTypeNameQualifier()
+  {
+    return getXSDElementDeclaration().getTypeDefinition().getTargetNamespace();
+  }
+
+  public IType getType()
+  {
+    XSDTypeDefinition td = getXSDElementDeclaration().getResolvedElementDeclaration().getTypeDefinition();
+    //if (td != null &&
+    //    td.getTargetNamespace() != null && td.getTargetNamespace().equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001)) return null;
+    return (td != null) ? (IType) XSDAdapterFactory.getInstance().adapt(td) : null;
+  }
+ 
+  public Image getImage()
+  {
+    XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) target;
+
+    if (!xsdElementDeclaration.isElementDeclarationReference())
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
+    }
+    else
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDElementRef.gif");
+    }
+  }
+
+  public String getText()
+  {
+    XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) target;
+    XSDElementDeclaration resolvedElementDeclaration = xsdElementDeclaration.getResolvedElementDeclaration();
+    //String name = xsdElementDeclaration != resolvedElementDeclaration ? xsdElementDeclaration.getQName() : xsdElementDeclaration.getName();
+    String name = resolvedElementDeclaration.getName();
+
+    StringBuffer result = new StringBuffer();
+    if (name == null)
+    {
+      result.append("'absent'");
+    }
+    else
+    {
+      result.append(name);
+    }
+
+    if (!xsdElementDeclaration.isGlobal())
+    {
+      Element element = xsdElementDeclaration.getElement();
+      boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
+      boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
+
+      if (hasMinOccurs || hasMaxOccurs)
+      {
+        result.append(" [");
+        if (hasMinOccurs)
+        {
+          int min = ((XSDParticle) xsdElementDeclaration.getContainer()).getMinOccurs();
+          if (min == XSDParticle.UNBOUNDED)
+          {
+            result.append("*");
+          }
+          else
+          {
+            result.append(String.valueOf(min));
+          }
+        }
+        else
+        // print default
+        {
+          int min = ((XSDParticle) xsdElementDeclaration.getContainer()).getMinOccurs();
+          result.append(String.valueOf(min));
+        }
+        if (hasMaxOccurs)
+        {
+          int max = ((XSDParticle) xsdElementDeclaration.getContainer()).getMaxOccurs();
+          result.append("..");
+          if (max == XSDParticle.UNBOUNDED)
+          {
+            result.append("*");
+          }
+          else
+          {
+            result.append(String.valueOf(max));
+          }
+        }
+        else
+        // print default
+        {
+          result.append("..");
+          int max = ((XSDParticle) xsdElementDeclaration.getContainer()).getMaxOccurs();
+          result.append(String.valueOf(max));
+
+        }
+        result.append("]");
+      }
+    }
+
+    if (resolvedElementDeclaration.getAnonymousTypeDefinition() == null && resolvedElementDeclaration.getTypeDefinition() != null)
+    {
+      result.append(" : ");
+      // result.append(resolvedElementDeclaration.getTypeDefinition().getQName(xsdElementDeclaration));
+      result.append(resolvedElementDeclaration.getTypeDefinition().getName());
+    }
+
+    return result.toString();
+
+  }
+
+  public ITreeElement[] getChildren()
+  {
+    XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) target;
+    List list = new ArrayList();
+    XSDTypeDefinition type = null;
+    if (xsdElementDeclaration.isElementDeclarationReference())
+    {
+      type = xsdElementDeclaration.getResolvedElementDeclaration().getTypeDefinition();
+    }
+    else
+    {
+      type = xsdElementDeclaration.getAnonymousTypeDefinition();
+      if (type == null)
+      {
+        type = xsdElementDeclaration.getTypeDefinition();
+      }
+    }
+
+    if (type instanceof XSDComplexTypeDefinition && type.getTargetNamespace() != null && !type.getTargetNamespace().equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001))
+    {
+      XSDComplexTypeDefinition ctType = (XSDComplexTypeDefinition) type;
+      if (ctType != null)
+      {
+        if (xsdElementDeclaration.isGlobal())
+          list.add(ctType);
+      }
+    }
+
+    List adapterList = new ArrayList();
+    populateAdapterList(list, adapterList);
+    return (ITreeElement[]) adapterList.toArray(new ITreeElement[0]);
+
+  }
+  
+  public String getKind()
+  {
+    return "element";
+  }
+  
+  public boolean isGlobal()
+  {
+    return getXSDElementDeclaration().eContainer() instanceof XSDSchema;
+  }
+  
+  public boolean isElementDeclarationReference()
+  {
+	  return ((XSDElementDeclaration) target).isElementDeclarationReference();
+  }
+
+  public Command getUpdateMaxOccursCommand(int maxOccurs)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getUpdateMinOccursCommand(int minOccurs)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getUpdateNameCommand(String name)
+  {
+    return new UpdateNameCommand("Update Name", getXSDElementDeclaration().getResolvedElementDeclaration(), name);
+  }
+
+  public Command getUpdateTypeNameCommand(String typeName, String quailifier)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getDeleteCommand()
+  {
+    // TODO Auto-generated method stub
+    return new DeleteCommand("", getXSDElementDeclaration());
+  }
+  
+  public String[] getActions(Object object)
+  {
+    List list = new ArrayList();
+    if (!isGlobal())
+      list.add(AddXSDElementAction.ID);
+
+    list.add(BaseSelectionAction.SUBMENU_START_ID + "Set Type");
+    list.add(SetTypeAction.SET_NEW_TYPE_ID);
+    list.add(SetTypeAction.SELECT_EXISTING_TYPE_ID);
+    list.add(BaseSelectionAction.SUBMENU_END_ID);
+
+    list.add(BaseSelectionAction.SUBMENU_START_ID + "Set Multiplicity");
+    list.add(SetMultiplicityAction.REQUIRED_ID);
+    list.add(SetMultiplicityAction.ZERO_OR_ONE_ID);
+    list.add(SetMultiplicityAction.ZERO_OR_MORE_ID);
+    list.add(SetMultiplicityAction.ONE_OR_MORE_ID);    
+    list.add(BaseSelectionAction.SUBMENU_END_ID);
+
+    list.add(BaseSelectionAction.SEPARATOR_ID);
+    list.add(DeleteAction.ID);
+    list.add(BaseSelectionAction.SEPARATOR_ID);
+    list.add(ShowPropertiesViewAction.ID);
+    return (String [])list.toArray(new String[0]);
+  }
+  
+  public IModel getModel()
+  {
+    Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDElementDeclaration().getSchema());
+    return (IModel)adapter;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDEmptyFieldAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDEmptyFieldAdapter.java
new file mode 100644
index 0000000..8f6b858
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDEmptyFieldAdapter.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IType;
+
+/**
+ * @deprecated not used
+ */
+public class XSDEmptyFieldAdapter extends XSDBaseAdapter implements IField
+{
+  String kind;
+  public XSDEmptyFieldAdapter()
+  {
+    super();
+  }
+
+  public String getKind()
+  {
+    return kind;
+  }
+  
+  public void setKind(String kind)
+  {
+    this.kind = kind;
+  }
+
+  public String getName()
+  {
+    return null;
+  }
+
+  public String getTypeName()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public String getTypeNameQualifier()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public IType getType()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public int getMinOccurs()
+  {
+    // TODO Auto-generated method stub
+    return 0;
+  }
+
+  public int getMaxOccurs()
+  {
+    // TODO Auto-generated method stub
+    return 0;
+  }
+  
+  public boolean isGlobal()
+  {
+    return false;
+  }
+
+  public Command getUpdateMinOccursCommand(int minOccurs)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getUpdateMaxOccursCommand(int maxOccurs)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getUpdateTypeNameCommand(String typeName, String quailifier)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getUpdateNameCommand(String name)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getDeleteCommand()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public IModel getModel()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupAdapter.java
new file mode 100644
index 0000000..0ad1b31
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupAdapter.java
@@ -0,0 +1,227 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction;
+import org.eclipse.wst.xsd.ui.common.actions.SetMultiplicityAction;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDModelGroupAdapter extends XSDParticleAdapter implements IActionProvider
+{
+  public static final Image SEQUENCE_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("newSequence2.gif", true).createImage();
+  public static final Image CHOICE_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("newChoice.gif", true).createImage();
+  public static final Image ALL_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("obj16/all.gif", true).createImage();
+
+  XSDModelGroup getXSDModelGroup()
+  {
+    return (XSDModelGroup) target;
+  }
+
+  public XSDModelGroupAdapter()
+  {
+
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.wst.xsd.adt.outline.ITreeElement#getImage()
+   */
+  public Image getImage()
+  {
+    XSDModelGroup xsdModelGroup = getXSDModelGroup();
+    if (XSDCompositor.CHOICE_LITERAL == xsdModelGroup.getCompositor())
+    {
+      return CHOICE_ICON_IMAGE;
+    }
+    else if (XSDCompositor.ALL_LITERAL == xsdModelGroup.getCompositor())
+    {
+      return ALL_ICON_IMAGE;
+    }
+    else
+    {
+      return SEQUENCE_ICON_IMAGE;
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.wst.xsd.adt.outline.ITreeElement#getText()
+   */
+  public String getText()
+  {
+    XSDModelGroup xsdModelGroup = getXSDModelGroup();
+
+    StringBuffer result = new StringBuffer();
+    String name = xsdModelGroup.getCompositor().getName();
+    if (name != null)
+    {
+      result.append(name);
+    }
+
+    Element element = xsdModelGroup.getElement();
+
+    if (element != null)
+    {
+      boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
+      boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
+
+      if (hasMinOccurs || hasMaxOccurs)
+      {
+        result.append(" [");
+        if (hasMinOccurs)
+        {
+          int min = ((XSDParticle) xsdModelGroup.getContainer()).getMinOccurs();
+          if (min == XSDParticle.UNBOUNDED)
+          {
+            result.append("*");
+          }
+          else
+          {
+            result.append(String.valueOf(min));
+          }
+        }
+        else
+        // print default
+        {
+          int min = ((XSDParticle) xsdModelGroup.getContainer()).getMinOccurs();
+          result.append(String.valueOf(min));
+        }
+        if (hasMaxOccurs)
+        {
+          int max = ((XSDParticle) xsdModelGroup.getContainer()).getMaxOccurs();
+          result.append("..");
+          if (max == XSDParticle.UNBOUNDED)
+          {
+            result.append("*");
+          }
+          else
+          {
+            result.append(String.valueOf(max));
+          }
+        }
+        else
+        // print default
+        {
+          result.append("..");
+          int max = ((XSDParticle) xsdModelGroup.getContainer()).getMaxOccurs();
+          result.append(String.valueOf(max));
+        }
+        result.append("]");
+      }
+    }
+    return result.toString();
+  }
+
+  public ITreeElement[] getChildren()
+  {
+    XSDModelGroup xsdModelGroup = getXSDModelGroup();
+    List list = new ArrayList();
+    for (Iterator i = xsdModelGroup.getContents().iterator(); i.hasNext(); )
+    {
+       Object object = i.next();
+       XSDParticleContent particle = ((XSDParticle)object).getContent();
+       if (particle instanceof XSDElementDeclaration)
+       {
+         list.add((XSDElementDeclaration)particle);
+       }
+       else if (particle instanceof XSDWildcard)
+       {
+         list.add((XSDWildcard)particle);
+       }
+       else if (particle instanceof XSDModelGroup)
+       {
+         list.add((XSDModelGroup)particle);
+       }
+    }
+
+    List adapterList = new ArrayList();
+    populateAdapterList(list, adapterList);
+    return (ITreeElement []) adapterList.toArray(new ITreeElement[0]);
+  }
+
+  public Object getParent(Object object)
+  {
+    XSDModelGroup element = (XSDModelGroup) object;
+    return element.getContainer();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider#getActions(java.lang.Object)
+   */
+  public String[] getActions(Object object)
+  {
+     Collection actionIDs = new ArrayList();
+     actionIDs.add(AddXSDElementAction.ID);
+     actionIDs.add(AddXSDElementAction.REF_ID);
+     // Add Element Ref
+     actionIDs.add(BaseSelectionAction.SEPARATOR_ID);
+     actionIDs.add(AddXSDModelGroupAction.SEQUENCE_ID);
+     actionIDs.add(AddXSDModelGroupAction.CHOICE_ID);
+     actionIDs.add(AddXSDModelGroupDefinitionAction.MODELGROUPDEFINITIONREF_ID);
+//     actionIDs.add(AddFieldAction.ID);
+     actionIDs.add(BaseSelectionAction.SEPARATOR_ID);
+     // Add Any
+
+     actionIDs.add(BaseSelectionAction.SUBMENU_START_ID + "Set Multiplicity");
+     actionIDs.add(SetMultiplicityAction.REQUIRED_ID);
+     actionIDs.add(SetMultiplicityAction.ZERO_OR_ONE_ID);
+     actionIDs.add(SetMultiplicityAction.ZERO_OR_MORE_ID);
+     actionIDs.add(SetMultiplicityAction.ONE_OR_MORE_ID);    
+     actionIDs.add(BaseSelectionAction.SUBMENU_END_ID);
+    
+     if (!(getParent(target) instanceof XSDModelGroupDefinition))
+     {
+       actionIDs.add(BaseSelectionAction.SEPARATOR_ID);
+       actionIDs.add(DeleteXSDConcreteComponentAction.DELETE_XSD_COMPONENT_ID);
+     }    
+     actionIDs.add(BaseSelectionAction.SEPARATOR_ID);
+     actionIDs.add(ShowPropertiesViewAction.ID);
+        
+     return (String [])actionIDs.toArray(new String[0]);
+  }
+
+  public int getMaxOccurs()
+  {
+    return getMaxOccurs(getXSDModelGroup());
+  }
+
+  public int getMinOccurs()
+  {
+    return getMinOccurs(getXSDModelGroup());
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupDefinitionAdapter.java
new file mode 100644
index 0000000..ac6d93e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDModelGroupDefinitionAdapter.java
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDModelGroupAction;
+import org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+
+public class XSDModelGroupDefinitionAdapter extends XSDBaseAdapter implements IStructure, IActionProvider
+{
+  public XSDModelGroupDefinitionAdapter()
+  {
+    super();
+  }
+
+  public XSDModelGroupDefinition getXSDModelGroupDefinition()
+  {
+    return (XSDModelGroupDefinition) target;
+  }
+
+  public Image getImage()
+  {
+    XSDModelGroupDefinition xsdModelGroupDefinition = (XSDModelGroupDefinition) target;
+
+    if (xsdModelGroupDefinition.isModelGroupDefinitionReference())
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDGroupRef.gif");
+    }
+    else
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDGroup.gif");
+    }
+  }
+
+  public String getText()
+  {
+    XSDModelGroupDefinition xsdModelGroupDefinition = (XSDModelGroupDefinition) target;
+    String result = xsdModelGroupDefinition.isModelGroupDefinitionReference() ? xsdModelGroupDefinition.getQName() : xsdModelGroupDefinition.getName();
+    return result == null ? "'absent'" : result;
+  }
+
+  public ITreeElement[] getChildren()
+  {
+    List list = new ArrayList();
+    XSDModelGroup xsdModelGroup = ((XSDModelGroupDefinition) target).getResolvedModelGroupDefinition().getModelGroup();
+    if (xsdModelGroup != null)
+      list.add(xsdModelGroup);
+
+    List adapterList = new ArrayList();
+    populateAdapterList(list, adapterList);
+    return (ITreeElement[]) adapterList.toArray(new ITreeElement[0]);
+
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider#getActions(java.lang.Object)
+   */
+  public String[] getActions(Object object)
+  {
+    Collection list = new ArrayList();
+
+    if (!getXSDModelGroupDefinition().isModelGroupDefinitionReference())
+    {
+      list.add(AddXSDElementAction.ID);
+      list.add(AddXSDElementAction.REF_ID);
+      list.add(BaseSelectionAction.SEPARATOR_ID);
+      list.add(AddXSDModelGroupAction.SEQUENCE_ID);
+      list.add(AddXSDModelGroupAction.CHOICE_ID);
+    }
+    
+    list.add(DeleteXSDConcreteComponentAction.DELETE_XSD_COMPONENT_ID);
+    return (String [])list.toArray(new String[0]);
+  }
+
+  public Command getAddNewFieldCommand(String fieldKind)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getDeleteCommand()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public List getFields()
+  {
+    List fields = new ArrayList();
+    boolean showGroups = false;
+    XSDVisitorForFields visitor = new XSDVisitorForFields();
+    visitor.visitModelGroupDefinition(getXSDModelGroupDefinition());
+    populateAdapterList(visitor.concreteComponentList, fields);
+    
+    // TODO (cs) common a base class for a structure thingee
+    //
+    /*
+    populateAdapterList(visitor.thingsWeNeedToListenTo, otherThingsToListenTo);
+    for (Iterator i = otherThingsToListenTo.iterator(); i.hasNext();)
+    {
+      Adapter adapter = (Adapter) i.next();
+      if (adapter instanceof IADTObject)
+      {
+        IADTObject adtObject = (IADTObject) adapter;
+        adtObject.registerListener(this);
+      }
+    }*/
+    // System.out.println("fields[" + this + "].size() = " + fields.size());
+    return fields;
+  }
+
+  public IModel getModel()
+  {
+    Adapter adapter = XSDAdapterFactory.getInstance().adapt(getXSDModelGroupDefinition().getSchema());
+    return (IModel)adapter;
+  }
+  public String getName()
+  {
+    return getText();
+  }    
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDParticleAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDParticleAdapter.java
new file mode 100644
index 0000000..d0425e3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDParticleAdapter.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import org.eclipse.wst.xsd.adt.design.IAnnotationProvider;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDParticle;
+
+public class XSDParticleAdapter extends XSDBaseAdapter implements IAnnotationProvider
+{
+  public XSDParticleAdapter()
+  {
+    super();
+  }
+
+  public int getMaxOccurs()
+  {
+    return getMaxOccurs((XSDConcreteComponent) target);
+  }
+
+  public int getMinOccurs()
+  {
+    return getMinOccurs((XSDConcreteComponent) target);
+  }
+
+  public static int getMinOccurs(XSDConcreteComponent component)
+  {
+    int minOccur = -2;
+    if (component != null)
+    {
+      Object o = component.getContainer();
+      if (o instanceof XSDParticle)
+      {
+        if (((XSDParticle) o).isSetMinOccurs())
+        {
+          try
+          {
+            minOccur = ((XSDParticle) o).getMinOccurs();
+          }
+          catch (Exception e)
+          {
+          }
+        }
+      }
+    }
+    return minOccur;
+  }
+
+  public static int getMaxOccurs(XSDConcreteComponent component)
+  {
+    int maxOccur = -2;
+    if (component != null)
+    {
+      Object o = component.getContainer();
+      if (o instanceof XSDParticle)
+      {
+        if (((XSDParticle) o).isSetMaxOccurs())
+        {
+          try
+          {
+            maxOccur = ((XSDParticle) o).getMaxOccurs();
+          }
+          catch (Exception e)
+          {
+          }
+        }
+      }
+    }
+    return maxOccur;
+  }
+
+  public String getNameAnnotationString()
+  {
+    return buildAnnotationString(true);
+  }
+
+  public String getNameAnnotationToolTipString()
+  {
+    return buildAnnotationString(false);
+  }
+
+  public String getTypeAnnotationString()
+  {
+    return null;
+  }
+
+  public String getTypeAnnotationToolTipString()
+  {
+    return null;
+  }
+
+  protected String buildAnnotationString(boolean isForLabel)
+  {
+    String occurenceDescription = "";
+    String toolTipDescription = "";
+    // TODO: set int values as defined constants
+    // -2 means the user didn't specify (so the default is 1)
+    int minOccurs = getMinOccurs();
+    int maxOccurs = getMaxOccurs();
+
+    // This is for the attribute field case, which has no
+    // occurrence attributes
+    if (minOccurs == -3 && maxOccurs == -3)
+    {
+      occurenceDescription = "";
+    }
+    else if (minOccurs == 0 && (maxOccurs == -2 || maxOccurs == 1))
+    {
+      occurenceDescription = "[0..1]";
+      toolTipDescription = "optional";
+    }
+    else if (minOccurs == 0 && maxOccurs == -1)
+    {
+      occurenceDescription = "[0..*]";
+      toolTipDescription = "Zero or more";
+    }
+    else if ((minOccurs == 1 && maxOccurs == -1) || (minOccurs == -2 && maxOccurs == -1))
+    {
+      occurenceDescription = "[1..*]";
+      toolTipDescription = "One or more";
+    }
+    else if ((minOccurs == 1 && maxOccurs == 1) || (minOccurs == -2 && maxOccurs == 1) || (minOccurs == 1 && maxOccurs == -2))
+    {
+      occurenceDescription = "[1..1]";
+      toolTipDescription = "required";
+    }
+    else if (minOccurs == -2 && maxOccurs == -2)
+    {
+      occurenceDescription = "";
+      // none specified, so don't have any toolTip description
+    }
+    else
+    {
+      if (maxOccurs == -2)
+        maxOccurs = 1;
+      String maxSymbol = maxOccurs == -1 ? "*" : "" + maxOccurs;
+      String minSymbol = minOccurs == -2 ? "1" : "" + minOccurs;
+      occurenceDescription = "[" + minSymbol + ".." + maxSymbol + "]";
+      toolTipDescription = "array";
+    }
+
+    if (isForLabel)
+    {
+      return occurenceDescription;
+    }
+    else
+    {
+      return toolTipDescription;
+    }
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaAdapter.java
new file mode 100644
index 0000000..6d418d8
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaAdapter.java
@@ -0,0 +1,427 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.NotificationImpl;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDComplexTypeDefinitionAction;
+import org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDPackage;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+public class XSDSchemaAdapter extends XSDBaseAdapter implements IActionProvider, IModel, IADTObjectListener
+{
+  protected List types = null;
+  protected List children;
+
+  protected CategoryAdapter fDirectivesCategory;
+  protected CategoryAdapter fElementsCategory;
+  protected CategoryAdapter fAttributesCategory;
+  protected CategoryAdapter fAttributeGroupsCategory;
+  protected CategoryAdapter fTypesCategory;
+  protected CategoryAdapter fGroupsCategory;
+
+  /**
+   * Create all the category adapters
+   * 
+   * @param xsdSchema
+   */
+  protected void createCategoryAdapters(XSDSchema xsdSchema)
+  {
+    List directivesList = getDirectives(xsdSchema);
+    List elementsList = getGlobalElements(xsdSchema);
+    List attributeGroupList = getAttributeGroupList(xsdSchema);
+    List attributesList = getAttributeList(xsdSchema);
+    List groups = getGroups(xsdSchema);
+    List types = getComplexTypes(xsdSchema);
+    types.addAll(getSimpleTypes(xsdSchema));
+
+    fDirectivesCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_DIRECTIVES"), XSDEditorPlugin.getDefault().getIconImage("obj16/directivesheader"), directivesList, xsdSchema, CategoryAdapter.DIRECTIVES);
+    registerListener(fDirectivesCategory);
+
+    fElementsCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_ELEMENTS"), XSDEditorPlugin.getDefault().getIconImage("obj16/elementsheader"), elementsList, xsdSchema, CategoryAdapter.ELEMENTS);
+    registerListener(fElementsCategory);
+
+    fAttributesCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_ATTRIBUTES"), XSDEditorPlugin.getDefault().getIconImage("obj16/attributesheader"), attributesList, xsdSchema, CategoryAdapter.ATTRIBUTES);
+    registerListener(fAttributesCategory);
+    fAttributeGroupsCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_ATTRIBUTE_GROUPS"), XSDEditorPlugin.getDefault().getIconImage("obj16/attributegroupsheader"), attributeGroupList, xsdSchema, CategoryAdapter.ATTRIBUTE_GROUPS);
+    registerListener(fAttributeGroupsCategory);
+
+    fTypesCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_TYPES"), XSDEditorPlugin.getDefault().getIconImage("obj16/typesheader"), types, xsdSchema, CategoryAdapter.TYPES);
+    registerListener(fTypesCategory);
+
+    fGroupsCategory = new CategoryAdapter(XSDEditorPlugin.getResourceString("_UI_GRAPH_GROUPS"), XSDEditorPlugin.getDefault().getIconImage("obj16/groupsheader"), groups, xsdSchema, CategoryAdapter.GROUPS);
+    registerListener(fGroupsCategory);
+  }
+
+  public List getTypes()
+  {
+    if (types == null)
+    {
+      types = new ArrayList();
+      XSDSchema schema = (XSDSchema) target;
+      List concreteComponentList = new ArrayList();
+      for (Iterator i = schema.getContents().iterator(); i.hasNext();)
+      {
+        XSDConcreteComponent component = (XSDConcreteComponent) i.next();
+        if (component instanceof XSDTypeDefinition)
+        {
+          concreteComponentList.add(component);
+        }
+      }
+      populateAdapterList(concreteComponentList, types);
+    }
+    return types;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.wst.xsd.adt.outline.ITreeElement#getChildren()
+   */
+  public ITreeElement[] getChildren()
+  {
+    XSDSchema xsdSchema = (XSDSchema) getTarget();
+
+    children = new ArrayList();
+
+    // just set categoryadapters' children if category adapters are
+    // already created
+    if (fDirectivesCategory != null)
+    {
+      List directivesList = getDirectives(xsdSchema);
+      List elementsList = getGlobalElements(xsdSchema);
+      List attributeGroupList = getAttributeGroupList(xsdSchema);
+      List attributesList = getAttributeList(xsdSchema);
+      List groups = getGroups(xsdSchema);
+      List types = getComplexTypes(xsdSchema);
+      types.addAll(getSimpleTypes(xsdSchema));
+
+      fDirectivesCategory.setChildren(directivesList);
+      fElementsCategory.setChildren(elementsList);
+      fAttributesCategory.setChildren(attributesList);
+      fAttributeGroupsCategory.setChildren(attributeGroupList);
+      fTypesCategory.setChildren(types);
+      fGroupsCategory.setChildren(groups);
+    }
+    else
+    {
+      createCategoryAdapters(xsdSchema);
+    }
+
+    children.add(fDirectivesCategory);
+    children.add(fElementsCategory);
+    children.add(fAttributesCategory);
+    children.add(fAttributeGroupsCategory);
+    children.add(fTypesCategory);
+    children.add(fGroupsCategory);
+
+    return (ITreeElement[]) children.toArray(new ITreeElement[0]);
+  }
+
+  public void notifyChanged(final Notification msg)
+  {
+    class CategoryNotification extends NotificationImpl
+    {
+      protected Object category;
+
+      public CategoryNotification(Object category)
+      {
+        super(msg.getEventType(), msg.getOldValue(), msg.getNewValue(), msg.getPosition());
+        this.category = category;
+      }
+
+      public Object getNotifier()
+      {
+        return category;
+      }
+
+      public Object getFeature()
+      {
+        return msg.getFeature();
+      }
+    }
+
+    if (children == null)
+    {
+      getChildren();
+    }
+
+    if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_ReferencingDirectives())
+    {
+      CategoryAdapter adapter = getCategory(CategoryAdapter.DIRECTIVES);
+      Assert.isTrue(adapter != null);
+      XSDSchema xsdSchema = adapter.getXSDSchema();
+      adapter.setChildren(getDirectives(xsdSchema));
+      notifyListeners(new CategoryNotification(adapter), adapter.getText());
+      return;
+    }
+    else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_ElementDeclarations())
+    {
+      CategoryAdapter adapter = getCategory(CategoryAdapter.ELEMENTS);
+      Assert.isTrue(adapter != null);
+      XSDSchema xsdSchema = adapter.getXSDSchema();
+      adapter.setChildren(getGlobalElements(xsdSchema));
+      notifyListeners(new CategoryNotification(adapter), adapter.getText());
+      return;
+    }
+    else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_AttributeDeclarations())
+    {
+      CategoryAdapter adapter = getCategory(CategoryAdapter.ATTRIBUTES);
+      Assert.isTrue(adapter != null);
+      XSDSchema xsdSchema = adapter.getXSDSchema();
+      adapter.setChildren(getAttributeList(xsdSchema));
+      notifyListeners(new CategoryNotification(adapter), adapter.getText());
+      return;
+    }
+    else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_AttributeGroupDefinitions())
+    {
+      CategoryAdapter adapter = getCategory(CategoryAdapter.ATTRIBUTE_GROUPS);
+      Assert.isTrue(adapter != null);
+      XSDSchema xsdSchema = adapter.getXSDSchema();
+      adapter.setChildren(getAttributeGroupList(xsdSchema));
+      notifyListeners(new CategoryNotification(adapter), adapter.getText());
+      return;
+    }
+    else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_TypeDefinitions())
+    {
+      CategoryAdapter adapter = getCategory(CategoryAdapter.TYPES);
+      Assert.isTrue(adapter != null);
+      XSDSchema xsdSchema = adapter.getXSDSchema();
+      List types = getComplexTypes(xsdSchema);
+      types.addAll(getSimpleTypes(xsdSchema));
+
+      adapter.setChildren(types);
+      notifyListeners(new CategoryNotification(adapter), adapter.getText());
+      return;
+    }
+    else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_ModelGroupDefinitions())
+    {
+      CategoryAdapter adapter = getCategory(CategoryAdapter.GROUPS);
+      Assert.isTrue(adapter != null);
+      XSDSchema xsdSchema = adapter.getXSDSchema();
+      adapter.setChildren(getGroups(xsdSchema));
+      notifyListeners(new CategoryNotification(adapter), adapter.getText());
+      return;
+    }
+    else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_Annotations())
+    {
+      return;
+    }
+    else if (msg.getFeature() == XSDPackage.eINSTANCE.getXSDSchema_SchemaLocation())
+    {
+      notifyListeners(msg, null);
+      return;
+    }
+    
+    types = null;
+    getTypes();
+
+    super.notifyChanged(msg);
+  }
+  
+  protected CategoryAdapter getCategory(int category)
+  {
+    int length = children.size();
+    CategoryAdapter adapter = null;
+    for (int i = 0; i < length; i++)
+    {
+      adapter = (CategoryAdapter) children.get(i);
+      if (adapter.getGroupType() ==  category)
+      {
+        break;
+      }
+    }
+    return adapter;
+  }
+
+  protected List getDirectives(XSDSchema schema)
+  {
+    List list = new ArrayList();
+    for (Iterator i = schema.getContents().iterator(); i.hasNext();)
+    {
+      Object o = i.next();
+      if (o instanceof XSDSchemaDirective)
+      {
+        list.add(o);
+      }
+    }
+    List adapterList = new ArrayList();
+    populateAdapterList(list, adapterList);
+    return adapterList;
+  }
+
+  protected List getGlobalElements(XSDSchema schema)
+  {
+    List elements = schema.getElementDeclarations();
+    List list = new ArrayList();
+    for (Iterator i = elements.iterator(); i.hasNext();)
+    {
+      XSDElementDeclaration elem = (XSDElementDeclaration) i.next();
+      if (elem.getRootContainer() == schema)
+      {
+        list.add(elem);
+      }
+    }
+    List adapterList = new ArrayList();
+    populateAdapterList(list, adapterList);
+    return adapterList;
+  }
+
+  /**
+   * @param schema
+   * @return
+   */
+  protected List getComplexTypes(XSDSchema schema)
+  {
+    List allTypes = schema.getTypeDefinitions();
+    List list = new ArrayList();
+    for (Iterator i = allTypes.iterator(); i.hasNext();)
+    {
+      XSDTypeDefinition td = (XSDTypeDefinition) i.next();
+      if (td instanceof XSDComplexTypeDefinition)
+      {
+        XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition) td;
+        if (ct.getRootContainer() == schema)
+        {
+          list.add(ct);
+        }
+      }
+    }
+    List adapterList = new ArrayList();
+    populateAdapterList(list, adapterList);
+    return adapterList;
+  }
+
+  protected List getAttributeGroupList(XSDSchema xsdSchema)
+  {
+    List attributeGroupList = new ArrayList();
+    for (Iterator i = xsdSchema.getAttributeGroupDefinitions().iterator(); i.hasNext();)
+    {
+      XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition) i.next();
+      if (attrGroup.getRootContainer() == xsdSchema)
+      {
+        attributeGroupList.add(attrGroup);
+      }
+    }
+    List adapterList = new ArrayList();
+    populateAdapterList(attributeGroupList, adapterList);
+    return adapterList;
+  }
+
+  protected List getAttributeList(XSDSchema xsdSchema)
+  {
+    List attributesList = new ArrayList();
+    for (Iterator iter = xsdSchema.getAttributeDeclarations().iterator(); iter.hasNext();)
+    {
+      Object o = iter.next();
+      if (o instanceof XSDAttributeDeclaration)
+      {
+        XSDAttributeDeclaration attr = (XSDAttributeDeclaration) o;
+        if (attr != null)
+        {
+          if (attr.getTargetNamespace() != null)
+          {
+            if (!(attr.getTargetNamespace().equals("http://www.w3.org/2001/XMLSchema-instance")))
+            {
+              if (attr.getRootContainer() == xsdSchema)
+              {
+                attributesList.add(attr);
+              }
+            }
+          }
+          else
+          {
+            if (attr.getRootContainer() == xsdSchema)
+            {
+              attributesList.add(attr);
+            }
+          }
+        }
+      }
+    }
+    List adapterList = new ArrayList();
+    populateAdapterList(attributesList, adapterList);
+    return adapterList;
+  }
+
+  protected List getSimpleTypes(XSDSchema schema)
+  {
+    List allTypes = schema.getTypeDefinitions();
+    List list = new ArrayList();
+    for (Iterator i = allTypes.iterator(); i.hasNext();)
+    {
+      XSDTypeDefinition td = (XSDTypeDefinition) i.next();
+      if (td instanceof XSDSimpleTypeDefinition)
+      {
+        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) td;
+        if (st.getRootContainer() == schema)
+        {
+          list.add(st);
+        }
+      }
+    }
+    List adapterList = new ArrayList();
+    populateAdapterList(list, adapterList);
+    return adapterList;
+  }
+
+  protected List getGroups(XSDSchema schema)
+  {
+    List groups = schema.getModelGroupDefinitions();
+    List list = new ArrayList();
+    for (Iterator i = groups.iterator(); i.hasNext();)
+    {
+      XSDModelGroupDefinition group = (XSDModelGroupDefinition) i.next();
+      if (group.getRootContainer() == schema)
+      {
+        list.add(group);
+      }
+    }
+    List adapterList = new ArrayList();
+    populateAdapterList(list, adapterList);
+    return adapterList;
+  }
+  
+  public String[] getActions(Object object)
+  {
+     Collection actionIDs = new ArrayList();
+     actionIDs.add(AddXSDElementAction.ID);
+     actionIDs.add(AddXSDComplexTypeDefinitionAction.ID);
+        
+     return (String [])actionIDs.toArray(new String[0]);
+  }
+
+  public void propertyChanged(Object object, String property)
+  {
+    notifyListeners(object, property);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaDirectiveAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaDirectiveAdapter.java
new file mode 100644
index 0000000..a2a77bf
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSchemaDirectiveAdapter.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDRedefinableComponent;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDRedefineContent;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class XSDSchemaDirectiveAdapter extends XSDBaseAdapter
+{
+  public Image getImage()
+  {
+    XSDSchemaDirective object = (XSDSchemaDirective) target;
+    if (object instanceof XSDImport)
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDImport.gif");
+    }
+    else if (object instanceof XSDInclude)
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDInclude.gif");
+    }
+    else if (object instanceof XSDRedefine)
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDRedefine.gif");
+    }
+    return null;
+  }
+
+  public String getText()
+  {
+    XSDSchemaDirective directive = (XSDSchemaDirective) target;
+    String result = directive.getSchemaLocation();
+    if (result == null)
+      result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
+    if (result.equals(""))
+      result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
+    return result;
+
+  }
+
+  public ITreeElement[] getChildren()
+  {
+    List list = new ArrayList();
+    if (target instanceof XSDRedefine)
+    {
+      XSDRedefine redefine = (XSDRedefine) target;
+      for (Iterator i = redefine.getContents().iterator(); i.hasNext();)
+      {
+        XSDRedefineContent redefineContent = (XSDRedefineContent) i.next();
+        if (redefineContent instanceof XSDAttributeGroupDefinition)
+        {
+          list.add((XSDAttributeGroupDefinition) redefine);
+        }
+        else if (redefineContent instanceof XSDModelGroupDefinition)
+        {
+          list.add((XSDModelGroupDefinition) redefineContent);
+        }
+        else if (redefineContent instanceof XSDRedefinableComponent)
+        {
+          XSDRedefinableComponent comp = (XSDRedefinableComponent) redefineContent;
+          if (comp instanceof XSDAttributeGroupDefinition)
+          {
+            list.add((XSDAttributeGroupDefinition) comp);
+          }
+          else if (comp instanceof XSDModelGroupDefinition)
+          {
+            list.add((XSDModelGroupDefinition) comp);
+          }
+          else if (comp instanceof XSDComplexTypeDefinition)
+          {
+            list.add((XSDComplexTypeDefinition) comp);
+          }
+          else if (comp instanceof XSDSimpleTypeDefinition)
+          {
+            list.add((XSDSimpleTypeDefinition) comp);
+          }
+        }
+        else if (redefineContent instanceof XSDComplexTypeDefinition)
+        {
+          list.add((XSDComplexTypeDefinition) redefineContent);
+        }
+        else if (redefineContent instanceof XSDSimpleTypeDefinition)
+        {
+          list.add((XSDSimpleTypeDefinition) redefineContent);
+        }
+      }
+
+    }
+    List adapterList = new ArrayList();
+    populateAdapterList(list, adapterList);
+    return (ITreeElement[]) adapterList.toArray(new ITreeElement[0]);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSimpleTypeDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSimpleTypeDefinitionAdapter.java
new file mode 100644
index 0000000..ddc67ee
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDSimpleTypeDefinitionAdapter.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDVariety;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDSimpleTypeDefinitionAdapter extends XSDTypeDefinitionAdapter implements IType
+{
+  public Image getImage()
+  {
+    XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) target;
+
+    if (xsdSimpleTypeDefinition.getContainer() == null)
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+    }
+
+    if (XSDVariety.LIST_LITERAL == xsdSimpleTypeDefinition.getVariety())
+    {
+      return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_list_obj");
+    }
+    else if (XSDVariety.UNION_LITERAL == xsdSimpleTypeDefinition.getVariety())
+    {
+      return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_union_obj");
+    }
+    else if (XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety())
+    {
+      if (xsdSimpleTypeDefinition.getPrimitiveTypeDefinition() != null)
+      {
+        return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_restrict_obj");
+      }
+      return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+    }
+    else if (xsdSimpleTypeDefinition.isSetVariety())
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+    }
+    else
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+    }
+  }
+  
+  public String getDisplayName()
+  {
+    XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) target;
+    return (xsdSimpleTypeDefinition.getName() == null ? "local type" : xsdSimpleTypeDefinition.getName());
+  }
+
+  public String getText()
+  {
+    return getText(true);
+  }
+
+  public String getText(boolean showType)
+  {
+    XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) target;
+
+    StringBuffer result = new StringBuffer();
+
+    result.append(xsdSimpleTypeDefinition.getName() == null ? "local type" : xsdSimpleTypeDefinition.getName());
+
+    if (showType)
+    {
+      XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+      if (baseTypeDefinition != null && XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety())
+      {
+        if (baseTypeDefinition.getName() != null && !xsdSimpleTypeDefinition.getContents().contains(baseTypeDefinition) && !XSDConstants.isAnySimpleType(baseTypeDefinition))
+        {
+          result.append(" : ");
+          result.append(baseTypeDefinition.getQName(xsdSimpleTypeDefinition));
+        }
+      }
+      else
+      {
+        XSDSimpleTypeDefinition itemTypeDefinition = xsdSimpleTypeDefinition.getItemTypeDefinition();
+        if (itemTypeDefinition != null)
+        {
+          if (itemTypeDefinition.getName() != null)
+          {
+            result.append(" : ");
+            result.append(itemTypeDefinition.getQName(xsdSimpleTypeDefinition));
+          }
+        }
+        else
+        {
+          List memberTypeDefinitions = xsdSimpleTypeDefinition.getMemberTypeDefinitions();
+          if (!memberTypeDefinitions.isEmpty())
+          {
+            boolean first = true;
+            for (Iterator members = memberTypeDefinitions.iterator(); members.hasNext();)
+            {
+              XSDSimpleTypeDefinition memberTypeDefinition = (XSDSimpleTypeDefinition) members.next();
+              if (memberTypeDefinition.getName() != null)
+              {
+                if (first)
+                {
+                  result.append(" : ");
+                  first = false;
+                }
+                else
+                {
+                  result.append(" | ");
+                }
+                result.append(memberTypeDefinition.getQName(xsdSimpleTypeDefinition));
+              }
+              else
+              {
+                break;
+              }
+            }
+          }
+          else if (result.length() == 0)
+          {
+            result.append("'absent'");
+          }
+        }
+      }
+    }
+
+    return result.toString();
+  }
+
+  public boolean hasChildren()
+  {
+    return false;
+  }
+  
+  public boolean isComplexType()
+  {
+    return false;
+  }
+
+  public boolean isFocusAllowed()
+  {
+    XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) target;
+    if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(xsdSimpleTypeDefinition.getTargetNamespace()))
+    {
+      return false;
+    }
+    if (xsdSimpleTypeDefinition.getName() == null)
+    {
+      return false;
+    }
+    return true;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDTypeDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDTypeDefinitionAdapter.java
new file mode 100644
index 0000000..74ece93
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDTypeDefinitionAdapter.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+public abstract class XSDTypeDefinitionAdapter extends XSDBaseAdapter implements IType
+{
+  public XSDTypeDefinition getXSDTypeDefinition()
+  {
+    return (XSDTypeDefinition)target;
+  }
+
+  public String getName()
+  {
+    if (getXSDTypeDefinition().eContainer() instanceof XSDSchema)
+    {  
+      return getXSDTypeDefinition().getName();
+    }
+    else 
+    {
+      EObject o = getXSDTypeDefinition().eContainer();
+      if (o instanceof XSDNamedComponent)
+      {
+         XSDNamedComponent ed = (XSDNamedComponent)o;
+         return "(" + ed.getName() + "Type)";               
+      }
+    }
+    return null;
+  }
+
+  public String getQualifier()
+  {
+    return getXSDTypeDefinition().getTargetNamespace();
+  }
+
+  public IType getSuperType()
+  {
+    XSDTypeDefinition td = getXSDTypeDefinition().getBaseType();
+    return td != null ? (IType)XSDAdapterFactory.getInstance().adapt(td) : null;
+  }
+
+  public Command getUpdateNameCommand(String newName)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public boolean isComplexType()
+  {
+    return false;
+  }    
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitor.java
similarity index 83%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitor.java
index 4acf32d..208d8b7 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitor.java
@@ -1,18 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.refactor.rename;
+package org.eclipse.wst.xsd.editor.internal.adapters;
 
 import java.util.Iterator;
+
 import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupContent;
 import org.eclipse.xsd.XSDAttributeGroupDefinition;
 import org.eclipse.xsd.XSDAttributeUse;
 import org.eclipse.xsd.XSDComplexTypeContent;
@@ -98,6 +98,7 @@
   {
     if (element.isElementDeclarationReference())
     {
+      visitElementDeclaration(element.getResolvedElementDeclaration());
     }
     else if (element.getAnonymousTypeDefinition() != null)
     {
@@ -118,17 +119,31 @@
         visitModelGroup(modelGroupDef.getModelGroup());
       }
     }
+    else
+    {
+      XSDModelGroup modelGroup = modelGroupDef.getResolvedModelGroupDefinition().getModelGroup();
+      if (modelGroup != null)
+      {
+        visitModelGroup(modelGroup);
+      }
+    }
   }
-  
+
   public void visitAttributeGroupDefinition(XSDAttributeGroupDefinition attributeGroup)
   {
-    if (attributeGroup.getAttributeUses() != null)
+    for (Iterator it = attributeGroup.getContents().iterator(); it.hasNext(); )
     {
-      for (Iterator iter = attributeGroup.getAttributeUses().iterator(); iter.hasNext(); )
+      Object o = it.next();
+      if (o instanceof XSDAttributeUse)
       {
-        XSDAttributeUse attrUse = (XSDAttributeUse)iter.next();
+        XSDAttributeUse attrUse = (XSDAttributeUse)o;
         visitAttributeDeclaration(attrUse.getContent());
       }
+      else if (o instanceof XSDAttributeGroupDefinition)
+      {
+        XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition)o;
+        visitAttributeGroupDefinition(attrGroup.getResolvedAttributeGroupDefinition());
+      }
     }
   }
   
@@ -140,37 +155,25 @@
   {
   }
   
+  public void visitComplexTypeContent(XSDSimpleTypeDefinition content)
+  {
+    
+  }
+  
   public void visitComplexTypeDefinition(XSDComplexTypeDefinition type)
   {
-    if (type.getContentType() != null)
+    if (type.getContent() != null)
     {
-      XSDComplexTypeContent complexContent = (XSDComplexTypeContent) type.getContentType();
+      XSDComplexTypeContent complexContent = type.getContent();
       if (complexContent instanceof XSDSimpleTypeDefinition)
       {
-        visitSimpleTypeDefinition((XSDSimpleTypeDefinition)complexContent);
+        visitComplexTypeContent((XSDSimpleTypeDefinition)complexContent);
       }
       else if (complexContent instanceof XSDParticle)
       {
         visitParticle((XSDParticle) complexContent);
       }
     }
-    
-    if (type.getAttributeContents() != null)
-    {
-      for (Iterator iter = type.getAttributeContents().iterator(); iter.hasNext(); )
-      {
-        XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent)iter.next();
-        if (attrGroupContent instanceof XSDAttributeUse)
-        {
-          XSDAttributeUse attrUse = (XSDAttributeUse)attrGroupContent;
-          visitAttributeDeclaration(attrUse.getContent());
-        }
-        else if (attrGroupContent instanceof XSDAttributeGroupDefinition)
-        {
-          visitAttributeGroupDefinition((XSDAttributeGroupDefinition)attrGroupContent);
-        }
-      }
-    }
   }
   
   public void visitParticle(XSDParticle particle)
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitorForFields.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitorForFields.java
new file mode 100644
index 0000000..59b236d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDVisitorForFields.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupContent;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class XSDVisitorForFields extends XSDVisitor
+{
+  public XSDVisitorForFields()
+  {
+  }
+
+  public List concreteComponentList = new ArrayList();
+  public List thingsWeNeedToListenTo = new ArrayList();
+  
+  public void visitComplexTypeDefinition(XSDComplexTypeDefinition type)
+  {
+    if (type.getAttributeContents() != null)
+    {
+      for (Iterator iter = type.getAttributeContents().iterator(); iter.hasNext(); )
+      {
+        XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent)iter.next();
+        if (attrGroupContent instanceof XSDAttributeUse)
+        {
+          XSDAttributeUse attrUse = (XSDAttributeUse)attrGroupContent;
+          
+          visitAttributeDeclaration(attrUse.getContent());
+
+//          if (attrUse.getAttributeDeclaration() != attrUse.getContent())
+//          {
+//            visitAttributeDeclaration(attrUse.getContent());
+//          }
+//          else
+//          {
+//            thingsWeNeedToListenTo.add(attrUse.getAttributeDeclaration());
+//            concreteComponentList.add(attrUse.getAttributeDeclaration());
+//          }
+        }
+        else if (attrGroupContent instanceof XSDAttributeGroupDefinition)
+        {
+          XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition)attrGroupContent;
+          thingsWeNeedToListenTo.add(attrGroup);
+          if (attrGroup.isAttributeGroupDefinitionReference())
+          {
+            attrGroup = attrGroup.getResolvedAttributeGroupDefinition();
+            visitAttributeGroupDefinition(attrGroup);
+          }
+        }
+      }
+    }   
+    super.visitComplexTypeDefinition(type);
+  }
+  
+  public void visitComplexTypeContent(XSDSimpleTypeDefinition content)
+  {
+    thingsWeNeedToListenTo.add(content);
+    
+    super.visitComplexTypeContent(content);   
+  }
+
+  
+  public void visitModelGroupDefinition(XSDModelGroupDefinition modelGroupDef)
+  {
+    if (modelGroupDef.isModelGroupDefinitionReference())
+    {
+      // if it's a reference we need to listen to the reference incase it changes
+      thingsWeNeedToListenTo.add(modelGroupDef);      
+    }    
+    // listen to definition incase it changes
+    XSDModelGroupDefinition resolvedModelGroupDef = modelGroupDef.getResolvedModelGroupDefinition();
+    thingsWeNeedToListenTo.add(resolvedModelGroupDef);
+    super.visitModelGroupDefinition(modelGroupDef);      
+  }
+  
+  public void visitModelGroup(XSDModelGroup modelGroup)
+  {
+    super.visitModelGroup(modelGroup);
+    thingsWeNeedToListenTo.add(modelGroup); 
+  }
+  
+  public void visitAttributeGroupDefinition(XSDAttributeGroupDefinition attributeGroup)
+  {
+    for (Iterator it = attributeGroup.getContents().iterator(); it.hasNext(); )
+    {
+      Object o = it.next();
+      if (o instanceof XSDAttributeUse)
+      {
+        XSDAttributeUse attributeUse = (XSDAttributeUse)o;
+        concreteComponentList.add(attributeUse.getAttributeDeclaration());
+        thingsWeNeedToListenTo.add(attributeUse.getAttributeDeclaration());
+      }
+      else if (o instanceof XSDAttributeGroupDefinition)
+      {
+        XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition)o;
+        thingsWeNeedToListenTo.add(attrGroup);
+        if (attrGroup.isAttributeGroupDefinitionReference())
+        {
+          attrGroup = attrGroup.getResolvedAttributeGroupDefinition();
+          visitAttributeGroupDefinition(attrGroup);
+        }
+      }
+    }
+  }
+  
+  public void visitParticle(XSDParticle particle)
+  {
+    thingsWeNeedToListenTo.add(particle);
+    super.visitParticle(particle);
+  }
+
+  public void visitElementDeclaration(XSDElementDeclaration element)
+  {
+    if (element.isElementDeclarationReference())
+    {
+      thingsWeNeedToListenTo.add(element);
+      thingsWeNeedToListenTo.add(element.getResolvedElementDeclaration());
+      // now, add the reference as a field
+      concreteComponentList.add(element);
+    }
+    else
+    {
+      concreteComponentList.add(element.getResolvedElementDeclaration());
+      // note... we intentionally ommit the call to super.visitElementDeclaration()
+      // since we don't want to delve down deeper than the element      
+    }
+  }
+  
+  public void visitAttributeDeclaration(XSDAttributeDeclaration attr)
+  {
+    if (attr.isAttributeDeclarationReference())
+    {
+      thingsWeNeedToListenTo.add(attr);
+      thingsWeNeedToListenTo.add(attr.getResolvedAttributeDeclaration());
+      concreteComponentList.add(attr);
+    }
+    else
+    {
+      concreteComponentList.add(attr.getResolvedAttributeDeclaration());
+      thingsWeNeedToListenTo.add(attr.getResolvedAttributeDeclaration());
+    }
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDWildcardAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDWildcardAdapter.java
new file mode 100644
index 0000000..1ab8da8
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/adapters/XSDWildcardAdapter.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.adapters;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDWildcardAdapter extends XSDBaseAdapter
+{
+
+  public XSDWildcardAdapter()
+  {
+
+  }
+
+  public Image getImage()
+  {
+    XSDWildcard xsdWildcard = (XSDWildcard) target;
+    return XSDEditorPlugin.getXSDImage(xsdWildcard.eContainer() instanceof XSDParticle ? "icons/XSDAny.gif" : "icons/XSDAnyAttribute.gif");
+  }
+
+  public String getText()
+  {
+    XSDWildcard xsdWildcard = (XSDWildcard) target;
+
+    StringBuffer result = new StringBuffer();
+    Element element = xsdWildcard.getElement();
+
+    if (element != null)
+    {
+      result.append(element.getNodeName());
+      boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
+      boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
+
+      if (hasMinOccurs || hasMaxOccurs)
+      {
+        result.append(" ["); //$NON-NLS-1$
+        if (hasMinOccurs)
+        {
+
+          int min = ((XSDParticle) xsdWildcard.getContainer()).getMinOccurs();
+          if (min == XSDParticle.UNBOUNDED)
+          {
+            result.append("*");
+          }
+          else
+          {
+            result.append(String.valueOf(min));
+          }
+        }
+        else
+        // print default
+        {
+          int min = ((XSDParticle) xsdWildcard.getContainer()).getMinOccurs();
+          result.append(String.valueOf(min));
+        }
+        if (hasMaxOccurs)
+        {
+          int max = ((XSDParticle) xsdWildcard.getContainer()).getMaxOccurs();
+          result.append("..");
+          if (max == XSDParticle.UNBOUNDED)
+          {
+            result.append("*");
+          }
+          else
+          {
+            result.append(String.valueOf(max));
+          }
+        }
+        else
+        // print default
+        {
+          result.append("..");
+          int max = ((XSDParticle) xsdWildcard.getContainer()).getMaxOccurs();
+          result.append(String.valueOf(max));
+        }
+        result.append("]");
+      }
+    }
+    return result.toString();
+
+  }
+
+  public boolean hasChildren()
+  {
+    return false;
+  }
+
+  public Object getParent(Object object)
+  {
+    XSDWildcard xsdWildcard = (XSDWildcard) target;
+    return xsdWildcard.getContainer();
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/AttributeGroupDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/AttributeGroupDefinitionEditPart.java
new file mode 100644
index 0000000..3c48693
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/AttributeGroupDefinitionEditPart.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.CenteredConnectionAnchor;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAttributeGroupDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.TargetConnectionSpaceFiller;
+import org.eclipse.wst.xsd.editor.internal.design.figures.GenericGroupFigure;
+import org.eclipse.xsd.XSDAttributeGroupContent;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+
+public class AttributeGroupDefinitionEditPart extends ConnectableEditPart
+{
+  public static final Image ATTRIBUTE_GROUP_REF_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("obj16/attributeGroupRef.gif", true).createImage();
+
+  public AttributeGroupDefinitionEditPart()
+  {
+    super();
+  }
+
+  public XSDAttributeGroupDefinition getXSDAttributeGroupDefinition()
+  {
+    if (getModel() instanceof XSDAttributeGroupDefinitionAdapter)
+    {
+      XSDAttributeGroupDefinitionAdapter adapter = (XSDAttributeGroupDefinitionAdapter) getModel();
+      return (XSDAttributeGroupDefinition) adapter.getTarget();
+    }
+//    else if (getModel() instanceof XSDAttributeGroupDefinition)
+//    {
+//      return (XSDAttributeGroupDefinition) getModel();
+//    }
+    return null;
+
+  }
+
+  protected IFigure createFigure()
+  {
+    GenericGroupFigure figure = new GenericGroupFigure();
+    figure.getIconFigure().image = ATTRIBUTE_GROUP_REF_ICON_IMAGE;
+    return figure;
+  }
+
+  protected List getModelChildren()
+  {
+    List list = new ArrayList();
+    
+    XSDAttributeGroupDefinitionAdapter adapter = (XSDAttributeGroupDefinitionAdapter)getModel();
+    XSDAttributeGroupDefinition attributeGroupDefinition = adapter.getXSDAttributeGroupDefinition();
+    Iterator i = attributeGroupDefinition.getResolvedAttributeGroupDefinition().getContents().iterator();
+
+    while (i.hasNext())
+    {
+      XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent) i.next();
+
+      if (attrGroupContent instanceof XSDAttributeGroupDefinition)
+      {
+        list.add(XSDAdapterFactory.getInstance().adapt(attrGroupContent));
+      }
+      else
+      {
+        list.add(new TargetConnectionSpaceFiller((XSDBaseAdapter)getModel()));
+      }
+    }
+    
+    if (list.isEmpty())
+    {
+      list.add(new TargetConnectionSpaceFiller((XSDBaseAdapter)getModel()));
+    }
+
+    return list;
+  }
+
+
+  public ReferenceConnection createConnectionFigure(BaseEditPart child)
+  {
+    ReferenceConnection connectionFigure = new ReferenceConnection();
+
+    connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(((GenericGroupFigure)getFigure()).getIconFigure(), CenteredConnectionAnchor.RIGHT, 0, 0));
+
+    if (child instanceof AttributeGroupDefinitionEditPart)
+    {
+      connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(((AttributeGroupDefinitionEditPart) child).getTargetFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+    }
+    else if (child instanceof TargetConnectionSpacingFigureEditPart)
+    {
+      TargetConnectionSpacingFigureEditPart elem = (TargetConnectionSpacingFigureEditPart) child;
+      connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(((TargetConnectionSpacingFigureEditPart) child).getFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+    }
+
+    connectionFigure.setHighlight(false);
+    return connectionFigure;
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ConnectableEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ConnectableEditPart.java
new file mode 100644
index 0000000..9d9acf1
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ConnectableEditPart.java
@@ -0,0 +1,225 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.RectangleFigure;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.figures.GenericGroupFigure;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IExtendedFigureFactory;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public abstract class ConnectableEditPart extends BaseEditPart
+{
+  protected ArrayList connectionFigures = new ArrayList();
+  
+  public IExtendedFigureFactory getExtendedFigureFactory()
+  {
+    EditPartFactory factory = getViewer().getEditPartFactory();
+    Assert.isTrue(factory instanceof IExtendedFigureFactory, "EditPartFactory must be an instanceof of IExtendedFigureFactory");    
+    return (IExtendedFigureFactory)factory; 
+  }
+  
+  public ConnectableEditPart()
+  {
+    super();
+  }
+  
+  protected IFigure createFigure()
+  {
+    GenericGroupFigure figure = new GenericGroupFigure();
+    return figure;
+  }
+
+  public XSDConcreteComponent getXSDConcreteComponent()
+  {
+    return (XSDConcreteComponent)((XSDBaseAdapter)getModel()).getTarget();
+  }
+  
+  public List getConnectionFigures()
+  {
+    return connectionFigures;
+  }
+  
+  public abstract ReferenceConnection createConnectionFigure(BaseEditPart child);
+  
+  public void activate()
+  {
+    super.activate();
+    activateConnection();
+  }
+
+  protected void activateConnection()
+  {
+    if (connectionFigures == null)
+    {
+      connectionFigures = new ArrayList();
+    }
+    for (Iterator i = getChildren().iterator(); i.hasNext();)
+    {
+      Object o = i.next();
+      if (o instanceof BaseEditPart)
+      {
+        BaseEditPart g = (BaseEditPart) o;
+        ReferenceConnection figure = createConnectionFigure(g);
+        connectionFigures.add(figure);
+        figure.setPoints(figure.getPoints());
+
+        getLayer(LayerConstants.CONNECTION_LAYER).add(figure);
+      }
+    }
+  }
+  
+  public void deactivate()
+  {
+    super.deactivate();
+    deactivateConnection();
+  }
+
+  protected void deactivateConnection()
+  {
+    // if we have a connection, remove it
+    ReferenceConnection connectionFigure;
+    if (connectionFigures != null && !connectionFigures.isEmpty())
+    {
+      for (Iterator i = connectionFigures.iterator(); i.hasNext();)
+      {
+        connectionFigure = (ReferenceConnection) i.next();
+
+        if (getLayer(LayerConstants.CONNECTION_LAYER).getChildren().contains(connectionFigure))
+        {
+          getLayer(LayerConstants.CONNECTION_LAYER).remove(connectionFigure);
+        }
+      }
+      connectionFigures = null;
+    }
+  }
+
+  public void refresh()
+  {
+    super.refresh();
+    refreshConnection();
+  }
+
+  protected void refreshConnection()
+  {
+    if (!isActive())
+      return;
+
+    if (connectionFigures == null || connectionFigures.isEmpty())
+    {
+      activateConnection();
+    }
+    else
+    {
+      deactivateConnection();
+      activateConnection();
+    }
+  }
+  
+  RectangleFigure selectionFeedbackFigure;
+  public void addFeedback()
+  {
+    ReferenceConnection connectionFigure;
+    if (connectionFigures != null && !connectionFigures.isEmpty())
+    {
+      for (Iterator i = connectionFigures.iterator(); i.hasNext();)
+      {
+        connectionFigure = (ReferenceConnection) i.next();
+        connectionFigure.setHighlight(true);
+      }
+    }
+    GenericGroupFigure figure = (GenericGroupFigure)getFigure();
+    Rectangle r = figure.getIconFigure().getBounds();
+    Rectangle zoomedRect = getZoomedBounds(r);
+    selectionFeedbackFigure = new RectangleFigure();
+    selectionFeedbackFigure.setForegroundColor(ColorConstants.blue);
+    selectionFeedbackFigure.setBounds(zoomedRect);
+    selectionFeedbackFigure.setFill(false);
+    selectionFeedbackFigure.setOpaque(true);
+    selectionFeedbackFigure.setLineWidth(1);
+    getLayer(LayerConstants.FEEDBACK_LAYER).add(selectionFeedbackFigure);
+  }
+  
+  public void removeFeedback()
+  {
+    ReferenceConnection connectionFigure;
+    if (connectionFigures != null && !connectionFigures.isEmpty())
+    {
+      for (Iterator i = connectionFigures.iterator(); i.hasNext();)
+      {
+        connectionFigure = (ReferenceConnection) i.next();
+        connectionFigure.setHighlight(false);
+      }
+    }
+    if (selectionFeedbackFigure != null)
+    {
+      getLayer(LayerConstants.FEEDBACK_LAYER).remove(selectionFeedbackFigure);
+    }
+    selectionFeedbackFigure = null;
+  }
+  
+  protected void refreshVisuals()
+  {
+    super.refreshVisuals();
+    if (selectionFeedbackFigure != null)
+    {
+      GenericGroupFigure figure = (GenericGroupFigure)getFigure();
+      Rectangle r = figure.getIconFigure().getBounds();
+      Rectangle zoomedRect = getZoomedBounds(r);
+      selectionFeedbackFigure.setBounds(zoomedRect);
+      selectionFeedbackFigure.repaint();
+      selectionFeedbackFigure.revalidate();
+    }
+  }
+
+  protected void createEditPolicies()
+  {
+    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+  }
+
+  protected void addChildVisual(EditPart childEditPart, int index)
+  {
+    IFigure child = ((GraphicalEditPart) childEditPart).getFigure();
+    getContentPane().add(child, index);
+  }
+
+  protected void removeChildVisual(EditPart childEditPart)
+  {
+    IFigure child = ((GraphicalEditPart) childEditPart).getFigure();
+    getContentPane().remove(child);
+  }
+  
+  public IFigure getContentPane()
+  {
+    return ((GenericGroupFigure)getFigure()).getContentFigure();
+  }
+
+  public Figure getTargetFigure()
+  {
+    return ((GenericGroupFigure)getFigure()).getTargetFigure();
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupDefinitionReferenceEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupDefinitionReferenceEditPart.java
new file mode 100644
index 0000000..33c4989
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupDefinitionReferenceEditPart.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.CenteredConnectionAnchor;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDModelGroupDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.figures.GenericGroupFigure;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+
+public class ModelGroupDefinitionReferenceEditPart extends ConnectableEditPart
+{
+  public static final Image image = XSDEditorPlugin.getImageDescriptor("XSDGroupRef.gif", true).createImage();
+
+  public ModelGroupDefinitionReferenceEditPart()
+  {
+    super();
+  }
+
+  protected IFigure createFigure()
+  {
+    GenericGroupFigure figure = new GenericGroupFigure();
+    figure.getIconFigure().image = image;
+    return figure;
+  }
+
+  protected List getModelChildren()
+  {
+    List list = new ArrayList();
+
+    XSDModelGroupDefinitionAdapter adapter = (XSDModelGroupDefinitionAdapter)getModel();
+    XSDModelGroup xsdModelGroup = ((XSDModelGroupDefinition) adapter.getTarget()).getResolvedModelGroupDefinition().getModelGroup();
+    if (xsdModelGroup != null)
+      list.add(XSDAdapterFactory.getInstance().adapt(xsdModelGroup));
+    return list;
+  }
+
+  public ReferenceConnection createConnectionFigure(BaseEditPart child)
+  {
+    ReferenceConnection connectionFigure = new ReferenceConnection();
+
+    connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(((GenericGroupFigure)getFigure()).getIconFigure(), CenteredConnectionAnchor.RIGHT, 0, 0));
+
+    if (child instanceof ModelGroupEditPart)
+    {
+      connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(((ModelGroupEditPart) child).getTargetFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+    }
+    connectionFigure.setHighlight(false);
+    return connectionFigure;
+  }
+
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupEditPart.java
new file mode 100644
index 0000000..d0d299e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ModelGroupEditPart.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.CenteredConnectionAnchor;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDModelGroupAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.TargetConnectionSpaceFiller;
+import org.eclipse.wst.xsd.editor.internal.design.figures.GenericGroupFigure;
+import org.eclipse.wst.xsd.editor.internal.design.figures.ModelGroupFigure;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+
+public class ModelGroupEditPart extends ConnectableEditPart
+{
+  protected IFigure createFigure()
+  {
+    return getExtendedFigureFactory().createModelGroupFigure(getModel());
+  }
+  
+  public XSDParticle getXSDParticle()
+  {
+    Object o = getXSDModelGroup().getContainer();
+    return (o instanceof XSDParticle) ? (XSDParticle) o : null;
+  }
+
+  public XSDModelGroup getXSDModelGroup()
+  {
+    if (getModel() instanceof XSDModelGroupAdapter)
+    {
+      XSDModelGroupAdapter adapter = (XSDModelGroupAdapter) getModel();
+      return (XSDModelGroup) adapter.getTarget();
+    }
+//    else if (getModel() instanceof XSDModelGroup)
+//    {
+//      return (XSDModelGroup) getModel();
+//    }
+    return null;
+
+  }
+
+  
+  
+  protected void refreshVisuals()
+  {
+    String iconName = "icons/newSequence.gif";
+    GenericGroupFigure modelGroupFigure = (GenericGroupFigure)getFigure();
+    switch (getXSDModelGroup().getCompositor().getValue())
+    {
+      case XSDCompositor.ALL:
+      {
+        modelGroupFigure.getIconFigure().image = ModelGroupFigure.ALL_ICON_IMAGE;
+        break;
+      }
+      case XSDCompositor.CHOICE:
+      {
+        modelGroupFigure.getIconFigure().image = ModelGroupFigure.CHOICE_ICON_IMAGE;
+        break;
+      }
+      case XSDCompositor.SEQUENCE:
+      {
+        modelGroupFigure.getIconFigure().image = ModelGroupFigure.SEQUENCE_ICON_IMAGE;
+        break;
+      }
+    }
+
+    XSDModelGroupAdapter adapter = (XSDModelGroupAdapter) getModel();
+//    String occurenceDescription = adapter.getNameAnnotationToolTipString();
+//    modelGroupFigure.getIconFigure().setToolTip(occurenceDescription);
+
+    // TODO: commmon this up with XSDParticleAdapter's code
+    
+    // -2 means the user didn't specify (so the default is 1)
+    int minOccurs = adapter.getMinOccurs();
+    int maxOccurs = adapter.getMaxOccurs();
+    String occurenceDescription = "";
+    
+    if (minOccurs == -3 && maxOccurs == -3)
+    {
+      occurenceDescription = "";
+    }
+    else if (minOccurs == 0 && (maxOccurs == -2 || maxOccurs == 1))
+    {
+      occurenceDescription = "[0..1]";
+    }
+    else if ((minOccurs == 1 && maxOccurs == 1) ||
+             (minOccurs == -2 && maxOccurs == 1) ||
+             (minOccurs == 1 && maxOccurs == -2))
+    {
+      occurenceDescription = "[1..1]";
+    }
+    else if (minOccurs == -2 && maxOccurs == -2)
+    {
+      occurenceDescription = "";
+    }
+    else
+    {
+      if (maxOccurs == -2) maxOccurs = 1;
+      String maxSymbol = maxOccurs == -1 ? "*" : "" + maxOccurs;
+      
+      String minSymbol = minOccurs == -2 ? "1" : "" + minOccurs;
+      occurenceDescription = "[" + minSymbol + ".." + maxSymbol + "]";
+    }
+
+    modelGroupFigure.getIconFigure().setToolTipText(occurenceDescription);
+    modelGroupFigure.getIconFigure().repaint();
+
+    refreshConnection();
+  }
+
+  protected List getModelChildren()
+  {
+    List list = new ArrayList();
+    XSDModelGroup xsdModelGroup = getXSDModelGroup();
+    for (Iterator i = xsdModelGroup.getContents().iterator(); i.hasNext();)
+    {
+      XSDParticle next = (XSDParticle) i.next();
+      if (next.getContent() instanceof XSDElementDeclaration)
+      {
+        XSDElementDeclaration elementDeclaration = (XSDElementDeclaration) next.getContent();
+        Adapter adapter = XSDAdapterFactory.getInstance().adapt(elementDeclaration);
+        list.add(new TargetConnectionSpaceFiller((XSDBaseAdapter)adapter));
+      }
+      if (next.getContent() instanceof XSDModelGroupDefinition)
+      {
+        XSDModelGroupDefinition def = (XSDModelGroupDefinition) next.getContent();
+        Adapter adapter = XSDAdapterFactory.getInstance().adapt(def);
+        list.add(adapter);
+      }
+      else if (next.getTerm() instanceof XSDModelGroup)
+      {
+        XSDModelGroup modelGroup = (XSDModelGroup) next.getTerm();
+        Adapter adapter = XSDAdapterFactory.getInstance().adapt(modelGroup);
+        list.add(adapter);
+      }
+    }
+
+    if (list.size() == 0)
+      list.add(new TargetConnectionSpaceFiller(null));
+
+    return list;
+  }
+
+  public ReferenceConnection createConnectionFigure(BaseEditPart child)
+  {
+    ReferenceConnection connectionFigure = new ReferenceConnection();
+    GenericGroupFigure modelGroupFigure = (GenericGroupFigure)getFigure();
+    connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(modelGroupFigure.getIconFigure(), CenteredConnectionAnchor.RIGHT, 0, 0));
+
+    if (child instanceof ModelGroupEditPart)
+    {
+      connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(((ModelGroupEditPart) child).getTargetFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+    }
+    else if (child instanceof TargetConnectionSpacingFigureEditPart)
+    {
+      TargetConnectionSpacingFigureEditPart elem = (TargetConnectionSpacingFigureEditPart) child;
+      connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(elem.getFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+    }
+    else if (child instanceof ModelGroupDefinitionReferenceEditPart)
+    {
+      ModelGroupDefinitionReferenceEditPart elem = (ModelGroupDefinitionReferenceEditPart) child;
+      connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(elem.getFigure(), CenteredConnectionAnchor.LEFT, 0, 0));
+    }
+    connectionFigure.setHighlight(false);
+    return connectionFigure;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ReferenceConnection.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ReferenceConnection.java
new file mode 100644
index 0000000..009bff2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/ReferenceConnection.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.ConnectionRouter;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.swt.graphics.Color;
+
+public class ReferenceConnection extends PolylineConnection
+{
+  protected boolean highlight = false;
+
+  protected static final Color activeConnection = ColorConstants.black;
+  protected static final Color inactiveConnection = new Color(null, 198, 195, 198);
+
+  public ReferenceConnection()
+  {
+    super();
+    setConnectionRouter(new XSDModelGroupRouter());
+  }
+
+  public void setConnectionRouter(ConnectionRouter cr)
+  {
+    if (cr != null && getConnectionRouter() != null && !(getConnectionRouter() instanceof XSDModelGroupRouter))
+      super.setConnectionRouter(cr);
+  }
+
+  public boolean isHighlighted()
+  {
+    return highlight;
+  }
+
+  public void setHighlight(boolean highlight)
+  {
+    this.highlight = highlight;
+    setForegroundColor(highlight ? activeConnection : inactiveConnection);
+    setOpaque(highlight);
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/SpaceFillerForFieldEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/SpaceFillerForFieldEditPart.java
new file mode 100644
index 0000000..41cfa23
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/SpaceFillerForFieldEditPart.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+public class SpaceFillerForFieldEditPart extends BaseEditPart
+{
+  Label space;
+  public SpaceFillerForFieldEditPart()
+  {
+    super();
+  }
+
+  protected IFigure createFigure()
+  {
+    space = new Label("");
+    space.setIcon(XSDEditorPlugin.getXSDImage("icons/Dot.gif"));
+    space.setBorder(new MarginBorder(3, 0, 3, 0));
+    return space;
+  }
+
+  protected void refreshVisuals()
+  {
+  }
+
+  protected void createEditPolicies()
+  {
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/TargetConnectionSpacingFigureEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/TargetConnectionSpacingFigureEditPart.java
new file mode 100644
index 0000000..c26537d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/TargetConnectionSpacingFigureEditPart.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.editor.internal.design.figures.SpacingFigure;
+
+public class TargetConnectionSpacingFigureEditPart extends BaseEditPart
+{
+  public TargetConnectionSpacingFigureEditPart()
+  {
+    super();
+  }
+
+  SpacingFigure figure;
+
+  protected IFigure createFigure()
+  {
+    figure = new SpacingFigure();
+    return figure;
+  }
+
+  public IFigure getConnectionFigure()
+  {
+    return figure;
+  }
+
+  protected void createEditPolicies()
+  {
+
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDAttributesForAnnotationEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDAttributesForAnnotationEditPart.java
new file mode 100644
index 0000000..f7f17f5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDAttributesForAnnotationEditPart.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Annotation;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDComplexTypeDefinitionAdapter;
+
+public class XSDAttributesForAnnotationEditPart extends BaseEditPart
+{
+  IComplexType complexType;
+  public XSDAttributesForAnnotationEditPart()
+  {
+    super();
+  }
+
+  protected IFigure createFigure()
+  {
+    Figure fig = new Figure();
+    fig.setLayoutManager(new ToolbarLayout());
+    return fig;
+  }
+
+  protected void createEditPolicies()
+  {
+
+  }
+
+  protected List getModelChildren()
+  {
+    IStructure structure =  ((Annotation)getModel()).getOwner();
+    if (structure instanceof IComplexType)
+    {  
+      complexType = (IComplexType)structure;
+      if (complexType instanceof XSDComplexTypeDefinitionAdapter)
+      {
+        XSDComplexTypeDefinitionAdapter adapter = (XSDComplexTypeDefinitionAdapter) complexType;
+        return adapter.getAttributeGroupContent();
+      }
+    }
+    return Collections.EMPTY_LIST;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDBaseFieldEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDBaseFieldEditPart.java
new file mode 100644
index 0000000..58c7f21
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDBaseFieldEditPart.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.wst.xsd.adt.design.IAnnotationProvider;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseFieldEditPart;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+
+public class XSDBaseFieldEditPart extends BaseFieldEditPart
+{
+
+  public XSDBaseFieldEditPart()
+  {
+    super();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.gef.editparts.AbstractEditPart#refreshVisuals()
+   */
+  protected void refreshVisuals()
+  {
+    IFieldFigure figure = getFieldFigure();
+    IField field = (IField) getModel();
+    
+    figure.getNameLabel().setText(field.getName());
+    figure.getTypeLabel().setText(field.getTypeName());
+    figure.refreshVisuals(getModel());
+
+    String occurrenceDescription = "";
+    if (field instanceof IAnnotationProvider)
+    {
+      occurrenceDescription = ((IAnnotationProvider)field).getNameAnnotationString();
+    }
+    
+    figure.getNameAnnotationLabel().setText(occurrenceDescription);
+    
+    figure.recomputeLayout();
+
+    // our model implements ITreeElement
+    if (getModel() instanceof ITreeElement)
+    {
+      figure.getNameLabel().setIcon(((ITreeElement)getModel()).getImage());
+    }
+
+    if (getRoot() != null)
+      ((GraphicalEditPart)getRoot()).getFigure().invalidateTree();
+  }
+
+  public void addNotify()
+  {
+    super.addNotify();
+    getFieldFigure().editPartAttached(this);
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDEditPartFactory.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDEditPartFactory.java
new file mode 100644
index 0000000..561bb40
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDEditPartFactory.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import org.eclipse.gef.EditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.ADTEditPartFactory;
+import org.eclipse.wst.xsd.adt.design.editparts.ColumnEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.CompartmentEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Annotation;
+import org.eclipse.wst.xsd.adt.design.figures.ICompartmentFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.typeviz.design.figures.TypeVizFigureFactory;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAttributeGroupDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDModelGroupAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDModelGroupDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDSimpleTypeDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.SpaceFiller;
+import org.eclipse.wst.xsd.editor.internal.design.editparts.model.TargetConnectionSpaceFiller;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IExtendedFigureFactory;
+import org.eclipse.wst.xsd.editor.internal.design.figures.IModelGroupFigure;
+
+public class XSDEditPartFactory extends ADTEditPartFactory implements IExtendedFigureFactory
+{
+  protected IExtendedFigureFactory delegate;
+  
+  public XSDEditPartFactory()
+  {
+    delegate = XSDEditorPlugin.getPlugin().getXSDEditorConfiguration().getFigureFactory();
+    if (delegate == null)
+      delegate = new TypeVizFigureFactory();
+  }
+
+  public EditPart createEditPart(EditPart context, Object model)
+  {
+    EditPart child = null;
+    // Override edit part where desired
+    
+    if (model instanceof IField)
+    {
+      if (model instanceof SpaceFiller)
+      {
+        child = new SpaceFillerForFieldEditPart();
+      }
+      else if (context instanceof CompartmentEditPart)
+      {  
+        child = new XSDBaseFieldEditPart();
+      }
+    }
+    else if (model instanceof XSDSimpleTypeDefinitionAdapter)
+    {
+      child = new XSDSimpleTypeEditPart();
+    }
+    else if (model instanceof XSDModelGroupAdapter)
+    {
+      child = new ModelGroupEditPart();
+    }
+    else if (model instanceof Annotation)
+    {
+      Annotation annotation = (Annotation) model;
+      String kind = annotation.getCompartment().getKind();
+      if (kind.equals("element"))
+      {
+        child = new XSDGroupsForAnnotationEditPart();
+      }
+      else if (kind.equals("attribute"))
+      {
+        child = new XSDAttributesForAnnotationEditPart();
+      }
+    }
+    else if (!(context instanceof ColumnEditPart))
+    {   
+      if (model instanceof TargetConnectionSpaceFiller)
+      {
+        child = new TargetConnectionSpacingFigureEditPart();
+      }
+      else if (model instanceof XSDModelGroupDefinitionAdapter)
+      {
+        child = new ModelGroupDefinitionReferenceEditPart();
+      }
+      else if (model instanceof XSDAttributeGroupDefinitionAdapter)
+      {
+        child = new AttributeGroupDefinitionEditPart();
+      }
+    }
+    // if we don't have a specialzied XSD edit part to create
+    // then we simply call the super class to create a generic ADT edit part
+    //
+    if (child == null)
+    {
+      child = super.createEditPart(context, model);
+    }
+
+    // if at this this point we have not created an edit part we simply
+    // create a placeholder edit part to provide the most robust behaviour possible
+    //    
+    if (child == null)
+    {
+      // TODO (cs) log an error message here, since we shouldn't really get here 
+      child = new SpaceFillerForFieldEditPart();
+    }  
+
+    child.setModel(model);
+    return child;
+  }
+
+  protected void checkChild(EditPart child, Object model)
+  {
+    // do nothing since we have contribute our own editparts to the facade
+  }
+
+  public ICompartmentFigure createCompartmentFigure(Object model)
+  {
+    return delegate.createCompartmentFigure(model);
+  }
+  
+  public IStructureFigure createStructureFigure(Object model)
+  {
+    return delegate.createStructureFigure(model);
+  }  
+
+  public IFieldFigure createFieldFigure(Object model)
+  {
+    return delegate.createFieldFigure(model);
+  }
+  
+  public IModelGroupFigure createModelGroupFigure(Object model)
+  {
+    return delegate.createModelGroupFigure(model);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDGroupsForAnnotationEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDGroupsForAnnotationEditPart.java
new file mode 100644
index 0000000..e981285
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDGroupsForAnnotationEditPart.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Annotation;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDComplexTypeDefinitionAdapter;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDModelGroupDefinitionAdapter;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+
+public class XSDGroupsForAnnotationEditPart extends BaseEditPart
+{
+  IComplexType complexType;
+  public XSDGroupsForAnnotationEditPart()
+  {
+    super();
+  }
+
+  protected IFigure createFigure()
+  {
+    Figure fig = new Figure();
+    fig.setLayoutManager(new ToolbarLayout());
+    return fig;
+  }
+
+  protected void createEditPolicies()
+  {
+
+  }
+
+  protected List getModelChildren()
+  {
+    List xsdModelGroupList = new ArrayList();
+    List adapterList = new ArrayList();
+    
+    IStructure structure =  ((Annotation)getModel()).getOwner();
+    if (structure instanceof IComplexType)
+    {  
+      complexType = (IComplexType)structure;
+      if (complexType instanceof XSDComplexTypeDefinitionAdapter)
+      {
+        XSDComplexTypeDefinitionAdapter adapter = (XSDComplexTypeDefinitionAdapter) complexType;
+        xsdModelGroupList = adapter.getModelGroups();
+      }
+      
+      for (Iterator i = xsdModelGroupList.iterator(); i.hasNext(); )
+      {
+        Object obj = i.next();
+        if (obj instanceof XSDModelGroup)
+        {
+          adapterList.add(XSDAdapterFactory.getInstance().adapt((XSDModelGroup)obj));
+        }
+        else if (obj instanceof XSDModelGroupDefinition)
+        {
+          adapterList.add(XSDAdapterFactory.getInstance().adapt((XSDModelGroupDefinition)obj));
+        }
+      }
+    }
+    else if (structure instanceof XSDModelGroupDefinitionAdapter)
+    {
+      XSDModelGroupDefinitionAdapter adapter = (XSDModelGroupDefinitionAdapter) structure;
+      XSDModelGroup group = adapter.getXSDModelGroupDefinition().getModelGroup();
+      if (group != null)
+      {
+        adapterList.add(XSDAdapterFactory.getInstance().adapt(group));
+      }
+    }
+    
+    return adapterList;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDModelGroupRouter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDModelGroupRouter.java
new file mode 100644
index 0000000..29e8098
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDModelGroupRouter.java
@@ -0,0 +1,379 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.draw2d.AbstractRouter;
+import org.eclipse.draw2d.Connection;
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.draw2d.ConnectionRouter;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
+import org.eclipse.draw2d.geometry.Ray;
+import org.eclipse.draw2d.geometry.Rectangle;
+
+// TODO Manhattan connection router is final
+public class XSDModelGroupRouter extends AbstractRouter
+{
+  public XSDModelGroupRouter()
+  {
+    super();
+  }
+  private Map rowsUsed = new HashMap();
+  private Map colsUsed = new HashMap();
+
+  private Map reservedInfo = new HashMap();
+
+  private class ReservedInfo {
+    public List reservedRows = new ArrayList(2);
+    public List reservedCols = new ArrayList(2);
+  }
+
+  private static Ray  UP    = new Ray(0, -1),
+              DOWN  = new Ray(0, 1),
+              LEFT  = new Ray(-1, 0),
+              RIGHT = new Ray(1, 0);
+
+
+  /**
+   * @see ConnectionRouter#invalidate(Connection)
+   */
+  public void invalidate(Connection connection) {
+    removeReservedLines(connection);
+  }
+
+  private int getColumnNear(Connection connection, int r, int n, int x) {
+    int min = Math.min(n, x),
+      max = Math.max(n, x);
+    if (min > r) {
+      max = min;
+      min = r - (min - r);
+    }
+    if (max < r) {
+      min = max;
+      max = r + (r - max);
+    }
+    int proximity = 0;
+    int direction = -1;
+    if (r % 2 == 1)
+      r--;
+    Integer i;
+    while (proximity < r) {
+      i = new Integer(r + proximity * direction);
+      if (!colsUsed.containsKey(i)) {
+        colsUsed.put(i, i);
+        reserveColumn(connection, i);
+        return i.intValue();
+      }
+      int j = i.intValue();
+      if (j <= min)
+        return j + 2;
+      if (j >= max)
+        return j - 2;
+      if (direction == 1)
+        direction = -1;
+      else {
+        direction = 1;
+        proximity += 2;
+      }
+    }
+    return r;
+  }
+
+  /**
+   * Returns the direction the point <i>p</i> is in relation to the given rectangle.
+   * Possible values are LEFT (-1,0), RIGHT (1,0), UP (0,-1) and DOWN (0,1).
+   * 
+   * @param r the rectangle
+   * @param p the point
+   * @return the direction from <i>r</i> to <i>p</i>
+   */
+  protected Ray getDirection(Rectangle r, Point p) {
+    int i, distance = Math.abs(r.x - p.x);
+    Ray direction;
+    
+    direction = LEFT;
+
+    i = Math.abs(r.y - p.y);
+    if (i <= distance) {
+      distance = i;
+      direction = UP;
+    }
+
+    i = Math.abs(r.bottom() - p.y);
+    if (i <= distance) {
+      distance = i;
+      direction = DOWN;
+    }
+
+    i = Math.abs(r.right() - p.x);
+    if (i < distance) {
+      distance = i;
+      direction = RIGHT;
+    }
+
+    return direction;
+  }
+
+  protected Ray getEndDirection(Connection conn) {
+    ConnectionAnchor anchor = conn.getTargetAnchor();
+    Point p = getEndPoint(conn);
+    Rectangle rect;
+    if (anchor.getOwner() == null)
+      rect = new Rectangle(p.x - 1, p.y - 1, 2, 2);
+    else {
+      rect = conn.getTargetAnchor().getOwner().getBounds().getCopy();
+      conn.getTargetAnchor().getOwner().translateToAbsolute(rect);
+    }
+    return getDirection(rect, p);
+  }
+
+  protected int getRowNear(Connection connection, int r, int n, int x) {
+    int min = Math.min(n, x),
+      max = Math.max(n, x);
+    if (min > r) {
+      max = min;
+      min = r - (min - r);
+    }
+    if (max < r) {
+      min = max;
+      max = r + (r - max);
+    }
+
+    int proximity = 0;
+    int direction = -1;
+    if (r % 2 == 1)
+      r--;
+    Integer i;
+    while (proximity < r) {
+      i = new Integer(r + proximity * direction);
+      if (!rowsUsed.containsKey(i)) {
+        rowsUsed.put(i, i);
+        reserveRow(connection, i);
+        return i.intValue();
+      }
+      int j = i.intValue();
+      if (j <= min)
+        return j + 2;
+      if (j >= max)
+        return j - 2;
+      if (direction == 1)
+        direction = -1;
+      else {
+        direction = 1;
+        proximity += 2;
+      }
+    }
+    return r;
+  }
+
+  protected Ray getStartDirection(Connection conn) {
+    ConnectionAnchor anchor = conn.getSourceAnchor();
+    Point p = getStartPoint(conn);
+    Rectangle rect;
+    if (anchor.getOwner() == null)
+      rect = new Rectangle(p.x - 1, p.y - 1, 2, 2);
+    else {
+      rect = conn.getSourceAnchor().getOwner().getBounds().getCopy();
+      conn.getSourceAnchor().getOwner().translateToAbsolute(rect);
+    }
+    return getDirection(rect, p);
+  }
+
+  protected void processPositions(Ray start, Ray end, List positions, 
+                    boolean horizontal, Connection conn) {
+    removeReservedLines(conn);
+
+    int pos[] = new int[positions.size() + 2];
+    if (horizontal)
+      pos[0] = start.x;
+    else
+      pos[0] = start.y;
+    int i;
+    for (i = 0; i < positions.size(); i++) {
+      pos[i + 1] = ((Integer)positions.get(i)).intValue();
+    }
+    if (horizontal == (positions.size() % 2 == 1))
+      pos[++i] = end.x;
+    else
+      pos[++i] = end.y;
+
+    PointList points = new PointList();
+    points.addPoint(new Point(start.x, start.y));
+    Point p;
+    int current, prev, min, max;
+    boolean adjust;
+    for (i = 2; i < pos.length - 1; i++) {
+      horizontal = !horizontal;
+      prev = pos[i - 1];
+      current = pos[i];
+
+      adjust = (i != pos.length - 2);
+      if (horizontal) {
+        if (adjust) {
+          min = pos[i - 2];
+          max = pos[i + 2];
+          pos[i] = current = getRowNear(conn, current, min, max);
+        }
+        p = new Point(prev, current);
+      } else {
+        if (adjust) {
+          min = pos[i - 2];
+          max = pos[i + 2];
+          pos[i] = current = getColumnNear(conn, current, min, max);
+        }
+        p = new Point(current, prev);
+      }
+      points.addPoint(p);
+    }
+    points.addPoint(new Point(end.x, end.y));
+    conn.setPoints(points);
+  }
+
+  /**
+   * @see ConnectionRouter#remove(Connection)
+   */
+  public void remove(Connection connection) {
+    removeReservedLines(connection);
+  }
+
+  protected void removeReservedLines(Connection connection) {
+    ReservedInfo rInfo = (ReservedInfo) reservedInfo.get(connection);
+    if (rInfo == null) 
+      return;
+    
+    for (int i = 0; i < rInfo.reservedRows.size(); i++) {
+      rowsUsed.remove(rInfo.reservedRows.get(i));
+    }
+    for (int i = 0; i < rInfo.reservedCols.size(); i++) {
+      colsUsed.remove(rInfo.reservedCols.get(i));
+    }
+    reservedInfo.remove(connection);
+  }
+
+  protected void reserveColumn(Connection connection, Integer column) {
+    ReservedInfo info = (ReservedInfo) reservedInfo.get(connection);
+    if (info == null) {
+      info = new ReservedInfo();
+      reservedInfo.put(connection, info);
+    }
+    info.reservedCols.add(column);
+  }
+
+  protected void reserveRow(Connection connection, Integer row) {
+    ReservedInfo info = (ReservedInfo) reservedInfo.get(connection);
+    if (info == null) {
+      info = new ReservedInfo();
+      reservedInfo.put(connection, info);
+    }
+    info.reservedRows.add(row);
+  }
+
+  /**
+   * @see ConnectionRouter#route(Connection)
+   */
+  public void route(Connection conn) {
+    if ((conn.getSourceAnchor() == null) || (conn.getTargetAnchor() == null)) 
+      return;
+    int i;
+    Point startPoint = getStartPoint(conn);
+    conn.translateToRelative(startPoint);
+    Point endPoint = getEndPoint(conn);
+    conn.translateToRelative(endPoint);
+
+    Ray start = new Ray(startPoint);
+    Ray end = new Ray(endPoint);
+    Ray average = new Ray(startPoint.x + 2, startPoint.y); // start.getAveraged(end);
+
+    Ray direction = new Ray(start, end);
+    Ray startNormal = getStartDirection(conn);
+    Ray endNormal   = getEndDirection(conn);
+
+    List positions = new ArrayList(5);
+    boolean horizontal = startNormal.isHorizontal();
+    if (horizontal) 
+      positions.add(new Integer(start.y));
+    else
+      positions.add(new Integer(start.x));
+    horizontal = !horizontal;
+
+    if (startNormal.dotProduct(endNormal) == 0) {
+      if ((startNormal.dotProduct(direction) >= 0) 
+        && (endNormal.dotProduct(direction) <= 0)) {
+        // 0
+      } else {
+        // 2
+        if (startNormal.dotProduct(direction) < 0)
+          i = startNormal.similarity(start.getAdded(startNormal.getScaled(10)));
+        else {
+          if (horizontal) 
+            i = average.y;
+          else 
+            i = average.x;
+        }
+        positions.add(new Integer(i));
+        horizontal = !horizontal;
+
+        if (endNormal.dotProduct(direction) > 0)
+          i = endNormal.similarity(end.getAdded(endNormal.getScaled(10)));
+        else {
+          if (horizontal) 
+            i = average.y;
+          else 
+            i = average.x;
+        }
+        positions.add(new Integer(i));
+        horizontal = !horizontal;
+      }
+    } else {
+      if (startNormal.dotProduct(endNormal) > 0) {
+        //1
+        if (startNormal.dotProduct(direction) >= 0)
+          i = startNormal.similarity(start.getAdded(startNormal.getScaled(10)));
+        else
+          i = endNormal.similarity(end.getAdded(endNormal.getScaled(10)));
+        positions.add(new Integer(i));
+        horizontal = !horizontal;
+      } else {
+        //3 or 1
+        if (startNormal.dotProduct(direction) < 0) {
+          i = startNormal.similarity(start.getAdded(startNormal.getScaled(10)));
+          positions.add(new Integer(i));
+          horizontal = !horizontal;
+        }
+
+        if (horizontal) 
+          i = average.y;
+        else 
+          i = average.x;
+        positions.add(new Integer(i));
+        horizontal = !horizontal;
+
+        if (startNormal.dotProduct(direction) < 0) {
+          i = endNormal.similarity(end.getAdded(endNormal.getScaled(10)));
+          positions.add(new Integer(i));
+          horizontal = !horizontal;
+        }
+      }
+    }
+    if (horizontal) 
+      positions.add(new Integer(end.y));
+    else 
+      positions.add(new Integer(end.x));
+    
+    processPositions(start, end, positions, startNormal.isHorizontal(), conn);
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDSimpleTypeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDSimpleTypeEditPart.java
new file mode 100644
index 0000000..a8a4e34
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/XSDSimpleTypeEditPart.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseTypeConnectingEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.TypeReferenceConnection;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTDirectEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.typeviz.design.figures.RoundedLineBorder;
+import org.eclipse.wst.xsd.adt.typeviz.design.figures.StructureFigure;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDSimpleTypeDefinitionAdapter;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class XSDSimpleTypeEditPart extends BaseTypeConnectingEditPart
+{
+  StructureFigure figure;
+  protected ADTDirectEditPolicy adtDirectEditPolicy = new ADTDirectEditPolicy();
+  
+  public XSDSimpleTypeEditPart()
+  {
+    super();
+  }
+  
+  public XSDSimpleTypeDefinition getXSDSimpleTypeDefinition()
+  {
+    return (XSDSimpleTypeDefinition)((XSDSimpleTypeDefinitionAdapter)getModel()).getTarget();
+  }
+
+  protected IFigure createFigure()
+  {
+    figure = new StructureFigure();
+    figure.setBorder(new RoundedLineBorder(1, 10));    
+    ToolbarLayout toolbarLayout = new ToolbarLayout();
+    toolbarLayout.setStretchMinorAxis(true);
+    figure.setLayoutManager(toolbarLayout);
+    figure.getHeadingFigure().getLabel().setIcon(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
+    return figure;
+  }
+  
+  protected void refreshVisuals()
+  {
+    String name = ((XSDSimpleTypeDefinitionAdapter)getModel()).getDisplayName();
+    figure.headingFigure.getLabel().setText(name);
+  }
+  
+  public IStructureFigure getStructureFigure()
+  {
+    return (IStructureFigure)getFigure();
+  }
+
+  public IFigure getContentPane()
+  {
+    return getStructureFigure().getContentPane();
+  }
+  
+  
+  protected void createEditPolicies()
+  {
+    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+    installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, adtDirectEditPolicy);
+  }
+
+  public void addFeedback()
+  {
+    getStructureFigure().addSelectionFeedback();
+    super.addFeedback();
+  }
+  
+  public void removeFeedback()
+  {
+    getStructureFigure().removeSelectionFeedback();
+    super.removeFeedback();    
+  }
+
+  public ReferenceConnection createConnectionFigure(BaseEditPart child)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public TypeReferenceConnection createConnectionFigure()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/SpaceFiller.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/SpaceFiller.java
new file mode 100644
index 0000000..682a64e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/SpaceFiller.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts.model;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+/**
+ * Dummy class to add space to field list
+ *
+ */
+public class SpaceFiller implements IField
+{
+  String kind;
+  public SpaceFiller(String kind)
+  {
+    super();
+    this.kind = kind;
+  }
+
+  public Image getImage()
+  {
+    if (kind.equals("attribute"))
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
+    }
+    else
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
+    }
+  }
+  
+  public String getKind()
+  {
+    return kind;
+  }
+  
+  public void setKind(String kind)
+  {
+    this.kind = kind;
+  }
+  
+  public boolean isGlobal()
+  {
+    return false;
+  }
+
+  public IComplexType getContainerType()
+  {
+    return null;
+  }
+
+  public String getName()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public String getTypeName()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public String getTypeNameQualifier()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public IType getType()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public int getMinOccurs()
+  {
+    // TODO Auto-generated method stub
+    return 0;
+  }
+
+  public int getMaxOccurs()
+  {
+    // TODO Auto-generated method stub
+    return 0;
+  }
+
+  public Command getUpdateMinOccursCommand(int minOccurs)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getUpdateMaxOccursCommand(int maxOccurs)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getUpdateTypeNameCommand(String typeName, String quailifier)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getUpdateNameCommand(String name)
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public Command getDeleteCommand()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  public void registerListener(IADTObjectListener listener)
+  {
+    // TODO Auto-generated method stub
+    
+  }
+
+  public void unregisterListener(IADTObjectListener listener)
+  {
+    // TODO Auto-generated method stub
+    
+  }
+  
+  public boolean isReadOnly()
+  {
+    return true;
+  }
+
+  public IModel getModel()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+}
+
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/TargetConnectionSpaceFiller.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/TargetConnectionSpaceFiller.java
new file mode 100644
index 0000000..ff59262
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/editparts/model/TargetConnectionSpaceFiller.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.editparts.model;
+
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+
+public class TargetConnectionSpaceFiller implements IADTObject
+{
+  private XSDBaseAdapter adapter;
+  
+  public TargetConnectionSpaceFiller(XSDBaseAdapter adapter)
+  {
+    this.adapter = adapter;
+  }
+
+  /**
+   * @deprecated remove this
+   * @return
+   */
+  public XSDBaseAdapter getAdapter()
+  {
+    return adapter;
+  }
+
+  public void registerListener(IADTObjectListener listener)
+  {
+    
+  }
+
+  public void unregisterListener(IADTObjectListener listener)
+  {
+   
+  }
+  
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/CenteredIconFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/CenteredIconFigure.java
new file mode 100644
index 0000000..2f62395
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/CenteredIconFigure.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.figures;
+            
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.RectangleFigure;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.swt.graphics.Image;
+
+public class CenteredIconFigure extends RectangleFigure
+{                                                
+  public Image image;
+  protected Label toolTipLabel;
+                               
+  public CenteredIconFigure()
+  {
+    super();
+    setFill(true);   
+    toolTipLabel = new Label();
+  }
+  
+  
+  protected void outlineShape(Graphics graphics)
+  {
+  }
+
+  protected void fillShape(Graphics g)
+  {    
+    super.fillShape(g);    
+    if (image != null)
+    {                         
+      Rectangle r = getBounds();
+      Dimension imageSize = new Dimension(15, 15);
+      g.drawImage(image, r.x + (r.width - imageSize.width)/2, r.y + (r.height - imageSize.height)/2);
+    }
+  }
+  
+  public Label getToolTipLabel()
+  {
+    return toolTipLabel;
+  }
+  
+  public void setToolTipText(String text)
+  {
+    if (text.length() > 0)
+    {
+      setToolTip(toolTipLabel);
+      toolTipLabel.setText(text);
+    }
+    else
+    {
+      setToolTip(null);
+    }
+  }  
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/GenericGroupFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/GenericGroupFigure.java
new file mode 100644
index 0000000..a80b113
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/GenericGroupFigure.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.figures;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.editor.internal.design.layouts.ModelGroupLayout;
+
+public class GenericGroupFigure extends Figure
+{
+  protected CenteredIconFigure centeredIconFigure;
+  protected Figure contentFigure;
+  
+  public GenericGroupFigure()
+  {
+    super();
+    setLayoutManager(new ModelGroupLayout(true));
+   
+    centeredIconFigure = new CenteredIconFigure();
+    centeredIconFigure.setPreferredSize(new Dimension(15, 15));
+
+    add(centeredIconFigure);
+    contentFigure = new Figure();
+    contentFigure.setLayoutManager(new ModelGroupLayout(false, 0));
+    add(contentFigure);
+  }
+  
+  public void setIconFigure(Image image)
+  {
+    centeredIconFigure.image = image;
+  }
+
+  public CenteredIconFigure getTargetFigure()
+  {
+    return centeredIconFigure;
+  }
+  
+  public CenteredIconFigure getIconFigure()
+  {
+    return centeredIconFigure;
+  }
+  
+  public Figure getContentFigure()
+  {
+    return contentFigure;
+  }
+  
+  public void setToolTipText(String text)
+  {
+    centeredIconFigure.setToolTipText(text);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IExtendedFigureFactory.java
similarity index 61%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IExtendedFigureFactory.java
index ff6e4db..6dbcacb 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IExtendedFigureFactory.java
@@ -1,18 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.model;
+package org.eclipse.wst.xsd.editor.internal.design.figures;
 
+import org.eclipse.wst.xsd.adt.design.figures.IFigureFactory;
 
-
-public interface ModelAdapterListener
-{                             
-  public void propertyChanged(Object object, String property);
+public interface IExtendedFigureFactory extends IFigureFactory
+{
+  IModelGroupFigure createModelGroupFigure(Object model);
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectionRenderingViewer.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IModelGroupFigure.java
similarity index 66%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectionRenderingViewer.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IModelGroupFigure.java
index 6ed611d..8465ae2 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectionRenderingViewer.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/IModelGroupFigure.java
@@ -1,16 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.gef.util.figures;
+package org.eclipse.wst.xsd.editor.internal.design.figures;
 
-public interface IConnectionRenderingViewer
-{        
-  public ConnectionRenderingFigure getConnectionRenderingFigure();
-}
\ No newline at end of file
+import org.eclipse.wst.xsd.adt.design.figures.IADTFigure;
+
+public interface IModelGroupFigure extends IADTFigure
+{
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/ModelGroupFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/ModelGroupFigure.java
new file mode 100644
index 0000000..83a3c63
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/ModelGroupFigure.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.figures;
+
+import org.eclipse.gef.EditPart;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+public class ModelGroupFigure extends GenericGroupFigure implements IModelGroupFigure
+{
+  public static final Image SEQUENCE_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("newSequence2.gif", true).createImage();
+  public static final Image CHOICE_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("newChoice.gif", true).createImage();
+  public static final Image ALL_ICON_IMAGE = XSDEditorPlugin.getImageDescriptor("obj16/all.gif", true).createImage();
+  
+  public ModelGroupFigure()
+  {
+    super();
+  }
+
+  public void setIconFigure(Image image)
+  {
+    centeredIconFigure.image = image;
+  }
+
+  public void addSelectionFeedback()
+  {
+    // TODO Auto-generated method stub
+    
+  }
+
+  public void editPartAttached(EditPart owner)
+  {
+    // TODO Auto-generated method stub
+    
+  }
+
+  public void refreshVisuals(Object model)
+  {
+    // TODO Auto-generated method stub
+    
+  }
+
+  public void removeSelectionFeedback()
+  {
+    // TODO Auto-generated method stub   
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/SpacingFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/SpacingFigure.java
new file mode 100644
index 0000000..5c1f657
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/figures/SpacingFigure.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.figures;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+public class SpacingFigure extends Label
+{
+  public SpacingFigure()
+  {
+    super("");
+    setIcon(XSDEditorPlugin.getXSDImage("icons/Dot.gif"));
+    setBorder(new MarginBorder(3, 0, 3, 0));
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerLayout.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ContainerLayout.java
similarity index 92%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerLayout.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ContainerLayout.java
index 78480f9..1cfdd71 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerLayout.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ContainerLayout.java
@@ -1,14 +1,14 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.gef.util.figures;
+package org.eclipse.wst.xsd.editor.internal.design.layouts;
                    
 import java.util.List;
 
@@ -16,6 +16,7 @@
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.geometry.Dimension;
 import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.wst.xsd.editor.internal.design.figures.SpacingFigure;
               
 
 public class ContainerLayout extends AbstractLayout
@@ -61,6 +62,7 @@
    * 
    * @param figure  Figure whose preferred size is required.
    * @return  The preferred size of the passed Figure.
+   * @since 2.0
    */
   protected Dimension calculatePreferredSizeHelper(IFigure parent)
   { 
@@ -112,14 +114,14 @@
                                   
     // Here we ensure that an unexpanded container is given a size of (0,0)
     //
-    if (parent instanceof IExpandable)
-    {
-      IExpandable expandableFigure = (IExpandable)parent;
-      if (!expandableFigure.isExpanded())
-      {
-        preferred = new Dimension(); 
-      }
-    }   
+//    if (parent instanceof IExpandable)
+//    {
+//      IExpandable expandableFigure = (IExpandable)parent;
+//      if (!expandableFigure.isExpanded())
+//      {
+//        preferred = new Dimension(); 
+//      }
+//    }   
     
     if (preferred == null)
     {
@@ -214,4 +216,4 @@
       }
 	  }	      
   }                                      
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ModelGroupLayout.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ModelGroupLayout.java
new file mode 100644
index 0000000..94eecb0
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/design/layouts/ModelGroupLayout.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.design.layouts;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.AbstractLayout;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.wst.xsd.editor.internal.design.figures.SpacingFigure;
+import org.eclipse.wst.xsd.editor.internal.design.figures.ModelGroupFigure;
+
+public class ModelGroupLayout extends AbstractLayout
+{
+  protected boolean isHorizontal;
+  protected int spacing = 7;
+  protected int border = 0;
+
+  public ModelGroupLayout()
+  {
+    this(0);
+  }
+
+  public ModelGroupLayout(boolean isHorizontal)
+  {
+    this.isHorizontal = isHorizontal;
+  }
+
+  public ModelGroupLayout(boolean isHorizontal, int spacing)
+  {
+    this.isHorizontal = isHorizontal;
+    this.spacing = spacing;
+  }
+
+  public ModelGroupLayout(int spacing)
+  {
+    super();
+    this.spacing = spacing;
+  }
+
+  protected Dimension calculatePreferredSize(IFigure container, int wHint, int hHint)
+  {
+    Dimension preferred = new Dimension();
+    List children = container.getChildren();
+
+    for (int i = 0; i < children.size(); i++)
+    {
+      IFigure child = (IFigure) children.get(i);
+
+      Dimension childSize = child.getPreferredSize();
+
+      if (isHorizontal)
+      {
+        preferred.width += childSize.width;
+        preferred.height = Math.max(preferred.height, childSize.height);
+      }
+      else
+      {
+        preferred.height += childSize.height;
+        preferred.width = Math.max(preferred.width, childSize.width);
+      }
+    }
+
+    int childrenSize = children.size();
+    if (childrenSize > 1)
+    {
+      if (isHorizontal)
+      {
+        preferred.width += spacing * (childrenSize - 1);
+      }
+      else
+      {
+        preferred.height += spacing * (childrenSize - 1);
+      }
+    }
+
+    preferred.width += border * 2;
+    preferred.height += border * 2;
+    preferred.width += container.getInsets().getWidth();
+    preferred.height += container.getInsets().getHeight();
+
+    return preferred;
+  }
+
+  public void layout(IFigure container)
+  {
+    List children = container.getChildren();
+
+    int rx = 0;
+    Dimension dimension = new Dimension();
+
+    for (int i = 0; i < children.size(); i++)
+    {
+      IFigure child = (IFigure) children.get(i);
+      Dimension childSize = child.getPreferredSize();
+      if (isHorizontal)
+      {
+        dimension.height = Math.max(dimension.height, childSize.height);
+        rx += childSize.width;
+      }
+      else
+      {
+        dimension.width = Math.max(dimension.width, childSize.width);
+      }
+    }
+
+    if (isHorizontal)
+    {
+      dimension.height += border * 2;
+      dimension.width += border;
+    }
+    else
+    {
+      dimension.width += border * 2;
+      dimension.height += border;
+    }
+
+    Rectangle r = container.getClientArea();
+    dimension = new Dimension(r.width, r.height);
+    Point p = new Point(0, 0);
+
+    for (Iterator i = children.iterator(); i.hasNext();)
+    {
+      IFigure child = (IFigure) i.next();
+      Dimension childSize = child.getPreferredSize();
+
+      if (isHorizontal)
+      {
+        Rectangle rectangle = new Rectangle(p.x, 0, childSize.width, childSize.height);
+
+        // last child
+        if (!i.hasNext())
+        {
+          rectangle.width = dimension.width - rectangle.x;
+        }
+
+        if (p.x == 0)
+        {
+          rectangle.y = r.height / 2 - childSize.height / 2;
+        }
+        else
+        {
+          rectangle.y = r.height / 2 - childSize.height / 2;
+        }
+
+        rectangle.translate(container.getClientArea().getLocation());
+        child.setBounds(rectangle);
+        p.x += childSize.width;
+        p.x += spacing;
+
+      }
+      else
+      {
+        Rectangle rectangle = new Rectangle(0, p.y, childSize.width, childSize.height);
+
+        if (child instanceof SpacingFigure)
+        {
+          rectangle.x = dimension.width + 6;
+        }
+        else if (child instanceof ModelGroupFigure)
+        {
+          rectangle.width = dimension.width - rectangle.x;
+        }
+        else
+        {
+          rectangle.width = dimension.width - rectangle.x;
+        }
+
+        rectangle.translate(container.getClientArea().getLocation());
+        child.setBounds(rectangle);
+        p.y += childSize.height;
+        p.y += spacing;
+      }
+    }
+  }
+
+  public void setSpacing(int spacing)
+  {
+    this.spacing = spacing;
+  }
+
+  protected int alignFigure(IFigure parent, IFigure child)
+  {
+    return -1;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/BuiltInTypesTreeViewerProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/BuiltInTypesTreeViewerProvider.java
new file mode 100644
index 0000000..f140c21
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/BuiltInTypesTreeViewerProvider.java
@@ -0,0 +1,221 @@
+/*******************************************************************************
+ * 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 
+ *     Trung de Irene <trungha@ca.ibm.com>
+ *******************************************************************************/
+package org.eclipse.wst.xsd.editor.internal.dialogs;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.util.XSDConstants;
+
+
+/**
+ * This class provides the content for SelectBuiltInTypesForFilterDialog
+ * readability Warning: Some simple tricks to tweak efficiency are used
+ */
+public class BuiltInTypesTreeViewerProvider {
+	
+	ILabelProvider labelProvider;
+	
+	ITreeContentProvider contentProvider;
+	
+	private static final String CONST_PARENT = "parent";
+	
+	/**
+	 * Currently there are 3 subgroups: Numbers, Data and Time, Other
+	 * Folks can choose to expand to more subgroups
+	 */
+	private static int BUILT_IN_TYPES_SUB_GROUP = 3;
+	
+    static String[] numberTypes = 
+    	{ "base64Binary", "byte", "decimal", "double", "float", "hexBinary",
+    	  "int", "integer", "long", "negativeInteger", "nonNegativeInteger",
+    	  "nonPositiveInteger", "positiveInteger", "short", "unsignedByte",
+    	  "unsignedInt", "unsignedLong", "unsignedShort"};
+    
+    static String[] dateAndTimeTypes =
+    	{ "date", "dateTime", "duration", "gDay",
+    	  "gMonth", "gMonthDay", "gYear", "gYearMonth", "time"};
+	
+	
+    public static List getAllBuiltInTypes() {
+        List items = new ArrayList();
+        //for (int i = 0; i < XSDDOMHelper.dataType.length; i++) {
+        //  items.add(XSDDOMHelper.dataType[i][0]);
+        //}
+        Iterator it = items.iterator();
+        
+        List mainContainer = new ArrayList(BUILT_IN_TYPES_SUB_GROUP);
+        ComponentSpecification header = new ComponentSpecification("", "Root", null);
+        mainContainer.add(header);
+        
+        List numbersGroup = new ArrayList();
+        header = new ComponentSpecification("", "Numbers", null);
+        numbersGroup.add(header);
+        mainContainer.add(numbersGroup);
+        
+        List dateAndTimeGroup = new ArrayList();
+        header = new ComponentSpecification("", "Date and Time", null);
+        dateAndTimeGroup.add(header);
+        mainContainer.add(dateAndTimeGroup);
+        
+        List otherGroup = new ArrayList();
+        header = new ComponentSpecification("", "Other", null);
+        otherGroup.add(header);
+        mainContainer.add(otherGroup);
+
+        while (it.hasNext()) {
+        	Object item = it.next();
+            String name = item.toString();
+
+            ComponentSpecification builtInTypeItem = new ComponentSpecification(name, XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, null);
+          
+            // if this built-In Type is in Number group 
+            if ( partOf(name, numberTypes) ){
+            	// Set parent
+            	//builtInTypeItem.addAttributeInfo(CONST_PARENT, numbersGroup);
+            	
+            	numbersGroup.add(builtInTypeItem);
+            }
+            // if this built-In Type is in Date-and-Time group 
+            else if ( partOf(name, dateAndTimeTypes)){
+            	//builtInTypeItem.addAttributeInfo(CONST_PARENT, dateAndTimeGroup);
+            	dateAndTimeGroup.add(builtInTypeItem);
+            }
+            // otherwise, put in Other group
+            else {
+            	//builtInTypeItem.addAttributeInfo(CONST_PARENT, otherGroup);
+            	otherGroup.add(builtInTypeItem);
+            }
+        }
+
+        return mainContainer;
+    }
+    
+    public ILabelProvider getLabelProvider(){
+		if (labelProvider != null)
+			return labelProvider;
+		
+		labelProvider = new BuiltInTypeLabelProvider();
+		return labelProvider;
+	}
+	
+	public ITreeContentProvider getContentProvider() {
+		if (contentProvider != null)
+			return contentProvider;
+		
+		contentProvider = new BuiltInTypesTreeContentProvider();
+		return contentProvider;
+	}
+	
+	/**
+	 * Determines whether an equivalent of 'item' appears in 'array'
+	 * @param item
+	 * @param array
+	 * @return
+	 */
+	private static boolean partOf(String item, String[] array){
+	    for(int i = 0; i < array.length; i++ ){
+	    	if ( item.equals(array[i]) ){
+	    		return true;
+	    	}            		
+	    }
+	    return false;
+	}
+	
+	class BuiltInTypeLabelProvider implements ILabelProvider{
+		public Image getImage(Object element) {			
+			if ( getText(element).equals("Numbers") )
+				return XSDEditorPlugin.getXSDImage("icons/XSDNumberTypes.gif");
+			if ( getText(element).equals("Date and Time") )
+				return XSDEditorPlugin.getXSDImage("icons/XSDDateAndTimeTypes.gif");
+			if ( getText(element).equals("Other") )
+				return XSDEditorPlugin.getXSDImage("icons/browsebutton.gif");
+			if ( element instanceof ComponentSpecification ){
+				return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+			}
+			return null;
+		}
+
+		public String getText(Object element) {
+			ComponentSpecification spec = null;
+			
+			/* if not non-leaf node, the first element has the name for 
+			 * the whole list */
+			if (element instanceof List){
+				spec = (ComponentSpecification) ((List) element).get(0);
+			}
+			else if (element instanceof ComponentSpecification ){
+				spec = (ComponentSpecification) element;
+			}
+			return (String) spec.getName();
+		}
+
+		public void addListener(ILabelProviderListener listener) {
+			
+		}
+
+		public void dispose() {
+		}
+
+		public boolean isLabelProperty(Object element, String property) {
+			return false;
+		}
+
+		public void removeListener(ILabelProviderListener listener) {
+			
+		}  
+		
+	}
+
+
+	class BuiltInTypesTreeContentProvider implements ITreeContentProvider {
+
+		public Object[] getChildren(Object parentElement) {
+			if (parentElement instanceof List) {
+				List parentContent = (List) parentElement;
+				
+				/** Ignore the first element (which contains the name of this list
+				 * ie. 'Numbers', 'Date and time', 'Other') */
+				return parentContent.subList(1, parentContent.size()).toArray();
+			}
+			return new Object[0];
+		}
+
+		public Object[] getElements(Object inputElement) {
+			return getChildren(inputElement);
+		}
+
+		public Object getParent(Object element) {
+		    return null;
+		}
+
+		public boolean hasChildren(Object element) {
+			if (getChildren(element).length > 1) {
+				return true;
+			}
+			return false;
+		}
+
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+		}
+
+		public void dispose() {
+		}
+	}
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewComponentDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewComponentDialog.java
new file mode 100644
index 0000000..d148a72
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewComponentDialog.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.dialogs;
+
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+public class NewComponentDialog extends Dialog implements ModifyListener
+{
+  protected Text nameField; 
+  protected Button okButton;
+  protected String name;                             
+  protected String title;
+  protected Label errorMessageLabel;
+  protected List usedNames;
+
+  public NewComponentDialog(Shell parentShell, String title, String defaultName) 
+  {
+    super(parentShell);
+    setShellStyle(getShellStyle() | SWT.RESIZE);
+    name = defaultName;      
+    this.title = title;
+  }
+  
+  public NewComponentDialog(Shell parentShell, String title, String defaultName, List usedNames) 
+  {
+    super(parentShell);
+    setShellStyle(getShellStyle() | SWT.RESIZE);
+    name = defaultName;      
+    this.title = title;
+    this.usedNames = usedNames;
+  }
+
+  public int createAndOpen()
+  {
+    create();
+    getShell().setText(title);
+    setBlockOnOpen(true);
+    return open();
+  }
+
+  protected Control createContents(Composite parent)  
+  {
+    Control control = super.createContents(parent);
+    nameField.forceFocus();
+    nameField.selectAll();  
+    updateErrorMessage();
+    return control;
+  }
+
+
+  protected void createButtonsForButtonBar(Composite parent) 
+  {
+    okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
+    createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
+  }
+
+  protected void createHeaderContent(Composite parent)
+  {
+  }
+  
+  protected void createExtendedContent(Composite parent)
+  {
+  }
+
+  protected Control createDialogArea(Composite parent) 
+  {
+    Composite dialogArea = (Composite)super.createDialogArea(parent);
+    
+    createHeaderContent(dialogArea);
+
+    Composite composite = new Composite(dialogArea, SWT.NONE);
+    GridLayout layout = new GridLayout();
+    layout.numColumns = 2;
+    layout.marginWidth = 0;
+    composite.setLayout(layout);
+
+    GridData gdFill= new GridData();
+    gdFill.horizontalAlignment= GridData.FILL;
+    gdFill.grabExcessHorizontalSpace= true;
+    gdFill.verticalAlignment= GridData.FILL;
+    gdFill.grabExcessVerticalSpace= true;
+    composite.setLayoutData(gdFill);
+
+    Label nameLabel = new Label(composite, SWT.NONE);
+    nameLabel.setText("name");//XSDEditorPlugin.getXSDString("_UI_LABEL_NAME")); //$NON-NLS-1$
+
+    nameField = new Text(composite, SWT.SINGLE | SWT.BORDER);
+    GridData gd= new GridData();
+    gd.horizontalAlignment= GridData.FILL;
+    gd.grabExcessHorizontalSpace= true;
+    gd.widthHint = 200;
+    nameField.setLayoutData(gd);
+    nameField.setText(name);
+    nameField.addModifyListener(this);
+
+    createExtendedContent(dialogArea);
+
+    // error message
+    errorMessageLabel = new Label(dialogArea, SWT.NONE);
+    errorMessageLabel.setText("error message goes here");         
+    GridData gd2 = new GridData();
+    gd2.horizontalAlignment= GridData.FILL;
+    gd2.grabExcessHorizontalSpace= true;
+    gd2.widthHint = 200;
+    errorMessageLabel.setLayoutData(gd2);          
+//    Color color = new Color(errorMessageLabel.getDisplay(), 200, 0, 0);
+//    errorMessageLabel.setForeground(color);
+
+    return dialogArea;
+  }
+  
+  public void modifyText(ModifyEvent e) 
+  {                        
+    updateErrorMessage();
+  }        
+
+  protected String computeErrorMessage(String name)
+  {
+  	if (usedNames == null)
+  		return null;
+  	
+  	Iterator iterator = usedNames.iterator();
+  	while (iterator.hasNext()) {
+  		if (name.equalsIgnoreCase((String) iterator.next())) {
+  			return "_UI_LABEL_WARNING_DUPLICATE_NAME_EXISTS";
+  		}
+  	}
+  	
+  	return null;
+  }
+
+  protected void updateErrorMessage()
+  {                 
+    String errorMessage = null;
+    String name = nameField.getText().trim();
+    if (name.length() > 0)
+    {                                
+      errorMessage = computeErrorMessage(name);
+    }   
+    else
+    {
+      errorMessage = "";
+    }  
+    errorMessageLabel.setText(errorMessage != null ? errorMessage : "");
+//    okButton.setEnabled(errorMessage == null);
+  }
+ 
+  protected void buttonPressed(int buttonId) 
+  {
+    if (buttonId == IDialogConstants.OK_ID)
+    {
+      name = nameField.getText();
+    }
+    super.buttonPressed(buttonId);
+  }
+
+  public String getName()
+  {
+    return name;
+  }
+}
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeButtonHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeButtonHandler.java
new file mode 100644
index 0000000..14ae1d7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeButtonHandler.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.dialogs;
+
+import org.eclipse.wst.common.ui.internal.search.dialogs.INewComponentHandler;
+
+public class NewTypeButtonHandler implements INewComponentHandler
+{
+  public NewTypeButtonHandler()
+  {
+  }
+
+  public void openNewComponentDialog()
+  {
+    NewTypeDialog newTypeDialog = new NewTypeDialog();
+    newTypeDialog.open();
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeDialog.java
new file mode 100644
index 0000000..cf15bfb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/NewTypeDialog.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.dialogs;
+
+import java.net.URL;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+
+public class NewTypeDialog extends NewComponentDialog implements IComponentDialog
+{
+  protected static int SIMPLE_TYPE = 0;
+  protected static int COMPLEX_TYPE = 1;
+  protected Object setObject;
+  protected int typeKind;
+  protected Object selection;
+
+  public NewTypeDialog()
+  {
+    super(Display.getCurrent().getActiveShell(), "New Type", "NewType");    
+  }
+  
+  public int createAndOpen()
+  {
+    int returnCode = super.createAndOpen();
+    if (returnCode == 0)
+    {
+      if (setObject instanceof Adapter)
+      {  
+        //Command command = new AddComplexTypeDefinitionCommand(getName(), schema);
+      }        
+    }  
+    return returnCode;
+  }
+
+  public ComponentSpecification getSelectedComponent()
+  {
+    ComponentSpecification componentSpecification =  new ComponentSpecification(null, getName(), null);    
+    componentSpecification.setMetaName(typeKind == COMPLEX_TYPE ? IXSDSearchConstants.COMPLEX_TYPE_META_NAME : IXSDSearchConstants.SIMPLE_TYPE_META_NAME);
+    componentSpecification.setNew(true);
+    return componentSpecification;
+  }
+
+  public void setInitialSelection(ComponentSpecification componentSpecification)
+  {
+    // TODO Auto-generated method stub
+  }
+
+  protected void createHeaderContent(Composite parent)
+  {
+    final Button complexTypeButton = new Button(parent, SWT.RADIO);
+    complexTypeButton.setText("Complex Type");
+    
+    final Button simpleTypeButton = new Button(parent, SWT.RADIO);
+    simpleTypeButton.setText("Simple Type");
+
+    SelectionAdapter listener = new SelectionAdapter()
+    {
+      public void widgetSelected(SelectionEvent e)
+      {
+        if (e.widget == simpleTypeButton)
+        {
+          typeKind = SIMPLE_TYPE;
+        }
+        else if (e.widget == complexTypeButton)
+        {
+          typeKind = COMPLEX_TYPE;
+        }
+      }
+    };
+    complexTypeButton.setSelection(true);
+    typeKind = COMPLEX_TYPE;
+    simpleTypeButton.addSelectionListener(listener);
+    complexTypeButton.addSelectionListener(listener);
+    Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
+    GridData gd = new GridData(GridData.FILL_BOTH);
+    separator.setLayoutData(gd);
+  }
+
+  protected String getNormalizedLocation(String location)
+  {
+    try
+    {
+      URL url = new URL(location);
+      URL resolvedURL = Platform.resolve(url);
+      location = resolvedURL.getPath();
+    }
+    catch (Exception e)
+    {
+      e.printStackTrace();
+    }
+    return location;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/SelectBuiltInTypesForFilteringDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/SelectBuiltInTypesForFilteringDialog.java
new file mode 100644
index 0000000..9b3d58f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/dialogs/SelectBuiltInTypesForFilteringDialog.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * 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 
+ *     Trung de Irene <trungha@ca.ibm.com>
+ *******************************************************************************/
+package org.eclipse.wst.xsd.editor.internal.dialogs;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.CheckedTreeSelectionDialog;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+/**
+ * The BuiltInTypesFilteringDialog is a SelectionDialog that allows the user to
+ *  select a ...
+ */
+public class SelectBuiltInTypesForFilteringDialog extends CheckedTreeSelectionDialog {
+
+	public final static String CUSTOM_LIST_SEPARATOR = XSDEditorPlugin.CUSTOM_LIST_SEPARATOR;
+
+	public SelectBuiltInTypesForFilteringDialog(Shell parent, 
+			ILabelProvider labelProvider, ITreeContentProvider contentProvider) {
+		super(parent, labelProvider, contentProvider);
+
+		init();
+	}
+	
+	public CheckboxTreeViewer getTreeViewer(){
+		return super.getTreeViewer();
+	}
+	
+	private void init(){
+		// grey state enable
+		setContainerMode(true);
+		
+		// TODO externalize String
+		setTitle("Set common Built-In types");
+		setMessage("Select the types that you do not want to filter out: ");
+		
+		//super.create();
+		//super.getTreeViewer().setSorter(new ViewerSorter());
+		
+	}
+	
+	/**
+	 *   Returns a String acting as list of built-in types selected by the user
+	 * in the filter dialog (white space acts as the item separator).
+	 *   Suggest using getSelectedBuiltInTypesFromString
+	 * to get a concrete array of selected types.
+	 *   We can only store String in the plugin preference's storage so we have 
+	 * use this method for conversion
+	 */
+	public static String getTypesListInString(Object[] chosenTypes) {
+		String returningList = "";
+		for (int i = 0; i < chosenTypes.length; i++){
+			if ( chosenTypes[i] instanceof ComponentSpecification){
+				ComponentSpecification aType = 
+					(ComponentSpecification) chosenTypes[i];
+
+				returningList += aType.getName() + CUSTOM_LIST_SEPARATOR;
+			}
+			/* else selectedBuiltInTypes[i] instanceof List, ie. a parentNode
+			 * we ignore it. */
+		}
+		return returningList;
+	}
+	
+	/**
+	 * Filters out all built-In type not recorded in the 'listString' and 
+	 * returns the result in a List
+	 * Warning: recursive method
+	 * @param listString 
+	 * @param aContainer 
+	 * 			Containing all types
+	 * @return a subset of what 'aContainer' has as specified by 'listString'
+	 */
+	public static List getSelectedBuiltInTypesFromString(String listString, 
+			List aContainer) {
+		List selectedTypes = new ArrayList();
+
+		// ignore the 'header' item in the container, starting from i = 1
+		for (int i = 1; i < aContainer.size(); i++){
+			Object o = aContainer.get(i);
+			if ( o instanceof ComponentSpecification){
+				ComponentSpecification aType = (ComponentSpecification) o;
+				String typeName = (String) aType.getName();
+				// if typeName's name appears in 'listString'
+				if ( listString.indexOf(typeName + CUSTOM_LIST_SEPARATOR) != -1)
+					selectedTypes.add(o);
+			}
+			else if ( o instanceof List){
+				selectedTypes.addAll( getSelectedBuiltInTypesFromString(listString, (List) o) ); 
+			}
+		}
+		return selectedTypes;
+	}
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/Dot.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/Dot.gif
new file mode 100644
index 0000000..210bb24
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/Dot.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GenerateDtd.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GenerateDtd.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GenerateDtd.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GenerateDtd.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GenerateJava.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GenerateJava.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GenerateJava.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GenerateJava.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GraphViewElementRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GraphViewElementRef.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/GraphViewElementRef.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/GraphViewElementRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/NewXSD.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/NewXSD.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/NewXSD.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/NewXSD.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/RegexWizardArrow.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/RegexWizardArrow.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/RegexWizardArrow.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/RegexWizardArrow.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/TriangleToolBar.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/TriangleToolBar.gif
new file mode 100644
index 0000000..bd37eb5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/TriangleToolBar.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/ValidateXSD.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/ValidateXSD.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/ValidateXSD.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/ValidateXSD.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAll.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAll.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAll.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAll.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAnnotate.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAnnotate.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAnnotate.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAnnotate.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAny.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAny.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAny.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAny.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAnyAttribute.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAnyAttribute.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAnyAttribute.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAnyAttribute.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAppInfo.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAppInfo.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAppInfo.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAppInfo.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttribute.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttribute.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttribute.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttribute.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroup.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeGroup.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroup.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeGroup.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeGroupRef.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeGroupRef.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeGroupRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeRef.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDAttributeRef.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDAttributeRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDChoice.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDChoice.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDChoice.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDChoice.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDComplexContent.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDComplexContent.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDComplexContent.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDComplexContent.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDComplexType.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDComplexType.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDComplexType.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDComplexType.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDDateAndTimeTypes.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDDateAndTimeTypes.gif
new file mode 100644
index 0000000..4fc84e4
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDDateAndTimeTypes.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDDoc.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDDoc.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDDoc.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDDoc.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDElement.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDElement.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDElement.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDElement.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDElementRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDElementRef.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDElementRef.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDElementRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDExtension.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDExtension.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDExtension.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDExtension.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDField.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDField.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDField.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDField.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDFile.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDFile.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDFile.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDFile.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGlobalAttribute.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGlobalAttribute.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGlobalAttribute.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGlobalAttribute.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGlobalElement.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGlobalElement.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGlobalElement.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGlobalElement.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGroup.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGroup.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGroup.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGroup.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGroupRef.gif
new file mode 100644
index 0000000..34a7fb3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDGroupRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDImport.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDImport.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDImport.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDImport.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDInclude.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDInclude.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDInclude.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDInclude.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDKey.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDKey.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDKey.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDKey.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDKeyRef.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDKeyRef.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDKeyRef.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDKeyRef.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDNotation.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDNotation.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDNotation.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDNotation.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDNumberTypes.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDNumberTypes.gif
new file mode 100644
index 0000000..7134210
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDNumberTypes.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDRedefine.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDRedefine.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDRedefine.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDRedefine.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSelector.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSelector.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSelector.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSelector.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSequence.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSequence.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSequence.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSequence.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleContent.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleContent.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleContent.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleContent.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleEnum.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleEnum.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleEnum.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleEnum.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleList.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleList.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleList.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleList.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimplePattern.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimplePattern.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimplePattern.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimplePattern.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleRestrict.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleRestrict.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleRestrict.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleRestrict.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleType.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleType.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleType.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleType.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleTypeForEditPart.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleTypeForEditPart.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleTypeForEditPart.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleTypeForEditPart.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleUnion.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleUnion.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDSimpleUnion.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDSimpleUnion.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDUnique.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDUnique.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDUnique.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/XSDUnique.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_browse.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_browse.gif
new file mode 100644
index 0000000..85f9baa
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_browse.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_category.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_category.gif
new file mode 100644
index 0000000..9e665d5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/appinfo_category.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/back.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/back.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/back.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/back.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/browsebutton.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/browsebutton.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/browsebutton.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/browsebutton.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/error_st_obj.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/error_st_obj.gif
new file mode 100644
index 0000000..0bc6068
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/error_st_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/forward.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/forward.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/forward.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/forward.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/generate_xml.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/generate_xml.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/generate_xml.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/generate_xml.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newChoice.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newChoice.gif
new file mode 100644
index 0000000..eca1446
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newChoice.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence.gif
new file mode 100644
index 0000000..a56782f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence2.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence2.gif
new file mode 100644
index 0000000..9e3968c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/newSequence2.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/regx_wiz.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/regx_wiz.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/regx_wiz.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/regx_wiz.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/reloadgrammar.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/reloadgrammar.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/reloadgrammar.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/reloadgrammar.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/sort.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/sort.gif
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/sort.gif
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/sort.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/xmlcatalog_obj.gif b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/xmlcatalog_obj.gif
new file mode 100644
index 0000000..a61441f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/icons/xmlcatalog_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/DesignViewNavigationLocation.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/DesignViewNavigationLocation.java
new file mode 100644
index 0000000..c6a773e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/DesignViewNavigationLocation.java
@@ -0,0 +1,339 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.navigation;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.RootEditPart;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.INavigationLocation;
+import org.eclipse.ui.NavigationLocation;
+import org.eclipse.wst.xsd.adt.design.DesignViewGraphicalViewer;
+import org.eclipse.wst.xsd.adt.design.editparts.RootContentEditPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDVisitor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+/**
+ * This class exists to support navigation in a context where there is no text 
+ * editor page.  In these cases we can't rely on the TextSelectionNavigationLocations
+ * so we this class which is designed to work with just the design view.
+ */
+public class DesignViewNavigationLocation extends NavigationLocation
+{
+  protected Path path;
+
+  public DesignViewNavigationLocation(IEditorPart part)
+  {
+    super(part);
+    this.path = new Path();
+  }
+  
+  public DesignViewNavigationLocation(IEditorPart part, XSDConcreteComponent component)
+  {
+    super(part);   
+    this.path = Path.computePath(component);  
+  }
+
+  public boolean mergeInto(INavigationLocation currentLocation)
+  {
+    boolean result = false;
+    if (currentLocation instanceof DesignViewNavigationLocation)
+    {
+      DesignViewNavigationLocation loc = (DesignViewNavigationLocation) currentLocation;
+      result = loc.path.toString().equals(path.toString());
+      //System.out.println("path1=" + loc.path.toString());
+      //System.out.println("path2=" + path.toString());
+    }
+    else
+    {
+//      System.out.println("this.editorPart = " + getEditorPart());
+//      System.out.println("that.editorPart = " + currentLocation.getInput());
+//      System.out.println(currentLocation.getClass().getName());
+    }
+    return result;
+  }
+
+  public void restoreLocation()
+  {
+    //System.out.println("resourceLocation " + path.toString());
+    XSDSchema schema = (XSDSchema) getEditorPart().getAdapter(XSDSchema.class);
+    Object viewer = getEditorPart().getAdapter(GraphicalViewer.class);
+    if (viewer instanceof DesignViewGraphicalViewer)
+    {
+      DesignViewGraphicalViewer graphicalViewer = (DesignViewGraphicalViewer) viewer;
+      RootEditPart rootEditPart = graphicalViewer.getRootEditPart();
+      EditPart editPart = rootEditPart.getContents();
+      if (editPart instanceof RootContentEditPart)
+      {
+        XSDConcreteComponent component = Path.computeComponent(schema, path);
+        if (component != null)
+        {
+          Adapter adapter = XSDAdapterFactory.getInstance().adapt(component);
+          if (adapter != null)
+          {
+            ((RootContentEditPart) editPart).setInput(adapter);
+          }
+        }
+      }
+    }
+  }
+
+  public void restoreState(IMemento memento)
+  {
+    String string = memento.getString("path");
+    path = Path.createPath(string);
+  }
+
+  public void saveState(IMemento memento)
+  {
+    memento.putString("path", path.toString());
+  }
+
+  public void update()
+  {
+    // TODO (cs) not sure what needs to be done here
+  }
+  static class PathSegment
+  {
+    final static int ELEMENT = 1;
+    final static int TYPE = 2;
+    int kind;
+    String name;
+
+    PathSegment()
+    {
+    }
+
+    PathSegment(int kind, String name)
+    {
+      this.kind = kind;
+      this.name = name;
+    }
+  }
+  static class Path
+  {
+    List segments = new ArrayList();
+
+    static XSDConcreteComponent computeComponent(XSDSchema schema, Path path)
+    {
+      PathResolvingXSDVisitor visitor = new PathResolvingXSDVisitor(path);
+      visitor.visitSchema(schema);
+      if (visitor.isDone())
+      {
+        return visitor.result;
+      }
+      return null;
+    }
+
+    static Path createPath(String string)
+    {
+      Path path = new Path();
+      PathSegment segment = null;
+      for (StringTokenizer st = new StringTokenizer(string, "/"); st.hasMoreTokens();)
+      {
+        String token = st.nextToken();
+        int kind = -1;
+        if (token.equals("element"))
+        {
+          kind = PathSegment.ELEMENT;
+        }
+        else if (token.equals("type"))
+        {
+          kind = PathSegment.TYPE;
+        }
+        if (kind != -1)
+        {
+          segment = new PathSegment();
+          segment.kind = kind;
+          path.segments.add(segment);
+          String namePattern = "[@name='";
+          int startIndex = token.indexOf(namePattern);
+          if (startIndex != -1)
+          {
+            startIndex += namePattern.length();
+            int endIndex = token.indexOf("']");
+            if (endIndex != -1)
+            {
+              segment.name = token.substring(startIndex, endIndex);
+            }
+          }
+        }
+      }
+      return path;
+    }
+
+    static Path computePath(XSDConcreteComponent component)
+    {
+      Path path = new Path();
+      for (EObject c = component; c != null; c = c.eContainer())
+      {
+        if (c instanceof XSDConcreteComponent)
+        {
+          PathSegment segment = computePathSegment((XSDConcreteComponent) c);
+          if (segment != null)
+          {
+            path.segments.add(0, segment);
+          }
+        }
+      }
+      return path;
+    }
+
+    static PathSegment computePathSegment(XSDConcreteComponent c)
+    {
+      if (c instanceof XSDElementDeclaration)
+      {
+        XSDElementDeclaration ed = (XSDElementDeclaration) c;
+        return new PathSegment(PathSegment.ELEMENT, ed.getResolvedElementDeclaration().getName());
+      }
+      else if (c instanceof XSDTypeDefinition)
+      {
+        XSDTypeDefinition td = (XSDTypeDefinition) c;
+        return new PathSegment(PathSegment.TYPE, td.getName());
+      }
+      return null;
+    }
+
+    public String toString()
+    {
+      StringBuffer b = new StringBuffer();
+      for (Iterator i = segments.iterator(); i.hasNext();)
+      {
+        PathSegment segment = (PathSegment) i.next();
+        String kind = "";
+        if (segment.kind == PathSegment.ELEMENT)
+        {
+          kind = "element";
+        }
+        else if (segment.kind == PathSegment.TYPE)
+        {
+          kind = "type";
+        }
+        b.append(kind);
+        if (segment.name != null)
+        {
+          b.append("[@name='" + segment.name + "']");
+        }
+        if (i.hasNext())
+        {
+          b.append("/");
+        }
+      }
+      return b.toString();
+    }
+  }
+  
+  
+  static class PathResolvingXSDVisitor extends XSDVisitor
+  {
+    Path path;
+    int index = -1;
+    PathSegment segment;
+    XSDConcreteComponent result = null;
+
+    PathResolvingXSDVisitor(Path path)
+    {
+      this.path = path;
+      incrementSegment();
+    }
+
+    boolean isDone()
+    {
+      return index >= path.segments.size();
+    }
+
+    void incrementSegment()
+    {
+      index++;
+      if (index < path.segments.size())
+      {
+        segment = (PathSegment) path.segments.get(index);
+      }
+      else
+      {
+        segment = null;
+      }
+    }
+
+    public void visitSchema(XSDSchema schema)
+    {
+      if (segment != null)
+      {
+        if (segment.kind == PathSegment.ELEMENT)
+        {
+          XSDElementDeclaration ed = schema.resolveElementDeclaration(segment.name);
+          if (ed != null)
+          {
+            visitElementDeclaration(ed);
+          }
+        }
+        else if (segment.kind == PathSegment.TYPE)
+        {
+          XSDTypeDefinition td = schema.resolveTypeDefinition(segment.name);
+          if (td != null)
+          {
+            visitTypeDefinition(td);
+          }
+        }
+      }
+    }
+
+    public void visitElementDeclaration(XSDElementDeclaration element)
+    {
+      if (segment != null)
+      {
+        String name = element.getResolvedElementDeclaration().getName();
+        if (segment.kind == PathSegment.ELEMENT && isMatch(segment.name, name))
+        {
+          result = element;
+          incrementSegment();
+          if (!isDone())
+          {
+            super.visitElementDeclaration(element);
+          }
+        }
+      }
+    }
+
+    public void visitTypeDefinition(XSDTypeDefinition type)
+    {
+      if (segment != null)
+      {
+        String name = type.getName();
+        if (segment.kind == PathSegment.TYPE && isMatch(segment.name, name))
+        {
+          result = type;
+          incrementSegment();
+          if (!isDone())
+          {
+            super.visitTypeDefinition(type);
+          }
+        }
+      }
+    }
+
+    protected boolean isMatch(String name1, String name2)
+    {
+      return name1 != null ? name1.equals(name2) : name1 == name2;
+    }
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/MultiPageEditorTextSelectionNavigationLocation.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/MultiPageEditorTextSelectionNavigationLocation.java
new file mode 100644
index 0000000..8cb66ff
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/navigation/MultiPageEditorTextSelectionNavigationLocation.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.navigation;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.texteditor.TextSelectionNavigationLocation;
+
+/**
+ * The platform's navigation history plumbing doesn't like multipage text
+ * editors very much and tends to ignore text locations.  To fix this
+ * problem we need to override the getEditPart() method of the super class
+ * in order to return the actual TextEditor of our multi-page editor
+ */
+public class MultiPageEditorTextSelectionNavigationLocation extends TextSelectionNavigationLocation
+{
+  public MultiPageEditorTextSelectionNavigationLocation(ITextEditor part, boolean initialize)
+  {
+    super(part, initialize);
+  }
+
+  protected IEditorPart getEditorPart()
+  {
+    IEditorPart part = super.getEditorPart();
+    return (ITextEditor) part.getAdapter(ITextEditor.class);
+  }
+
+  public String getText()
+  {
+    // ISSUE: how to get title?
+    // IEditorPart part = getEditorPart();
+    // if (part instanceof WSDLTextEditor) {
+    // return ((WSDLTextEditor) part).getWSDLEditor().getTitle();
+    // }
+    // else {
+    // return super.getText();
+    // }
+    return super.getText();
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/preferences/XSDPreferencePage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/preferences/XSDPreferencePage.java
similarity index 96%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/preferences/XSDPreferencePage.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/preferences/XSDPreferencePage.java
index 5f31f56..7e4ecd2 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/preferences/XSDPreferencePage.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/preferences/XSDPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.preferences;
+package org.eclipse.wst.xsd.editor.internal.preferences;
 
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.preference.PreferencePage;
@@ -28,8 +28,8 @@
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
 import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorContextIds;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
 
 public class XSDPreferencePage extends PreferencePage implements IWorkbenchPreferencePage, Listener 
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/IXSDTypesFilter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/IXSDTypesFilter.java
new file mode 100644
index 0000000..204066c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/IXSDTypesFilter.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.search;
+
+public interface IXSDTypesFilter {	
+	/**
+	 * Give me an Object o, if I know it and it should be filtered out, I will 
+	 * return true. Otherwise I'll return false, even if I don't know the object 
+	 * @param o
+	 * @return
+	 */
+	public boolean shouldFilterOut(Object o);
+	
+	public void turnOn();
+	public void turnOff();
+	public boolean isOn();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDComponentDescriptionProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDComponentDescriptionProvider.java
new file mode 100644
index 0000000..d62bce1
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDComponentDescriptionProvider.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.search;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.common.core.search.SearchMatch;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentDescriptionProvider;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class XSDComponentDescriptionProvider extends LabelProvider implements IComponentDescriptionProvider
+{
+  public boolean isApplicable(Object component)
+  {
+    // TODO (cs) if this provider is used in a multi language context
+    // we'll need to provide some logic here
+    return true;
+  }
+
+  private static final Image SIMPLE_TYPE_IMAGE =  XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
+  private static final Image COMPLEX_TYPE_IMAGE = XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif");
+  private static final Image ELEMENT_IMAGE = XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
+  //private final static Image BUILT_IN_TYPE)IMAGE = 
+    
+  public String getQualifier(Object component)
+  {
+    String result = null;
+    if (component instanceof ComponentSpecification)
+    {
+      result = ((ComponentSpecification)component).getQualifier();
+    }  
+    else if (component instanceof XSDNamedComponent)
+    {
+      result = ((XSDNamedComponent)component).getTargetNamespace(); 
+    }  
+    else if (component instanceof SearchMatch)
+    {
+      QualifiedName qualifiedName = getQualifiedNameForSearchMatch((SearchMatch)component);
+      if (qualifiedName != null)
+      {  
+        result = qualifiedName.getNamespace();
+      }    
+    }  
+    return result;
+  }
+  
+  // TODO... this will be much easier with Hiroshi's proposed SearchMatch changes
+  //
+  private QualifiedName getQualifiedNameForSearchMatch(SearchMatch match)
+  {
+    QualifiedName qualifiedName = null;
+    Object o = match.map.get("name");
+    if (o != null && o instanceof QualifiedName)
+    {  
+      qualifiedName = (QualifiedName)o;
+    }      
+    return qualifiedName;
+  }
+
+  public String getName(Object component)
+  {
+    String result = null;
+    if (component instanceof ComponentSpecification)
+    {
+      result = ((ComponentSpecification)component).getName();
+    }  
+    else if (component instanceof XSDNamedComponent)
+    {
+      result = ((XSDNamedComponent)component).getName(); 
+    }  
+    else if (component instanceof SearchMatch)
+    {
+      QualifiedName qualifiedName = getQualifiedNameForSearchMatch((SearchMatch)component);
+      if (qualifiedName != null)
+      {  
+        result = qualifiedName.getLocalName();
+      }    
+    }      
+    return result;
+  }
+
+  public IFile getFile(Object component)
+  {
+    IFile result = null;
+    if (component instanceof ComponentSpecification)
+    {
+      result = ((ComponentSpecification)component).getFile();
+    }  
+    else if (component instanceof SearchMatch)
+    {
+      result = ((SearchMatch)component).getFile();
+    }  
+    else if (component instanceof XSDConcreteComponent)
+    {
+      XSDConcreteComponent concreteComponent = (XSDConcreteComponent)component;
+      XSDSchema schema = concreteComponent.getSchema();
+      if (schema != null)
+      {
+        // TODO (cs) revisit and test more
+        //
+        String location = schema.getSchemaLocation();
+        String platformResource = "platform:/resource";
+        if (location != null && location.startsWith(platformResource))
+        {
+          Path path = new Path(location.substring(platformResource.length()));
+          result = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+        }  
+      }  
+    }
+    return result;
+  }
+
+  public ILabelProvider getLabelProvider()
+  {
+    return this;
+  }
+  
+  public String getText(Object element)
+  {
+    String result = "";
+    String name = getName(element);
+    if (name != null)
+    {
+      result += name;
+      /*
+      String qualifier = getQualifier(element);
+      if (qualifier != null)
+      {
+        result += " - " + qualifier;
+      }  
+      IFile file = getFile(element);
+      if (file != null)
+      {
+        result += "  (" + file.getProject().getName() + ")";
+      }*/ 
+    }
+    return result;
+  } 
+  
+  public Image getImage(Object component)
+  {
+    Image result = null; 
+    if (component instanceof SearchMatch)
+    {
+      SearchMatch searchMatch = (SearchMatch)component;
+      QualifiedName qualifiedName = (QualifiedName)searchMatch.map.get("metaName");
+      if ( qualifiedName != null ){
+    	  if ( qualifiedName.equals(IXSDSearchConstants.SIMPLE_TYPE_META_NAME))
+    		  result = SIMPLE_TYPE_IMAGE;
+    	  else if ( qualifiedName.equals(IXSDSearchConstants.COMPLEX_TYPE_META_NAME))
+    		  result = COMPLEX_TYPE_IMAGE;
+    	  else if ( qualifiedName.equals(IXSDSearchConstants.ELEMENT_META_NAME))
+    		  result = ELEMENT_IMAGE;
+      }
+    }      
+    else if (component instanceof XSDComplexTypeDefinition)
+      result = COMPLEX_TYPE_IMAGE;      
+    else if (component instanceof XSDSimpleTypeDefinition)
+      result = SIMPLE_TYPE_IMAGE;
+    else if (component instanceof XSDElementDeclaration)
+      result = ELEMENT_IMAGE;
+    return result;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDElementsSearchListProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDElementsSearchListProvider.java
new file mode 100644
index 0000000..288609b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDElementsSearchListProvider.java
@@ -0,0 +1,170 @@
+package org.eclipse.wst.xsd.editor.internal.search;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.wst.common.core.search.SearchEngine;
+import org.eclipse.wst.common.core.search.SearchMatch;
+import org.eclipse.wst.common.core.search.SearchParticipant;
+import org.eclipse.wst.common.core.search.SearchPlugin;
+import org.eclipse.wst.common.core.search.SearchRequestor;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.pattern.SearchPattern;
+import org.eclipse.wst.common.core.search.scope.SearchScope;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentList;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentSearchListProvider;
+import org.eclipse.wst.xml.core.internal.search.XMLComponentDeclarationPattern;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.XSDSchemaDirective;
+
+public class XSDElementsSearchListProvider implements
+		IComponentSearchListProvider {
+	protected XSDSchema[] schemas;
+
+	protected IFile currentFile;
+
+	// TODO (cs) remove these and use proper search scopes!
+	//
+	public static final int ENCLOSING_PROJECT_SCOPE = 0;
+
+	public static final int ENTIRE_WORKSPACE_SCOPE = 1;
+
+	public XSDElementsSearchListProvider(IFile currentFile,
+			XSDSchema[] schemas) {
+		this.schemas = schemas;
+		this.currentFile = currentFile;
+	}
+
+	public void populateComponentList(IComponentList list, SearchScope scope,
+			IProgressMonitor pm) {
+		// we traverse the elements already defined within the visible
+		// schemas
+		// we do this in addition to the component search since this should
+		// execute
+		// very quickly and there's a good chance the user wants to select an
+		// element that's
+		// already imported/included
+		// TODO (cs) ensure we don't add duplicates when we proceed to use the
+		// search list
+		//
+		for (int i = 0; i < schemas.length; i++) {
+			XSDSchema schema = schemas[i];
+			ComponentCollectingXSDVisitor visitor = 
+				new ComponentCollectingXSDVisitor(list);
+			visitor.visitSchema(schema, true);
+		}
+
+		// finally we call the search API's to do a potentially slow search
+		if (scope != null) {
+			populateComponentListUsingSearch(list, scope, pm);
+		}
+	}
+
+	class ComponentCollectingXSDVisitor {
+		protected List visitedSchemas = new ArrayList();
+
+		IComponentList list;
+
+		ComponentCollectingXSDVisitor(IComponentList list) {
+			this.list = list;
+		}
+
+		public void visitSchema(XSDSchema schema, boolean visitImportedSchema) {
+			
+			visitedSchemas.add(schema);
+			for (Iterator contents = schema.getContents().iterator(); contents.hasNext();) {
+				XSDSchemaContent content = (XSDSchemaContent) contents.next();
+				if (content instanceof XSDSchemaDirective) {
+					XSDSchemaDirective schemaDirective = (XSDSchemaDirective) content;
+					XSDSchema extSchema = schemaDirective.getResolvedSchema();
+					if (extSchema != null && !visitedSchemas.contains(extSchema)){
+						if ( schemaDirective instanceof XSDImport && visitImportedSchema){
+							visitSchema(extSchema, false);
+						}
+						else if ( extSchema instanceof XSDInclude || extSchema instanceof XSDImport){
+							visitSchema(extSchema, false);
+						}
+					}
+				} else if (content instanceof XSDElementDeclaration) {
+					list.add(content);
+				}
+			}
+		}
+	}
+
+	private void populateComponentListUsingSearch(IComponentList list,
+			SearchScope scope, IProgressMonitor pm) {
+		SearchEngine searchEngine = new SearchEngine();
+		InternalSearchRequestor requestor = new InternalSearchRequestor(list);
+		findTypes(searchEngine, requestor, scope,
+				IXSDSearchConstants.ELEMENT_META_NAME);
+	}
+
+	class InternalSearchRequestor extends SearchRequestor {
+		IComponentList componentList;
+
+		InternalSearchRequestor(IComponentList componentList) {
+			this.componentList = componentList;
+		}
+
+		public void acceptSearchMatch(SearchMatch match) throws CoreException {
+			// we filter out the matches from the current file since we assume
+			// the
+			// info derived from our schema models is more update to date
+			// (in the event that we haven't saved our latest modifications)
+			//
+			if (match.getFile() != currentFile) {
+				// TODO... this ugly qualified name stashing will go away soon
+				//
+				QualifiedName qualifiedName = null;
+				Object o = match.map.get("name");
+				if (o != null && o instanceof QualifiedName) {
+					qualifiedName = (QualifiedName) o;
+				}
+				if (qualifiedName != null
+						&& qualifiedName.getLocalName() != null) {
+					componentList.add(match);
+				}
+			}
+		}
+	}
+
+	protected void findTypes(SearchEngine searchEngine,
+			SearchRequestor requestor, SearchScope scope, QualifiedName metaName) {
+		try {
+			XMLComponentDeclarationPattern pattern = new XMLComponentDeclarationPattern(
+					new QualifiedName("*", "*"), metaName,
+					SearchPattern.R_PATTERN_MATCH);
+
+			// TODO (cs) revist this... we shouldn't be needing to hard-code
+			// partipant id's
+			// All we're really doing here is trying to avoid finding matches in
+			// wsdl's since we don't
+			// ever want to import/include a wsdl from a schema! Maybe we should
+			// just scope out any file
+			// types that aren't xsd's using a custom SearchScope?
+			//
+			SearchParticipant particpant = SearchPlugin.getDefault()
+					.getSearchParticipant(
+							"org.eclipse.wst.xsd.search.XSDSearchParticipant");
+
+			Assert.isNotNull(particpant);
+			SearchParticipant[] participants = { particpant };
+			searchEngine.search(pattern, requestor, participants, scope, null,
+					new NullProgressMonitor());
+		} catch (CoreException e) {
+			e.printStackTrace();
+		}
+	}
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDSearchListDialogDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDSearchListDialogDelegate.java
new file mode 100644
index 0000000..31b50b0
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDSearchListDialogDelegate.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.search;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSearchListDialog;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSearchListDialogConfiguration;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ScopedComponentSearchListDialog;
+import org.eclipse.wst.xsd.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.dialogs.NewTypeButtonHandler;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDSearchListDialogDelegate implements IComponentDialog
+{
+  public final static QualifiedName TYPE_META_NAME = new QualifiedName(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "type");
+  public final static QualifiedName ELEMENT_META_NAME = new QualifiedName(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "element");
+  // protected Object setObject;
+  protected ComponentSpecification selection;
+  protected IFile currentFile;
+  protected XSDSchema[] schemas;
+  protected QualifiedName metaName;
+
+  public XSDSearchListDialogDelegate(QualifiedName metaName, IFile currentFile, XSDSchema[] schemas)
+  {
+    super();
+    this.metaName = metaName;
+    this.currentFile = currentFile;
+    this.schemas = schemas;
+  }
+
+  public ComponentSpecification getSelectedComponent()
+  {
+    return selection;
+  }
+
+  public void setInitialSelection(ComponentSpecification componentSpecification)
+  {
+    // TODO Auto-generated method stub   
+  }
+  
+  public int createAndOpen()
+  {
+    Shell shell = XSDEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell();
+    int returnValue = Window.CANCEL;
+    ComponentSearchListDialog dialog = null;
+    if ( metaName == ELEMENT_META_NAME)
+    {
+    	XSDComponentDescriptionProvider descriptionProvider = new XSDComponentDescriptionProvider();
+    	final XSDElementsSearchListProvider searchListProvider = new XSDElementsSearchListProvider(currentFile, schemas);
+    	ComponentSearchListDialogConfiguration configuration = new ComponentSearchListDialogConfiguration();
+    	
+        configuration.setDescriptionProvider(descriptionProvider);
+        configuration.setSearchListProvider(searchListProvider);
+        configuration.setFilterLabelText("Name:");
+        //TODO externalize string
+        dialog = new ScopedComponentSearchListDialog(shell, "Set element reference", configuration);
+    }
+    else if (metaName == TYPE_META_NAME)
+    {
+      XSDComponentDescriptionProvider descriptionProvider = new XSDComponentDescriptionProvider();
+      final XSDTypesSearchListProvider searchListProvider = new XSDTypesSearchListProvider(currentFile, schemas);
+     
+      ComponentSearchListDialogConfiguration configuration = new ComponentSearchListDialogConfiguration();
+      configuration.setDescriptionProvider(descriptionProvider);
+      configuration.setSearchListProvider(searchListProvider);
+      configuration.setNewComponentHandler(new NewTypeButtonHandler());
+      dialog = new ScopedComponentSearchListDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), configuration);
+    }
+    
+    if (dialog != null)
+    {
+      dialog.setBlockOnOpen(true);
+      dialog.create();
+      returnValue = dialog.open();
+      if (returnValue == Window.OK)
+      {
+        selection = dialog.getSelectedComponent();
+      }
+    }
+    return returnValue;
+  }
+
+  private IEditorPart getActiveEditor()
+  {
+    IWorkbench workbench = PlatformUI.getWorkbench();
+    IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+    IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+    return editorPart;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDTypesSearchListProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDTypesSearchListProvider.java
new file mode 100644
index 0000000..e201cba
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/search/XSDTypesSearchListProvider.java
@@ -0,0 +1,220 @@
+/*******************************************************************************
+ * 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.xsd.editor.internal.search;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.wst.common.core.search.SearchEngine;
+import org.eclipse.wst.common.core.search.SearchMatch;
+import org.eclipse.wst.common.core.search.SearchParticipant;
+import org.eclipse.wst.common.core.search.SearchPlugin;
+import org.eclipse.wst.common.core.search.SearchRequestor;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.pattern.SearchPattern;
+import org.eclipse.wst.common.core.search.scope.SearchScope;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentList;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentSearchListProvider;
+import org.eclipse.wst.xml.core.internal.search.XMLComponentDeclarationPattern;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.impl.XSDSchemaImpl;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDTypesSearchListProvider implements IComponentSearchListProvider
+{
+  protected XSDSchema[] schemas;
+  protected IFile currentFile;
+  // TODO (cs) remove these and use proper search scopes!
+  //
+  public static final int ENCLOSING_PROJECT_SCOPE = 0;
+  public static final int ENTIRE_WORKSPACE_SCOPE = 1;
+  
+  protected IXSDTypesFilter builtInFilter;
+  
+  /**
+   * Determines if we should use the filter
+   * This us used to turn the filter on and off 
+   */
+  protected boolean supportFilter = true;
+  private boolean showComplexTypes = true;
+
+  public XSDTypesSearchListProvider(IFile currentFile, XSDSchema[] schemas)
+  {
+    this.schemas = schemas;
+    this.currentFile = currentFile;
+  }
+
+  public void populateComponentList(IComponentList list, SearchScope scope, IProgressMonitor pm)
+  {	  
+    // first we add the 'built in' types
+    //
+    XSDSchema schemaForSchema = XSDSchemaImpl.getSchemaForSchema(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+    for (Iterator i = schemaForSchema.getSimpleTypeIdMap().values().iterator(); i.hasNext();)
+    {
+    	XSDTypeDefinition td = (XSDTypeDefinition) i.next();
+    	if ( builtInFilter == null || !builtInFilter.shouldFilterOut(td) ) {
+    		list.add(td);
+    	}
+    }    
+  
+    // now we traverse the types already defined within the visible schemas
+    // we do this in addition to the component search since this should execute
+    // very quickly and there's a good chance the user wants to select a time that's 
+    // already imported/included
+    // TODO (cs) ensure we don't add duplicates when we proceed to use the search list
+    //
+    for (int i = 0; i < schemas.length; i++)
+    {
+      XSDSchema schema = schemas[i];
+      ComponentCollectingXSDVisitor visitor = new ComponentCollectingXSDVisitor(list);
+      visitor.visitSchema(schema, true);
+    }
+    
+    // finally we call the search API's to do a potentially slow search
+    //
+    if (scope != null)
+    {  
+      populateComponentListUsingSearch(list, scope, pm);
+    }  
+  }
+  class ComponentCollectingXSDVisitor
+  {
+    protected List visitedSchemas = new ArrayList();
+    IComponentList list;
+    
+    ComponentCollectingXSDVisitor(IComponentList list)
+    {
+      this.list = list;  
+    }
+
+    public void visitSchema(XSDSchema schema, boolean visitImportedSchema)
+    {
+      visitedSchemas.add(schema);
+      for (Iterator contents = schema.getContents().iterator(); contents.hasNext();)
+      {
+        XSDSchemaContent content = (XSDSchemaContent) contents.next();
+        if (content instanceof XSDSchemaDirective)
+        {
+          XSDSchemaDirective schemaDirective = (XSDSchemaDirective) content;
+          XSDSchema extSchema = schemaDirective.getResolvedSchema();
+          if (extSchema != null && !visitedSchemas.contains(extSchema))
+          {
+            if ( schemaDirective instanceof XSDImport && visitImportedSchema){
+            	visitSchema(extSchema, false);
+            }
+            else if ( schemaDirective instanceof XSDInclude ||
+            		schemaDirective instanceof XSDRedefine){
+            	visitSchema(extSchema, false);
+            }
+          }
+        }
+        else if (content instanceof XSDTypeDefinition)
+        {
+          if ( showComplexTypes || ! (content instanceof XSDComplexTypeDefinition) )
+        	  list.add(content);
+        }
+      }
+    }
+  }
+
+  private void populateComponentListUsingSearch(IComponentList list, SearchScope scope, IProgressMonitor pm)
+  {
+    SearchEngine searchEngine = new SearchEngine();
+    InternalSearchRequestor requestor = new InternalSearchRequestor(list);
+    if (showComplexTypes)
+    	findTypes(searchEngine, requestor, scope, IXSDSearchConstants.COMPLEX_TYPE_META_NAME);
+    findTypes(searchEngine, requestor, scope, IXSDSearchConstants.SIMPLE_TYPE_META_NAME);
+  }
+  
+  class InternalSearchRequestor extends SearchRequestor
+  {
+    IComponentList componentList;
+
+    InternalSearchRequestor(IComponentList componentList)
+    {
+      this.componentList = componentList;
+    }
+
+    public void acceptSearchMatch(SearchMatch match) throws CoreException
+    {
+      // we filter out the matches from the current file since we assume the
+      // info derived from our schema models is more update to date
+      // (in the event that we haven't saved our latest modifications)
+      //
+      if (match.getFile() != currentFile)
+      {  
+        // TODO... this ugly qualified name stashing will go away soon
+        //
+        QualifiedName qualifiedName = null;
+        Object o = match.map.get("name");
+        if (o != null && o instanceof QualifiedName)
+        {  
+          qualifiedName = (QualifiedName)o;
+        } 
+        if (qualifiedName != null && qualifiedName.getLocalName() != null)
+        {  
+          componentList.add(match);
+        }
+      }  
+    }
+  }
+
+  protected void findTypes(SearchEngine searchEngine, SearchRequestor requestor, SearchScope scope, QualifiedName metaName)
+  {
+    try
+    {
+      XMLComponentDeclarationPattern pattern = new XMLComponentDeclarationPattern(new QualifiedName("*", "*"), metaName, SearchPattern.R_PATTERN_MATCH);
+      
+      // TODO (cs) revist this... we shouldn't be needing to hard-code partipant id's
+      // All we're really doing here is trying to avoid finding matches in wsdl's since we don't
+      // ever want to import/include a wsdl from a schema! Maybe we should just scope out any file 
+      // types that aren't xsd's using a custom SearchScope?
+      //
+      SearchParticipant particpant = SearchPlugin.getDefault().getSearchParticipant("org.eclipse.wst.xsd.search.XSDSearchParticipant");
+      Assert.isNotNull(particpant);
+      SearchParticipant[] participants = {particpant};
+      searchEngine.search(pattern, requestor, participants, scope, null, new NullProgressMonitor());
+    }
+    catch (CoreException e)
+    {
+      e.printStackTrace();
+    }
+  }
+
+  public void _populateComponentListQuick(IComponentList list, IProgressMonitor pm)
+  {    
+  }
+
+  public void turnBuiltInFilterOn(boolean option){
+	  supportFilter = option;
+  }
+  
+  public void setBuiltInFilter(IXSDTypesFilter filter) {
+ 	this.builtInFilter = filter;
+  }
+  
+  public void showComplexTypes(boolean show){
+	  showComplexTypes = show;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/OpenOnSelectionHelper.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/utils/OpenOnSelectionHelper.java
similarity index 90%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/OpenOnSelectionHelper.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/utils/OpenOnSelectionHelper.java
index 680a7a6..5789cc6 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/OpenOnSelectionHelper.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/editor/internal/utils/OpenOnSelectionHelper.java
@@ -1,14 +1,14 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.util;
+package org.eclipse.wst.xsd.editor.internal.utils;
 
 import java.util.Iterator;
 import java.util.List;
@@ -27,8 +27,8 @@
 import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
 import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
 import org.eclipse.wst.sse.ui.StructuredTextEditor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.InternalXSDMultiPageEditor;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.xsd.XSDAttributeDeclaration;
 import org.eclipse.xsd.XSDAttributeGroupDefinition;
 import org.eclipse.xsd.XSDConcreteComponent;
@@ -45,6 +45,8 @@
 import org.w3c.dom.Node;
 
 
+// issue (cs) can we remove this?
+//
 public class OpenOnSelectionHelper
 {
   
@@ -79,12 +81,11 @@
 				{
 					try
 					{
-					  workbenchWindow.getActivePage().openEditor(new FileEditorInput(schemaFile), XSDEditorPlugin.XSD_EDITOR_ID);
+					  workbenchWindow.getActivePage().openEditor(new FileEditorInput(schemaFile), XSDEditorPlugin.PLUGIN_ID);
 					}
 					catch (PartInitException initEx)
 					{
 					  initEx.printStackTrace();
-//						XSDEditorPlugin.getPlugin().getMsgLogger().write(initEx);
 					}
 					catch(Exception e)
 					{
@@ -128,17 +129,15 @@
 		        {
 							try
 							{
-							  // IEditorPart editorPart = workbenchWindow.getActivePage().openEditor(new FileEditorInput(schemaFile), textEditor.getXSDEditor().getEditorSite().getId());
 								IEditorPart editorPart = workbenchWindow.getActivePage().openEditor(new FileEditorInput(schemaFile), XSDEditorPlugin.getPlugin().PLUGIN_ID);
-								if (editorPart instanceof XSDEditor)
+								if (editorPart instanceof InternalXSDMultiPageEditor)
 								{
-									((XSDEditor)editorPart).openOnGlobalReference(component);
+									((InternalXSDMultiPageEditor)editorPart).openOnGlobalReference(component);
 									lastResult = true;
 								}
 							}
 							catch (PartInitException initEx)
 							{
-//								XSDEditorPlugin.getPlugin().getMsgLogger().write(initEx);
 							}
 						}          
 					}
@@ -148,7 +147,7 @@
     }
   }
   
-  public void openOnGlobalReference(XSDConcreteComponent comp)
+  public XSDNamedComponent openOnGlobalReference(XSDConcreteComponent comp)
   {
     XSDSchema schema = xsdSchema;
     String name = null;
@@ -159,7 +158,7 @@
     
     if (schema == null || name == null)
     {
-      return;
+      return null;
     }
 
     List objects = null;    
@@ -171,18 +170,6 @@
     {
       objects = schema.getTypeDefinitions();
     }
-    else if (comp instanceof XSDAttributeGroupDefinition)
-    {
-      objects = schema.getAttributeGroupDefinitions();
-    }
-    else if (comp instanceof XSDIdentityConstraintDefinition)
-    {
-      objects = schema.getIdentityConstraintDefinitions();
-    }
-    else if (comp instanceof XSDModelGroupDefinition)
-    {
-      objects = schema.getModelGroupDefinitions();
-    }
 
     if (objects != null)
     {
@@ -193,9 +180,11 @@
         if (namedComp.getName().equals(name))
         {
           revealObject(namedComp);
+          return namedComp;
         }
       }
     }
+    return null;
   }
   
   public boolean openOnSelection()
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java
similarity index 82%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java
index 0dacfb6..90b2baa 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/CreateElementAction.java
@@ -11,7 +11,6 @@
 package org.eclipse.wst.xsd.ui.internal.actions;
 import java.util.List;
 
-import org.eclipse.gef.GraphicalEditPart;
 import org.eclipse.gef.ui.parts.AbstractEditPartViewer;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -23,18 +22,12 @@
 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.graph.editparts.ComplexTypeDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ElementDeclarationEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ModelGroupDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.TopLevelComponentEditPart;
 import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
 import org.eclipse.xsd.XSDAttributeDeclaration;
 import org.eclipse.xsd.XSDAttributeGroupDefinition;
 import org.eclipse.xsd.XSDAttributeUse;
 import org.eclipse.xsd.XSDComplexTypeDefinition;
 import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
 import org.eclipse.xsd.XSDNamedComponent;
 import org.eclipse.xsd.XSDSchema;
 import org.eclipse.xsd.util.XSDConstants;
@@ -42,6 +35,8 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.Text;
 
+// issue (cs) can we remove this?
+//
 public class CreateElementAction extends Action
 {
   protected String description;
@@ -264,37 +259,37 @@
           
             Object obj = viewer.getSelectedEditParts().get(0);
             
-            if (obj instanceof GraphicalEditPart)
-            {
-              if (obj instanceof ElementDeclarationEditPart)
-              {
-                XSDElementDeclaration elem = ((ElementDeclarationEditPart)obj).getXSDElementDeclaration();
-                if (!elem.isElementDeclarationReference())
-                {
-                  ((ElementDeclarationEditPart)obj).doEditName();
-                }
-              }
-              else if (obj instanceof ModelGroupDefinitionEditPart)
-              {
-                XSDModelGroupDefinition group = ((ModelGroupDefinitionEditPart)obj).getXSDModelGroupDefinition();
-                if (!group.isModelGroupDefinitionReference())
-                {
-                  ((ModelGroupDefinitionEditPart)obj).doEditName();
-                }
-              }
-              else if (obj instanceof ComplexTypeDefinitionEditPart)
-              {
-                XSDComplexTypeDefinition ct = ((ComplexTypeDefinitionEditPart)obj).getXSDComplexTypeDefinition();
-                if (ct.getName() != null)
-                {
-                  ((ComplexTypeDefinitionEditPart)obj).doEditName();
-                }
-              }
-              else if (obj instanceof TopLevelComponentEditPart)
-              {
-                ((TopLevelComponentEditPart)obj).doEditName();
-              }
-            }
+//            if (obj instanceof GraphicalEditPart)
+//            {
+//              if (obj instanceof ElementDeclarationEditPart)
+//              {
+//                XSDElementDeclaration elem = ((ElementDeclarationEditPart)obj).getXSDElementDeclaration();
+//                if (!elem.isElementDeclarationReference())
+//                {
+//                  ((ElementDeclarationEditPart)obj).doEditName();
+//                }
+//              }
+//              else if (obj instanceof ModelGroupDefinitionEditPart)
+//              {
+//                XSDModelGroupDefinition group = ((ModelGroupDefinitionEditPart)obj).getXSDModelGroupDefinition();
+//                if (!group.isModelGroupDefinitionReference())
+//                {
+//                  ((ModelGroupDefinitionEditPart)obj).doEditName();
+//                }
+//              }
+//              else if (obj instanceof ComplexTypeDefinitionEditPart)
+//              {
+//                XSDComplexTypeDefinition ct = ((ComplexTypeDefinitionEditPart)obj).getXSDComplexTypeDefinition();
+//                if (ct.getName() != null)
+//                {
+//                  ((ComplexTypeDefinitionEditPart)obj).doEditName();
+//                }
+//              }
+//              else if (obj instanceof TopLevelComponentEditPart)
+//              {
+//                ((TopLevelComponentEditPart)obj).doEditName();
+//              }
+//            }
 
           }
         }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java
index 5580b40..6e6c7e5 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/DOMAttribute.java
@@ -10,8 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.xsd.ui.internal.actions;
 
-// TODO Remove this
-
+// issue (cs) remove this
 /**
  * @version 	1.0
  * @author
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java
index 736beca..3e0dad4 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/actions/XSDEditNamespacesAction.java
@@ -24,9 +24,9 @@
 import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
 import org.eclipse.wst.xml.ui.internal.actions.ReplacePrefixAction;
 import org.eclipse.wst.xml.ui.internal.util.XMLCommonResources;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.SchemaPrefixChangeHandler;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.TargetNamespaceChangeHandler;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.internal.nsedit.SchemaPrefixChangeHandler;
+import org.eclipse.wst.xsd.ui.internal.nsedit.TargetNamespaceChangeHandler;
 import org.eclipse.wst.xsd.ui.internal.widgets.XSDEditSchemaInfoDialog;
 import org.eclipse.xsd.XSDSchema;
 import org.eclipse.xsd.util.XSDConstants;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/SchemaPrefixChangeHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/SchemaPrefixChangeHandler.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/SchemaPrefixChangeHandler.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/SchemaPrefixChangeHandler.java
index 3ecd3a3..2df620c 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/SchemaPrefixChangeHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/SchemaPrefixChangeHandler.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.refactor.rename;
+package org.eclipse.wst.xsd.ui.internal.nsedit;
 
 import java.util.Iterator;
 import java.util.List;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/TargetNamespaceChangeHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/TargetNamespaceChangeHandler.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/TargetNamespaceChangeHandler.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/TargetNamespaceChangeHandler.java
index 8635ec2..9e745dd 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/TargetNamespaceChangeHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/TargetNamespaceChangeHandler.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.refactor.rename;
+package org.eclipse.wst.xsd.ui.internal.nsedit;
 
 import java.util.Iterator;
 import org.eclipse.emf.common.util.EList;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/XSDVisitor.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/XSDVisitor.java
index 4acf32d..c9bfbaf 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDVisitor.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/nsedit/XSDVisitor.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.refactor.rename;
+package org.eclipse.wst.xsd.ui.internal.nsedit;
 
 import java.util.Iterator;
 import org.eclipse.xsd.XSDAttributeDeclaration;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelAdapter.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelQueryExtension.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelQueryExtension.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelQueryExtension.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelQueryExtension.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelReconcileAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelReconcileAdapter.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/text/XSDModelReconcileAdapter.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/text/XSDModelReconcileAdapter.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/SelectionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/SelectionAdapter.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/SelectionAdapter.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/SelectionAdapter.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java
new file mode 100644
index 0000000..ae933cc
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java
@@ -0,0 +1,415 @@
+/*******************************************************************************
+ * 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.util;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaContent;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.impl.XSDImportImpl;
+import org.eclipse.xsd.impl.XSDSchemaImpl;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class TypesHelper
+{
+  XSDSchema xsdSchema;
+  Vector list = new Vector();
+
+  public TypesHelper(XSDSchema xsdSchema)
+  {
+    this.xsdSchema = xsdSchema;
+  }
+
+  private void updateExternalImportGlobals()
+  {
+    if (xsdSchema != null)
+    {
+      Iterator contents = xsdSchema.getContents().iterator();
+      while (contents.hasNext())
+      {
+        XSDSchemaContent content = (XSDSchemaContent) contents.next();
+        if (content instanceof XSDImportImpl)
+        {
+          XSDImportImpl anImport = (XSDImportImpl) content;
+          try
+          {
+            if (anImport.getSchemaLocation() != null)
+            {
+              anImport.importSchema();
+            }
+          }
+          catch (Exception e)
+          {
+            
+          }
+        }
+      }
+    }
+  }
+
+
+  public java.util.List getBuiltInTypeNamesList()
+  {
+    Vector items = new Vector();
+    if (xsdSchema != null)
+    {
+      String prefix = xsdSchema.getSchemaForSchemaQNamePrefix();
+      if (prefix != null && prefix.length() > 0)
+      {
+        prefix = prefix + ":";
+      }
+      else
+      {
+        prefix = "";
+      }
+      List result = new ArrayList();
+      if (xsdSchema != null)
+      {
+        XSDSchema schemaForSchema = XSDSchemaImpl.getSchemaForSchema(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+        for (Iterator i = schemaForSchema.getSimpleTypeIdMap().values().iterator(); i.hasNext();)
+        {
+          XSDTypeDefinition td = (XSDTypeDefinition) i.next();  
+          String localName = td.getName(); 
+          String prefixedName = (prefix != null && prefix.length() > 0) ? prefix + ":" + localName : localName; 
+          result.add(prefixedName);        
+        }
+      }
+    }
+    return items;
+  }
+
+  // issue (cs) do we still need this?  it can likely be remove now
+  // was used for content assist but I don't think we really need it
+  public java.util.List getBuiltInTypeNamesList2()
+  {
+    List result = new ArrayList();
+    if (xsdSchema != null)
+    {
+      List prefixes = getPrefixesForNamespace(xsdSchema.getSchemaForSchemaNamespace());
+      XSDSchema schemaForSchema = XSDSchemaImpl.getSchemaForSchema(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+      for (Iterator i = schemaForSchema.getSimpleTypeIdMap().values().iterator(); i.hasNext();)
+      {
+        XSDTypeDefinition td = (XSDTypeDefinition) i.next();  
+        String localName = td.getName();
+        String prefix = prefixes.size() > 0 ? (String)prefixes.get(0) : null;
+        String prefixedName = (prefix != null && prefix.length() > 0) ? prefix + ":" + localName : localName; 
+        result.add(prefixedName);        
+      }
+    }
+    return result;
+  }
+
+  public java.util.List getUserSimpleTypeNamesList()
+  {
+    Vector items = new Vector();
+    if (xsdSchema != null)
+    {
+      updateExternalImportGlobals();
+      Iterator i = xsdSchema.getTypeDefinitions().iterator();
+      while (i.hasNext())
+      {
+        XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
+        if (typeDefinition instanceof XSDSimpleTypeDefinition)
+        {
+          items.addAll(getPrefixedNames(typeDefinition.getTargetNamespace(), typeDefinition.getName()));
+          //System.out.println(typeDefinition.getQName(xsdSchema));
+          //items.add(typeDefinition.getQName(xsdSchema));
+        }
+      }
+      items.add(getPrefix(xsdSchema.getSchemaForSchemaNamespace(), true) + "anyType");
+      
+      //      items = addExternalImportedUserSimpleTypes(items);
+      items = (Vector) sortList(items);
+    }
+    return items;
+  }
+
+  public java.util.List getUserComplexTypeNamesList()
+  {
+    Vector items = new Vector();
+    if (xsdSchema != null)
+    {
+      updateExternalImportGlobals();
+      Iterator i = xsdSchema.getTypeDefinitions().iterator();
+      while (i.hasNext())
+      {
+        XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
+        if (typeDefinition instanceof XSDComplexTypeDefinition)
+        {
+			    items.addAll(getPrefixedNames(typeDefinition.getTargetNamespace(), typeDefinition.getName()));         
+        }
+      }
+      items = (Vector) sortList(items);
+    }
+    return items;
+  }
+  
+  public java.util.List getUserSimpleTypes()
+  {
+    Vector items = new Vector();
+    if (xsdSchema != null)
+    {
+      updateExternalImportGlobals();
+      Iterator i = xsdSchema.getTypeDefinitions().iterator();
+      while (i.hasNext())
+      {
+        XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
+        if (typeDefinition instanceof XSDSimpleTypeDefinition)
+        {
+          items.add(typeDefinition);
+          //System.out.println(typeDefinition.getQName(xsdSchema));
+          //items.add(typeDefinition.getQName(xsdSchema));
+        }
+      }
+      // We need to add the anyType
+//      items.add(getPrefix(xsdSchema.getSchemaForSchemaNamespace(), true) + "anyType");
+      
+      //      items = addExternalImportedUserSimpleTypes(items);
+      //items = (Vector) sortList(items);
+    }
+    return items;
+  }
+
+  public String getPrefix(String ns, boolean withColon)
+  {
+    String key = "";
+
+    if (xsdSchema != null)
+    {
+      Map map = xsdSchema.getQNamePrefixToNamespaceMap();
+      Iterator iter = map.keySet().iterator();
+      while (iter.hasNext())
+      {
+        Object keyObj = iter.next();
+        Object value = map.get(keyObj);
+        if (value != null && value.toString().equals(ns))
+        {
+          if (keyObj != null)
+          {
+            key = keyObj.toString();
+          }
+          else
+          {
+            key = "";
+          }
+          break;
+        }
+      }
+      if (!key.equals(""))
+      {
+        if (withColon)
+        {
+          key = key + ":";
+        }
+      }
+    }
+    return key;
+  }
+
+  public java.util.List getGlobalElements()
+  {
+    Vector items = new Vector();
+    if (xsdSchema != null)
+    {
+      updateExternalImportGlobals();
+      if (xsdSchema.getElementDeclarations() != null)
+      {
+        Iterator i = xsdSchema.getElementDeclarations().iterator();
+        while (i.hasNext())
+        {
+          XSDElementDeclaration elementDeclaration = (XSDElementDeclaration) i.next();
+          String name = elementDeclaration.getQName(xsdSchema);
+          if (name != null)
+          {
+            items.add(name);
+          }
+        }
+      }
+      //      items = addExternalImportedGlobalElements(items);
+      items = (Vector) sortList(items);
+    }
+    return items;
+  }
+
+  public java.util.List getGlobalAttributes()
+  {
+    Vector items = new Vector();
+    if (xsdSchema != null)
+    {
+      updateExternalImportGlobals();
+      if (xsdSchema.getAttributeDeclarations() != null)
+      {
+        Iterator i = xsdSchema.getAttributeDeclarations().iterator();
+        while (i.hasNext())
+        {
+          XSDAttributeDeclaration attributeDeclaration = (XSDAttributeDeclaration) i.next();
+          if (attributeDeclaration.getTargetNamespace() == null || (attributeDeclaration.getTargetNamespace() != null && !attributeDeclaration.getTargetNamespace().equals(XSDConstants.SCHEMA_INSTANCE_URI_2001)))
+          {
+            String name = attributeDeclaration.getQName(xsdSchema);
+            if (name != null)
+            {
+              items.add(name);
+            }
+          }
+        }
+      }
+      //      items = addExternalImportedAttributes(items);
+      items = (Vector) sortList(items);
+    }
+    return items;
+  }
+
+  public java.util.List getGlobalAttributeGroups()
+  {
+    Vector items = new Vector();
+    if (xsdSchema != null)
+    {
+      updateExternalImportGlobals();
+      if (xsdSchema.getAttributeGroupDefinitions() != null)
+      {
+        Iterator i = xsdSchema.getAttributeGroupDefinitions().iterator();
+        while (i.hasNext())
+        {
+          XSDAttributeGroupDefinition attributeGroupDefinition = (XSDAttributeGroupDefinition) i.next();
+          String name = attributeGroupDefinition.getQName(xsdSchema);
+          if (name != null)
+          {
+            items.add(name);
+          }
+        }
+      }
+      //      items = addExternalImportedAttributeGroups(items);
+      items = (Vector) sortList(items);
+    }
+    return items;
+  }
+
+  public java.util.List getModelGroups()
+  {
+    Vector items = new Vector();
+    if (xsdSchema != null)
+    {
+      updateExternalImportGlobals();
+      if (xsdSchema.getModelGroupDefinitions() != null)
+      {
+        Iterator i = xsdSchema.getModelGroupDefinitions().iterator();
+        while (i.hasNext())
+        {
+          XSDModelGroupDefinition modelGroupDefinition = (XSDModelGroupDefinition) i.next();
+          String name = modelGroupDefinition.getQName(xsdSchema);
+          if (name != null)
+          {
+            items.add(name);
+          }
+        }
+      }
+      //      items = addExternalImportedGroups(items);
+      items = (Vector) sortList(items);
+    }
+    return items;
+  }
+
+  // issue (cs) ssems like a rather goofy util method?
+  public static java.util.List sortList(java.util.List types)
+  {
+    try
+    {
+      java.util.Collections.sort(types); // performance?  n*log(n)
+    }
+    catch (Exception e)
+    {
+//      XSDEditorPlugin.getPlugin().getMsgLogger().write("Sort failed");
+    }
+    return types;
+  }
+
+  // issue (cs) do we still need this?
+  public void updateMapAfterDelete(XSDImport deletedNode)
+  {
+    String ns = deletedNode.getNamespace();
+    if (ns != null)
+    {
+      String prefix = getPrefix(ns, false);
+      if (prefix != null)
+      {
+        prefix = prefix.trim();
+      }
+      String xmlnsAttr = (prefix == "") ? "xmlns" : "xmlns:" + prefix;
+
+      if (prefix == "")
+      {
+        prefix = null;
+      }
+
+      if (xsdSchema != null)
+      {
+        Map map = xsdSchema.getQNamePrefixToNamespaceMap();
+        map.remove(prefix);
+        Element schemaElement = xsdSchema.getElement();
+        schemaElement.removeAttribute(xmlnsAttr);
+      }
+    }
+  }
+
+  public List getPrefixedNames(String namespace, String localName)
+  {
+    List list = new ArrayList();
+    if (namespace == null)
+    {
+      namespace = "";    			
+    }
+    if (xsdSchema != null && localName != null)
+    {
+      List prefixes = getPrefixesForNamespace(namespace);
+      for (Iterator i = prefixes.iterator(); i.hasNext(); )
+      {
+      	String prefix = (String)i.next();
+      	if (prefix == null) prefix = "";
+        String prefixedName = prefix.length() > 0 ? prefix + ":" + localName : localName;
+        list.add(prefixedName);               
+      }
+      if (prefixes.size() == 0)
+      {
+        list.add(localName);
+      }
+    }
+    return list;
+  }
+  
+  protected List getPrefixesForNamespace(String namespace)
+  {
+    List list = new ArrayList();
+    Map map = xsdSchema.getQNamePrefixToNamespaceMap();
+    for (Iterator iter = map.keySet().iterator(); iter.hasNext();)
+    {
+      String prefix = (String) iter.next();
+      Object value = map.get(prefix);
+      if (value != null && value.toString().equals(namespace))
+      {
+       list.add(prefix);
+      }
+    }
+    return list;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java
new file mode 100644
index 0000000..9c95ee7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java
@@ -0,0 +1,246 @@
+/*******************************************************************************
+ * 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.util;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+// issue (cs) can we get rid of this class?
+// I've stripped it down a whole lot... but it'd be great to get rid of it
+//
+public class ViewUtility
+{
+  private static Font font;
+
+  private static Font getFont()
+  {
+    if (font == null)
+    {              
+      font = new Font(Display.getCurrent(), "ms sans serif", 8, SWT.NORMAL);  
+    }
+    return font;
+  }
+
+  public static void setComposite(Composite comp)
+  {
+    // deprecated.  Remove later
+  }
+  public static Composite createComposite(Composite parent, int numColumns)
+  {
+    Composite composite = new Composite(parent, SWT.NONE);
+
+    composite.setFont(getFont());
+
+    GridLayout layout = new GridLayout();
+    layout.numColumns = numColumns;
+    composite.setLayout(layout);
+
+    GridData data = new GridData();
+    data.verticalAlignment = GridData.FILL;
+    data.horizontalAlignment = GridData.FILL;
+    composite.setLayoutData(data);
+    return composite;
+  }
+
+  public static Composite createComposite(Composite parent, int numColumns, boolean horizontalFill)
+  {
+    if (!horizontalFill)
+    {
+      createComposite(parent, numColumns);
+    }
+
+    Composite composite = new Composite(parent, SWT.NONE);
+
+    composite.setFont(getFont());
+
+    GridLayout layout = new GridLayout();
+    layout.numColumns = numColumns;
+    composite.setLayout(layout);
+
+    GridData data = new GridData();
+    data.verticalAlignment = GridData.FILL;
+    data.horizontalAlignment = GridData.FILL;
+    data.grabExcessHorizontalSpace = true;
+    composite.setLayoutData(data);
+
+    return composite;
+  }
+
+  public static Label createHorizontalFiller(Composite parent, int horizontalSpan) 
+  {
+    Label label = new Label(parent, SWT.LEFT);
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.FILL;
+    data.horizontalSpan = horizontalSpan;
+    label.setLayoutData(data);
+    return label;
+  }
+
+  /**
+   * Helper method for creating labels.
+   */
+  public static Label createLabel(Composite parent, String text) 
+  {
+    Label label = new Label(parent, SWT.LEFT);
+    label.setText(text);
+
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.FILL;
+    label.setLayoutData(data);
+    return label;
+  }
+
+	public Label createLabel(Composite parent, int style, String text)
+	{
+		Label label = new Label(parent, style);
+//		setColor(label);
+		label.setText(text);
+
+		GridData data = new GridData();
+		data.horizontalAlignment = GridData.FILL;
+		label.setLayoutData(data);
+		return label;
+	}
+  
+  public static Label createLabel(Composite parent, String text, int alignment)
+  {
+    Label label = new Label(parent, SWT.LEFT);
+    label.setText(text);
+
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.FILL;
+    data.verticalAlignment = alignment;
+    label.setLayoutData(data);
+    return label;
+  }
+
+ 
+
+
+  /**
+   * Create radio button
+   */
+  public static Button createRadioButton(Composite parent, String label)
+  {
+    Button button = new Button(parent, SWT.RADIO);
+    button.setText(label);
+
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.FILL;
+    button.setLayoutData(data);
+
+    return button;
+  }
+
+  /**
+   * Helper method for creating check box
+   */
+  public static Button createCheckBox(Composite parent, String label) 
+  {
+    Button button = new Button(parent, SWT.CHECK);
+    button.setText(label);
+
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.FILL;
+    button.setLayoutData(data);
+    return button;
+  }
+
+  public static Combo createComboBox(Composite parent)
+  {
+    return createComboBox(parent, true);
+  }
+
+  public static Combo createComboBox(Composite parent, boolean isReadOnly)
+  {
+    int style = isReadOnly == true ? SWT.READ_ONLY : SWT.DROP_DOWN;
+
+    Combo combo = new Combo(parent, style);
+
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.FILL;
+    data.grabExcessHorizontalSpace = true;
+    combo.setLayoutData(data);
+    return combo;
+  }
+
+
+  public static Text createTextField(Composite parent, int width)
+  {
+    Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
+
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.FILL;
+    data.grabExcessHorizontalSpace = true;
+    data.widthHint = width;
+    text.setLayoutData(data);
+
+    return text;
+  }
+
+  /**
+   * <code>createWrappedMultiTextField</code> creates a wrapped multitext field
+   *
+   * @param parent a <code>Composite</code> value
+   * @param width an <code>int</code> value
+   * @param numLines an <code>int</code> value representing number of characters in height
+   * @param verticalFill a <code>boolean</code> value
+   * @return a <code>Text</code> value
+   */
+  public static Text createWrappedMultiTextField(Composite parent, int width, int numLines, boolean verticalFill)
+  {
+    Text text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
+
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.FILL;
+    data.grabExcessHorizontalSpace = true;
+    if (verticalFill)
+    {
+      data.verticalAlignment = GridData.FILL;
+      data.grabExcessVerticalSpace = true;
+    }      
+    data.widthHint = width;
+    FontData[] fontData = getFont().getFontData();
+    // hack for now where on Windows, only 1 fontdata exists
+    data.heightHint = numLines * fontData[0].getHeight();
+    text.setLayoutData(data);
+
+    return text;
+  }
+
+  public static Text createMultiTextField(Composite parent, int width, int height, boolean verticalFill)
+  {
+    Text text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.FILL;
+    data.grabExcessHorizontalSpace = true;
+    if (verticalFill)
+    {
+      data.verticalAlignment = GridData.FILL;
+      data.grabExcessVerticalSpace = true;
+    }      
+    data.widthHint = width;
+    data.heightHint = height;
+    text.setLayoutData(data);
+
+    return text;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java
new file mode 100644
index 0000000..6e705b8
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java
@@ -0,0 +1,431 @@
+/*******************************************************************************
+ * 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.util;
+
+import java.util.ArrayList;
+
+import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
+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.xsd.util.XSDConstants;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+// issue (cs) remove this class!!
+public class XSDDOMHelper
+{
+
+  private static String XMLSchemaURI = "http://www.w3.org/2001/XMLSchema";
+
+  /**
+   * Constructor for XSDDOMHelper.
+   */
+  public XSDDOMHelper()
+  {
+    super();
+  }
+
+  public Node getChildNode(Element parent, String childName)
+  {
+/*    NodeList nodeList = parent.getElementsByTagNameNS(XMLSchemaURI, childName);
+    if (nodeList.getLength() > 0)
+      return nodeList.item(0);
+    return null;
+*/
+    NodeList list = null;
+    if (parent != null)
+    {
+      list = parent.getChildNodes();
+    }
+
+    if (list != null)
+    {
+      // Performance issue perhaps?
+      for (int i = 0; i < list.getLength(); i++)
+      {
+        if (list.item(i) instanceof Element)
+        {
+          if (list.item(i).getLocalName().equals(childName))
+          {
+            return list.item(i);
+          }
+        }
+      }
+    }
+    return null;
+  }
+
+
+
+
+  public void changeDerivedByType(Element element, String derivedByType, String type)
+  {
+    Document doc = element.getOwnerDocument();
+
+    String prefix = element.getPrefix();
+    prefix = prefix == null ? "" : prefix + ":";
+
+    Element derivedByElement = getDerivedByElement(element);
+    
+    if (derivedByElement != null && derivedByElement.getLocalName().equals(derivedByType))
+    {
+    	return; // it's already the derived by type
+    }
+    Element newNode;
+  	if (derivedByType.equals("restriction"))
+  	{
+    	newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.RESTRICTION_ELEMENT_TAG);
+    }
+    else
+    {
+    	newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.EXTENSION_ELEMENT_TAG);
+    }
+	
+    newNode.setAttribute("base", type);
+
+    if (derivedByElement != null)
+    {
+      if (derivedByElement.hasChildNodes())
+      {        
+        NodeList nodes = derivedByElement.getChildNodes();
+        // use clones so we don't have a refresh problem
+        for (int i = 0; i < nodes.getLength(); i++)
+        {
+          Node node = nodes.item(i);       
+          newNode.appendChild(node.cloneNode(true));
+        }
+      }
+	  element.replaceChild(newNode, derivedByElement);
+    }
+    else 
+	{
+		Element parent = (Element) element.getParentNode();				// get back to complexType
+        NodeList nodes = parent.getChildNodes();
+		ArrayList nodeSaveList = new ArrayList();
+		
+		// save children. (nodes turns out to be the same object as parent;
+		// deleting them from parent will delete them from nodes.)
+        for (int i = 0; i < nodes.getLength(); i++)			
+        {
+          Node node = nodes.item(i);      
+		  nodeSaveList.add(node);
+        }
+
+        // remove children so we can surround them by complexContent
+        for (int i = 0; i < nodeSaveList.size(); i++)			
+        {
+          Node node = (Node) nodeSaveList.get(i);      
+          parent.removeChild(node);
+        }
+		
+		// build a complexContent element
+		Element complexContent = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.COMPLEXCONTENT_ELEMENT_TAG);
+		parent.appendChild(complexContent);					// insert into complexType
+		complexContent.appendChild(newNode);				// insert derivation type
+        for (int i = 0; i < nodeSaveList.size(); i++)			// insert children previously of complexType
+        {
+          Node node = (Node) nodeSaveList.get(i);       
+          newNode.appendChild(node.cloneNode(true));
+        }
+		
+		parent.appendChild(complexContent);
+		formatChild(complexContent);
+    }
+  }
+
+  
+  /**
+   * Get the derived by node given the complexContent or simpleContent node
+   */
+  public Element getDerivedByElement(Element element)
+  {
+    Node restrictionChild = getChildNode(element, "restriction");
+    Node extensionChild = getChildNode(element, "extension");
+    if (restrictionChild != null)
+    {
+      if (restrictionChild instanceof Element)
+      {
+        return (Element)restrictionChild;
+      }
+    }
+    
+    if (extensionChild != null)
+    {
+      if (extensionChild instanceof Element)
+      {
+        return (Element)extensionChild;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Get the derived by node given the ComplexType node
+   * Returns the first one, if say, the INVALID schema has more than one
+   */
+  public Element getDerivedByElementFromComplexType(Element element)
+  {
+    NodeList nl = element.getChildNodes();
+    int j = 0;
+    for (j = 0; j < nl.getLength(); j++)
+    {
+      Node aNode = nl.item(j);
+      if (inputEquals(aNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
+      {
+        break; 
+      }
+      else if (inputEquals(aNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
+      {
+        break;
+      }
+    }
+    Element derivedByNode = getDerivedByElement((Element)nl.item(j));
+    return derivedByNode;
+  }
+
+  /**
+   * Get the content model given the ComplexType node
+   * Returns the first one, if say, the INVALID schema has more than one
+   */
+  public Element getContentModelFromParent(Element element)
+  {
+    NodeList nl = element.getChildNodes();
+    int j = 0;
+    boolean modelExists = false;
+    int length = nl.getLength();
+    for (j = 0; j < length; j++)
+    {
+      Node aNode = nl.item(j);
+      if (inputEquals(aNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
+      {
+        modelExists = true;
+        break; 
+      }
+      else if (inputEquals(aNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
+      {
+        modelExists = true;
+        break;
+      }
+      else if (inputEquals(aNode, XSDConstants.SEQUENCE_ELEMENT_TAG, false))
+      {
+        modelExists = true;
+        break;
+      }
+      else if (inputEquals(aNode, XSDConstants.CHOICE_ELEMENT_TAG, false))
+      {
+        modelExists = true;
+        break;
+      }
+      else if (inputEquals(aNode, XSDConstants.ALL_ELEMENT_TAG, false))
+      {
+        modelExists = true;
+        break;
+      }
+    }
+    if (!modelExists)
+    {
+      return null;
+    }
+
+    Element derivedByNode = (Element)nl.item(j);
+    return derivedByNode;
+  }
+
+  /**
+   * 
+   */
+  public void changeContentModel(Element complexTypeElement, String contentModel, Element sequenceChoiceOrAllElement)
+  {
+    Document doc = complexTypeElement.getOwnerDocument();
+
+    String prefix = complexTypeElement.getPrefix();
+    prefix = prefix == null ? "" : prefix + ":";
+    
+    Element contentModelElement = getContentModelFromParent(complexTypeElement);
+
+    if (contentModelElement.getLocalName().equals(contentModel))
+    {
+      return; // it's already the content model 
+    }
+    Element newNode;
+    newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + contentModel);
+
+    if (contentModelElement.hasChildNodes())
+    {        
+      NodeList nodes = contentModelElement.getChildNodes();
+      // use clones so we don't have a refresh problem
+      for (int i = 0; i < nodes.getLength(); i++)
+      {
+        Node node = nodes.item(i);
+        if (node instanceof Element)
+        {
+          if (node.getLocalName().equals(XSDConstants.ANNOTATION_ELEMENT_TAG))
+          {
+            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)))
+            {
+              newNode.appendChild(node.cloneNode(true));
+            }
+          }
+          else if (node.getLocalName().equals(XSDConstants.RESTRICTION_ELEMENT_TAG) ||
+                    node.getLocalName().equals(XSDConstants.EXTENSION_ELEMENT_TAG))
+          {
+            newNode.appendChild(node.cloneNode(true));
+            if (sequenceChoiceOrAllElement != null)
+            {
+              node.appendChild(sequenceChoiceOrAllElement);
+            }
+          }
+          else
+          {
+            removeNodeAndWhitespace(node);
+          }
+        }
+        else
+        {
+          newNode.appendChild(node.cloneNode(true)); 
+        }
+      }
+    }
+    complexTypeElement.replaceChild(newNode, contentModelElement);
+  }
+
+  public Element cloneElement(Element parent, Element sourceNode)
+  {
+    Document doc = parent.getOwnerDocument();
+    String prefix = parent.getPrefix();
+    prefix = prefix == null ? "" : prefix + ":";
+    
+    Element newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + sourceNode.getLocalName());
+
+    if (sourceNode.hasChildNodes())
+    {        
+      NodeList nodes = sourceNode.getChildNodes();
+      // use clones so we don't have a refresh problem
+      for (int i = 0; i < nodes.getLength(); i++)
+      {
+        Node node = nodes.item(i);
+        newNode.appendChild(node.cloneNode(true));
+      }
+    }
+    return newNode;
+//    parent.replaceChild(newNode, sourceNode);
+  }
+
+ 
+
+  public static void removeNodeAndWhitespace(Node node)
+  {
+    Node parentNode = node.getParentNode();
+    
+    Node nextElement = getNextElementNode(node);
+    Node previousElement = getPreviousElementNode(node);
+
+    Node nextSibling = node.getNextSibling();
+    if (nextSibling instanceof Text)
+    {
+      parentNode.removeChild(nextSibling);
+    }
+
+    if (parentNode != null)
+    {
+		  parentNode.removeChild(node);
+    }
+
+    if (nextElement != null)
+    {
+			formatChild(nextElement);
+    }
+
+		if (previousElement != null)
+		{
+			formatChild(previousElement);
+		}
+  }
+
+	public static void formatChild(Node 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(); 
+      }
+    }
+  }
+  
+
+  private static Node getNextElementNode(Node node)
+  {
+    Node next = node.getNextSibling();
+    
+    while (!(next instanceof Element) && next != null)
+    {
+      next = next.getNextSibling();
+    }
+    if (next instanceof Text)
+    {
+    	return null;
+    }
+    return next;
+  }
+
+	private static Node getPreviousElementNode(Node node)
+	{
+		Node previous = node.getPreviousSibling();
+    
+		while (!(previous instanceof Element) && previous != null)
+		{
+			previous = previous.getPreviousSibling();
+		}
+    if (previous instanceof Text)
+    {
+      return null;
+    }
+    return previous;
+	}
+
+ 
+
+  // issue (cs) what's this method supposed to do?
+  // bizzare name
+  public static boolean inputEquals(Object input, String tagname, boolean isRef)
+  {
+    if (input instanceof Element)
+    {
+      Element element = (Element) input;
+      if (element.getLocalName().equals(tagname))
+      {
+        boolean refPresent = element.hasAttribute("ref");
+
+        return refPresent == isRef;
+      }
+    }
+    return false;
+  }
+
+ 
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverAdapterFactory.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverAdapterFactory.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverAdapterFactory.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverAdapterFactory.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverImpl.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverImpl.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverImpl.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaLocationResolverImpl.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/validation/DelegatingSourceValidatorForXSD.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/validation/DelegatingSourceValidatorForXSD.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/validation/DelegatingSourceValidatorForXSD.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/validation/DelegatingSourceValidatorForXSD.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java
index eba2c64..5db6c11 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/EnumerationsDialog.java
@@ -19,7 +19,7 @@
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
 
 
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java
index e5b6bdc..ec97e3f 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/TypeSection.java
@@ -18,8 +18,8 @@
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorContextIds;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
 import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
 import org.eclipse.xsd.XSDSchema;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/XSDEditSchemaInfoDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/XSDEditSchemaInfoDialog.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/XSDEditSchemaInfoDialog.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/widgets/XSDEditSchemaInfoDialog.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java
index 5cffc52..8382030 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/NewXSDWizard.java
@@ -33,7 +33,7 @@
 import org.eclipse.ui.part.ISetSelectionTarget;
 import org.eclipse.wst.sse.core.internal.encoding.CommonEncodingPreferenceNames;
 import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 
 
 public class NewXSDWizard extends Wizard implements INewWizard {
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java
similarity index 99%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java
index e7923d6..2e2859b 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexCompositionPage.java
@@ -35,8 +35,8 @@
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorContextIds;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
 import org.eclipse.xsd.XSDPatternFacet;
 
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java
similarity index 99%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java
index 2844709..3dd0b63 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexNode.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.xsd.ui.internal.wizards;
 
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 
 
 class RegexNode
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java
index 9abe271..6421e12 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexTestingPage.java
@@ -27,8 +27,8 @@
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorContextIds;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
 
 
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java
similarity index 96%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java
index 95da3f7..62e393e 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/RegexWizard.java
@@ -12,7 +12,7 @@
 
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.xsd.XSDPatternFacet;
 import org.eclipse.xsd.impl.XSDFactoryImpl;
 
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java
index 204ff2d..d824efb 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDLocationChoicePage.java
@@ -15,7 +15,7 @@
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
 
 
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java
index db12cd6..98c8d23 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDNewFilePage.java
@@ -19,7 +19,7 @@
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 
 
 public class XSDNewFilePage extends WizardNewFileCreationPage
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java
similarity index 99%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java
index 16e2ac7..83b3810 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt-xsd/org/eclipse/wst/xsd/ui/internal/wizards/XSDSelectIncludeFileWizard.java
@@ -28,7 +28,7 @@
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.common.ui.internal.viewers.SelectSingleFilePage;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
 import org.eclipse.xsd.XSDSchema;
 import org.eclipse.xsd.util.XSDParser;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/AddFieldAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/AddFieldAction.java
new file mode 100644
index 0000000..42ee0b4
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/AddFieldAction.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * 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.xsd.adt.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.ui.common.commands.BaseCommand;
+
+
+public class AddFieldAction extends BaseSelectionAction
+{   
+  public static String ID = "AddFieldAction"; 
+  
+  public AddFieldAction(IWorkbenchPart part)
+  {
+    super(part);
+    setId(ID);
+    setText("Add Field");  
+  }
+  
+  public void run()
+  {
+    if (getSelectedObjects().size() > 0)
+    {
+      Object o = getSelectedObjects().get(0);
+      IComplexType type = null;
+      
+      if (o instanceof IComplexType)
+      {  
+        type = (IComplexType)o; 
+      }
+      else if (o instanceof IField)
+      {
+        IField field = (IField)o;
+        type = field.getContainerType();
+      }
+      if (type != null)
+      {
+        Command command = ((IComplexType)type).getAddNewFieldCommand("");
+        if (command != null)
+        {  
+          getCommandStack().execute(command);
+          Adapter adapter = XSDAdapterFactory.getInstance().adapt(((BaseCommand)command).getAddedComponent());
+          if (adapter != null)
+            provider.setSelection(new StructuredSelection(adapter));
+        }
+        else
+        {
+           //TODO ... pop up a command not implemented message
+        }
+      }
+    }  
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/BaseSelectionAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/BaseSelectionAction.java
new file mode 100644
index 0000000..ee5c85f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/BaseSelectionAction.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * 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.xsd.adt.actions;
+
+import org.eclipse.gef.ui.actions.SelectionAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+
+public abstract class BaseSelectionAction extends SelectionAction
+{
+  public static final String SEPARATOR_ID = "org.eclipse.jface.action.Separator";
+  public static final String SUBMENU_START_ID = "SUBMENU_START_ID: ";
+  public static final String SUBMENU_END_ID = "SUBMENU_END_ID: ";
+
+  protected ISelectionProvider provider;
+  
+  public BaseSelectionAction(IWorkbenchPart part)
+  {
+    super(part);
+  }
+  
+  /* (non-Javadoc)
+   * @see org.eclipse.gef.ui.actions.SelectionAction#getSelection()
+   */
+  protected ISelection getSelection()
+  {
+    // always get selection from selection provider first
+    if (provider!=null)
+      return provider.getSelection();
+    
+    return super.getSelection();
+  }
+  /* (non-Javadoc)
+   * @see org.eclipse.gef.ui.actions.SelectionAction#setSelectionProvider(org.eclipse.jface.viewers.ISelectionProvider)
+   */
+  public void setSelectionProvider(ISelectionProvider provider)
+  {
+    super.setSelectionProvider(provider);
+    this.provider = provider;
+  }
+  
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.xsd.adt.actions.BaseSelectionAction#calculateEnabled()
+   */
+  protected boolean calculateEnabled()
+  {
+    if (getSelectedObjects().size() > 0)
+    {
+      Object o = getSelectedObjects().get(0);
+      if (o instanceof IComplexType)
+      {
+        return !((IComplexType)o).isReadOnly();
+      }
+      else if (o instanceof IField)
+      {
+        return !((IField)o).isReadOnly();
+      }
+    }
+    return true;
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/DeleteAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/DeleteAction.java
new file mode 100644
index 0000000..74bd725
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/DeleteAction.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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.xsd.adt.actions;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+public class DeleteAction extends BaseSelectionAction
+{
+  public final static String ID = "org.eclipse.wst.xsd.editor.DeleteAction"; 
+  public DeleteAction(IWorkbenchPart part)
+  {
+    super(part);
+    setText("Delete");
+    setId(ID);
+    setImageDescriptor(XSDEditorPlugin.getImageDescriptor("icons/delete_obj.gif") );
+  }
+  
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+    Command command = null;
+    boolean doReselect = false;
+    IModel model = null;
+    if (selection instanceof IComplexType)
+    {
+      command = ((IComplexType)selection).getDeleteCommand();
+      model = ((IComplexType)selection).getModel();
+      doReselect = true;
+    }
+    else if (selection instanceof IField)
+    {
+      model = ((IField)selection).getModel();
+      if ( ((IField)selection).isGlobal())
+      {
+        doReselect = true;
+      }
+      command = ((IField)selection).getDeleteCommand();
+    }  
+    if (command != null)
+    {
+      command.execute();
+      if (model != null && doReselect)
+        provider.setSelection(new StructuredSelection(model));
+    }  
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/SetInputToGraphView.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/SetInputToGraphView.java
new file mode 100644
index 0000000..573f5ae
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/SetInputToGraphView.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * 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.xsd.adt.actions;
+
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.RootEditPart;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.xsd.adt.design.DesignViewGraphicalViewer;
+import org.eclipse.wst.xsd.adt.design.editparts.RootContentEditPart;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+
+public class SetInputToGraphView extends BaseSelectionAction
+{
+  public static String ID = "SetAsFocus";
+  IEditorPart editorPart;
+
+  public SetInputToGraphView(IWorkbenchPart part)
+  {
+    super(part);
+    setId(ID);
+    setText("Set As Focus");
+    if (part instanceof IEditorPart)
+    {
+      editorPart = (IEditorPart)part;
+    }  
+  }
+
+  protected boolean calculateEnabled()
+  {
+    return true;
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+    Object adapter = getWorkbenchPart().getAdapter(GraphicalViewer.class);
+
+    if (selection instanceof IComplexType)
+    {
+      IComplexType type = (IComplexType) selection;
+
+      if (adapter instanceof DesignViewGraphicalViewer)
+      {
+        DesignViewGraphicalViewer graphicalViewer = (DesignViewGraphicalViewer) adapter;
+        RootEditPart rootEditPart = graphicalViewer.getRootEditPart();
+        EditPart editPart = rootEditPart.getContents();
+        if (editPart instanceof RootContentEditPart)
+        {
+          if (editorPart != null)
+          {          
+            PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getNavigationHistory().markLocation(editorPart);
+          }  
+          ((RootContentEditPart) editPart).setInput(type);
+          ((RootContentEditPart) editPart).refresh();          
+          if (editorPart != null)
+          {
+            PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getNavigationHistory().markLocation(editorPart);
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/ShowPropertiesViewAction.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/ShowPropertiesViewAction.java
new file mode 100644
index 0000000..7752efc
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/actions/ShowPropertiesViewAction.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * 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.xsd.adt.actions;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+
+/**
+ * Show the properties view in the current perspective.
+ */
+public class ShowPropertiesViewAction extends BaseSelectionAction
+{
+	public static final String ID = "org.eclipse.wst.xsd.adt.actions.ShowPropertiesViewAction"; //$NON-NLS-1$
+	public static final String PROPERTIES_VIEW_ID = "org.eclipse.ui.views.PropertySheet"; //$NON-NLS-1$
+	
+  protected static ImageDescriptor enabledImage, disabledImage;
+
+	public ShowPropertiesViewAction(IWorkbenchPart part)
+  {
+		super(part);
+		setId(ID);
+		setText("Show properties");
+		setToolTipText(getText());
+    setImageDescriptor(XSDEditorPlugin.getImageDescriptor("icons/elcl16/showproperties_obj.gif") );
+	  setDisabledImageDescriptor(XSDEditorPlugin.getImageDescriptor("icons/dlcl16/showproperties_obj.gif") );
+	}
+  
+  protected boolean calculateEnabled()
+  {
+    return true;
+  }
+  
+  public void run()
+  {
+    try
+    {
+      getWorkbenchPart().getSite().getPage().showView(PROPERTIES_VIEW_ID);
+    }
+    catch (PartInitException pie)
+    {
+
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewContextMenuProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewContextMenuProvider.java
new file mode 100644
index 0000000..67d6529
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewContextMenuProvider.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * 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.xsd.adt.design;
+
+import org.eclipse.gef.ContextMenuProvider;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartViewer;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+
+
+public class DesignViewContextMenuProvider extends ContextMenuProvider
+{
+  IEditorPart editor;  
+  ISelectionProvider selectionProvider;
+
+  /**
+   * Constructor for GraphContextMenuProvider.
+   * 
+   * @param selectionProvider
+   * @param editor
+   */
+  public DesignViewContextMenuProvider(IEditorPart editor, EditPartViewer viewer, ISelectionProvider selectionProvider)
+  {
+    super(viewer);
+    this.editor = editor;
+    this.selectionProvider = selectionProvider;
+  }
+
+  /**
+   * @see org.eclipse.gef.ui.parts.ContextMenuProvider#buildContextMenu(org.eclipse.jface.action.IMenuManager,
+   *      org.eclipse.gef.EditPartViewer)
+   */
+  public void buildContextMenu(IMenuManager menu)
+  {
+    IMenuManager currentMenu = menu;
+    menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+    ActionRegistry registry = getEditorActionRegistry();
+    ISelection selection = selectionProvider.getSelection();
+    
+    if (selection != null)
+    {
+      Object selectedObject = ((StructuredSelection) selection).getFirstElement();
+      
+      // Convert editparts to model objects as selections 
+      if (selectedObject instanceof EditPart)
+      {
+        selectedObject = ((EditPart)selectedObject).getModel();
+      }
+
+      if (selectedObject instanceof IActionProvider)
+      {
+        IActionProvider actionProvider = (IActionProvider) selectedObject;
+
+        String[] actions = actionProvider.getActions(null);
+        for (int i = 0; i < actions.length; i++)
+        {
+          String id = actions[i];
+          if (id.startsWith(BaseSelectionAction.SUBMENU_START_ID))
+          {
+            String text = id.substring(BaseSelectionAction.SUBMENU_START_ID.length());
+            IMenuManager subMenu = new MenuManager(text);
+            currentMenu.add(subMenu);
+            currentMenu = subMenu;
+          }
+          else if (id.startsWith(BaseSelectionAction.SUBMENU_END_ID))
+          {
+            currentMenu = getParentMenu(menu, currentMenu);
+          }
+          else if (id.equals(BaseSelectionAction.SEPARATOR_ID))
+          {
+            currentMenu.add(new Separator());
+          }
+          else
+          {
+            IAction action = registry.getAction(id);
+            if (action != null)
+            { 
+              action.isEnabled();
+              currentMenu.add(action);
+            }
+          }
+        }
+        menu.add(new Separator());       
+        menu.add(new Separator("refactoring-slot")); 
+        menu.add(new Separator());       
+        menu.add(new Separator("search-slot"));       
+        menu.add(new Separator());
+      }
+    }    
+    menu.add(new Separator());
+    //menu.add(registry.getAction("org.eclipse.wst.xsd.DeleteAction"));
+    //menu.add(new Separator());
+    //ShowPropertiesViewAction showPropertiesAction = (ShowPropertiesViewAction) registry.getAction(ShowPropertiesViewAction.ACTION_ID);
+    //showPropertiesAction.setPage(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage());
+    //menu.add(showPropertiesAction);
+  }
+
+  protected IMenuManager getParentMenu(IMenuManager root, IMenuManager child) {
+    IMenuManager parent = null;
+    
+    IContributionItem[] kids = root.getItems();
+    int index = 0;
+    while (index < kids.length && parent == null) {
+      IContributionItem item = kids[index];
+      if (item.equals(child)) {
+        parent = root;
+      }
+      else {
+        if (item instanceof IMenuManager) {
+          parent = getParentMenu((IMenuManager) item, child);
+        }
+      }
+      index++;
+    }
+    
+    return parent;
+  }
+
+  protected ActionRegistry getEditorActionRegistry()
+  {
+    return (ActionRegistry) editor.getAdapter(ActionRegistry.class);
+  }
+  protected CommandStack commandStack;
+
+  protected CommandStack getCommandStack()
+  {
+    if (commandStack == null)
+      commandStack = getViewer().getEditDomain().getCommandStack();
+    return commandStack;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewGraphicalViewer.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewGraphicalViewer.java
new file mode 100644
index 0000000..2716912
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/DesignViewGraphicalViewer.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * 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.xsd.adt.design;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.wst.xsd.adt.design.editparts.RootContentEditPart;
+import org.eclipse.wst.xsd.adt.editor.ADTSelectionManager;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+
+public class DesignViewGraphicalViewer extends ScrollingGraphicalViewer implements ISelectionChangedListener
+{
+  protected ADTSelectionChangedListener internalSelectionProvider = new ADTSelectionChangedListener();
+
+  public DesignViewGraphicalViewer(IEditorPart editor, ADTSelectionManager manager)
+  {
+    super();
+    setContextMenu(new DesignViewContextMenuProvider(editor, this, this));
+    editor.getEditorSite().registerContextMenu("org.eclipse.wst.xsd.ui.popup.graph", getContextMenu(), internalSelectionProvider, false);
+    
+    // make the internalSelectionProvider listen to graph view selection changes
+    addSelectionChangedListener(internalSelectionProvider);    
+    internalSelectionProvider.addSelectionChangedListener(manager);
+  }
+  
+
+  // this method is called when something changes in the selection manager
+  // (e.g. a selection occured from another view)
+  public void selectionChanged(SelectionChangedEvent event)
+  {
+    Object selectedObject = ((StructuredSelection) event.getSelection()).getFirstElement();
+    
+    // TODO (cs) It seems like there's way more selection going on than there should
+    // be!!  There's at least 2 selections getting fired when something is selected in the
+    // outline view.  Are we listening to too many things?
+    //
+    //if (event.getSource() instanceof ADTContentOutlinePage)
+    if (event.getSource() != internalSelectionProvider)
+    {
+      if (selectedObject instanceof IStructure)
+      {
+        ((RootContentEditPart) getContents()).setInput(selectedObject);
+      }
+      else if (selectedObject instanceof IField)
+      {
+        IField field = (IField)selectedObject;
+        if (field.isGlobal())
+        {  
+          ((RootContentEditPart) getContents()).setInput(selectedObject);
+        }
+      }
+      else if (selectedObject instanceof IModel)
+      {
+        IModel model = (IModel)selectedObject;
+        if (model.getTypes().size() > 0)
+        {  
+          selectedObject = model.getTypes().get(0);
+          ((RootContentEditPart) getContents()).setInput(selectedObject);
+        }  
+        EditPart editPart = getEditPart(getRootEditPart(), selectedObject);
+        if (editPart != null)
+          setSelection(new StructuredSelection(editPart));
+        else
+          setInput(null);
+        return;
+      }
+      
+      EditPart editPart = getEditPart(getRootEditPart(), selectedObject);
+      if (editPart != null)
+        setSelection(new StructuredSelection(editPart));
+    }
+  }
+  
+  /*
+   * We need to convert from edit part selections to model object selections
+   */
+  class ADTSelectionChangedListener implements ISelectionProvider, ISelectionChangedListener
+  {
+    protected List listenerList = new ArrayList();
+    protected ISelection selection = new StructuredSelection();
+
+    public void addSelectionChangedListener(ISelectionChangedListener listener)
+    {
+      listenerList.add(listener);
+    }
+
+    public void removeSelectionChangedListener(ISelectionChangedListener listener)
+    {
+      listenerList.remove(listener);
+    }
+
+    public ISelection getSelection()
+    {
+      return selection;
+    }
+
+    protected void notifyListeners(SelectionChangedEvent event)
+    {
+      for (Iterator i = listenerList.iterator(); i.hasNext();)
+      {
+        ISelectionChangedListener listener = (ISelectionChangedListener) i.next();
+        listener.selectionChanged(event);
+      }
+    }
+
+    public StructuredSelection convertSelectionFromEditPartToModel(ISelection editPartSelection)
+    {
+      List selectedModelObjectList = new ArrayList();
+      if (editPartSelection instanceof IStructuredSelection)
+      {
+        for (Iterator i = ((IStructuredSelection) editPartSelection).iterator(); i.hasNext();)
+        {
+          Object obj = i.next();
+          Object model = null;
+          if (obj instanceof EditPart)
+          {
+            EditPart editPart = (EditPart) obj;
+            model = editPart.getModel();
+          }
+          if (model != null)
+          {
+            selectedModelObjectList.add(model);
+          }
+        }
+      }
+      return new StructuredSelection(selectedModelObjectList);
+    }
+
+    public void setSelection(ISelection selection)
+    {
+      this.selection = selection;
+    }
+
+    public void selectionChanged(SelectionChangedEvent event)
+    {
+      ISelection newSelection = convertSelectionFromEditPartToModel(event.getSelection());
+      this.selection = newSelection;
+      SelectionChangedEvent newEvent = new SelectionChangedEvent(this, newSelection);
+      notifyListeners(newEvent);
+    }
+  }
+  
+  protected EditPart getEditPart(EditPart parent, Object object)
+  {
+    EditPart result = null;
+    for (Iterator i = parent.getChildren().iterator(); i.hasNext(); )
+    {
+      EditPart editPart = (EditPart)i.next();
+      if (editPart.getModel() == object)
+      {  
+        result = editPart;
+        break;
+      }
+    }             
+  
+    if (result == null)
+    { 
+      for (Iterator i = parent.getChildren().iterator(); i.hasNext(); )
+      {
+        EditPart editPart = getEditPart((EditPart)i.next(), object);
+        if (editPart != null)
+        {
+          result = editPart;
+          break;
+        }
+      }            
+    }
+  
+    return result;
+  }
+  
+  public void setInput(IADTObject object)
+  {
+    ((RootContentEditPart)getRootEditPart().getContents()).setInput(object);
+  }
+  
+  public IADTObject getInput()
+  {
+    return (IADTObject)((RootContentEditPart)getRootEditPart().getContents()).getInput();    
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/IAnnotationProvider.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/IAnnotationProvider.java
index 24a0537..e11e149 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/IAnnotationProvider.java
@@ -1,17 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.editparts;
+package org.eclipse.wst.xsd.adt.design;
 
-public interface IFeedbackHandler
+public interface IAnnotationProvider
 {
-  public void addFeedback();
-  public void removeFeedback();
-}              
\ No newline at end of file
+  String getNameAnnotationString();
+  String getNameAnnotationToolTipString();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ADTComboBoxCellEditor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ADTComboBoxCellEditor.java
new file mode 100644
index 0000000..2bad965
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ADTComboBoxCellEditor.java
@@ -0,0 +1,367 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.directedit;
+
+import java.text.MessageFormat;
+import org.eclipse.jface.util.Assert;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.TraverseEvent;
+import org.eclipse.swt.events.TraverseListener;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.wst.xsd.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+/*
+ * This is a copy of ComboBoxCellEditor.
+ * We need to apply and deactivate the combo on a single click (not on a double click like
+ * the ComboBoxCellEditor).
+ */
+public class ADTComboBoxCellEditor extends CellEditor
+{
+
+  /**
+   * The list of items to present in the combo box.
+   */
+  private String[] items;
+
+  /**
+   * The zero-based index of the selected item.
+   */
+  int selection;
+
+  /**
+   * The custom combo box control.
+   */
+  CCombo comboBox;
+
+  /**
+   * Used to determine if the value should be applied to the cell.
+   */
+  private boolean continueApply;
+
+  private Object selectedValue;
+  //private Object setObject;
+  private ComponentReferenceEditManager componentReferenceEditManager;
+
+  /**
+   * Default ComboBoxCellEditor style
+   */
+  private static final int defaultStyle = SWT.NONE;
+
+
+  /**
+   * Creates a new cell editor with a combo containing the given list of choices
+   * and parented under the given control. The cell editor value is the
+   * zero-based index of the selected item. Initially, the cell editor has no
+   * cell validator and the first item in the list is selected.
+   * 
+   * @param parent
+   *          the parent control
+   * @param items
+   *          the list of strings for the combo box
+   */
+  public ADTComboBoxCellEditor(Composite parent, String[] items, ComponentReferenceEditManager editManager)
+  {
+    super(parent, defaultStyle);
+    setItems(items);
+    componentReferenceEditManager = editManager;
+  }
+
+  /**
+   * Returns the list of choices for the combo box
+   * 
+   * @return the list of choices for the combo box
+   */
+  public String[] getItems()
+  {
+    return this.items;
+  }
+
+  /**
+   * Sets the list of choices for the combo box
+   * 
+   * @param items
+   *          the list of choices for the combo box
+   */
+  public void setItems(String[] items)
+  {
+    Assert.isNotNull(items);
+    this.items = items;
+    populateComboBoxItems();
+  }
+
+  /*
+   * (non-Javadoc) Method declared on CellEditor.
+   */
+  protected Control createControl(Composite parent)
+  {
+
+    comboBox = new CCombo(parent, getStyle() | SWT.READ_ONLY);
+    comboBox.setFont(parent.getFont());
+
+    comboBox.addKeyListener(new KeyAdapter()
+    {
+      // hook key pressed - see PR 14201
+      public void keyPressed(KeyEvent e)
+      {
+        keyReleaseOccured(e);
+      }
+    });
+
+    comboBox.addSelectionListener(new SelectionAdapter()
+    {
+      public void widgetDefaultSelected(SelectionEvent event)
+      {
+        applyEditorValueAndDeactivate();
+      }
+
+      public void widgetSelected(SelectionEvent event)
+      {
+        Object newValue = null;
+        continueApply = true;
+        selection = comboBox.getSelectionIndex();
+        String stringSelection = items[selection];
+
+        if (stringSelection.equals("Browse..."))
+        {
+           newValue = invokeDialog(componentReferenceEditManager.getBrowseDialog());
+        }
+        else if (stringSelection.equals("New..."))
+        {
+           newValue = invokeDialog(componentReferenceEditManager.getNewDialog());
+        }
+
+        if (continueApply)
+        {
+          if (newValue == null)
+          {
+            int index = comboBox.getSelectionIndex();
+            if (index != -1)
+            {
+              selectedValue = comboBox.getItem(index);
+            }
+          }
+          else
+          {
+            selectedValue = newValue;
+          }
+
+          applyEditorValueAndDeactivate();
+        }
+      }
+    });
+
+    comboBox.addTraverseListener(new TraverseListener()
+    {
+      public void keyTraversed(TraverseEvent e)
+      {
+        if (e.detail == SWT.TRAVERSE_ESCAPE || e.detail == SWT.TRAVERSE_RETURN)
+        {
+          e.doit = false;
+        }
+      }
+    });
+
+    comboBox.addFocusListener(new FocusAdapter()
+    {
+      public void focusLost(FocusEvent e)
+      {
+        ADTComboBoxCellEditor.this.focusLost();
+      }
+    });
+    return comboBox;
+  }
+
+  private Object invokeDialog(IComponentDialog dialog)
+  {
+    Object newValue = null;
+
+    if (dialog == null)
+    {
+      return null;
+    }
+
+    //dialog.setInitialComponent(setObject);
+    if (dialog.createAndOpen() == Window.OK)
+    {
+      newValue = dialog.getSelectedComponent();
+    }
+    else
+    {
+      continueApply = false;
+    }
+
+    return newValue;
+  }
+
+  /**
+   * The <code>ComboBoxCellEditor</code> implementation of this
+   * <code>CellEditor</code> framework method returns the zero-based index of
+   * the current selection.
+   * 
+   * @return the zero-based index of the current selection wrapped as an
+   *         <code>Integer</code>
+   */
+  protected Object doGetValue()
+  {
+    return new Integer(selection);
+  }
+
+  /*
+   * (non-Javadoc) Method declared on CellEditor.
+   */
+  protected void doSetFocus()
+  {
+    comboBox.setFocus();
+  }
+
+  /**
+   * The <code>ComboBoxCellEditor</code> implementation of this
+   * <code>CellEditor</code> framework method sets the minimum width of the
+   * cell. The minimum width is 10 characters if <code>comboBox</code> is not
+   * <code>null</code> or <code>disposed</code> eles it is 60 pixels to make
+   * sure the arrow button and some text is visible. The list of CCombo will be
+   * wide enough to show its longest item.
+   */
+  public LayoutData getLayoutData()
+  {
+    LayoutData layoutData = super.getLayoutData();
+    if ((comboBox == null) || comboBox.isDisposed())
+      layoutData.minimumWidth = 60;
+    else
+    {
+      // make the comboBox 10 characters wide
+      GC gc = new GC(comboBox);
+      layoutData.minimumWidth = (gc.getFontMetrics().getAverageCharWidth() * 10) + 10;
+      gc.dispose();
+    }
+    return layoutData;
+  }
+
+  /**
+   * The <code>ComboBoxCellEditor</code> implementation of this
+   * <code>CellEditor</code> framework method accepts a zero-based index of a
+   * selection.
+   * 
+   * @param value
+   *          the zero-based index of the selection wrapped as an
+   *          <code>Integer</code>
+   */
+  protected void doSetValue(Object value)
+  {
+    Assert.isTrue(comboBox != null && (value instanceof Integer));
+    selection = ((Integer) value).intValue();
+    comboBox.select(selection);
+  }
+
+  /**
+   * Updates the list of choices for the combo box for the current control.
+   */
+  private void populateComboBoxItems()
+  {
+    if (comboBox != null && items != null)
+    {
+      comboBox.removeAll();
+      for (int i = 0; i < items.length; i++)
+        comboBox.add(items[i], i);
+
+      setValueValid(true);
+      selection = 0;
+    }
+  }
+
+  /**
+   * Applies the currently selected value and deactiavates the cell editor
+   */
+  void applyEditorValueAndDeactivate()
+  {
+    // must set the selection before getting value
+    selection = comboBox.getSelectionIndex();
+    Object newValue = doGetValue();
+    markDirty();
+    boolean isValid = isCorrect(newValue);
+    setValueValid(isValid);
+    if (!isValid)
+    {
+      // try to insert the current value into the error message.
+      setErrorMessage(MessageFormat.format(getErrorMessage(), new Object[] { items[selection] }));
+    }
+    fireApplyEditorValue();
+    deactivate();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.jface.viewers.CellEditor#focusLost()
+   */
+  protected void focusLost()
+  {
+    if (isActivated())
+    {
+      applyEditorValueAndDeactivate();
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.jface.viewers.CellEditor#keyReleaseOccured(org.eclipse.swt.events.KeyEvent)
+   */
+  protected void keyReleaseOccured(KeyEvent keyEvent)
+  {
+    if (keyEvent.character == '\u001b')
+    { // Escape character
+      fireCancelEditor();
+    }
+    else if (keyEvent.character == '\t')
+    { // tab key
+      applyEditorValueAndDeactivate();
+    }
+  }
+
+  //public void setSetObject(Object object)
+  //{
+  //  setObject = object;
+  //}
+
+  public Object getSelectedValue()
+  {
+    return selectedValue;
+  }
+
+  /*
+   * TODO: rmah: This should be moved to WSDLEditorPlugin.java
+   */
+  private IEditorPart getActiveEditor()
+  {
+    IWorkbench workbench = XSDEditorPlugin.getDefault().getWorkbench();
+    IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+    IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+
+    return editorPart;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ComboBoxCellEditorManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ComboBoxCellEditorManager.java
new file mode 100644
index 0000000..c919aec
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ComboBoxCellEditorManager.java
@@ -0,0 +1,224 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.directedit;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.tools.CellEditorLocator;
+import org.eclipse.gef.tools.DirectEditManager;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ComboBoxCellEditor;
+import org.eclipse.jface.viewers.ICellEditorListener;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+
+public abstract class ComboBoxCellEditorManager extends DirectEditManager// implements
+                                                                          // DirectEditPolicyDelegate
+{
+  protected Label label;
+
+  public ComboBoxCellEditorManager(GraphicalEditPart source, Label label)
+  {
+    super(source, ComboBoxCellEditor.class, new InternalCellEditorLocator(label));
+    this.label = label;
+  }
+
+  protected void initCellEditor()
+  {
+    String initialLabelText = label.getText();
+
+    CCombo combo = (CCombo) getCellEditor().getControl();
+    combo.setFont(label.getFont());
+    combo.setForeground(label.getForegroundColor());
+    combo.setBackground(label.getBackgroundColor());
+    combo.setVisibleItemCount(20);
+
+    /*
+     * combo.addKeyListener(new KeyAdapter() { // hook key pressed - see PR
+     * 14201 public void keyPressed(KeyEvent keyEvent) { if (keyEvent.character ==
+     * 'z') { getCellEditor().applyEditorValue(); } } });
+     */
+    ICellEditorListener cellEditorListener = new ICellEditorListener()
+    {
+      public void cancelEditor()
+      {
+      }
+
+      public void applyEditorValue()
+      {
+      }
+
+      public void editorValueChanged(boolean old, boolean newState)
+      {
+      }
+    };
+    getCellEditor().addListener(cellEditorListener);
+
+    String[] item = combo.getItems();
+    for (int i = 0; i < item.length; i++)
+    {
+      if (item[i].equals(initialLabelText))
+      {
+        getCellEditor().setValue(new Integer(i));
+        break;
+      }
+    }
+  }
+
+  // hack... for some reason the ComboBoxCellEditor does't fire an
+  // editorValueChanged to set the dirty flag
+  // unless we overide this method to return true, the manager is not notified
+  // of changes made in the cell editor
+  protected boolean isDirty()
+  {
+    return true;
+  }
+
+  protected CellEditor createCellEditorOn(Composite composite)
+  {
+    boolean isLabelTextInList = false;
+    List list = computeComboContent();
+    for (Iterator i = list.iterator(); i.hasNext();)
+    {
+      String string = (String) i.next();
+      if (string.equals(label.getText()))
+      {
+        isLabelTextInList = true;
+        break;
+      }
+    }
+
+    if (!isLabelTextInList)
+    {
+      list.add(label.getText());
+    }
+
+    List sortedList = computeSortedList(list);
+    String[] stringArray = new String[sortedList.size()];
+    for (int i = 0; i < stringArray.length; i++)
+    {
+      stringArray[i] = (String) sortedList.get(i);
+    }
+    return createCellEditor(composite, stringArray);
+  }
+  
+  protected CellEditor createCellEditor(Composite composite, String[] stringArray)
+  {
+    return new ComboBoxCellEditor(composite, stringArray);    
+  }
+
+  protected List computeSortedList(List list)
+  {
+    return list;
+  }
+
+  protected abstract List computeComboContent();
+
+  protected abstract void performModify(Object value);
+
+  public static class InternalCellEditorLocator implements CellEditorLocator
+  {
+    protected Label label;
+
+    public InternalCellEditorLocator(Label label)
+    {
+      this.label = label;
+    }
+
+    public void relocate(CellEditor celleditor)
+    {
+      CCombo combo = (CCombo) celleditor.getControl();
+
+      // TODO: We're pulling a fast one here..... This is assuming we're using a
+      // CCombo as our widget
+      // Our eventual 'Combo' may not even use CCombo so this will most likely
+      // get replaced.
+      // int dropDownButtonSizeX = 16;
+
+      Rectangle labelParentBounds = label.getBounds().getCopy();
+      label.translateToAbsolute(labelParentBounds);
+
+      int x = labelParentBounds.x;
+      int y = labelParentBounds.y;
+      int widthK = labelParentBounds.width;
+      int height = labelParentBounds.height;
+      combo.setBounds(x, y + 1, widthK, height - 2);
+    }
+  }
+
+  // implements DirectEditPolicyDelegate
+  // 
+  public void performEdit(CellEditor cellEditor)
+  {
+    ADTComboBoxCellEditor comboCellEditor = (ADTComboBoxCellEditor) cellEditor;
+    CCombo combo = (CCombo) getCellEditor().getControl();
+    int index = combo.getSelectionIndex();
+    if (index != -1)
+    {
+      Object value = combo.getItem(index);
+      if (comboCellEditor.getSelectedValue() != null)
+      {
+        value = comboCellEditor.getSelectedValue();
+      }
+
+      performModify(value);
+    }
+    else
+    {
+      String typedValue = combo.getText();
+      if (combo.indexOf(typedValue) != -1)
+      {
+        performModify(typedValue);
+      }
+      else
+      {
+        String closeMatch = getCloseMatch(typedValue, combo.getItems());
+        if (closeMatch != null)
+        {
+          performModify(closeMatch);
+        }
+        else
+        {
+          Display.getCurrent().beep();
+        }
+      }
+    }
+  }
+
+  protected String getCloseMatch(String value, String[] items)
+  {
+    int matchIndex = -1;
+
+    for (int i = 0; i < items.length; i++)
+    {
+      String item = items[i];
+      String a = getLocalName(value);
+      String b = getLocalName(item);
+      if (a.equalsIgnoreCase(b))
+      {
+        matchIndex = i;
+        break;
+      }
+    }
+    return matchIndex != -1 ? items[matchIndex] : null;
+  }
+
+  protected String getLocalName(String string)
+  {
+    int index = string.indexOf(":");
+    return (index != -1) ? string.substring(index + 1) : string;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ElementReferenceDirectEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ElementReferenceDirectEditManager.java
new file mode 100644
index 0000000..1054a7c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/ElementReferenceDirectEditManager.java
@@ -0,0 +1,178 @@
+package org.eclipse.wst.xsd.adt.design.directedit;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.editor.XSDElementReferenceEditManager;
+
+public class ElementReferenceDirectEditManager extends ComboBoxCellEditorManager
+{
+  protected AbstractGraphicalEditPart editPart;
+  protected IField setObject;
+
+  public ElementReferenceDirectEditManager(IField parameter, AbstractGraphicalEditPart source, Label label)
+  {
+    super(source, label);
+    editPart = source;
+    setObject = parameter;
+  }
+
+  protected CellEditor createCellEditorOn(Composite composite)
+  {
+    return super.createCellEditorOn(composite);
+  }
+
+  protected List computeComboContent()
+  {
+    List list = new ArrayList();
+    ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+    if (editManager != null)
+    {
+       list.add("Browse...");
+       list.add("New...");
+       ComponentSpecification[] quickPicks = editManager.getQuickPicks();
+       if (quickPicks != null)
+       {
+         for (int i=0; i < quickPicks.length; i++)
+         {
+           ComponentSpecification componentSpecification = quickPicks[i];
+           list.add(componentSpecification.getName());
+         }  
+       }
+       ComponentSpecification[] history = editManager.getHistory();
+       if (history != null)
+       {
+         for (int i=0; i < history.length; i++)
+         {
+           ComponentSpecification componentSpecification = history[i];
+           list.add(componentSpecification.getName());
+         }  
+       }
+    } 
+    return list; 
+  }
+
+  protected ComponentSpecification getComponentSpecificationForValue(String value)
+  {
+    ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+    if (editManager != null)
+    {  
+      ComponentSpecification[] quickPicks = editManager.getQuickPicks();
+      if (quickPicks != null)
+      {
+        for (int i=0; i < quickPicks.length; i++)
+        {
+          ComponentSpecification componentSpecification = quickPicks[i];
+          if (value.equals(componentSpecification.getName()))
+          {
+            return componentSpecification;
+          }                
+        }  
+      }
+      ComponentSpecification[] history = editManager.getHistory();
+      if (history != null)
+      {
+        for (int i=0; i < history.length; i++)
+        {
+          ComponentSpecification componentSpecification = history[i];
+          if (value.equals(componentSpecification.getName()))
+          {  
+            return componentSpecification;
+          }
+        }  
+      }
+    }
+    return null;
+  }
+  
+  public void performModify(Object value)
+  {
+    ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+    if (editManager == null)
+    {
+      return;
+    }
+    
+    // our crude combo box can only work with 'String' objects
+    // if we get a String back we need to do some clever mapping to get the ComponentSpecification 
+    //    
+    if (value instanceof String)
+    {
+      value = getComponentSpecificationForValue((String)value);     
+    }  
+    // we assume the selected value is always of the form of a ComponentSpecification
+    // 
+    if (value instanceof ComponentSpecification)      
+    {
+      // we need to perform an asyncExec here since the 'host' editpart may be
+      // removed as a side effect of performing the action           
+      DelayedSetElementReferenceRunnable runnable = new DelayedSetElementReferenceRunnable(editManager, setObject, (ComponentSpecification)value);
+      //runnable.run();
+      Display.getCurrent().asyncExec(runnable);
+    }
+  }
+
+  protected List computeSortedList(List list)
+  {
+    // return TypesHelper.sortList(list);
+    return list;
+  }
+  
+  protected CellEditor createCellEditor(Composite composite, String[] stringArray)
+  {
+    ADTComboBoxCellEditor cellEditor = new ADTComboBoxCellEditor(composite, stringArray, getComponentReferenceEditManager());
+    //((ADTComboBoxCellEditor) cellEditor).setObjectToModify(setObject);
+    return cellEditor;
+  }
+
+  protected ComponentReferenceEditManager getComponentReferenceEditManager()
+  {
+    ComponentReferenceEditManager result = null;
+    IEditorPart editor = getActiveEditor();
+    if (editor != null)
+    {
+      result = (ComponentReferenceEditManager)editor.getAdapter(XSDElementReferenceEditManager.class);
+    }  
+    return result;
+  }
+  
+  private IEditorPart getActiveEditor()
+  {
+    IWorkbench workbench = PlatformUI.getWorkbench();
+    IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+    IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+    return editorPart;
+  }    
+  
+  protected static class DelayedSetElementReferenceRunnable implements Runnable
+  {
+    protected ComponentReferenceEditManager componentReferenceEditManager;
+    protected ComponentSpecification newValue;
+    protected IField field;
+
+    public DelayedSetElementReferenceRunnable(ComponentReferenceEditManager componentReferenceEditManager,
+    		IField setObject, ComponentSpecification selectedValue)
+    {
+      this.componentReferenceEditManager = componentReferenceEditManager;
+      newValue = selectedValue;
+      field = setObject;
+    }
+
+    public void run()
+    {
+      componentReferenceEditManager.modifyComponentReference(field, newValue);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelCellEditorLocator.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelCellEditorLocator.java
new file mode 100644
index 0000000..2e187eb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelCellEditorLocator.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.directedit;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.tools.CellEditorLocator;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.xsd.adt.design.editparts.BaseFieldEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.INamedEditPart;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+
+public class LabelCellEditorLocator implements CellEditorLocator
+{
+  private INamedEditPart namedEditPart;
+  private Point cursorLocation;
+
+  public LabelCellEditorLocator(INamedEditPart namedEditPart, Point cursorLocation)
+  {
+    this.namedEditPart = namedEditPart;
+    this.cursorLocation = cursorLocation;
+  }
+
+  public void relocate(CellEditor celleditor)
+  {
+    Text text = (Text) celleditor.getControl();
+    
+    if (text.getBounds().x <= 0)
+    {
+      Label label = namedEditPart.getNameLabelFigure();
+      
+      int widthToRemove = 0;
+      // HACK 
+      if (namedEditPart instanceof BaseFieldEditPart)
+      {
+        BaseFieldEditPart field = (BaseFieldEditPart)namedEditPart;
+        IFieldFigure fieldFigure = field.getFieldFigure();     
+        widthToRemove = fieldFigure.getTypeLabel().getBounds().width;       
+        //TODO: !! perhaps the IFieldFigure should just have a method to compute this?
+        //Label typeAnnotationLabel = ((FieldFigure) field.getFigure()).getTypeAnnotationLabel();
+        //Label nameAnnotationLabel = ((FieldFigure) field.getFigure()).getNameAnnotationLabel();
+        //widthToRemove = typeLabel.getBounds().width + typeAnnotationLabel.getBounds().width + nameAnnotationLabel.getBounds().width;
+      }
+      
+      Rectangle boundingRect = label.getTextBounds();
+
+      // Reduce the width by the amount we shifted along the x-axis
+      int delta = Math.abs(boundingRect.x - label.getParent().getBounds().x);
+
+      label.getParent().translateToAbsolute(boundingRect);
+      org.eclipse.swt.graphics.Rectangle trim = text.computeTrim(0, 0, 0, 0);
+      boundingRect.translate(trim.x, trim.y);
+      boundingRect.height = boundingRect.height - trim.y;
+
+      boundingRect.width = label.getParent().getBounds().width - delta - widthToRemove;
+      text.setBounds(boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height);
+
+      // Translate point
+      Point translatedPoint = new Point(cursorLocation.x - boundingRect.x, cursorLocation.y - boundingRect.y);
+
+      // Calculate text offset corresponding to the translated point
+      text.setSelection(0, 0);
+      int xCaret = text.getCaretLocation().x;
+      int offset = text.getCaretPosition();
+      while (xCaret < translatedPoint.x)
+      {
+        text.setSelection(offset + 1, offset + 1);
+        xCaret = text.getCaretLocation().x;
+        int newOffset = text.getCaretPosition();
+        if (newOffset == offset)
+        {
+          break;
+        }
+        offset++;
+      }
+      text.setSelection(offset, offset);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelEditManager.java
new file mode 100644
index 0000000..1b621eb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/LabelEditManager.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.directedit;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.tools.CellEditorLocator;
+import org.eclipse.gef.tools.DirectEditManager;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.part.CellEditorActionHandler;
+import org.eclipse.wst.xsd.adt.design.editparts.INamedEditPart;
+
+public class LabelEditManager extends DirectEditManager {
+
+	private IActionBars actionBars;
+	private CellEditorActionHandler actionHandler;
+	private IAction copy, cut, paste, undo, redo, find, selectAll, delete;
+	private Font scaledFont;
+
+	public LabelEditManager(GraphicalEditPart source, CellEditorLocator locator) {
+		super(source, null, locator);
+	}
+
+	/**
+	 * @see org.eclipse.gef.tools.DirectEditManager#bringDown()
+	 */
+	protected void bringDown() {
+		if (actionHandler != null) {
+			actionHandler.dispose();
+			actionHandler = null;
+		}
+		if (actionBars != null) {
+			restoreSavedActions(actionBars);
+			actionBars.updateActionBars();
+			actionBars = null;
+		}
+
+		Font disposeFont = scaledFont;
+		scaledFont = null;
+		super.bringDown();
+		if (disposeFont != null)
+			disposeFont.dispose();
+	}
+	
+	public void showFeedback() {
+//    super.showFeedback();
+		getEditPart().showSourceFeedback(getDirectEditRequest());
+	}
+
+	protected CellEditor createCellEditorOn(Composite composite) {
+		return new TextCellEditor(composite, SWT.SINGLE | SWT.WRAP);
+	}
+
+	protected void initCellEditor() {
+		Text text = (Text)getCellEditor().getControl();
+		Label label = ((INamedEditPart) getEditPart()).getNameLabelFigure();
+    
+		if (label != null) {
+			scaledFont = label.getFont();
+			
+			Color color = label.getBackgroundColor();
+			text.setBackground(color);
+			
+			String initialLabelText = label.getText();
+			getCellEditor().setValue(initialLabelText);
+		}
+		else {
+			scaledFont = label.getParent().getFont();
+			text.setBackground(label.getParent().getBackgroundColor());
+		}
+		
+		FontData data = scaledFont.getFontData()[0];
+		Dimension fontSize = new Dimension(0, data.getHeight());
+		label.getParent().translateToAbsolute(fontSize);
+		data.setHeight(fontSize.height);
+		scaledFont = new Font(null, data);
+		
+		text.setFont(scaledFont);
+//		text.selectAll();
+
+		// Hook the cell editor's copy/paste actions to the actionBars so that they can
+		// be invoked via keyboard shortcuts.
+		actionBars = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
+				.getActiveEditor().getEditorSite().getActionBars();
+		saveCurrentActions(actionBars);
+		actionHandler = new CellEditorActionHandler(actionBars);
+		actionHandler.addCellEditor(getCellEditor());
+		actionBars.updateActionBars();
+	}
+
+	private void restoreSavedActions(IActionBars actionBars){
+		actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), copy);
+		actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), paste);
+		actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), delete);
+		actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), selectAll);
+		actionBars.setGlobalActionHandler(ActionFactory.CUT.getId(), cut);
+		actionBars.setGlobalActionHandler(ActionFactory.FIND.getId(), find);
+		actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), undo);
+		actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), redo);
+	}
+
+	private void saveCurrentActions(IActionBars actionBars) {
+		copy = actionBars.getGlobalActionHandler(ActionFactory.COPY.getId());
+		paste = actionBars.getGlobalActionHandler(ActionFactory.PASTE.getId());
+		delete = actionBars.getGlobalActionHandler(ActionFactory.DELETE.getId());
+		selectAll = actionBars.getGlobalActionHandler(ActionFactory.SELECT_ALL.getId());
+		cut = actionBars.getGlobalActionHandler(ActionFactory.CUT.getId());
+		find = actionBars.getGlobalActionHandler(ActionFactory.FIND.getId());
+		undo = actionBars.getGlobalActionHandler(ActionFactory.UNDO.getId());
+		redo = actionBars.getGlobalActionHandler(ActionFactory.REDO.getId());
+	}
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/TypeReferenceDirectEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/TypeReferenceDirectEditManager.java
new file mode 100644
index 0000000..61daa07
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/directedit/TypeReferenceDirectEditManager.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.directedit;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.draw2d.Label;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.editor.XSDTypeReferenceEditManager;
+
+public class TypeReferenceDirectEditManager extends ComboBoxCellEditorManager
+{
+  protected AbstractGraphicalEditPart editPart;
+  protected IField setObject;
+
+  public TypeReferenceDirectEditManager(IField parameter, AbstractGraphicalEditPart source, Label label)
+  {
+    super(source, label);
+    editPart = source;
+    setObject = parameter;
+  }
+
+  protected CellEditor createCellEditorOn(Composite composite)
+  {
+    return super.createCellEditorOn(composite);
+  }
+
+  protected List computeComboContent()
+  {
+    List list = new ArrayList();
+    ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+    if (editManager != null)
+    {
+       list.add("Browse...");
+       list.add("New...");
+       ComponentSpecification[] quickPicks = editManager.getQuickPicks();
+       if (quickPicks != null)
+       {
+         for (int i=0; i < quickPicks.length; i++)
+         {
+           ComponentSpecification componentSpecification = quickPicks[i];
+           list.add(componentSpecification.getName());
+         }  
+       }
+       ComponentSpecification[] history = editManager.getHistory();
+       if (history != null)
+       {
+         for (int i=0; i < history.length; i++)
+         {
+           ComponentSpecification componentSpecification = history[i];
+           list.add(componentSpecification.getName());
+         }  
+       }
+    } 
+    return list; 
+  }
+
+  protected ComponentSpecification getComponentSpecificationForValue(String value)
+  {
+    ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+    if (editManager != null)
+    {  
+      ComponentSpecification[] quickPicks = editManager.getQuickPicks();
+      if (quickPicks != null)
+      {
+        for (int i=0; i < quickPicks.length; i++)
+        {
+          ComponentSpecification componentSpecification = quickPicks[i];
+          if (value.equals(componentSpecification.getName()))
+          {
+            return componentSpecification;
+          }                
+        }  
+      }
+      ComponentSpecification[] history = editManager.getHistory();
+      if (history != null)
+      {
+        for (int i=0; i < history.length; i++)
+        {
+          ComponentSpecification componentSpecification = history[i];
+          if (value.equals(componentSpecification.getName()))
+          {  
+            return componentSpecification;
+          }
+        }  
+      }
+    }
+    return null;
+  }
+  
+  public void performModify(Object value)
+  {
+    ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
+    if (editManager == null)
+    {
+      return;
+    }
+    
+    // our crude combo box can only work with 'String' objects
+    // if we get a String back we need to do some clever mapping to get the ComponentSpecification 
+    //    
+    if (value instanceof String)
+    {
+      value = getComponentSpecificationForValue((String)value);     
+    }  
+    // we assume the selected value is always of the form of a ComponentSpecification
+    // 
+    if (value instanceof ComponentSpecification)      
+    {
+      // we need to perform an asyncExec here since the 'host' editpart may be
+      // removed as a side effect of performing the action           
+      DelayedSetTypeRunnable runnable = new DelayedSetTypeRunnable(editManager, setObject, (ComponentSpecification)value);
+      //runnable.run();
+      Display.getCurrent().asyncExec(runnable);
+    }
+  }
+
+  protected List computeSortedList(List list)
+  {
+    // return TypesHelper.sortList(list);
+    return list;
+  }
+  
+  protected CellEditor createCellEditor(Composite composite, String[] stringArray)
+  {
+    ADTComboBoxCellEditor cellEditor = new ADTComboBoxCellEditor(composite, stringArray, getComponentReferenceEditManager());
+    //((ADTComboBoxCellEditor) cellEditor).setObjectToModify(setObject);
+    return cellEditor;
+  }
+
+  protected ComponentReferenceEditManager getComponentReferenceEditManager()
+  {
+    ComponentReferenceEditManager result = null;
+    IEditorPart editor = getActiveEditor();
+    if (editor != null)
+    {
+        result = (ComponentReferenceEditManager)editor.getAdapter(XSDTypeReferenceEditManager.class);
+    }  
+    return result;
+  }
+  
+  private IEditorPart getActiveEditor()
+  {
+    IWorkbench workbench = PlatformUI.getWorkbench();
+    IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+    IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+    return editorPart;
+  }    
+  
+  protected static class DelayedSetTypeRunnable implements Runnable
+  {
+    protected ComponentReferenceEditManager componentReferenceEditManager;
+    protected ComponentSpecification newValue;
+    protected IField field;
+
+    public DelayedSetTypeRunnable(ComponentReferenceEditManager componentReferenceEditManager, IField setObject, ComponentSpecification selectedValue)
+    {
+      this.componentReferenceEditManager = componentReferenceEditManager;
+      newValue = selectedValue;
+      field = setObject;
+    }
+
+    public void run()
+    {
+      componentReferenceEditManager.modifyComponentReference(field, newValue);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ADTEditPartFactory.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ADTEditPartFactory.java
new file mode 100644
index 0000000..b7b5f53
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ADTEditPartFactory.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.jface.util.Assert;
+import org.eclipse.wst.xsd.adt.design.editparts.model.AbstractModelCollection;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Compartment;
+import org.eclipse.wst.xsd.adt.design.editparts.model.FocusTypeColumn;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+
+public class ADTEditPartFactory implements EditPartFactory
+{
+  public EditPart createEditPart(EditPart context, Object model)
+  {
+    EditPart child = null;
+    if (model instanceof Compartment)
+    {
+      child = new CompartmentEditPart();
+    }      
+    else if (model instanceof AbstractModelCollection)
+    {
+      child = new ColumnEditPart();
+      if (model instanceof FocusTypeColumn)
+      {
+        ColumnEditPart columnEditPart = (ColumnEditPart)child;
+        columnEditPart.setSpacing(60);
+        columnEditPart.setMinorAlignment(ToolbarLayout.ALIGN_CENTER);
+      }  
+    }
+    else if (model instanceof IComplexType)
+    {
+      child = new ComplexTypeEditPart();
+    }
+    else if (model instanceof IStructure)
+    {
+      child = new StructureEditPart();
+    }  
+    else if (model instanceof IField)
+    {
+      if (context instanceof CompartmentEditPart)
+      {  
+        child = new FieldEditPart();
+      }
+      else
+      {
+        child = new TopLevelFieldEditPart();
+      }  
+    }
+    else if (model instanceof IModel)
+    {
+      child = new RootContentEditPart();
+    }
+
+    checkChild(child, model);
+
+    return child;
+  }
+
+  /**
+   * Subclasses can override and not check for null
+   * 
+   * @param child
+   * @param model
+   */
+  protected void checkChild(EditPart child, Object model)
+  {
+    if (child == null)
+    {
+      Thread.dumpStack();
+    }
+    Assert.isNotNull(child);
+    child.setModel(model);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseEditPart.java
new file mode 100644
index 0000000..86d4c10
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseEditPart.java
@@ -0,0 +1,156 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.gef.editparts.ScalableRootEditPart;
+import org.eclipse.gef.editparts.ZoomListener;
+import org.eclipse.gef.editparts.ZoomManager;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IFeedbackHandler;
+import org.eclipse.wst.xsd.adt.design.figures.IFigureFactory;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+
+public abstract class BaseEditPart extends AbstractGraphicalEditPart implements IActionProvider, IADTObjectListener, IFeedbackHandler
+{
+  protected static final String[] EMPTY_ACTION_ARRAY = {};
+ 
+  public IFigureFactory getFigureFactory()
+  {
+    EditPartFactory factory = getViewer().getEditPartFactory();
+    Assert.isTrue(factory instanceof IFigureFactory, "EditPartFactory must be an instanceof of IFigureFactory");    
+    return (IFigureFactory)factory; 
+  }
+  
+  public String[] getActions(Object object)
+  {
+    Object model = getModel();
+    if (model instanceof IActionProvider)
+    {
+      return ((IActionProvider)model).getActions(object);
+    }  
+    return EMPTY_ACTION_ARRAY;
+  }
+  
+  protected void addActionsToList(List list, IAction[] actions)
+  {
+    for (int i = 0; i < actions.length; i++)
+    {
+      list.add(actions[i]);
+    }  
+  }
+  
+  public void activate()
+  {
+    super.activate();
+    Object model = getModel();
+    if (model instanceof IADTObject)
+    {
+      IADTObject object = (IADTObject)model;
+      object.registerListener(this);
+    }
+    
+    if (getZoomManager() != null)
+      getZoomManager().addZoomListener(zoomListener);
+
+  }
+  
+  public void deactivate()
+  {
+    try
+    {
+    Object model = getModel();
+    if (model instanceof IADTObject)
+    {
+      IADTObject object = (IADTObject)model;
+      object.unregisterListener(this);
+    }   
+    
+    if (getZoomManager() != null)
+      getZoomManager().removeZoomListener(zoomListener);    
+    }
+    finally
+    {
+      super.deactivate();
+    }  
+  }  
+  
+  public void propertyChanged(Object object, String property)
+  {
+    refresh();
+  }
+  
+  public void refresh() {
+    super.refresh();
+
+    // Tell our children to refresh (note, this is NOT the function of 
+    // refreshChildren(), strangely enough)
+    for(Iterator i = getChildren().iterator(); i.hasNext(); )
+    {
+      Object obj = i.next();
+      if (obj instanceof BaseEditPart)
+      {
+        ((BaseEditPart)obj).refresh();
+      }
+      else if (obj instanceof AbstractGraphicalEditPart)
+      {
+        ((AbstractGraphicalEditPart)obj).refresh();
+      }
+      
+    }
+  }
+
+  public void addFeedback()
+  {
+  }
+
+  public void removeFeedback()
+  {
+  }
+  
+  public ZoomManager getZoomManager()
+  {
+    return ((ScalableRootEditPart)getRoot()).getZoomManager();
+  }
+  
+  public Rectangle getZoomedBounds(Rectangle r)
+  {
+    double factor = getZoomManager().getZoom();
+    int x = (int)Math.round(r.x * factor);
+    int y = (int)Math.round(r.y * factor);
+    int width = (int)Math.round(r.width * factor);
+    int height = (int)Math.round(r.height * factor);
+
+    return new Rectangle(x, y, width, height);
+  }
+  
+  private ZoomListener zoomListener = new ZoomListener()
+  {
+    public void zoomChanged(double zoom)
+    {
+      handleZoomChanged();
+    }
+  };
+
+  protected void handleZoomChanged()
+  {
+    refreshVisuals();
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseFieldEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseFieldEditPart.java
new file mode 100644
index 0000000..7a46fce
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseFieldEditPart.java
@@ -0,0 +1,359 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.DragTracker;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.gef.requests.DirectEditRequest;
+import org.eclipse.gef.requests.LocationRequest;
+import org.eclipse.wst.xsd.adt.design.directedit.ComboBoxCellEditorManager;
+import org.eclipse.wst.xsd.adt.design.directedit.ElementReferenceDirectEditManager;
+import org.eclipse.wst.xsd.adt.design.directedit.LabelCellEditorLocator;
+import org.eclipse.wst.xsd.adt.design.directedit.LabelEditManager;
+import org.eclipse.wst.xsd.adt.design.directedit.TypeReferenceDirectEditManager;
+import org.eclipse.wst.xsd.adt.design.editparts.model.FocusTypeColumn;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTDirectEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editpolicies.IADTUpdateCommand;
+import org.eclipse.wst.xsd.adt.design.figures.IFieldFigure;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDElementDeclarationAdapter;
+
+public class BaseFieldEditPart extends BaseTypeConnectingEditPart implements INamedEditPart
+{
+  protected TypeReferenceConnection connectionFigure;
+  protected ADTDirectEditPolicy adtDirectEditPolicy = new ADTDirectEditPolicy();
+  TypeUpdateCommand typeUpdateCommand = new TypeUpdateCommand();
+  ElementReferenceUpdateCommand elementUpdateCommand = new ElementReferenceUpdateCommand();
+  
+  protected IFigure createFigure()
+  {          
+    IFieldFigure figure = getFigureFactory().createFieldFigure(getModel());    
+    figure.setForegroundColor(ColorConstants.black);
+    return figure;
+  }
+  
+  public IFieldFigure getFieldFigure()
+  {
+    return (IFieldFigure)figure;
+  }
+  
+
+  public void activate()
+  {
+    super.activate();
+    activateConnection();
+  }
+  
+  public void deactivate()
+  {
+    deactivateConnection();
+    super.deactivate();
+  }
+
+  protected boolean shouldDrawConnection()
+  {
+    boolean result = false;
+    
+    // For now we only want to produce outbound lines from a Field to a Type
+    // when the field in contained in the 'focus' edit part    
+    for (EditPart parent = getParent(); parent != null; parent = parent.getParent())
+    {  
+      if (parent.getModel() instanceof FocusTypeColumn)
+      {        
+        result = true;
+        break;
+      }  
+    }    
+    return result;
+  }
+  
+  public TypeReferenceConnection createConnectionFigure()
+  {
+    connectionFigure = null;
+    IField field = (IField)getModel();
+    IType type = field.getType();
+    if (type != null) // && type.isComplexType())
+    {      
+      AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart)getViewer().getEditPartRegistry().get(type);
+      if (referenceTypePart != null)
+      {
+        connectionFigure = new TypeReferenceConnection();
+
+        if (getFigure().getParent() == referenceTypePart.getFigure())
+        {
+          connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(getFigure(), CenteredConnectionAnchor.LEFT, 1)); 
+        }
+        else
+        {
+          connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(getFigure(), CenteredConnectionAnchor.RIGHT, 5));
+        }
+        int targetAnchorYOffset = 8;
+
+        connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(referenceTypePart.getFigure(), CenteredConnectionAnchor.HEADER_LEFT, 0, targetAnchorYOffset)); 
+        connectionFigure.setHighlight(false);
+      }
+    }    
+    return connectionFigure;
+  }
+
+
+  protected void createEditPolicies()
+  {
+    installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, adtDirectEditPolicy);
+    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+  }
+
+  public void refresh()
+  {
+    super.refresh();
+    
+    // todo... perhaps this is aggressive?
+    // really we only need to update the connection when the IType changes
+    
+    deactivateConnection();
+    activateConnection();      
+  }
+
+  protected void refreshVisuals()
+  {
+    super.refreshVisuals();
+    IFieldFigure figure = getFieldFigure();
+    IField field = (IField) getModel();
+    
+    figure.getNameLabel().setText(field.getName());
+    figure.getTypeLabel().setText(field.getTypeName());
+    figure.refreshVisuals(getModel());
+
+    figure.recomputeLayout();
+
+    ((GraphicalEditPart)getRoot()).getFigure().invalidateTree();
+  }
+
+  public DragTracker getDragTracker(Request request)
+  {
+    return super.getDragTracker(request);
+  }
+  
+  /*
+  public IAction[] getActions(Object object)
+  {
+    // when a FieldEditPart is selected it provides it's own actions
+    // as well as those of it's parent 'type' edit part
+    List list = new ArrayList();
+    EditPart compartment = getParent();
+    if (compartment != null)
+    {  
+      EditPart type = compartment.getParent();
+      if (type != null && type instanceof IActionProvider)
+      {
+        IActionProvider provider = (IActionProvider)type;
+        addActionsToList(list, provider.getActions(object));
+      }
+    }
+    addActionsToList(list, super.getActions(object));
+    IAction[] result = new IAction[list.size()];
+    list.toArray(result);
+    return result;
+  }*/
+  
+  public Label getNameLabelFigure()
+  {
+    return getFieldFigure().getNameLabel();
+  }
+
+  public void performDirectEdit(Point cursorLocation)
+  {
+    
+  }
+  
+  public void performRequest(Request request)
+  {  
+    if (request.getType() == RequestConstants.REQ_DIRECT_EDIT||
+        request.getType() == RequestConstants.REQ_OPEN)
+    {
+      IFieldFigure fieldFigure = getFieldFigure();
+      Object model = getModel();
+      if (request instanceof LocationRequest)
+      {
+        LocationRequest locationRequest = (LocationRequest)request;
+        Point p = locationRequest.getLocation();
+       
+        if (hitTest(fieldFigure.getTypeLabel(), p))
+        {
+          TypeReferenceDirectEditManager manager = new TypeReferenceDirectEditManager((IField)model, this, fieldFigure.getTypeLabel());
+          typeUpdateCommand.setDelegate(manager);
+          adtDirectEditPolicy.setUpdateCommand(typeUpdateCommand);
+          manager.show();
+        }
+        else if (hitTest(fieldFigure.getNameLabel(), p))
+        {
+        	if ( model instanceof XSDElementDeclarationAdapter ){
+        		XSDElementDeclarationAdapter elementDecAdapter = ((XSDElementDeclarationAdapter) model);
+        		if ( elementDecAdapter.isElementDeclarationReference() ){
+        			ElementReferenceDirectEditManager manager =
+        				new ElementReferenceDirectEditManager((IField)model, this, fieldFigure.getNameLabel());
+        			elementUpdateCommand.setDelegate(manager);
+        			adtDirectEditPolicy.setUpdateCommand(elementUpdateCommand);
+        			manager.show();
+        		}
+        		else {
+        			LabelEditManager manager = new LabelEditManager(this, new LabelCellEditorLocator(this, p));
+        			NameUpdateCommandWrapper wrapper = new NameUpdateCommandWrapper();
+        			adtDirectEditPolicy.setUpdateCommand(wrapper);
+        			manager.show();
+        		}
+        	}
+        }
+      }
+    }
+  }
+  
+  
+  class NameUpdateCommandWrapper extends Command implements IADTUpdateCommand
+  {
+    Command command;
+    protected DirectEditRequest request;
+    
+    public NameUpdateCommandWrapper()
+    {
+      super("Update Name");
+    }
+
+    public void setRequest(DirectEditRequest request)
+    {
+      this.request = request;
+    }
+    
+    public void execute()
+    {
+      IField field = (IField)getModel();
+      Object newValue = request.getCellEditor().getValue();
+      if (newValue instanceof String)
+      {
+        command = field.getUpdateNameCommand((String)newValue);
+      }
+      if (command != null)
+        command.execute();
+    }
+  }
+  
+  class TypeUpdateCommand extends Command implements IADTUpdateCommand
+  {
+    protected ComboBoxCellEditorManager delegate;
+    protected DirectEditRequest request;
+    
+    public TypeUpdateCommand()
+    {
+      super("Update type");
+    }
+
+    public void setDelegate(ComboBoxCellEditorManager delegate)
+    {                                           
+      this.delegate = delegate;
+    }
+    
+    public void setRequest(DirectEditRequest request)
+    {
+      this.request = request;
+    }
+    
+    public void execute()
+    {
+      if (delegate != null)
+      {
+        delegate.performEdit(request.getCellEditor());
+      }
+    }
+
+    public boolean canExecute()
+    {
+      return true;
+    }
+  }
+  
+  class ElementReferenceUpdateCommand extends Command implements IADTUpdateCommand
+  {
+	    protected ComboBoxCellEditorManager delegate;
+	    protected DirectEditRequest request;
+	    
+	    public ElementReferenceUpdateCommand()
+	    {
+	      super("Update element reference");
+	    }
+
+	    public void setDelegate(ComboBoxCellEditorManager delegate)
+	    {
+	      this.delegate = delegate;
+	    }
+
+	    public void setRequest(DirectEditRequest request)
+	    {
+	      this.request = request;
+	    }
+
+	    public void execute()
+	    {
+	      if (delegate != null)
+	      {
+	        delegate.performEdit(request.getCellEditor());
+	      }
+	    }
+
+	    public boolean canExecute()
+	    {
+	      return true;
+	    }
+  }
+
+
+  TypeReferenceConnection connectionFeedbackFigure;
+
+  public void addFeedback()
+  {
+    // Put back connection figure so it won't get overlayed by other non highlighted connections
+    if (connectionFigure != null)
+    {
+      connectionFeedbackFigure = new TypeReferenceConnection();
+      connectionFeedbackFigure.setSourceAnchor(connectionFigure.getSourceAnchor());
+      connectionFeedbackFigure.setTargetAnchor(connectionFigure.getTargetAnchor());
+      connectionFeedbackFigure.setHighlight(true);
+      getLayer(LayerConstants.FEEDBACK_LAYER).add(connectionFeedbackFigure);
+    }
+     super.addFeedback();
+     getFieldFigure().addSelectionFeedback();
+  }
+  
+  public void removeFeedback()
+  {
+    if (connectionFeedbackFigure != null)
+    {
+      connectionFeedbackFigure.setHighlight(false);
+      getLayer(LayerConstants.FEEDBACK_LAYER).remove(connectionFeedbackFigure);
+    }
+    connectionFeedbackFigure = null;
+    super.removeFeedback();
+    getFieldFigure().removeSelectionFeedback();
+  }
+}
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseTypeConnectingEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseTypeConnectingEditPart.java
new file mode 100644
index 0000000..bc74d6d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BaseTypeConnectingEditPart.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.requests.DirectEditRequest;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IFeedbackHandler;
+import org.eclipse.wst.xsd.adt.design.editpolicies.IADTUpdateCommand;
+import org.eclipse.wst.xsd.adt.facade.IType;
+
+/**
+ * This class provides some base function to enable drawing connections to a referenced type
+ *
+ */
+public abstract class BaseTypeConnectingEditPart extends BaseEditPart implements IFeedbackHandler
+{
+  private TypeReferenceConnection connectionFigure;  
+  
+  public void activate()
+  {
+    super.activate();
+    // TODO (cs) revisit this, perhaps has Randy for his advice
+    // it seems that the edit parts required for the target end of the connections
+    // are not always layed available when active is called.  So we need to delay
+    // the activateConnection() until a short time later.  For now the only way I can think
+    // of doing this is via an asyncExec.
+    //
+    Display.getCurrent().asyncExec(new Runnable()
+    {
+      public void run()
+      {
+        if (isActive())
+        {  
+          activateConnection();
+        }  
+      }
+    });   
+  }
+  
+  public void deactivate()
+  {
+    deactivateConnection();
+    super.deactivate();
+  }
+
+  protected void activateConnection()
+  {
+    // If appropriate, create our connectionFigure and add it to the appropriate layer
+    if (connectionFigure == null && shouldDrawConnection())
+    {
+      connectionFigure = createConnectionFigure();
+      if (connectionFigure != null)
+      {  
+        // Add our editpolicy as a listener on the connection, so it can stay in synch
+        //connectionFigure.addPropertyChangeListener((AttributeSelectionFeedbackPolicy) getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE));
+        //connectionFigure.addMouseListener(this);
+        getLayer(LayerConstants.CONNECTION_LAYER).add(connectionFigure);
+      }  
+    }
+  }
+  
+  protected void deactivateConnection()
+  {
+    // if we have a connection, remove it
+    if (connectionFigure != null)
+    {
+      getLayer(LayerConstants.CONNECTION_LAYER).remove(connectionFigure);
+      // Remove our editpolicy listener(s)
+      //connectionFigure.removePropertyChangeListener((AttributeSelectionFeedbackPolicy) getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE));
+      //connectionFigure.removeMouseListener(this);
+      connectionFigure = null;
+    }
+  }  
+  
+  protected boolean shouldDrawConnection()
+  {
+    return true;
+  }
+  
+  public abstract TypeReferenceConnection createConnectionFigure();
+  
+  public void addFeedback()
+  {
+    if (connectionFigure != null)
+    {
+      connectionFigure.setHighlight(true);
+    }
+  }
+  
+  public void removeFeedback()
+  {
+    if (connectionFigure != null)
+    {
+      connectionFigure.setHighlight(false);
+    }
+  }
+  
+  protected class NameUpdateCommandWrapper extends Command implements IADTUpdateCommand
+  {
+    Command command;
+    protected DirectEditRequest request;
+    
+    public NameUpdateCommandWrapper()
+    {
+      super("Update Name");
+    }
+
+    public void setRequest(DirectEditRequest request)
+    {
+      this.request = request;
+    }
+    
+    public void execute()
+    {
+      IType iType = (IType)getModel();
+      Object newValue = request.getCellEditor().getValue();
+      if (newValue instanceof String)
+      {
+        command = iType.getUpdateNameCommand((String)newValue);
+      }
+      if (command != null)
+        command.execute();
+    }
+  }
+
+  public boolean hitTest(IFigure target, Point location)
+  {
+    Rectangle b = target.getBounds().getCopy();
+    target.translateToAbsolute(b);  
+    return b.contains(location);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BoxEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BoxEditPart.java
new file mode 100644
index 0000000..60815cf
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/BoxEditPart.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import java.util.List;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Compartment;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.adt.typeviz.design.figures.BoxFigure;
+import org.eclipse.wst.xsd.adt.design.editpolicies.SimpleDirectEditPolicy;
+
+public abstract class BoxEditPart extends BaseTypeConnectingEditPart //IFeedbackHandler
+{  
+  protected List compartmentList = null;
+  protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
+
+  protected Compartment[] getCompartments()
+  {
+    return null;
+  }
+  
+  protected IFigure createFigure()
+  {
+    BoxFigure figure = new BoxFigure();
+    LineBorder boxLineBorder = new LineBorder(1);
+    figure.setBorder(boxLineBorder);    
+    ToolbarLayout toolbarLayout = new ToolbarLayout();
+    toolbarLayout.setStretchMinorAxis(true);
+    figure.setLayoutManager(toolbarLayout);
+    // we should organize ITreeElement and integrate it with the facade
+    if (getModel() instanceof ITreeElement)
+    {
+      figure.getNameLabel().setIcon(((ITreeElement)getModel()).getImage());
+    }
+    return figure;
+  }
+  
+  public IFigure getContentPane()
+  {
+    return ((BoxFigure)getFigure()).getContentPane();
+  }
+    
+  protected void createEditPolicies()
+  {
+    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+    installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
+  }
+  
+   
+  public void addFeedback()
+  {
+    BoxFigure boxFigure = (BoxFigure)figure;
+    LineBorder boxFigureLineBorder = (LineBorder)boxFigure.getBorder();
+    boxFigureLineBorder.setWidth(2);
+    boxFigureLineBorder.setColor(ColorConstants.darkBlue);  
+    boxFigure.getHeadingFigure().setSelected(true);
+    figure.repaint();
+    super.addFeedback();
+  }
+  
+  public void removeFeedback()
+  {
+    BoxFigure boxFigure = (BoxFigure)figure;
+    LineBorder boxFigureLineBorder = (LineBorder)boxFigure.getBorder();
+    boxFigureLineBorder.setWidth(1);
+    boxFigureLineBorder.setColor(ColorConstants.black);
+    boxFigure.getHeadingFigure().setSelected(false);
+    figure.repaint();
+    super.removeFeedback();    
+  }
+  
+  protected ActionRegistry getEditorActionRegistry(IEditorPart editor)
+  {
+    return (ActionRegistry) editor.getAdapter(ActionRegistry.class);
+  }
+}  
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CenteredConnectionAnchor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CenteredConnectionAnchor.java
new file mode 100644
index 0000000..3e19c6f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CenteredConnectionAnchor.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import org.eclipse.draw2d.AbstractConnectionAnchor;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.wst.xsd.editor.internal.design.figures.CenteredIconFigure;
+
+public class CenteredConnectionAnchor extends AbstractConnectionAnchor
+{
+  public static final int TOP = 0;
+  public static final int BOTTOM = 1;
+  public static final int LEFT = 2;
+  public static final int RIGHT = 3;
+
+  public static final int HEADER_LEFT = 4;
+  public static final int HEADER_RIGHT = 5;
+
+  private int location;
+  private int inset;
+  private int offset = 0;
+
+  public CenteredConnectionAnchor(IFigure owner, int location, int inset)
+  {
+    super(owner);
+    this.location = location;
+    this.inset = inset;
+  }
+
+  public CenteredConnectionAnchor(IFigure owner, int location, int inset, int offset)
+  {
+    this(owner, location, inset);
+    this.offset = offset;
+  }
+
+  public Point getLocation(Point reference)
+  {
+    Rectangle r = getOwner().getBounds();
+    int x, y;
+    switch (location)
+    {
+    case TOP:
+      x = r.right() - r.width / 2 + offset;
+      y = r.y + inset;
+      break;
+    case BOTTOM:
+      x = r.right() - r.width / 2 + offset;
+      y = r.bottom() - inset;
+      break;
+    case LEFT:
+      x = r.x + inset;
+      y = r.bottom() - r.height / 2 + offset;
+      break;
+    case RIGHT:
+      x = r.right() - inset;
+      y = r.bottom() - r.height / 2 + offset;
+      break;
+    case HEADER_LEFT:
+      x = r.x + inset;
+      y = r.y + offset;
+      break;
+    case HEADER_RIGHT:
+      x = r.right() - inset;
+      y = r.y + offset;
+      break;
+
+    default:
+      x = r.right() - r.width / 2;
+      y = r.bottom() - r.height / 2;
+    }
+    Point p = new Point(x, y);
+
+    if (!(getOwner() instanceof CenteredIconFigure))
+    {
+      getOwner().translateToAbsolute(p);
+    }
+    else
+    {
+      getOwner().translateToAbsolute(p);
+    }
+    return p;
+  }
+
+  public Point getReferencePoint()
+  {
+    return getLocation(null);
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ColumnEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ColumnEditPart.java
new file mode 100644
index 0000000..f6352ae
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ColumnEditPart.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import java.util.List;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.wst.xsd.adt.design.editparts.model.AbstractModelCollection;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+
+public class ColumnEditPart extends BaseEditPart
+{         
+  protected int spacing = 20;  
+  protected int minorAlignment = -1;
+  
+  protected IFigure createFigure()
+  {
+    Figure figure = new Figure();
+    ToolbarLayout layout = new ToolbarLayout(false);
+    if (minorAlignment != -1)
+    {  
+      layout.setMinorAlignment(minorAlignment);
+    }  
+    layout.setStretchMinorAxis(false);
+    layout.setSpacing(spacing);
+    figure.setLayoutManager(layout);
+    return figure;
+  }
+  
+  public void setSpacing(int spacing)
+  {
+    this.spacing = spacing;
+    if (figure != null)
+    {  
+      ((ToolbarLayout)figure.getLayoutManager()).setSpacing(spacing);
+    }  
+  }
+  
+  public IComplexType getComplexType()
+  {
+    return (IComplexType)getModel();   
+  }
+
+  protected void createEditPolicies()
+  {
+    // TODO Auto-generated method stub
+  }
+  
+  protected List getModelChildren()
+  { 
+    AbstractModelCollection collection = (AbstractModelCollection)getModel();
+    return collection.getChildren();
+  }
+
+  public int getMinorAlignment()
+  {
+    return minorAlignment;
+  }
+
+  public void setMinorAlignment(int minorAlignment)
+  {
+    this.minorAlignment = minorAlignment;
+  }
+}
+
+
+
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CompartmentEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CompartmentEditPart.java
new file mode 100644
index 0000000..b5724e0
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/CompartmentEditPart.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import java.util.List;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Annotation;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Compartment;
+import org.eclipse.wst.xsd.adt.design.figures.ICompartmentFigure;
+import org.eclipse.wst.xsd.adt.facade.IField;
+
+// TODO (cs) common-up with BoxEditPart (?)
+public class CompartmentEditPart extends BaseEditPart // implements
+                                                      // IFeedbackHandler
+{
+  Annotation annotation = new Annotation();
+
+  protected IFigure createFigure()
+  {
+    ICompartmentFigure figure = getFigureFactory().createCompartmentFigure(getModel());
+    return figure;
+  }
+
+  public IFigure getContentPane()
+  {
+    return getCompartmentFigure().getContentPane();
+  }
+
+  protected void createEditPolicies()
+  {
+    // installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new
+    // SelectionFeedbackEditPolicy(this));
+  }
+
+  protected void addChildVisual(EditPart childEditPart, int index)
+  {
+    Object model = childEditPart.getModel();
+
+    IFigure child = ((GraphicalEditPart) childEditPart).getFigure();
+
+    if (model instanceof IField)
+    {
+      getCompartmentFigure().getContentPane().add(child, index);
+      return;
+    }
+    else if (model instanceof Annotation)
+    {
+      getCompartmentFigure().getAnnotationPane().add(child);
+      return;
+    }
+    super.addChildVisual(childEditPart, index);
+  }
+
+  protected void removeChildVisual(EditPart childEditPart)
+  {
+    Object model = childEditPart.getModel();
+    IFigure child = ((GraphicalEditPart) childEditPart).getFigure();
+
+    if (model instanceof IField)
+    {
+      getCompartmentFigure().getContentPane().remove(child);
+      return;
+    }
+    else if (model instanceof Annotation)
+    {
+      getCompartmentFigure().getAnnotationPane().remove(child);
+      return;
+    }
+    super.removeChildVisual(childEditPart);
+  }
+
+  protected Compartment getCompartment()
+  {
+    return (Compartment) getModel();
+  }
+
+  protected List getModelChildren()
+  {
+    List children = getCompartment().getChildren();
+    children.add(annotation);
+    return children;
+  }
+  
+  public void setModel(Object model)
+  {
+    super.setModel(model);
+    annotation.setCompartment(getCompartment());
+  }
+
+  protected void refreshChildren()
+  {
+    super.refreshChildren();
+    // ((AbstractGraphicalEditPart)getParent()).getContentPane().invalidate();
+  }
+
+  protected void refreshVisuals()
+  {
+    super.refreshVisuals();
+  }
+
+  public void addFeedback()
+  {
+    // getFigure().setBackgroundColor(ColorConstants.blue);
+    // ((CompartmentFigure)getFigure()).setBorderColor(ColorConstants.black);
+    getFigure().repaint();
+  }
+
+  public void removeFeedback()
+  {
+    // getFigure().setBackgroundColor(ColorConstants.lightBlue);
+    // ((CompartmentFigure)getFigure()).setBorderColor(ColorConstants.lightGray);
+    getFigure().repaint();
+  }
+  
+  public ICompartmentFigure getCompartmentFigure()
+  {
+    return (ICompartmentFigure)figure;
+  }
+
+  public void addNotify()
+  {  
+    super.addNotify();
+    getCompartmentFigure().editPartAttached(this);   
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ComplexTypeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ComplexTypeEditPart.java
new file mode 100644
index 0000000..6445ee8
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/ComplexTypeEditPart.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.FocusTypeColumn;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IType;
+
+public class ComplexTypeEditPart extends StructureEditPart
+{   
+  protected boolean shouldDrawConnection()
+  {
+    if (getParent().getModel() instanceof FocusTypeColumn)
+    {  
+      IComplexType complexType = (IComplexType)getModel();
+      return complexType.getSuperType() != null;
+    } 
+    return false;
+  }
+  
+  public TypeReferenceConnection createConnectionFigure()
+  {
+    TypeReferenceConnection connectionFigure = null;
+    IComplexType complexType = (IComplexType)getModel();
+    IType type = complexType.getSuperType();
+    if (type != null && type.isComplexType())
+    {      
+      AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart)getViewer().getEditPartRegistry().get(type);
+      if (referenceTypePart != null)
+      {
+        connectionFigure = new TypeReferenceConnection();
+        // draw a line out from the top         
+        connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(getFigure(), CenteredConnectionAnchor.TOP, 1));
+        
+        // TODO (cs) need to draw the target anchor to look like a UML inheritance relationship
+        // adding a label to the connection would help to
+        connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(referenceTypePart.getFigure(), CenteredConnectionAnchor.BOTTOM, 0, 0)); 
+        connectionFigure.setHighlight(false);
+      }
+    }    
+    return connectionFigure;
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/FieldEditPart.java
similarity index 64%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/FieldEditPart.java
index ff6e4db..20d4377 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/FieldEditPart.java
@@ -1,18 +1,21 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.model;
+package org.eclipse.wst.xsd.adt.design.editparts;
 
 
-
-public interface ModelAdapterListener
-{                             
-  public void propertyChanged(Object object, String property);
+public class FieldEditPart extends BaseFieldEditPart
+{
+  public void addNotify()
+  {
+    super.addNotify();
+    getFieldFigure().editPartAttached(this);
+  }
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/INamedEditPart.java
similarity index 60%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/INamedEditPart.java
index ff6e4db..089b8b6 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/INamedEditPart.java
@@ -1,18 +1,21 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.model;
+package org.eclipse.wst.xsd.adt.design.editparts;
 
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
 
+public interface INamedEditPart
+{
+  public Label getNameLabelFigure();
 
-public interface ModelAdapterListener
-{                             
-  public void propertyChanged(Object object, String property);
+  public void performDirectEdit(Point cursorLocation);
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootContentEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootContentEditPart.java
new file mode 100644
index 0000000..a046556
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootContentEditPart.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Panel;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.wst.xsd.adt.design.editparts.model.FocusTypeColumn;
+import org.eclipse.wst.xsd.adt.design.editparts.model.ReferencedTypeColumn;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IComplexType;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.editor.internal.design.layouts.ContainerLayout;
+
+public class RootContentEditPart extends AbstractGraphicalEditPart
+{
+  List collections = null;
+  Figure contentPane;
+  
+  protected IFigure createFigure()
+  {    
+    Panel panel = new Panel();    
+    // why do we need to use a container layout? can we just set a
+    // margin border and get the same effect?
+    ContainerLayout clayout = new ContainerLayout();
+    clayout.setBorder(60);
+    panel.setLayoutManager(clayout);
+    
+    contentPane = new Figure();
+    panel.add(contentPane);
+        
+    ToolbarLayout layout = new ToolbarLayout(true);
+    layout.setStretchMinorAxis(false);
+    layout.setSpacing(100);
+    contentPane.setLayoutManager(layout);
+    return panel;
+  }
+  
+  public IFigure getContentPane()
+  {
+    return contentPane;
+  }
+  
+  
+  public IComplexType getSelectedComplexType()
+  {
+    IComplexType result = null;
+    IModel model = (IModel)getModel();
+    List types = model.getTypes();
+    if (types.size() > 0)
+    {
+      if (types.get(0) instanceof IComplexType) 
+        result = (IComplexType)types.get(0);
+    }  
+    return result;
+  }
+
+  protected void createEditPolicies()
+  {
+    // TODO Auto-generated method stub
+  }
+  
+  protected List getModelChildren()
+  { 
+    collections = new ArrayList();
+    if (getModel() != null)
+    {
+      Object obj = getModel();
+      IADTObject focusObject = null;
+      if (obj instanceof IStructure)
+      {
+        focusObject = (IStructure)obj;
+      }
+      else if (obj instanceof IField)
+      {
+        focusObject = (IField)obj;
+      }  
+      else if (obj instanceof IModel)
+      {
+        focusObject = getSelectedComplexType();
+      }
+      else if (obj instanceof IType)
+      {
+        if (((IType)obj).isFocusAllowed())
+        {
+          focusObject = (IType)obj;
+        }
+      }
+      if (focusObject != null)
+      {
+        collections.add(new FocusTypeColumn(focusObject));
+        collections.add(new ReferencedTypeColumn(focusObject));
+      }
+    }
+    return collections;
+  }
+  
+  public void setInput(Object component)
+  {
+    setModel(component);
+    refresh();
+  }
+  
+  public Object getInput()
+  {
+    return getModel();
+  }
+  
+  public void refresh()
+  {
+    super.refresh();
+    // the connections are not refreshed
+    for(Iterator i = getChildren().iterator(); i.hasNext(); )
+    {
+      Object obj = i.next();
+      if (obj instanceof AbstractGraphicalEditPart)
+      {
+        ((AbstractGraphicalEditPart)obj).refresh();
+      }
+    }
+
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootEditPart.java
new file mode 100644
index 0000000..ba0fcbb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/RootEditPart.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import org.eclipse.draw2d.BendpointConnectionRouter;
+import org.eclipse.draw2d.ConnectionLayer;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.editparts.ScalableRootEditPart;
+
+public class RootEditPart extends ScalableRootEditPart implements org.eclipse.gef.RootEditPart
+{  
+  public void activate()
+  {
+    super.activate();
+    // Set up Connection layer with a router, if it doesn't already have one
+    ConnectionLayer connectionLayer = (ConnectionLayer) getLayer(LayerConstants.CONNECTION_LAYER);
+    if (connectionLayer != null)
+    {  
+      connectionLayer.setConnectionRouter(new BendpointConnectionRouter());
+    }
+    refresh();
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/StructureEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/StructureEditPart.java
new file mode 100644
index 0000000..0189d58
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/StructureEditPart.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.requests.LocationRequest;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.xsd.adt.actions.SetInputToGraphView;
+import org.eclipse.wst.xsd.adt.design.editparts.model.Compartment;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTDirectEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.adt.design.figures.IStructureFigure;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDComplexTypeDefinitionAdapter;
+import org.eclipse.wst.xsd.ui.common.actions.OpenInNewEditor;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDSchema;
+
+public class StructureEditPart extends BaseTypeConnectingEditPart implements INamedEditPart
+{  
+  protected List compartmentList = null;
+  protected ADTDirectEditPolicy adtDirectEditPolicy = new ADTDirectEditPolicy();
+
+  /**
+   * TODO cs... I'm sure this has something to do with the way we wanted to rework compartment creation
+   * I suppose we could have subclasses override this method instead of getModelChildren()
+   * 
+   * @deprecated
+   */
+  protected Compartment[] getCompartments()
+  {
+    return null;
+  }
+  
+  protected IFigure createFigure()
+  {
+    IStructureFigure figure = getFigureFactory().createStructureFigure(getModel());
+    return figure;
+  }
+  
+  public IStructureFigure getStructureFigure()
+  {
+    return (IStructureFigure)getFigure();
+  }
+  
+  public IFigure getContentPane()
+  {
+    return getStructureFigure().getContentPane();
+  }
+  
+  
+  protected void createEditPolicies()
+  {
+    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+    installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, adtDirectEditPolicy);
+  }
+  
+  protected IStructure getStructure()
+  {
+    return (IStructure)getModel();
+  }
+  
+  protected List getModelChildren()
+  {
+    if (compartmentList == null)
+    {
+      compartmentList = new ArrayList();
+      
+      // TODO.. this needs to be moved to the xsd specific version of this class 
+      compartmentList.add(new Compartment(getStructure(), "attribute"));
+      compartmentList.add(new Compartment(getStructure(), "element"));   
+    }  
+    return compartmentList;
+  }
+  
+  protected void refreshChildren()
+  {   
+    super.refreshChildren();
+    //getFigure().invalidateTree();    
+  }
+  
+  protected void refreshVisuals()
+  {
+    super.refreshVisuals();
+    getStructureFigure().refreshVisuals(getModel());
+  }
+  
+  public void addFeedback()
+  {
+    getStructureFigure().addSelectionFeedback();
+    super.addFeedback();
+  }
+  
+  public void removeFeedback()
+  {
+    getStructureFigure().removeSelectionFeedback();
+    super.removeFeedback();    
+  }
+
+  public Label getNameLabelFigure()
+  {
+    return getStructureFigure().getNameLabel();
+  }
+
+  public void performDirectEdit(Point cursorLocation)
+  {
+    
+  }
+
+  public void performRequest(Request request)
+  {  
+    if (request.getType() == RequestConstants.REQ_DIRECT_EDIT ||
+        request.getType() == RequestConstants.REQ_OPEN)
+    {
+      
+      Object model = getModel();
+      if (request instanceof LocationRequest)
+      {
+        LocationRequest locationRequest = (LocationRequest)request;
+        Point p = locationRequest.getLocation();
+// uncomment for direct edit of name (add else)
+//        if (hitTest(getNameLabelFigure(), p))
+//        {
+//          LabelEditManager manager = new LabelEditManager(this, new LabelCellEditorLocator(this, p));
+//          NameUpdateCommandWrapper wrapper = new NameUpdateCommandWrapper();
+//          adtDirectEditPolicy.setUpdateCommand(wrapper);
+//          manager.show();
+//        }
+       
+         
+        if (getStructureFigure().hitTestHeader(p))
+        {          
+          // TODO: !!! This should be moved to the adt-xsd package
+          // 
+          if (model instanceof XSDComplexTypeDefinitionAdapter)     
+          {
+            XSDComplexTypeDefinitionAdapter adapter = (XSDComplexTypeDefinitionAdapter)model;
+            XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)adapter.getTarget();
+            IWorkbench workbench = PlatformUI.getWorkbench();
+            IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+            IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+            Object schema = editorPart.getAdapter(XSDSchema.class);
+            ActionRegistry registry = getEditorActionRegistry(editorPart);
+            if (registry != null)
+            {
+              if (schema == ct.getSchema())
+              {
+                IAction action = registry.getAction(SetInputToGraphView.ID);
+                action.run();
+              }
+              else
+              {
+                IAction action = registry.getAction(OpenInNewEditor.ID);
+                action.run();
+              }
+            }
+          }          
+        }
+      }
+    }
+  }
+  
+  protected ActionRegistry getEditorActionRegistry(IEditorPart editor)
+  {
+    return (ActionRegistry) editor.getAdapter(ActionRegistry.class);
+  }
+  
+  protected boolean shouldDrawConnection()
+  {
+    return false;
+  }
+  
+  public TypeReferenceConnection createConnectionFigure()
+  {
+    return null;
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TopLevelFieldEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TopLevelFieldEditPart.java
new file mode 100644
index 0000000..901f420
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TopLevelFieldEditPart.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.gef.requests.LocationRequest;
+import org.eclipse.wst.xsd.adt.design.directedit.LabelCellEditorLocator;
+import org.eclipse.wst.xsd.adt.design.directedit.LabelEditManager;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTDirectEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IType;
+import org.eclipse.wst.xsd.adt.typeviz.design.figures.BoxFigure;
+
+public class TopLevelFieldEditPart extends BoxEditPart implements INamedEditPart
+{
+  protected ADTDirectEditPolicy adtDirectEditPolicy = new ADTDirectEditPolicy();
+  
+  protected boolean shouldDrawConnection()
+  {
+    IField field = (IField)getModel();
+    IType type = field.getType();
+    return (type != null && type.isComplexType());
+  }
+  
+  public TypeReferenceConnection createConnectionFigure()
+  {
+    TypeReferenceConnection connectionFigure = null;
+    IField field = (IField)getModel();
+    IType type = field.getType();
+    if (type != null && type.isComplexType())
+    {      
+      AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart)getViewer().getEditPartRegistry().get(type);
+      if (referenceTypePart != null)
+      {
+        connectionFigure = new TypeReferenceConnection();   
+        connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(getFigure(), CenteredConnectionAnchor.RIGHT, 5));
+        int targetAnchorYOffset = 16;        
+        connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(referenceTypePart.getFigure(), CenteredConnectionAnchor.HEADER_LEFT, 0, targetAnchorYOffset)); 
+        connectionFigure.setHighlight(false);
+      }
+    }    
+    return connectionFigure;
+  }  
+  
+  protected void createEditPolicies()
+  {
+    super.createEditPolicies();
+    installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, adtDirectEditPolicy);
+    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy());
+  }
+
+  protected void refreshVisuals()
+  {
+    IField field = (IField)getModel();
+    BoxFigure boxFigure = (BoxFigure)getFigure();
+    boxFigure.getNameLabel().setText(field.getName());
+    super.refreshVisuals();
+  }
+  
+  public Label getNameLabelFigure()
+  {
+    BoxFigure boxFigure = (BoxFigure)getFigure();
+    return boxFigure.getNameLabel();
+  }
+
+  public void performDirectEdit(Point cursorLocation)
+  {
+   
+  }
+  
+  public void performRequest(Request request)
+  {  
+    if (request.getType() == RequestConstants.REQ_DIRECT_EDIT||
+        request.getType() == RequestConstants.REQ_OPEN)
+    {
+      if (request instanceof LocationRequest)
+      {
+        LocationRequest locationRequest = (LocationRequest)request;
+        Point p = locationRequest.getLocation();
+       
+        if (hitTest(getNameLabelFigure(), p))
+        {
+          LabelEditManager manager = new LabelEditManager(this, new LabelCellEditorLocator(this, p));
+          NameUpdateCommandWrapper wrapper = new NameUpdateCommandWrapper();
+          adtDirectEditPolicy.setUpdateCommand(wrapper);
+          manager.show();
+        }
+      }
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TypeReferenceConnection.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TypeReferenceConnection.java
new file mode 100644
index 0000000..d4eef12
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/TypeReferenceConnection.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.ConnectionRouter;
+import org.eclipse.draw2d.ManhattanConnectionRouter;
+import org.eclipse.draw2d.PolygonDecoration;
+import org.eclipse.draw2d.PolylineConnection;
+import org.eclipse.swt.graphics.Color;
+
+public class TypeReferenceConnection extends PolylineConnection
+{
+  protected boolean highlight = false;
+  protected static final Color activeConnection = ColorConstants.black;
+  protected static final Color inactiveConnection = new Color(null, 198, 195, 198);
+
+  /**
+   * Default constructor
+   */
+  public TypeReferenceConnection()
+  {
+    super();
+    setTargetDecoration(new PolygonDecoration());
+  }
+  
+  
+
+  public void setConnectionRouter(ConnectionRouter cr)
+  {
+    if (cr != null && getConnectionRouter() != null && !(getConnectionRouter() instanceof ManhattanConnectionRouter))
+      super.setConnectionRouter(cr);
+  }
+
+  /**
+   * @return Returns the current highlight status.
+   */
+  public boolean isHighlighted()
+  {
+    return highlight;
+  }
+
+  /**
+   * @param highlight
+   *          The highlight to set.
+   */
+  public void setHighlight(boolean highlight)
+  {
+    this.highlight = highlight;
+    // Update our connection to use the correct colouring
+    setForegroundColor(highlight ? activeConnection : inactiveConnection);
+    setOpaque(highlight);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/AbstractModelCollection.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/AbstractModelCollection.java
new file mode 100644
index 0000000..37d1e33
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/AbstractModelCollection.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts.model;
+
+import java.util.List;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+
+public abstract class AbstractModelCollection implements IADTObject
+{
+  IADTObject model;
+  String kind;
+  
+  public AbstractModelCollection(IADTObject model, String kind)
+  {
+    this.model = model;
+    this.kind = kind;
+  }
+
+  public Object getModel()
+  {
+    return model;
+  }
+
+  public void setModel(IADTObject model)
+  {
+    this.model = model;
+  }
+
+  public String getKind()
+  {
+    return kind;
+  }
+
+  public void setKind(String kind)
+  {
+    this.kind = kind;
+  }
+  
+  public abstract List getChildren();
+
+  public void registerListener(IADTObjectListener listener)
+  {
+    model.registerListener(listener);
+  }
+
+  public void unregisterListener(IADTObjectListener listener)
+  {
+    model.unregisterListener(listener);
+  }   
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Annotation.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Annotation.java
new file mode 100644
index 0000000..fee40af
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Annotation.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts.model;
+
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+
+public class Annotation
+{
+  Compartment compartment;
+  public Annotation()
+  {
+    super();
+  }
+  
+  public void setCompartment(Compartment compartment)
+  {
+    this.compartment = compartment;
+  }
+  
+  public Compartment getCompartment()
+  {
+    return compartment;
+  }
+  
+  public IStructure getOwner()
+  {
+    return compartment.getOwner();
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Compartment.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Compartment.java
new file mode 100644
index 0000000..6de4ff2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/Compartment.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+
+public class Compartment implements IADTObject
+{
+  String kind;
+  IStructure owner;
+
+  public Compartment(IStructure owner, String kind)
+  {
+    this.kind = kind;
+    this.owner = owner;
+  }
+
+  public List getChildren()
+  {
+    List list = new ArrayList();
+    for (Iterator i = owner.getFields().iterator(); i.hasNext();)
+    {
+      IField field = (IField) i.next();
+      if (kind == null || kind.equals(field.getKind()))
+      {
+        list.add(field);
+      }
+    }
+    return list;
+  }
+
+  public String getKind()
+  {
+    return kind;
+  }
+  
+  public IStructure getOwner()
+  {
+    return owner;
+  }
+
+  public void registerListener(IADTObjectListener listener)
+  {
+    // really we want to listen to the owner
+    owner.registerListener(listener);
+  }
+
+  public void unregisterListener(IADTObjectListener listener)
+  {
+    // really we want to listen to the owner
+    owner.unregisterListener(listener);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/FocusTypeColumn.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/FocusTypeColumn.java
new file mode 100644
index 0000000..81272c3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/FocusTypeColumn.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.adt.facade.IType;
+
+public class FocusTypeColumn extends AbstractModelCollection
+{  
+  public FocusTypeColumn(IADTObject model)
+  {
+    super(model, "FocusTypeColumn");
+  }
+
+  public List getChildren()
+  {
+    List result = new ArrayList();  
+    if (model instanceof IType)
+    {
+      IType type = (IType)model;
+      if (type.getSuperType() != null)
+      {  
+        result.add(type.getSuperType());
+      }
+      result.add(type);
+    }  
+    else if (model instanceof IField ||
+             model instanceof IStructure)
+    {   
+      result.add(model);
+    }       
+    return result;       
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IActionProvider.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IActionProvider.java
index 24a0537..46d812c 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IActionProvider.java
@@ -1,17 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.editparts;
+package org.eclipse.wst.xsd.adt.design.editparts.model;
 
-public interface IFeedbackHandler
+
+
+public interface IActionProvider
 {
-  public void addFeedback();
-  public void removeFeedback();
-}              
\ No newline at end of file
+  public String[] getActions(Object object);
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IFeedbackHandler.java
similarity index 81%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IFeedbackHandler.java
index 24a0537..a8f6ca3 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/IFeedbackHandler.java
@@ -1,17 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.editparts;
+package org.eclipse.wst.xsd.adt.design.editparts.model;
 
 public interface IFeedbackHandler
 {
   public void addFeedback();
   public void removeFeedback();
-}              
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/ReferencedTypeColumn.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/ReferencedTypeColumn.java
new file mode 100644
index 0000000..761a59a
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editparts/model/ReferencedTypeColumn.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editparts.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+import org.eclipse.wst.xsd.adt.facade.IField;
+import org.eclipse.wst.xsd.adt.facade.IStructure;
+import org.eclipse.wst.xsd.adt.facade.IType;
+
+public class ReferencedTypeColumn extends AbstractModelCollection
+{
+  List listenerList = new ArrayList();
+  InternalListener internalListener = new InternalListener();
+  
+  // todo... really this this model object should listen
+  // to the parent of the IType
+  //
+  public ReferencedTypeColumn(IADTObject model)
+  {
+    super(model, "ReferencedTypeColumn");
+    model.registerListener(internalListener);
+    internalListener.recomputeSubListeners();
+  }
+
+  public List getChildren()
+  {
+    List result = new ArrayList();  
+    if (model instanceof IStructure)
+    {
+      IStructure structure = (IStructure)model;
+      for (Iterator i = structure.getFields().iterator(); i.hasNext(); )
+      {
+        IField field = (IField)i.next();
+        IType type = field.getType();
+        if (type != null)  // && type.isComplexType())
+        {
+          if (!result.contains(type))
+          {
+            if (type.isFocusAllowed())
+              result.add(type);
+          }  
+        }  
+      }        
+    }  
+    else if (model instanceof IField)
+    {
+      IField field = (IField)model;
+      IType type = field.getType();
+      if (type != null) //  && type.isComplexType())
+      {
+        if (type.isFocusAllowed())
+          result.add(type);        
+      }
+    }  
+    return result;
+  }  
+  
+  public void registerListener(IADTObjectListener listener)
+  {
+    listenerList.add(listener);
+  }
+
+  public void unregisterListener(IADTObjectListener listener)
+  {
+    listenerList.remove(listener);
+  }   
+  
+  protected void notifyListeners(Object changedObject, String property)
+  {
+    List clonedListenerList = new ArrayList();
+    clonedListenerList.addAll(listenerList);
+    for (Iterator i = clonedListenerList.iterator(); i.hasNext(); )
+    {
+      IADTObjectListener listener = (IADTObjectListener)i.next();
+      listener.propertyChanged(this, null);
+    } 
+  }   
+  
+  protected class InternalListener implements IADTObjectListener
+  {
+    List fields = new ArrayList();
+
+    void recomputeSubListeners()
+    {
+      if (model instanceof IStructure)
+      {  
+        // remove old ones
+        for (Iterator i = fields.iterator(); i.hasNext();)
+        {
+          IField field = (IField) i.next();
+          field.unregisterListener(this);
+        }
+        // add new ones
+        fields.clear();
+        IStructure complexType = (IStructure) model;
+        for (Iterator i = complexType.getFields().iterator(); i.hasNext();)
+        {
+          IField field = (IField) i.next();
+          fields.add(field);
+          field.registerListener(this);
+        }
+      }
+    }
+
+    public void propertyChanged(Object object, String property)
+    {
+      if (object == model)
+      {
+        // we need to update the fields we're listening too
+        // since these may have changed
+        recomputeSubListeners();
+      }
+      else if (object instanceof IField)
+      {
+        System.out.println("field changed!!! " + fields.size() + " " + object);
+      }  
+      notifyListeners(object, property);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTDirectEditPolicy.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTDirectEditPolicy.java
new file mode 100644
index 0000000..d06be2d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTDirectEditPolicy.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editpolicies;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.editpolicies.DirectEditPolicy;
+import org.eclipse.gef.requests.DirectEditRequest;
+import org.eclipse.wst.xsd.adt.design.directedit.ComboBoxCellEditorManager;
+
+public class ADTDirectEditPolicy extends DirectEditPolicy
+{
+  protected ComboBoxCellEditorManager delegate;
+  protected IADTUpdateCommand command;
+
+  public ADTDirectEditPolicy()
+  {
+    super();
+  }
+
+  
+  public void setUpdateCommand(IADTUpdateCommand command)
+  {
+    this.command = command;
+  }
+  
+  protected void showCurrentEditValue(DirectEditRequest request) 
+  {      
+    getHostFigure().getUpdateManager().performUpdate();
+  }
+
+  protected Command getDirectEditCommand(DirectEditRequest request)
+  {
+    command.setRequest(request);
+    return (Command)command; 
+  }
+
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTSelectionFeedbackEditPolicy.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTSelectionFeedbackEditPolicy.java
new file mode 100644
index 0000000..4d391fb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/ADTSelectionFeedbackEditPolicy.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.editpolicies;
+
+import org.eclipse.gef.editpolicies.SelectionEditPolicy;
+import org.eclipse.wst.xsd.adt.design.editparts.model.IFeedbackHandler;
+
+public class ADTSelectionFeedbackEditPolicy extends SelectionEditPolicy
+{
+
+  public ADTSelectionFeedbackEditPolicy()
+  {
+    super();
+  }
+
+  protected void hideSelection()
+  {
+    if (getHost() instanceof IFeedbackHandler)
+    {
+      ((IFeedbackHandler) getHost()).removeFeedback();
+    }
+  }
+
+  protected void showSelection()
+  {
+    if (getHost() instanceof IFeedbackHandler)
+    {
+      ((IFeedbackHandler) getHost()).addFeedback();
+    }
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DirectEditPolicyDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/DirectEditPolicyDelegate.java
similarity index 83%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DirectEditPolicyDelegate.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/DirectEditPolicyDelegate.java
index b5cce8b..d4b33a1 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DirectEditPolicyDelegate.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/DirectEditPolicyDelegate.java
@@ -1,18 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.editpolicies;
+package org.eclipse.wst.xsd.adt.design.editpolicies;
    
 import org.eclipse.jface.viewers.CellEditor;
 
 public interface DirectEditPolicyDelegate
 {       
   public void performEdit(CellEditor cellEditor);  
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/IADTUpdateCommand.java
similarity index 65%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/IADTUpdateCommand.java
index ff6e4db..56d9092 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapterListener.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/IADTUpdateCommand.java
@@ -1,18 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.model;
+package org.eclipse.wst.xsd.adt.design.editpolicies;
 
+import org.eclipse.gef.requests.DirectEditRequest;
 
-
-public interface ModelAdapterListener
-{                             
-  public void propertyChanged(Object object, String property);
+public interface IADTUpdateCommand
+{
+  void setRequest(DirectEditRequest request);
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SimpleDirectEditPolicy.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/SimpleDirectEditPolicy.java
similarity index 93%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SimpleDirectEditPolicy.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/SimpleDirectEditPolicy.java
index 531eef2..9363426 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SimpleDirectEditPolicy.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/editpolicies/SimpleDirectEditPolicy.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.graph.editpolicies;
+package org.eclipse.wst.xsd.adt.design.editpolicies;
 
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.editpolicies.DirectEditPolicy;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IADTFigure.java
similarity index 61%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IADTFigure.java
index 21a1f54..ce7b14b 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IADTFigure.java
@@ -1,19 +1,22 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.figures;
+package org.eclipse.wst.xsd.adt.design.figures;
 
 import org.eclipse.draw2d.IFigure;
+import org.eclipse.gef.EditPart;
 
-
-public interface PostLayoutManager
+public interface IADTFigure extends IFigure
 {
-  public void postLayout(IFigure figure);                    
+  void editPartAttached(EditPart owner); 
+  void addSelectionFeedback();
+  void removeSelectionFeedback();
+  void refreshVisuals(Object model);
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/ICompartmentFigure.java
similarity index 69%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/ICompartmentFigure.java
index 21a1f54..9eff72f 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/ICompartmentFigure.java
@@ -1,19 +1,19 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.figures;
+package org.eclipse.wst.xsd.adt.design.figures;
 
 import org.eclipse.draw2d.IFigure;
 
-
-public interface PostLayoutManager
+public interface ICompartmentFigure extends IADTFigure
 {
-  public void postLayout(IFigure figure);                    
+  IFigure getContentPane();
+  IFigure getAnnotationPane();  
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFieldFigure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFieldFigure.java
new file mode 100644
index 0000000..d310271
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFieldFigure.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * 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.xsd.adt.design.figures;
+
+import org.eclipse.draw2d.Label;
+
+
+public interface IFieldFigure extends IADTFigure
+{
+  Label getTypeLabel();
+  Label getNameLabel();
+  Label getNameAnnotationLabel();
+  Label getTypeAnnotationLabel();
+  void recomputeLayout();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFigureFactory.java
similarity index 61%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFigureFactory.java
index 21a1f54..893222b 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IFigureFactory.java
@@ -1,19 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.figures;
+package org.eclipse.wst.xsd.adt.design.figures;
 
-import org.eclipse.draw2d.IFigure;
-
-
-public interface PostLayoutManager
+public interface IFigureFactory
 {
-  public void postLayout(IFigure figure);                    
+  IFieldFigure createFieldFigure(Object model);
+  IStructureFigure createStructureFigure(Object model);
+  ICompartmentFigure createCompartmentFigure(Object model);
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IStructureFigure.java
similarity index 61%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IStructureFigure.java
index 21a1f54..7e7cbc5 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/design/figures/IStructureFigure.java
@@ -1,19 +1,22 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.figures;
+package org.eclipse.wst.xsd.adt.design.figures;
 
 import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Point;
 
-
-public interface PostLayoutManager
+public interface IStructureFigure extends IADTFigure
 {
-  public void postLayout(IFigure figure);                    
+  IFigure getContentPane();
+  Label getNameLabel();
+  boolean hitTestHeader(Point point);  
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/ComponentReferenceEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/ComponentReferenceEditManager.java
new file mode 100644
index 0000000..21b9ded
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/ComponentReferenceEditManager.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * 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.xsd.adt.edit;
+
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentDescriptionProvider;
+
+public interface ComponentReferenceEditManager
+{
+  public IComponentDialog getBrowseDialog();
+  public IComponentDialog getNewDialog();
+  public void modifyComponentReference(Object referencingObject, ComponentSpecification referencedComponent);
+  public IComponentDescriptionProvider getComponentDescriptionProvider();
+  
+  public ComponentSpecification[] getQuickPicks();
+  public ComponentSpecification[] getHistory();
+  public void addToHistory(ComponentSpecification component);  
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/IComponentDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/IComponentDialog.java
new file mode 100644
index 0000000..f18e8f0
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/edit/IComponentDialog.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * 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.xsd.adt.edit;
+
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+
+public interface IComponentDialog  {
+  
+	/*
+	 * Set the Object being set
+	 */
+	public void setInitialSelection(ComponentSpecification componentSpecification);
+	
+	/*
+	 * Return the Object which should be used as the type.
+	 */
+	public ComponentSpecification getSelectedComponent();
+	
+	/*
+	 * Used to open the Dialog
+	 */
+	public int createAndOpen();
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTMultiPageEditor.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTMultiPageEditor.java
new file mode 100644
index 0000000..80e75d9
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTMultiPageEditor.java
@@ -0,0 +1,421 @@
+/*******************************************************************************
+ * 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.xsd.adt.editor;
+
+import java.util.ArrayList;
+import java.util.EventObject;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.gef.DefaultEditDomain;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.MouseWheelHandler;
+import org.eclipse.gef.MouseWheelZoomHandler;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.gef.commands.CommandStackListener;
+import org.eclipse.gef.editparts.ZoomManager;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.gef.ui.actions.UpdateAction;
+import org.eclipse.gef.ui.actions.ZoomInAction;
+import org.eclipse.gef.ui.actions.ZoomOutAction;
+import org.eclipse.gef.ui.parts.SelectionSynchronizer;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.adt.actions.SetInputToGraphView;
+import org.eclipse.wst.xsd.adt.design.DesignViewGraphicalViewer;
+import org.eclipse.wst.xsd.adt.design.editparts.ADTEditPartFactory;
+import org.eclipse.wst.xsd.adt.design.editparts.RootEditPart;
+import org.eclipse.wst.xsd.adt.facade.IModel;
+import org.eclipse.wst.xsd.adt.outline.ADTContentOutlinePage;
+import org.eclipse.wst.xsd.adt.outline.ADTContentOutlineProvider;
+import org.eclipse.wst.xsd.adt.outline.ADTLabelProvider;
+
+/**
+ * </ul>
+ * <li>page 0 graph
+ * <li>page 1 source
+ * </ul>
+ */
+public abstract class ADTMultiPageEditor extends MultiPageEditorPart implements IResourceChangeListener, CommandStackListener, ITabbedPropertySheetPageContributor
+{
+  protected IContentOutlinePage fOutlinePage;
+  protected long lastModificationStamp;
+  protected DesignViewGraphicalViewer graphicalViewer;
+  
+  protected IModel model;
+  private DefaultEditDomain editDomain;
+  private SelectionSynchronizer synchronizer;
+  private ActionRegistry actionRegistry;
+  private List selectionActions = new ArrayList();
+  private List stackActions = new ArrayList();
+  private List propertyActions = new ArrayList();
+  protected ADTSelectionManager selectionManager;
+
+  /**
+   * Creates a multi-page editor example.
+   */
+  public ADTMultiPageEditor()
+  {
+    super();
+    DefaultEditDomain defaultGEFEditDomain = new DefaultEditDomain(this);
+    setEditDomain(defaultGEFEditDomain);
+  }
+
+  public String getContributorId()
+  {
+    return "org.eclipse.wst.xsd.editor";
+  }
+  
+  
+  public ADTSelectionManager getSelectionManager()
+  {
+    if (selectionManager == null)
+    {
+      selectionManager = new ADTSelectionManager(this);
+    }
+    return selectionManager;
+  }
+
+  protected void createGraphPage()
+  {
+    Composite parent = new Composite(getContainer(), SWT.NONE);
+    parent.setLayout(new FillLayout());
+
+    graphicalViewer = new DesignViewGraphicalViewer(this, getSelectionProvider());//getSelectionManager(), xsdModelAdapterFactory);
+    graphicalViewer.createControl(parent);
+    getEditDomain().addViewer(graphicalViewer);
+    
+    configureGraphicalViewer();
+    hookGraphicalViewer();
+    initializeGraphicalViewer();
+    int index = addPage(parent);
+    setPageText(index, "Design");
+  }
+
+  protected ADTSelectionManager selectionProvider;
+  public ADTSelectionManager getSelectionProvider()
+  {
+    return selectionProvider;
+  }
+  
+  /**
+   * Creates the pages of the multi-page editor.
+   */
+  protected void createPages()
+  {
+    model = buildModel((IFileEditorInput)getEditorInput());
+    
+    selectionProvider = getSelectionManager();
+    getEditorSite().setSelectionProvider(selectionProvider);
+    
+    createGraphPage();
+  }
+
+  /**
+   * The <code>MultiPageEditorPart</code> implementation of this
+   * <code>IWorkbenchPart</code> method disposes all nested editors.
+   * Subclasses may extend.
+   */
+  public void dispose()
+  {
+    getCommandStack().removeCommandStackListener(this);
+    ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
+    getActionRegistry().dispose();
+    super.dispose();
+  }
+
+  /**
+   * Saves the multi-page editor's document.
+   */
+  public void doSave(IProgressMonitor monitor)
+  {
+    getEditor(1).doSave(monitor); 
+    getCommandStack().markSaveLocation();
+  }
+
+  /**
+   * Saves the multi-page editor's document as another file. Also updates the
+   * text for page 0's tab, and updates this multi-page editor's input to
+   * correspond to the nested editor's.
+   */
+  public void doSaveAs()
+  {
+    IEditorPart editor = getEditor(0);
+    editor.doSaveAs();
+    setPageText(0, editor.getTitle());
+    setInput(editor.getEditorInput());
+  }
+
+  /*
+   * (non-Javadoc) Method declared on IEditorPart
+   */
+  public void gotoMarker(IMarker marker)
+  {
+    setActivePage(0);
+    IDE.gotoMarker(getEditor(0), marker);
+  }
+
+  /**
+   * The <code>MultiPageEditorExample</code> implementation of this method
+   * checks that the input is an instance of <code>IFileEditorInput</code>.
+   */
+  public void init(IEditorSite site, IEditorInput editorInput) throws PartInitException
+  {
+    if (!(editorInput instanceof IFileEditorInput))
+      throw new PartInitException("Invalid Input: Must be IFileEditorInput");
+    super.init(site, editorInput);
+    
+    getCommandStack().addCommandStackListener(this);
+    initializeActionRegistry();
+    
+    String title = null;
+    if (getEditorInput() != null) {
+      title = getEditorInput().getName();
+    }
+    setPartName(title);
+  }
+
+  /*
+   * (non-Javadoc) Method declared on IEditorPart.
+   */
+  public boolean isSaveAsAllowed()
+  {
+    return true;
+  }
+
+  /**
+   * Calculates the contents of page 2 when the it is activated.
+   */
+  protected void pageChange(int newPageIndex)
+  {
+    super.pageChange(newPageIndex);
+    if (newPageIndex == 1)
+    {
+    }
+  }
+
+  abstract public IModel buildModel(IFileEditorInput editorInput);
+  
+  protected void initializeActionRegistry()
+  {
+    createActions();
+  }
+
+  protected void createActions()
+  {
+    ActionRegistry registry = getActionRegistry();
+    
+    BaseSelectionAction action = new SetInputToGraphView(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+  }
+
+
+  public IModel getModel()
+  {
+    return model;
+  }
+
+  //protected XSDModelAdapterFactoryImpl xsdModelAdapterFactory;
+  //protected XSDAdapterFactoryLabelProvider adapterFactoryLabelProvider;
+
+  public Object getAdapter(Class type)
+  {
+    Object result = null;
+    if (type == ZoomManager.class)
+      return graphicalViewer.getProperty(ZoomManager.class.toString());
+    
+    if (type == ISelectionProvider.class)
+    {
+      result = getSelectionManager();
+    }    
+    /*
+    if (type == org.eclipse.ui.views.properties.IPropertySheetPage.class)
+    {
+      // PropertySheetPage page = new PropertySheetPage();
+      // page.setRootEntry(new UndoablePropertySheetEntry(getCommandStack()));
+      XSDTabbedPropertiesPage page = new XSDTabbedPropertiesPage(this);
+      return page;
+    }*/
+    if (type == GraphicalViewer.class)
+      return graphicalViewer;
+    if (type == CommandStack.class)
+      return getCommandStack();
+    if (type == ActionRegistry.class)
+      return getActionRegistry();
+    if (type == EditPart.class && graphicalViewer != null)
+      return graphicalViewer.getRootEditPart();
+    if (type == IFigure.class && graphicalViewer != null)
+      return ((GraphicalEditPart) graphicalViewer.getRootEditPart()).getFigure();
+
+    if (type == IContentOutlinePage.class)
+    {
+      if (fOutlinePage == null || fOutlinePage.getControl() == null || fOutlinePage.getControl().isDisposed())
+      {
+        ADTContentOutlinePage outlinePage = new ADTContentOutlinePage(this);
+        ADTContentOutlineProvider adtContentProvider = new ADTContentOutlineProvider();
+        outlinePage.setContentProvider(adtContentProvider);
+        ADTLabelProvider adtLabelProvider = new ADTLabelProvider();
+        outlinePage.setLabelProvider(adtLabelProvider);
+        outlinePage.setModel(getModel());
+        
+        fOutlinePage = outlinePage;
+      }
+      return fOutlinePage;
+    }
+
+    return super.getAdapter(type);
+  }
+
+  protected DefaultEditDomain getEditDomain()
+  {
+    return editDomain;
+  }
+
+
+  protected void configureGraphicalViewer()
+  {
+    graphicalViewer.getControl().setBackground(ColorConstants.listBackground);
+
+    // Set the root edit part
+    // ScalableFreeformRootEditPart root = new ScalableFreeformRootEditPart();
+    RootEditPart root = new RootEditPart();
+
+    List zoomLevels = new ArrayList(3);
+    zoomLevels.add(ZoomManager.FIT_ALL);
+    zoomLevels.add(ZoomManager.FIT_WIDTH);
+    zoomLevels.add(ZoomManager.FIT_HEIGHT);
+    root.getZoomManager().setZoomLevelContributions(zoomLevels);
+
+    IAction zoomIn = new ZoomInAction(root.getZoomManager());
+    IAction zoomOut = new ZoomOutAction(root.getZoomManager());
+    getActionRegistry().registerAction(zoomIn);
+    getActionRegistry().registerAction(zoomOut);
+
+    getSite().getKeyBindingService().registerAction(zoomIn);
+    getSite().getKeyBindingService().registerAction(zoomOut);
+
+    //ConnectionLayer connectionLayer = (ConnectionLayer) root.getLayer(LayerConstants.CONNECTION_LAYER);
+    //connectionLayer.setConnectionRouter(new BendpointConnectionRouter());
+    IFigure feedbackLayer = root.getLayer(LayerConstants.FEEDBACK_LAYER);
+
+    //connectionLayer.setConnectionRouter(new ShortestPathConnectionRouter(connectionLayer));
+    // connectionLayer.setVisible(false);
+
+    // Zoom
+    ZoomManager manager = (ZoomManager) graphicalViewer.getProperty(ZoomManager.class.toString());
+    if (manager != null)
+      manager.setZoom(1.0);
+    // Scroll-wheel Zoom
+    graphicalViewer.setProperty(MouseWheelHandler.KeyGenerator.getKey(SWT.CTRL), MouseWheelZoomHandler.SINGLETON);
+
+    
+    
+    graphicalViewer.setRootEditPart(root);
+    graphicalViewer.setEditPartFactory(new ADTEditPartFactory());
+  }
+
+  protected void hookGraphicalViewer()
+  {
+    getSelectionSynchronizer().addViewer(graphicalViewer);
+    getSelectionManager().addSelectionChangedListener(graphicalViewer);
+  }
+
+  protected SelectionSynchronizer getSelectionSynchronizer()
+  {
+    if (synchronizer == null)
+      synchronizer = new SelectionSynchronizer();
+    return synchronizer;
+  }
+
+  protected void initializeGraphicalViewer()
+  {
+    graphicalViewer.setContents(model);
+  }
+
+  protected void setEditDomain(DefaultEditDomain ed)
+  {
+    this.editDomain = ed;
+  }
+
+  protected CommandStack getCommandStack()
+  {
+    return getEditDomain().getCommandStack();
+  }
+
+  protected ActionRegistry getActionRegistry()
+  {
+    if (actionRegistry == null)
+      actionRegistry = new ActionRegistry();
+    return actionRegistry;
+  }
+
+  public void commandStackChanged(EventObject event)
+  {
+    updateActions(stackActions);
+    firePropertyChange(PROP_DIRTY);
+  }
+
+  /**
+   * From GEF GraphicalEditor A convenience method for updating a set of actions
+   * defined by the given List of action IDs. The actions are found by looking
+   * up the ID in the {@link #getActionRegistry() action registry}. If the
+   * corresponding action is an {@link UpdateAction}, it will have its
+   * <code>update()</code> method called.
+   * 
+   * @param actionIds
+   *          the list of IDs to update
+   */
+  protected void updateActions(List actionIds)
+  {
+    ActionRegistry registry = getActionRegistry();
+    Iterator iter = actionIds.iterator();
+    while (iter.hasNext())
+    {
+      IAction action = registry.getAction(iter.next());
+      if (action instanceof UpdateAction)
+        ((UpdateAction) action).update();
+    }
+  }
+
+  /**
+   * Returns <code>true</code> if the command stack is dirty
+   * 
+   * @see org.eclipse.ui.ISaveablePart#isDirty()
+   */
+  public boolean isDirty()
+  {
+    super.isDirty();
+    return getCommandStack().isDirty();
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDSelectionManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTSelectionManager.java
similarity index 79%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDSelectionManager.java
rename to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTSelectionManager.java
index 22f0354..5b67d6d 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDSelectionManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/editor/ADTSelectionManager.java
@@ -1,14 +1,14 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal;
+package org.eclipse.wst.xsd.adt.editor;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -18,10 +18,17 @@
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.part.MultiPageSelectionProvider;
 
-public class XSDSelectionManager implements ISelectionProvider, ISelectionChangedListener
+public class ADTSelectionManager extends MultiPageSelectionProvider implements ISelectionProvider, ISelectionChangedListener
 {
 
+  public ADTSelectionManager(MultiPageEditorPart multiPageEditor)
+  {
+    super(multiPageEditor);
+  }
+
   /* (non-Javadoc)
    * @see org.eclipse.jface.viewers.ISelectionProvider#addSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener)
    */
@@ -35,6 +42,7 @@
    */
   public ISelection getSelection()
   {
+//    System.out.println("getSelection() = " + currentSelection);
     return currentSelection;
   }
 
@@ -70,9 +78,14 @@
   protected ISelection currentSelection;
   protected boolean enableNotify = true;
 
+  public boolean getEnableNotify()
+  {
+    return enableNotify;
+  }
+  
   public void setSelection(ISelection selection, ISelectionProvider source)
   {  
-//	  System.out.println("SelectionManager.setSelection() " + selection + ", " + source);
+    //System.out.println("ADTSelectionManager.setSelection(" + selection + ")");
     if (enableNotify)
     {
       currentSelection = selection;
@@ -87,6 +100,10 @@
           listener.selectionChanged(event);
         }
       }
+      catch (Exception e)
+      {
+        e.printStackTrace();
+      }
       finally
       {
         enableNotify = true;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObject.java
similarity index 65%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObject.java
index 21a1f54..77d6b5f 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/PostLayoutManager.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObject.java
@@ -1,19 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.figures;
+package org.eclipse.wst.xsd.adt.facade;
 
-import org.eclipse.draw2d.IFigure;
-
-
-public interface PostLayoutManager
+public interface IADTObject
 {
-  public void postLayout(IFigure figure);                    
+    public void registerListener(IADTObjectListener listener);
+    public void unregisterListener(IADTObjectListener listener);  
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObjectListener.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObjectListener.java
index 24a0537..5fafdbf 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IADTObjectListener.java
@@ -1,17 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.editparts;
+package org.eclipse.wst.xsd.adt.facade;
 
-public interface IFeedbackHandler
+public interface IADTObjectListener
 {
-  public void addFeedback();
-  public void removeFeedback();
-}              
\ No newline at end of file
+  public void propertyChanged(Object object, String property);  
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IComplexType.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IComplexType.java
index 24a0537..3f3c4ea 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IComplexType.java
@@ -1,17 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.editparts;
+package org.eclipse.wst.xsd.adt.facade;
 
-public interface IFeedbackHandler
+
+
+public interface IComplexType extends IType, IStructure
 {
-  public void addFeedback();
-  public void removeFeedback();
-}              
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IField.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IField.java
new file mode 100644
index 0000000..a0c85d2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IField.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * 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.xsd.adt.facade;
+
+import org.eclipse.gef.commands.Command;
+
+public interface IField extends IADTObject
+{
+  String getKind();
+  String getName();
+  String getTypeName();
+  String getTypeNameQualifier();
+  IModel getModel();
+  IType getType();
+  IComplexType getContainerType();
+  int getMinOccurs();
+  int getMaxOccurs();
+  boolean isGlobal();
+  boolean isReadOnly();
+  
+  Command getUpdateMinOccursCommand(int minOccurs);
+  Command getUpdateMaxOccursCommand(int maxOccurs);
+  Command getUpdateTypeNameCommand(String typeName, String quailifier);
+  Command getUpdateNameCommand(String name); 
+  Command getDeleteCommand();  
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IModel.java
similarity index 67%
copy from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
copy to bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IModel.java
index 24a0537..7e904b2 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/IFeedbackHandler.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IModel.java
@@ -1,17 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.graph.editparts;
+package org.eclipse.wst.xsd.adt.facade;
 
-public interface IFeedbackHandler
+import java.util.List;
+
+public interface IModel extends IADTObject
 {
-  public void addFeedback();
-  public void removeFeedback();
-}              
\ No newline at end of file
+  List getTypes();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IStructure.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IStructure.java
new file mode 100644
index 0000000..3e0e012
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IStructure.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * 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.xsd.adt.facade;
+
+import java.util.List;
+import org.eclipse.gef.commands.Command;
+
+public interface IStructure extends IADTObject
+{
+  String getName();
+  List getFields();
+  IModel getModel();
+  Command getAddNewFieldCommand(String fieldKind);
+  Command getDeleteCommand();  
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IType.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IType.java
new file mode 100644
index 0000000..1cbe3aa
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/facade/IType.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * 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.xsd.adt.facade;
+
+import org.eclipse.gef.commands.Command;
+
+public interface IType extends IADTObject
+{ 
+  IType getSuperType();
+  String getName();
+  String getQualifier();
+  boolean isComplexType();
+  boolean isReadOnly();
+  boolean isFocusAllowed();
+  
+  Command getUpdateNameCommand(String newName);
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlinePage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlinePage.java
new file mode 100644
index 0000000..0765069
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlinePage.java
@@ -0,0 +1,201 @@
+/*******************************************************************************
+ * 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.xsd.adt.outline;
+
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.part.MultiPageSelectionProvider;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.wst.xsd.adt.design.DesignViewContextMenuProvider;
+import org.eclipse.wst.xsd.adt.editor.ADTMultiPageEditor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+
+public class ADTContentOutlinePage extends ContentOutlinePage
+{
+  protected ADTMultiPageEditor editor;
+  protected int level = 0;
+  protected Object model;
+  protected ITreeContentProvider contentProvider;
+  protected ILabelProvider labelProvider;
+  protected MultiPageSelectionProvider selectionManager;
+  protected SelectionManagerSelectionChangeListener selectionManagerSelectionChangeListener = new SelectionManagerSelectionChangeListener();
+  protected TreeSelectionChangeListener treeSelectionChangeListener = new TreeSelectionChangeListener();
+
+  /**
+   * 
+   */
+  public ADTContentOutlinePage(ADTMultiPageEditor editor)
+  {
+    super();
+    this.editor = editor;
+  }
+
+  public void setModel(Object newModel)
+  {
+    model = newModel;
+  }
+
+  public void setContentProvider(ITreeContentProvider contentProvider)
+  {
+    this.contentProvider = contentProvider;
+  }
+
+  public void setLabelProvider(ILabelProvider labelProvider)
+  {
+    this.labelProvider = labelProvider;
+  }
+
+  // expose
+  public TreeViewer getTreeViewer()
+  {
+    return super.getTreeViewer();
+  }
+
+  public void createControl(Composite parent)
+  {
+    super.createControl(parent);
+    getTreeViewer().setContentProvider(contentProvider);
+    getTreeViewer().setLabelProvider(labelProvider);
+    getTreeViewer().setInput(model);
+    getTreeViewer().addSelectionChangedListener(this);
+    MenuManager menuManager = new MenuManager("#popup");//$NON-NLS-1$
+    menuManager.setRemoveAllWhenShown(true);
+    Menu menu = menuManager.createContextMenu(getTreeViewer().getControl());
+    getTreeViewer().getControl().setMenu(menu);
+    setSelectionManager(editor.getSelectionManager());
+    
+    // Create menu...for now reuse graph's.  Note edit part viewer = null
+    DesignViewContextMenuProvider menuProvider = new DesignViewContextMenuProvider(editor, null, (ISelectionProvider)editor.getSelectionManager());
+    menuManager.addMenuListener(menuProvider);
+    getSite().registerContextMenu("org.eclipse.wst.xsd.ui.popup.outline", menuManager, editor.getSelectionManager());
+
+    // enable popupMenus extension
+    // getSite().registerContextMenu("org.eclipse.wst.xsdeditor.ui.popup.outline",
+    // menuManager, xsdEditor.getSelectionManager());
+
+    // cs... why are we doing this from the outline view?
+    //
+    // xsdTextEditor.getXSDEditor().getSelectionManager().setSelection(new
+    // StructuredSelection(xsdTextEditor.getXSDSchema()));
+    // drill down from outline view
+    getTreeViewer().getControl().addMouseListener(new MouseAdapter()
+    {
+      public void mouseDoubleClick(MouseEvent e)
+      {
+        ISelection iSelection = getTreeViewer().getSelection();
+        if (iSelection instanceof StructuredSelection)
+        {
+          StructuredSelection selection = (StructuredSelection) iSelection;
+          Object obj = selection.getFirstElement();
+          if (obj instanceof XSDConcreteComponent)
+          {
+            XSDConcreteComponent comp = (XSDConcreteComponent) obj;
+            if (comp.getContainer() instanceof XSDSchema)
+            {
+              // getXSDEditor().getGraphViewer().setInput(obj);
+            }
+          }
+        }
+
+      }
+    });
+  }
+
+  class XSDKeyListener extends KeyAdapter
+  {
+  }
+
+  public void dispose()
+  {
+    contentProvider.dispose();
+    super.dispose();
+  }
+
+  public void setExpandToLevel(int i)
+  {
+    level = i;
+  }
+
+  public void setInput(Object value)
+  {
+    getTreeViewer().setInput(value);
+    getTreeViewer().expandToLevel(level);
+  }
+
+  // public ISelection getSelection()
+  // {
+  // if (getTreeViewer() == null)
+  // return StructuredSelection.EMPTY;
+  // return getTreeViewer().getSelection();
+  // }
+  public void setSelectionManager(MultiPageSelectionProvider newSelectionManager)
+  {
+    TreeViewer treeViewer = getTreeViewer();
+    // disconnect from old one
+    if (selectionManager != null)
+    {
+      selectionManager.removeSelectionChangedListener(selectionManagerSelectionChangeListener);
+      treeViewer.removeSelectionChangedListener(treeSelectionChangeListener);
+    }
+    selectionManager = newSelectionManager;
+    // connect to new one
+    if (selectionManager != null)
+    {
+      selectionManager.addSelectionChangedListener(selectionManagerSelectionChangeListener);
+      treeViewer.addSelectionChangedListener(treeSelectionChangeListener);
+    }
+  }
+
+  class SelectionManagerSelectionChangeListener implements ISelectionChangedListener
+  {
+    public void selectionChanged(SelectionChangedEvent event)
+    {
+      if (event.getSelectionProvider() != getTreeViewer())
+      {
+        getTreeViewer().setSelection(event.getSelection(), true);
+      }
+    }
+  }
+
+  class TreeSelectionChangeListener implements ISelectionChangedListener
+  {
+    public void selectionChanged(SelectionChangedEvent event)
+    {
+      if (selectionManager != null)
+      {
+        ISelection selection = event.getSelection();
+        if (selection instanceof IStructuredSelection)
+        {
+          IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+          Object o = structuredSelection.getFirstElement();
+          if (o != null)
+          {
+            selectionManager.setSelection(structuredSelection);
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlineProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlineProvider.java
new file mode 100644
index 0000000..0264e9c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTContentOutlineProvider.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * 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.xsd.adt.outline;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.wst.xsd.adt.facade.IADTObject;
+import org.eclipse.wst.xsd.adt.facade.IADTObjectListener;
+
+public class ADTContentOutlineProvider implements ITreeContentProvider, IADTObjectListener
+{
+  protected Viewer viewer = null;
+  protected Object oldInput, newInput;
+
+  public ADTContentOutlineProvider()
+  {
+    super();
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+   */
+  public Object[] getChildren(Object parentElement)
+  {
+    if (parentElement instanceof ITreeElement)
+    {
+      Object[] children = ((ITreeElement) parentElement).getChildren();
+      if (children != null)
+      {
+        int length = children.length;
+        for (int i = 0; i < length; i++)
+        {
+          Object child = children[i];
+          if (child instanceof IADTObject)
+          {
+            ((IADTObject) child).registerListener(this);
+          }
+        }
+      }
+      return children;
+    }
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+   */
+  public Object getParent(Object element)
+  {
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+   */
+  public boolean hasChildren(Object element)
+  {
+    if (element instanceof ITreeElement)
+    {
+      return ((ITreeElement) element).hasChildren();
+    }
+    return false;
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+   */
+  public Object[] getElements(Object inputElement)
+  {
+    return getChildren(inputElement);
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+   */
+  public void dispose()
+  {
+    Object input = viewer.getInput();
+    if (input instanceof IADTObject)
+    {
+      removeListener((IADTObject) input);
+    }
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+   */
+  public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+  {
+    this.viewer = viewer;
+    this.oldInput = oldInput;
+    this.newInput = newInput;
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.xsd.adt.facade.IADTObjectListener#propertyChanged(java.lang.Object, java.lang.String)
+   */
+  public void propertyChanged(Object object, String property)
+  {
+    if (viewer instanceof TreeViewer)
+    {
+      TreeViewer treeViewer = (TreeViewer) viewer;
+      treeViewer.refresh(object);
+      treeViewer.reveal(object);
+    }
+  }
+
+  /**
+   * @param model
+   */
+  private void removeListener(IADTObject model)
+  {
+    model.unregisterListener(this);
+    Object[] children = getChildren(model);
+    if (children != null)
+    {
+      int length = children.length;
+      for (int i = 0; i < length; i++)
+      {
+        Object child = children[i];
+        if (child instanceof IADTObject)
+        {
+          removeListener((IADTObject) child);
+        }
+      }
+    }
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTLabelProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTLabelProvider.java
new file mode 100644
index 0000000..d662507
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ADTLabelProvider.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * 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.xsd.adt.outline;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.swt.graphics.Image;
+
+public class ADTLabelProvider implements ILabelProvider
+{
+
+  public ADTLabelProvider()
+  {
+    super();
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+   */
+  public Image getImage(Object element)
+  {
+    if (element instanceof ITreeElement)
+    {
+      return ((ITreeElement)element).getImage();
+    }
+    return null;
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+   */
+  public String getText(Object element)
+  {
+    if (element instanceof ITreeElement)
+    {
+      return ((ITreeElement)element).getText();
+    }
+    return "";
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
+   */
+  public void addListener(ILabelProviderListener listener)
+  {
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
+   */
+  public void dispose()
+  {
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
+   */
+  public boolean isLabelProperty(Object element, String property)
+  {
+    return false;
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
+   */
+  public void removeListener(ILabelProviderListener listener)
+  {
+
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ITreeElement.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ITreeElement.java
new file mode 100644
index 0000000..49304a7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/outline/ITreeElement.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * 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.xsd.adt.outline;
+
+import org.eclipse.swt.graphics.Image;
+
+public interface ITreeElement
+{
+  public final static ITreeElement[] EMPTY_LIST = {};
+  ITreeElement[] getChildren();
+  ITreeElement getParent();
+  boolean hasChildren();
+  String getText();
+  Image getImage();
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/properties/ADTTabbedPropertySheetPage.java b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/properties/ADTTabbedPropertySheetPage.java
new file mode 100644
index 0000000..d31d2ee
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-adt/org/eclipse/wst/xsd/adt/properties/ADTTabbedPropertySheetPage.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * 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.xsd.adt.properties;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+
+public class ADTTabbedPropertySheetPage extends TabbedPropertySheetPage
+{
+  public ADTTabbedPropertySheetPage(ITabbedPropertySheetPageContributor tabbedPropertySheetPageContributor)
+  {
+    super(tabbedPropertySheetPageContributor);
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
+   */
+  public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+
+      Object selected = ((StructuredSelection)selection).getFirstElement();
+//      if (selected instanceof EditPart)
+//      {
+//        Object model = ((EditPart)selected).getModel();
+//        selection = new StructuredSelection(model);
+//      }
+      super.selectionChanged(part, selection);
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeDeclarationAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeDeclarationAction.java
new file mode 100644
index 0000000..f5b054e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeDeclarationAction.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDAttributeDeclarationCommand;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+
+public class AddXSDAttributeDeclarationAction extends XSDBaseAction
+{
+  public static String ID = "AddXSDAttributeAction";
+
+  public AddXSDAttributeDeclarationAction(IWorkbenchPart part)
+  {
+    super(part);
+    setText("Add Attribute");
+    setId(ID);
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+    if (selection instanceof XSDBaseAdapter)
+    {
+      selection = ((XSDBaseAdapter) selection).getTarget();
+    }
+    AddXSDAttributeDeclarationCommand command = null;
+    if (selection instanceof XSDComplexTypeDefinition)
+    {
+      command = new AddXSDAttributeDeclarationCommand("Add Attribute", (XSDComplexTypeDefinition) selection);
+      getCommandStack().execute(command);
+    }
+    else if (selection instanceof XSDAttributeUse)
+    {
+      XSDAttributeUse xsdAttributeUse = (XSDAttributeUse) selection;
+      XSDConcreteComponent parent = null;
+      XSDComplexTypeDefinition ct = null;
+      for (parent = xsdAttributeUse.getContainer(); parent != null;)
+      {
+        if (parent instanceof XSDComplexTypeDefinition)
+        {
+          ct = (XSDComplexTypeDefinition) parent;
+          break;
+        }
+        parent = parent.getContainer();
+      }
+      if (ct != null)
+      {
+        command = new AddXSDAttributeDeclarationCommand("Add Attribute", ct);
+        getCommandStack().execute(command);
+      }
+    }
+    else if (selection instanceof XSDAttributeGroupDefinition)
+    {
+      command = new AddXSDAttributeDeclarationCommand("Add Attribute", (XSDAttributeGroupDefinition)selection);
+      getCommandStack().execute(command);
+    }
+    else if (selection instanceof XSDSchema)
+    {
+      command = new AddXSDAttributeDeclarationCommand("Add Attribute", (XSDSchema)selection);
+      getCommandStack().execute(command);
+    }
+    
+    if (command != null)
+    {
+      Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+      if (adapter != null)
+        provider.setSelection(new StructuredSelection(adapter));
+    }
+
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeGroupDefinitionAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeGroupDefinitionAction.java
new file mode 100644
index 0000000..29daef2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDAttributeGroupDefinitionAction.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDAttributeGroupDefinitionCommand;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDSchema;
+
+public class AddXSDAttributeGroupDefinitionAction extends XSDBaseAction
+{
+  public static String ID = "AddXSDAttributeGroupDefinitionAction";
+
+  public AddXSDAttributeGroupDefinitionAction(IWorkbenchPart part)
+  {
+    super(part);
+    setText("Add Attribute Group");
+    setId(ID);
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+    if (selection instanceof XSDBaseAdapter)
+    {
+      selection = ((XSDBaseAdapter) selection).getTarget();
+    }
+
+    AddXSDAttributeGroupDefinitionCommand command = null;
+    if (selection instanceof XSDComplexTypeDefinition)
+    {
+      command = new AddXSDAttributeGroupDefinitionCommand("Add Attribute Group Ref", (XSDComplexTypeDefinition) selection);
+      getCommandStack().execute(command);
+    }
+    else if (selection instanceof XSDSchema)
+    {
+      command = new AddXSDAttributeGroupDefinitionCommand("Add Attribute Group Definition", (XSDSchema) selection);
+      getCommandStack().execute(command);
+    }
+
+    if (command != null)
+    {
+      Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+      if (adapter != null)
+        provider.setSelection(new StructuredSelection(adapter));
+    }
+
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDComplexTypeDefinitionAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDComplexTypeDefinitionAction.java
new file mode 100644
index 0000000..2c9cb5e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDComplexTypeDefinitionAction.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDComplexTypeDefinitionCommand;
+import org.eclipse.xsd.XSDSchema;
+
+public class AddXSDComplexTypeDefinitionAction extends XSDBaseAction
+{
+  public static final String ID = "org.eclipse.wst.xsd.editor.AddXSDComplexTypeDefinitionAction";
+
+  public AddXSDComplexTypeDefinitionAction(IWorkbenchPart part)
+  {
+    super(part);
+    setText("Add Complex Type");
+    setId(ID);
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+    if (selection instanceof XSDBaseAdapter)
+    {
+      selection = ((XSDBaseAdapter) selection).getTarget();
+    }
+
+    if (selection instanceof XSDSchema)
+    {
+      AddXSDComplexTypeDefinitionCommand command = new AddXSDComplexTypeDefinitionCommand("Add Complex Type", (XSDSchema) selection);
+      getCommandStack().execute(command);
+      Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+      if (adapter != null)
+        provider.setSelection(new StructuredSelection(adapter));
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDElementAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDElementAction.java
new file mode 100644
index 0000000..cb0482d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDElementAction.java
@@ -0,0 +1,126 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDElementCommand;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDSchema;
+
+//revisit this and see if we can reuse AddFieldAction??
+
+public class AddXSDElementAction extends XSDBaseAction
+{
+  public static String ID = "org.eclipse.wst.xsd.ui.common.actions.AddXSDElementAction";
+  public static String REF_ID = "org.eclipse.wst.xsd.ui.common.actions.AddXSDElementReferenceAction";
+  boolean isReference;
+  
+  public AddXSDElementAction(IWorkbenchPart part, String id, String label, boolean isReference)
+  {
+    super(part);
+    setText(label);
+    setId(id);
+    this.isReference = isReference;
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+    if (selection instanceof XSDBaseAdapter)
+    {
+      selection = ((XSDBaseAdapter) selection).getTarget();
+    }
+    AddXSDElementCommand command = null;
+    if (selection instanceof XSDComplexTypeDefinition)
+    {
+      command = new AddXSDElementCommand(getText(), (XSDComplexTypeDefinition) selection);
+      command.setReference(isReference);
+      getCommandStack().execute(command);
+    }
+    else if (selection instanceof XSDModelGroupDefinition)
+    {
+      command = new AddXSDElementCommand(getText(), (XSDModelGroupDefinition) selection);
+      command.setReference(isReference);
+      getCommandStack().execute(command);
+    }
+    else if (selection instanceof XSDSchema)
+    {
+      command = new AddXSDElementCommand(getText(), (XSDSchema) selection);
+      getCommandStack().execute(command);
+    }
+    else if (selection instanceof XSDModelGroup)
+    {
+      XSDModelGroup modelGroup = (XSDModelGroup) selection;
+      XSDConcreteComponent component = modelGroup.getContainer();
+      XSDComplexTypeDefinition ct = null;
+      while (component != null)
+      {
+        if (component instanceof XSDComplexTypeDefinition)
+        {
+          ct = (XSDComplexTypeDefinition) component;
+          break;
+        }
+        component = component.getContainer();
+      }
+
+      if (ct != null)
+      {
+        command = new AddXSDElementCommand(getText(), (XSDModelGroup) selection, ct);
+      }
+      else
+      {
+        command = new AddXSDElementCommand(getText(), (XSDModelGroup) selection);
+      }
+      command.setReference(isReference);
+      getCommandStack().execute(command);
+    }
+    else if (selection instanceof XSDElementDeclaration || selection instanceof XSDAttributeUse)
+    {
+      XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent) selection;
+      XSDConcreteComponent parent = null;
+      XSDComplexTypeDefinition ct = null;
+      for (parent = xsdConcreteComponent.getContainer(); parent != null; )
+      {
+        if (parent instanceof XSDComplexTypeDefinition)
+        {
+          ct = (XSDComplexTypeDefinition)parent;
+          break;
+        }
+        parent = parent.getContainer();
+      }
+      if (ct != null)
+      {
+        command = new AddXSDElementCommand(getText(), ct);
+        command.setReference(isReference);
+        getCommandStack().execute(command);
+      }
+    }
+    
+    if (command != null)
+    {
+      Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+      if (adapter != null)
+        provider.setSelection(new StructuredSelection(adapter));
+    }
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupAction.java
new file mode 100644
index 0000000..4fc6840
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupAction.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDModelGroupCommand;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+
+public class AddXSDModelGroupAction extends XSDBaseAction
+{
+  public static String SEQUENCE_ID = "AddXSDSequenceModelGroupAction";
+  public static String CHOICE_ID = "AddXSDChoiceModelGroupAction";
+  public static String ALL_ID = "AddXSDAllModelGroupAction";
+  XSDCompositor xsdCompositor;
+
+  public AddXSDModelGroupAction(IWorkbenchPart part, XSDCompositor compositor, String ID)
+  {
+    super(part);
+    setText(getLabel(compositor));
+    setId(ID);
+    this.xsdCompositor = compositor;
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+    if (selection instanceof XSDBaseAdapter)
+    {
+      XSDConcreteComponent xsdComponent = (XSDConcreteComponent) ((XSDBaseAdapter) selection).getTarget();
+      AddXSDModelGroupCommand command = null;
+      if (xsdComponent instanceof XSDElementDeclaration)
+      {
+        XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) xsdComponent;
+
+        command = new AddXSDModelGroupCommand(getLabel(xsdCompositor), xsdElementDeclaration, xsdCompositor);
+        getCommandStack().execute(command);
+      }
+      else if (xsdComponent instanceof XSDModelGroup)
+      {
+        XSDModelGroup xsdModelGroup = (XSDModelGroup) xsdComponent;
+
+        command = new AddXSDModelGroupCommand(getLabel(xsdCompositor), xsdModelGroup, xsdCompositor);
+        getCommandStack().execute(command);
+      }
+      else if (xsdComponent instanceof XSDComplexTypeDefinition)
+      {
+        command = new AddXSDModelGroupCommand(getLabel(xsdCompositor), xsdComponent, xsdCompositor);
+        getCommandStack().execute(command);
+      }
+     
+      if (command != null)
+      {
+        Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+        if (adapter != null)
+          provider.setSelection(new StructuredSelection(adapter));
+      }
+
+    }
+  }
+
+  private String getLabel(XSDCompositor compositor)
+  {
+    String result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SEQUENCE"); //$NON-NLS-1$
+    if (compositor != null)
+    {
+      if (compositor == XSDCompositor.CHOICE_LITERAL)
+      {
+        result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CHOICE"); //$NON-NLS-1$
+      }
+      else if (compositor == XSDCompositor.ALL_LITERAL)
+      {
+        result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ALL");//$NON-NLS-1$
+      }
+    }
+    return result;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupDefinitionAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupDefinitionAction.java
new file mode 100644
index 0000000..2f2a542
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDModelGroupDefinitionAction.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDModelGroupDefinitionCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public class AddXSDModelGroupDefinitionAction extends XSDBaseAction
+{
+  public static final String MODELGROUPDEFINITION_ID = "AddXSDModelGroupDefinitionAction";
+  public static final String MODELGROUPDEFINITIONREF_ID = "AddXSDModelGroupDefinitionRefAction";
+  boolean isReference;
+
+  public AddXSDModelGroupDefinitionAction(IWorkbenchPart part, boolean isReference)
+  {
+    super(part);
+    this.isReference = isReference;
+    if (isReference)
+    {
+      setText("Add Group Ref");
+      setId(MODELGROUPDEFINITION_ID);
+    }
+    else
+    {
+      setText("Add Group");
+      setId(MODELGROUPDEFINITIONREF_ID);
+    }
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+    XSDConcreteComponent xsdConcreteComponent = null;
+    if (selection instanceof XSDBaseAdapter)
+    {
+      xsdConcreteComponent = (XSDConcreteComponent) ((XSDBaseAdapter) selection).getTarget();
+    }
+    if (xsdConcreteComponent != null)
+    {
+      AddXSDModelGroupDefinitionCommand command = new AddXSDModelGroupDefinitionCommand(getText(), xsdConcreteComponent, isReference);
+      getCommandStack().execute(command);
+      Adapter adapter = XSDAdapterFactory.getInstance().adapt(command.getAddedComponent());
+      if (adapter != null)
+        provider.setSelection(new StructuredSelection(adapter));
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDSimpleTypeDefinitionAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDSimpleTypeDefinitionAction.java
new file mode 100644
index 0000000..14ee444
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/AddXSDSimpleTypeDefinitionAction.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.AddXSDSimpleTypeDefinitionCommand;
+import org.eclipse.xsd.XSDSchema;
+
+public class AddXSDSimpleTypeDefinitionAction extends XSDBaseAction
+{
+  public static final String ID = "org.eclipse.wst.xsd.editor.AddXSDSimpleTypeDefinitionAction";
+
+  public AddXSDSimpleTypeDefinitionAction(IWorkbenchPart part)
+  {
+    super(part);
+    setText("Add Simple Type");
+    setId(ID);
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+    if (selection instanceof XSDBaseAdapter)
+    {
+      selection = ((XSDBaseAdapter) selection).getTarget();
+    }
+
+    if (selection instanceof XSDSchema)
+    {
+      AddXSDSimpleTypeDefinitionCommand command = new AddXSDSimpleTypeDefinitionCommand("Add Simple Type", (XSDSchema) selection);
+      getCommandStack().execute(command);
+    }
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/DeleteXSDConcreteComponentAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/DeleteXSDConcreteComponentAction.java
new file mode 100644
index 0000000..ff9b772
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/DeleteXSDConcreteComponentAction.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public class DeleteXSDConcreteComponentAction extends XSDBaseAction
+{
+  public static final String DELETE_XSD_COMPONENT_ID = "org.eclipse.wst.xsd.ui.common.actions.DeleteXSDConcreteComponentAction";   //$NON-NLS-1$
+
+  public DeleteXSDConcreteComponentAction(IWorkbenchPart part)
+  {
+    super(part);
+    setText("Delete");
+    setId(DELETE_XSD_COMPONENT_ID);
+    setImageDescriptor(XSDEditorPlugin.getImageDescriptor("icons/delete_obj.gif") );
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+    if (selection instanceof XSDBaseAdapter)
+    {
+      selection = ((XSDBaseAdapter) selection).getTarget();
+    }
+
+    if (selection instanceof XSDConcreteComponent)
+    {
+      DeleteCommand command = new DeleteCommand(getText(), (XSDConcreteComponent) selection);
+      getCommandStack().execute(command);
+    }
+
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/OpenInNewEditor.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/OpenInNewEditor.java
new file mode 100644
index 0000000..1e781a7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/OpenInNewEditor.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.editor.InternalXSDMultiPageEditor;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDComplexTypeDefinitionAdapter;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+
+public class OpenInNewEditor extends BaseSelectionAction
+{
+  public static final String ID = "OpenInNewEditor";
+
+  public OpenInNewEditor(IWorkbenchPart part)
+  {
+    super(part);
+    setText("Open In New Editor");
+    setId(ID);
+  }
+
+  protected boolean calculateEnabled()
+  {
+    return true;
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+    if (selection instanceof XSDComplexTypeDefinitionAdapter)
+    {
+      XSDComplexTypeDefinitionAdapter xsdAdapter = (XSDComplexTypeDefinitionAdapter) selection;
+      XSDComplexTypeDefinition fComponent = (XSDComplexTypeDefinition) xsdAdapter.getTarget();
+
+      if (fComponent.getSchema() != null)
+      {
+        String schemaLocation = URIHelper.removePlatformResourceProtocol(fComponent.getSchema().getSchemaLocation());
+        IPath schemaPath = new Path(schemaLocation);
+        IFile schemaFile = ResourcesPlugin.getWorkspace().getRoot().getFile(schemaPath);
+        if (schemaFile != null && schemaFile.exists())
+        {
+          IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+          if (workbenchWindow != null)
+          {
+            IWorkbenchPage page = workbenchWindow.getActivePage();
+            try
+            {
+              // TODO: Should use this to open in default editor
+              // IEditorPart editorPart = IDE.openEditor(page, schemaFile, true);
+              IEditorPart editorPart = page.openEditor(new FileEditorInput(schemaFile), "org.eclipse.wst.xsd.editor.InternalXSDMultiPageEditor", true);
+
+              if (editorPart instanceof InternalXSDMultiPageEditor)
+              {
+                InternalXSDMultiPageEditor xsdEditor = (InternalXSDMultiPageEditor) editorPart;
+
+                xsdEditor.openOnGlobalReference(fComponent);
+              }
+
+            }
+            catch (PartInitException pie)
+            {
+            }
+          }
+        }
+      }
+
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetMultiplicityAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetMultiplicityAction.java
new file mode 100644
index 0000000..ad92a70
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetMultiplicityAction.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.SetMultiplicityCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public class SetMultiplicityAction extends XSDBaseAction
+{
+  public static String REQUIRED_ID = "org.eclipse.wst.xsd.ui.common.actions.SetMultiplicity.REQUIRED_ID";
+  public static String ZERO_OR_ONE_ID = "org.eclipse.wst.xsd.ui.common.actions.SetMultiplicity.ZERO_OR_ONE_ID";
+  public static String ZERO_OR_MORE_ID = "org.eclipse.wst.xsd.ui.common.actions.SetMultiplicity.ZERO_OR_MORE_ID";
+  public static String ONE_OR_MORE_ID = "org.eclipse.wst.xsd.ui.common.actions.SetMultiplicity.ONE_OR_MORE_ID";
+  
+  SetMultiplicityCommand command;
+  
+  public SetMultiplicityAction(IWorkbenchPart part, String label, String ID)
+  {
+    super(part);
+    setText(label);
+    setId(ID);
+    command = new SetMultiplicityCommand(label);
+  }
+  
+  public void setMaxOccurs(int i)
+  {
+    command.setMaxOccurs(i);
+  }
+
+  public void setMinOccurs(int i)
+  {
+    command.setMinOccurs(i);
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+    XSDConcreteComponent xsdConcreteComponent = null;
+    if (selection instanceof XSDBaseAdapter)
+    {
+      xsdConcreteComponent = (XSDConcreteComponent)((XSDBaseAdapter) selection).getTarget();
+    }
+    if (xsdConcreteComponent != null)
+    {
+      command.setXSDConcreteComponent(xsdConcreteComponent);
+      getCommandStack().execute(command);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetTypeAction.java
new file mode 100644
index 0000000..1040e95
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/SetTypeAction.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.commands.SetTypeCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public class SetTypeAction extends XSDBaseAction
+{
+  public static final String SET_NEW_TYPE_ID = "SetTypeAction_AddType";
+  public static final String SELECT_EXISTING_TYPE_ID = "SetTypeAction_ExistingType";
+
+  SetTypeCommand command;
+
+  public SetTypeAction(String label, String ID, IWorkbenchPart part)
+  {
+    super(part);
+    setText(label);
+    setId(ID);
+  }
+
+  public void run()
+  {
+    Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+
+    if (selection instanceof XSDBaseAdapter)
+    {
+      Object target = ((XSDBaseAdapter) selection).getTarget();
+
+      if (target instanceof XSDConcreteComponent)
+      {
+        command = new SetTypeCommand(getText(), getId(), (XSDConcreteComponent) target);
+        command.setAdapter((XSDBaseAdapter) selection);
+        getCommandStack().execute(command);
+      }
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/XSDBaseAction.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/XSDBaseAction.java
new file mode 100644
index 0000000..7374229
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/actions/XSDBaseAction.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.actions;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.adt.actions.BaseSelectionAction;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+
+public class XSDBaseAction extends BaseSelectionAction
+{
+
+  public XSDBaseAction(IWorkbenchPart part)
+  {
+    super(part);
+  }
+
+  protected boolean calculateEnabled()
+  {
+    if (getWorkbenchPart() instanceof IEditorPart)
+    {
+      IEditorPart owningEditor = (IEditorPart)getWorkbenchPart();
+      
+      Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+      if (selection instanceof XSDBaseAdapter)
+      {
+        selection = ((XSDBaseAdapter) selection).getTarget();
+      }
+      XSDSchema xsdSchema = null;
+      if (selection instanceof XSDConcreteComponent)
+      {
+        xsdSchema = ((XSDConcreteComponent)selection).getSchema();
+      }
+      
+      if (xsdSchema != null && xsdSchema == owningEditor.getAdapter(XSDSchema.class))
+      {
+        return true;
+      }
+    }
+    return false;
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoAttributeCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoAttributeCommand.java
new file mode 100644
index 0000000..7d4117d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoAttributeCommand.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.wst.xml.core.internal.contentmodel.util.DOMNamespaceInfoManager;
+import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceInfo;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.w3c.dom.Element;
+
+public class AddAppInfoAttributeCommand extends AddAppInfoCommand
+{
+  private static DOMNamespaceInfoManager manager = new DOMNamespaceInfoManager();
+  private XSDAttributeDeclaration attribute;
+  private boolean appInfoAttributeAdded = false;
+  private boolean prefixAdded = false;
+  private String attributeQName;
+  private String namespacePrefix;
+  
+  XSDConcreteComponent component;
+
+
+  public AddAppInfoAttributeCommand(String label, XSDConcreteComponent component,
+      XSDAttributeDeclaration attribute)
+  {
+    super(label);
+    this.component = component;
+    this.attribute = attribute;
+  }
+
+  public void execute()
+  {
+    namespacePrefix = handleNamespacePrefices();
+    
+    attributeQName = namespacePrefix + ":" + attribute.getName();
+    String value = component.getElement().getAttribute(attributeQName);
+    if ( value == null) {
+      appInfoAttributeAdded = true;
+      component.getElement().setAttribute(attributeQName, "");
+    }
+  }
+
+  public void undo()
+  {
+    super.undo();
+    // TODO (allison) remove the namespace prefix when applicable as well
+    if (appInfoAttributeAdded){
+      component.getElement().removeAttribute(attributeQName);
+    }
+  }
+
+  /** Create a namespace prefix if needed, other wise retrieve 
+   * a predefined namespace prefix
+   * @return   */
+  private String handleNamespacePrefices()
+  {
+    Element schemaElement = component.getSchema().getElement();
+    String prefix = null;
+    
+    // If target namespace of the attribute already exists
+    List namespacePrefices = manager.getNamespaceInfoList(schemaElement);
+    for (int i = 0; i < namespacePrefices.size(); i++){
+      NamespaceInfo info = (NamespaceInfo) namespacePrefices.get(i);
+      if ( info.uri.equals(attribute.getTargetNamespace())) {
+        prefix = info.prefix;
+      }
+    }
+    
+    // Create unquie namespace prefix
+    if ( prefix == null){
+      prefixAdded = true;
+      prefix = createUniquePrefix(component);
+    }
+
+    NamespaceInfo info = new NamespaceInfo(attribute.getTargetNamespace(), prefix, "");
+    List infoList = new ArrayList(1);
+    infoList.add(info);
+    manager.addNamespaceInfo(schemaElement, infoList, false);
+    return prefix;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoCommand.java
new file mode 100644
index 0000000..133cd8e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoCommand.java
@@ -0,0 +1,35 @@
+package org.eclipse.wst.xsd.ui.common.commands;
+
+import java.util.Map;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.SpecificationForAppinfoSchema;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public class AddAppInfoCommand extends Command
+{
+  protected SpecificationForAppinfoSchema appInfoSchemaSpec;
+
+  protected AddAppInfoCommand(String label)
+  {
+    super(label);
+  }
+
+  public void setSchemaProperties(SpecificationForAppinfoSchema appInfoSchemaSpec)
+  {
+    this.appInfoSchemaSpec = appInfoSchemaSpec;
+  }
+  
+  protected String createUniquePrefix(XSDConcreteComponent component)
+  {
+    String prefix = "sdo";
+    Map prefMapper = component.getSchema().getQNamePrefixToNamespaceMap();
+    if ( prefMapper.get(prefix) != null){
+      int i = 1;
+      while ( prefMapper.get(prefix + i) != null)
+        i++;
+      prefix += i;
+    }
+    return prefix;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoElementCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoElementCommand.java
new file mode 100644
index 0000000..a0cbe17
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddAppInfoElementCommand.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import java.util.List;
+
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.SpecificationForAppinfoSchema;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSchema;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class AddAppInfoElementCommand extends AddAppInfoCommand
+{
+  XSDConcreteComponent input;
+  XSDElementDeclaration element;
+  Element appInfo;
+
+  public AddAppInfoElementCommand(String label, XSDConcreteComponent input, XSDElementDeclaration element)
+  {
+    super(label);
+    this.input = input;
+    this.element = element;
+  }
+
+  public void execute()
+  {
+    super.execute();
+    addAnnotationSet(input.getSchema(), appInfoSchemaSpec);
+  }
+
+  public void undo()
+  {
+    super.undo();
+    XSDAnnotation xsdAnnotation = XSDCommonUIUtils.getInputXSDAnnotation(input, false);
+    xsdAnnotation.getElement().removeChild(appInfo);
+    List appInfos = xsdAnnotation.getApplicationInformation();
+    appInfos.remove(appInfo);
+    xsdAnnotation.updateElement();
+
+  }
+
+  public void setSchemaProperties(SpecificationForAppinfoSchema appInfoSchemaSpec)
+  {
+    this.appInfoSchemaSpec = appInfoSchemaSpec;
+  }
+
+  public void addAnnotationSet(XSDSchema xsdSchema, SpecificationForAppinfoSchema asiSpec)
+  {
+    XSDAnnotation xsdAnnotation = XSDCommonUIUtils.getInputXSDAnnotation(input, true);
+    addAnnotationSet(asiSpec, xsdAnnotation);
+  }
+
+  private void addAnnotationSet(SpecificationForAppinfoSchema asiProperties, XSDAnnotation xsdAnnotation)
+  {
+    appInfo = xsdAnnotation.createApplicationInformation(asiProperties.getNamespaceURI());
+
+    if (appInfo != null)
+    {
+      Document doc = appInfo.getOwnerDocument();
+
+      Element rootElement = doc.createElementNS(asiProperties.getNamespaceURI(), element.getName());
+      
+      String prefix = createUniquePrefix(input);
+      rootElement.setPrefix(prefix);
+
+      Attr nsURIAttribute = doc.createAttribute("xmlns:"+prefix);
+      nsURIAttribute.setValue(asiProperties.getNamespaceURI());
+      rootElement.setAttributeNode(nsURIAttribute);
+      appInfo.appendChild(rootElement);
+
+      xsdAnnotation.getElement().appendChild(appInfo);
+      List appInfos = xsdAnnotation.getApplicationInformation();
+      appInfos.add(appInfo);
+      xsdAnnotation.updateElement();
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddDocumentationCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddDocumentationCommand.java
new file mode 100644
index 0000000..8ed0c27
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddDocumentationCommand.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import java.util.List;
+
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class AddDocumentationCommand extends BaseCommand
+{
+  XSDAnnotation xsdAnnotation;
+  XSDConcreteComponent input;
+  String newValue, oldValue;
+  boolean documentationExists;
+  Element documentationElement;
+
+  public AddDocumentationCommand(String label, XSDAnnotation xsdAnnotation, XSDConcreteComponent input, String newValue, String oldValue)
+  {
+    super(label);
+    this.xsdAnnotation = xsdAnnotation;
+    this.input = input;
+    this.newValue = newValue;
+    this.oldValue = oldValue;
+  }
+
+  public void execute()
+  {
+    xsdAnnotation = XSDCommonUIUtils.getInputXSDAnnotation((XSDConcreteComponent) input, true);
+    Element element = xsdAnnotation.getElement();
+
+    List documentationList = xsdAnnotation.getUserInformation();
+    documentationElement = null;
+    documentationExists = false;
+    if (documentationList.size() > 0)
+    {
+      documentationExists = true;
+      documentationElement = (Element) documentationList.get(0);
+    }
+
+    if (documentationElement == null)
+    {
+      documentationElement = xsdAnnotation.createUserInformation(null);
+      element.appendChild(documentationElement);
+      formatChild(documentationElement);
+      // Defect in model....I create it but the model object doesn't appear
+      // to be updated
+      xsdAnnotation.updateElement();
+      xsdAnnotation.setElement(element);
+    }
+
+    try
+    {
+      if (documentationElement.hasChildNodes())
+      {
+        if (documentationElement instanceof IDOMElement)
+        {
+          IDOMElement domElement = (IDOMElement) documentationElement;
+
+          Node firstChild = documentationElement.getFirstChild();
+          Node lastChild = documentationElement.getLastChild();
+          int start = 0;
+          int end = 0;
+
+          IDOMModel model = domElement.getModel();
+          IDOMDocument doc = model.getDocument();
+          IDOMNode first = null;
+          if (firstChild instanceof IDOMNode)
+          {
+            first = (IDOMNode) firstChild;
+            start = first.getStartOffset();
+          }
+          if (lastChild instanceof IDOMNode)
+          {
+            IDOMNode last = (IDOMNode) lastChild;
+            end = last.getEndOffset();
+          }
+
+          if (domElement != null)
+          {
+            oldValue = domElement.getModel().getStructuredDocument().get(start, end - start);
+            domElement.getModel().getStructuredDocument().replaceText(documentationElement, start, end - start, newValue);
+          }
+        }
+      }
+      else
+      {
+        if (newValue.length() > 0)
+        {
+          oldValue = "";
+          Node childNode = documentationElement.getOwnerDocument().createTextNode(newValue);
+          documentationElement.appendChild(childNode);
+        }
+      }
+    }
+    catch (Exception e)
+    {
+
+    }
+  }
+
+  public void undo()
+  {
+    super.undo();
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddEnumerationsCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddEnumerationsCommand.java
new file mode 100644
index 0000000..90cdc4c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddEnumerationsCommand.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+
+public class AddEnumerationsCommand extends BaseCommand
+{
+  XSDSimpleTypeDefinition simpleType;
+  String value;
+  
+  public AddEnumerationsCommand(String label, XSDSimpleTypeDefinition simpleType)
+  {
+    super(label);
+    this.simpleType = simpleType;
+  }
+  
+  public void setValue(String value)
+  {
+    this.value = value; 
+  }
+
+  public void execute()
+  {
+    XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+    XSDEnumerationFacet enumerationFacet = factory.createXSDEnumerationFacet();
+    enumerationFacet.setLexicalValue(value);
+    simpleType.getFacetContents().add(enumerationFacet);
+    formatChild(simpleType.getElement());
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddExtensibilityElementCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddExtensibilityElementCommand.java
new file mode 100644
index 0000000..26a2e7b
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddExtensibilityElementCommand.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.SpecificationForAppinfoSchema;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class AddExtensibilityElementCommand extends Command
+{
+  Element input, elementToAdd;
+  SpecificationForAppinfoSchema appInfoSchemaSpec;
+
+  public AddExtensibilityElementCommand(String label, Element input, Element elementToAdd)
+  {
+    super(label);
+    this.input = input;
+    this.elementToAdd = elementToAdd;
+  }
+
+  public void execute()
+  {
+    super.execute();
+    addElement();
+  }
+
+  public void undo()
+  {
+    super.undo();
+    // TODO
+  }
+
+  public void setSchemaProperties(SpecificationForAppinfoSchema appInfoSchemaSpec)
+  {
+    this.appInfoSchemaSpec = appInfoSchemaSpec;
+  }
+
+  private void addElement()
+  {
+    if (input != null)
+    {
+      Document doc = input.getOwnerDocument();
+      String name = elementToAdd.getAttribute("name");
+      try
+      {
+        Element rootElement = doc.createElementNS(appInfoSchemaSpec.getNamespaceURI(), name);
+        String prefix = input.getPrefix();
+        rootElement.setPrefix(prefix);
+        String xmlns = (prefix == null || prefix.equals("")) ? "xmlns" : "xmlns:" + prefix;
+        Attr nsURIAttribute = doc.createAttribute(xmlns);
+        nsURIAttribute.setValue(appInfoSchemaSpec.getNamespaceURI());
+        rootElement.setAttributeNode(nsURIAttribute);
+        input.appendChild(rootElement);
+
+      }
+      catch (Exception e)
+      {
+
+      }
+
+    }
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeDeclarationCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeDeclarationCommand.java
new file mode 100644
index 0000000..0f0a15f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeDeclarationCommand.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.w3c.dom.Text;
+
+public class AddXSDAttributeDeclarationCommand extends BaseCommand
+{
+  XSDComplexTypeDefinition xsdComplexTypeDefinition;
+  XSDModelGroup xsdModelGroup;
+//  XSDSchema xsdSchema;
+  XSDConcreteComponent parent;
+
+  public AddXSDAttributeDeclarationCommand(String label, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+  {
+    super(label);
+    this.xsdComplexTypeDefinition = xsdComplexTypeDefinition;
+  }
+  
+  public AddXSDAttributeDeclarationCommand(String label, XSDConcreteComponent parent)
+  {
+    super(label);
+    this.parent = parent;
+  }
+
+  public void execute()
+  {
+    XSDAttributeDeclaration attribute = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
+    if (parent == null)
+    {
+      attribute.setName(getNewName("Attribute")); //$NON-NLS-1$
+      attribute.setTypeDefinition(xsdComplexTypeDefinition.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string")); //$NON-NLS-1$
+
+      XSDAttributeUse attributeUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
+      attributeUse.setAttributeDeclaration(attribute);
+      attributeUse.setContent(attribute);
+
+      if (xsdComplexTypeDefinition.getAttributeContents() != null)
+      {
+        xsdComplexTypeDefinition.getAttributeContents().add(attributeUse);
+        formatChild(xsdComplexTypeDefinition.getElement());
+      }
+      addedXSDConcreteComponent = attributeUse;
+    }
+    else
+    {
+      attribute.setTypeDefinition(parent.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string")); //$NON-NLS-1$
+      if (parent instanceof XSDSchema)
+      {
+        attribute.setName(XSDCommonUIUtils.createUniqueElementName("NewAttribute", parent.getSchema().getAttributeDeclarations()));
+        XSDSchema xsdSchema = (XSDSchema)parent;
+        Text textNode = xsdSchema.getDocument().createTextNode("\n");
+        xsdSchema.getElement().appendChild(textNode);
+        xsdSchema.getContents().add(attribute);
+      }
+      else if (parent instanceof XSDAttributeGroupDefinition)
+      {
+        List list = new ArrayList();
+        Iterator i = ((XSDAttributeGroupDefinition)parent).getResolvedAttributeGroupDefinition().getAttributeUses().iterator();
+        while (i.hasNext())
+        {
+          XSDAttributeUse use = (XSDAttributeUse)i.next();
+          list.add(use.getAttributeDeclaration());
+        }
+        attribute.setName(XSDCommonUIUtils.createUniqueElementName("NewAttribute", list));
+        XSDAttributeUse attributeUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
+        attributeUse.setAttributeDeclaration(attribute);
+        attributeUse.setContent(attribute);
+ 
+        ((XSDAttributeGroupDefinition)parent).getResolvedAttributeGroupDefinition().getContents().add(attributeUse);
+        formatChild(parent.getElement());
+      }
+      addedXSDConcreteComponent = attribute;
+    }
+  }
+
+  ArrayList names;
+
+  protected String getNewName(String description)
+  {
+    String candidateName = "New" + description; //$NON-NLS-1$
+    XSDConcreteComponent parent = xsdComplexTypeDefinition;
+    names = new ArrayList();
+    int i = 1;
+    if (parent instanceof XSDComplexTypeDefinition)
+    {
+      XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition) parent;
+      walkUpInheritance(ct);
+
+      boolean ready = false;
+      while (!ready)
+      {
+        ready = true;
+        for (Iterator iter = names.iterator(); iter.hasNext();)
+        {
+          String attrName = (String) iter.next();
+          if (candidateName.equals(attrName))
+          {
+            ready = false;
+            candidateName = "New" + description + String.valueOf(i); //$NON-NLS-1$
+            i++;
+          }
+        }
+      }
+    }
+    return candidateName;
+  }
+
+  private void walkUpInheritance(XSDComplexTypeDefinition ct)
+  {
+    updateNames(ct);
+    XSDTypeDefinition typeDef = ct.getBaseTypeDefinition();
+    if (ct != ct.getRootType())
+    {
+      if (typeDef instanceof XSDComplexTypeDefinition)
+      {
+        XSDComplexTypeDefinition ct2 = (XSDComplexTypeDefinition) typeDef;
+        walkUpInheritance(ct2);
+      }
+    }
+  }
+
+  private void updateNames(XSDComplexTypeDefinition ct)
+  {
+    Iterator iter = ct.getAttributeContents().iterator();
+    while (iter.hasNext())
+    {
+      Object obj = iter.next();
+      if (obj instanceof XSDAttributeUse)
+      {
+        XSDAttributeUse use = (XSDAttributeUse) obj;
+        XSDAttributeDeclaration attr = use.getAttributeDeclaration();
+        String attrName = attr.getName();
+        if (attrName != null)
+        {
+          names.add(attrName);
+        }
+      }
+    }
+
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeGroupDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeGroupDefinitionCommand.java
new file mode 100644
index 0000000..2bf259f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDAttributeGroupDefinitionCommand.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.w3c.dom.Text;
+
+public class AddXSDAttributeGroupDefinitionCommand extends BaseCommand
+{
+  XSDComplexTypeDefinition xsdComplexTypeDefinition;
+  XSDSchema xsdSchema;
+
+  public AddXSDAttributeGroupDefinitionCommand(String label, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+  {
+    super(label);
+    this.xsdComplexTypeDefinition = xsdComplexTypeDefinition;
+  }
+
+  public AddXSDAttributeGroupDefinitionCommand(String label, XSDSchema xsdSchema)
+  {
+    super(label);
+    this.xsdSchema = xsdSchema;
+  }
+
+  public void execute()
+  {
+    XSDAttributeGroupDefinition attributeGroup = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+    if (xsdSchema == null)
+    {
+      attributeGroup.setName(getNewName("AttributeGroup")); //$NON-NLS-1$
+
+      List list = xsdComplexTypeDefinition.getSchema().getAttributeGroupDefinitions();
+      if (list.size() > 0)
+      {
+        attributeGroup.setResolvedAttributeGroupDefinition((XSDAttributeGroupDefinition) list.get(0));
+      }
+      else
+      {
+        attributeGroup.setName(null);
+        XSDAttributeGroupDefinition attributeGroup2 = XSDFactory.eINSTANCE.createXSDAttributeGroupDefinition();
+        attributeGroup2.setName(XSDCommonUIUtils.createUniqueElementName("NewAttributeGroup", xsdComplexTypeDefinition.getSchema().getAttributeGroupDefinitions()));
+        xsdComplexTypeDefinition.getSchema().getContents().add(attributeGroup2);
+        attributeGroup.setResolvedAttributeGroupDefinition(attributeGroup2);
+      }
+
+      if (xsdComplexTypeDefinition.getAttributeContents() != null)
+      {
+        xsdComplexTypeDefinition.getAttributeContents().add(attributeGroup);
+      }
+      addedXSDConcreteComponent = attributeGroup;
+    }
+    else
+    {
+      attributeGroup.setName(XSDCommonUIUtils.createUniqueElementName("NewAttributeGroup", xsdSchema.getAttributeGroupDefinitions()));
+      Text textNode = xsdSchema.getDocument().createTextNode("\n");
+      xsdSchema.getElement().appendChild(textNode);
+      xsdSchema.getContents().add(attributeGroup);
+      addedXSDConcreteComponent = attributeGroup;
+    }
+  }
+
+  ArrayList names;
+
+  protected String getNewName(String description)
+  {
+    String candidateName = "New" + description; //$NON-NLS-1$
+    XSDConcreteComponent parent = xsdComplexTypeDefinition;
+    names = new ArrayList();
+    int i = 1;
+    if (parent instanceof XSDComplexTypeDefinition)
+    {
+      XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition) parent;
+      walkUpInheritance(ct);
+
+      boolean ready = false;
+      while (!ready)
+      {
+        ready = true;
+        for (Iterator iter = names.iterator(); iter.hasNext();)
+        {
+          String attrName = (String) iter.next();
+          if (candidateName.equals(attrName))
+          {
+            ready = false;
+            candidateName = "New" + description + String.valueOf(i); //$NON-NLS-1$
+            i++;
+          }
+        }
+      }
+    }
+    return candidateName;
+  }
+
+  private void walkUpInheritance(XSDComplexTypeDefinition ct)
+  {
+    updateNames(ct);
+    XSDTypeDefinition typeDef = ct.getBaseTypeDefinition();
+    if (ct != ct.getRootType())
+    {
+      if (typeDef instanceof XSDComplexTypeDefinition)
+      {
+        XSDComplexTypeDefinition ct2 = (XSDComplexTypeDefinition) typeDef;
+        walkUpInheritance(ct2);
+      }
+    }
+  }
+
+  private void updateNames(XSDComplexTypeDefinition ct)
+  {
+    Iterator iter = ct.getAttributeContents().iterator();
+    while (iter.hasNext())
+    {
+      Object obj = iter.next();
+      if (obj instanceof XSDAttributeUse)
+      {
+        XSDAttributeUse use = (XSDAttributeUse) obj;
+        XSDAttributeDeclaration attr = use.getAttributeDeclaration();
+        String attrName = attr.getName();
+        if (attrName != null)
+        {
+          names.add(attrName);
+        }
+      }
+    }
+
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDComplexTypeDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDComplexTypeDefinitionCommand.java
new file mode 100644
index 0000000..6cfe1af
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDComplexTypeDefinitionCommand.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+import org.w3c.dom.Text;
+
+public final class AddXSDComplexTypeDefinitionCommand extends BaseCommand
+{
+  protected XSDConcreteComponent parent;
+  protected XSDComplexTypeDefinition createdComplexType;
+  private String nameToAdd;
+  
+  public AddXSDComplexTypeDefinitionCommand(String label, XSDConcreteComponent parent)
+  {
+    super(label);
+    this.parent = parent;
+  }
+  
+  public void setNameToAdd(String nameToAdd)
+  {
+    this.nameToAdd = nameToAdd;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.gef.commands.Command#execute()
+   */
+  public void execute()
+  {
+    XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+    XSDComplexTypeDefinition complexType = factory.createXSDComplexTypeDefinition();
+    addedXSDConcreteComponent = complexType;
+    String newName = getNewName(nameToAdd == null ? "NewXSDComplexType" : nameToAdd, parent.getSchema());
+    complexType.setName(newName);
+    if (parent instanceof XSDSchema)
+    {
+      try
+      {
+        XSDSchema xsdSchema = (XSDSchema)parent;
+        Text textNode = xsdSchema.getDocument().createTextNode("\n");
+        xsdSchema.getElement().appendChild(textNode);
+        xsdSchema.getContents().add(complexType);
+      }
+      catch (Exception e)
+      {
+        e.printStackTrace();
+      } 
+    }
+    else if (parent instanceof XSDElementDeclaration)
+    {
+      ((XSDElementDeclaration) parent).setAnonymousTypeDefinition((XSDComplexTypeDefinition) complexType);
+      formatChild(parent.getElement());
+    }
+    createdComplexType = complexType;
+  }
+
+  protected String getNewName(String description, XSDSchema schema)
+  {
+    String candidateName = description; //$NON-NLS-1$
+    int i = 1;
+
+    List list = schema.getTypeDefinitions();
+    List listOfNames = new ArrayList();
+    for (Iterator iter = list.iterator(); iter.hasNext();)
+    {
+      XSDTypeDefinition typeDef = (XSDTypeDefinition) iter.next();
+      String name = typeDef.getName();
+      if (name == null)
+        name = "";
+      if (typeDef.getTargetNamespace() == schema.getTargetNamespace())
+        listOfNames.add(name);
+    }
+
+    boolean flag = true;
+    while (flag)
+    {
+      if (!listOfNames.contains(candidateName))
+      {
+        flag = false;
+        break;
+      }
+      candidateName = description + String.valueOf(i); //$NON-NLS-1$
+      i++;
+    }
+
+    return candidateName;
+  }
+
+  public XSDComplexTypeDefinition getCreatedComplexType()
+  {
+    return createdComplexType;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDElementCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDElementCommand.java
new file mode 100644
index 0000000..efa2dda
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDElementCommand.java
@@ -0,0 +1,287 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDComplexTypeContent;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+import org.w3c.dom.Text;
+
+public class AddXSDElementCommand extends BaseCommand
+{
+  XSDComplexTypeDefinition xsdComplexTypeDefinition;
+  XSDModelGroupDefinition xsdModelGroupDefinition;
+  XSDModelGroup xsdModelGroup;
+  XSDSchema xsdSchema;
+  boolean isReference;
+private String nameToAdd;
+
+  public AddXSDElementCommand()
+  {
+    super();
+  }
+
+  public AddXSDElementCommand(String label, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+  {
+    super(label);
+    this.xsdComplexTypeDefinition = xsdComplexTypeDefinition;
+    xsdModelGroup = getModelGroup(xsdComplexTypeDefinition);
+  }
+
+  public AddXSDElementCommand(String label, XSDModelGroupDefinition xsdModelGroupDefinition)
+  {
+    super(label);
+    this.xsdModelGroupDefinition = xsdModelGroupDefinition;
+    xsdModelGroup = getModelGroup(xsdModelGroupDefinition);
+  }
+  
+  public AddXSDElementCommand(String label, XSDModelGroup xsdModelGroup, XSDComplexTypeDefinition xsdComplexTypeDefinition)
+  {
+    super(label);
+    this.xsdModelGroup = xsdModelGroup;
+    this.xsdComplexTypeDefinition = xsdComplexTypeDefinition;
+  }
+
+  public AddXSDElementCommand(String label, XSDModelGroup xsdModelGroup)
+  {
+    super(label);
+    this.xsdModelGroup = xsdModelGroup;
+  }
+
+  public AddXSDElementCommand(String label, XSDSchema xsdSchema)
+  {
+    super(label);
+    this.xsdSchema = xsdSchema;
+  }
+
+  public void setReference(boolean isReference)
+  {
+    this.isReference = isReference;
+  }
+  
+  public void setNameToAdd(String name){
+	  nameToAdd = name;
+  }
+  
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.gef.commands.Command#execute()
+   */
+  public void execute()
+  {
+    if (xsdSchema != null)
+    {
+      XSDElementDeclaration element = createGlobalXSDElementDeclaration();
+      Text textNode = xsdSchema.getDocument().createTextNode("\n");
+      xsdSchema.getElement().appendChild(textNode);
+      xsdSchema.getContents().add(element);
+      addedXSDConcreteComponent = element;
+    }
+    else if (xsdModelGroupDefinition != null)
+    {
+      if (xsdModelGroup == null)
+      {
+        XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+        XSDParticle particle = factory.createXSDParticle();
+        xsdModelGroup = factory.createXSDModelGroup();
+        xsdModelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+        particle.setContent(xsdModelGroup);
+      }
+      if (!isReference)
+      {
+        xsdModelGroup.getContents().add(createXSDElementDeclaration());
+      }
+      else
+      {
+        xsdModelGroup.getContents().add(createXSDElementReference());
+      }
+    }
+    else if (xsdComplexTypeDefinition == null && xsdModelGroup != null)
+    {
+      xsdSchema = xsdModelGroup.getSchema();
+      if (!isReference)
+      {
+        xsdModelGroup.getContents().add(createXSDElementDeclaration());
+      }
+      else
+      {
+        xsdModelGroup.getContents().add(createXSDElementReference());
+      }
+      formatChild(xsdModelGroup.getElement());
+    }
+    else
+    {
+      if (xsdModelGroup == null)
+      {
+        XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+        XSDParticle particle = factory.createXSDParticle();
+        xsdModelGroup = factory.createXSDModelGroup();
+        xsdModelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+        particle.setContent(xsdModelGroup);
+        xsdComplexTypeDefinition.setContent(particle);
+      }
+      xsdSchema = xsdComplexTypeDefinition.getSchema();
+      
+      if (!isReference)
+      {
+        xsdModelGroup.getContents().add(createXSDElementDeclarationForComplexType());
+      }
+      else
+      {
+        xsdModelGroup.getContents().add(createXSDElementReference());
+      }
+      formatChild(xsdModelGroup.getElement());
+    }
+    
+  }
+  
+  protected XSDParticle createXSDElementDeclaration()
+  {
+    XSDSimpleTypeDefinition type = xsdModelGroup.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string");
+
+    XSDElementDeclaration element = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+
+    ArrayList usedAttributeNames = new ArrayList();
+    usedAttributeNames.addAll(XSDCommonUIUtils.getChildElements(xsdModelGroup));
+    element.setName(XSDCommonUIUtils.createUniqueElementName(
+    		nameToAdd == null ? "NewElement" : nameToAdd , xsdSchema.getElementDeclarations()));
+    element.setTypeDefinition(type);
+
+    XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+    particle.setContent(element);
+    addedXSDConcreteComponent = element;
+    return particle;
+  }
+
+  protected XSDParticle createXSDElementReference()
+  {
+    List list = xsdModelGroup.getSchema().getElementDeclarations();
+    XSDElementDeclaration referencedElement = null;
+    if (list.size() > 0)
+    {
+      referencedElement = (XSDElementDeclaration)list.get(0);
+    }
+    else
+    {
+      referencedElement = createGlobalXSDElementDeclaration();
+      Text textNode = xsdSchema.getDocument().createTextNode("\n");
+      xsdSchema.getElement().appendChild(textNode);
+      xsdSchema.getContents().add(referencedElement);
+    }
+
+    XSDElementDeclaration element = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+    
+    element.setResolvedElementDeclaration(referencedElement);
+    XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+    particle.setContent(element);
+    addedXSDConcreteComponent = element;
+    return particle;
+  }
+
+  protected XSDParticle createXSDElementDeclarationForComplexType()
+  {
+    XSDSimpleTypeDefinition type = xsdModelGroup.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string");
+
+    XSDElementDeclaration element = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+
+    ArrayList usedAttributeNames = new ArrayList();
+    usedAttributeNames.addAll(XSDCommonUIUtils.getAllAttributes(xsdComplexTypeDefinition));
+    usedAttributeNames.addAll(XSDCommonUIUtils.getInheritedAttributes(xsdComplexTypeDefinition));
+    element.setName(XSDCommonUIUtils.createUniqueElementName(
+    		nameToAdd == null ? "NewElement" : nameToAdd , usedAttributeNames));
+    element.setTypeDefinition(type);
+
+    XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+    particle.setContent(element);
+    addedXSDConcreteComponent = element;
+    return particle;
+  }
+
+  protected XSDElementDeclaration createGlobalXSDElementDeclaration()
+  {
+    XSDSimpleTypeDefinition type = xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("string");
+    XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+    XSDElementDeclaration element = factory.createXSDElementDeclaration();
+
+    element.setName(XSDCommonUIUtils.createUniqueElementName(
+    		nameToAdd == null ? "NewElement" : nameToAdd , xsdSchema.getElementDeclarations()));
+    element.setTypeDefinition(type);
+
+    return element;
+  }
+  
+  public XSDModelGroup getModelGroup(XSDModelGroupDefinition modelGroupDef)
+  {
+    return modelGroupDef.getModelGroup();
+  }
+
+  //PORT
+  public XSDModelGroup getModelGroup(XSDComplexTypeDefinition cType)
+  {
+    XSDParticle particle = cType.getComplexType();
+
+    if (particle == null)
+    {
+      return null;
+    }
+    
+    Object particleContent = particle.getContent();
+    XSDModelGroup group = null;
+
+    if (particleContent instanceof XSDModelGroupDefinition)
+    {
+      group = ((XSDModelGroupDefinition) particleContent).getResolvedModelGroupDefinition().getModelGroup();
+    }
+    else if (particleContent instanceof XSDModelGroup)
+    {
+      group = (XSDModelGroup) particleContent;
+    }
+
+    if (group == null)
+    {
+      return null;
+    }
+
+    if (group.getContents().isEmpty() || group.eResource() != cType.eResource())
+    {
+      if (cType.getBaseType() != null)
+      {
+        XSDComplexTypeContent content = cType.getContent();
+        if (content instanceof XSDParticle)
+        {
+          group = (XSDModelGroup) ((XSDParticle) content).getContent();
+        }
+      }
+    }
+
+    return group;
+  }
+  
+  public XSDConcreteComponent getAddedComponent()
+  {
+    return super.getAddedComponent();
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupCommand.java
new file mode 100644
index 0000000..4821c85
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupCommand.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+
+public class AddXSDModelGroupCommand extends BaseCommand
+{
+  XSDConcreteComponent parent;
+  XSDCompositor xsdCompositor;
+  XSDModelGroup newModelGroup;
+
+  public AddXSDModelGroupCommand(String label, XSDConcreteComponent parent, XSDCompositor xsdCompositor)
+  {
+    super(label);
+    this.parent = parent;
+    this.xsdCompositor = xsdCompositor;
+  }
+
+  public void execute()
+  {
+    XSDConcreteComponent owner = getOwner();
+    if (owner != null)
+    {
+      XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle(); 
+      newModelGroup = createModelGroup();
+      particle.setContent(newModelGroup);
+
+      XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)owner;
+      ctd.setContent(particle);
+    }
+    formatChild(parent.getElement());
+  }
+  
+  public void undo()
+  {
+    super.undo();
+    
+    if (parent instanceof XSDModelGroup)
+    {
+      XSDModelGroup model = (XSDModelGroup) parent;
+      model.getContents().remove(newModelGroup.getContainer());
+    }
+  }
+  
+  private XSDConcreteComponent getOwner()
+  {
+    XSDConcreteComponent owner = null;
+    if (parent instanceof XSDElementDeclaration)
+    {
+      XSDElementDeclaration ed = (XSDElementDeclaration)parent;      
+      if (ed.getTypeDefinition() != null) 
+      {
+        if (ed.getAnonymousTypeDefinition() == null)
+        {
+          ed.setTypeDefinition(null);
+          XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+          ed.setAnonymousTypeDefinition(td);
+          owner = ed.getTypeDefinition();
+        }
+        else
+        {
+          XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+          ed.setAnonymousTypeDefinition(td);
+          owner = td;        
+        }
+      }        
+      else if (ed.getAnonymousTypeDefinition() == null)
+      {
+        XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+        ed.setAnonymousTypeDefinition(td);
+        owner = td;        
+      }
+      else if (ed.getAnonymousTypeDefinition() instanceof XSDComplexTypeDefinition)
+      {
+        owner = ed.getAnonymousTypeDefinition();
+      }
+      else if (ed.getAnonymousTypeDefinition() instanceof XSDSimpleTypeDefinition)
+      {
+        XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
+        ed.setAnonymousTypeDefinition(td);
+        owner = td;        
+      }
+    }
+    else if (parent instanceof XSDModelGroup)
+    {
+      newModelGroup = createModelGroup();
+      ((XSDModelGroup) parent).getContents().add(newModelGroup.getContainer());
+    }
+    else if (parent instanceof XSDComplexTypeDefinition)
+    {
+      XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)parent;
+      owner = parent;
+      if (ct.getContent() instanceof XSDParticle)
+      {
+        XSDParticle particle = (XSDParticle)ct.getContent();
+        if (particle.getContent() instanceof XSDModelGroup)
+        {
+          owner = null;
+          newModelGroup = createModelGroup();
+          XSDModelGroup newParent = (XSDModelGroup)particle.getContent();
+          newParent.getContents().add(newModelGroup.getContainer());
+        }
+        
+      }
+    }
+    return owner;
+  }
+  
+
+  protected boolean adopt(XSDConcreteComponent model)
+  {
+    return false;
+  }
+  
+  protected XSDModelGroup createModelGroup()
+  {
+    
+    XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+    XSDParticle particle = factory.createXSDParticle();
+    XSDModelGroup modelGroup = factory.createXSDModelGroup();
+    modelGroup.setCompositor(xsdCompositor);
+    particle.setContent(modelGroup);
+    addedXSDConcreteComponent = modelGroup;
+    return modelGroup;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupDefinitionCommand.java
new file mode 100644
index 0000000..0947ee5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDModelGroupDefinitionCommand.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import java.util.List;
+
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+import org.w3c.dom.Text;
+
+public class AddXSDModelGroupDefinitionCommand extends BaseCommand
+{
+  XSDConcreteComponent parent;
+  boolean isReference;
+
+  public AddXSDModelGroupDefinitionCommand(String label, XSDConcreteComponent parent, boolean isReference)
+  {
+    super(label);
+    this.parent = parent;
+    this.isReference = isReference;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.gef.commands.Command#execute()
+   */
+  public void execute()
+  {
+    if (!isReference)
+    {
+      XSDModelGroupDefinition def= createXSDModelGroupDefinition();
+      addedXSDConcreteComponent = def;
+    }
+    else
+    {
+      XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+      XSDModelGroupDefinition def = factory.createXSDModelGroupDefinition();
+      XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+      particle.setContent(def);
+      List list = parent.getSchema().getModelGroupDefinitions();
+      if (list.size() > 0)
+      {
+        def.setResolvedModelGroupDefinition((XSDModelGroupDefinition) list.get(0));
+      }
+      else
+      {
+        XSDModelGroupDefinition newGroupDef = createXSDModelGroupDefinition();
+        def.setResolvedModelGroupDefinition(newGroupDef);
+      }
+
+      if (parent instanceof XSDModelGroup)
+      {
+        ((XSDModelGroup) parent).getContents().add(particle);
+      }
+      formatChild(def.getElement());
+      addedXSDConcreteComponent = def;
+    }
+  }
+
+  protected XSDModelGroupDefinition createXSDModelGroupDefinition()
+  {
+    XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+    XSDModelGroupDefinition def = factory.createXSDModelGroupDefinition();
+    List list = parent.getSchema().getModelGroupDefinitions();
+    String newName = XSDCommonUIUtils.createUniqueElementName("ModelGroupDefinition", list);
+    def.setName(newName);
+
+    XSDModelGroup modelGroup = createModelGroup();
+    def.setModelGroup(modelGroup);
+    Text textNode = parent.getSchema().getDocument().createTextNode("\n");
+    parent.getSchema().getElement().appendChild(textNode);
+    parent.getSchema().getContents().add(def);
+    formatChild(def.getElement());
+    return def;
+  }
+
+  protected XSDModelGroup createModelGroup()
+  {
+    XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+    XSDParticle particle = factory.createXSDParticle();
+    XSDModelGroup modelGroup = factory.createXSDModelGroup();
+    modelGroup.setCompositor(XSDCompositor.SEQUENCE_LITERAL);
+    particle.setContent(modelGroup);
+
+    return modelGroup;
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDSimpleTypeDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDSimpleTypeDefinitionCommand.java
new file mode 100644
index 0000000..64f7b36
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/AddXSDSimpleTypeDefinitionCommand.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Text;
+
+public final class AddXSDSimpleTypeDefinitionCommand extends BaseCommand
+{
+  XSDConcreteComponent parent;
+  XSDSimpleTypeDefinition createdSimpleType;
+  private String nameToAdd;
+  
+  public AddXSDSimpleTypeDefinitionCommand(String label, XSDConcreteComponent parent)
+  {
+    super(label);
+    this.parent = parent;
+  }
+
+  public void setNameToAdd(String nameToAdd)
+  {
+    this.nameToAdd = nameToAdd;
+  }
+  
+  public void execute()
+  {
+    XSDSimpleTypeDefinition typeDef = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+    typeDef.setBaseTypeDefinition(parent.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "string"));
+
+    if (parent instanceof XSDSchema)
+    {
+      typeDef.setName(XSDCommonUIUtils.createUniqueElementName(nameToAdd == null ? "XSDSimpleType" : nameToAdd, ((XSDSchema) parent).getTypeDefinitions()));
+      createdSimpleType = typeDef;
+      try
+      {
+        XSDSchema xsdSchema = (XSDSchema)parent;
+        Text textNode = xsdSchema.getDocument().createTextNode("\n");
+        xsdSchema.getElement().appendChild(textNode);
+        xsdSchema.getContents().add(typeDef);
+      }
+      catch (Exception e)
+      {
+    
+      }
+    }
+    else if (parent instanceof XSDElementDeclaration)
+    {
+      ((XSDElementDeclaration) parent).setAnonymousTypeDefinition(typeDef);
+    }
+    else if (parent instanceof XSDAttributeDeclaration)
+    {
+      ((XSDAttributeDeclaration) parent).setAnonymousTypeDefinition(typeDef);
+    }
+    formatChild(createdSimpleType.getElement());
+  }
+
+  public XSDSimpleTypeDefinition getCreatedSimpleType()
+  {
+    return createdSimpleType;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AbstractCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/BaseCommand.java
similarity index 67%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AbstractCommand.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/BaseCommand.java
index 3c0ae25..b8c4803 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AbstractCommand.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/BaseCommand.java
@@ -1,15 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.commands;
+package org.eclipse.wst.xsd.ui.common.commands;
 
+import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
@@ -17,35 +18,24 @@
 import org.eclipse.xsd.XSDConcreteComponent;
 import org.w3c.dom.Element;
 
-public abstract class AbstractCommand 
+public class BaseCommand extends Command
 {
-  private XSDConcreteComponent parent;
-  private XSDConcreteComponent model;
+  XSDConcreteComponent addedXSDConcreteComponent;
 
-  protected AbstractCommand(XSDConcreteComponent parent)
+  public BaseCommand()
   {
-    this.parent = parent;
+    super();
   }
-  
-  public abstract void run();
 
-  protected XSDConcreteComponent getParent()
+  public BaseCommand(String label)
   {
-    return parent;
+    super(label);
   }
   
-  public XSDConcreteComponent getModelObject()
+  public XSDConcreteComponent getAddedComponent()
   {
-    return model;
+    return addedXSDConcreteComponent;
   }
-  
-  protected void setModelObject(XSDConcreteComponent model)
-  {
-    this.model = model;
-  }
-  
-  // Establish part-whole relationship
-  protected abstract boolean adopt(XSDConcreteComponent model);
 
   protected void formatChild(Element child)
   {
@@ -67,5 +57,5 @@
       }
     }
   }
-
+ 
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/ChangeToLocalSimpleTypeCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/ChangeToLocalSimpleTypeCommand.java
new file mode 100644
index 0000000..c17c9f3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/ChangeToLocalSimpleTypeCommand.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class ChangeToLocalSimpleTypeCommand extends BaseCommand
+{
+  XSDFeature parent;
+  XSDSimpleTypeDefinition anonymousSimpleType;
+  XSDSimpleTypeDefinition currentType;
+
+  public ChangeToLocalSimpleTypeCommand(String label, XSDFeature parent)
+  {
+    super(label);
+    this.parent = parent;
+
+//    if (parent instanceof XSDElementDeclaration)
+//    {
+//      XSDElementDeclaration element = (XSDElementDeclaration) parent;
+//      XSDTypeDefinition aType = element.getResolvedElementDeclaration().getTypeDefinition();
+//
+//      if (aType instanceof XSDSimpleTypeDefinition)
+//      {
+//        currentType = (XSDSimpleTypeDefinition) aType;
+//      }
+//    }
+  }
+
+  public void execute()
+  {
+//    anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+//    anonymousSimpleType.setBaseTypeDefinition(currentType);
+    if (parent instanceof XSDElementDeclaration)
+    {
+      ((XSDElementDeclaration)parent).setAnonymousTypeDefinition(anonymousSimpleType);
+    }
+    else if (parent instanceof XSDAttributeDeclaration)
+    {
+      ((XSDAttributeDeclaration)parent).setAnonymousTypeDefinition(anonymousSimpleType);
+    }
+    formatChild(parent.getElement());
+  }
+  
+  public void setAnonymousSimpleType(XSDSimpleTypeDefinition anonymousSimpleType)
+  {
+    this.anonymousSimpleType = anonymousSimpleType;
+  }
+
+  public XSDSimpleTypeDefinition getAnonymousType()
+  {
+    if (anonymousSimpleType == null)
+    {
+      anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+      anonymousSimpleType.setBaseTypeDefinition(currentType);
+    }
+    return anonymousSimpleType;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/DeleteCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/DeleteCommand.java
new file mode 100644
index 0000000..eee0802
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/DeleteCommand.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDVisitor;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class DeleteCommand extends BaseCommand
+{
+  XSDConcreteComponent target;
+
+  public DeleteCommand(String label, XSDConcreteComponent target)
+  {
+    super(label);
+    this.target = target;
+  }
+
+  public void execute()
+  {
+    XSDVisitor visitor = new XSDVisitor()
+    {
+      public void visitElementDeclaration(org.eclipse.xsd.XSDElementDeclaration element)
+      {
+        if (element.getTypeDefinition() == target)
+        {
+          XSDSimpleTypeDefinition type = target.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string");
+          element.setTypeDefinition(type);
+        }
+        super.visitElementDeclaration(element);
+      }
+    };
+
+    XSDConcreteComponent parent = target.getContainer();
+
+    if (target instanceof XSDModelGroup || target instanceof XSDElementDeclaration || target instanceof XSDModelGroupDefinition)
+    {
+      if (parent instanceof XSDParticle)
+      {
+        if (parent.getContainer() instanceof XSDModelGroup)
+        {
+          XSDModelGroup modelGroup = (XSDModelGroup) ((XSDParticle) parent).getContainer();
+
+          modelGroup.getContents().remove(parent);
+        }
+      }
+      else if (parent instanceof XSDSchema)
+      {
+        visitor.visitSchema(target.getSchema());
+        ((XSDSchema) parent).getContents().remove(target);
+      }
+
+    }
+    else if (target instanceof XSDAttributeDeclaration)
+    {
+      if (parent instanceof XSDAttributeUse)
+      {
+        EObject obj = parent.eContainer();
+        XSDComplexTypeDefinition complexType = null;
+        while (obj != null)
+        {
+          if (obj instanceof XSDComplexTypeDefinition)
+          {
+            complexType = (XSDComplexTypeDefinition) obj;
+            break;
+          }
+          obj = obj.eContainer();
+        }
+        if (complexType != null)
+        {
+          complexType.getAttributeContents().remove((XSDAttributeUse) parent);
+        }
+
+        if (parent.getContainer() instanceof XSDAttributeGroupDefinition)
+        {
+          XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition) parent.getContainer();
+
+          attrGroup.getContents().remove(parent);
+        }
+      }
+    }
+    else if (target instanceof XSDAttributeGroupDefinition &&
+             parent instanceof XSDComplexTypeDefinition)
+    {
+      ((XSDComplexTypeDefinition)parent).getAttributeContents().remove(target);
+    }
+    else if (target instanceof XSDEnumerationFacet)
+    {
+      XSDEnumerationFacet enumerationFacet = (XSDEnumerationFacet)target;
+      enumerationFacet.getSimpleTypeDefinition().getFacetContents().remove(enumerationFacet);
+    }
+    else
+    {
+      if (parent instanceof XSDSchema)
+      {
+        visitor.visitSchema(target.getSchema());
+        ((XSDSchema) parent).getContents().remove(target);
+      }
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoAttrCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoAttrCommand.java
new file mode 100644
index 0000000..031e975
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoAttrCommand.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+
+public class RemoveAppInfoAttrCommand extends Command 
+{
+	Element hostElement;
+	Attr attr;
+	
+	public RemoveAppInfoAttrCommand(String label, Element hostElement, Attr attr)
+	{
+		super(label);
+		this.hostElement = hostElement;
+		this.attr = attr;
+	}
+	
+	public void execute()
+	{
+		super.execute();
+		hostElement.removeAttributeNode(attr);
+	}
+	
+	public void undo()
+	{
+		super.undo();
+		//TODO implement me
+	}
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoElementCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoElementCommand.java
new file mode 100644
index 0000000..fabfe62
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/RemoveAppInfoElementCommand.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDAnnotation;
+import org.w3c.dom.Node;
+
+public class RemoveAppInfoElementCommand extends Command
+{
+  XSDAnnotation xsdAnnotation;
+  Node appInfo;
+
+  public RemoveAppInfoElementCommand(String label, XSDAnnotation xsdAnnotation, Node appInfo)
+  {
+    super(label);
+    this.xsdAnnotation = xsdAnnotation;
+    this.appInfo = appInfo;
+  }
+
+  public void execute()
+  {
+    super.execute();
+    xsdAnnotation.getApplicationInformation().remove(appInfo);
+    xsdAnnotation.getElement().removeChild(appInfo);
+    xsdAnnotation.updateElement();
+  }
+
+  public void undo()
+  {
+    super.undo();
+    xsdAnnotation.getApplicationInformation().add(appInfo);
+    xsdAnnotation.getElement().appendChild(appInfo);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetMultiplicityCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetMultiplicityCommand.java
similarity index 71%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetMultiplicityCommand.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetMultiplicityCommand.java
index 4c8c27d..1810fde 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetMultiplicityCommand.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetMultiplicityCommand.java
@@ -1,29 +1,30 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.commands;
+package org.eclipse.wst.xsd.ui.common.commands;
 
 import org.eclipse.xsd.XSDConcreteComponent;
 import org.eclipse.xsd.XSDParticle;
 import org.eclipse.xsd.XSDParticleContent;
 
-public class SetMultiplicityCommand extends AbstractCommand
+public class SetMultiplicityCommand extends BaseCommand
 {
+  XSDConcreteComponent parent;
   int maxOccurs, minOccurs;
 
   /**
    * @param parent
    */
-  public SetMultiplicityCommand(XSDConcreteComponent parent)
+  public SetMultiplicityCommand(String label)
   {
-    super(parent);
+    super(label);
   }
   
   public void setMaxOccurs(int i)
@@ -36,12 +37,16 @@
     minOccurs=i;    
   }
 
+  public void setXSDConcreteComponent(XSDConcreteComponent parent)
+  {
+    this.parent = parent;
+  }
+  
   /* (non-Javadoc)
    * @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#run()
    */
-  public void run()
+  public void execute()
   {
-    XSDConcreteComponent parent = getParent();
     if (parent instanceof XSDParticleContent)
     {
       XSDParticleContent xsdParticleContent = (XSDParticleContent)parent;
@@ -54,13 +59,4 @@
       xsdParticle.setMinOccurs(minOccurs);
     }
   }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#adopt(org.eclipse.xsd.XSDConcreteComponent)
-   */
-  protected boolean adopt(XSDConcreteComponent model)
-  {
-    return false;
-  }
-
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetTypeCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetTypeCommand.java
new file mode 100644
index 0000000..2c02f61
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetTypeCommand.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.jface.window.Window;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.xsd.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.wst.xsd.ui.common.actions.SetTypeAction;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+
+public class SetTypeCommand extends BaseCommand
+{
+  XSDConcreteComponent parent;
+  private boolean continueApply;
+  XSDBaseAdapter adapter;
+  String action;
+
+  public SetTypeCommand(String label, String ID, XSDConcreteComponent parent)
+  {
+    super(label);
+    this.parent = parent;
+    this.action = ID;
+  }
+  
+  public void setAdapter(XSDBaseAdapter adapter)
+  {
+    this.adapter = adapter;
+  }
+
+  public void execute()
+  {
+    ComponentReferenceEditManager componentReferenceEditManager = getComponentReferenceEditManager();
+    continueApply = true; 
+    if (parent instanceof XSDElementDeclaration)
+    {
+      if (action.equals(SetTypeAction.SET_NEW_TYPE_ID))
+      {
+        ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getNewDialog());
+        if (continueApply)
+          componentReferenceEditManager.modifyComponentReference(adapter, newValue);
+      }
+      else
+      {
+        ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getBrowseDialog());
+        if (continueApply)
+          componentReferenceEditManager.modifyComponentReference(adapter, newValue);
+      }
+      formatChild(parent.getElement());
+    }
+
+  }
+
+  private Object invokeDialog(IComponentDialog dialog)
+  {
+    Object newValue = null;
+
+    if (dialog == null)
+    {
+      return null;
+    }
+
+    if (dialog.createAndOpen() == Window.OK)
+    {
+      newValue = dialog.getSelectedComponent();
+    }
+    else
+    {
+      continueApply = false;
+    }
+
+    return newValue;
+  }
+
+  protected ComponentReferenceEditManager getComponentReferenceEditManager()
+  {
+    ComponentReferenceEditManager result = null;
+    IEditorPart editor = getActiveEditor();
+    if (editor != null)
+    {
+      result = (ComponentReferenceEditManager)editor.getAdapter(ComponentReferenceEditManager.class);
+    }  
+    return result;
+  }
+  
+  private IEditorPart getActiveEditor()
+  {
+    IWorkbench workbench = PlatformUI.getWorkbench();
+    IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+    IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+    return editorPart;
+  }    
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetXSDFacetValueCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetXSDFacetValueCommand.java
new file mode 100644
index 0000000..33c3523
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/SetXSDFacetValueCommand.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.xsd.XSDFacet;
+
+public class SetXSDFacetValueCommand extends BaseCommand
+{
+  protected XSDFacet facet;
+  protected String value;
+  
+  public SetXSDFacetValueCommand(String label, XSDFacet facet)
+  {
+    super(label);
+    this.facet = facet;
+  }
+  
+  public void setValue(String value)
+  {
+    this.value = value; 
+  }
+  
+  public void execute()
+  {
+    facet.setLexicalValue(value);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateComponentReferenceAndManageDirectivesCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateComponentReferenceAndManageDirectivesCommand.java
new file mode 100644
index 0000000..fddfcf3
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateComponentReferenceAndManageDirectivesCommand.java
@@ -0,0 +1,26 @@
+package org.eclipse.wst.xsd.ui.common.commands;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+
+public abstract class UpdateComponentReferenceAndManageDirectivesCommand extends Command{
+	  protected XSDConcreteComponent concreteComponent;
+	  protected String componentName;
+	  protected String componentNamespace;
+	  protected IFile file;
+
+	  public UpdateComponentReferenceAndManageDirectivesCommand(XSDConcreteComponent concreteComponent, String componentName, String componentNamespace, IFile file)
+	  {
+	    this.concreteComponent = concreteComponent;
+	    this.componentName = componentName;
+	    this.componentNamespace = componentNamespace;
+	    this.file = file;
+	  }  
+
+	  protected abstract XSDComponent computeComponent();
+	  
+	  public abstract void execute() ;
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateContentModelCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateContentModelCommand.java
new file mode 100644
index 0000000..0faa3e5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateContentModelCommand.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDModelGroup;
+
+public class UpdateContentModelCommand extends Command
+{
+  XSDModelGroup xsdModelGroup;
+  XSDCompositor oldXSDCompositor, newXSDCompositor;
+  
+  
+  public UpdateContentModelCommand(String label, XSDModelGroup xsdModelGroup, XSDCompositor xsdCompositor)
+  {
+    super(label);
+    this.xsdModelGroup = xsdModelGroup;
+    this.newXSDCompositor = xsdCompositor;
+    this.oldXSDCompositor = xsdModelGroup.getCompositor();
+  }
+
+  
+  public void execute()
+  {
+    super.execute();
+    xsdModelGroup.setCompositor(newXSDCompositor);
+    
+  }
+    
+  public void undo()
+  {
+    xsdModelGroup.setCompositor(oldXSDCompositor);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceAndManageDirectivesCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceAndManageDirectivesCommand.java
new file mode 100644
index 0000000..e07dbca
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceAndManageDirectivesCommand.java
@@ -0,0 +1,135 @@
+package org.eclipse.wst.xsd.ui.common.commands;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.util.XSDResourceImpl;
+
+public class UpdateElementReferenceAndManageDirectivesCommand extends 
+UpdateComponentReferenceAndManageDirectivesCommand{
+
+	public UpdateElementReferenceAndManageDirectivesCommand(XSDConcreteComponent concreteComponent,
+			String componentName, String componentNamespace, IFile file)
+	{
+		super(concreteComponent, componentName, componentNamespace, file);
+	}
+	
+	protected XSDComponent computeComponent()
+	{
+		XSDElementDeclaration result = null;
+		XSDSchema schema = concreteComponent.getSchema();
+		XSDSchemaDirective directive = null;
+		
+		// TODO (cs) handle case where namespace==null
+		//
+		if (componentNamespace != null)
+		{  
+			
+			// lets see if the element is already visible to our schema
+			result = getDefinedComponent(schema, componentName, componentNamespace);                     
+			if (result == null)
+			{
+				// TODO (cs) we need to provide a separate command to do this part
+				//
+				// apparently the element is not yet visible, we need to add includes/imports to get to it
+				if (componentNamespace.equals(schema.getTargetNamespace()))
+				{
+					// we need to add an include
+					directive =XSDFactory.eINSTANCE.createXSDInclude();
+				}
+				else
+				{
+					// we need to add an import
+					XSDImport xsdImport = XSDFactory.eINSTANCE.createXSDImport();
+					xsdImport.setNamespace(componentNamespace);
+					directive = xsdImport;              
+				}  
+				
+				// TODO (cs) we need to compute a relative URI to make this nicer!
+				//
+				String fileURI = file.getLocationURI().toString();
+				if (fileURI.startsWith("file:/") && !fileURI.startsWith("file:///"))
+				{
+					fileURI = "file:///" + fileURI.substring(6);
+				}   
+				directive.setSchemaLocation(fileURI);
+				
+				// TODO (cs) we should at the directive 'next' in the list of directives
+				// for now I'm just adding as the first thing in the schema :-(         
+				//
+				schema.getContents().add(0, directive);           
+				XSDSchema resolvedSchema = directive.getResolvedSchema();        
+				
+				if (resolvedSchema == null)
+				{
+					System.out.println("resolvedSchema is null!!!");
+					Resource resource  = concreteComponent.eResource().getResourceSet().createResource(URI.createURI(fileURI));          
+					if (resource instanceof XSDResourceImpl)
+					{
+						try
+						{
+							resource.load(null);
+							XSDResourceImpl resourceImpl = (XSDResourceImpl)resource;
+							resolvedSchema = resourceImpl.getSchema();
+							if (resolvedSchema != null)
+							{
+								System.out.println("Strange... managed to make the schema resovle myself 8-P" + resource);
+								directive.setResolvedSchema(resolvedSchema);
+							}
+						}
+						catch (Exception e)
+						{
+							
+						}
+					}  
+				}
+				if (resolvedSchema != null)
+				{  
+					result = getDefinedComponent(resolvedSchema, componentName, componentNamespace);
+				}    
+				else 
+				{
+					// TODO (cs) consider setting some error state so that the client can provide a  pop-dialog error
+					// we should also remove the import/include so save from cluttering the file with bogus directives                           
+				}
+			}   
+		}  
+		return result;
+	}
+
+	private XSDElementDeclaration getDefinedComponent(XSDSchema schema,
+			String componentName, String componentNamespace) {
+	    XSDElementDeclaration result = schema.resolveElementDeclaration(componentNamespace, componentName);
+	    if (result.eContainer() == null)
+	    {
+	      result = null;
+	    }
+	    return result;
+	}
+
+	public void execute() {
+	    try
+	    {
+	    XSDComponent elementDef = computeComponent();
+	    if (elementDef != null)
+	    {
+	      UpdateElementReferenceCommand command = new UpdateElementReferenceCommand(
+	    		  "Update Element Reference", (XSDElementDeclaration) concreteComponent,
+	    		  (XSDElementDeclaration) elementDef);
+	      command.execute();
+	    }
+	    }
+	    catch (Exception e)
+	    {
+	      e.printStackTrace();
+	    }
+	}
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceCommand.java
new file mode 100644
index 0000000..5f05506
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateElementReferenceCommand.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.xsd.XSDElementDeclaration;
+
+public class UpdateElementReferenceCommand extends BaseCommand
+{
+  XSDElementDeclaration element, ref;
+
+  public UpdateElementReferenceCommand(String label, XSDElementDeclaration element, XSDElementDeclaration ref)
+  {
+    super(label);
+    this.element = element;
+    this.ref = ref;
+  }
+
+  public void execute()
+  {
+    element.setResolvedElementDeclaration(ref);
+  }
+  
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMaxOccursCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMaxOccursCommand.java
new file mode 100644
index 0000000..a1f0ff4
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMaxOccursCommand.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class UpdateMaxOccursCommand extends Command
+{
+	private int oldMaxOccurs;
+	private int newMaxOccurs;
+  private boolean removeMaxOccursAttribute;
+	
+	XSDParticle particle;
+
+  public UpdateMaxOccursCommand(String label, XSDParticle particle, int MaxOccurs)
+	{
+		super(label);
+		this.newMaxOccurs = MaxOccurs;
+		this.particle = particle;
+	}
+	
+	public void execute()
+	{
+    Element element = particle.getElement();
+    String currentMax = element.getAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
+    removeMaxOccursAttribute = (currentMax == null)? true: false;
+		oldMaxOccurs = particle.getMaxOccurs();
+		particle.setMaxOccurs(newMaxOccurs);
+	}
+	
+	public void redo()
+	{
+		execute();
+	}
+	
+	public void undo()
+	{
+    if (removeMaxOccursAttribute)
+    {
+      particle.unsetMaxOccurs();
+    }
+    else
+    {
+		  particle.setMaxOccurs(oldMaxOccurs);
+    }
+	}
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMinOccursCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMinOccursCommand.java
new file mode 100644
index 0000000..457e4c6
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateMinOccursCommand.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDAttributeUseCategory;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class UpdateMinOccursCommand extends Command
+{
+  private int oldMinOccurs;
+  private int newMinOccurs;
+  private boolean removeMinOccursAttribute;
+
+  XSDComponent component;
+
+  public UpdateMinOccursCommand(String label, XSDComponent component, int minOccurs)
+  {
+    super(label);
+    this.newMinOccurs = minOccurs;
+    this.component = component;
+  }
+
+  public void execute()
+  {
+
+    Element element = component.getElement();
+    String currentMin = element.getAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
+    removeMinOccursAttribute = (currentMin == null) ? true : false;
+
+    if (component instanceof XSDParticle)
+    {
+      oldMinOccurs = ((XSDParticle) component).getMinOccurs();
+      ((XSDParticle) component).setMinOccurs(newMinOccurs);
+    }
+    else if (component instanceof XSDAttributeUse)
+    {
+      oldMinOccurs = (((XSDAttributeUse) component).getUse() == XSDAttributeUseCategory.REQUIRED_LITERAL ? 1 : 0);
+      if (newMinOccurs == 1)
+        ((XSDAttributeUse) component).setUse(XSDAttributeUseCategory.REQUIRED_LITERAL);
+      else
+        ((XSDAttributeUse) component).setUse(XSDAttributeUseCategory.OPTIONAL_LITERAL);
+    }
+  }
+
+  public void undo()
+  {
+    if (component instanceof XSDParticle)
+    {
+      if (removeMinOccursAttribute)
+      {
+        ((XSDParticle) component).unsetMinOccurs();
+      }
+      else
+      {
+        ((XSDParticle) component).setMinOccurs(oldMinOccurs);
+      }
+    }
+    else if (component instanceof XSDAttributeUse)
+    {
+      if (removeMinOccursAttribute)
+      {
+        ((XSDParticle) component).unsetMinOccurs();
+      }
+      else
+      {
+        if (oldMinOccurs == 1)
+          ((XSDAttributeUse) component).setUse(XSDAttributeUseCategory.REQUIRED_LITERAL);
+        else
+          ((XSDAttributeUse) component).setUse(XSDAttributeUseCategory.OPTIONAL_LITERAL);
+      }
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNameCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNameCommand.java
new file mode 100644
index 0000000..b2fd461
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNameCommand.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDNamedComponent;
+
+public class UpdateNameCommand extends Command
+{
+  private String oldName;
+  private String newName;
+  private XSDNamedComponent component;
+
+  public UpdateNameCommand(String label, XSDNamedComponent component, String newName)
+  {
+    super(label);
+
+    if (component instanceof XSDComplexTypeDefinition && component.getName() == null && component.eContainer() instanceof XSDNamedComponent && ((XSDNamedComponent) component.eContainer()).getName() != null)
+    {
+      component = (XSDNamedComponent) component.eContainer();
+    }
+
+    this.component = component;
+    this.newName = newName;
+    this.oldName = component.getName();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.gef.commands.Command#execute()
+   */
+  public void execute()
+  {
+    component.setName(newName);
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNumericBoundsFacetCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNumericBoundsFacetCommand.java
new file mode 100644
index 0000000..26598e1
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateNumericBoundsFacetCommand.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDMinInclusiveFacet;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class UpdateNumericBoundsFacetCommand extends BaseCommand
+{
+  XSDSimpleTypeDefinition xsdSimpleType;
+  String max, min;
+  boolean includeMin, includeMax;
+  private boolean doUpdateMax = false, doUpdateMin = false;
+  XSDMinInclusiveFacet minInclusiveFacet;
+  XSDMinExclusiveFacet minExclusiveFacet;
+  XSDMaxInclusiveFacet maxInclusiveFacet;
+  XSDMaxExclusiveFacet maxExclusiveFacet;
+
+
+  public UpdateNumericBoundsFacetCommand(String label, XSDSimpleTypeDefinition xsdSimpleType, boolean includeMin, boolean includeMax)
+  {
+    super(label);
+    this.xsdSimpleType = xsdSimpleType;
+    this.includeMin = includeMin;
+    this.includeMax = includeMax;
+    
+    minInclusiveFacet = xsdSimpleType.getMinInclusiveFacet();
+    minExclusiveFacet = xsdSimpleType.getMinExclusiveFacet();
+    maxInclusiveFacet = xsdSimpleType.getMaxInclusiveFacet();
+    maxExclusiveFacet = xsdSimpleType.getMaxExclusiveFacet();
+
+  }
+
+  public void setMin(String min)
+  {
+    this.min = min;
+    doUpdateMin = true;
+  }
+  
+  public void setMax(String max)
+  {
+    this.max = max;
+    doUpdateMax = true;
+  }
+
+  public void execute()
+  {    
+    if (doUpdateMin)
+    {
+      if (includeMin)
+      {
+        if (minInclusiveFacet == null && min != null)
+        {
+          minInclusiveFacet = XSDFactory.eINSTANCE.createXSDMinInclusiveFacet();
+          minInclusiveFacet.setLexicalValue(min);
+          xsdSimpleType.getFacetContents().add(minInclusiveFacet);
+          
+          if (minExclusiveFacet != null)
+          {
+            xsdSimpleType.getFacetContents().remove(minExclusiveFacet);
+          }
+        }
+        else if (minInclusiveFacet != null && min != null)
+        {
+          minInclusiveFacet.setLexicalValue(min);
+        }
+        else if (minInclusiveFacet != null && min == null)
+        {
+          xsdSimpleType.getFacetContents().remove(minInclusiveFacet);
+        }
+      }
+      else // !includeMin
+      {
+        if (minExclusiveFacet == null && min != null)
+        {
+          minExclusiveFacet = XSDFactory.eINSTANCE.createXSDMinExclusiveFacet();
+          minExclusiveFacet.setLexicalValue(min);
+          xsdSimpleType.getFacetContents().add(minExclusiveFacet);
+          
+          if (minInclusiveFacet != null)
+          {
+            xsdSimpleType.getFacetContents().remove(minInclusiveFacet);
+          }
+        }
+        else if (minExclusiveFacet != null && min != null)
+        {
+          minExclusiveFacet.setLexicalValue(min);
+        }
+        else if (minExclusiveFacet != null && min == null)
+        {
+          xsdSimpleType.getFacetContents().remove(minExclusiveFacet);
+        }
+      }
+    }
+    else if (doUpdateMax)
+    {
+      if (includeMax)
+      {
+        if (maxInclusiveFacet == null && max != null)
+        {
+          maxInclusiveFacet = XSDFactory.eINSTANCE.createXSDMaxInclusiveFacet();
+          maxInclusiveFacet.setLexicalValue(max);
+          xsdSimpleType.getFacetContents().add(maxInclusiveFacet);
+          
+          if (maxExclusiveFacet != null)
+          {
+            xsdSimpleType.getFacetContents().remove(maxExclusiveFacet);
+          }
+        }
+        else if (maxInclusiveFacet != null && max != null)
+        {
+          maxInclusiveFacet.setLexicalValue(max);
+        }
+        else if (maxInclusiveFacet != null && max == null)
+        {
+          xsdSimpleType.getFacetContents().remove(maxInclusiveFacet);
+        }
+      }
+      else // !includeMax
+      {
+        if (maxExclusiveFacet == null && max != null)
+        {
+          maxExclusiveFacet = XSDFactory.eINSTANCE.createXSDMaxExclusiveFacet();
+          maxExclusiveFacet.setLexicalValue(max);
+          xsdSimpleType.getFacetContents().add(maxExclusiveFacet);
+          
+          if (maxInclusiveFacet != null)
+          {
+            xsdSimpleType.getFacetContents().remove(maxInclusiveFacet);
+          }
+        }
+        else if (maxExclusiveFacet != null && max != null)
+        {
+          maxExclusiveFacet.setLexicalValue(max);
+        }
+        else if (maxExclusiveFacet != null && max == null)
+        {
+          xsdSimpleType.getFacetContents().remove(maxExclusiveFacet);
+        }
+      }
+    }
+
+    formatChild(xsdSimpleType.getElement());
+  }  
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateStringLengthFacetCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateStringLengthFacetCommand.java
new file mode 100644
index 0000000..48d0f63
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateStringLengthFacetCommand.java
@@ -0,0 +1,223 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDLengthFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDMinLengthFacet;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class UpdateStringLengthFacetCommand extends BaseCommand
+{
+  XSDSimpleTypeDefinition xsdSimpleType;
+  String max, min;
+  private boolean doUpdateMax = false, doUpdateMin = false;
+
+  public UpdateStringLengthFacetCommand(String label, XSDSimpleTypeDefinition xsdSimpleType)
+  {
+    super(label);
+    this.xsdSimpleType = xsdSimpleType;
+  }
+  
+  public void setMin(String min)
+  {
+    this.min = min;
+    doUpdateMin = true;
+  }
+  
+  public void setMax(String max)
+  {
+    this.max = max;
+    doUpdateMax = true;
+  }
+  
+  public void execute()
+  {
+    XSDLengthFacet lengthFacet = xsdSimpleType.getEffectiveLengthFacet();
+    XSDMinLengthFacet minLengthFacet = xsdSimpleType.getEffectiveMinLengthFacet();
+    XSDMaxLengthFacet maxLengthFacet = xsdSimpleType.getEffectiveMaxLengthFacet();
+    
+    String currentLength = null, currentMin = null, currentMax = null;
+    if (lengthFacet != null)
+    {
+      currentLength = lengthFacet.getLexicalValue();
+    }
+    if (minLengthFacet != null)
+    {
+      currentMin = minLengthFacet.getLexicalValue();
+    }
+    if (maxLengthFacet != null)
+    {
+      currentMax = maxLengthFacet.getLexicalValue();
+    }
+
+    if (doUpdateMax && !doUpdateMin)
+    {
+      if (maxLengthFacet != null)
+      {
+        if (max != null)
+        {
+          if (max.equals(currentMin))
+          {
+            lengthFacet = XSDFactory.eINSTANCE.createXSDLengthFacet();
+            lengthFacet.setLexicalValue(max);
+            xsdSimpleType.getFacetContents().add(lengthFacet);
+            xsdSimpleType.getFacetContents().remove(maxLengthFacet);
+            xsdSimpleType.getFacetContents().remove(minLengthFacet);
+          }
+          else
+          {
+            if (lengthFacet != null)
+            {
+              xsdSimpleType.getFacetContents().remove(lengthFacet);
+            }
+            if (minLengthFacet == null && currentLength != null)
+            {
+              minLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+              minLengthFacet.setLexicalValue(currentLength);
+              xsdSimpleType.getFacetContents().add(minLengthFacet);
+            }
+            maxLengthFacet.setLexicalValue(max);
+          }
+        }
+        else
+        {
+          xsdSimpleType.getFacetContents().remove(maxLengthFacet);
+        }
+      }
+      else
+      {
+        if (currentMin != null && currentMin.equals(max))
+        {
+          if (lengthFacet == null)
+          {
+            lengthFacet = XSDFactory.eINSTANCE.createXSDLengthFacet();
+            xsdSimpleType.getFacetContents().add(lengthFacet);
+          }
+          lengthFacet.setLexicalValue(max);
+          xsdSimpleType.getFacetContents().remove(minLengthFacet);
+        }
+        else if (currentLength != null && !currentLength.equals(max))
+        {
+          xsdSimpleType.getFacetContents().remove(lengthFacet);
+
+          if (max != null)
+          {
+            maxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+            maxLengthFacet.setLexicalValue(max);
+            xsdSimpleType.getFacetContents().add(maxLengthFacet);
+          }
+          
+          minLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+          minLengthFacet.setLexicalValue(currentLength);
+          xsdSimpleType.getFacetContents().add(minLengthFacet);
+        }
+        else
+        {
+          if (lengthFacet != null)
+          {
+            xsdSimpleType.getFacetContents().remove(lengthFacet);
+            
+            minLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+            minLengthFacet.setLexicalValue(currentLength);
+            xsdSimpleType.getFacetContents().add(minLengthFacet);
+
+          }
+          maxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+          maxLengthFacet.setLexicalValue(max);
+          xsdSimpleType.getFacetContents().add(maxLengthFacet);
+        }
+      }
+    }
+    else if (!doUpdateMax && doUpdateMin)
+    {
+      if (minLengthFacet != null)
+      {
+        if (min != null)
+        {
+          if (min.equals(currentMax))
+          {
+            lengthFacet = XSDFactory.eINSTANCE.createXSDLengthFacet();
+            lengthFacet.setLexicalValue(min);
+            xsdSimpleType.getFacetContents().add(lengthFacet);
+            xsdSimpleType.getFacetContents().remove(maxLengthFacet);
+            xsdSimpleType.getFacetContents().remove(minLengthFacet);
+          }
+          else
+          {
+            if (lengthFacet != null)
+            {
+              xsdSimpleType.getFacetContents().remove(lengthFacet);
+            }
+            if (maxLengthFacet == null && currentLength != null)
+            {
+              maxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+              maxLengthFacet.setLexicalValue(currentLength);
+              xsdSimpleType.getFacetContents().add(maxLengthFacet);
+            }
+            minLengthFacet.setLexicalValue(min);
+          }
+        }
+        else
+        {
+          xsdSimpleType.getFacetContents().remove(minLengthFacet);
+        }
+      }
+      else
+      {
+        if (currentMax != null && currentMax.equals(min))
+        {
+          if (lengthFacet == null)
+          {
+            lengthFacet = XSDFactory.eINSTANCE.createXSDLengthFacet();
+            xsdSimpleType.getFacetContents().add(lengthFacet);
+          }
+          lengthFacet.setLexicalValue(min);
+          xsdSimpleType.getFacetContents().remove(maxLengthFacet);
+        }
+        else if (currentLength != null && !currentLength.equals(min))
+        {
+          xsdSimpleType.getFacetContents().remove(lengthFacet);
+
+          if (min != null)
+          {
+            minLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+            minLengthFacet.setLexicalValue(min);
+            xsdSimpleType.getFacetContents().add(minLengthFacet);
+          }
+
+          maxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+          maxLengthFacet.setLexicalValue(currentLength);
+          xsdSimpleType.getFacetContents().add(maxLengthFacet);
+        }
+        else
+        {
+          minLengthFacet = XSDFactory.eINSTANCE.createXSDMinLengthFacet();
+          minLengthFacet.setLexicalValue(min);
+          xsdSimpleType.getFacetContents().add(minLengthFacet);
+
+          if (lengthFacet != null)
+          {
+            xsdSimpleType.getFacetContents().remove(lengthFacet);
+
+            maxLengthFacet = XSDFactory.eINSTANCE.createXSDMaxLengthFacet();
+            maxLengthFacet.setLexicalValue(currentLength);
+            xsdSimpleType.getFacetContents().add(maxLengthFacet);
+          }
+        }
+      }
+    }
+    formatChild(xsdSimpleType.getElement());
+
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceAndManageDirectivesCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceAndManageDirectivesCommand.java
new file mode 100644
index 0000000..157c1a9
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceAndManageDirectivesCommand.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDResourceImpl;
+
+public class UpdateTypeReferenceAndManageDirectivesCommand extends UpdateComponentReferenceAndManageDirectivesCommand
+{
+
+  public UpdateTypeReferenceAndManageDirectivesCommand(XSDConcreteComponent concreteComponent,
+		  String componentName, String componentNamespace, IFile file)
+  {
+	  super(concreteComponent, componentName, componentNamespace, file);
+  }
+
+  public XSDComponent computeComponent()
+  {
+    XSDComponent result = null;
+    XSDSchema schema = concreteComponent.getSchema();
+    XSDSchemaDirective directive = null;
+    
+    // TODO (cs) handle case where namespace==null
+    //
+    if (componentNamespace != null)
+    {  
+      if (XSDConstants.isSchemaForSchemaNamespace(componentNamespace))
+      {
+        // this is the easy case, its just a built-in type
+        //
+        result = getDefinedComponent(schema, componentName, componentNamespace);        
+      }  
+      else
+      {
+        // lets see if the type is already visible to our schema
+        result = getDefinedComponent(schema, componentName, componentNamespace);                     
+        if (result == null)
+        {
+          // TODO (cs) we need to provide a separate command to do this part
+          // TODO (trung) directives in the outline view does not get updated
+          // apparently the type is not yet visible, we need to add includes/imports to get to it
+          if (componentNamespace.equals(schema.getTargetNamespace()))
+          {
+            // we need to add an include
+            directive =XSDFactory.eINSTANCE.createXSDInclude();
+          }
+          else
+          {
+            // we need to add an import
+            XSDImport xsdImport = XSDFactory.eINSTANCE.createXSDImport();
+            xsdImport.setNamespace(componentNamespace);
+            directive = xsdImport;              
+          }  
+          
+          // TODO (cs) we need to compute a relative URI to make this nicer!
+          //
+          String fileURI = file.getLocationURI().toString();
+          if (fileURI.startsWith("file:/") && !fileURI.startsWith("file:///"))
+          {
+            fileURI = "file:///" + fileURI.substring(6);
+          }   
+          directive.setSchemaLocation(fileURI);
+          
+          // TODO (cs) we should at the directive 'next' in the list of directives
+          // for now I'm just adding as the first thing in the schema :-(         
+          //
+          schema.getContents().add(0, directive);           
+          XSDSchema resolvedSchema = directive.getResolvedSchema();        
+         
+          if (resolvedSchema == null)
+          {
+            System.out.println("resolvedSchema is null!!!");
+            Resource resource  = concreteComponent.eResource().getResourceSet().createResource(URI.createURI(fileURI));          
+            if (resource instanceof XSDResourceImpl)
+            {
+              try
+              {
+              resource.load(null);
+              XSDResourceImpl resourceImpl = (XSDResourceImpl)resource;
+              resolvedSchema = resourceImpl.getSchema();
+              if (resolvedSchema != null)
+              {
+                System.out.println("Strange... managed to make the schema resovle myself 8-P" + resource);
+                directive.setResolvedSchema(resolvedSchema);
+              }
+              }
+              catch (Exception e)
+              {
+                
+              }
+            }  
+          }
+          if (resolvedSchema != null)
+          {  
+            result = getDefinedComponent(resolvedSchema, componentName, componentNamespace);
+          }    
+          else 
+          {
+            // TODO (cs) consider setting some error state so that the client can provide a  pop-dialog error
+            // we should also remove the import/include so save from cluttering the file with bogus directives                           
+          }
+        }
+      }   
+    }  
+    return result;
+  }
+ 
+  
+  private XSDTypeDefinition getDefinedComponent(XSDSchema schema, String componentName, String componentNamespace)
+  {
+    XSDTypeDefinition result = schema.resolveTypeDefinition(componentNamespace, componentName);
+    if (result.eContainer() == null)
+    {
+      result = null;
+    }      
+    return result;
+  }
+  
+  
+  public void execute()
+  {
+    try
+    {
+    XSDComponent td = computeComponent();
+    if (td != null && td instanceof XSDTypeDefinition)
+    {
+      UpdateTypeReferenceCommand command = new UpdateTypeReferenceCommand(
+    		  concreteComponent, (XSDTypeDefinition) td);
+      command.execute();
+    }
+    }
+    catch (Exception e)
+    {
+      e.printStackTrace();
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceCommand.java
new file mode 100644
index 0000000..b9b9a8a
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateTypeReferenceCommand.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+public class UpdateTypeReferenceCommand extends Command
+{
+  XSDConcreteComponent concreteComponent;
+  XSDTypeDefinition newType;
+  
+  public UpdateTypeReferenceCommand(XSDConcreteComponent concreteComponent, XSDTypeDefinition newType)
+  {
+    this.concreteComponent = concreteComponent;
+    this.newType = newType;
+  }
+   
+  public void execute()
+  {
+    
+    if (concreteComponent instanceof XSDElementDeclaration)
+    {
+      setElementType((XSDElementDeclaration)concreteComponent);
+    }  
+    else if (concreteComponent instanceof XSDAttributeUse)
+    {
+      setAttributeType((XSDAttributeUse)concreteComponent);      
+    }  
+    else if (concreteComponent instanceof XSDAttributeDeclaration)
+    {
+      setAttributeType((XSDAttributeDeclaration)concreteComponent);
+    }  
+  }
+ 
+  protected void setElementType(XSDElementDeclaration ed)
+  {
+    ed = ed.getResolvedElementDeclaration();
+    if (ed != null)
+    {  
+      ed.setTypeDefinition(newType);
+    }      
+  }
+  
+  protected void setAttributeType(XSDAttributeUse attributeUse)
+  {
+    setAttributeType(attributeUse.getAttributeDeclaration());
+  }
+  
+  protected void setAttributeType(XSDAttributeDeclaration ad)
+  {
+    ad = ad.getResolvedAttributeDeclaration();
+    if (ad != null && newType instanceof XSDSimpleTypeDefinition)
+    {
+      ad.setTypeDefinition((XSDSimpleTypeDefinition)newType);
+    }  
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDPatternFacetCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDPatternFacetCommand.java
new file mode 100644
index 0000000..2880469
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDPatternFacetCommand.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDPatternFacet;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+
+public class UpdateXSDPatternFacetCommand extends BaseCommand
+{
+  public static final int ADD = 0;
+  public static final int DELETE = 1;
+  public static final int UPDATE = 2;
+  
+  XSDSimpleTypeDefinition xsdSimpleTypeDefinition;
+  String value;
+  int actionType;
+  XSDPatternFacet patternToEdit;
+  
+  public UpdateXSDPatternFacetCommand(String label, XSDSimpleTypeDefinition xsdSimpleTypeDefinition, int actionType)
+  {
+    super(label);
+    this.xsdSimpleTypeDefinition = xsdSimpleTypeDefinition;
+    this.actionType = actionType;
+    
+  }
+  
+  public void setValue(String value)
+  {
+    this.value = value;
+  }
+  
+  public void setPatternToEdit(XSDPatternFacet patternToEdit)
+  {
+    this.patternToEdit = patternToEdit;
+  }
+
+  public void execute()
+  {
+    if (actionType == ADD)
+    {
+      XSDPatternFacet pattern = XSDFactory.eINSTANCE.createXSDPatternFacet();
+      pattern.setLexicalValue(value);
+      xsdSimpleTypeDefinition.getFacetContents().add(pattern);
+    }
+    else if (actionType == DELETE)
+    {
+      Assert.isNotNull(patternToEdit);
+      if (xsdSimpleTypeDefinition.getFacetContents().contains(patternToEdit))
+        xsdSimpleTypeDefinition.getFacetContents().remove(patternToEdit);
+    }
+    else if (actionType == UPDATE)
+    {
+      Assert.isNotNull(patternToEdit);
+      patternToEdit.setLexicalValue(value);
+    }
+    formatChild(xsdSimpleTypeDefinition.getElement());
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDWhiteSpaceFacetCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDWhiteSpaceFacetCommand.java
new file mode 100644
index 0000000..05b64d6
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/commands/UpdateXSDWhiteSpaceFacetCommand.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.commands;
+
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDWhiteSpace;
+import org.eclipse.xsd.XSDWhiteSpaceFacet;
+
+public class UpdateXSDWhiteSpaceFacetCommand extends BaseCommand
+{
+  XSDSimpleTypeDefinition xsdSimpleTypeDefinition;
+  boolean doAddFacet;
+  
+  public UpdateXSDWhiteSpaceFacetCommand(String label, XSDSimpleTypeDefinition xsdSimpleType, boolean doAddFacet)
+  {
+    super(label);
+    this.xsdSimpleTypeDefinition = xsdSimpleType;
+    this.doAddFacet = doAddFacet;
+  }
+
+  public void execute()
+  {
+    XSDWhiteSpaceFacet whitespaceFacet = xsdSimpleTypeDefinition.getWhiteSpaceFacet();
+    
+    if (doAddFacet)
+    {
+      if (whitespaceFacet == null)
+      {
+        whitespaceFacet = XSDFactory.eINSTANCE.createXSDWhiteSpaceFacet();
+        xsdSimpleTypeDefinition.getFacetContents().add(whitespaceFacet);
+      }
+      whitespaceFacet.setLexicalValue(XSDWhiteSpace.COLLAPSE_LITERAL.getName());
+    }
+    else
+    {
+      if (whitespaceFacet != null)
+      {
+        xsdSimpleTypeDefinition.getFacetContents().remove(whitespaceFacet);
+      }
+    }
+    formatChild(xsdSimpleTypeDefinition.getElement());    
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/providers/XSDSectionLabelProvider.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/providers/XSDSectionLabelProvider.java
new file mode 100644
index 0000000..b633a98
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/providers/XSDSectionLabelProvider.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.providers;
+
+import org.eclipse.jface.util.Assert;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.xsd.adt.outline.ITreeElement;
+import org.eclipse.wst.xsd.editor.Messages;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDAdapterFactory;
+import org.eclipse.wst.xsd.editor.internal.adapters.XSDBaseAdapter;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDSchema;
+import org.w3c.dom.Element;
+
+public class XSDSectionLabelProvider extends LabelProvider
+{
+  /**
+   * 
+   */
+  public XSDSectionLabelProvider()
+  {
+    super();
+  }
+
+  /**
+   * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+   */
+  public Image getImage(Object object)
+  {
+    if (object == null || object.equals(StructuredSelection.EMPTY))
+    {
+      return null;
+    }
+    Image result = null;
+    if (object instanceof StructuredSelection)
+    {
+      Object selected = ((StructuredSelection) object).getFirstElement();
+
+      if (selected instanceof XSDConcreteComponent)
+      {
+        XSDBaseAdapter adapter = (XSDBaseAdapter)XSDAdapterFactory.getInstance().adapt((XSDConcreteComponent)selected);
+        if (adapter instanceof ITreeElement)
+        {
+          return ((ITreeElement)adapter).getImage();
+        }
+        
+      }
+    }
+    return result;
+  }
+
+  /**
+   * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+   */
+  public String getText(Object object)
+  {
+    if (object == null || object.equals(StructuredSelection.EMPTY))
+    {
+      return "No items selected";
+    }
+
+    String result = null;
+
+    boolean isReference = false;
+    Object selected = null;
+    if (object instanceof StructuredSelection)
+    {
+      selected = ((StructuredSelection) object).getFirstElement();
+
+      if (selected instanceof XSDConcreteComponent)
+      {
+        if (selected instanceof XSDElementDeclaration)
+        {
+          XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) selected;
+          if (xsdElementDeclaration.isElementDeclarationReference())
+          {
+            isReference = true;
+          }
+        } else if (selected instanceof XSDAttributeDeclaration)
+        {
+          if (((XSDAttributeDeclaration) selected).isAttributeDeclarationReference())
+          {
+            isReference = true;
+          }
+        } else if (selected instanceof XSDModelGroupDefinition)
+        {
+          if (((XSDModelGroupDefinition) selected).isModelGroupDefinitionReference())
+          {
+            isReference = true;
+          }
+        }
+        StringBuffer sb = new StringBuffer();
+        Element element = ((XSDConcreteComponent) selected).getElement();
+        if (element != null)
+        {
+          sb.append(((XSDConcreteComponent) selected).getElement().getLocalName());
+
+          if (isReference)
+          {
+            sb.append(" ");//$NON-NLS-1$
+            sb.append(Messages.UI_PAGE_HEADING_REFERENCE);
+          }
+
+          IWorkbench workbench = PlatformUI.getWorkbench();
+          IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+          IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+          XSDSchema xsdSchema = ((XSDConcreteComponent) selected).getSchema();
+          if (xsdSchema != editorPart.getAdapter(XSDSchema.class))
+          {
+            sb.append(" (" + Messages.UI_LABEL_READ_ONLY + ")"); //$NON-NLS-1$
+          }
+          return sb.toString();
+        }
+        else
+        {
+          return "(" + Messages.UI_LABEL_READ_ONLY + ")"; //$NON-NLS-1$
+        }
+      }
+
+      if (object instanceof Element)
+      {
+        return ((Element) object).getLocalName();
+      }
+    }
+
+    return result;
+  }
+
+  private Object getObject(Object objects, boolean multiple[])
+  {
+    Assert.isNotNull(objects);
+    Object object = null;
+    return object;
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSection.java
new file mode 100644
index 0000000..ba785f2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSection.java
@@ -0,0 +1,366 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.SubContributionManager;
+import org.eclipse.jface.action.SubStatusLineManager;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.FormColors;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDComponent;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+
+public abstract class AbstractSection extends AbstractPropertySection implements SelectionListener, Listener
+{
+  protected Composite composite;
+  protected PaintListener painter;
+  protected XSDSchema xsdSchema;
+  protected Object input;
+  protected boolean isReadOnly;
+  protected boolean listenerEnabled = true;
+  protected boolean isSimple;
+  protected CustomListener customListener = new CustomListener();
+  protected IEditorPart owningEditor;
+  private IStatusLineManager statusLine;
+  
+  public static final Image ICON_ERROR = XSDEditorPlugin.getDefault().getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK);
+  
+  public AbstractSection()
+  {
+    super();
+  }
+  
+  public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage)
+  {
+    super.createControls(parent, aTabbedPropertySheetPage);
+    isSimple = getIsSimple();
+    createContents(parent);
+  }
+  
+  protected abstract void createContents(Composite parent);
+
+    protected PaintListener createPainter() {
+        return new PaintListener() {
+
+            public void paintControl(PaintEvent e) {
+                Rectangle bounds = composite.getClientArea();
+                GC gc = e.gc;
+
+                gc.setForeground(gc.getBackground());
+                gc.setBackground(getWidgetFactory().getColors().getColor(
+                    FormColors.TB_BG));
+
+//                gc.fillGradientRectangle(4 + bounds.width / 2, 0,
+//                    bounds.width / 2 - 9, bounds.height, false);
+
+                gc.setForeground(getWidgetFactory().getColors().getColor(
+                    FormColors.TB_BORDER));
+//                gc.drawLine(bounds.width - 5, 0, bounds.width - 5,
+//                    bounds.height);
+            }
+
+        };
+
+    }
+    
+    public void dispose()
+    {
+        if (composite != null && ! composite.isDisposed() && painter != null)
+            composite.removePaintListener(painter);
+        
+        super.dispose();
+    }
+
+    public void setInput(IWorkbenchPart part, ISelection selection) {
+        super.setInput(part, selection);
+        isSimple = getIsSimple();
+        Object input = ((IStructuredSelection)selection).getFirstElement();
+        this.input = input;
+        
+        if (input instanceof XSDConcreteComponent)
+        {
+          xsdSchema = ((XSDConcreteComponent)input).getSchema();
+        }
+        
+        // set owning editor of this section
+        if (part!=null)
+        {
+            if (part instanceof IEditorPart)
+            {
+                owningEditor = (IEditorPart)part;
+            }
+            else
+            {
+                owningEditor = part.getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
+            }
+        }
+        if (xsdSchema == owningEditor.getAdapter(XSDSchema.class))
+        {
+          isReadOnly = false;
+        }
+        else
+        {
+          isReadOnly = true;
+        }
+
+    }
+
+    public void refresh()
+    {
+      super.refresh();
+
+      if (isReadOnly)
+      {
+        composite.setEnabled(false);
+      }
+      else
+      {
+        composite.setEnabled(true);
+      }
+    }
+
+    public void applyAllListeners(Control control)
+    {
+      control.addListener(SWT.Modify, customListener);
+      control.addListener(SWT.FocusOut, customListener);
+      control.addListener(SWT.KeyDown, customListener);
+    }
+    
+    public void applyModifyListeners(Control control)
+    {
+      control.addListener(SWT.Modify, customListener);
+      control.addListener(SWT.FocusOut, customListener);
+    }
+
+    public void applyKeyListener(Control control)
+    {
+      control.addListener(SWT.KeyDown, customListener);
+    }
+
+    public void removeListeners(Control control)
+    {
+      control.removeListener(SWT.Modify, customListener);
+      control.removeListener(SWT.FocusOut, customListener);
+      control.removeListener(SWT.KeyDown, customListener);
+    }
+    
+    public void doWidgetDefaultSelected(SelectionEvent e)
+    {}
+    
+    public void doWidgetSelected(SelectionEvent e)
+    {}
+
+    public void widgetSelected(SelectionEvent e)
+    {
+      if (isListenerEnabled() &&
+          input != null &&
+          !isReadOnly) 
+      {
+        doWidgetSelected(e);
+      }
+    }
+
+    public void widgetDefaultSelected(SelectionEvent e)
+    {
+      if (isListenerEnabled() &&
+          input != null &&
+          !isReadOnly) 
+      {
+        doWidgetDefaultSelected(e);
+      }
+    }
+
+    /**
+     * Get the value of listenerEnabled.
+     * @return value of listenerEnabled.
+     */
+    public boolean isListenerEnabled() 
+    {
+      return listenerEnabled;
+    }
+    
+    /**
+     * Set the value of listenerEnabled.
+     * @param v  Value to assign to listenerEnabled.
+     */
+    public void setListenerEnabled(boolean  v) 
+    {
+      this.listenerEnabled = v;
+    }
+
+    /**
+     * Sent when an event that the receiver has registered for occurs.
+     *
+     * @param event the event which occurred
+     */
+    public void handleEvent(Event event)
+    {
+      if (isListenerEnabled() && !isReadOnly) 
+      {
+        doHandleEvent(event);
+      }
+    }
+
+    /**
+     * Subclasses should override
+     * @param event
+     */
+    protected void doHandleEvent(Event event)
+    {
+    }
+
+    protected IEditorPart getActiveEditor()
+    {
+      IWorkbench workbench = PlatformUI.getWorkbench();
+      IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+      IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+      this.owningEditor = editorPart;
+      return editorPart;
+    }
+    
+    public CommandStack getCommandStack()
+    {
+      Object commandStack = owningEditor.getAdapter(CommandStack.class); 
+          
+      if (commandStack==null)
+          return null;
+      else
+          return (CommandStack)commandStack;
+    }
+    
+    public boolean getIsSimple()
+    {
+      return false;
+    }
+    
+    
+    
+    /**
+     * Intended to display error messages.
+     * @return
+     */
+    private IStatusLineManager getStatusLineManager()
+    {
+      if (statusLine==null && getPart()!=null)
+      {
+        if(getPart().getSite() instanceof IEditorSite)
+          statusLine = ((IEditorSite)getPart().getSite()).getActionBars().getStatusLineManager();
+        else if (getPart().getSite() instanceof IViewSite)
+          statusLine = ((IViewSite)getPart().getSite()).getActionBars().getStatusLineManager();
+        
+        /* 
+         * We must manually set the visibility of the status line since the action bars are from the editor
+         * which means the status line only shows up when the editor is in focus (by default).
+         * Note only a SubStatusLineManager can set the visibility.
+         */
+        if (statusLine instanceof SubStatusLineManager)
+          ((SubStatusLineManager)statusLine).setVisible(true);
+      }
+      
+      return statusLine;
+    }
+
+    /**
+     * Display an error message in the status line.
+     * Call setErrorMessage(null) to clear the status line.
+     * @param text 
+     */
+    public void setErrorMessage(String text)
+    {
+      IStatusLineManager statusLine = getStatusLineManager();
+
+      if (statusLine!=null)
+      {
+        if (text==null || text.length()<1)
+          statusLine.setErrorMessage(null);
+        else
+          statusLine.setErrorMessage(ICON_ERROR, text);
+
+        // ensure our message gets displayed
+        if (statusLine instanceof SubContributionManager)
+          ((SubContributionManager)statusLine).setVisible(true);
+        
+        statusLine.update(true);
+      }
+    }
+
+    
+    protected EObject getModel()
+    {
+      return (XSDComponent)input;
+    }
+
+    
+    class CustomListener implements Listener
+    {
+      boolean handlingEvent = false;
+      public void handleEvent(Event event)
+      {
+        if (isListenerEnabled() && !isReadOnly) 
+        {
+          switch (event.type)
+          {
+            case SWT.KeyDown :
+            {
+              if (event.character == SWT.CR)
+              {
+                if (!handlingEvent)
+                {
+                  handlingEvent = true;
+                  doHandleEvent(event);
+                  handlingEvent = false;
+                }
+              }
+              break;
+            }
+            case SWT.FocusOut :
+            {
+              if (!handlingEvent)
+              {
+                handlingEvent = true;
+                doHandleEvent(event);
+                handlingEvent = false;
+              }
+              break;
+            }
+          }
+        }
+      }
+    }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSectionDescriptor.java
similarity index 81%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSectionDescriptor.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSectionDescriptor.java
index 1cbcf10..19a3545 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSectionDescriptor.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AbstractSectionDescriptor.java
@@ -1,25 +1,24 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.properties.section;
+package org.eclipse.wst.xsd.ui.common.properties.sections;
 
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.jface.viewers.IFilter;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITypeMapper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
+import org.eclipse.ui.views.properties.tabbed.ISection;
+import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor;
 import org.eclipse.xsd.XSDConcreteComponent;
 import org.w3c.dom.Element;
 
@@ -44,7 +43,7 @@
   /* (non-Javadoc)
    * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getFilter()
    */
-  public ITypeMapper getFilter()
+  public IFilter getFilter()
   {
     return null;
   }
@@ -101,10 +100,6 @@
     return "";
   }
 
-  protected boolean inputEquals(Object input, String tagname, boolean isRef)
-  {
-    return XSDDOMHelper.inputEquals(input, tagname, isRef);
-  }
   
   public int getEnablesFor()
   {
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AnnotationSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AnnotationSection.java
new file mode 100644
index 0000000..9ec3844
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/AnnotationSection.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xsd.ui.common.commands.AddDocumentationCommand;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class AnnotationSection extends AbstractSection
+{
+  Text simpleText;
+
+  public void createContents(Composite parent)
+  {
+    composite = getWidgetFactory().createFlatFormComposite(parent);
+
+    simpleText = getWidgetFactory().createText(composite, "", SWT.V_SCROLL | SWT.H_SCROLL); //$NON-NLS-1$
+    simpleText.addListener(SWT.Modify, this);
+
+    FormData data = new FormData();
+    data.left = new FormAttachment(0, 1);
+    data.right = new FormAttachment(100, -1);
+    data.top = new FormAttachment(0, 1);
+    data.bottom = new FormAttachment(100, -1);
+    simpleText.setLayoutData(data);
+  }
+
+  public AnnotationSection()
+  {
+    super();
+  }
+
+  /*
+   * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+   */
+  public void refresh()
+  {
+    super.refresh();
+    setListenerEnabled(false);
+    if (input instanceof XSDConcreteComponent)
+    {
+      XSDAnnotation xsdAnnotation = XSDCommonUIUtils.getInputXSDAnnotation((XSDConcreteComponent) input, false);
+      setInitialText(xsdAnnotation);
+    }
+    setListenerEnabled(true);
+  }
+
+  public void doHandleEvent(Event event)
+  {
+    if (input instanceof XSDConcreteComponent)
+    {
+      if (event.widget == simpleText)
+      {
+        AddDocumentationCommand command = new AddDocumentationCommand("Add Documentation", null, (XSDConcreteComponent) input, simpleText.getText(), "");
+        getCommandStack().execute(command);
+      }
+    }
+
+  }
+
+  public boolean shouldUseExtraSpace()
+  {
+    return true;
+  }
+
+  public void dispose()
+  {
+
+  }
+
+  private void setInitialText(XSDAnnotation an)
+  {
+    if (an != null)
+    {
+      try
+      {
+        List documentationList = an.getUserInformation();
+        if (documentationList.size() > 0)
+        {
+          Element docElement = (Element) documentationList.get(0);
+          if (docElement != null)
+          {
+            simpleText.setText(doSerialize(docElement));
+          }
+        }
+      }
+      catch (Exception e)
+      {
+
+      }
+    }
+    else
+    {
+      simpleText.setText("");
+    }
+  }
+
+  private String doSerialize(Element element) throws IOException
+  {
+    String source = "";
+
+    Node firstChild = element.getFirstChild();
+    Node lastChild = element.getLastChild();
+    int start = 0;
+    int end = 0;
+
+    if (element instanceof IDOMElement)
+    {
+      IDOMElement domElement = (IDOMElement) element;
+      IDOMModel model = domElement.getModel();
+      IDOMDocument doc = model.getDocument();
+
+      if (firstChild instanceof IDOMNode)
+      {
+        IDOMNode first = (IDOMNode) firstChild;
+        start = first.getStartOffset();
+      }
+      if (lastChild instanceof IDOMNode)
+      {
+        IDOMNode last = (IDOMNode) lastChild;
+        end = last.getEndOffset();
+      }
+      source = doc.getSource().substring(start, end);
+    }
+
+    return source;
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/ApplicationInfoSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/ApplicationInfoSection.java
new file mode 100644
index 0000000..ef4181d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/ApplicationInfoSection.java
@@ -0,0 +1,586 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.MouseTrackAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.part.PageBook;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.AddAppInfoAttributeCommand;
+import org.eclipse.wst.xsd.ui.common.commands.AddAppInfoCommand;
+import org.eclipse.wst.xsd.ui.common.commands.AddAppInfoElementCommand;
+import org.eclipse.wst.xsd.ui.common.commands.RemoveAppInfoAttrCommand;
+import org.eclipse.wst.xsd.ui.common.commands.RemoveAppInfoElementCommand;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.AddApplicationInfoDialog;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.ApplicationInformationPropertiesRegistry;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.ApplicationInformationTableTreeViewer;
+import org.eclipse.wst.xsd.ui.common.properties.sections.appinfo.SpecificationForAppinfoSchema;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class ApplicationInfoSection extends AbstractSection
+{
+  protected static final Image DEFAULT_ELEMENT_ICON = XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
+  protected static final Image DEFAULT_ATTR_ICON = XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
+  protected ApplicationInformationTableTreeViewer tableTree;
+  protected TableViewer extensibleElementsTable;
+  protected Label extensibilityElementsLabel, contentLabel;
+  protected ISelectionChangedListener elementSelectionChangedListener;
+
+  private Text simpleText;
+  private Composite page, pageBook1, pageBook2;
+  private Button textRadioButton, structureRadioButton;
+  private Button addButton, removeButton;
+  private PageBook pageBook;
+
+  /**
+   * 
+   */
+  public ApplicationInfoSection()
+  {
+    super();
+  }
+
+  public void createContents(Composite parent)
+  {
+    composite = getWidgetFactory().createFlatFormComposite(parent);
+
+    GridLayout gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 1;
+    composite.setLayout(gridLayout);
+
+    GridData gridData = new GridData();
+
+    page = getWidgetFactory().createComposite(composite);
+    gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 1;
+    page.setLayout(gridLayout);
+
+    gridData = new GridData();
+    gridData.grabExcessHorizontalSpace = true;
+    gridData.grabExcessVerticalSpace = true;
+    gridData.verticalAlignment = GridData.FILL;
+    gridData.horizontalAlignment = GridData.FILL;
+    page.setLayoutData(gridData);
+
+    pageBook = new PageBook(page, SWT.FLAT);
+    gridData = new GridData();
+    gridData.grabExcessHorizontalSpace = true;
+    gridData.grabExcessVerticalSpace = true;
+    gridData.verticalAlignment = GridData.FILL;
+    gridData.horizontalAlignment = GridData.FILL;
+    pageBook.setLayoutData(gridData);
+
+    pageBook2 = getWidgetFactory().createComposite(pageBook, SWT.FLAT);
+
+    gridLayout = new GridLayout();
+    gridLayout.marginHeight = 2;
+    gridLayout.marginWidth = 2;
+    gridLayout.numColumns = 1;
+    pageBook2.setLayout(gridLayout);
+
+    gridData = new GridData();
+    gridData.grabExcessHorizontalSpace = true;
+    gridData.grabExcessVerticalSpace = true;
+    gridData.verticalAlignment = GridData.FILL;
+    gridData.horizontalAlignment = GridData.FILL;
+    pageBook2.setLayoutData(gridData);
+
+    SashForm sashForm = new SashForm(pageBook2, SWT.HORIZONTAL);
+    gridData = new GridData();
+    gridData.grabExcessHorizontalSpace = true;
+    gridData.grabExcessVerticalSpace = true;
+    gridData.verticalAlignment = GridData.FILL;
+    gridData.horizontalAlignment = GridData.FILL;
+    sashForm.setLayoutData(gridData);
+
+    Composite leftContent = getWidgetFactory().createComposite(sashForm, SWT.FLAT);
+    gridLayout = new GridLayout();
+    gridLayout.numColumns = 1;
+    leftContent.setLayout(gridLayout);
+
+    extensibilityElementsLabel = getWidgetFactory().createLabel(leftContent, "Extensibility Items");
+    extensibleElementsTable = new TableViewer(leftContent, SWT.FLAT | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.LINE_SOLID);
+    gridLayout = new GridLayout();
+    gridLayout.numColumns = 1;
+    extensibleElementsTable.getTable().setLayout(gridLayout);
+    gridData = new GridData();
+    gridData.grabExcessHorizontalSpace = true;
+    gridData.grabExcessVerticalSpace = true;
+    gridData.verticalAlignment = GridData.FILL;
+    gridData.horizontalAlignment = GridData.FILL;
+    extensibleElementsTable.getTable().setLayoutData(gridData);
+    extensibleElementsTable.setContentProvider(new ElementTableContentProvider());
+    extensibleElementsTable.setLabelProvider(new ElementTableLabelProvider());
+    elementSelectionChangedListener = new ElementSelectionChangedListener();
+    extensibleElementsTable.addSelectionChangedListener(elementSelectionChangedListener);
+    extensibleElementsTable.getTable().addMouseTrackListener(new MouseTrackAdapter()
+    {
+      public void mouseHover(org.eclipse.swt.events.MouseEvent e)
+      {
+        ISelection selection = extensibleElementsTable.getSelection();
+        if (selection instanceof StructuredSelection)
+        {
+          Object obj = ((StructuredSelection) selection).getFirstElement();
+          if (obj instanceof Element)
+          {
+            Element element = (Element) obj;
+            ApplicationInformationPropertiesRegistry registry = XSDEditorPlugin.getDefault().getApplicationInformationPropertiesRegistry();
+            // ApplicationSpecificSchemaProperties[] properties =
+            // registry.getAllApplicationSpecificSchemaProperties();
+            // ApplicationSpecificSchemaProperties[] properties =
+            // (ApplicationSpecificSchemaProperties[])
+            // registry.getAllApplicationSpecificSchemaProperties().toArray(new
+            // ApplicationSpecificSchemaProperties[0]);
+            List properties = registry.getAllApplicationSpecificSchemaProperties();
+
+            int length = properties.size();
+            for (int i = 0; i < length; i++)
+            {
+              SpecificationForAppinfoSchema current = (SpecificationForAppinfoSchema) properties.get(i);
+              if (current.getNamespaceURI().equals(element.getNamespaceURI()))
+              {
+                extensibleElementsTable.getTable().setToolTipText(current.getDescription());
+                break;
+              }
+            }
+          }
+        }
+      };
+
+    });
+
+    Composite rightContent = getWidgetFactory().createComposite(sashForm, SWT.FLAT);
+
+    contentLabel = getWidgetFactory().createLabel(rightContent, "Content");
+
+    Composite testComp = getWidgetFactory().createComposite(rightContent, SWT.FLAT);
+
+    gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.marginLeft = 0;
+    gridLayout.marginRight = 0;
+    gridLayout.numColumns = 1;
+    gridLayout.marginHeight = 3;
+    gridLayout.marginWidth = 3;
+    rightContent.setLayout(gridLayout);
+
+    gridData = new GridData();
+    gridData.grabExcessHorizontalSpace = true;
+    gridData.grabExcessVerticalSpace = true;
+    gridData.verticalAlignment = GridData.FILL;
+    gridData.horizontalAlignment = GridData.FILL;
+    rightContent.setLayoutData(gridData);
+
+    gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginLeft = 0;
+    gridLayout.marginRight = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.marginHeight = 3;
+    gridLayout.marginWidth = 3;
+    gridLayout.numColumns = 1;
+    testComp.setLayout(gridLayout);
+
+    gridData = new GridData();
+    gridData.grabExcessHorizontalSpace = true;
+    gridData.grabExcessVerticalSpace = true;
+    gridData.verticalAlignment = GridData.FILL;
+    gridData.horizontalAlignment = GridData.FILL;
+    testComp.setLayoutData(gridData);
+
+    createElementContentWidget(testComp);
+
+    int[] weights = { 30, 70 };
+    sashForm.setWeights(weights);
+
+    Composite buttonComposite = getWidgetFactory().createComposite(pageBook2, SWT.FLAT);
+    gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 2;
+    gridLayout.makeColumnsEqualWidth = true;
+    buttonComposite.setLayout(gridLayout);
+    addButton = getWidgetFactory().createButton(buttonComposite, "Add...", SWT.FLAT);
+    addButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+    addButton.addSelectionListener(this);
+    addButton.setToolTipText("Add Extension Component");
+    removeButton = getWidgetFactory().createButton(buttonComposite, "Remove", SWT.FLAT);
+    removeButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+    removeButton.addSelectionListener(this);
+    removeButton.setToolTipText("Remove Extension Component");
+
+    pageBook.showPage(pageBook2);
+  }
+
+  protected void createElementContentWidget(Composite parent)
+  {
+    tableTree = new ApplicationInformationTableTreeViewer(parent);
+    GridData gridData = new GridData();
+    gridData.grabExcessHorizontalSpace = true;
+    gridData.grabExcessVerticalSpace = true;
+    gridData.verticalAlignment = GridData.FILL;
+    gridData.horizontalAlignment = GridData.FILL;
+
+    tableTree.getControl().setLayoutData(gridData);
+  }
+
+  /*
+   * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+   */
+  public void refresh()
+  {
+    setListenerEnabled(false);
+    if (input != null)
+    {
+      tableTree.setInput(null);
+      tableTree.getTree().removeAll();
+      extensibleElementsTable.getTable().removeAll();
+      
+      extensibleElementsTable.setInput(input);
+
+      if (extensibleElementsTable.getTable().getSelectionCount() == 0)
+      {
+        Object o = extensibleElementsTable.getElementAt(0);
+        if (o != null)
+        {
+          extensibleElementsTable.setSelection(new StructuredSelection(o));
+          if (o instanceof Element)
+          {
+            tableTree.setInput(((Element) o).getParentNode());
+          }
+        }
+        tableTree.refresh();
+      }
+
+    }
+    setListenerEnabled(true);
+
+  }
+
+  public Composite getPage()
+  {
+    return page;
+  }
+
+  public void widgetSelected(SelectionEvent event)
+  {
+    if (event.widget == addButton)
+    {
+        ApplicationInformationPropertiesRegistry registry = XSDEditorPlugin.getDefault().getApplicationInformationPropertiesRegistry();
+      AddApplicationInfoDialog dialog = new AddApplicationInfoDialog(composite.getShell(), registry);
+
+      List properties = registry.getAllApplicationSpecificSchemaProperties();
+
+      dialog.setInput(properties);
+      dialog.setBlockOnOpen(true);
+
+      if (dialog.open() == Window.OK)
+      {
+        Object[] result = dialog.getResult();
+        if (result != null)
+        {
+          SpecificationForAppinfoSchema appInfoSchemaSpec = (SpecificationForAppinfoSchema) result[1];
+          if (input instanceof XSDConcreteComponent)
+          {
+            AddAppInfoCommand addAppInfo = null;
+            if (result[0] instanceof XSDElementDeclaration)
+            {
+              XSDElementDeclaration element = (XSDElementDeclaration) result[0];
+              addAppInfo = new AddAppInfoElementCommand("Add AppInfo Element", (XSDConcreteComponent) input, element);
+            }
+            else if (result[0] instanceof XSDAttributeDeclaration)
+            {
+              XSDAttributeDeclaration attribute = (XSDAttributeDeclaration) result[0];
+              addAppInfo = new AddAppInfoAttributeCommand("Add AppInfo Attribute", (XSDConcreteComponent) input, attribute);
+            }
+            else
+              return;
+
+            addAppInfo.setSchemaProperties(appInfoSchemaSpec);
+            if (getCommandStack() != null)
+            {
+              getCommandStack().execute(addAppInfo);
+            }
+          }
+        }
+        extensibleElementsTable.refresh();
+        refresh();
+      }
+
+    }
+    else if (event.widget == removeButton)
+    {
+      ISelection selection = extensibleElementsTable.getSelection();
+      
+      if (selection instanceof StructuredSelection)
+      {
+    	Command command = null;
+        Object o = ((StructuredSelection) selection).getFirstElement();
+        if (o instanceof Element)
+        {
+            XSDAnnotation xsdAnnotation = (XSDAnnotation) extensibleElementsTable.getInput();
+        	Node appInfoElement = ((Element) o).getParentNode();
+        	command = new RemoveAppInfoElementCommand("Remove AppInfo Element",
+        			xsdAnnotation, appInfoElement);
+        }
+        else if (o instanceof Attr){
+        	Element hostElement = ((Attr) o).getOwnerElement();
+        	command = new RemoveAppInfoAttrCommand("Remove AppInfo Attribute",
+        			hostElement, (Attr) o);
+        }
+        else 
+        	return;
+        if (getCommandStack() != null)
+        {
+        	getCommandStack().execute(command);
+        	extensibleElementsTable.setInput(input);
+        	extensibleElementsTable.refresh();
+        	
+        	if (extensibleElementsTable.getTable().getItemCount() > 0)
+        	{
+        		Object object = extensibleElementsTable.getElementAt(0);
+        		if (object != null)
+        		{
+        			extensibleElementsTable.setSelection(new StructuredSelection(object));
+        		}
+        	}
+        	else
+        	{
+        		tableTree.setInput(null);
+        	}
+        }
+      }
+    }
+    else if (event.widget == extensibleElementsTable.getTable())
+    {
+
+    }
+  }
+
+  public void widgetDefaultSelected(SelectionEvent event)
+  {
+
+  }
+
+  public boolean shouldUseExtraSpace()
+  {
+    return true;
+  }
+
+  public void dispose()
+  {
+
+  }
+
+  static class ElementTableContentProvider implements IStructuredContentProvider
+  {
+    protected String facet;
+
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+    {
+    }
+
+    public java.lang.Object[] getElements(java.lang.Object inputElement)
+    {
+      if (inputElement instanceof XSDConcreteComponent)
+      {
+        XSDConcreteComponent component = (XSDConcreteComponent) inputElement;
+        List elementsAndAttributes = new ArrayList();
+        
+        /** Construct elements list */
+        XSDAnnotation xsdAnnotation = XSDCommonUIUtils.getInputXSDAnnotation(component, false);
+        if (xsdAnnotation != null)
+        {
+          List appInfoList = xsdAnnotation.getApplicationInformation();
+          Element appInfoElement = null;
+          if (appInfoList.size() > 0)
+          {
+            appInfoElement = (Element) appInfoList.get(0);
+          }
+          if (appInfoElement != null)
+          {            
+            for (Iterator it = appInfoList.iterator(); it.hasNext();)
+            {
+              Object obj = it.next();
+              if (obj instanceof Element)
+              {
+                Element appInfo = (Element) obj;
+                NodeList nodeList = appInfo.getChildNodes();
+                int length = nodeList.getLength();
+                for (int i = 0; i < length; i++)
+                {
+                  Node node = nodeList.item(i);
+                  if (node instanceof Element)
+                  {
+                    elementsAndAttributes.add(node);
+                  }
+                }
+              }
+            }
+          }
+        }
+        
+        /** Construct attributes list */
+        NamedNodeMap attributes = component.getElement().getAttributes();
+        if ( attributes != null ){
+          //String defaultNamespace = (String)component.getSchema().getQNamePrefixToNamespaceMap().get("");          
+          int length = attributes.getLength();
+          for (int i = 0; i < length; i++){
+            Node oneAttribute = attributes.item(i);
+            if (!isXmlnsAttribute(oneAttribute))
+            {  
+              String namespace = oneAttribute.getNamespaceURI();        
+              boolean isExtension = true;
+              if (namespace == null && oneAttribute.getPrefix() == null) 
+              {
+                isExtension = false;
+              }  
+              else if (!XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(namespace))
+              {
+                isExtension = true;
+              }           
+              if (isExtension)
+              {  
+                elementsAndAttributes.add(oneAttribute);
+              }    
+            }
+          }
+        }
+        return elementsAndAttributes.toArray();
+      }
+      return Collections.EMPTY_LIST.toArray();
+    }
+    
+    private static boolean isXmlnsAttribute(Node attribute)
+    {
+      String prefix = attribute.getPrefix();
+      if (prefix != null)
+      {
+        // this handle the xmlns:foo="blah" case
+        return "xmlns".equals(prefix);
+      }
+      else
+      {
+        // this handles the xmlns="blah" case
+        return "xmlns".equals(attribute.getNodeName());
+      }  
+    }
+
+    public void dispose()
+    {
+
+    }
+  }
+
+  static class ElementTableLabelProvider extends LabelProvider implements ITableLabelProvider
+  {
+    public Image getColumnImage(Object element, int columnIndex)
+    {
+      ApplicationInformationPropertiesRegistry registry = XSDEditorPlugin.getDefault().getApplicationInformationPropertiesRegistry();
+      if (element instanceof Element)
+      {
+        Element domElement = (Element) element;
+        ILabelProvider lp = registry.getLabelProvider(domElement);
+        if (lp != null)
+        {
+          Image img = lp.getImage(domElement);
+          if (img != null)
+            return img;
+        }
+        return DEFAULT_ELEMENT_ICON;
+      }
+      if (element instanceof Attr)
+    	return DEFAULT_ATTR_ICON;
+      return null;
+    }
+
+    public String getColumnText(Object input, int columnIndex)
+    {
+      ApplicationInformationPropertiesRegistry registry = XSDEditorPlugin.getDefault().getApplicationInformationPropertiesRegistry();
+
+      if (input instanceof Element)
+      {
+        Element domElement = (Element) input;
+        return domElement.getLocalName();
+      }
+      if ( input instanceof Attr){
+        return ((Attr) input).getLocalName();
+      }
+      return "";
+    }
+  }
+
+  Element selectedElement;
+
+  class ElementSelectionChangedListener implements ISelectionChangedListener
+  {
+    public void selectionChanged(SelectionChangedEvent event)
+    {
+      ISelection selection = event.getSelection();
+      if (selection instanceof StructuredSelection)
+      {
+        Object obj = ((StructuredSelection) selection).getFirstElement();
+        if (obj instanceof Element)
+        {
+          selectedElement = (Element) obj;
+          tableTree.setInput(selectedElement.getParentNode());
+          tableTree.setASIElement(selectedElement);
+          tableTree.setCommandStack(getCommandStack());
+          contentLabel.setText("Structure of " + selectedElement.getLocalName());
+          contentLabel.getParent().layout();
+        }
+      }
+    }
+
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/CommonDirectivesSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/CommonDirectivesSection.java
similarity index 87%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/CommonDirectivesSection.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/CommonDirectivesSection.java
index 6a89da7..f77f0ae 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/CommonDirectivesSection.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/CommonDirectivesSection.java
@@ -1,14 +1,14 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.properties.section;
+package org.eclipse.wst.xsd.ui.common.properties.sections;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.emf.common.util.URI;
@@ -21,13 +21,13 @@
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.IFileEditorInput;
 import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.xsd.XSDInclude;
 import org.eclipse.xsd.XSDRedefine;
 import org.eclipse.xsd.XSDSchema;
 import org.eclipse.xsd.util.XSDParser;
 
-public class CommonDirectivesSection extends AbstractSection
+public abstract class CommonDirectivesSection extends AbstractSection
 {
   Text schemaLocationText;
   Button wizardButton;
@@ -77,11 +77,11 @@
                 externalSchema.getDiagnostics().size() > 0)
             {
               isValidSchemaLocation = false;
-              errorMessage = XSDEditorPlugin.getPlugin().getString("_UI_INCORRECT_XML_SCHEMA", xsdModelFile);
+              errorMessage = XSDEditorPlugin.getResourceString("_UI_INCORRECT_XML_SCHEMA", xsdModelFile);
             }  
             else
             {
-              String currentNameSpace = getSchema().getTargetNamespace();
+              String currentNameSpace = xsdSchema.getTargetNamespace();
               if (input instanceof XSDInclude || input instanceof XSDRedefine)
               {  
                 // Check the namespace to make sure they are the same as current file
@@ -89,7 +89,7 @@
                 {
                   if (currentNameSpace != null && !extNamespace.equals(currentNameSpace))
                   {
-                    errorMessage = XSDEditorPlugin.getPlugin().getString("_UI_DIFFERENT_NAME_SPACE", xsdModelFile);
+                    errorMessage = XSDEditorPlugin.getResourceString("_UI_DIFFERENT_NAME_SPACE", xsdModelFile);
                     isValidSchemaLocation = false;
                   }
                 }
@@ -101,7 +101,7 @@
                 {
                   if (currentNameSpace != null && extNamespace.equals(currentNameSpace))
                   {
-                    errorMessage = XSDEditorPlugin.getPlugin().getString("_UI_SAME_NAME_SPACE", xsdModelFile);
+                    errorMessage = XSDEditorPlugin.getResourceString("_UI_SAME_NAME_SPACE", xsdModelFile);
                     isValidSchemaLocation = false;
                   }
                 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/EnumerationsSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/EnumerationsSection.java
new file mode 100644
index 0000000..7f2723f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/EnumerationsSection.java
@@ -0,0 +1,404 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.AddEnumerationsCommand;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.wst.xsd.ui.common.commands.SetXSDFacetValueCommand;
+import org.eclipse.wst.xsd.ui.internal.widgets.EnumerationsDialog;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class EnumerationsSection extends AbstractSection
+{
+  private EnumerationsTableViewer enumerationsTable;
+  private Button addButton;
+  private Button addManyButton;
+  private Button deleteButton;
+
+  /**
+   * 
+   */
+  public EnumerationsSection()
+  {
+    super();
+  }
+
+  public void widgetSelected(SelectionEvent e)
+  {
+    XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+
+    if (e.widget == addButton)
+    {
+      List enumList = st.getEnumerationFacets();
+      StringBuffer newName = new StringBuffer("value1"); //$NON-NLS-1$
+      int suffix = 1;
+      for (Iterator i = enumList.iterator(); i.hasNext();)
+      {
+        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) i.next();
+        String value = enumFacet.getLexicalValue();
+        if (value != null)
+        {
+          if (value.equals(newName.toString()))
+          {
+            suffix++;
+            newName = new StringBuffer("value" + String.valueOf(suffix)); //$NON-NLS-1$
+          }
+        }
+      }
+
+      AddEnumerationsCommand command = new AddEnumerationsCommand("Add Enumeration", (XSDSimpleTypeDefinition) input);
+      command.setValue(newName.toString());
+      getCommandStack().execute(command);
+
+      enumerationsTable.refresh();
+      int newItemIndex = enumerationsTable.getTable().getItemCount() - 1;
+      enumerationsTable.editElement(enumerationsTable.getElementAt(newItemIndex), 0);
+    }
+    else if (e.widget == addManyButton)
+    {
+      Display display = Display.getCurrent();
+      // if it is null, get the default one
+      display = display == null ? Display.getDefault() : display;
+      Shell parentShell = display.getActiveShell();
+      EnumerationsDialog dialog = new EnumerationsDialog(parentShell);
+      dialog.setBlockOnOpen(true);
+      int result = dialog.open();
+
+      if (result == Window.OK)
+      {
+        String text = dialog.getText();
+        String delimiter = dialog.getDelimiter();
+        StringTokenizer tokenizer = new StringTokenizer(text, delimiter);
+        CompoundCommand compoundCommand = new CompoundCommand("Add Enumerations");
+        while (tokenizer.hasMoreTokens())
+        {
+          String token = tokenizer.nextToken();
+          if (dialog.isPreserveWhitespace() == false)
+          {
+            token = token.trim();
+          }
+          AddEnumerationsCommand command = new AddEnumerationsCommand("Add Enumerations", (XSDSimpleTypeDefinition) input);
+          command.setValue(token);
+          compoundCommand.add(command);
+        }
+        getCommandStack().execute(compoundCommand);
+      }
+      enumerationsTable.refresh();
+    }
+    else if (e.widget == deleteButton)
+    {
+      StructuredSelection selection = (StructuredSelection) enumerationsTable.getSelection();
+      if (selection != null)
+      {
+        Iterator i = selection.iterator();
+        CompoundCommand compoundCommand = new CompoundCommand("Delete Enumeration");
+        while (i.hasNext())
+        {
+          Object obj = i.next();
+          if (obj != null)
+          {
+            if (obj instanceof XSDEnumerationFacet)
+            {
+              XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) obj;
+
+              DeleteCommand deleteCommand = new DeleteCommand("Delete Enumeration", enumFacet);
+              compoundCommand.add(deleteCommand);
+            }
+          }
+        }
+        getCommandStack().execute(compoundCommand);
+        enumerationsTable.refresh();
+      }
+    }
+    else if (e.widget == enumerationsTable.getTable())
+    {
+      StructuredSelection selection = (StructuredSelection) enumerationsTable.getSelection();
+      if (selection.getFirstElement() != null)
+      {
+        deleteButton.setEnabled(true);
+      }
+      else
+      {
+        deleteButton.setEnabled(false);
+      }
+    }
+
+  }
+
+  public void widgetDefaultSelected(SelectionEvent e)
+  {
+
+  }
+
+  public void createContents(Composite parent)
+  {
+    TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+    composite = factory.createFlatFormComposite(parent);
+
+    enumerationsTable = new EnumerationsTableViewer(getWidgetFactory().createTable(composite, SWT.MULTI | SWT.FULL_SELECTION));
+    enumerationsTable.setInput(input);
+    Table table = enumerationsTable.getTable();
+    table.addSelectionListener(this);
+
+    addButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_REGEX_WIZARD_ADD_BUTTON_LABEL"), SWT.PUSH); //$NON-NLS-1$
+    addManyButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_REGEX_WIZARD_ADD_BUTTON_LABEL") + "...", SWT.PUSH); //$NON-NLS-1$
+    deleteButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_INCLUDE"), SWT.PUSH); //$NON-NLS-1$
+
+    FormData data2 = new FormData();
+    data2.top = new FormAttachment(0, 0);
+    data2.left = new FormAttachment(100, -100);
+    data2.right = new FormAttachment(100, 0);
+    // data2.width = 50;
+    addButton.setLayoutData(data2);
+    addButton.addSelectionListener(this);
+
+    FormData data = new FormData();
+    data.left = new FormAttachment(addButton, 0, SWT.LEFT);
+    data.right = new FormAttachment(100, 0);
+    data.top = new FormAttachment(addButton, 0);
+    addManyButton.setLayoutData(data);
+    addManyButton.addSelectionListener(this);
+
+    data = new FormData();
+    data.left = new FormAttachment(addButton, 0, SWT.LEFT);
+    data.right = new FormAttachment(100, 0);
+    data.top = new FormAttachment(addManyButton, 0);
+    deleteButton.setLayoutData(data);
+    deleteButton.setEnabled(false);
+    deleteButton.addSelectionListener(this);
+
+    data = new FormData();
+    data.top = new FormAttachment(0, 0);
+    data.left = new FormAttachment(0, 0);
+    data.right = new FormAttachment(addButton, 0);
+    data.bottom = new FormAttachment(100, 0);
+    data.width = 50;
+    table.setLayoutData(data);
+    table.addListener(SWT.Resize, this);
+  }
+
+  /*
+   * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+   */
+  public void refresh()
+  {
+    if (isReadOnly)
+    {
+      composite.setEnabled(false);
+    }
+    else
+    {
+      composite.setEnabled(true);
+    }
+    XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+
+    Iterator validFacets = st.getValidFacets().iterator();
+
+    boolean isApplicable = false;
+    while (validFacets.hasNext())
+    {
+      String aValidFacet = (String) validFacets.next();
+      if (aValidFacet.equals(XSDConstants.ENUMERATION_ELEMENT_TAG))
+      {
+        isApplicable = true;
+      }
+    }
+
+    if (isApplicable)
+    {
+      addButton.setEnabled(true);
+      addManyButton.setEnabled(true);
+    }
+    else
+    {
+      addButton.setEnabled(false);
+      addManyButton.setEnabled(false);
+    }
+    enumerationsTable.setInput(input);
+  }
+
+  public void handleEvent(Event event)
+  {
+    Table table = enumerationsTable.getTable();
+    if (event.type == SWT.Resize && event.widget == table)
+    {
+      TableColumn tableColumn = table.getColumn(0);
+      tableColumn.setWidth(table.getSize().x);
+    }
+  }
+
+  public void dispose()
+  {
+  }
+
+  public boolean shouldUseExtraSpace()
+  {
+    return true;
+  }
+
+  class EnumerationsTableViewer extends NavigableTableViewer implements ICellModifier
+  {
+    protected String[] columnProperties = { XSDConstants.ENUMERATION_ELEMENT_TAG };
+
+    protected CellEditor[] cellEditors;
+
+    Table table;
+
+    public EnumerationsTableViewer(Table table)
+    {
+      super(table);
+      table = getTable();
+
+      table.setLinesVisible(true);
+
+      setContentProvider(new EnumerationsTableContentProvider());
+      setLabelProvider(new EnumerationsTableLabelProvider());
+      setColumnProperties(columnProperties);
+
+      setCellModifier(this);
+
+      TableColumn column = new TableColumn(table, SWT.NONE, 0);
+      column.setText(columnProperties[0]);
+      column.setAlignment(SWT.LEFT);
+      column.setResizable(true);
+
+      cellEditors = new CellEditor[1];
+
+      TableLayout layout = new TableLayout();
+      ColumnWeightData data = new ColumnWeightData(100);
+
+      layout.addColumnData(data);
+      cellEditors[0] = new TextCellEditor(table);
+
+      getTable().setLayout(layout);
+      setCellEditors(cellEditors);
+    }
+
+    public boolean canModify(Object element, String property)
+    {
+      return true;
+    }
+
+    public void modify(Object element, String property, Object value)
+    {
+      if (element instanceof TableItem && (value != null))
+      {
+        TableItem item = (TableItem) element;
+
+        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) item.getData();
+        SetXSDFacetValueCommand command = new SetXSDFacetValueCommand("Set Enumeration Value", enumFacet);
+        command.setValue((String) value);
+        getCommandStack().execute(command);
+        item.setData(enumFacet);
+        item.setText((String) value);
+      }
+    }
+
+    public Object getValue(Object element, String property)
+    {
+      if (element instanceof XSDEnumerationFacet)
+      {
+        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) element;
+        String value = enumFacet.getLexicalValue();
+        if (value == null)
+          value = ""; //$NON-NLS-1$
+        return value;
+      }
+      return ""; //$NON-NLS-1$
+    }
+
+  }
+
+  class EnumerationsTableContentProvider implements IStructuredContentProvider
+  {
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+    {
+    }
+
+    public java.lang.Object[] getElements(java.lang.Object inputElement)
+    {
+      java.util.List list = new ArrayList();
+      if (inputElement instanceof XSDSimpleTypeDefinition)
+      {
+        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) inputElement;
+        return st.getEnumerationFacets().toArray();
+      }
+      return list.toArray();
+    }
+
+    public void dispose()
+    {
+    }
+  }
+
+  class EnumerationsTableLabelProvider extends LabelProvider implements ITableLabelProvider
+  {
+    public EnumerationsTableLabelProvider()
+    {
+
+    }
+
+    public Image getColumnImage(Object element, int columnIndex)
+    {
+      return XSDEditorPlugin.getXSDImage("icons/XSDSimpleEnum.gif");
+    }
+
+    public String getColumnText(Object element, int columnIndex)
+    {
+      if (element instanceof XSDEnumerationFacet)
+      {
+        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) element;
+        String value = enumFacet.getLexicalValue();
+        if (value == null)
+          value = "";
+        return value;
+      }
+      return "";
+    }
+
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/FacetViewer.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/FacetViewer.java
new file mode 100644
index 0000000..3ae9947
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/FacetViewer.java
@@ -0,0 +1,559 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+//import java.util.ArrayList;
+//import java.util.Iterator;
+//import java.util.List;
+//
+//import org.eclipse.jface.viewers.CellEditor;
+//import org.eclipse.jface.viewers.ColumnWeightData;
+//import org.eclipse.jface.viewers.ICellModifier;
+//import org.eclipse.jface.viewers.ISelectionChangedListener;
+//import org.eclipse.jface.viewers.IStructuredContentProvider;
+//import org.eclipse.jface.viewers.ITableLabelProvider;
+//import org.eclipse.jface.viewers.LabelProvider;
+//import org.eclipse.jface.viewers.SelectionChangedEvent;
+//import org.eclipse.jface.viewers.StructuredSelection;
+//import org.eclipse.jface.viewers.TableLayout;
+//import org.eclipse.jface.viewers.TextCellEditor;
+//import org.eclipse.jface.viewers.Viewer;
+//import org.eclipse.swt.SWT;
+//import org.eclipse.swt.events.MouseEvent;
+//import org.eclipse.swt.events.MouseTrackAdapter;
+//import org.eclipse.swt.graphics.Image;
+//import org.eclipse.swt.graphics.Point;
+//import org.eclipse.swt.widgets.Composite;
+//import org.eclipse.swt.widgets.Table;
+//import org.eclipse.swt.widgets.TableColumn;
+//import org.eclipse.swt.widgets.TableItem;
+//import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
+//import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+//import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
+//import org.eclipse.wst.xsd.ui.internal.properties.XSDComboBoxPropertyDescriptor;
+//import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
+//import org.eclipse.xsd.XSDConstrainingFacet;
+//import org.eclipse.xsd.XSDFactory;
+//import org.eclipse.xsd.XSDMaxExclusiveFacet;
+//import org.eclipse.xsd.XSDMaxFacet;
+//import org.eclipse.xsd.XSDMaxInclusiveFacet;
+//import org.eclipse.xsd.XSDMinExclusiveFacet;
+//import org.eclipse.xsd.XSDMinFacet;
+//import org.eclipse.xsd.XSDMinInclusiveFacet;
+//import org.eclipse.xsd.XSDSimpleTypeDefinition;
+//import org.eclipse.xsd.util.XSDConstants;
+//import org.eclipse.xsd.util.XSDSchemaBuildingTools;
+//import org.w3c.dom.Element;
+
+public class FacetViewer //extends NavigableTableViewer implements ICellModifier
+{
+//  public static final String FACET_NAME = XSDEditorPlugin.getXSDString("_UI_FACET_NAME"); // "Name";
+//  public static final String FACET_VALUE = XSDEditorPlugin.getXSDString("_UI_FACET_VALUE"); // "Value";
+//  public static final String FACET_OTHER = XSDEditorPlugin.getXSDString("_UI_FACET_FIXED"); // "Fixed";
+//
+//  protected FacetsTableLabelProvider facetsTableLabelProvider = new FacetsTableLabelProvider();
+//  protected FacetsTableContentProvider facetsTableContentProvider = new FacetsTableContentProvider();
+//  protected String[] columnProperties = { FACET_NAME, FACET_VALUE, FACET_OTHER };
+//  protected CellEditor[] cellEditors; // these cellEditors are used when
+//                                      // non-whitespace facet is selected
+//  protected CellEditor[] altCellEditors; // these cellEditors are used when
+//                                          // whitespace facet is selected
+//
+//  protected String[] whiteSpaceValues = new String[] { "", "preserve", "replace", "collapse" };
+//  protected String[] trueFalseValues = new String[] { "", "false", "true" };
+//
+//  /**
+//   * @param parent
+//   */
+//  public FacetViewer(Composite parent)
+//  {
+//    super(new Table(parent, SWT.FULL_SELECTION | SWT.SINGLE));
+//
+//    getTable().setLinesVisible(true);
+//    getTable().setHeaderVisible(true);
+//
+//    addSelectionChangedListener(new SelectionChangedListener());
+//    getTable().addMouseTrackListener(new MyMouseTrackListener());
+//
+//    setContentProvider(facetsTableContentProvider);
+//    setLabelProvider(facetsTableLabelProvider);
+//    setColumnProperties(columnProperties);
+//
+//    setCellModifier(this);
+//
+//    for (int i = 0; i < 3; i++)
+//    {
+//      TableColumn column = new TableColumn(getTable(), SWT.NONE, i);
+//      column.setText(columnProperties[i]);
+//      column.setAlignment(SWT.LEFT);
+//      column.setResizable(true);
+//    }
+//
+//    cellEditors = new CellEditor[3];
+//    altCellEditors = new CellEditor[3];
+//
+//    TableLayout layout = new TableLayout();
+//    ColumnWeightData data = new ColumnWeightData(60, 80, true);
+//    layout.addColumnData(data);
+//    cellEditors[0] = null;
+//
+//    ColumnWeightData data2 = new ColumnWeightData(120, 80, true);
+//    layout.addColumnData(data2);
+//
+//    cellEditors[1] = new TextCellEditor(getTable());
+//    XSDComboBoxPropertyDescriptor pd = new XSDComboBoxPropertyDescriptor("combo", "whitespace", whiteSpaceValues);
+//    altCellEditors[1] = pd.createPropertyEditor(getTable());
+//
+//    ColumnWeightData data3 = new ColumnWeightData(60, 60, true);
+//    layout.addColumnData(data3);
+//
+//    XSDComboBoxPropertyDescriptor pd2 = new XSDComboBoxPropertyDescriptor("combo", "other", trueFalseValues);
+//    cellEditors[2] = pd2.createPropertyEditor(getTable());
+//    altCellEditors[2] = pd2.createPropertyEditor(getTable());
+//
+//    getTable().setLayout(layout);
+//    setCellEditors(cellEditors);
+//
+//  }
+//
+//  /*
+//   * (non-Javadoc)
+//   * 
+//   * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object,
+//   *      java.lang.String)
+//   */
+//  public boolean canModify(Object element, String property)
+//  {
+//    return property.equals(FACET_VALUE) || property.equals(FACET_OTHER);
+//  }
+//
+//  /*
+//   * (non-Javadoc)
+//   * 
+//   * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object,
+//   *      java.lang.String)
+//   */
+//  public Object getValue(Object element, String property)
+//  {
+//    int column = 0;
+//    if (property.equals(columnProperties[0]))
+//    {
+//      column = 0;
+//    }
+//    else if (property.equals(columnProperties[1]))
+//    {
+//      column = 1;
+//    }
+//    else if (property.equals(columnProperties[2]))
+//    {
+//      column = 2;
+//    }
+//
+//    return facetsTableLabelProvider.getColumnText(element, column);
+//  }
+//
+//  /*
+//   * (non-Javadoc)
+//   * 
+//   * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object,
+//   *      java.lang.String, java.lang.Object)
+//   */
+//  public void modify(Object element, String property, Object value)
+//  {
+//    XSDSimpleTypeDefinition xsdSimpleType = (XSDSimpleTypeDefinition) getInput();
+//    TableItem item = (TableItem) element;
+//    if (item != null)
+//    {
+//      Object o = item.getData();
+//      if (o != null)
+//      {
+//        if (o instanceof String)
+//        {
+//          String facet = (String) o;
+//
+//          Element simpleTypeElement = xsdSimpleType.getElement();
+//          XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
+//          Element derivedByElement = xsdDOMHelper.getDerivedByElement(simpleTypeElement);
+//
+//          String prefix = simpleTypeElement.getPrefix();
+//          prefix = (prefix == null) ? "" : (prefix + ":");
+//
+//          Element childNodeElement = null;
+//          DOMAttribute valueAttr = null;
+//
+//          XSDConstrainingFacet targetFacet = getXSDConstrainingFacet(facet);
+//
+//          String newValue = "";
+//          if (value != null && value instanceof String)
+//          {
+//            newValue = (String) value;
+//          }
+//
+//          if (property.equals(columnProperties[1]))
+//          {
+//            if (targetFacet == null && newValue.length() > 0)
+//            {
+//              targetFacet = createFacet(facet);
+//              childNodeElement = (derivedByElement.getOwnerDocument()).createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + facet);
+//              valueAttr = new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, newValue);
+//              childNodeElement.setAttribute(valueAttr.getName(), valueAttr.getValue());
+//              // add and format child
+//              derivedByElement.appendChild(childNodeElement);
+//              targetFacet.setElement(childNodeElement);
+//              XSDDOMHelper.formatChild(childNodeElement);
+//
+//              // XSDSchemaHelper.updateElement(xsdSimpleType);
+//            }
+//            if (targetFacet == null)
+//            {
+//              return;
+//            }
+//
+//            if (newValue.length() > 0)
+//            {
+//              targetFacet.setLexicalValue(newValue);
+//
+//              if (targetFacet instanceof XSDMaxFacet || targetFacet instanceof XSDMinFacet)
+//              {
+//                if (targetFacet instanceof XSDMaxFacet)
+//                {
+//                  if (targetFacet instanceof XSDMaxExclusiveFacet)
+//                  {
+//                    XSDMaxInclusiveFacet xsdMaxInclusiveFacet = xsdSimpleType.getMaxInclusiveFacet();
+//                    if (xsdMaxInclusiveFacet != null)
+//                    {
+//                      Element xsdMaxInclusiveFacetElement = xsdMaxInclusiveFacet.getElement();
+//                      XSDDOMHelper.removeNodeAndWhitespace(xsdMaxInclusiveFacetElement);
+//                    }
+//                  }
+//                  else if (targetFacet instanceof XSDMaxInclusiveFacet)
+//                  {
+//                    XSDMaxExclusiveFacet xsdMaxExclusiveFacet = xsdSimpleType.getMaxExclusiveFacet();
+//                    if (xsdMaxExclusiveFacet != null)
+//                    {
+//                      Element xsdMaxExclusiveFacetElement = xsdMaxExclusiveFacet.getElement();
+//                      XSDDOMHelper.removeNodeAndWhitespace(xsdMaxExclusiveFacetElement);
+//                    }
+//                  }
+//                }
+//                else if (targetFacet instanceof XSDMinFacet)
+//                {
+//                  if (targetFacet instanceof XSDMinExclusiveFacet)
+//                  {
+//                    XSDMinInclusiveFacet xsdMinInclusiveFacet = xsdSimpleType.getMinInclusiveFacet();
+//                    if (xsdMinInclusiveFacet != null)
+//                    {
+//                      Element xsdMinInclusiveFacetElement = xsdMinInclusiveFacet.getElement();
+//                      XSDDOMHelper.removeNodeAndWhitespace(xsdMinInclusiveFacetElement);
+//                    }
+//                  }
+//                  else if (targetFacet instanceof XSDMinInclusiveFacet)
+//                  {
+//                    XSDMinExclusiveFacet xsdMinExclusiveFacet = xsdSimpleType.getMinExclusiveFacet();
+//                    if (xsdMinExclusiveFacet != null)
+//                    {
+//                      Element xsdMinExclusiveFacetElement = xsdMinExclusiveFacet.getElement();
+//                      XSDDOMHelper.removeNodeAndWhitespace(xsdMinExclusiveFacetElement);
+//                    }
+//                  }
+//                }
+//              }
+//            }
+//            else
+//            // newValue.length == 0
+//            {
+//              Element targetFacetElement = targetFacet.getElement();
+//              XSDDOMHelper.removeNodeAndWhitespace(targetFacetElement);
+//            }
+//          }
+//          else if (property.equals(columnProperties[2]))
+//          {
+//            if (targetFacet != null)
+//            {
+//              if (newValue.length() > 0)
+//              {
+//                targetFacet.getElement().setAttribute(XSDConstants.FIXED_ATTRIBUTE, newValue);
+//              }
+//              else
+//              {
+//                targetFacet.getElement().removeAttribute(XSDConstants.FIXED_ATTRIBUTE);
+//              }
+//            }
+//          }
+//          xsdSimpleType.setElement(simpleTypeElement);
+//          // xsdSimpleType.updateElement();
+//          refresh();
+//        }
+//      }
+//    }
+//  }
+//
+//  private XSDConstrainingFacet getXSDConstrainingFacet(String facetString)
+//  {
+//    XSDSimpleTypeDefinition xsdSimpleType = (XSDSimpleTypeDefinition) getInput();
+//    List list = xsdSimpleType.getFacetContents();
+//    if (list == null)
+//    {
+//      return null;
+//    }
+//    Iterator iter = list.iterator();
+//    XSDConstrainingFacet targetFacet = null;
+//
+//    while (iter.hasNext())
+//    {
+//      XSDConstrainingFacet xsdConstrainingFacet = (XSDConstrainingFacet) iter.next();
+//      if (xsdConstrainingFacet.getFacetName().equals(facetString))
+//      {
+//        targetFacet = xsdConstrainingFacet;
+//        break;
+//      }
+//    }
+//    return targetFacet;
+//  }
+//
+//  private XSDConstrainingFacet createFacet(String facet)
+//  {
+//    XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
+//    XSDConstrainingFacet xsdFacet = null;
+//    if (facet.equals("length"))
+//    {
+//      xsdFacet = factory.createXSDLengthFacet();
+//    }
+//    else if (facet.equals("minLength"))
+//    {
+//      xsdFacet = factory.createXSDMinLengthFacet();
+//    }
+//    else if (facet.equals("maxLength"))
+//    {
+//      xsdFacet = factory.createXSDMaxLengthFacet();
+//    }
+//    else if (facet.equals("minInclusive"))
+//    {
+//      xsdFacet = factory.createXSDMinInclusiveFacet();
+//    }
+//    else if (facet.equals("minExclusive"))
+//    {
+//      xsdFacet = factory.createXSDMinExclusiveFacet();
+//    }
+//    else if (facet.equals("maxInclusive"))
+//    {
+//      xsdFacet = factory.createXSDMaxInclusiveFacet();
+//    }
+//    else if (facet.equals("maxExclusive"))
+//    {
+//      xsdFacet = factory.createXSDMaxExclusiveFacet();
+//    }
+//
+//    else if (facet.equals("totalDigits"))
+//    {
+//      xsdFacet = factory.createXSDTotalDigitsFacet();
+//    }
+//    else if (facet.equals("fractionDigits"))
+//    {
+//      xsdFacet = factory.createXSDFractionDigitsFacet();
+//    }
+//    else if (facet.equals("whiteSpace"))
+//    {
+//      xsdFacet = factory.createXSDWhiteSpaceFacet();
+//    }
+//    return xsdFacet;
+//  }
+//
+//  /**
+//   * Get the tooltip for the facet
+//   */
+//  public String getToolTip(String facet)
+//  {
+//    String key = "";
+//    if (facet.equals("length"))
+//    {
+//      key = "_UI_TOOLTIP_LENGTH";
+//    }
+//    else if (facet.equals("minLength"))
+//    {
+//      key = "_UI_TOOLTIP_MIN_LEN";
+//    }
+//    else if (facet.equals("maxLength"))
+//    {
+//      key = "_UI_TOOLTIP_MAX_LEN";
+//    }
+//
+//    else if (facet.equals("minInclusive"))
+//    {
+//      key = "_UI_TOOLTIP_MIN_INCLUSIVE";
+//    }
+//    else if (facet.equals("minExclusive"))
+//    {
+//      key = "_UI_TOOLTIP_MIN_EXCLUSIVE";
+//    }
+//
+//    else if (facet.equals("maxInclusive"))
+//    {
+//      key = "_UI_TOOLTIP_MAX_INCLUSIVE";
+//    }
+//    else if (facet.equals("maxExclusive"))
+//    {
+//      key = "_UI_TOOLTIP_MAX_EXCLUSIVE";
+//    }
+//
+//    else if (facet.equals("totalDigits"))
+//    {
+//      key = "_UI_TOOLTIP_TOTAL_DIGITS";
+//    }
+//    else if (facet.equals("fractionDigits"))
+//    {
+//      key = "_UI_TOOLTIP_FRACTION_DIGITS";
+//    }
+//
+//    else if (facet.equals("whiteSpace"))
+//    {
+//      key = "_UI_TOOLTIP_WHITE_SPACE";
+//    }
+//
+//    return (key != null) ? XSDEditorPlugin.getXSDString(key) : "";
+//  }
+//
+//  /**
+//   * This listener detects which row is selected and add a tool tip for that row
+//   */
+//  public class MyMouseTrackListener extends MouseTrackAdapter
+//  {
+//    public void mouseHover(MouseEvent e)
+//    {
+//      TableItem item = getTable().getItem(new Point(e.x, e.y));
+//      if (item != null)
+//      {
+//        Object o = item.getData();
+//        if (o != null)
+//        {
+//          String facetName = (String) o;
+//          getTable().setToolTipText(getToolTip(facetName));
+//        }
+//      }
+//    }
+//  }
+//
+//  /**
+//   * Based on the selection, detects if it is a white space or not, and add the
+//   * corresponding cell editors
+//   */
+//  public class SelectionChangedListener implements ISelectionChangedListener
+//  {
+//    public void selectionChanged(SelectionChangedEvent event)
+//    {
+//      Object selection = event.getSelection();
+//      if (selection instanceof StructuredSelection)
+//      {
+//        Object o = ((StructuredSelection) selection).getFirstElement();
+//        if (o != null)
+//        {
+//          String facet = (String) o;
+//          if (facet.equals("whiteSpace"))
+//          {
+//            setCellEditors(altCellEditors);
+//          }
+//          else
+//          {
+//            setCellEditors(cellEditors);
+//          }
+//        }
+//      }
+//    }
+//  }
+//
+//  class FacetsTableContentProvider implements IStructuredContentProvider
+//  {
+//    protected String facet;
+//
+//    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+//    {
+//    }
+//
+//    public java.lang.Object[] getElements(java.lang.Object inputElement)
+//    {
+//      List v = new ArrayList();
+//      XSDSimpleTypeDefinition inputXSDSimpleType = (XSDSimpleTypeDefinition) inputElement;
+//      XSDSimpleTypeDefinition base = inputXSDSimpleType.getPrimitiveTypeDefinition();
+//
+//      if (base != null)
+//      {
+//        Iterator validFacets = inputXSDSimpleType.getValidFacets().iterator();
+//        while (validFacets.hasNext())
+//        {
+//          String aValidFacet = (String) validFacets.next();
+//          if (!(aValidFacet.equals("pattern") || aValidFacet.equals("enumeration")))
+//          {
+//            v.add(aValidFacet);
+//          }
+//        }
+//      }
+//      return v.toArray();
+//    }
+//
+//    public void dispose()
+//    {
+//    }
+//  }
+//
+//  class FacetsTableLabelProvider extends LabelProvider implements ITableLabelProvider
+//  {
+//    public Image getColumnImage(Object element, int columnIndex)
+//    {
+//      return null;
+//    }
+//
+//    public String getColumnText(Object element, int columnIndex)
+//    {
+//      if (element instanceof String)
+//      {
+//        String value = null;
+//        XSDConstrainingFacet targetFacet = getXSDConstrainingFacet((String) element);
+//        switch (columnIndex)
+//        {
+//        case 0:
+//        {
+//          value = (String) element;
+//          break;
+//        }
+//        case 1:
+//        {
+//          if (targetFacet == null)
+//          {
+//            value = "";
+//          }
+//          else
+//          {
+//            value = targetFacet.getLexicalValue();
+//          }
+//
+//          break;
+//        }
+//        case 2:
+//        {
+//          if (targetFacet == null)
+//          {
+//            value = "";
+//          }
+//          else
+//          {
+//            Element elem = targetFacet.getElement();
+//            value = elem.getAttribute(XSDConstants.FIXED_ATTRIBUTE);
+//            if (value == null)
+//              value = "";
+//          }
+//        }
+//        }
+//        return value;
+//      }
+//      return "";
+//    }
+//  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/MultiplicitySection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/MultiplicitySection.java
new file mode 100644
index 0000000..128991f
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/MultiplicitySection.java
@@ -0,0 +1,211 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateMaxOccursCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateMinOccursCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+
+public class MultiplicitySection extends AbstractSection
+{
+  protected CCombo minCombo, maxCombo;
+  protected Button listButton;
+  protected Button requiredButton;
+  protected boolean isRequired;
+ 
+  public MultiplicitySection()
+  {
+    super();
+  }
+
+  protected void createContents(Composite parent)
+  {
+  }
+
+  
+  public void doHandleEvent(Event event)
+  {
+    if (event.widget == minCombo)
+    {
+      updateMinAttribute();
+    }
+    else if (event.widget == maxCombo)
+    {
+      updateMaxAttribute();
+    }
+  }
+
+  public void doWidgetSelected(SelectionEvent e)
+  {
+    if (e.widget == minCombo)
+    {
+      updateMinAttribute();
+    }
+    else if (e.widget == maxCombo)
+    {
+      updateMaxAttribute();
+    }
+  }
+
+  protected void updateMaxAttribute()
+  {
+    setErrorMessage(null);
+    XSDParticle particle = null;
+
+    if (input instanceof XSDParticleContent)
+    {
+      particle = getAssociatedParticle((XSDParticleContent) input);
+    }
+    if (particle != null)
+    {
+      String newValue = maxCombo.getText().trim();
+      
+      if (newValue.length() == 0)
+      {
+        particle.unsetMaxOccurs();
+        return;
+      }
+      try
+      {
+        int newMax = 1;
+        if (newValue.equals("unbounded") || newValue.equals("*")) //$NON-NLS-1$
+        {
+          newMax = XSDParticle.UNBOUNDED;
+        }
+        else
+        {
+          if (newValue.length() > 0)
+          {
+            newMax = Integer.parseInt(newValue);
+          }
+        }
+        setListenerEnabled(false);
+        UpdateMaxOccursCommand command = new UpdateMaxOccursCommand("Maximum Occurrence Change", particle, newMax);
+        getCommandStack().execute(command);
+        setListenerEnabled(true);
+
+      }
+      catch (NumberFormatException e)
+      {
+        setErrorMessage("Invalid value for maximum occurrence");
+      }
+    }
+  }
+
+  protected void updateMinAttribute()
+  {
+    setErrorMessage(null);
+    XSDParticle particle = null;
+
+    if (input instanceof XSDParticleContent)
+    {
+      particle = getAssociatedParticle((XSDParticleContent) input);
+    }
+    if (particle != null)
+    {
+      String newValue = minCombo.getText();
+      isRequired = false;
+      if (newValue.length() == 0)
+      {
+        particle.unsetMinOccurs();
+      }
+      try
+      {
+        int newMin = 1;
+        if (newValue.equals("unbounded") || newValue.equals("*")) //$NON-NLS-1$
+        {
+          newMin = XSDParticle.UNBOUNDED;
+          isRequired = true;
+        }
+        else
+        {
+          newMin = Integer.parseInt(newValue);
+          isRequired = newMin > 0;
+        }
+        UpdateMinOccursCommand command = new UpdateMinOccursCommand("Minimum Occurrence Change", particle, newMin);
+        getCommandStack().execute(command);
+      }
+      catch (NumberFormatException e)
+      {
+
+      }
+    }
+  }
+  
+  protected void refreshMinMax()
+  {
+    boolean refreshMinText = true;
+    boolean refreshMaxText = true;
+    if (minCombo.isFocusControl())
+    {
+      refreshMinText = false;
+    }
+    if (maxCombo.isFocusControl())
+    {
+      refreshMaxText = false;
+    }
+    if (refreshMinText)
+    {
+      minCombo.setText(""); //$NON-NLS-1$
+    }
+    if (refreshMaxText)
+    {
+      maxCombo.setText(""); //$NON-NLS-1$
+    }
+
+    if (input != null)
+    {
+      if (input instanceof XSDParticleContent)
+      {
+        XSDParticle particle = getAssociatedParticle((XSDParticleContent) input);
+        if (particle != null)
+        {
+          // minText.setText(String.valueOf(particle.getMinOccurs()));
+          // maxText.setText(String.valueOf(particle.getMaxOccurs()));
+          Element element = particle.getElement();
+          if (element != null)
+          {
+            String min = element.getAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
+            String max = element.getAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
+            if (min != null && refreshMinText)
+            {
+              minCombo.setText(min);
+            }
+            if (max != null && refreshMaxText)
+            {
+              maxCombo.setText(max);
+            }
+          }
+        }
+      }
+    }
+  }
+
+  protected XSDParticle getAssociatedParticle(XSDParticleContent particleContent)
+  {
+    XSDConcreteComponent xsdComp = particleContent.getContainer();
+    if (xsdComp instanceof XSDParticle)
+    {
+      return (XSDParticle) xsdComp;
+    }
+    return null;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SchemaLocationSection.java
similarity index 73%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationSection.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SchemaLocationSection.java
index 6f2d1df..4b2f160 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationSection.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SchemaLocationSection.java
@@ -1,14 +1,14 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * 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.xsd.ui.internal.properties.section;
+package org.eclipse.wst.xsd.ui.common.properties.sections;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -19,18 +19,16 @@
 import org.eclipse.swt.custom.CLabel;
 import org.eclipse.swt.custom.StyledText;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IFileEditorInput;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.wst.common.ui.internal.viewers.ResourceFilter;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.wizards.XSDSelectIncludeFileWizard;
 import org.eclipse.xsd.XSDInclude;
 import org.eclipse.xsd.XSDRedefine;
@@ -54,55 +52,55 @@
 		/**
 		 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
 		 */
-		public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
+		public void createContents(Composite parent)
 		{
-			super.createControls(parent, factory);
-			Composite composite = getWidgetFactory().createFlatFormComposite(parent);
+			composite = getWidgetFactory().createFlatFormComposite(parent);
 
-      int leftCoordinate = getStandardLabelWidth(composite, 
-          new String[] {XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_LOCATION")});
+      GridLayout gridLayout = new GridLayout();
+      gridLayout.marginTop = 0;
+      gridLayout.marginBottom = 0;
+      gridLayout.numColumns = 3;
+      composite.setLayout(gridLayout);
       
+      GridData data = new GridData();
+
 			// Create Schema Location Label
 			CLabel schemaLocationLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_LOCATION")); //$NON-NLS-1$
+      data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+      data.grabExcessHorizontalSpace = false;
+      schemaLocationLabel.setLayoutData(data);
 			
       // Create Schema Location Text
       schemaLocationText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
+      schemaLocationText.setEditable(true);
+      applyAllListeners(schemaLocationText);       
+
+      data = new GridData();
+      data.grabExcessHorizontalSpace = true;
+      data.horizontalAlignment = GridData.FILL;
+      schemaLocationText.setLayoutData(data);
       
 			// Create Wizard Button
 			wizardButton = getWidgetFactory().createButton(composite, "", SWT.NONE); //$NON-NLS-1$
-      
       wizardButton.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
-			FormData buttonFormData = new FormData();
-			buttonFormData.left = new FormAttachment(100, -rightMarginSpace + 2);
-			buttonFormData.right = new FormAttachment(100,0);
-			buttonFormData.top = new FormAttachment(schemaLocationText, 0, SWT.CENTER);
-			wizardButton.setLayoutData(buttonFormData);
+      data = new GridData();
+      data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+      data.grabExcessHorizontalSpace = false;
+			wizardButton.setLayoutData(data);
 			wizardButton.addSelectionListener(this);
 			
-			schemaLocationText.setEditable(true);
-			FormData schemaLocationData = new FormData();
-      schemaLocationData.left = new FormAttachment(0, leftCoordinate);
-      schemaLocationData.right = new FormAttachment(wizardButton, 0);
-			schemaLocationText.setLayoutData(schemaLocationData);
-			schemaLocationText.addListener(SWT.Modify, this);		    
-
-			FormData data = new FormData();
-			data.left = new FormAttachment(0, 0);
-			data.right = new FormAttachment(schemaLocationText, -ITabbedPropertyConstants.HSPACE);
-			data.top = new FormAttachment(schemaLocationText, 0, SWT.CENTER);
-			schemaLocationLabel.setLayoutData(data);
-			
       // error text
       errorText = new StyledText(composite, SWT.FLAT);
       errorText.setEditable(false);
       errorText.setEnabled(false);
       errorText.setText("");
       
-      data = new FormData();
-      data.left = new FormAttachment(schemaLocationText, 0, SWT.LEFT);
-      data.right = new FormAttachment(100, 0);
-      data.top = new FormAttachment(schemaLocationText, 0);
+      data = new GridData();
+      data.horizontalAlignment = GridData.FILL;
+      data.horizontalSpan = 3;
+      data.grabExcessHorizontalSpace = true;
       errorText.setLayoutData(data);
+
 		}
 		
 		public void widgetSelected(SelectionEvent event)
@@ -121,7 +119,7 @@
 			          XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_SCHEMA"), //$NON-NLS-1$
 			          XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_DESC"), //$NON-NLS-1$
 			          filter,
-			          (IStructuredSelection) selection);
+			          (IStructuredSelection) getSelection());
 
 			  WizardDialog wizardDialog = new WizardDialog(shell, fileSelectWizard);
 			  wizardDialog.create();
@@ -154,8 +152,6 @@
 		 */
 		public void refresh()
 		{
-			if (doRefresh)
-			{
 				setListenerEnabled(false);
 
 				Element element = null;
@@ -180,7 +176,6 @@
 				}
 
         setListenerEnabled(true);
-			}
 		}
 
 	  /* (non-Javadoc)
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentUnionMemberTypesDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SimpleContentUnionMemberTypesDialog.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentUnionMemberTypesDialog.java
rename to bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SimpleContentUnionMemberTypesDialog.java
index c58a7aa..1f921f9 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentUnionMemberTypesDialog.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SimpleContentUnionMemberTypesDialog.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal.properties.section;
+package org.eclipse.wst.xsd.ui.common.properties.sections;
 
 import java.util.Iterator;
 import java.util.List;
@@ -27,7 +27,7 @@
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
 import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
 import org.eclipse.wst.xsd.ui.internal.widgets.TypeSection;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SpecificConstraintsWidget.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SpecificConstraintsWidget.java
new file mode 100644
index 0000000..40b7dab
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/SpecificConstraintsWidget.java
@@ -0,0 +1,667 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.AddEnumerationsCommand;
+import org.eclipse.wst.xsd.ui.common.commands.ChangeToLocalSimpleTypeCommand;
+import org.eclipse.wst.xsd.ui.common.commands.DeleteCommand;
+import org.eclipse.wst.xsd.ui.common.commands.SetXSDFacetValueCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateXSDPatternFacetCommand;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.wst.xsd.ui.internal.widgets.EnumerationsDialog;
+import org.eclipse.wst.xsd.ui.internal.wizards.RegexWizard;
+import org.eclipse.xsd.XSDEnumerationFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDPatternFacet;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class SpecificConstraintsWidget implements SelectionListener, Listener
+{
+  public static int ENUMERATION = 0;
+  public static int PATTERN = 1;
+  
+  int kind;
+  ConstraintsTableViewer constraintsTableViewer;
+  Button addButton;
+  Button addUsingDialogButton;
+  Button deleteButton;
+  Button editButton;
+  Composite composite;
+  boolean isEnabled;
+  TabbedPropertySheetWidgetFactory factory;
+  XSDSimpleTypeDefinition input;
+  XSDFeature feature;
+  boolean isReadOnly;
+  CommandStack commandStack;
+  XSDFacetSection facetSection;
+
+  public SpecificConstraintsWidget(Composite composite, TabbedPropertySheetWidgetFactory factory, XSDFeature feature, XSDSimpleTypeDefinition input, XSDFacetSection facetSection)
+  {
+    this.factory = factory;
+    this.input = input;
+    this.composite = composite;
+    this.feature = feature;
+    this.facetSection = facetSection;
+    createControl(composite);
+  }
+
+  public void setCommandStack(CommandStack commandStack)
+  {
+    this.commandStack = commandStack; 
+  }
+
+  public void setIsReadOnly(boolean isReadOnly)
+  {
+    this.isReadOnly = isReadOnly;
+  }
+
+  public TabbedPropertySheetWidgetFactory getWidgetFactory()
+  {
+    return factory;
+  }
+  
+  public Control getControl()
+  {
+    return composite;
+  }
+  
+  public void setEnabled(boolean isEnabled)
+  {
+    this.isEnabled = isEnabled;
+    addButton.setEnabled(isEnabled);
+    addUsingDialogButton.setEnabled(isEnabled);
+    editButton.setEnabled(isEnabled);
+    constraintsTableViewer.getTable().setEnabled(isEnabled);
+    composite.setEnabled(isEnabled);
+  }
+
+  public Control createControl(Composite parent)
+  {
+    composite = factory.createFlatFormComposite(parent);
+    GridData data = new GridData();
+
+    GridLayout gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 2;
+    composite.setLayout(gridLayout);
+
+    constraintsTableViewer = new ConstraintsTableViewer(getWidgetFactory().createTable(composite, SWT.MULTI | SWT.FULL_SELECTION));
+    constraintsTableViewer.setInput(input);
+    Table table = constraintsTableViewer.getTable();
+    table.addSelectionListener(this);
+    data.horizontalAlignment = GridData.FILL;
+    data.verticalAlignment = GridData.FILL;
+    data.grabExcessHorizontalSpace = true;
+    data.widthHint = 150;
+    data.grabExcessVerticalSpace = true;
+    table.setLayoutData(data);
+    table.addListener(SWT.Resize, this);
+    
+    Composite buttonComposite = getWidgetFactory().createComposite(composite, SWT.FLAT);
+    GridLayout buttonCompositeLayout = new GridLayout();
+    buttonCompositeLayout.marginTop = 0;
+    buttonCompositeLayout.marginBottom = 0;
+    buttonCompositeLayout.numColumns = 1;
+    buttonComposite.setLayout(buttonCompositeLayout);
+    data = new GridData();
+    data.horizontalAlignment = GridData.FILL;
+    data.grabExcessHorizontalSpace = false;
+    buttonComposite.setLayoutData(data);
+
+    
+    addButton = getWidgetFactory().createButton(buttonComposite, "Add", SWT.PUSH);
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    data.verticalAlignment = GridData.BEGINNING;
+    addButton.setLayoutData(data);
+    addButton.addSelectionListener(this);
+    
+    addUsingDialogButton = getWidgetFactory().createButton(buttonComposite, "Add...", SWT.PUSH);
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    data.verticalAlignment = GridData.BEGINNING;
+    addUsingDialogButton.setLayoutData(data);
+    addUsingDialogButton.addSelectionListener(this);
+
+    editButton = getWidgetFactory().createButton(buttonComposite, "Edit...", SWT.PUSH);
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    editButton.setLayoutData(data);
+    editButton.setEnabled(false);
+    editButton.addSelectionListener(this);
+    
+    
+    deleteButton = getWidgetFactory().createButton(buttonComposite, "Delete", SWT.PUSH);
+
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    deleteButton.setLayoutData(data);
+    deleteButton.setEnabled(false);
+    deleteButton.addSelectionListener(this);
+
+
+    return composite;
+  }
+
+  public void handleEvent(Event event)
+  {
+    Table table = constraintsTableViewer.getTable();
+    if (event.type == SWT.Resize && event.widget == table)
+    {
+      TableColumn tableColumn = table.getColumn(0);
+      tableColumn.setWidth(table.getSize().x);
+    }
+  }
+
+  public void setInput(Object input)
+  {
+    constraintsTableViewer.setInput(input);
+    if (isReadOnly)
+    {
+      composite.setEnabled(false);
+    }
+    else
+    {
+      composite.setEnabled(true);
+    }
+//    constraintsTableViewer.refresh();
+  }
+
+  public void widgetSelected(SelectionEvent e)
+  {
+    XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+    Element element = st.getElement();
+
+    if (e.widget == addButton)
+    {
+      List enumList = st.getEnumerationFacets();
+      StringBuffer newName = new StringBuffer("value1"); //$NON-NLS-1$
+      int suffix = 1;
+      for (Iterator i = enumList.iterator(); i.hasNext();)
+      {
+        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) i.next();
+        String value = enumFacet.getLexicalValue();
+        if (value != null)
+        {
+          if (value.equals(newName.toString()))
+          {
+            suffix++;
+            newName = new StringBuffer("value" + String.valueOf(suffix)); //$NON-NLS-1$
+          }
+        }
+      }
+
+      if (kind == ENUMERATION)
+      {
+        CompoundCommand compoundCommand = new CompoundCommand();
+        XSDSimpleTypeDefinition targetSimpleType = null;
+        if (feature != null)
+        {
+          XSDSimpleTypeDefinition anonymousSimpleType = XSDCommonUIUtils.getAnonymousSimpleType(feature, input);
+          if (anonymousSimpleType == null)
+          {
+            anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+            anonymousSimpleType.setBaseTypeDefinition(input);
+
+            ChangeToLocalSimpleTypeCommand changeToAnonymousCommand = new ChangeToLocalSimpleTypeCommand("Change pattern", (XSDFeature) feature);
+            changeToAnonymousCommand.setAnonymousSimpleType(anonymousSimpleType);
+            compoundCommand.add(changeToAnonymousCommand);
+            input = anonymousSimpleType;
+          }
+          targetSimpleType = anonymousSimpleType;
+        }
+        else
+        {
+          targetSimpleType = input;
+        }
+
+        AddEnumerationsCommand command = new AddEnumerationsCommand("Add Enumeration", targetSimpleType);
+        command.setValue(newName.toString());
+        compoundCommand.add(command);
+        commandStack.execute(compoundCommand);
+        setInput(input);
+        constraintsTableViewer.refresh();
+        int newItemIndex = constraintsTableViewer.getTable().getItemCount() - 1;
+        constraintsTableViewer.editElement(constraintsTableViewer.getElementAt(newItemIndex), 0);
+      }
+    }
+    else if (e.widget == addUsingDialogButton)
+    {
+      Display display = Display.getCurrent();
+      // if it is null, get the default one
+      display = display == null ? Display.getDefault() : display;
+      Shell shell = display.getActiveShell();
+
+      if (kind == PATTERN)
+      {
+        String initialValue = ""; //$NON-NLS-1$
+        RegexWizard wizard = new RegexWizard(initialValue);
+
+        WizardDialog wizardDialog = new WizardDialog(shell, wizard);
+        wizardDialog.setBlockOnOpen(true);
+        wizardDialog.create();
+
+        int result = wizardDialog.open();
+
+        if (result == Window.OK)
+        {
+          String newPattern = wizard.getPattern();
+          CompoundCommand compoundCommand = new CompoundCommand();
+          XSDSimpleTypeDefinition targetSimpleType = null;
+          if (feature != null)
+          {
+            XSDSimpleTypeDefinition anonymousSimpleType = XSDCommonUIUtils.getAnonymousSimpleType(feature, input);
+            if (anonymousSimpleType == null)
+            {
+              anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+              anonymousSimpleType.setBaseTypeDefinition(input);
+
+              ChangeToLocalSimpleTypeCommand changeToAnonymousCommand = new ChangeToLocalSimpleTypeCommand("Change pattern", (XSDFeature) feature);
+              changeToAnonymousCommand.setAnonymousSimpleType(anonymousSimpleType);
+              compoundCommand.add(changeToAnonymousCommand);
+              input = anonymousSimpleType;
+            }
+            targetSimpleType = anonymousSimpleType;
+          }
+          else
+          {
+            targetSimpleType = input;
+          }
+          
+          UpdateXSDPatternFacetCommand command = new UpdateXSDPatternFacetCommand("Add pattern", targetSimpleType, UpdateXSDPatternFacetCommand.ADD);
+          command.setValue(newPattern);
+          setInput(input);
+          compoundCommand.add(command);
+          commandStack.execute(compoundCommand);
+          facetSection.doSetInput();
+        }
+        constraintsTableViewer.refresh();
+      }
+      else
+      {
+        EnumerationsDialog dialog = new EnumerationsDialog(shell);
+        dialog.setBlockOnOpen(true);
+        int result = dialog.open();
+
+        if (result == Window.OK)
+        {
+          String text = dialog.getText();
+          String delimiter = dialog.getDelimiter();
+          StringTokenizer tokenizer = new StringTokenizer(text, delimiter);
+          CompoundCommand compoundCommand = new CompoundCommand("Add Enumerations");
+          
+          XSDSimpleTypeDefinition targetSimpleType = null;
+          if (feature != null)
+          {
+            XSDSimpleTypeDefinition anonymousSimpleType = XSDCommonUIUtils.getAnonymousSimpleType(feature, input);
+            if (anonymousSimpleType == null)
+            {
+              anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+              anonymousSimpleType.setBaseTypeDefinition(input);
+
+              ChangeToLocalSimpleTypeCommand changeToAnonymousCommand = new ChangeToLocalSimpleTypeCommand("", (XSDFeature) feature);
+              changeToAnonymousCommand.setAnonymousSimpleType(anonymousSimpleType);
+              compoundCommand.add(changeToAnonymousCommand);
+              input = anonymousSimpleType;
+            }
+            targetSimpleType = anonymousSimpleType;
+          }
+          else
+          {
+            targetSimpleType = input;
+          }
+
+          while (tokenizer.hasMoreTokens())
+          {
+            String token = tokenizer.nextToken();
+            if (dialog.isPreserveWhitespace() == false)
+            {
+              token = token.trim();
+            }
+            AddEnumerationsCommand command = new AddEnumerationsCommand("Add Enumerations", targetSimpleType);
+            command.setValue(token);
+            compoundCommand.add(command);
+          }
+          commandStack.execute(compoundCommand);
+        }
+        //setInput(input);
+        facetSection.doSetInput();
+        constraintsTableViewer.refresh();
+      }
+    }
+    else if (e.widget == deleteButton)
+    {
+      StructuredSelection selection = (StructuredSelection) constraintsTableViewer.getSelection();
+      CompoundCommand compoundCommand = new CompoundCommand();
+      if (selection != null)
+      {
+        Iterator i = selection.iterator();
+        if (selection.size() > 0)
+        {
+          compoundCommand.setLabel("Delete Constraints");
+        }
+        else
+        {
+          compoundCommand.setLabel("Delete Pattern");
+        }
+        while (i.hasNext())
+        {
+          Object obj = i.next();
+          if (obj != null)
+          {
+            if (obj instanceof XSDPatternFacet)
+            {
+              UpdateXSDPatternFacetCommand command = new UpdateXSDPatternFacetCommand("", input, UpdateXSDPatternFacetCommand.DELETE);
+              command.setPatternToEdit((XSDPatternFacet)obj);
+              compoundCommand.add(command);
+            }
+            else if (obj instanceof XSDEnumerationFacet)
+            {
+              XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) obj;
+              DeleteCommand deleteCommand = new DeleteCommand("Delete Enumeration", enumFacet);
+              compoundCommand.add(deleteCommand);
+            }
+          }
+        }
+        commandStack.execute(compoundCommand);
+        constraintsTableViewer.refresh();
+
+        if (constraintsTableViewer.getTable().getItemCount() == 0)
+        {
+          editButton.setEnabled(false);
+          deleteButton.setEnabled(false);
+        }
+      }
+    }
+    else if (e.widget == editButton)
+    {
+      StructuredSelection selection = (StructuredSelection) constraintsTableViewer.getSelection();
+      if (selection != null)
+      {
+        Object obj = selection.getFirstElement();
+        if (obj instanceof XSDPatternFacet)
+        {
+          XSDPatternFacet pattern = (XSDPatternFacet) obj;
+          String initialValue = pattern.getLexicalValue();
+          if (initialValue == null)
+          {
+            initialValue = ""; //$NON-NLS-1$
+          }
+
+          Shell shell = Display.getCurrent().getActiveShell();
+
+          RegexWizard wizard = new RegexWizard(initialValue);
+
+          WizardDialog wizardDialog = new WizardDialog(shell, wizard);
+          wizardDialog.setBlockOnOpen(true);
+          wizardDialog.create();
+
+          int result = wizardDialog.open();
+
+          if (result == Window.OK)
+          {
+            String newPattern = wizard.getPattern();
+            element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, newPattern);
+            pattern.setLexicalValue(newPattern);
+            constraintsTableViewer.refresh();
+          }
+        }
+      }
+    }
+    else if (e.widget == constraintsTableViewer.getTable())
+    {
+      StructuredSelection selection = (StructuredSelection) constraintsTableViewer.getSelection();
+      if (selection.getFirstElement() != null)
+      {
+        editButton.setEnabled(true);
+        deleteButton.setEnabled(true);
+      }
+      else
+      {
+        editButton.setEnabled(false);
+        deleteButton.setEnabled(false);
+      }
+    }
+  }
+  
+  public void widgetDefaultSelected(SelectionEvent e)
+  {
+
+  }
+
+  
+  public void setConstraintKind(int kind)
+  {
+    this.kind = kind;
+    constraintsTableViewer.setInput(input);
+    constraintsTableViewer.refresh();
+  }
+  
+  public void doModify(Object element, String property, Object value)
+  {
+    if (element instanceof TableItem && (value != null))
+    {
+      TableItem item = (TableItem) element;
+
+      if (item.getData() instanceof XSDPatternFacet)
+      {
+        XSDPatternFacet patternFacet = (XSDPatternFacet) item.getData();
+        patternFacet.setLexicalValue((String) value);
+
+        item.setData(patternFacet);
+        item.setText((String) value);
+      }
+      else if (item.getData() instanceof XSDEnumerationFacet)
+      {
+        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) item.getData();
+        SetXSDFacetValueCommand command = new SetXSDFacetValueCommand("Set Enumeration Value", enumFacet);
+        command.setValue((String) value);
+        commandStack.execute(command);
+        item.setData(enumFacet);
+        item.setText((String) value);
+      }
+    }
+  }
+  
+  public Object doGetValue(Object element, String property)
+  {
+    if (element instanceof XSDPatternFacet)
+    {
+      XSDPatternFacet patternFacet = (XSDPatternFacet) element;
+      String value = patternFacet.getLexicalValue();
+      if (value == null)
+        value = ""; //$NON-NLS-1$
+      return value;
+    }
+    else if (element instanceof XSDEnumerationFacet)
+    {
+      XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) element;
+      String value = enumFacet.getLexicalValue();
+      if (value == null)
+        value = ""; //$NON-NLS-1$
+      return value;
+    }
+
+    return ""; //$NON-NLS-1$
+  }
+  
+  class ConstraintsTableViewer extends NavigableTableViewer implements ICellModifier
+  {
+    protected String[] columnProperties = { "Pattern" };
+
+    protected CellEditor[] cellEditors;
+
+    Table table;
+
+    public ConstraintsTableViewer(Table table)
+    {
+      super(table);
+      table = getTable();
+
+      table.setLinesVisible(true);
+
+      setContentProvider(new ConstraintsContentProvider());
+      setLabelProvider(new ConstraintsTableLabelProvider());
+      setColumnProperties(columnProperties);
+
+      setCellModifier(this);
+
+      TableColumn column = new TableColumn(table, SWT.NONE, 0);
+      column.setText(columnProperties[0]);
+      column.setAlignment(SWT.LEFT);
+      column.setResizable(true);
+
+      cellEditors = new CellEditor[1];
+
+      TableLayout layout = new TableLayout();
+      ColumnWeightData data = new ColumnWeightData(100);
+
+      layout.addColumnData(data);
+      cellEditors[0] = new TextCellEditor(table);
+
+      getTable().setLayout(layout);
+      setCellEditors(cellEditors);
+    }
+    
+    public boolean canModify(Object element, String property)
+    {
+      return true;
+    }
+
+    public void modify(Object element, String property, Object value)
+    {
+      doModify(element, property, value);
+    }
+
+    public Object getValue(Object element, String property)
+    {
+      return doGetValue(element, property);
+    }
+
+  }
+
+  class ConstraintsContentProvider implements IStructuredContentProvider
+  {
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+    {
+    }
+
+    public java.lang.Object[] getElements(java.lang.Object inputElement)
+    {
+      java.util.List list = new ArrayList();
+      if (inputElement instanceof XSDSimpleTypeDefinition)
+      {
+        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) inputElement;
+        if (kind == PATTERN)
+        {
+          return st.getPatternFacets().toArray();
+        }
+        else
+        {
+          return st.getEnumerationFacets().toArray();
+        }
+      }
+      return list.toArray();
+    }
+
+    public void dispose()
+    {
+    }
+  }
+
+  class ConstraintsTableLabelProvider extends LabelProvider implements ITableLabelProvider
+  {
+    public ConstraintsTableLabelProvider()
+    {
+
+    }
+
+    public Image getColumnImage(Object element, int columnIndex)
+    {
+      if (kind == PATTERN)
+      {
+        return XSDEditorPlugin.getXSDImage("icons/XSDSimplePattern.gif"); //$NON-NLS-1$
+      }
+      else
+      {
+        return XSDEditorPlugin.getXSDImage("icons/XSDSimpleEnum.gif");
+      }
+    }
+
+    public String getColumnText(Object element, int columnIndex)
+    {
+      if (element instanceof XSDPatternFacet)
+      {
+        XSDPatternFacet pattern = (XSDPatternFacet) element;
+        String value = pattern.getLexicalValue();
+        if (value == null)
+          value = ""; //$NON-NLS-1$
+        return value;
+      }
+      else if (element instanceof XSDEnumerationFacet)
+      {
+        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet) element;
+        String value = enumFacet.getLexicalValue();
+        if (value == null)
+          value = "";
+        return value;
+      }
+      return ""; //$NON-NLS-1$
+    }
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDActionManager.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDActionManager.java
new file mode 100644
index 0000000..04f0a5e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDActionManager.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
+import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
+import org.eclipse.wst.xml.ui.internal.XMLUIMessages;
+import org.eclipse.wst.xml.ui.internal.actions.EditAttributeAction;
+import org.eclipse.wst.xml.ui.internal.contentoutline.XMLNodeActionManager;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class XSDActionManager extends XMLNodeActionManager {
+
+  private CommandStack commandStack;
+  
+	public XSDActionManager(IStructuredModel model, Viewer viewer) {
+		super(model, viewer);
+	}
+  
+  public void setCommandStack(CommandStack commandStack) {
+    this.commandStack = commandStack;
+  }
+
+  protected Action createAddCDataSectionAction(Node parent, int index)
+  {
+    return null;
+  }
+  
+  protected Action createAddPCDataAction(Node parent, CMDataType dataType, int index) {
+    return null;
+  }
+  
+  
+	protected void contributeAddDocumentChildActions(IMenuManager menu, Document document, int ic, int vc) {
+	}
+  
+	protected void contributeEditGrammarInformationActions(IMenuManager menu, Node node) {
+	}
+	
+	protected void contributePIAndCommentActions(IMenuManager menu, Document document, int index) {
+	}
+	
+	protected void contributePIAndCommentActions(IMenuManager menu, Element parentElement, CMElementDeclaration parentEd, int index) {
+	}
+	
+	protected void contributeTextNodeActions(IMenuManager menu, Element parentElement, CMElementDeclaration parentEd, int index) {
+		super.contributeTextNodeActions(menu, parentElement, parentEd, index);
+	}
+  
+  protected Action createAddAttributeAction(Element parent, CMAttributeDeclaration ad) {
+    Action action = null;
+    if (ad == null) {
+      action = new EditAttributeAction(this, parent, null, XMLUIMessages._UI_MENU_NEW_ATTRIBUTE, XMLUIMessages._UI_MENU_NEW_ATTRIBUTE_TITLE); //$NON-NLS-1$ //$NON-NLS-2$
+    } else {
+      action = new AddNodeAction(ad, parent, -1);
+    }
+    
+    WrapperCommand command = new WrapperCommand(action, parent, ad);
+    WrapperAction wrapperAction = new WrapperAction(command);
+    return wrapperAction;
+  }
+  
+  class WrapperAction extends Action
+  {
+    WrapperCommand command;
+    
+    public WrapperAction(WrapperCommand command)
+    {
+      super();
+      this.command = command;
+    }
+    
+    public String getText()
+    {
+      return command.getAction().getText();
+    }
+
+    public void run()
+    {
+      // Some editors may not use a command stack
+      if (commandStack != null)
+      {
+        commandStack.execute(command);
+      }
+      else
+      {
+        command.execute();
+      }
+    }
+  }
+
+  class WrapperCommand extends Command
+  {
+    Action action;
+    Element parent;
+    CMAttributeDeclaration ad;
+    public WrapperCommand(Action action, Element parent, CMAttributeDeclaration ad)
+    {
+      super();
+      this.action = action;
+      this.parent = parent;
+      this.ad = ad;
+    }
+    
+    public String getLabel()
+    {
+      return action.getText();
+    }
+    
+    public Action getAction()
+    {
+      return action;
+    }
+    
+    public void execute()
+    {
+      action.run();
+    }
+    
+    public void undo() {
+      
+//      ((Element)parent).removeAttribute(ad.getAttrName());
+
+      getModel().getUndoManager().undo();
+
+    } 
+        
+
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeDeclarationSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeDeclarationSection.java
new file mode 100644
index 0000000..b3438f2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeDeclarationSection.java
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import org.apache.xerces.util.XMLChar;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.xsd.editor.Messages;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDAttributeDeclarationSection extends AbstractSection
+{
+  protected Text nameText;
+  protected Text typeCombo;
+  protected Button button;
+  boolean isAttributeReference;
+  
+  public XSDAttributeDeclarationSection()
+  {
+    super();
+  }
+
+  protected void createContents(Composite parent)
+  {
+    composite = getWidgetFactory().createFlatFormComposite(parent);
+
+    String typeLabel = Messages.UI_LABEL_TYPE; //$NON-NLS-1$
+
+    GridLayout gridLayout = new GridLayout();
+    gridLayout.numColumns = 3;
+    composite.setLayout(gridLayout);
+
+    // ------------------------------------------------------------------
+    // NameLabel
+    // ------------------------------------------------------------------
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+    CLabel nameLabel = getWidgetFactory().createCLabel(composite, "Name:"); //$NON-NLS-1$
+    nameLabel.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // NameText
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+    nameText.setLayoutData(data);
+    applyAllListeners(nameText);
+
+    // ------------------------------------------------------------------
+    // DummyLabel
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+    getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+    // ------------------------------------------------------------------
+    // typeLabel
+    // ------------------------------------------------------------------
+    getWidgetFactory().createCLabel(composite, typeLabel); //$NON-NLS-1$
+
+    // ------------------------------------------------------------------
+    // typeCombo
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+
+    typeCombo = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+    typeCombo.setEditable(false);
+    // baseTypeCombo.addListener(SWT.Modify, this);
+    typeCombo.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // BaseTypeButton
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+
+    button = getWidgetFactory().createButton(composite, "", SWT.PUSH);
+    button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif"));
+    button.addSelectionListener(this);
+    button.setLayoutData(data);
+  }
+
+  /*
+   * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+   */
+  public void refresh()
+  {
+    super.refresh();
+
+    setListenerEnabled(false);
+
+    // refresh name
+
+    nameText.setText("");
+    if (input instanceof XSDAttributeDeclaration)
+    {
+      XSDAttributeDeclaration namedComponent = ((XSDAttributeDeclaration) input).getResolvedAttributeDeclaration();
+
+      String name = namedComponent.getName();
+      if (name != null)
+      {
+        nameText.setText(name);
+      }
+    }
+
+    // refresh type
+
+    typeCombo.setText(""); //$NON-NLS-1$
+    if (input != null)
+    {
+      Element element = null;
+      if (input instanceof XSDAttributeDeclaration)
+      {
+        XSDAttributeDeclaration xsdAttribute = ((XSDAttributeDeclaration) input).getResolvedAttributeDeclaration();
+        isAttributeReference = ((XSDAttributeDeclaration)input).isAttributeDeclarationReference();
+        element = xsdAttribute.getElement();
+        XSDTypeDefinition typeDef = xsdAttribute.getTypeDefinition();
+        boolean isAnonymous = xsdAttribute.getAnonymousTypeDefinition() != null;
+
+        if (isAnonymous)
+        {
+          typeCombo.setText("**anonymous**"); //$NON-NLS-1$
+        }
+        else
+        {
+          String typeName = ""; //$NON-NLS-1$
+          if (typeDef != null)
+          {
+            typeName = typeDef.getQName(xsdSchema);
+            if (typeName == null)
+            {
+              typeName = ""; //$NON-NLS-1$
+            }
+            typeCombo.setText(typeName);
+          }
+          else
+          {
+            typeCombo.setText(Messages.UI_NO_TYPE); //$NON-NLS-1$
+          }
+        }
+      }
+    }
+
+    setListenerEnabled(true);
+  }
+
+  public boolean shouldUseExtraSpace()
+  {
+    return false;
+  }
+
+  protected void doHandleEvent(Event event)
+  {
+    super.doHandleEvent(event);
+    if (event.widget == nameText)
+    {
+      if (!nameText.getEditable())
+        return;
+
+      String newValue = nameText.getText().trim();
+      if (input instanceof XSDAttributeDeclaration)
+      {
+        XSDAttributeDeclaration namedComponent = ((XSDAttributeDeclaration) input).getResolvedAttributeDeclaration();
+
+        if (!validateSection())
+          return;
+
+        Command command = null;
+
+        // Make sure an actual name change has taken place
+        String oldName = namedComponent.getName();
+        if (!newValue.equals(oldName))
+        {
+          command = new UpdateNameCommand("Rename", namedComponent, newValue);
+        }
+
+        if (command != null && getCommandStack() != null)
+        {
+          getCommandStack().execute(command);
+        }
+        
+        if (isAttributeReference)
+        {
+          XSDAttributeDeclaration attrRef = (XSDAttributeDeclaration)input;
+          String qname = attrRef.getResolvedAttributeDeclaration().getQName();
+          attrRef.getElement().setAttribute(XSDConstants.REF_ATTRIBUTE, qname);
+          
+//          TypesHelper helper = new TypesHelper(xsdSchema);
+//          List items = new ArrayList();
+//          items = helper.getGlobalElements();
+//          items.add(0, "");
+//          componentNameCombo.setItems((String [])items.toArray(new String[0]));
+//
+//          refreshRefCombo();
+        }
+
+      }
+    }
+  }
+  
+  protected boolean validateSection()
+  {
+    if (nameText == null || nameText.isDisposed())
+      return true;
+
+    setErrorMessage(null);
+
+    String name = nameText.getText().trim();
+
+    // validate against NCName
+    if (name.length() < 1 || !XMLChar.isValidNCName(name))
+    {
+      setErrorMessage("Error Invalid Name");
+      return false;
+    }
+
+    return true;
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeGroupDefinitionSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeGroupDefinitionSection.java
new file mode 100644
index 0000000..cee4335
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDAttributeGroupDefinitionSection.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDAttributeGroupDefinitionSection extends AbstractSection
+{
+  protected CCombo refCombo;
+
+  public XSDAttributeGroupDefinitionSection()
+  {
+    super();
+  }
+
+  protected void createContents(Composite parent)
+  {
+    composite = getWidgetFactory().createFlatFormComposite(parent);
+
+    GridLayout gridLayout = new GridLayout();
+    gridLayout.numColumns = 2;
+    composite.setLayout(gridLayout);
+
+    // ------------------------------------------------------------------
+    // Ref Label
+    // ------------------------------------------------------------------
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+    CLabel refLabel = getWidgetFactory().createCLabel(composite, XSDConstants.REF_ATTRIBUTE + ":");  //$NON-NLS-1$
+    refLabel.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // Ref Combo
+    // ------------------------------------------------------------------
+
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+
+    refCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+    refCombo.addSelectionListener(this);
+    refCombo.setLayoutData(data);
+  }
+
+  public void refresh()
+  {
+    super.refresh();
+
+    if (isReadOnly)
+    {
+      composite.setEnabled(false);
+    }
+    else
+    {
+      composite.setEnabled(true);
+    }
+
+    setListenerEnabled(false);
+
+    if (input instanceof XSDNamedComponent)
+    {
+      XSDNamedComponent namedComponent = (XSDNamedComponent)input;
+      Element element = namedComponent.getElement();
+      if (element != null)
+      {
+        String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
+        if (attrValue == null)
+        {
+          attrValue = "";
+        }
+        refCombo.setText(attrValue);
+      }
+    }
+
+    setListenerEnabled(true);
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDComplexTypeSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDComplexTypeSection.java
new file mode 100644
index 0000000..326419d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDComplexTypeSection.java
@@ -0,0 +1,365 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import org.apache.xerces.util.XMLChar;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.wst.xsd.editor.Messages;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDDerivationMethod;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDComplexTypeSection extends AbstractSection implements SelectionListener
+{
+  protected Text nameText;
+  protected Text baseTypeCombo;
+  protected CCombo derivedByCombo;
+  protected Button button;
+  private String derivedByChoicesComboValues[] = { "", XSDConstants.RESTRICTION_ELEMENT_TAG, XSDConstants.EXTENSION_ELEMENT_TAG };
+
+  public XSDComplexTypeSection()
+  {
+    super();
+  }
+
+  /**
+   * Contents of the property tab
+   * 
+   * NameLabel NameText DummyLabel BaseTypeLabel BaseTypeCombo BaseTypeButton
+   * DerivedByLabel DerivedByCombo
+   */
+  public void createContents(Composite parent)
+  {
+    composite = getWidgetFactory().createFlatFormComposite(parent);
+
+    GridLayout gridLayout = new GridLayout();
+    gridLayout.numColumns = 3;
+    composite.setLayout(gridLayout);
+
+    // ------------------------------------------------------------------
+    // NameLabel
+    // ------------------------------------------------------------------
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+    CLabel nameLabel = getWidgetFactory().createCLabel(composite, "Name:"); //$NON-NLS-1$
+    nameLabel.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // NameText
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+    nameText.setLayoutData(data);
+    applyAllListeners(nameText);
+
+    // ------------------------------------------------------------------
+    // DummyLabel
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+    getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+    // ------------------------------------------------------------------
+    // BaseTypeLabel
+    // ------------------------------------------------------------------
+
+    getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_INHERIT_FROM); //$NON-NLS-1$
+
+    // ------------------------------------------------------------------
+    // BaseTypeCombo
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+
+    baseTypeCombo = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+    baseTypeCombo.setEditable(false);
+    // baseTypeCombo.addListener(SWT.Modify, this);
+    baseTypeCombo.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // BaseTypeButton
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+
+    button = getWidgetFactory().createButton(composite, "", SWT.PUSH);
+    button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif"));
+    button.addSelectionListener(this);
+    button.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // DerivedByLabel
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+
+    CLabel derivedByLabel = getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_INHERIT_BY); //$NON-NLS-1$
+    derivedByLabel.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // DerivedByCombo
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+
+    derivedByCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+    derivedByCombo.setLayoutData(data);
+    derivedByCombo.setItems(derivedByChoicesComboValues);
+    // derivedByCombo.addSelectionListener(this);
+
+  }
+
+  /*
+   * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+   */
+  public void refresh()
+  {
+    super.refresh();
+    if (Display.getCurrent() == null)
+      return;
+
+    setListenerEnabled(false);
+
+    try
+    {
+      nameText.setText("");
+      baseTypeCombo.setText(""); //$NON-NLS-1$
+
+      if (input instanceof XSDComplexTypeDefinition)
+      {
+        XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition) input;
+        String name = complexType.getName();
+        if (name == null)
+          name = "";
+
+        boolean isAnonymousType = name.equals("") ? true : false;
+        if (isAnonymousType)
+        {
+          nameText.setText("**anonymous**"); //$NON-NLS-1$
+          nameText.setEditable(false);
+        }
+        else
+        {
+          nameText.setText(name);
+          nameText.setEditable(true);
+        }
+
+        XSDTypeDefinition baseTypeDefinition = complexType.getBaseTypeDefinition();
+        String baseType = ""; //$NON-NLS-1$
+        if (baseTypeDefinition != null)
+        {
+          baseType = baseTypeDefinition.getName();
+          if (baseType == null)
+          {
+            baseType = "";
+          }
+        }
+        baseTypeCombo.setText(baseType);
+
+        derivedByCombo.setText(""); //$NON-NLS-1$
+        int derivationMethod = complexType.getDerivationMethod().getValue();
+        if (derivationMethod == XSDDerivationMethod.EXTENSION)
+        {
+          derivedByCombo.setText(XSDConstants.EXTENSION_ELEMENT_TAG);
+        }
+        else if (derivationMethod == XSDDerivationMethod.RESTRICTION)
+        {
+          derivedByCombo.setText(XSDConstants.RESTRICTION_ELEMENT_TAG);
+        }
+      }
+
+    }
+    finally
+    {
+      setListenerEnabled(true);
+    }
+  }
+
+  /**
+   * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
+   */
+  public void widgetSelected(SelectionEvent e)
+  {
+    XSDComplexTypeDefinition xsdComplexType = (XSDComplexTypeDefinition) input;
+    Element ctElement = xsdComplexType.getElement();
+    if (e.widget == button)
+    {
+      Shell shell = Display.getCurrent().getActiveShell();
+      Element element = null;
+      if (xsdComplexType.getContent() != null)
+      {
+        element = xsdComplexType.getContent().getElement();
+      }
+
+      // SimpleContentBaseTypeOptionsDialog dialog = new
+      // SimpleContentBaseTypeOptionsDialog(shell, element, BASE_TYPE_ID,
+      // xsdComplexType.getSchema());
+      // dialog.setBlockOnOpen(true);
+      // dialog.create();
+      // int result = dialog.open();
+
+      IFile currentIFile = ((IFileEditorInput) getActiveEditor().getEditorInput()).getFile();
+
+      XSDSchema schema = xsdComplexType.getSchema();
+      
+      // issuec (cs) need to move the common.ui's selection dialog
+      /*
+      XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, schema);
+      XSDComponentSelectionDialog dialog = new XSDComponentSelectionDialog(shell, Messages.UI_LABEL_SET_TYPE, provider);
+      provider.setDialog(dialog);
+      dialog.setBlockOnOpen(true);
+      dialog.create();
+      int result = dialog.open();
+
+      if (result == Window.OK)
+      {
+        XMLComponentSpecification spec = dialog.getSelection();
+        XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, schema);
+        helper.addImportIfNecessary(element, spec);
+
+        String typeString = helper.getPrefixedTypeName(spec);
+
+        String derivedBy = "";
+        int derivationMethod = xsdComplexType.getDerivationMethod().getValue();
+        if (derivationMethod == XSDDerivationMethod.EXTENSION)
+        {
+          derivedBy = XSDConstants.EXTENSION_ELEMENT_TAG;
+        }
+        else if (derivationMethod == XSDDerivationMethod.RESTRICTION)
+        {
+          derivedBy = XSDConstants.RESTRICTION_ELEMENT_TAG;
+        }
+
+        SetBaseTypeAction setBaseTypeAction = new SetBaseTypeAction("_UI_LABEL_SET_BASE_TYPE"); //$NON-NLS-1$
+        setBaseTypeAction.setXSDSchema(xsdSchema);
+        setBaseTypeAction.setComplexTypeElement(ctElement);
+        setBaseTypeAction.setType(typeString);
+        setBaseTypeAction.setDerivedBy(derivedBy);
+        setBaseTypeAction.performAction();
+
+      }
+      refresh();
+      // }
+      // else if (e.widget == derivedByCombo)
+      // {
+      // Element contentModelElement =
+      // getDomHelper().getContentModelFromParent(ctElement);
+      // String baseType = getDomHelper().getBaseType(contentModelElement);
+      // beginRecording(XSDEditorPlugin.getXSDString("_UI_DERIVEDBY_CHANGE"),
+      // ctElement); //$NON-NLS-1$
+      // if (contentModelElement != null)
+      // {
+      // getDomHelper().changeDerivedByType(contentModelElement,
+      // derivedByCombo.getText(), baseType);
+      // }
+      // endRecording(ctElement);       
+       */
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
+   */
+  public boolean shouldUseExtraSpace()
+  {
+    return false;
+  }
+
+  public void dispose()
+  {
+    super.dispose();
+  }
+
+  public void doHandleEvent(Event event)
+  {
+    super.doHandleEvent(event);
+    if (event.widget == nameText)
+    {
+      if (!nameText.getEditable())
+        return;
+
+      String newValue = nameText.getText().trim();
+      if (input instanceof XSDNamedComponent)
+      {
+        XSDNamedComponent namedComponent = (XSDNamedComponent) input;
+
+        if (!validateSection())
+          return;
+
+        Command command = null;
+
+        // Make sure an actual name change has taken place
+        String oldName = namedComponent.getName();
+        if (!newValue.equals(oldName))
+        {
+          command = new UpdateNameCommand("Rename", namedComponent, newValue);
+        }
+
+        if (command != null && getCommandStack() != null)
+        {
+          getCommandStack().execute(command);
+        }
+        // doReferentialIntegrityCheck(namedComponent, newValue);
+      }
+    }
+  }
+
+  protected boolean validateSection()
+  {
+    if (nameText == null || nameText.isDisposed())
+      return true;
+
+    setErrorMessage(null);
+
+    String name = nameText.getText().trim();
+
+    // validate against NCName
+    if (name.length() < 1 || !XMLChar.isValidNCName(name))
+    {
+      setErrorMessage("Error Invalid Name");
+      return false;
+    }
+
+    return true;
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDElementDeclarationSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDElementDeclarationSection.java
new file mode 100644
index 0000000..17bc839
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDElementDeclarationSection.java
@@ -0,0 +1,581 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.xerces.util.XMLChar;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSearchListDialog;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSearchListDialogConfiguration;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.common.ui.internal.search.dialogs.ScopedComponentSearchListDialog;
+import org.eclipse.wst.xsd.editor.Messages;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.internal.dialogs.NewTypeButtonHandler;
+import org.eclipse.wst.xsd.editor.internal.search.XSDComponentDescriptionProvider;
+import org.eclipse.wst.xsd.editor.internal.search.XSDTypesSearchListProvider;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateMaxOccursCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateMinOccursCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateTypeReferenceCommand;
+import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDElementDeclarationSection extends MultiplicitySection
+{
+  protected Text nameText;
+  protected Text typeCombo;
+  protected Button typesBrowseButton;
+  protected CCombo componentNameCombo;
+  boolean isElementReference;
+
+  private XSDTypeDefinition typeDefinition;
+
+  public XSDElementDeclarationSection()
+  {
+    super();
+  }
+
+  /**
+   * Contents of the property tab
+   */
+  public void createContents(Composite parent)
+  {
+    composite = getWidgetFactory().createFlatFormComposite(parent);
+    TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+
+    String typeLabel = Messages.UI_LABEL_TYPE; //$NON-NLS-1$
+
+    GridData data = new GridData();
+
+    GridLayout gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 3;
+    composite.setLayout(gridLayout);
+    
+      // ------------------------------------------------------------------
+      // NameLabel
+      // ------------------------------------------------------------------
+
+      data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+      data.grabExcessHorizontalSpace = false;
+      CLabel nameLabel = factory.createCLabel(composite, "Name:");
+      nameLabel.setLayoutData(data);
+
+      // ------------------------------------------------------------------
+      // NameText
+      // ------------------------------------------------------------------
+      data = new GridData();
+      data.grabExcessHorizontalSpace = true;
+      data.horizontalAlignment = GridData.FILL;
+      nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+      nameText.setLayoutData(data);
+      applyAllListeners(nameText);   
+     
+      // ------------------------------------------------------------------
+      // DummyLabel
+      // ------------------------------------------------------------------
+      data = new GridData();
+      data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+      data.grabExcessHorizontalSpace = false;
+      getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+    // ------------------------------------------------------------------
+    // Ref Label
+    // ------------------------------------------------------------------
+    if (isElementReference)
+    {
+      data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+      data.grabExcessHorizontalSpace = false;
+      CLabel refLabel = getWidgetFactory().createCLabel(composite, "Reference:");
+      refLabel.setLayoutData(data);
+
+      // ------------------------------------------------------------------
+      // Ref Combo
+      // ------------------------------------------------------------------
+
+      data = new GridData();
+      data.grabExcessHorizontalSpace = true;
+      data.horizontalAlignment = GridData.FILL;
+
+      componentNameCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+      componentNameCombo.addSelectionListener(this);
+      componentNameCombo.setLayoutData(data);
+
+      data = new GridData();
+      data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+      data.grabExcessHorizontalSpace = false;
+
+      getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+    }
+
+    // ------------------------------------------------------------------
+    // typeLabel
+    // ------------------------------------------------------------------
+    getWidgetFactory().createCLabel(composite, typeLabel);
+
+    // ------------------------------------------------------------------
+    // typeCombo
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+
+    typeCombo = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+    typeCombo.setEditable(false);
+    typeCombo.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // BaseTypeButton
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+
+    typesBrowseButton = getWidgetFactory().createButton(composite, "", SWT.PUSH);
+    typesBrowseButton.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif"));
+    typesBrowseButton.addSelectionListener(this);
+    typesBrowseButton.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // min/max button modifiers
+    // ------------------------------------------------------------------
+
+    data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+
+    getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+    Composite modifierComposite = getWidgetFactory().createComposite(composite, SWT.FLAT);
+    GridLayout gridLayout2 = new GridLayout();
+    gridLayout2.marginLeft = 0;
+    gridLayout2.marginRight = 0;
+    gridLayout2.marginTop = 0;
+    gridLayout2.marginBottom = 0;
+    gridLayout2.numColumns = 2;
+    modifierComposite.setLayout(gridLayout2);
+    modifierComposite.setLayoutData(data);
+    requiredButton = getWidgetFactory().createButton(modifierComposite, "Required", SWT.CHECK | SWT.FLAT); //$NON-NLS-1$
+    requiredButton.addSelectionListener(this);
+
+    listButton = getWidgetFactory().createButton(modifierComposite, "Array", SWT.CHECK | SWT.FLAT); //$NON-NLS-1$
+    listButton.addSelectionListener(this);
+
+    getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+    // ------------------------------------------------------------------
+    // min property
+    // ------------------------------------------------------------------
+
+    getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_MINOCCURS);
+
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+
+    minCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+    minCombo.setLayoutData(data);
+    minCombo.add("0"); //$NON-NLS-1$
+    minCombo.add("1"); //$NON-NLS-1$
+    applyModifyListeners(minCombo);
+    minCombo.addSelectionListener(this);
+
+    // ------------------------------------------------------------------
+    // DummyLabel
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+    getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+    // ------------------------------------------------------------------
+    // max property
+    // ------------------------------------------------------------------
+    getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_MAXOCCURS);
+
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+
+    maxCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+    maxCombo.setLayoutData(data);
+    maxCombo.add("0"); //$NON-NLS-1$
+    maxCombo.add("1"); //$NON-NLS-1$
+    maxCombo.add("unbounded"); //$NON-NLS-1$
+    applyModifyListeners(maxCombo);
+    maxCombo.addSelectionListener(this);
+  }
+
+  public void setInput(IWorkbenchPart part, ISelection selection)
+  {
+    super.setInput(part, selection);
+    setListenerEnabled(false);
+    init();
+    relayout();
+    
+    if (isElementReference)
+    {
+      TypesHelper helper = new TypesHelper(xsdSchema);
+      List items = new ArrayList();
+      items = helper.getGlobalElements();
+      items.add(0, "");
+      componentNameCombo.setItems((String [])items.toArray(new String[0]));
+    }
+    setListenerEnabled(true);
+  }
+  
+  protected void init()
+  {
+    if (input instanceof XSDElementDeclaration)
+    {
+      XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration) input;
+      isElementReference = xsdElementDeclaration.isElementDeclarationReference();
+
+      typeDefinition = xsdElementDeclaration.getResolvedElementDeclaration().getTypeDefinition();
+    }
+  }
+  
+  /*
+   * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+   */
+  public void refresh()
+  {
+    super.refresh();
+
+    setListenerEnabled(false);
+
+    XSDElementDeclaration xsdElementDeclaration = ((XSDElementDeclaration) input).getResolvedElementDeclaration();
+
+      // refresh name
+      nameText.setText("");
+      typeCombo.setText(""); //$NON-NLS-1$
+      typesBrowseButton.setEnabled(true);
+//
+//      if (input instanceof XSDNamedComponent)
+//      {
+//        XSDNamedComponent namedComponent = (XSDNamedComponent) input;
+//
+        String name = xsdElementDeclaration.getName();
+        if (name != null)
+        {
+          nameText.setText(name);
+        }
+//      }
+    
+    if (isElementReference)
+    {
+      refreshRefCombo();
+    }
+
+    // refresh type
+    if (input != null)
+    {
+      Element element = null;
+      if (input instanceof XSDElementDeclaration)
+      {
+        element = xsdElementDeclaration.getElement();
+        boolean isAnonymous = xsdElementDeclaration.getAnonymousTypeDefinition() != null;
+        //XSDTypeDefinition typeDef = XSDUtils.getResolvedType(xsdElementDeclaration);
+        XSDTypeDefinition typeDef = xsdElementDeclaration.getResolvedElementDeclaration().getTypeDefinition();
+        XSDTypeDefinition typeValue = xsdElementDeclaration.getType();
+        boolean isPrimitive = false;
+        if (typeValue != null)
+        {
+          if (typeValue.getTargetNamespace() != null)
+          {
+            isPrimitive = typeValue.getTargetNamespace().equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
+          }
+        }
+        
+        String typeName = ""; //$NON-NLS-1$
+        if (typeDef != null)
+          typeName = typeDef.getQName(xsdSchema);
+
+        if (typeName == null)
+        {
+          typeName = ""; //$NON-NLS-1$
+        }
+
+        if (isAnonymous)
+        {
+          typeCombo.setText("**anonymous**"); //$NON-NLS-1$
+        }
+        else
+        {
+          if (typeDefinition != null)
+          {
+            typeCombo.setText(typeName);
+          }
+          else
+          {
+            typeCombo.setText(Messages.UI_NO_TYPE); //$NON-NLS-1$
+          }
+        }
+      }
+    }
+
+    // refresh min max
+    refreshMinMax();
+
+    setListenerEnabled(true);
+
+  }
+
+  public boolean shouldUseExtraSpace()
+  {
+    return false;
+  }
+
+  public void doWidgetSelected(SelectionEvent e)
+  {
+    if (e.widget == typesBrowseButton)
+    {
+      Shell shell = Display.getCurrent().getActiveShell();
+      IFile currentIFile = ((IFileEditorInput) getActiveEditor().getEditorInput()).getFile();
+
+      /** Initialize the Set types Dialog */
+      final XSDTypesSearchListProvider searchListProvider = 
+    	  new XSDTypesSearchListProvider(currentIFile, new XSDSchema[] {xsdSchema} );      
+      ComponentSearchListDialogConfiguration configuration = new ComponentSearchListDialogConfiguration();
+      configuration.setDescriptionProvider(new XSDComponentDescriptionProvider() );
+      configuration.setSearchListProvider(searchListProvider);      
+      configuration.setNewComponentHandler(new NewTypeButtonHandler());
+      ComponentSearchListDialog dialog = new ScopedComponentSearchListDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), configuration);
+      //dialog.setFilterLabel("Text:");
+
+      if (input instanceof XSDAttributeDeclaration)
+      {
+        searchListProvider.showComplexTypes(false);
+      }
+
+      dialog.setBlockOnOpen(true);
+      dialog.create();
+
+      if (dialog.open() == Window.OK)
+      {
+        //String newType = (String) dialog.getSelection().getAttributeInfo("name");
+        //String nsType = (String) dialog.getSelection().getTargetNamespace();
+        
+        ComponentSpecification selection = dialog.getSelectedComponent();
+        String newType = selection.getName();
+        String namespace = selection.getQualifier();
+        
+        UpdateTypeReferenceCommand command = new UpdateTypeReferenceCommand((XSDElementDeclaration) input, xsdSchema.resolveTypeDefinition(namespace, newType));
+        getCommandStack().execute(command);
+
+        init();
+        relayout();
+      }
+    }
+    else if (e.widget == listButton)
+    {
+      int maxOccurs = (listButton.getSelection() ? XSDParticle.UNBOUNDED : 1);
+      if (input instanceof XSDElementDeclaration)
+      {
+        XSDParticle particle = (XSDParticle) ((XSDElementDeclaration) input).eContainer();
+        UpdateMaxOccursCommand command = new UpdateMaxOccursCommand("Update Maximum Occurence", particle, maxOccurs);
+        getCommandStack().execute(command);
+        if (maxOccurs == -1)
+          maxCombo.setText("*");
+        else
+          maxCombo.setText("");
+      }
+    }
+    else if (e.widget == requiredButton)
+    {
+      int minOccurs = requiredButton.getSelection() ? 1 : 0;
+      if (input instanceof XSDElementDeclaration)
+      {
+        XSDParticle particle = (XSDParticle) ((XSDElementDeclaration) input).eContainer();
+        UpdateMinOccursCommand command = new UpdateMinOccursCommand("Update Minimum Occurrence", particle, minOccurs);
+        getCommandStack().execute(command);
+      }
+      minCombo.setText("" + minOccurs);
+    }
+    else if (e.widget == componentNameCombo)
+    {
+      String newValue = componentNameCombo.getText();
+      if (input instanceof XSDElementDeclaration)
+      {
+        XSDElementDeclaration element = (XSDElementDeclaration)input;
+// TODO: We should set the ref using the model, and not the DOM.        
+        element.setResolvedElementDeclaration(element.resolveElementDeclaration(newValue));
+//        element.getElement().setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
+      }
+    }
+    else if (e.widget == maxCombo)
+    {
+      updateMaxAttribute();
+    }
+    else if (e.widget == minCombo)
+    {
+      updateMinAttribute();
+    }
+
+  }
+
+  protected void relayout()
+  {
+    Composite parentComposite = composite.getParent();
+    parentComposite.getParent().setRedraw(false);
+
+    if (parentComposite != null && !parentComposite.isDisposed())
+    {
+      Control[] children = parentComposite.getChildren();
+      for (int i = 0; i < children.length; i++)
+      {
+        children[i].dispose();
+      }
+    }
+
+    // Now initialize the new handler
+    createContents(parentComposite);
+    parentComposite.getParent().layout(true, true);
+
+    // Now turn painting back on
+    parentComposite.getParent().setRedraw(true);
+    refresh();
+  }
+
+  public void doHandleEvent(Event event)
+  {
+    super.doHandleEvent(event);
+    if (event.widget == nameText)
+    {
+      String newValue = nameText.getText().trim();
+      if (input instanceof XSDElementDeclaration)
+      {
+        XSDElementDeclaration namedComponent = ((XSDElementDeclaration) input).getResolvedElementDeclaration();
+        if (!validateSection())
+          return;
+
+        Command command = null;
+
+        // Make sure an actual name change has taken place
+        String oldName = namedComponent.getName();
+        if (!newValue.equals(oldName))
+        {
+          command = new UpdateNameCommand("Rename", namedComponent, newValue);
+        }
+
+        if (command != null && getCommandStack() != null)
+        {
+          getCommandStack().execute(command);
+        }
+        
+        if (isElementReference)
+        {
+          XSDElementDeclaration elementRef = (XSDElementDeclaration)input;
+          String qname = elementRef.getResolvedElementDeclaration().getQName();
+          elementRef.getElement().setAttribute(XSDConstants.REF_ATTRIBUTE, qname);
+          
+          TypesHelper helper = new TypesHelper(xsdSchema);
+          List items = new ArrayList();
+          items = helper.getGlobalElements();
+          items.add(0, "");
+          componentNameCombo.setItems((String [])items.toArray(new String[0]));
+
+          refreshRefCombo();
+        }
+
+        // doReferentialIntegrityCheck(namedComponent, newValue);
+      }
+    }
+    else if (event.widget == minCombo)
+    {
+      requiredButton.setSelection(isRequired);
+    }
+
+  }
+
+  protected boolean validateSection()
+  {
+    if (nameText == null || nameText.isDisposed())
+      return true;
+
+    setErrorMessage(null);
+
+    String name = nameText.getText().trim();
+
+    // validate against NCName
+    if (name.length() < 1 || !XMLChar.isValidNCName(name))
+    {
+      setErrorMessage("Invalid name");
+      return false;
+    }
+
+    return true;
+  }
+
+  public void dispose()
+  {
+    if (typesBrowseButton != null && !typesBrowseButton.isDisposed())
+      typesBrowseButton.removeSelectionListener(this);
+    if (componentNameCombo != null && !componentNameCombo.isDisposed())
+      componentNameCombo.removeSelectionListener(this);
+    if (minCombo != null && !minCombo.isDisposed())
+      minCombo.removeSelectionListener(this);
+    if (maxCombo != null && !maxCombo.isDisposed())
+      maxCombo.removeSelectionListener(this);
+    if (requiredButton != null && !requiredButton.isDisposed())
+      requiredButton.removeSelectionListener(this);
+    if (listButton != null && !listButton.isDisposed())
+      listButton.removeSelectionListener(this);
+    super.dispose();
+  }
+
+  protected void refreshRefCombo()
+  {
+    componentNameCombo.setText("");
+    typesBrowseButton.setEnabled(false);
+
+    XSDElementDeclaration namedComponent = (XSDElementDeclaration) input;
+    Element element = namedComponent.getElement();
+    if (element != null)
+    {
+      String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
+      if (attrValue == null)
+      {
+        attrValue = "";
+      }
+      componentNameCombo.setText(attrValue);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSection.java
new file mode 100644
index 0000000..0a07f3c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSection.java
@@ -0,0 +1,912 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.CompoundCommand;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.xsd.ui.common.commands.ChangeToLocalSimpleTypeCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNumericBoundsFacetCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateStringLengthFacetCommand;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateXSDWhiteSpaceFacetCommand;
+import org.eclipse.wst.xsd.ui.common.util.XSDCommonUIUtils;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDLengthFacet;
+import org.eclipse.xsd.XSDMaxExclusiveFacet;
+import org.eclipse.xsd.XSDMaxFacet;
+import org.eclipse.xsd.XSDMaxInclusiveFacet;
+import org.eclipse.xsd.XSDMaxLengthFacet;
+import org.eclipse.xsd.XSDMinExclusiveFacet;
+import org.eclipse.xsd.XSDMinFacet;
+import org.eclipse.xsd.XSDMinInclusiveFacet;
+import org.eclipse.xsd.XSDMinLengthFacet;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDWhiteSpace;
+import org.eclipse.xsd.XSDWhiteSpaceFacet;
+import org.eclipse.xsd.util.XSDConstants;
+
+public class XSDFacetSection extends AbstractSection
+{
+  private String minLengthString, maxLengthString, titleString;
+  Font titleFont;
+  CLabel title;
+  Label minLengthLabel;
+  Text minLengthText;
+  Label maxLengthLabel;
+  Text maxLengthText;
+  Group simpleTypeModifierGroup;
+  String simpleTypeModifierGroupTitle = "";
+  Button collapseWhitespaceButton;
+  Button useEnumerationsButton, usePatternsButton;
+  Button minimumInclusiveCheckbox;
+  Button maximumInclusiveCheckbox;
+  boolean isNumericBaseType;
+  private XSDTypeDefinition typeDefinition;
+  private XSDSimpleTypeDefinition xsdSimpleTypeDefinition;
+  private XSDElementDeclaration xsdElementDeclaration;
+  private XSDAttributeDeclaration xsdAttributeDeclaration;
+  private XSDFeature xsdFeature;
+  boolean hasMaxMinFacets;
+
+  SpecificConstraintsWidget constraintsWidget;
+
+  public XSDFacetSection()
+  {
+    super();
+  }
+
+  protected void createContents(Composite parent)
+  {
+    TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+    composite = factory.createFlatFormComposite(parent);
+
+    GridLayout gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 1;
+    composite.setLayout(gridLayout);
+
+    title = factory.createCLabel(composite, ""); //$NON-NLS-1$
+    FontData fontData = composite.getFont().getFontData()[0];
+    int height = fontData.getHeight();
+    fontData.setHeight(height + 2);
+    fontData.setStyle(SWT.BOLD);
+    titleFont = new Font(null, fontData);
+    title.setFont(titleFont);
+    title.setText(titleString + (isReadOnly ? " - ReadOnly" : ""));
+
+    Composite facetComposite = factory.createComposite(composite, SWT.FLAT);
+
+    GridData data = new GridData();
+    gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 2;
+    facetComposite.setLayout(gridLayout);
+    data.grabExcessVerticalSpace = true;
+    data.grabExcessHorizontalSpace = true;
+    data.verticalAlignment = GridData.FILL;
+    data.horizontalAlignment = GridData.FILL;
+    facetComposite.setLayoutData(data);
+
+    data = new GridData();
+    data.grabExcessVerticalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    data.verticalAlignment = GridData.FILL;
+
+    simpleTypeModifierGroup = getWidgetFactory().createGroup(facetComposite, simpleTypeModifierGroupTitle);
+    GridLayout groupGrid = new GridLayout();
+    groupGrid.marginTop = 0;
+    groupGrid.marginBottom = 0;
+    groupGrid.numColumns = 1;
+    simpleTypeModifierGroup.setLayoutData(data);
+    simpleTypeModifierGroup.setLayout(groupGrid);
+
+    Composite simpleTypeModifierComposite = getWidgetFactory().createFlatFormComposite(simpleTypeModifierGroup);
+    data = new GridData();
+    data.grabExcessVerticalSpace = true;
+    data.verticalAlignment = GridData.FILL;
+    data.horizontalAlignment = GridData.FILL;
+
+    GridLayout grid = new GridLayout();
+    grid.marginTop = 0;
+    grid.marginBottom = 0;
+    grid.numColumns = 3;
+    simpleTypeModifierComposite.setLayout(grid);
+    simpleTypeModifierComposite.setLayoutData(data);
+    if (hasMaxMinFacets)
+    {
+      minLengthLabel = factory.createLabel(simpleTypeModifierComposite, minLengthString);
+      minLengthText = factory.createText(simpleTypeModifierComposite, "");
+      applyAllListeners(minLengthText);
+
+      GridData minGridData = new GridData();
+      minGridData.widthHint = 100;
+      minLengthText.setLayoutData(minGridData);
+      minimumInclusiveCheckbox = factory.createButton(simpleTypeModifierComposite, "Inclusive", SWT.CHECK);
+      minimumInclusiveCheckbox.addSelectionListener(this);
+
+      maxLengthLabel = factory.createLabel(simpleTypeModifierComposite, maxLengthString);
+      maxLengthText = factory.createText(simpleTypeModifierComposite, "");
+      applyAllListeners(maxLengthText);
+
+      GridData maxGridData = new GridData();
+      maxGridData.widthHint = 100;
+      maxLengthText.setLayoutData(maxGridData);
+
+      maximumInclusiveCheckbox = factory.createButton(simpleTypeModifierComposite, "Inclusive", SWT.CHECK);
+      maximumInclusiveCheckbox.addSelectionListener(this);
+
+      minimumInclusiveCheckbox.setVisible(isNumericBaseType);
+      maximumInclusiveCheckbox.setVisible(isNumericBaseType);
+    }
+    collapseWhitespaceButton = factory.createButton(simpleTypeModifierComposite, "Collapse whitespace", SWT.CHECK);
+    collapseWhitespaceButton.addSelectionListener(this);
+
+    Group specificValueConstraintsGroup = factory.createGroup(facetComposite, "Specific constraint values");
+    gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 2;
+    specificValueConstraintsGroup.setLayout(gridLayout);
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.grabExcessVerticalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    data.verticalAlignment = GridData.FILL;
+    specificValueConstraintsGroup.setLayoutData(data);
+
+    Composite compositeForButtons = factory.createFlatFormComposite(specificValueConstraintsGroup);
+    gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.verticalSpacing = 1;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 1;
+    compositeForButtons.setLayout(gridLayout);
+    data = new GridData();
+    data.verticalAlignment = GridData.BEGINNING;
+    compositeForButtons.setLayoutData(data);
+
+    factory.createCLabel(compositeForButtons, "Restrict values by:");
+//    useDefinedValuesButton = factory.createButton(compositeForButtons, "Only permit certain values", SWT.CHECK);
+//    useDefinedValuesButton.addSelectionListener(this);
+
+    Composite compositeForRadioButtons = factory.createFlatFormComposite(compositeForButtons);
+    gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginLeft = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 1;
+    compositeForRadioButtons.setLayout(gridLayout);
+    useEnumerationsButton = factory.createButton(compositeForRadioButtons, "Enumerations", SWT.RADIO);
+    useEnumerationsButton.addSelectionListener(this);
+    usePatternsButton = factory.createButton(compositeForRadioButtons, "Patterns", SWT.RADIO);
+    usePatternsButton.addSelectionListener(this);
+    
+    constraintsWidget = new SpecificConstraintsWidget(specificValueConstraintsGroup, factory, (input instanceof XSDFeature) ? (XSDFeature)input : null, xsdSimpleTypeDefinition, this);
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.grabExcessVerticalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    data.verticalAlignment = GridData.FILL;
+    constraintsWidget.getControl().setLayoutData(data);
+  }
+  
+  public void doSetInput()
+  {
+    setInput(getPart(), getSelection());
+  }
+
+  public void setInput(IWorkbenchPart part, ISelection selection)
+  {
+    super.setInput(part, selection);
+    init();
+    
+    XSDSchema schemaOfType = null;
+
+    if (!isReadOnly)
+    {
+      schemaOfType = xsdSimpleTypeDefinition.getSchema();
+    }
+    if (schemaOfType == owningEditor.getAdapter(XSDSchema.class))
+    {
+      isReadOnly = false;
+    }
+    else
+    {
+      if (!XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(xsdSimpleTypeDefinition.getTargetNamespace()))
+        isReadOnly = true;
+    }
+    if (hasMaxMinFacets)
+    {
+      title.setText(titleString + (isReadOnly ? " - ReadOnly" : ""));
+    }
+    relayout();
+    constraintsWidget.setCommandStack(getCommandStack());
+  }
+
+  protected void init()
+  {
+    hasMaxMinFacets = false;
+    try
+    {
+    updateInput();
+    
+    if (xsdSimpleTypeDefinition != null)
+    {
+      XSDSimpleTypeDefinition targetST = xsdSimpleTypeDefinition;
+      XSDSimpleTypeDefinition basePrimitive = xsdSimpleTypeDefinition.getPrimitiveTypeDefinition();
+      if (basePrimitive != null) 
+        targetST = basePrimitive;
+      else
+        targetST = xsdSimpleTypeDefinition.getBaseTypeDefinition();
+      
+      minLengthString = "";
+      maxLengthString = "";
+      if (targetST.getValidFacets().contains("length"))
+      {
+        minLengthString = "Minimum length:";
+        maxLengthString = "Maximum length:";
+        simpleTypeModifierGroupTitle = "Constraints on length of " + targetST.getName();
+        isNumericBaseType = false;
+        hasMaxMinFacets = true;
+      }
+      else if (targetST.getValidFacets().contains("maxInclusive"))
+      {
+        simpleTypeModifierGroupTitle = "Constraints on value of " + targetST.getName();
+        minLengthString = "Minimum value:";
+        maxLengthString = "Maximum value:";
+        isNumericBaseType = true;
+        hasMaxMinFacets = true;
+      }
+      else
+      {
+        simpleTypeModifierGroupTitle = "Constraints on " + (basePrimitive != null ? basePrimitive.getName() : "anyType");
+      }
+    }
+    }
+    catch(Exception e)
+    {
+    }
+  }
+  
+  private void updateInput()
+  {
+    if (input instanceof XSDFeature)
+    {
+      xsdFeature = (XSDFeature) input;
+      typeDefinition = xsdFeature.getResolvedFeature().getType();
+      XSDTypeDefinition anonymousTypeDefinition = null;
+      if (xsdFeature instanceof XSDElementDeclaration)
+      {
+        xsdElementDeclaration = (XSDElementDeclaration)xsdFeature;
+        anonymousTypeDefinition = xsdElementDeclaration.getResolvedElementDeclaration().getAnonymousTypeDefinition();
+      }
+      else if (xsdFeature instanceof XSDAttributeDeclaration)
+      {
+        xsdAttributeDeclaration = (XSDAttributeDeclaration)xsdFeature;
+        anonymousTypeDefinition = xsdAttributeDeclaration.getResolvedAttributeDeclaration().getAnonymousTypeDefinition();
+      }
+      
+      if (typeDefinition instanceof XSDSimpleTypeDefinition)
+      {
+        xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) typeDefinition;
+      }
+      
+      if (anonymousTypeDefinition instanceof XSDSimpleTypeDefinition)
+      {
+        xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)anonymousTypeDefinition;
+      }
+      
+      if (xsdSimpleTypeDefinition != null)
+        titleString = "Type: " + (anonymousTypeDefinition != null ? "(" + xsdElementDeclaration.getResolvedElementDeclaration().getName() + "Type)" : xsdSimpleTypeDefinition.getName())  + " , Base: " + xsdSimpleTypeDefinition.getPrimitiveTypeDefinition().getName();
+    }
+    else if (input instanceof XSDSimpleTypeDefinition)
+    {
+      xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition) input;
+      titleString = "Type: " + xsdSimpleTypeDefinition.getName() + " , Base: " + xsdSimpleTypeDefinition.getPrimitiveTypeDefinition().getName();
+    }
+  }
+
+  public void refresh()
+  {
+    super.refresh();
+    init();
+    setListenerEnabled(false);
+    
+    collapseWhitespaceButton.setSelection(false);
+    XSDWhiteSpaceFacet whitespaceFacet = xsdSimpleTypeDefinition.getWhiteSpaceFacet();
+    if (whitespaceFacet != null)
+    {
+      if (xsdSimpleTypeDefinition.getFacetContents().contains(whitespaceFacet))
+      {
+        if (XSDWhiteSpace.COLLAPSE_LITERAL.equals(whitespaceFacet.getValue()))
+        {
+          if (!XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(xsdSimpleTypeDefinition.getTargetNamespace()))
+          {
+            collapseWhitespaceButton.setSelection(true);
+          }
+        }
+      }
+    }
+
+    if (hasMaxMinFacets)
+    {
+      minLengthLabel.setText(minLengthString);
+      maxLengthLabel.setText(maxLengthString);
+
+      if (!isNumericBaseType)
+        refreshStringLength();
+      else
+        refreshValueLengths();
+    }
+
+    if (xsdSimpleTypeDefinition.getEnumerationFacets().size() > 0) 
+    {
+      usePatternsButton.setSelection(false);
+      useEnumerationsButton.setSelection(true);
+      constraintsWidget.setConstraintKind(SpecificConstraintsWidget.ENUMERATION);
+      constraintsWidget.addButton.setEnabled(true);
+    }
+    else if (xsdSimpleTypeDefinition.getPatternFacets().size() > 0)
+    {
+      usePatternsButton.setSelection(true);
+      useEnumerationsButton.setSelection(false);
+      constraintsWidget.setConstraintKind(SpecificConstraintsWidget.PATTERN);
+      constraintsWidget.addButton.setEnabled(false);
+    }
+    else
+    {
+      usePatternsButton.setSelection(false);
+      useEnumerationsButton.setSelection(true);
+      constraintsWidget.setConstraintKind(SpecificConstraintsWidget.ENUMERATION);
+      constraintsWidget.addButton.setEnabled(true);
+    }
+    constraintsWidget.setInput(xsdSimpleTypeDefinition);
+
+    setListenerEnabled(true);
+  }
+
+  protected void relayout()
+  {
+    Composite parent = composite.getParent();
+    parent.getParent().setRedraw(false);
+
+    if (parent != null && !parent.isDisposed())
+    {
+      Control[] children = parent.getChildren();
+      for (int i = 0; i < children.length; i++)
+      {
+        children[i].dispose();
+      }
+    }
+    createContents(parent);
+    parent.getParent().layout(true, true);
+    parent.getParent().setRedraw(true);
+    refresh();
+  }
+
+  public void dispose()
+  {
+    if (titleFont != null && !titleFont.isDisposed())
+      titleFont.dispose();
+    titleFont = null;
+    
+    if (minimumInclusiveCheckbox != null && !minimumInclusiveCheckbox.isDisposed())
+      minimumInclusiveCheckbox.removeSelectionListener(this);
+    if (maximumInclusiveCheckbox != null && !maximumInclusiveCheckbox.isDisposed())
+      maximumInclusiveCheckbox.removeSelectionListener(this);
+    
+    if (collapseWhitespaceButton != null && !collapseWhitespaceButton.isDisposed())
+      collapseWhitespaceButton.removeSelectionListener(this);
+
+    if (maxLengthText != null && !maxLengthText.isDisposed())
+      removeListeners(maxLengthText);
+    if (minLengthText != null && !minLengthText.isDisposed())
+      removeListeners(minLengthText);
+    
+    super.dispose();
+  }
+
+  public void refreshStringLength()
+  {
+    XSDMinLengthFacet minLengthFacet = xsdSimpleTypeDefinition.getMinLengthFacet();
+    XSDMaxLengthFacet maxLengthFacet = xsdSimpleTypeDefinition.getMaxLengthFacet();
+    XSDLengthFacet lengthFacet = xsdSimpleTypeDefinition.getLengthFacet();
+
+    try
+    {
+      if (minLengthFacet != null)
+      {
+        int minLengthValue = minLengthFacet.getValue();
+        if (minLengthValue >= 0)
+        {
+          minLengthText.setText(Integer.toString(minLengthValue));
+        }
+        else
+        {
+          minLengthText.setText(""); //$NON-NLS-1$
+        }
+      }
+      if (maxLengthFacet != null)
+      {
+        int maxLength = maxLengthFacet.getValue();
+        if (maxLength >= 0)
+        {
+          maxLengthText.setText(Integer.toString(maxLength));
+        }
+        else
+        {
+          maxLengthText.setText(""); //$NON-NLS-1$
+        }
+      }
+      if (lengthFacet != null)
+      {
+        int length = lengthFacet.getValue();
+        if (length >= 0)
+        {
+          minLengthText.setText(Integer.toString(length));
+          maxLengthText.setText(Integer.toString(length));
+        }
+      }
+    }
+    catch (Exception e)
+    {
+
+    }
+
+  }
+
+  public void refreshValueLengths()
+  {
+    XSDSimpleTypeDefinition type = xsdSimpleTypeDefinition;
+    XSDMinFacet minFacet = type.getMinFacet();
+    XSDMaxFacet maxFacet = type.getMaxFacet();
+
+    minimumInclusiveCheckbox.removeSelectionListener(this);
+    maximumInclusiveCheckbox.removeSelectionListener(this);
+    try
+    {
+      minLengthText.setText(""); //$NON-NLS-1$
+      maxLengthText.setText(""); //$NON-NLS-1$
+
+      minimumInclusiveCheckbox.setSelection(false);
+      minimumInclusiveCheckbox.setEnabled(false);
+      if (minFacet != null)
+      {
+        if (minFacet.getElement().getNodeName().equals(XSDConstants.MINEXCLUSIVE_ELEMENT_TAG) ||
+            minFacet.getElement().getNodeName().equals(XSDConstants.MININCLUSIVE_ELEMENT_TAG))
+        {
+          minLengthText.setText(minFacet.getLexicalValue());
+          minimumInclusiveCheckbox.setSelection(minFacet.isInclusive());
+          minimumInclusiveCheckbox.setEnabled(true);
+        }
+      }
+
+      maximumInclusiveCheckbox.setSelection(false);
+      maximumInclusiveCheckbox.setEnabled(false);
+      if (maxFacet != null)
+      {
+        if (maxFacet.getElement().getNodeName().equals(XSDConstants.MAXEXCLUSIVE_ELEMENT_TAG) ||
+            maxFacet.getElement().getNodeName().equals(XSDConstants.MAXINCLUSIVE_ELEMENT_TAG))
+        {
+          maxLengthText.setText(maxFacet.getLexicalValue());
+          maximumInclusiveCheckbox.setSelection(maxFacet.isInclusive());
+          maximumInclusiveCheckbox.setEnabled(true);
+        }
+      }
+    }
+    finally
+    {
+      minimumInclusiveCheckbox.addSelectionListener(this);
+      maximumInclusiveCheckbox.addSelectionListener(this);
+    }
+  }
+
+  protected void doHandleEvent(Event event)
+  {
+    super.doHandleEvent(event);
+    Command command = null;
+    boolean doUpdateMax = false, doUpdateMin = false;
+    
+    String minValue = minLengthText.getText().trim();
+    String maxValue = maxLengthText.getText().trim();
+
+    XSDLengthFacet lengthFacet = xsdSimpleTypeDefinition.getLengthFacet();
+    XSDMinLengthFacet minLengthFacet = xsdSimpleTypeDefinition.getMinLengthFacet();
+    XSDMaxLengthFacet maxLengthFacet = xsdSimpleTypeDefinition.getMaxLengthFacet();
+    
+    XSDMinInclusiveFacet minInclusiveFacet = xsdSimpleTypeDefinition.getMinInclusiveFacet();
+    XSDMinExclusiveFacet minExclusiveFacet = xsdSimpleTypeDefinition.getMinExclusiveFacet();
+    XSDMaxInclusiveFacet maxInclusiveFacet = xsdSimpleTypeDefinition.getMaxInclusiveFacet();
+    XSDMaxExclusiveFacet maxExclusiveFacet = xsdSimpleTypeDefinition.getMaxExclusiveFacet();
+
+    String currentMinInclusive = null, currentMinExclusive = null, currentMaxInclusive = null, currentMaxExclusive = null;
+    if (minInclusiveFacet != null)
+    {
+      currentMinInclusive = minInclusiveFacet.getLexicalValue();
+    }
+    if (minExclusiveFacet != null)
+    {
+      currentMinExclusive = minExclusiveFacet.getLexicalValue();
+    }
+    if (maxInclusiveFacet != null)
+    {
+      currentMaxInclusive = maxInclusiveFacet.getLexicalValue();
+    }
+    if (maxExclusiveFacet != null)
+    {
+      currentMaxExclusive = maxExclusiveFacet.getLexicalValue();
+    }
+    
+    
+    String currentLength = null, currentMin = null, currentMax = null;
+    if (lengthFacet != null)
+    {
+      currentLength = lengthFacet.getLexicalValue();
+    }
+    if (minLengthFacet != null)
+    {
+      currentMin = minLengthFacet.getLexicalValue();
+    }
+    if (maxLengthFacet != null)
+    {
+      currentMax = maxLengthFacet.getLexicalValue();
+    }
+    
+    if (event.widget == minLengthText)
+    {
+      try
+      {
+        if (minValue.length() > 0)
+        {
+          if (!isNumericBaseType)
+          {
+            Number big = new BigInteger(minValue);
+            big.toString();
+            if (minLengthFacet != null)
+            {
+              if (minValue.equals(currentMin) || minValue.equals(currentLength))
+                return;
+            }
+            else
+            {
+              if (maxValue != null && minValue.equals(maxValue) && lengthFacet != null)
+              {
+                return;
+              }
+            }
+          }
+          else
+          {
+            if (xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("double").equals(xsdSimpleTypeDefinition) ||
+                xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("float").equals(xsdSimpleTypeDefinition) ||
+                xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("decimal").equals(xsdSimpleTypeDefinition))
+            {
+              BigDecimal bigDecimal = new BigDecimal(minValue);
+              bigDecimal.toString();
+              if ( (currentMinInclusive != null && minValue.equals(currentMinInclusive)) ||
+                   (currentMinExclusive != null && minValue.equals(currentMinExclusive)) )
+              {
+                return;
+              }
+            }
+            else
+            {
+              Number big = new BigInteger(minValue);
+              big.toString();
+            }
+            minimumInclusiveCheckbox.setEnabled(true);
+          }
+        }
+        else
+        {
+          if (!isNumericBaseType)
+          {
+            if (currentMin == null && currentLength == null)
+              return;
+          }
+          else
+          {
+            if (currentMinInclusive == null && minimumInclusiveCheckbox.getSelection())
+            {
+              return;
+            }
+            else if (currentMinExclusive == null && !minimumInclusiveCheckbox.getSelection())
+            {
+              return;
+            }
+          }
+          minimumInclusiveCheckbox.setEnabled(false);
+          minValue = null;
+        }
+        doUpdateMin = true;
+      }
+      catch (NumberFormatException e)
+      {
+        // TODO show error message
+        doUpdateMin = false;
+      }
+    }
+    if (event.widget == maxLengthText)
+    {
+      try
+      {
+        if (maxValue.length() > 0)
+        {
+          if (!isNumericBaseType)
+          {
+            Number big = new BigInteger(maxValue);
+            big.toString();
+            if (maxLengthFacet != null)
+            {
+              if (maxValue.equals(currentMax) || maxValue.equals(currentLength))
+                return;
+            }
+            else
+            {
+              if (minValue != null && maxValue.equals(minValue) && lengthFacet != null)
+              {
+                return;
+              }
+            }
+          }
+          else
+          {
+            if (xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("double").equals(xsdSimpleTypeDefinition) ||
+                xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("float").equals(xsdSimpleTypeDefinition) ||
+                xsdSchema.getSchemaForSchema().resolveSimpleTypeDefinition("decimal").equals(xsdSimpleTypeDefinition))
+            {
+              BigDecimal bigDecimal = new BigDecimal(maxValue);
+              bigDecimal.toString();
+            }
+            else
+            {
+              Number big = new BigInteger(maxValue);
+              big.toString();
+            }
+            maximumInclusiveCheckbox.setEnabled(true);
+          }
+        }
+        else
+        {
+          if (!isNumericBaseType)
+          {
+            if (currentMax == null && currentLength == null)
+              return;
+          }
+          else
+          {
+            if (currentMaxInclusive == null && maximumInclusiveCheckbox.getSelection())
+            {
+              return;
+            }
+            else if (currentMaxExclusive == null && !maximumInclusiveCheckbox.getSelection())
+            {
+              return;
+            }
+            maximumInclusiveCheckbox.setEnabled(false);
+          }
+          maxValue = null;
+        }
+
+        doUpdateMax = true;
+      }
+      catch (NumberFormatException e)
+      {
+        doUpdateMax = false;
+        // TODO show error message
+      }
+    }
+    
+    if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(xsdSimpleTypeDefinition.getTargetNamespace()) && (doUpdateMax || doUpdateMin))
+    {
+      XSDSimpleTypeDefinition anonymousSimpleType = null;
+      CompoundCommand compoundCommand = new CompoundCommand();
+      ChangeToLocalSimpleTypeCommand changeToAnonymousCommand = null;
+      if (input instanceof XSDFeature)
+      {
+        anonymousSimpleType = XSDCommonUIUtils.getAnonymousSimpleType((XSDFeature)input, xsdSimpleTypeDefinition);
+        if (anonymousSimpleType == null)
+        {
+          anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+          anonymousSimpleType.setBaseTypeDefinition(xsdSimpleTypeDefinition);
+       
+          changeToAnonymousCommand = new ChangeToLocalSimpleTypeCommand("Constrain length", (XSDFeature)input);
+          changeToAnonymousCommand.setAnonymousSimpleType(anonymousSimpleType);
+          compoundCommand.add(changeToAnonymousCommand);
+        }
+
+        if (!isNumericBaseType)
+        {
+          UpdateStringLengthFacetCommand updateCommand = new UpdateStringLengthFacetCommand("", anonymousSimpleType);
+          if (doUpdateMax)
+          {
+            updateCommand.setMax(maxValue);
+          }
+          if (doUpdateMin)
+          {
+            updateCommand.setMin(minValue);
+          }
+          compoundCommand.add(updateCommand);
+        }
+        else
+        {
+          UpdateNumericBoundsFacetCommand updateCommand = new UpdateNumericBoundsFacetCommand("Update bounds", anonymousSimpleType, minimumInclusiveCheckbox.getSelection(), maximumInclusiveCheckbox.getSelection());
+          if (doUpdateMax)
+          {
+            updateCommand.setMax(maxValue);
+          }
+          if (doUpdateMin)
+          {
+            updateCommand.setMin(minValue);
+          }
+          compoundCommand.add(updateCommand);
+        }
+        command = compoundCommand;
+        getCommandStack().execute(command);
+      }
+      else if (input instanceof XSDSimpleTypeDefinition)
+      {
+        if (!isNumericBaseType)
+        {
+          UpdateStringLengthFacetCommand updateCommand = new UpdateStringLengthFacetCommand("", xsdSimpleTypeDefinition);
+          if (doUpdateMax)
+          {
+            updateCommand.setMax(maxValue);
+          }
+          if (doUpdateMin)
+          {
+            updateCommand.setMin(minValue);
+          }
+          command = updateCommand;
+        }
+        else
+        {
+          UpdateNumericBoundsFacetCommand updateCommand = new UpdateNumericBoundsFacetCommand("Update bounds", xsdSimpleTypeDefinition, minimumInclusiveCheckbox.getSelection(), maximumInclusiveCheckbox.getSelection());
+          if (doUpdateMax)
+          {
+            updateCommand.setMax(maxValue);
+          }
+          if (doUpdateMin)
+          {
+            updateCommand.setMin(minValue);
+          }
+          command = updateCommand;
+        }
+        getCommandStack().execute(command);
+      }
+    }
+    else
+    {
+      if (!isNumericBaseType)
+      {
+        UpdateStringLengthFacetCommand updateCommand = new UpdateStringLengthFacetCommand("", xsdSimpleTypeDefinition);
+        if (doUpdateMax)
+        {
+          updateCommand.setMax(maxValue);
+        }
+        if (doUpdateMin)
+        {
+          updateCommand.setMin(minValue);
+        }
+        getCommandStack().execute(updateCommand);
+      }
+      else
+      {
+        UpdateNumericBoundsFacetCommand updateCommand = new UpdateNumericBoundsFacetCommand("Update bounds", xsdSimpleTypeDefinition, minimumInclusiveCheckbox.getSelection(), maximumInclusiveCheckbox.getSelection());
+        if (doUpdateMax)
+        {
+          updateCommand.setMax(maxValue);
+        }
+        if (doUpdateMin)
+        {
+          updateCommand.setMin(minValue);
+        }
+        getCommandStack().execute(updateCommand);
+      }
+      
+    }
+    setInput(getPart(), getSelection());
+  }
+  
+  public void widgetSelected(SelectionEvent e)
+  {
+    if (e.widget == collapseWhitespaceButton)
+    {
+       CompoundCommand compoundCommand = new CompoundCommand();
+       XSDSimpleTypeDefinition anonymousSimpleType = null;
+       if (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(xsdSimpleTypeDefinition.getTargetNamespace()))
+       {
+         if (input instanceof XSDFeature)
+         {
+           anonymousSimpleType = XSDCommonUIUtils.getAnonymousSimpleType((XSDFeature)input, xsdSimpleTypeDefinition);
+           if (anonymousSimpleType == null)
+           {
+             anonymousSimpleType = XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
+             anonymousSimpleType.setBaseTypeDefinition(xsdSimpleTypeDefinition);
+           
+             ChangeToLocalSimpleTypeCommand changeToAnonymousCommand = new ChangeToLocalSimpleTypeCommand("Constrain length", (XSDFeature)input);
+             changeToAnonymousCommand.setAnonymousSimpleType(anonymousSimpleType);
+             compoundCommand.add(changeToAnonymousCommand);
+           }
+  
+           UpdateXSDWhiteSpaceFacetCommand whiteSpaceCommand = new UpdateXSDWhiteSpaceFacetCommand("Collapse whitespace", anonymousSimpleType, collapseWhitespaceButton.getSelection());
+           compoundCommand.add(whiteSpaceCommand);
+            
+           getCommandStack().execute(compoundCommand);
+        }
+         setInput(getPart(), getSelection());
+      }
+      else
+      {
+        UpdateXSDWhiteSpaceFacetCommand whiteSpaceCommand = new UpdateXSDWhiteSpaceFacetCommand("Collapse whitespace", xsdSimpleTypeDefinition, collapseWhitespaceButton.getSelection());
+        getCommandStack().execute(whiteSpaceCommand);
+      }
+    }
+    else if (e.widget == minimumInclusiveCheckbox)
+    {
+      String minValue = minLengthText.getText().trim();
+      if (minValue.length() == 0) minValue = null;
+
+      UpdateNumericBoundsFacetCommand updateCommand = new UpdateNumericBoundsFacetCommand("Update bounds", xsdSimpleTypeDefinition, minimumInclusiveCheckbox.getSelection(), maximumInclusiveCheckbox.getSelection());
+      updateCommand.setMin(minValue);
+      
+      if (minValue != null)
+        getCommandStack().execute(updateCommand);
+    }
+    else if (e.widget == maximumInclusiveCheckbox)
+    {
+      String maxValue = maxLengthText.getText().trim();
+      if (maxValue.length() == 0) maxValue = null;
+      UpdateNumericBoundsFacetCommand updateCommand = new UpdateNumericBoundsFacetCommand("Update bounds", xsdSimpleTypeDefinition, minimumInclusiveCheckbox.getSelection(), maximumInclusiveCheckbox.getSelection());
+      updateCommand.setMax(maxValue);
+      if (maxValue != null)
+        getCommandStack().execute(updateCommand);
+    }
+    else if (e.widget == useEnumerationsButton)
+    {
+      constraintsWidget.addButton.setEnabled(true);
+      if (isListenerEnabled())
+        constraintsWidget.setConstraintKind(SpecificConstraintsWidget.ENUMERATION);
+    }
+    else if (e.widget == usePatternsButton)
+    {
+      constraintsWidget.addButton.setEnabled(false);
+      if (isListenerEnabled())
+        constraintsWidget.setConstraintKind(SpecificConstraintsWidget.PATTERN);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSectionFilter.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSectionFilter.java
new file mode 100644
index 0000000..294189c
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDFacetSectionFilter.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import org.eclipse.jface.viewers.IFilter;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+public class XSDFacetSectionFilter implements IFilter
+{
+  public boolean select(Object toTest)
+  {
+    if (toTest instanceof XSDFeature)
+    {
+      XSDTypeDefinition type = ((XSDFeature)toTest).getResolvedFeature().getType();
+      if (type instanceof XSDSimpleTypeDefinition)
+      {
+        return true;
+      }
+    }
+    else if (toTest instanceof XSDSimpleTypeDefinition)
+    {
+      XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)toTest;
+      if (st.eContainer() instanceof XSDSchema ||
+          st.eContainer() instanceof XSDFeature)
+      {
+        return true;
+      }
+    }
+    return false;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupDefinitionSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupDefinitionSection.java
new file mode 100644
index 0000000..f499498
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupDefinitionSection.java
@@ -0,0 +1,261 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.xerces.util.XMLChar;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+
+public class XSDModelGroupDefinitionSection extends AbstractSection
+{
+  protected Text nameText;
+  protected CCombo componentNameCombo;
+  boolean isReference;
+
+  public XSDModelGroupDefinitionSection()
+  {
+    super();
+  }
+
+  protected void createContents(Composite parent)
+  {
+    composite = getWidgetFactory().createFlatFormComposite(parent);
+
+    GridLayout gridLayout = new GridLayout();
+    gridLayout.numColumns = 2;
+    composite.setLayout(gridLayout);
+
+    if (isReference)
+    {
+      // ------------------------------------------------------------------
+      // Ref Label
+      // ------------------------------------------------------------------
+      GridData data = new GridData();
+      data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+      data.grabExcessHorizontalSpace = false;
+      CLabel refLabel = getWidgetFactory().createCLabel(composite, XSDConstants.REF_ATTRIBUTE + ":"); //$NON-NLS-1$
+      refLabel.setLayoutData(data);
+
+      // ------------------------------------------------------------------
+      // Ref Combo
+      // ------------------------------------------------------------------
+
+      data = new GridData();
+      data.grabExcessHorizontalSpace = true;
+      data.horizontalAlignment = GridData.FILL;
+
+      componentNameCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+      componentNameCombo.addSelectionListener(this);
+      componentNameCombo.setLayoutData(data);
+    }
+    else
+    {
+      // ------------------------------------------------------------------
+      // NameLabel
+      // ------------------------------------------------------------------
+      GridData data = new GridData();
+      data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+      data.grabExcessHorizontalSpace = false;
+      CLabel nameLabel = getWidgetFactory().createCLabel(composite, "Name:");
+      nameLabel.setLayoutData(data);
+
+      // ------------------------------------------------------------------
+      // NameText
+      // ------------------------------------------------------------------
+      data = new GridData();
+      data.grabExcessHorizontalSpace = true;
+      data.horizontalAlignment = GridData.FILL;
+      nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+      nameText.setLayoutData(data);
+      nameText.addListener(SWT.Modify, this);
+    }
+  }
+
+  public void refresh()
+  {
+    super.refresh();
+
+    if (isReadOnly)
+    {
+      composite.setEnabled(false);
+    }
+    else
+    {
+      composite.setEnabled(true);
+    }
+
+    setListenerEnabled(false);
+
+    XSDNamedComponent namedComponent = (XSDNamedComponent) input;
+
+    if (isReference)
+    {
+      Element element = namedComponent.getElement();
+      if (element != null)
+      {
+        String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
+        if (attrValue == null)
+        {
+          attrValue = "";
+        }
+        componentNameCombo.setText(attrValue);
+      }
+    }
+    else
+    {
+      // refresh name
+      nameText.setText("");
+
+      String name = namedComponent.getName();
+      if (name != null)
+      {
+        nameText.setText(name);
+      }
+    }
+
+    setListenerEnabled(true);
+  }
+
+  public void setInput(IWorkbenchPart part, ISelection selection)
+  {
+    super.setInput(part, selection);
+    init();
+    relayout();
+    
+    if (isReference)
+    {
+      TypesHelper helper = new TypesHelper(xsdSchema);
+      List items = new ArrayList();
+      items = helper.getModelGroups();
+      items.add(0, "");
+      componentNameCombo.setItems((String [])items.toArray(new String[0]));
+    }
+  }
+
+  protected void init()
+  {
+    if (input instanceof XSDModelGroupDefinition)
+    {
+      XSDModelGroupDefinition group = (XSDModelGroupDefinition) input;
+      isReference = group.isModelGroupDefinitionReference();
+    }
+  }
+
+  protected void relayout()
+  {
+    Composite parentComposite = composite.getParent();
+    parentComposite.getParent().setRedraw(false);
+
+    if (parentComposite != null && !parentComposite.isDisposed())
+    {
+      Control[] children = parentComposite.getChildren();
+      for (int i = 0; i < children.length; i++)
+      {
+        children[i].dispose();
+      }
+    }
+
+    // Now initialize the new handler
+    createContents(parentComposite);
+    parentComposite.getParent().layout(true, true);
+
+    // Now turn painting back on
+    parentComposite.getParent().setRedraw(true);
+    refresh();
+  }
+
+  public void doHandleEvent(Event event)
+  {
+    super.doHandleEvent(event);
+    if (event.widget == nameText)
+    {
+      String newValue = nameText.getText().trim();
+      if (input instanceof XSDNamedComponent)
+      {
+        XSDNamedComponent namedComponent = (XSDNamedComponent) input;
+        if (!validateSection())
+          return;
+
+        Command command = null;
+
+        // Make sure an actual name change has taken place
+        String oldName = namedComponent.getName();
+        if (!newValue.equals(oldName))
+        {
+          command = new UpdateNameCommand("Rename", namedComponent, newValue);
+        }
+
+        if (command != null && getCommandStack() != null)
+        {
+          getCommandStack().execute(command);
+        }
+        // doReferentialIntegrityCheck(namedComponent, newValue);
+      }
+    }
+  }
+
+  protected boolean validateSection()
+  {
+    if (nameText == null || nameText.isDisposed())
+      return true;
+
+    setErrorMessage(null);
+
+    String name = nameText.getText().trim();
+
+    // validate against NCName
+    if (name.length() < 1 || !XMLChar.isValidNCName(name))
+    {
+      setErrorMessage("Invalid name");
+      return false;
+    }
+
+    return true;
+  }
+  
+  public void widgetSelected(SelectionEvent e)
+  {
+    if (e.widget == componentNameCombo)
+    {
+      String newValue = componentNameCombo.getText();
+      if (input instanceof XSDNamedComponent)
+      {
+        XSDNamedComponent namedComponent = (XSDNamedComponent)input;
+        Element element = namedComponent.getElement();
+
+        if (namedComponent instanceof XSDModelGroupDefinition)
+        {
+          element.setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
+        }
+      }
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupSection.java
new file mode 100644
index 0000000..d9a653d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDModelGroupSection.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.xsd.editor.Messages;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateContentModelCommand;
+import org.eclipse.xsd.XSDCompositor;
+import org.eclipse.xsd.XSDModelGroup;
+
+public class XSDModelGroupSection extends MultiplicitySection
+{
+  protected CCombo modelGroupCombo;
+  private String[] modelGroupComboValues = { "sequence", "choice", "all" }; //$NON-NLS-1$
+
+  public XSDModelGroupSection()
+  {
+    super();
+  }
+
+  public void createContents(Composite parent)
+  {
+    composite = getWidgetFactory().createFlatFormComposite(parent);
+
+    String typeLabel = Messages.UI_LABEL_TYPE; //$NON-NLS-1$
+
+    GridLayout gridLayout = new GridLayout();
+    gridLayout.numColumns = 2;
+    composite.setLayout(gridLayout);
+
+    // ------------------------------------------------------------------
+    // NameLabel
+    // ------------------------------------------------------------------
+    GridData data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+    CLabel nameLabel = getWidgetFactory().createCLabel(composite, "Kind:"); //$NON-NLS-1$
+    nameLabel.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // NameText
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    modelGroupCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+    modelGroupCombo.setLayoutData(data);
+    modelGroupCombo.addSelectionListener(this);
+    modelGroupCombo.setItems(modelGroupComboValues);
+
+    // ------------------------------------------------------------------
+    // min property
+    // ------------------------------------------------------------------
+    getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_MINOCCURS);
+    
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+
+    minCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+    minCombo.setLayoutData(data);
+    minCombo.add("0"); //$NON-NLS-1$
+    minCombo.add("1"); //$NON-NLS-1$
+    minCombo.addListener(SWT.Modify, this);
+    minCombo.addSelectionListener(this);
+
+    // ------------------------------------------------------------------
+    // max property
+    // ------------------------------------------------------------------
+    getWidgetFactory().createCLabel(composite, Messages.UI_LABEL_MAXOCCURS);
+
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+
+    maxCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+    maxCombo.setLayoutData(data);
+    maxCombo.add("0"); //$NON-NLS-1$
+    maxCombo.add("1"); //$NON-NLS-1$
+    maxCombo.add("unbounded"); //$NON-NLS-1$
+    maxCombo.addListener(SWT.Modify, this);
+    maxCombo.addSelectionListener(this);
+  }
+
+  
+  public void refresh()
+  {
+    super.refresh();
+
+    if (isReadOnly)
+    {
+      composite.setEnabled(false);
+    }
+    else
+    {
+      composite.setEnabled(true);
+    }
+
+    setListenerEnabled(false);
+
+    if (input != null)
+    {
+      if (input instanceof XSDModelGroup)
+      {
+        XSDModelGroup particle = (XSDModelGroup)input;
+        String modelType = particle.getCompositor().getName();
+        modelGroupCombo.setText(modelType);
+      }
+    }
+    
+    refreshMinMax();
+
+    setListenerEnabled(true);
+  }
+  
+  public void doWidgetSelected(SelectionEvent e)
+  {
+    XSDModelGroup particle = (XSDModelGroup)input;
+    if (e.widget == modelGroupCombo)
+    {
+      XSDCompositor newValue = XSDCompositor.get(modelGroupCombo.getText());
+      UpdateContentModelCommand command = new UpdateContentModelCommand("Content Model Change", particle, newValue);
+      getCommandStack().execute(command);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSchemaSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSchemaSection.java
new file mode 100644
index 0000000..7100bc9
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSchemaSection.java
@@ -0,0 +1,468 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.custom.StyleRange;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.internal.actions.XSDEditNamespacesAction;
+import org.eclipse.wst.xsd.ui.internal.nsedit.TargetNamespaceChangeHandler;
+import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class XSDSchemaSection extends AbstractSection
+{
+  IWorkbenchPart part;
+  Text prefixText;
+  Text targetNamespaceText;
+  Button editButton;
+  StyledText errorText;
+  Color red;
+
+  /**
+   * 
+   */
+  public XSDSchemaSection()
+  {
+    super();
+  }
+
+  /**
+   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite,
+   *      org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
+   */
+  public void createContents(Composite parent)
+  {
+    composite = getWidgetFactory().createFlatFormComposite(parent);
+
+    GridLayout gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 2;
+    composite.setLayout(gridLayout);
+
+    GridData data = new GridData();
+
+    // Create Prefix Label
+    CLabel prefixLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_PREFIX")); //$NON-NLS-1$
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+    prefixLabel.setLayoutData(data);
+
+    // Create Prefix Text
+    prefixText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    prefixText.setLayoutData(data);
+    prefixText.addListener(SWT.Modify, this);
+
+    // Create TargetNamespace Label
+    CLabel targetNamespaceLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_TARGET_NAME_SPACE")); //$NON-NLS-1$
+    data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+    targetNamespaceLabel.setLayoutData(data);
+
+    // Create TargetNamespace Text
+    targetNamespaceText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    targetNamespaceText.setLayoutData(data);
+    targetNamespaceText.addListener(SWT.Modify, this);
+
+    // Advanced Button
+    editButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_SECTION_ADVANCED_ATTRIBUTES") + "...", SWT.PUSH);
+    data = new GridData(SWT.END, SWT.CENTER, true, false);
+    data.horizontalSpan = 2;
+    editButton.setLayoutData(data);
+    editButton.addSelectionListener(this);
+
+    // error text
+    errorText = new StyledText(composite, SWT.FLAT);
+    errorText.setEditable(false);
+    errorText.setEnabled(false);
+    errorText.setText("");
+    data = new GridData();
+    data.horizontalAlignment = GridData.FILL;
+    data.horizontalSpan = 2;
+    data.grabExcessHorizontalSpace = true;
+    errorText.setLayoutData(data);
+
+  }
+
+  /*
+   * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
+   */
+  public void refresh()
+  {
+    setListenerEnabled(false);
+
+    Element element = xsdSchema.getElement();
+
+    if (element != null)
+    {
+      // Handle prefixText
+      TypesHelper helper = new TypesHelper(xsdSchema);
+      String aPrefix = helper.getPrefix(element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE), false);
+
+      if (aPrefix != null && aPrefix.length() > 0)
+      {
+        prefixText.setText(aPrefix);
+      }
+      else
+      {
+        prefixText.setText(""); //$NON-NLS-1$
+      }
+
+      // Handle TargetNamespaceText
+      String tns = element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
+      if (tns != null && tns.length() > 0)
+      {
+        targetNamespaceText.setText(tns);
+      }
+      else
+      {
+        targetNamespaceText.setText(""); //$NON-NLS-1$
+      }
+      errorText.setText("");
+    }
+    setListenerEnabled(true);
+  }
+
+  public void doHandleEvent(Event event)
+  {
+    errorText.setText("");
+    String prefixValue = prefixText.getText();
+    String tnsValue = targetNamespaceText.getText();
+    if (tnsValue.trim().length() == 0)
+    {
+      if (prefixValue.trim().length() > 0)
+      {
+        errorText.setText(XSDEditorPlugin.getXSDString("_ERROR_TARGET_NAMESPACE_AND_PREFIX"));
+        int length = errorText.getText().length();
+        red = new Color(null, 255, 0, 0);
+        StyleRange style = new StyleRange(0, length, red, targetNamespaceText.getBackground());
+        errorText.setStyleRange(style);
+        return;
+      }
+    }
+
+    if (event.widget == prefixText)
+    {
+      updateNamespaceInfo(prefixValue, tnsValue);
+    }
+    else if (event.widget == targetNamespaceText)
+    {
+      updateNamespaceInfo(prefixValue, tnsValue);
+    }
+  }
+
+  public void doWidgetSelected(SelectionEvent e)
+  {
+    if (e.widget == editButton)
+    {
+      XSDEditNamespacesAction nsAction = new XSDEditNamespacesAction(XSDEditorPlugin.getXSDString("_UI_ACTION_EDIT_NAMESPACES"), xsdSchema.getElement(), null, xsdSchema); //$NON-NLS-1$ 
+      nsAction.run();
+      refresh();
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
+   */
+  public boolean shouldUseExtraSpace()
+  {
+    return true;
+  }
+
+  private void updateNamespaceInfo(String newPrefix, String newTargetNamespace)
+  {
+    Element element = xsdSchema.getElement();
+    DocumentImpl doc = (DocumentImpl) element.getOwnerDocument();
+
+    String modelTargetNamespace = xsdSchema.getTargetNamespace();
+    String oldNamespace = xsdSchema.getTargetNamespace();
+
+    TypesHelper helper = new TypesHelper(xsdSchema);
+    String oldPrefix = helper.getPrefix(element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE), false);
+
+    if (modelTargetNamespace == null)
+    {
+      modelTargetNamespace = ""; //$NON-NLS-1$
+    }
+
+    String targetNamespace = newTargetNamespace.trim();
+    String prefix = newPrefix.trim();
+
+    if (!validatePrefix(prefix) || !validateTargetNamespace(targetNamespace))
+    {
+      return;
+    }
+
+    if (prefix.length() > 0 && targetNamespace.length() == 0)
+    {
+      // can't have blank targetnamespace and yet specify a prefix
+      return;
+    }
+
+    doc.getModel().beginRecording(this, XSDEditorPlugin.getXSDString("_UI_TARGETNAMESPACE_CHANGE")); //$NON-NLS-1$
+    String xsdForXSDPrefix = xsdSchema.getSchemaForSchemaQNamePrefix();
+    Map map = xsdSchema.getQNamePrefixToNamespaceMap();
+
+    // For debugging
+    // System.out.println("1. SW Map is " + map.values());
+    // System.out.println("1. SW Map keys are " + map.keySet());
+
+    // Check if prefix is blank
+    // if it is, then make sure we have a prefix
+    // for schema for schema
+    if (prefix.length() == 0)
+    {
+      // if prefix for schema for schema is blank
+      // then set it to value specified in preference
+      // and update ALL nodes with this prefix
+      if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
+      {
+        // get preference prefix
+        xsdForXSDPrefix = XSDEditorPlugin.getPlugin().getXMLSchemaPrefix();
+        // get a unique prefix by checking what's in the map
+
+        xsdForXSDPrefix = getUniqueSchemaForSchemaPrefix(xsdForXSDPrefix, map);
+        element.setAttribute("xmlns:" + xsdForXSDPrefix, XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001); //$NON-NLS-1$
+
+        updateAllNodes(element, xsdForXSDPrefix);
+
+        // remove the old xmlns attribute for the schema for schema
+        if (element.getAttribute("xmlns") != null && //$NON-NLS-1$
+            element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001)) //$NON-NLS-1$
+        {
+          element.removeAttribute("xmlns"); //$NON-NLS-1$
+        }
+      }
+    }
+
+    if (targetNamespace.length() > 0 || (targetNamespace.length() == 0 && prefix.length() == 0))
+    {
+      // clean up the old prefix for this schema
+      if (oldPrefix != null && oldPrefix.length() > 0)
+      {
+        element.removeAttribute("xmlns:" + oldPrefix); //$NON-NLS-1$
+        // element.setAttribute("xmlns:" + prefix, targetNamespace);
+        // java.util.Map prefixToNameSpaceMap =
+        // xsdSchema.getQNamePrefixToNamespaceMap();
+        // prefixToNameSpaceMap.remove(oldPrefix);
+      }
+      else
+      // if no prefix
+      {
+        if (element.getAttribute("xmlns") != null) //$NON-NLS-1$
+        {
+          if (!element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001)) //$NON-NLS-1$
+          {
+            element.removeAttribute("xmlns"); //$NON-NLS-1$
+          }
+        }
+      }
+    }
+
+    if (targetNamespace.length() > 0)
+    {
+      if (!modelTargetNamespace.equals(targetNamespace))
+      {
+        element.setAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE, targetNamespace);
+      }
+      // now set the new xmlns:prefix attribute
+      if (prefix.length() > 0)
+      {
+        element.setAttribute("xmlns:" + prefix, targetNamespace); //$NON-NLS-1$
+      }
+      else
+      {
+        element.setAttribute("xmlns", targetNamespace); //$NON-NLS-1$
+      }
+      // set the targetNamespace attribute
+    }
+    else
+    // else targetNamespace is blank
+    {
+      if (prefix.length() == 0)
+      {
+        element.removeAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
+      }
+    }
+
+    // System.out.println("1.5 SW Map is " + map.values());
+    // System.out.println("1.5 SW Map keys are " + map.keySet());
+
+    // do our own referential integrity
+    TargetNamespaceChangeHandler targetNamespaceChangeHandler = new TargetNamespaceChangeHandler(xsdSchema, oldNamespace, targetNamespace);
+    targetNamespaceChangeHandler.resolve();
+
+    updateElement(xsdSchema);
+
+    
+    doc.getModel().endRecording(this);
+
+    // For debugging
+    // map = xsdSchema.getQNamePrefixToNamespaceMap();
+    // System.out.println("2. SW Map is " + map.values());
+    // System.out.println("2. SW Map keys are " + map.keySet());
+  }
+
+  // issue (cs) I don't have a clue why we need to call this method
+  //
+  private static void updateElement(XSDConcreteComponent concreteComp)
+  {
+    try
+    {
+      concreteComp.updateElement();
+    }
+    catch (Exception e)
+    {
+      for (Iterator containments = concreteComp.eClass().getEAllReferences().iterator(); containments.hasNext(); )
+      {
+        EReference eReference = (EReference)containments.next();
+        if (eReference.isContainment())
+        {
+          if (eReference.isMany())
+          {
+            for (Iterator objects = ((Collection)concreteComp.eGet(eReference)).iterator(); objects.hasNext(); )
+            {
+              XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)objects.next();
+              try
+              {
+                xsdConcreteComponent.updateElement();
+              }
+              catch (Exception ex) {}
+            }
+          }
+          else
+          {
+            XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)concreteComp.eGet(eReference);
+            if (xsdConcreteComponent != null)
+            {
+              try
+              {
+                xsdConcreteComponent.updateElement();
+              }
+              catch (Exception ex) {}
+            }
+          }
+        }
+      }
+    }
+  }      
+  private String getUniqueSchemaForSchemaPrefix(String xsdForXSDPrefix, Map map)
+  {
+    if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
+    {
+      xsdForXSDPrefix = "xsd"; //$NON-NLS-1$
+    }
+    // ensure prefix is unique
+    int prefixExtension = 1;
+    while (map.containsKey(xsdForXSDPrefix) && prefixExtension < 100)
+    {
+      xsdForXSDPrefix = xsdForXSDPrefix + String.valueOf(prefixExtension);
+      prefixExtension++;
+    }
+    return xsdForXSDPrefix;
+  }
+
+  private void updateAllNodes(Element element, String prefix)
+  {
+    element.setPrefix(prefix);
+    NodeList list = element.getChildNodes();
+    if (list != null)
+    {
+      for (int i = 0; i < list.getLength(); i++)
+      {
+        Node child = list.item(i);
+        if (child != null && child instanceof Element)
+        {
+          child.setPrefix(prefix);
+          if (child.hasChildNodes())
+          {
+            updateAllNodes((Element) child, prefix);
+          }
+        }
+      }
+    }
+  }
+
+  private boolean validateTargetNamespace(String ns)
+  {
+    // will allow blank namespace !!
+    if (ns.equals(""))
+    {
+      return true;
+    }
+
+    String errorMessage = null;
+    try
+    {
+      URI testURI = new URI(ns);
+      testURI.isAbsolute();
+    }
+    catch (URISyntaxException e)
+    {
+      errorMessage = XSDEditorPlugin.getXSDString("_WARN_INVALID_TARGET_NAMESPACE"); //$NON-NLS-1$
+    }
+
+    if (errorMessage == null || errorMessage.length() == 0)
+    {
+      return true;
+    }
+    return false;
+  }
+
+  public void dispose()
+  {
+    super.dispose();
+    if (red != null)
+    {
+      red.dispose();
+      red = null;
+    }
+  }
+
+  protected boolean validatePrefix(String prefix)
+  {
+    // TODO
+    return true;
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSimpleTypeSection.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSimpleTypeSection.java
new file mode 100644
index 0000000..2f95ce6
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDSimpleTypeSection.java
@@ -0,0 +1,653 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+import org.apache.xerces.util.XMLChar;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.commands.UpdateNameCommand;
+import org.eclipse.wst.xsd.ui.internal.actions.CreateElementAction;
+import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
+import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDVariety;
+import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class XSDSimpleTypeSection extends AbstractSection
+{
+  protected Text nameText;
+  CCombo varietyCombo;
+  Text typesText;
+  CLabel typesLabel;
+  Button button;
+  XSDSimpleTypeDefinition memberTypeDefinition, itemTypeDefinition, baseTypeDefinition;
+
+  public XSDSimpleTypeSection()
+  {
+    super();
+  }
+
+  protected void createContents(Composite parent)
+  {
+    TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
+    composite = factory.createFlatFormComposite(parent);
+
+    GridData data = new GridData();
+
+    GridLayout gridLayout = new GridLayout();
+    gridLayout.marginTop = 0;
+    gridLayout.marginBottom = 0;
+    gridLayout.numColumns = 3;
+    composite.setLayout(gridLayout);
+
+    // ------------------------------------------------------------------
+    // NameLabel
+    // ------------------------------------------------------------------
+
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+    CLabel nameLabel = factory.createCLabel(composite, "Name:");
+    nameLabel.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // NameText
+    // ------------------------------------------------------------------
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+    nameText.setLayoutData(data);
+    applyAllListeners(nameText);
+
+    // ------------------------------------------------------------------
+    // DummyLabel
+    // ------------------------------------------------------------------
+    getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+    // Variety Label
+    CLabel label = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_VARIETY")); //$NON-NLS-1$
+
+    // Variety Combo
+    data = new GridData();
+    data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_BEGINNING;
+    data.grabExcessHorizontalSpace = false;
+    label.setLayoutData(data);
+
+    varietyCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+
+    List list = XSDVariety.VALUES;
+    Iterator iter = list.iterator();
+    while (iter.hasNext())
+    {
+      varietyCombo.add(((XSDVariety) iter.next()).getName());
+    }
+    varietyCombo.addSelectionListener(this);
+    varietyCombo.setLayoutData(data);
+
+    // ------------------------------------------------------------------
+    // DummyLabel
+    // ------------------------------------------------------------------
+    getWidgetFactory().createCLabel(composite, ""); //$NON-NLS-1$
+
+    // ------------------------------------------------------------------
+    // Types Label
+    // ------------------------------------------------------------------
+    typesLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
+
+    // ------------------------------------------------------------------
+    // Types Text
+    // ------------------------------------------------------------------
+    typesText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+    typesText.addListener(SWT.Modify, this);
+    data = new GridData();
+    data.grabExcessHorizontalSpace = true;
+    data.horizontalAlignment = GridData.FILL;
+    typesText.setLayoutData(data);
+
+    button = getWidgetFactory().createButton(composite, "", SWT.PUSH); //$NON-NLS-1$
+    button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
+    button.addSelectionListener(this);
+  }
+  
+  public void setInput(IWorkbenchPart part, ISelection selection)
+  {
+    super.setInput(part, selection);
+    relayout();
+  }
+
+  protected void relayout()
+  {
+    Composite parentComposite = composite.getParent();
+    parentComposite.getParent().setRedraw(false);
+
+    if (parentComposite != null && !parentComposite.isDisposed())
+    {
+      Control[] children = parentComposite.getChildren();
+      for (int i = 0; i < children.length; i++)
+      {
+        children[i].dispose();
+      }
+    }
+
+    // Now initialize the new handler
+    createContents(parentComposite);
+    parentComposite.getParent().layout(true, true);
+
+    // Now turn painting back on
+    parentComposite.getParent().setRedraw(true);
+    refresh();
+  }
+
+  public void refresh()
+  {
+    super.refresh();
+
+    setListenerEnabled(false);
+    if (isReadOnly)
+    {
+      composite.setEnabled(false);
+    }
+    else
+    {
+      composite.setEnabled(true);
+    }
+
+    nameText.setText("");
+    varietyCombo.setText(""); //$NON-NLS-1$
+    typesText.setText(""); //$NON-NLS-1$
+    typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
+
+    if (input instanceof XSDSimpleTypeDefinition)
+    {
+      XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+      String simpleTypeName = st.getName();
+      if (simpleTypeName != null)
+      {
+        nameText.setText(simpleTypeName);
+      }
+      else
+      {
+        nameText.setText("**anonymous**");
+      }
+      
+      Element simpleTypeElement = st.getElement();
+      Element element = null;
+      String variety = st.getVariety().getName();
+      int intVariety = st.getVariety().getValue();
+
+      if (variety != null)
+      {
+        varietyCombo.setText(variety);
+        if (intVariety == XSDVariety.ATOMIC)
+        {
+          baseTypeDefinition = st.getBaseTypeDefinition();
+          String name = "";
+          if (baseTypeDefinition != null)
+          {
+            name = baseTypeDefinition.getName();
+          }
+          typesText.setText(name);
+          typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
+        }
+        else if (intVariety == XSDVariety.LIST)
+        {
+          itemTypeDefinition = st.getItemTypeDefinition();
+          String name = "";
+          if (itemTypeDefinition != null)
+          {
+            name = itemTypeDefinition.getName();
+          }
+          typesText.setText(name);
+          typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_ITEM_TYPE")); //$NON-NLS-1$
+        }
+        else if (intVariety == XSDVariety.UNION)
+        {
+          List memberTypesList = st.getMemberTypeDefinitions();
+          StringBuffer sb = new StringBuffer();
+          for (Iterator i = memberTypesList.iterator(); i.hasNext();)
+          {
+            XSDSimpleTypeDefinition typeObject = (XSDSimpleTypeDefinition) i.next();
+            String name = typeObject.getQName();
+            if (name != null)
+            {
+              sb.append(name);
+              if (i.hasNext())
+              {
+                sb.append(" "); //$NON-NLS-1$
+              }
+            }
+          }
+          String memberTypes = sb.toString();
+          typesText.setText(memberTypes);
+          typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
+        }
+      }
+    }
+    setListenerEnabled(true);
+
+  }
+
+  public void widgetSelected(SelectionEvent e)
+  {
+    if (e.widget == varietyCombo)
+    {
+      if (input != null)
+      {
+        if (input instanceof XSDSimpleTypeDefinition)
+        {
+          XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+          Element parent = st.getElement();
+
+          String variety = varietyCombo.getText();
+          if (variety.equals(XSDVariety.ATOMIC_LITERAL.getName()))
+          {
+            typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
+            st.setVariety(XSDVariety.ATOMIC_LITERAL);
+            addCreateElementActionIfNotExist(XSDConstants.RESTRICTION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_RESTRICTION"), parent, null); //$NON-NLS-1$
+          }
+          else if (variety.equals(XSDVariety.UNION_LITERAL.getName()))
+          {
+            typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
+            st.setVariety(XSDVariety.UNION_LITERAL);
+            addCreateElementActionIfNotExist(XSDConstants.UNION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_UNION"), parent, null); //$NON-NLS-1$
+          }
+          else if (variety.equals(XSDVariety.LIST_LITERAL.getName()))
+          {
+            typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_ITEM_TYPE")); //$NON-NLS-1$
+            st.setVariety(XSDVariety.LIST_LITERAL);
+            addCreateElementActionIfNotExist(XSDConstants.LIST_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LIST"), parent, null); //$NON-NLS-1$
+          }
+        }
+      }
+    }
+    else if (e.widget == button)
+    {
+      Shell shell = Display.getCurrent().getActiveShell();
+      Element element = ((XSDConcreteComponent) input).getElement();
+      Dialog dialog = null;
+      String property = "";
+      Element secondaryElement = null;
+
+      IFile currentIFile = ((IFileEditorInput) getActiveEditor().getEditorInput()).getFile();
+      
+      // issue (cs) need to move to common.ui's selection dialog
+      /*
+      XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, xsdSchema);
+      dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider);
+      provider.setDialog((XSDComponentSelectionDialog) dialog);
+
+      if (input instanceof XSDSimpleTypeDefinition)
+      {
+        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+        Element simpleTypeElement = st.getElement();
+        if (st.getVariety() == XSDVariety.LIST_LITERAL)
+        {
+          Element listElement = (Element) itemTypeDefinition.getElement();
+          // dialog = new TypesDialog(shell, listElement,
+          // XSDConstants.ITEMTYPE_ATTRIBUTE, xsdSchema);
+          // dialog.showComplexTypes = false;
+          provider.showComplexTypes(false);
+
+          secondaryElement = listElement;
+          property = XSDConstants.ITEMTYPE_ATTRIBUTE;
+        }
+        else if (st.getVariety() == XSDVariety.ATOMIC_LITERAL)
+        {
+          Element derivedByElement = (Element) baseTypeDefinition.getElement();
+          if (derivedByElement != null)
+          {
+            // dialog = new TypesDialog(shell, derivedByElement,
+            // XSDConstants.BASE_ATTRIBUTE, xsdSchema);
+            // dialog.showComplexTypes = false;
+            provider.showComplexTypes(false);
+
+            secondaryElement = derivedByElement;
+            property = XSDConstants.BASE_ATTRIBUTE;
+          }
+          else
+          {
+            return;
+          }
+        }
+        else if (st.getVariety() == XSDVariety.UNION_LITERAL)
+        {
+          SimpleContentUnionMemberTypesDialog unionDialog = new SimpleContentUnionMemberTypesDialog(shell, st);
+          unionDialog.setBlockOnOpen(true);
+          unionDialog.create();
+
+          int result = unionDialog.open();
+          if (result == Window.OK)
+          {
+            String newValue = unionDialog.getResult();
+            // beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES_CHANGE"),
+            // element); //$NON-NLS-1$
+            Element unionElement = (Element) memberTypeDefinition.getElement();
+            unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
+
+            if (newValue.length() > 0)
+            {
+              unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
+            }
+            else
+            {
+              unionElement.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
+            }
+            // endRecording(unionElement);
+            refresh();
+          }
+          return;
+        }
+        else
+        {
+          property = "type";
+        }
+      }
+      else
+      {
+        property = "type";
+      }
+      // beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"),
+      // element); //$NON-NLS-1$
+      dialog.setBlockOnOpen(true);
+      dialog.create();
+      int result = dialog.open();
+
+      if (result == Window.OK)
+      {
+        if (secondaryElement == null)
+        {
+          secondaryElement = element;
+        }
+        XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, xsdSchema);
+        helper.setType(secondaryElement, property, ((XSDComponentSelectionDialog) dialog).getSelection());
+
+        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+        st.setElement(element);
+        updateSimpleTypeFacets();*/
+      }
+      // endRecording(element);
+    
+    refresh();
+  }
+
+  public boolean shouldUseExtraSpace()
+  {
+    return false;
+  }
+
+  // issue (cs) this method seems to be utilizing 'old' classes, can we reimplement?
+  // (e.g. ChangeElementAction, XSDDOMHelper, etc)
+  protected boolean addCreateElementActionIfNotExist(String elementTag, String label, Element parent, Node relativeNode)
+  {
+    XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+    List attributes = new ArrayList();
+    String reuseType = null;
+
+    // beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_VARIETY_CHANGE"),
+    // parent); //$NON-NLS-1$
+    if (elementTag.equals(XSDConstants.RESTRICTION_ELEMENT_TAG))
+    {
+      Element listNode = getFirstChildNodeIfExists(parent, XSDConstants.LIST_ELEMENT_TAG, false);
+      if (listNode != null)
+      {
+        reuseType = listNode.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
+        XSDDOMHelper.removeNodeAndWhitespace(listNode);
+      }
+
+      Element unionNode = getFirstChildNodeIfExists(parent, XSDConstants.UNION_ELEMENT_TAG, false);
+      if (unionNode != null)
+      {
+        String memberAttr = unionNode.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
+        if (memberAttr != null)
+        {
+          StringTokenizer stringTokenizer = new StringTokenizer(memberAttr);
+          reuseType = stringTokenizer.nextToken();
+        }
+        XSDDOMHelper.removeNodeAndWhitespace(unionNode);
+      }
+
+      if (reuseType == null)
+      {
+        reuseType = getBuiltInStringQName();
+      }
+      attributes.add(new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, reuseType));
+      st.setItemTypeDefinition(null);
+    }
+    else if (elementTag.equals(XSDConstants.LIST_ELEMENT_TAG))
+    {
+      Element restrictionNode = getFirstChildNodeIfExists(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false);
+      if (restrictionNode != null)
+      {
+        reuseType = restrictionNode.getAttribute(XSDConstants.BASE_ATTRIBUTE);
+        XSDDOMHelper.removeNodeAndWhitespace(restrictionNode);
+      }
+      Element unionNode = getFirstChildNodeIfExists(parent, XSDConstants.UNION_ELEMENT_TAG, false);
+      if (unionNode != null)
+      {
+        String memberAttr = unionNode.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
+        if (memberAttr != null)
+        {
+          StringTokenizer stringTokenizer = new StringTokenizer(memberAttr);
+          reuseType = stringTokenizer.nextToken();
+        }
+        XSDDOMHelper.removeNodeAndWhitespace(unionNode);
+      }
+      attributes.add(new DOMAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, reuseType));
+    }
+    else if (elementTag.equals(XSDConstants.UNION_ELEMENT_TAG))
+    {
+      Element listNode = getFirstChildNodeIfExists(parent, XSDConstants.LIST_ELEMENT_TAG, false);
+      if (listNode != null)
+      {
+        reuseType = listNode.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
+        XSDDOMHelper.removeNodeAndWhitespace(listNode);
+      }
+      Element restrictionNode = getFirstChildNodeIfExists(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false);
+      if (restrictionNode != null)
+      {
+        reuseType = restrictionNode.getAttribute(XSDConstants.BASE_ATTRIBUTE);
+        XSDDOMHelper.removeNodeAndWhitespace(restrictionNode);
+      }
+      attributes.add(new DOMAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, reuseType));
+      st.setItemTypeDefinition(null);
+    }
+
+    if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
+    {
+      Action action = addCreateElementAction(elementTag, label, attributes, parent, relativeNode);
+      action.run();
+    }
+
+    st.setElement(parent);
+    st.updateElement();
+    // endRecording(parent);
+    return true;
+  }
+
+  protected Action addCreateElementAction(String elementTag, String label, List attributes, Element parent, Node relativeNode)
+  {
+    CreateElementAction action = new CreateElementAction(label);
+    action.setElementTag(elementTag);
+    action.setAttributes(attributes);
+    action.setParentNode(parent);
+    action.setRelativeNode(relativeNode);
+    return action;
+  }
+
+  protected Element getFirstChildNodeIfExists(Node parent, String elementTag, boolean isRef)
+  {
+    NodeList children = parent.getChildNodes();
+    Element targetNode = null;
+    for (int i = 0; i < children.getLength(); i++)
+    {
+      Node child = children.item(i);
+      if (child != null && child instanceof Element)
+      {
+        if (XSDDOMHelper.inputEquals((Element) child, elementTag, isRef))
+        {
+          targetNode = (Element) child;
+          break;
+        }
+      }
+    }
+    return targetNode;
+  }
+
+  protected String getBuiltInStringQName()
+  {
+    String stringName = "string"; //$NON-NLS-1$
+
+    if (xsdSchema != null)
+    {
+      String schemaForSchemaPrefix = xsdSchema.getSchemaForSchemaQNamePrefix();
+      if (schemaForSchemaPrefix != null && schemaForSchemaPrefix.length() > 0)
+      {
+        String prefix = xsdSchema.getSchemaForSchemaQNamePrefix();
+        if (prefix != null && prefix.length() > 0)
+        {
+          stringName = prefix + ":" + stringName; //$NON-NLS-1$
+        }
+      }
+    }
+    return stringName;
+  }
+
+  private void updateSimpleTypeFacets()
+  {
+    XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) input;
+    Element simpleTypeElement = st.getElement();
+    Element derivedByElement = baseTypeDefinition.getElement();
+    if (derivedByElement != null)
+    {
+      List nodesToRemove = new ArrayList();
+      NodeList childList = derivedByElement.getChildNodes();
+      int length = childList.getLength();
+      for (int i = 0; i < length; i++)
+      {
+        Node child = childList.item(i);
+        if (child instanceof Element)
+        {
+          Element elementChild = (Element) child;
+          if (!(elementChild.getLocalName().equals("pattern") || elementChild.getLocalName().equals("enumeration") || //$NON-NLS-1$
+              XSDDOMHelper.inputEquals(elementChild, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(elementChild, XSDConstants.ANNOTATION_ELEMENT_TAG, false)
+              || XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true)
+              || XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true) || XSDDOMHelper.inputEquals(elementChild,
+              XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false)))
+          {
+            nodesToRemove.add(child);
+          }
+        }
+      }
+      Iterator iter = nodesToRemove.iterator();
+      while (iter.hasNext())
+      {
+        Element facetToRemove = (Element) iter.next();
+        String facetName = facetToRemove.getLocalName();
+        Iterator it = st.getValidFacets().iterator();
+        boolean doRemove = true;
+        while (it.hasNext())
+        {
+          String aValidFacet = (String) it.next();
+          if (aValidFacet.equals(facetName))
+          {
+            doRemove = false;
+            break;
+          }
+        }
+        if (doRemove)
+        {
+          XSDDOMHelper.removeNodeAndWhitespace(facetToRemove);
+        }
+      }
+    }
+  }
+ // TODO: Common this up with element declaration
+  public void doHandleEvent(Event event) 
+  {
+    if (event.widget == nameText)
+    {
+      String newValue = nameText.getText().trim();
+      if (input instanceof XSDNamedComponent)
+      {
+        XSDNamedComponent namedComponent = (XSDNamedComponent)input;
+        if (!validateSection())
+          return;
+
+        Command command = null;
+
+        // Make sure an actual name change has taken place
+        String oldName = namedComponent.getName();
+        if (!newValue.equals(oldName))
+        {
+          command = new UpdateNameCommand("Rename", namedComponent, newValue);
+        }
+
+        if (command != null && getCommandStack() != null)
+        {
+          getCommandStack().execute(command);
+        }
+
+      }
+    }
+  }
+  
+  protected boolean validateSection()
+  {
+    if (nameText == null || nameText.isDisposed())
+      return true;
+
+    setErrorMessage(null);
+
+    String name = nameText.getText().trim();
+
+    // validate against NCName
+    if (name.length() < 1 || !XMLChar.isValidNCName(name))
+    {
+      setErrorMessage("Invalid name");
+      return false;
+    }
+
+    return true;
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDTableTreeViewer.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDTableTreeViewer.java
new file mode 100644
index 0000000..2738861
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/XSDTableTreeViewer.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * 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.xsd.ui.common.properties.sections;
+
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.ui.internal.tabletree.XMLTableTreeContentProvider;
+import org.eclipse.wst.xml.ui.internal.tabletree.XMLTableTreeViewer;
+import org.w3c.dom.Element;
+
+public class XSDTableTreeViewer extends XMLTableTreeViewer
+{
+
+  String filter = "";
+
+  class XSDActionMenuListener implements IMenuListener
+  {
+    public void menuAboutToShow(IMenuManager menuManager)
+    {
+      // used to disable NodeSelection listening while running NodeAction
+      // XSDActionManager nodeActionManager = new XSDActionManager(fModel,
+      // XSDTableTreeViewer.this);
+      // nodeActionManager.setCommandStack(commandStack);
+      // nodeActionManager.fillContextMenu(menuManager, getSelection());
+
+      // used to disable NodeSelection listening while running NodeAction
+      // XMLNodeActionManager nodeActionManager = new
+      // XMLNodeActionManager(((IDOMDocument) getInput()).getModel(),
+      // XMLTableTreeViewer.this) {
+      if (getInput() != null)
+      {
+        XSDActionManager nodeActionManager = new XSDActionManager(((IDOMDocument) (((Element) getInput()).getOwnerDocument())).getModel(), XSDTableTreeViewer.this);
+        // nodeActionManager.setCommandStack(commandStack);
+        nodeActionManager.fillContextMenu(menuManager, getSelection());
+      }
+
+    }
+  }
+
+  public XSDTableTreeViewer(Composite parent)
+  {
+    super(parent);
+    // treeExtension.setCellModifier(null);
+    getTree().setLinesVisible(true);
+
+    // treeExtension = new XMLTreeExtension(getTree());
+
+    // Reassign the content provider
+    XMLTableTreeContentProvider provider = new MyContentProvider();
+    // provider.addViewer(this);
+
+    setContentProvider(provider);
+    setLabelProvider(provider);
+
+    // setViewerSelectionManager(new ViewerSelectionManagerImpl(null));
+  }
+
+  protected Object getRoot()
+  {
+    return super.getRoot();
+  }
+
+  public void setFilter(String filter)
+  {
+    this.filter = filter;
+  }
+
+  protected void createContextMenu()
+  {
+    // TODO Verify if this is okay to override the MenuManager
+    MenuManager contextMenu = new MenuManager("#PopUp"); //$NON-NLS-1$
+    contextMenu.add(new Separator("additions")); //$NON-NLS-1$
+    contextMenu.setRemoveAllWhenShown(true);
+
+    // This is the line we have to modify
+    contextMenu.addMenuListener(new XSDActionMenuListener());
+    Menu menu = contextMenu.createContextMenu(getControl());
+    getControl().setMenu(menu);
+  }
+
+  boolean added = false;
+
+  class MyContentProvider extends XMLTableTreeContentProvider
+  {
+
+    // public Object[] getChildren(Object element) {
+    //			
+    // if (!added) {
+    // if (element instanceof Element) {
+    // added = true;
+    // Element elem = (Element)element;
+    // System.out.println("getChildren " + elem.getLocalName());
+    // if (elem instanceof INodeNotifier) {
+    // viewerNotifyingAdapterFactory.adapt((INodeNotifier) elem);
+    // }
+    // // return new Object[] {elem};
+    // }
+    // }
+    // return super.getChildren(element);
+    // }
+
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+    {
+      added = false;
+      if (oldInput instanceof Element)
+        oldInput = ((Element) oldInput).getOwnerDocument();
+
+      if (newInput instanceof Element)
+        newInput = ((Element) newInput).getOwnerDocument();
+      super.inputChanged(viewer, oldInput, newInput);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddApplicationInfoDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddApplicationInfoDialog.java
new file mode 100644
index 0000000..1596ee7
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddApplicationInfoDialog.java
@@ -0,0 +1,524 @@
+/*******************************************************************************
+ * Copyright (c) 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.xsd.ui.common.properties.sections.appinfo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.xerces.dom.DocumentImpl;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.ui.dialogs.SelectionDialog;
+import org.eclipse.wst.xsd.contentmodel.internal.XSDImpl;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSchema;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class AddApplicationInfoDialog extends SelectionDialog implements ISelectionChangedListener, SelectionListener
+{
+  // when this dialog is created it needs to know which registry it is going to use,the WSDL or the XSD,
+  // hence we need this field
+  ApplicationInformationPropertiesRegistry registry;
+  
+  protected static final Image DEFAULT_ELEMENT_ICON = XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
+  protected static final Image DEFAULT_ATTRIBUTE_ICON = XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
+
+  /** A temporary Document in which we create temporary DOM element for each element in the
+   * Element view. (required by LabelProvider)  */ 
+  protected static Document tempDoc = new DocumentImpl();
+  
+  Button addButton, removeButton;
+
+  public AddApplicationInfoDialog(Shell parent, ApplicationInformationPropertiesRegistry registry)
+  {
+    super(parent);
+    setTitle("Add Extension Components");
+    setShellStyle(SWT.APPLICATION_MODAL | SWT.RESIZE | SWT.CLOSE);
+    
+    this.registry = registry;
+  }
+
+  private IStructuredContentProvider categoryContentProvider, elementContentProvider;
+  private ILabelProvider categoryLabelProvider, elementLabelProvider;
+  private List fInput;
+
+  private TableViewer categoryTableViewer, elementTableViewer;
+  private ArrayList existingNames;
+
+  public void setInput(List input)
+  {
+    this.fInput = input;
+  }
+
+  protected Control createDialogArea(Composite container)
+  {
+    Composite parent = (Composite) super.createDialogArea(container);
+
+    Composite categoryComposite = new Composite(parent, SWT.NONE);
+    GridLayout gl = new GridLayout();
+    gl.numColumns = 2;
+    gl.marginHeight = 0;
+    gl.marginWidth = 0;
+    GridData data = new GridData(GridData.FILL_BOTH);
+    categoryComposite.setLayoutData(data);
+    categoryComposite.setLayout(gl);
+
+    Label label = new Label(categoryComposite, SWT.LEFT);
+    label.setText("Extension Categories:");
+
+    new Label(categoryComposite, SWT.NONE);
+
+    categoryTableViewer = new TableViewer(categoryComposite, getTableStyle());
+    categoryTableViewer.setContentProvider(new CategoryContentProvider());
+    categoryTableViewer.setLabelProvider(new CategoryLabelProvider());
+    categoryTableViewer.setInput(fInput);
+    categoryTableViewer.addSelectionChangedListener(this);
+
+    GridData gd = new GridData(GridData.FILL_BOTH);
+    Table table = categoryTableViewer.getTable();
+    table.setLayoutData(gd);
+    table.setFont(container.getFont());
+
+    Composite buttonComposite = new Composite(categoryComposite, SWT.NONE);
+    gl = new GridLayout();
+    gl.makeColumnsEqualWidth = true;
+    gl.numColumns = 1;
+    data = new GridData();
+    data.horizontalAlignment = SWT.FILL;
+    buttonComposite.setLayoutData(data);
+    buttonComposite.setLayout(gl);
+
+    addButton = new Button(buttonComposite, SWT.PUSH);
+    addButton.setText("Add...");
+    addButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+    addButton.addSelectionListener(this);
+
+    removeButton = new Button(buttonComposite, SWT.PUSH);
+    removeButton.setText("Remove");
+    removeButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+    removeButton.addSelectionListener(this);
+
+    List initialSelection = getInitialElementSelections();
+    if (initialSelection != null)
+      categoryTableViewer.setSelection(new StructuredSelection(initialSelection));
+
+    Label elementLabel = new Label(categoryComposite, SWT.LEFT);
+    elementLabel.setText("Available components to Add:");
+
+    new Label(categoryComposite, SWT.NONE);
+
+    elementTableViewer = new TableViewer(categoryComposite, getTableStyle());
+    elementTableViewer.setContentProvider(new ElementContentProvider());
+    elementTableViewer.setLabelProvider(new ElementLabelProvider());
+    elementTableViewer.setInput(null);
+    elementTableViewer.addDoubleClickListener(new IDoubleClickListener()
+    {
+      public void doubleClick(DoubleClickEvent event)
+      {
+        okPressed();
+      }
+    });
+    
+    gd = new GridData(GridData.FILL_BOTH);
+    table = elementTableViewer.getTable();
+    table.setLayoutData(gd);
+    table.setFont(container.getFont());
+
+    elementTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+		public void selectionChanged(SelectionChangedEvent event) {
+	          getButton(IDialogConstants.OK_ID).setEnabled(true);			
+	    }        	  
+      });
+    
+    return parent;
+  }
+
+  public void create()
+  {
+    super.create();
+    if (categoryTableViewer.getTable().getItemCount() > 0)
+    {
+      categoryTableViewer.getTable().select(0);
+      categoryTableViewer.setSelection(new StructuredSelection(categoryTableViewer.getElementAt(0)));
+    }
+    
+    // Setup the list of category names that already exist
+	existingNames = new ArrayList();
+	TableItem[] categoryNames = categoryTableViewer.getTable().getItems();
+	for (int i = 0; i < categoryNames.length; i++ ){
+		existingNames.add(categoryNames[i].getText());
+	}
+	
+	getButton(IDialogConstants.OK_ID).setEnabled(false);
+  }
+
+  protected Point getInitialSize()
+  {
+    return getShell().computeSize(400, 300);
+  }
+
+  /**
+   * Return the style flags for the table viewer.
+   * 
+   * @return int
+   */
+  protected int getTableStyle()
+  {
+    return SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER;
+  }
+
+  /*
+   * Overrides method from Dialog
+   */
+  protected void okPressed()
+  {
+    // Build a list of selected children.
+    getShell().setCursor(new Cursor(getShell().getDisplay(), SWT.CURSOR_WAIT));
+    IStructuredSelection elementSelection = (IStructuredSelection) elementTableViewer.getSelection();
+    IStructuredSelection categorySelection = (IStructuredSelection) categoryTableViewer.getSelection();
+    List result = new ArrayList();
+    result.add(elementSelection.getFirstElement());
+    result.add(categorySelection.getFirstElement());
+    if (elementSelection.getFirstElement() != null)
+    {
+      setResult(result);
+    }
+    else
+    {
+      setResult(null);
+    }
+    super.okPressed();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+   */
+  public void widgetSelected(SelectionEvent e)
+  {
+    if (e.widget == addButton)
+    {
+    	AddNewCategoryDialog addNewCategoryDialog
+    		= new AddNewCategoryDialog(getShell());
+    	
+    	addNewCategoryDialog.setUnavailableCategoryNames(existingNames);
+    	
+    	if ( addNewCategoryDialog.open() == Window.OK ){
+    		String location = addNewCategoryDialog.getAppInfoSchemaLocation();
+    		
+    		SpecificationForAppinfoSchema schemaSpec = new SpecificationForAppinfoSchema();
+    		schemaSpec.setDisplayName(addNewCategoryDialog.getNewCategoryName());
+    		schemaSpec.setLocation(location);
+    		
+    		fInput.add(schemaSpec);
+    		existingNames.add(schemaSpec.getDisplayName());
+    		
+    		// refresh without updating labels of existing TableItems    		
+    		categoryTableViewer.refresh(false);
+    		
+    		categoryTableViewer.setSelection(new StructuredSelection(schemaSpec));
+    		getButton(IDialogConstants.OK_ID).setEnabled(false);
+    	}
+    }
+    else if (e.widget == removeButton)
+    {
+    	TableItem[] selections = categoryTableViewer.getTable().getSelection();
+    	for (int i =0; i < selections.length; i++){
+    		fInput.remove(selections[i].getData() );
+    	}
+    	categoryTableViewer.refresh(false);
+
+    	elementTableViewer.setInput(null);
+    	elementTableViewer.refresh();
+    	
+        // TODO auto select either the prev category, the next category or the first category in the Table
+    	getButton(IDialogConstants.OK_ID).setEnabled(false);
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
+   */
+  public void widgetDefaultSelected(SelectionEvent event)
+  {
+
+  }
+
+  public void selectionChanged(SelectionChangedEvent event)
+  {
+    if (event.getSource() == categoryTableViewer)
+    {
+      ISelection selection = event.getSelection();
+      if (selection instanceof StructuredSelection)
+      {
+        Object obj = ((StructuredSelection) selection).getFirstElement();
+        if (obj instanceof SpecificationForAppinfoSchema)
+        {
+          SpecificationForAppinfoSchema properties = (SpecificationForAppinfoSchema) obj;
+
+          XSDSchema xsdSchema = getASISchemaModel(properties);
+
+          if (xsdSchema == null){
+        	  // TODO display an error Dialog telling the user that
+        	  // her selected schema file is invalid. 
+        	  return;
+          }
+          
+          List allItems = buildInput(xsdSchema);
+          elementTableViewer.setInput(allItems);
+          getButton(IDialogConstants.OK_ID).setEnabled(false);
+        }
+      }
+    }
+  }
+  private List buildInput(XSDSchema xsdSchema)
+  {
+    List elements = xsdSchema.getElementDeclarations();
+    List attributes = xsdSchema.getAttributeDeclarations();
+    String targetNamespace = xsdSchema.getTargetNamespace();
+
+    // For safety purpose: We don't append 'attributes' to 'elements'
+    // ArrayStoreException(or similar one) may occur
+    List allItems = new ArrayList(attributes.size() + elements.size());
+    {
+      // getElementDeclarations returns a lot of elements from import
+      // statement, we
+      // only add non-imported elements here. (trung)
+      for (int i = 0; i < elements.size(); i++)
+      {
+        XSDElementDeclaration currentElement = (XSDElementDeclaration) elements.get(i);
+        if (currentElement.getTargetNamespace().equals(targetNamespace))
+          allItems.add(currentElement);
+      }
+      // getAttributeDeclarations also returns a lot of elements from
+      // import statement, we
+      // only add non-imported elements here. (trung)
+      for (int i = 0; i < attributes.size(); i++)
+      {
+        XSDAttributeDeclaration currentAttribute = (XSDAttributeDeclaration) attributes.get(i);
+        if (currentAttribute.isGlobal() && currentAttribute.getTargetNamespace().equals(targetNamespace))
+          allItems.add(currentAttribute);
+      }
+    }
+    return allItems;
+  }
+
+  
+  private XSDSchema getASISchemaModel(SpecificationForAppinfoSchema appInfoSchemaSpec)
+  {
+    XSDSchema xsdSchema = XSDImpl.buildXSDModel(appInfoSchemaSpec.getLocation());
+    
+    // now that the .xsd file is read, we can retrieve the namespace of this xsd file
+    // and set the namespace for 'properties'
+    if ( appInfoSchemaSpec.getNamespaceURI() == null){
+    	appInfoSchemaSpec.setNamespaceURI( xsdSchema.getTargetNamespace());
+    }
+    
+    return xsdSchema;
+  }
+
+  static class CategoryContentProvider implements IStructuredContentProvider
+  {
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+     */
+    public Object[] getElements(Object inputElement)
+    {    
+      SpecificationForAppinfoSchema[] appInfoSchemaSpecs = null;
+      try
+      {
+        List inputList = (List) inputElement;
+        appInfoSchemaSpecs = (SpecificationForAppinfoSchema[]) inputList.toArray(new SpecificationForAppinfoSchema[0]);
+      }
+      catch (Exception e)
+      {
+        e.printStackTrace();
+      }
+      return appInfoSchemaSpecs;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+     */
+    public void dispose()
+    {
+      // Do nothing
+
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+     *      java.lang.Object, java.lang.Object)
+     */
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+    {
+      // Do nothing
+
+    }
+  }
+
+  static class CategoryLabelProvider extends LabelProvider
+  {
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+     */
+    public Image getImage(Object element)
+    {
+      return XSDEditorPlugin.getXSDImage("icons/appinfo_category.gif");
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+     */
+    public String getText(Object element)
+    {
+      if (element instanceof SpecificationForAppinfoSchema)
+        return ((SpecificationForAppinfoSchema) element).getDisplayName();
+
+      return super.getText(element);
+    }
+  }
+
+  static class ElementContentProvider implements IStructuredContentProvider
+  {
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+     */
+    public Object[] getElements(Object inputElement)
+    {
+      if (inputElement instanceof List)
+      {
+        return ((List) inputElement).toArray();
+      }
+      return null;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+     */
+    public void dispose()
+    {
+      // Do nothing
+
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+     *      java.lang.Object, java.lang.Object)
+     */
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+    {
+      // Do nothing
+
+    }
+  }
+
+  class ElementLabelProvider extends LabelProvider
+  {
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+     */
+    public Image getImage(Object element)
+    {
+      if ( element instanceof XSDElementDeclaration){
+    	  
+    	  // Workaround trick: (trung) we create a temporary Dom element and put it in the label provider
+    	  // to get the image.
+    	  String namespace = ((XSDElementDeclaration) element).getSchema().getTargetNamespace();
+    	  String name = ((XSDElementDeclaration) element).getName();
+    	  Element tempElement = tempDoc.createElementNS(namespace, name);
+    	  ILabelProvider lp = registry.getLabelProvider(tempElement);
+    	  if (lp != null){
+    		  Image img = lp.getImage(tempElement);
+    		  
+    		  if (img != null){
+    			  return img;
+    		  }
+    	  }
+    	  return DEFAULT_ELEMENT_ICON;
+      }
+      else if ( element instanceof XSDAttributeDeclaration){
+    	  return DEFAULT_ATTRIBUTE_ICON;
+      }
+      return null;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+     */
+    public String getText(Object element)
+    {
+      if (element instanceof XSDElementDeclaration)
+        return ((XSDElementDeclaration) element).getName();
+      if (element instanceof XSDAttributeDeclaration )
+        return ((XSDAttributeDeclaration) element).getName();
+      return super.getText(element);
+    }
+  }
+
+  public boolean close()
+  {
+    return super.close();
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddNewCategoryDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddNewCategoryDialog.java
new file mode 100644
index 0000000..4b7787e
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/AddNewCategoryDialog.java
@@ -0,0 +1,304 @@
+/*******************************************************************************
+ * Copyright (c) 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.xsd.ui.common.properties.sections.appinfo;
+
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.wst.common.ui.internal.dialogs.SelectSingleFileDialog;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+
+public class AddNewCategoryDialog extends Dialog
+{
+
+  private static final String SCHEMA_LABEL = "Schema:";
+  private static final String DIALOG_TITLE = "Add Category";
+  private static final String NAME_LABEL = "Name:";
+  private MenuManager browseMenu;
+  private Label name;
+  private Text nameText;
+  private Label schema;
+  private CLabel schemaDisplayer;
+  private ToolBar browseToolBar;
+  private ToolItem browseItem;
+
+  private List invalidNames;
+  private String appInfoSchemaLocation;
+  private String categoryName;
+  private CLabel errDisplayer;
+
+  private boolean isCategoryNameValid;
+
+  public AddNewCategoryDialog(Shell parentShell)
+  {
+    super(parentShell);
+  }
+
+  /**
+   * receive a List of names which have already been added to the category list
+   * 
+   * @param unavailNames
+   *          Array of unvailable names
+   */
+  public void setUnavailableCategoryNames(List unavailNames)
+  {
+    invalidNames = unavailNames;
+  }
+
+  // we initially disable the Ok button
+  protected Control createButtonBar(Composite parent)
+  {
+    Control result = super.createButtonBar(parent);
+    getButton(IDialogConstants.OK_ID).setEnabled(false);
+    return result;
+  }
+
+  protected Control createDialogArea(Composite parent)
+  {
+    getShell().setText(DIALOG_TITLE);
+
+    Composite mainComposite = (Composite) super.createDialogArea(parent);
+    GridLayout layout = new GridLayout(3, false);
+    layout.marginTop = 10;
+    mainComposite.setLayout(layout);
+    mainComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+    GridData data = new GridData();
+    data.widthHint = 400;
+
+    mainComposite.setLayoutData(data);
+
+    // Line 1, name
+    name = new Label(mainComposite, SWT.NONE);
+    name.setText(NAME_LABEL);
+
+    nameText = new Text(mainComposite, SWT.BORDER | SWT.SINGLE);
+    nameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+    Button hidden = new Button(mainComposite, SWT.NONE);
+    hidden.setVisible(false);
+
+    // Line 2, schema
+    schema = new Label(mainComposite, SWT.NONE);
+    schema.setText(SCHEMA_LABEL);
+
+    schemaDisplayer = new CLabel(mainComposite, SWT.BORDER | SWT.SINGLE);
+    schemaDisplayer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+    browseToolBar = new ToolBar(mainComposite, SWT.FLAT);
+    browseItem = new ToolItem(browseToolBar, SWT.NONE);
+    // TODO: Should be able to get the image from the XML plugin. Don't need
+    // to copy to XSDEditor icons folder like this.
+    browseItem.setImage(XSDEditorPlugin.getXSDImage("icons/appinfo_browse.gif"));
+
+    browseMenu = new MenuManager();
+
+    BrowseInWorkspaceAction browseInWorkspace = new BrowseInWorkspaceAction();
+    browseMenu.add(browseInWorkspace);
+
+    BrowseCatalogAction browseCatalog = new BrowseCatalogAction();
+    browseMenu.add(browseCatalog);
+
+    browseItem.addSelectionListener(new SelectionAdapter()
+    {
+      public void widgetSelected(SelectionEvent e)
+      {
+        Menu menu = browseMenu.createContextMenu(getShell());
+        Rectangle bounds = browseItem.getBounds();
+        Point topLeft = new Point(bounds.x, bounds.y + bounds.height);
+        topLeft = browseToolBar.toDisplay(topLeft);
+        menu.setLocation(topLeft.x, topLeft.y);
+        menu.setVisible(true);
+      }
+    });
+
+    // Composite errComp = new Composite(mainComposite, SWT.NONE);
+    // errComp.setBackground(org.eclipse.draw2d.ColorConstants.white);
+    // errComp.setLayout(new GridLayout());
+    errDisplayer = new CLabel(mainComposite, SWT.FLAT);
+    // errDisplayer.setText("abd");
+    GridData gd = new GridData(GridData.FILL_BOTH);
+    gd.grabExcessHorizontalSpace = true;
+    gd.horizontalSpan = 3;
+    errDisplayer.setLayoutData(gd);
+
+    // errComp.setLayoutData(gd);
+    // errDisplayer.setLayoutData(gd);
+    // errMsgContainer.setContent(errDisplayer);
+
+    nameText.addModifyListener(new ModifyListener()
+    {
+      // track the nameText and enable/disable the OK button accordingly
+      public void modifyText(ModifyEvent e)
+      {
+        categoryName = nameText.getText();
+
+        // name is in the invalid List
+        if (invalidNames != null)
+        {
+          if (invalidNames.contains(categoryName.trim()))
+          {
+            isCategoryNameValid = false;
+
+            getButton(IDialogConstants.OK_ID).setEnabled(false);
+            errDisplayer.setText("The name is already being used.");
+            errDisplayer.setImage(XSDEditorPlugin.getXSDImage("icons/error_st_obj.gif"));
+            return;
+          }
+        }
+        // name is empty string
+        if (categoryName.equals(""))
+        {
+          isCategoryNameValid = false;
+
+          getButton(IDialogConstants.OK_ID).setEnabled(false);
+          errDisplayer.setText("");
+          errDisplayer.setImage(null);
+          return;
+        }
+
+        /*
+         * Enable the Ok button if the location field AND the name field are not
+         * empty
+         */
+        if (!categoryName.equals(""))
+        {
+          isCategoryNameValid = true;
+          errDisplayer.setText("");
+          errDisplayer.setImage(null);
+        }
+        if (!appInfoSchemaLocation.equals(""))
+        {
+          getButton(IDialogConstants.OK_ID).setEnabled(true);
+        }
+      }
+    });
+
+    return parent;
+  }
+
+  protected void okPressed()
+  {
+    super.okPressed();
+  }
+
+  protected class BrowseInWorkspaceAction extends Action
+  {
+    private static final String XSD_FILE_EXTENSION = ".xsd";
+
+    public BrowseInWorkspaceAction()
+    {
+      super("Workspace");
+    }
+
+    public void run()
+    {
+      SelectSingleFileDialog dialog = new SelectSingleFileDialog(getShell(), null, true);
+      dialog.addFilterExtensions(new String[] { XSD_FILE_EXTENSION });
+      dialog.create();
+      dialog.setTitle("Select XSD file");
+      dialog.setMessage("Choose an XSD file containing schema for your extensible components");
+
+      if (dialog.open() == Window.OK)
+      {
+        IFile appInfoSchemaFile = dialog.getFile();
+        if (appInfoSchemaFile != null)
+        {
+          // remove leading slash from the value to avoid the
+          // whole leading slash ambiguity problem
+          String uri = appInfoSchemaFile.getFullPath().toString();
+          while (uri.startsWith("/") || uri.startsWith("\\")) { //$NON-NLS-1$ //$NON-NLS-2$
+            uri = uri.substring(1);
+          }
+          appInfoSchemaLocation = uri.toString();
+
+          appInfoSchemaLocation = "file://" + Platform.getLocation().toString() + "/" + appInfoSchemaLocation;
+          // TODO... be careful how we construct the location
+          // UNIX related issues here
+
+          schemaDisplayer.setImage(XSDEditorPlugin.getXSDImage("icons/XSDFile.gif"));
+          schemaDisplayer.setText(uri);
+
+          // Enable the OK button if we should..
+          if (isCategoryNameValid)
+          {
+            getButton(IDialogConstants.OK_ID).setEnabled(true);
+            errDisplayer.setText("");
+            errDisplayer.setImage(null);
+          }
+        }
+      }
+    }
+  }
+
+  protected class BrowseCatalogAction extends Action
+  {
+    public BrowseCatalogAction()
+    {
+      super("Catalog");
+    }
+
+    public void run()
+    {
+      SelectFromCatalogDialog dialog = new SelectFromCatalogDialog(getShell());
+      // dialog.open();
+      if (dialog.open() == Window.OK)
+      {
+        appInfoSchemaLocation = dialog.getCurrentSelectionLocation();
+
+        schemaDisplayer.setImage(XSDEditorPlugin.getXSDImage("icons/xmlcatalog_obj.gif"));
+        schemaDisplayer.setText(dialog.getCurrentSelectionNamespace());
+
+        // Enable the OK button if we should..
+        if (isCategoryNameValid && !appInfoSchemaLocation.equals(""))
+        {
+          getButton(IDialogConstants.OK_ID).setEnabled(true);
+          errDisplayer.setText("");
+          errDisplayer.setImage(null);
+        }
+      }
+    }
+  }
+
+  public String getNewCategoryName()
+  {
+    return categoryName.trim();
+  }
+
+  public String getAppInfoSchemaLocation()
+  {
+    return appInfoSchemaLocation;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationPropertiesRegistry.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationPropertiesRegistry.java
new file mode 100644
index 0000000..49682f2
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationPropertiesRegistry.java
@@ -0,0 +1,193 @@
+/*******************************************************************************
+ * Copyright (c) 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.xsd.ui.common.properties.sections.appinfo;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalog;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.INextCatalog;
+import org.w3c.dom.Element;
+
+public class ApplicationInformationPropertiesRegistry
+{
+  private static final String LOCATION_PREFIX = "platform:/plugin/";
+  public static final String DESCRIPTION = "description";
+  public static final String DISPLAYNAME = "displayName";
+  public static final String NAMESPACEURI = "namespaceURI";
+  public static final String XSDFILEURL = "xsdFileURL";
+  public static final String LABELPROVIDER = "labelProviderClass";
+
+  protected String extensionId;
+
+  HashMap propertyMap;
+  ArrayList nsURIProperties;
+  private ICatalog systemCatalog;
+
+  public ApplicationInformationPropertiesRegistry(String appinfo_extensionid)
+  {
+    extensionId = appinfo_extensionid;
+  }
+
+  public List getAllApplicationSpecificSchemaProperties()
+  {
+    // If we read the registry, then let's not do it again.
+    if (nsURIProperties != null)
+    {
+      return nsURIProperties;
+    }
+    IConfigurationElement[] asiPropertiesList = Platform.getExtensionRegistry().getConfigurationElementsFor(extensionId);
+
+    nsURIProperties = new ArrayList();
+    propertyMap = new HashMap();
+
+    boolean hasASIProperties = (asiPropertiesList != null) && (asiPropertiesList.length > 0);
+
+    if (hasASIProperties)
+    {
+      for (int i = 0; i < asiPropertiesList.length; i++)
+      {
+        IConfigurationElement asiPropertiesElement = asiPropertiesList[i];
+        String description = asiPropertiesElement.getAttribute(DESCRIPTION);
+        String displayName = asiPropertiesElement.getAttribute(DISPLAYNAME);
+        String namespaceURI = asiPropertiesElement.getAttribute(NAMESPACEURI);
+        String xsdFileURL = asiPropertiesElement.getAttribute(XSDFILEURL);
+        String labelProviderClass = asiPropertiesElement.getAttribute(LABELPROVIDER);
+
+        if (displayName == null)
+        {
+          // If there is no display name, force the user
+          // to manually create a name. Therefore, we ignore entry without
+          // a display name.
+          // TODO (trung) still in testing phase,
+          // remove the comment for "continue;" when needed
+          continue;
+        }
+
+        if (xsdFileURL == null)
+        {
+          xsdFileURL = locateFileUsingCatalog(namespaceURI);
+        }
+
+        SpecificationForAppinfoSchema asiAppinfoSpec = createEntry();
+        if (displayName == null)
+          displayName = namespaceURI;
+        asiAppinfoSpec.setDescription(description);
+        asiAppinfoSpec.setDisplayName(displayName);
+        asiAppinfoSpec.setNamespaceURI(namespaceURI);
+
+        if (labelProviderClass != null)
+        {
+          String pluginId = asiPropertiesElement.getDeclaringExtension().getContributor().getName();
+          ILabelProvider labelProvider = null;
+          try
+          {
+            Class theClass = Platform.getBundle(pluginId).loadClass(labelProviderClass);
+            if (theClass != null)
+            {
+              labelProvider = (ILabelProvider) theClass.newInstance();
+              if (labelProvider != null)
+              {
+                propertyMap.put(namespaceURI, labelProvider);
+                asiAppinfoSpec.setLabelProvider(labelProvider);
+              }
+            }
+          }
+          catch (Exception e)
+          {
+
+          }
+        }
+        String plugin = asiPropertiesElement.getDeclaringExtension().getContributor().getName();
+        asiAppinfoSpec.setLocation(LOCATION_PREFIX + plugin + "/" + xsdFileURL);
+
+        nsURIProperties.add(asiAppinfoSpec);
+      }
+
+    }
+    return nsURIProperties;
+  }
+
+  public ILabelProvider getLabelProvider(Element element)
+  {
+    String uri = element.getNamespaceURI();
+    if (uri == null)
+      uri = "";
+
+    // Didn't retrieve the config elements yet.
+    if (propertyMap == null)
+    {
+      getAllApplicationSpecificSchemaProperties();
+    }
+
+    Object object = propertyMap.get(uri);
+    if (object instanceof ILabelProvider)
+    {
+      return (ILabelProvider) object;
+    }
+    return null;
+  }
+
+  public SpecificationForAppinfoSchema createEntry()
+  {
+    return new SpecificationForAppinfoSchema();
+  }
+
+  /**
+   * Returns the String location for the schema with the given namespaceURI by
+   * looking at the XML catalog. We look only in the plugin specified entries of
+   * the catalog.
+   * 
+   * @param namespaceURI
+   * @return String representing the location of the schema.
+   */
+  private String locateFileUsingCatalog(String namespaceURI)
+  {
+    retrieveCatalog();
+
+    ICatalogEntry[] entries = systemCatalog.getCatalogEntries();
+    for (int i = 0; i < entries.length; i++)
+    {
+      if (entries[i].getKey().equals(namespaceURI))
+        return entries[i].getURI();
+    }
+
+    return null;
+  }
+
+  private void retrieveCatalog()
+  {
+    if (systemCatalog != null)
+      return;
+
+    ICatalog defaultCatalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
+    INextCatalog[] nextCatalogs = defaultCatalog.getNextCatalogs();
+    for (int i = 0; i < nextCatalogs.length; i++)
+    {
+      INextCatalog catalog = nextCatalogs[i];
+      ICatalog referencedCatalog = catalog.getReferencedCatalog();
+      if (referencedCatalog != null)
+      {
+        if (XMLCorePlugin.SYSTEM_CATALOG_ID.equals(referencedCatalog.getId()))
+        {
+          systemCatalog = referencedCatalog;
+        }
+      }
+    }
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationTableTreeViewer.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationTableTreeViewer.java
new file mode 100644
index 0000000..6d4fbfb
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/ApplicationInformationTableTreeViewer.java
@@ -0,0 +1,336 @@
+/*******************************************************************************
+ * Copyright (c) 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.xsd.ui.common.properties.sections.appinfo;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.wst.xml.core.internal.document.ElementImpl;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.ui.internal.tabletree.TreeContentHelper;
+import org.eclipse.wst.xml.ui.internal.tabletree.XMLTableTreeContentProvider;
+import org.eclipse.wst.xml.ui.internal.tabletree.XMLTableTreeViewer;
+import org.eclipse.wst.xml.ui.internal.tabletree.XMLTreeExtension;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.common.properties.sections.XSDActionManager;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+
+public class ApplicationInformationTableTreeViewer extends XMLTableTreeViewer
+{
+  private CommandStack commandStack;
+  
+  public ApplicationInformationTableTreeViewer(Composite parent)
+  {
+    super(parent);
+
+    getTree().setLinesVisible(true);
+    
+    treeExtension.setCellModifier(null);
+    getTree().removePaintListener(treeExtension);
+    treeExtension = new MyXMLTreeExtension(getTree());
+    
+    AppInfoContentProvider provider = new AppInfoContentProvider();
+    setContentProvider(provider);
+    setLabelProvider(provider);
+  }
+  
+  public void setCommandStack(CommandStack commandStack) {
+    this.commandStack = commandStack;
+  }
+  
+  Element asiElement;
+  
+  public void setASIElement(Element asiElement)
+  {
+    this.asiElement = asiElement;
+  }
+
+  class AppInfoContentProvider extends XMLTableTreeContentProvider
+  {
+    MyTreeContentHelper treeContentHelper;
+    public AppInfoContentProvider()
+    {
+      treeContentHelper = new MyTreeContentHelper();
+    }
+
+    public Object[] getChildren(Object element)
+    {
+      if (element instanceof List)
+      {
+        return ((List) element).toArray();
+      }
+      else if (element instanceof Element)
+      {
+
+      }
+      return treeContentHelper.getChildren(element);
+      
+      //return super.getChildren(element);
+    }
+
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+    {
+      if (oldInput instanceof Element)
+        oldInput = ((Element) oldInput).getOwnerDocument();
+
+      if (newInput instanceof Element)
+        newInput = ((Element) newInput).getOwnerDocument();
+
+      super.inputChanged(viewer, oldInput, newInput);
+
+    }
+  }
+
+  class ASIActionMenuListener implements IMenuListener
+  {
+    public void menuAboutToShow(IMenuManager menuManager)
+    {
+      // used to disable NodeSelection listening while running NodeAction
+      // ASIActionManager nodeActionManager = new ASIActionManager(fModel,
+      // ASITableTreeViewer.this);
+      // nodeActionManager.setCommandStack(commandStack);
+      IDOMModel model = null;
+      try
+      {
+        if (asiElement instanceof ElementImpl)
+        {
+          model = ((ElementImpl)asiElement).getModel();
+        }
+      }
+      catch (Exception e)
+      {
+        e.printStackTrace();
+      }
+      
+      // if the model is not the XML model, then we can't support the table viewer.
+      if (model != null)
+      {
+        XSDActionManager actionManager = new XSDActionManager(model, ApplicationInformationTableTreeViewer.this);
+        actionManager.setCommandStack(commandStack);
+        
+        // add general actions
+        ActionRegistry registry = (ActionRegistry) XSDEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor().getAdapter(ActionRegistry.class);
+
+        if (registry != null) // an editor may not use the registry
+        {
+          // add undo, redo, revert
+          IAction undo = registry.getAction(ActionFactory.UNDO.getId());
+          if (undo != null)
+          {
+            menuManager.add(new Separator());
+            menuManager.add(undo);
+          }
+          IAction redo = registry.getAction(ActionFactory.REDO.getId());
+          if (redo != null)
+          {
+            menuManager.add(redo);
+          }
+          menuManager.add(new Separator());
+        }
+        actionManager.fillContextMenu(menuManager, getSelection());
+      }
+    }
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see com.ibm.xmleditor.internal.tabletree.XMLTableTreeViewer#createContextMenu()
+   */
+  protected void createContextMenu()
+  {
+    MenuManager contextMenu = new MenuManager("#PopUp"); //$NON-NLS-1$
+    contextMenu.add(new Separator("additions")); //$NON-NLS-1$
+    contextMenu.setRemoveAllWhenShown(true);
+
+    // This is the line we have to modify
+    contextMenu.addMenuListener(new ASIActionMenuListener());
+    Menu menu = contextMenu.createContextMenu(getControl());
+    getControl().setMenu(menu);
+  }
+
+  
+  
+  
+  
+  static String EMPTY_STRING = "";  //$NON-NLS-1$
+  static String XML_NS_STRING = "xmlns";  //$NON-NLS-1$
+  static String APPINFO = "appinfo"; //$NON-NLS-1$
+  
+  public class MyTreeContentHelper extends TreeContentHelper {
+    public void setNodeValue(Node node, String value) {
+      String oldValue = getNodeValue(node);
+      // The command stack was being populated with changes like an empty string to a null value
+      // So we weed those out as well
+//      if (value != null && !value.equals(oldValue) && (!(value.equals(EMPTY_STRING) && oldValue ==null))) {
+//          ModifyNodeCommand command = new ModifyNodeCommand(node, value, this);
+//          commandStack.execute(command);
+//      }
+    }
+    
+    // TODO - Remove this method when Bugzilla 6738 is fixed
+    public List getElementTextContent(Element element) {
+          List result = null;
+          if (!element.hasAttributes()) {
+             Node node = element.getFirstChild();
+
+             // TODO - Hack to workaround problem that a text cell editor appears on the first
+             // click and not the enumerated cell editor
+             if (node == null) {
+                result = new Vector();
+                Text txt = element.getOwnerDocument().createTextNode("");
+                element.appendChild(txt);
+                result.add(txt);
+             }
+             // end of workaround
+
+             for (; node != null; node = node.getNextSibling()) {
+                if (node.getNodeType() == Node.TEXT_NODE || node.getNodeType() == Node.ENTITY_REFERENCE_NODE) {
+                   if (result == null) {
+                      result = new Vector();
+                   }
+                   result.add(node);
+                } else {
+                   result = null;
+                   break;
+                }
+             }
+          }
+          return result;
+       }    
+    
+    public void executeSetNodeValue(Node node, String value) {
+      super.setNodeValue(node, value);
+    }
+    
+    public boolean isEditable(Node node) {
+      int nodeType = node.getNodeType();
+      boolean result = false;
+      switch (nodeType) {
+        case Node.ATTRIBUTE_NODE :
+        {
+          // Prevent the editing of the namespace attribute
+          Attr attr = (Attr)node;
+          result = !attr.getName().startsWith(XML_NS_STRING);
+          break;
+        }
+        default:
+        {
+          result = super.isEditable(node);
+        }
+      }
+      return result;
+    } 
+    
+    // Need to override since I don't want to see the source attribute
+    public Object[] getChildren(Object element) {
+      Object[] result = null;
+
+      if (element instanceof List) {
+        result = ((List)element).toArray();
+      } else if (element instanceof Node) {
+        Node node = (Node) element;
+        List list = new ArrayList();
+        boolean textContentOnly = true;
+
+        // Don't want to see any attributes for the input element
+        if (!(element instanceof Element && (element == getInput()))) {
+          NamedNodeMap map = node.getAttributes();
+          if (map != null) {
+            int length = map.getLength();
+            for (int i = 0; i < length; i++) {
+              list.add(map.item(i));
+              textContentOnly = false;
+            }
+          }
+        }
+
+        Node prevIncludedNode = null;
+        for (Node childNode = node.getFirstChild(); childNode != null; childNode = childNode.getNextSibling()) {
+          int childNodeType = childNode.getNodeType();
+          boolean includeNode = true;
+
+          if (includeNode && hasStyleFlag(HIDE_WHITE_SPACE_TEXT_NODES)) {
+            if (isIgnorableText(childNode)) {
+              // filter out the ignorable text node
+              includeNode = false;
+            }
+          }
+
+          if (includeNode && hasStyleFlag(COMBINE_ADJACENT_TEXT_AND_ENTITY_REFERENCES)) {
+            if (isTextOrEntityReferenceNode(childNode) && prevIncludedNode != null && isTextOrEntityReferenceNode(prevIncludedNode)) {
+              // we only show the first of a list of adjacent text or entity reference node in the tree
+              // so we filter out this subsequent one
+              includeNode = false;
+            }
+          }
+
+          if (hasStyleFlag(HIDE_ELEMENT_CHILD_TEXT_NODES)) {
+            if (childNodeType != Node.TEXT_NODE && childNodeType != Node.ENTITY_REFERENCE_NODE) {
+              textContentOnly = false;
+            }
+          }
+
+          if (includeNode) {
+            list.add(childNode);
+            prevIncludedNode = childNode;
+          }
+        }
+
+        if (hasStyleFlag(HIDE_ELEMENT_CHILD_TEXT_NODES) && textContentOnly) {
+          result = new Object[0];
+        }
+        else {
+          result = list.toArray();
+        }
+      }
+      return result;
+    }
+    
+  } 
+  
+  class MyXMLTreeExtension extends XMLTreeExtension {
+    
+    public MyXMLTreeExtension(Tree tree) {
+      super(tree);
+      this.treeContentHelper = new MyTreeContentHelper();
+      this.columnPosition = 200;
+//      this.setRefreshAll(true);
+    }
+    
+    
+    // Do not wish to display any of the helper text
+    public String getElementValueHelper(Element element) {
+      return EMPTY_STRING; 
+    } 
+        
+      
+  }
+  
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SelectFromCatalogDialog.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SelectFromCatalogDialog.java
new file mode 100644
index 0000000..2baa780
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SelectFromCatalogDialog.java
@@ -0,0 +1,212 @@
+/*******************************************************************************
+ * Copyright (c) 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.xsd.ui.common.properties.sections.appinfo;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
+import org.eclipse.wst.xml.core.internal.catalog.CatalogSet;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalog;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry;
+import org.eclipse.wst.xml.core.internal.catalog.provisional.INextCatalog;
+import org.eclipse.wst.xml.ui.internal.catalog.XMLCatalogEntriesView;
+import org.eclipse.wst.xml.ui.internal.catalog.XMLCatalogEntryDetailsView;
+import org.eclipse.wst.xml.ui.internal.catalog.XMLCatalogMessages;
+import org.eclipse.wst.xml.ui.internal.catalog.XMLCatalogTreeViewer;
+
+public class SelectFromCatalogDialog extends Dialog
+{
+
+  private ICatalog workingUserCatalog;
+  private ICatalog userCatalog;
+  private ICatalog defaultCatalog;
+  private XMLCatalogEntriesView catalogEntriesView;
+  private ICatalog systemCatalog;
+
+  private String currentSelectionLocation;
+  private String currentSelectionNamespace;
+
+  public SelectFromCatalogDialog(Shell parentShell)
+  {
+    super(parentShell);
+
+    defaultCatalog = XMLCorePlugin.getDefault().getDefaultXMLCatalog();
+    INextCatalog[] nextCatalogs = defaultCatalog.getNextCatalogs();
+    for (int i = 0; i < nextCatalogs.length; i++)
+    {
+      INextCatalog catalog = nextCatalogs[i];
+      ICatalog referencedCatalog = catalog.getReferencedCatalog();
+      if (referencedCatalog != null)
+      {
+        if (XMLCorePlugin.SYSTEM_CATALOG_ID.equals(referencedCatalog.getId()))
+        {
+          systemCatalog = referencedCatalog;
+        }
+        else if (XMLCorePlugin.USER_CATALOG_ID.equals(referencedCatalog.getId()))
+        {
+          userCatalog = referencedCatalog;
+        }
+      }
+    }
+  }
+
+  protected Control createDialogArea(Composite parent)
+  {
+    // we create a working copy of the 'User Settings' for the Catalog
+    // that we can modify
+    CatalogSet tempCatalogSet = new CatalogSet();
+    workingUserCatalog = tempCatalogSet.lookupOrCreateCatalog("working", ""); //$NON-NLS-1$ //$NON-NLS-2$
+
+    // TODO: add entries from the nested catalogs as well
+    workingUserCatalog.addEntriesFromCatalog(userCatalog);
+
+    Composite composite = new Composite(parent, SWT.NULL);
+    composite.setLayout(new GridLayout());
+    GridData gridData = new GridData(GridData.FILL_BOTH);
+    gridData.heightHint = 500;
+    composite.setLayoutData(gridData);
+    createCatalogEntriesView(composite);
+    createCatalogDetailsView(composite);
+
+    return composite;
+  }
+
+  protected void createCatalogEntriesView(Composite parent)
+  {
+    Group group = new Group(parent, SWT.NONE);
+    group.setLayout(new GridLayout());
+    GridData gridData = new GridData(GridData.FILL_BOTH);
+    gridData.widthHint = 370;
+    group.setLayoutData(gridData);
+    group.setText(XMLCatalogMessages.UI_LABEL_USER_ENTRIES);
+    group.setToolTipText(XMLCatalogMessages.UI_LABEL_USER_ENTRIES_TOOL_TIP);
+
+    /*
+     * create a subclass of XMLCatalogEntriesView which suppresses - the
+     * creation of 'Add', 'Edit', 'Delete' buttons - any method involving the
+     * above buttons
+     */
+    catalogEntriesView = new XMLCatalogEntriesView(group, workingUserCatalog, systemCatalog)
+    {
+      protected void createButtons(Composite parent)
+      {
+      }
+
+      protected void updateWidgetEnabledState()
+      {
+      }
+
+    };
+
+    // Only XML Schema entry is selectable
+    catalogEntriesView.setLayoutData(gridData);
+    XMLCatalogTreeViewer catalogTreeViewer = ((XMLCatalogTreeViewer) catalogEntriesView.getViewer());
+    catalogTreeViewer.resetFilters();
+
+    catalogTreeViewer.addFilter(new XMLCatalogTableViewerFilter(new String[] { ".xsd" }));
+  }
+
+  // Bug in the filter of the XML plugin, have to give a correct version here
+  // TODO: Waiting for the fix to be commited to XML plugin and
+  // be used by constellation
+  private class XMLCatalogTableViewerFilter extends ViewerFilter
+  {
+    private static final String W3_XMLSCHEMA_NAMESPACE = "http://www.w3.org/2001/";
+    protected String[] extensions;
+
+    public XMLCatalogTableViewerFilter(String[] extensions1)
+    {
+      this.extensions = extensions1;
+    }
+
+    public boolean isFilterProperty(Object element, Object property)
+    {
+      return false;
+    }
+
+    public boolean select(Viewer viewer, Object parent, Object element)
+    {
+      boolean result = false;
+      if (element instanceof ICatalogEntry)
+      {
+        ICatalogEntry catalogEntry = (ICatalogEntry) element;
+        for (int i = 0; i < extensions.length; i++)
+        {
+          // if the extension is correct and the namespace indicates
+          // that this entry is not the W3 XML Schema
+          if (catalogEntry.getURI().endsWith(extensions[i]) && !catalogEntry.getKey().startsWith(W3_XMLSCHEMA_NAMESPACE))
+          {
+            result = true;
+            break;
+          }
+        }
+      }
+      else if (element.equals(XMLCatalogTreeViewer.PLUGIN_SPECIFIED_ENTRIES_OBJECT) || element.equals(XMLCatalogTreeViewer.USER_SPECIFIED_ENTRIES_OBJECT))
+      {
+        return true;
+      }
+      return result;
+    }
+  }
+
+  protected void createCatalogDetailsView(Composite parent)
+  {
+    Group detailsGroup = new Group(parent, SWT.NONE);
+    detailsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+    detailsGroup.setLayout(new GridLayout());
+    detailsGroup.setText(XMLCatalogMessages.UI_LABEL_DETAILS);
+    final XMLCatalogEntryDetailsView detailsView = new XMLCatalogEntryDetailsView(detailsGroup);
+    ISelectionChangedListener listener = new ISelectionChangedListener()
+    {
+      public void selectionChanged(SelectionChangedEvent event)
+      {
+        ISelection selection = event.getSelection();
+        Object selectedObject = (selection instanceof IStructuredSelection) ? ((IStructuredSelection) selection).getFirstElement() : null;
+        if (selectedObject instanceof ICatalogEntry)
+        {
+          ICatalogEntry entry = (ICatalogEntry) selectedObject;
+          detailsView.setCatalogElement(entry);
+          currentSelectionLocation = entry.getURI();
+          currentSelectionNamespace = entry.getKey();
+        }
+        else
+        {
+          detailsView.setCatalogElement((ICatalogEntry) null);
+          currentSelectionLocation = "";
+          currentSelectionNamespace = "";
+        }
+      }
+    };
+    catalogEntriesView.getViewer().addSelectionChangedListener(listener);
+  }
+
+  public String getCurrentSelectionLocation()
+  {
+    return currentSelectionLocation;
+  }
+
+  public String getCurrentSelectionNamespace()
+  {
+    return currentSelectionNamespace;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SpecificationForAppinfoSchema.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SpecificationForAppinfoSchema.java
new file mode 100644
index 0000000..65d560d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/properties/sections/appinfo/SpecificationForAppinfoSchema.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 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.xsd.ui.common.properties.sections.appinfo;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+
+public class SpecificationForAppinfoSchema
+{
+  private String description;
+  private String displayName;
+  private String namespaceURI;
+  private String location;
+  private ILabelProvider labelProvider;
+
+  public SpecificationForAppinfoSchema()
+  {
+    super();
+  }
+
+  /**
+   * @return Returns the description.
+   */
+  public String getDescription()
+  {
+    return description;
+  }
+
+  /**
+   * @param description
+   *          The description to set.
+   */
+  public void setDescription(String description)
+  {
+    this.description = description;
+  }
+
+  /**
+   * @return Returns the displayName.
+   */
+  public String getDisplayName()
+  {
+    return displayName;
+  }
+
+  /**
+   * @param name
+   *          The displayName to set.
+   */
+  public void setDisplayName(String displayName)
+  {
+    this.displayName = displayName;
+  }
+
+  /**
+   * @return Returns the namespaceURI.
+   */
+  public String getNamespaceURI()
+  {
+    return namespaceURI;
+  }
+
+  /**
+   * @param namespaceURI
+   *          The namespaceURI to set.
+   */
+  public void setNamespaceURI(String namespaceURI)
+  {
+    this.namespaceURI = namespaceURI;
+  }
+
+  /**
+   * @return Returns the location of the xsd file.
+   */
+  public String getLocation()
+  {
+    return location;
+  }
+
+  /**
+   * @param location
+   *          The location to be set
+   */
+  public void setLocation(String location)
+  {
+    this.location = location;
+  }
+
+  public ILabelProvider getLabelProvider()
+  {
+    return labelProvider;
+  }
+
+  public void setLabelProvider(ILabelProvider labelProvider)
+  {
+    this.labelProvider = labelProvider;
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/util/XSDCommonUIUtils.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/util/XSDCommonUIUtils.java
new file mode 100644
index 0000000..088923d
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/common/util/XSDCommonUIUtils.java
@@ -0,0 +1,470 @@
+package org.eclipse.wst.xsd.ui.common.util;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
+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.xsd.XSDAnnotation;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeGroupDefinition;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeContent;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDFacet;
+import org.eclipse.xsd.XSDFactory;
+import org.eclipse.xsd.XSDFeature;
+import org.eclipse.xsd.XSDIdentityConstraintDefinition;
+import org.eclipse.xsd.XSDImport;
+import org.eclipse.xsd.XSDInclude;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDNotationDeclaration;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDRedefine;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDWildcard;
+import org.eclipse.xsd.XSDXPathDefinition;
+import org.eclipse.xsd.util.XSDConstants;
+import org.eclipse.xsd.util.XSDUtil;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class XSDCommonUIUtils
+{
+  public XSDCommonUIUtils()
+  {
+    super();
+  }
+
+  public static XSDAnnotation getInputXSDAnnotation(XSDConcreteComponent input, boolean createIfNotExist)
+  {
+    XSDAnnotation xsdAnnotation = null;
+    XSDFactory factory = XSDFactory.eINSTANCE;
+    if (input instanceof XSDAttributeDeclaration)
+    {
+      XSDAttributeDeclaration xsdComp = (XSDAttributeDeclaration) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDAttributeGroupDefinition)
+    {
+      XSDAttributeGroupDefinition xsdComp = (XSDAttributeGroupDefinition) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDElementDeclaration)
+    {
+      XSDElementDeclaration xsdComp = (XSDElementDeclaration) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDNotationDeclaration)
+    {
+      XSDNotationDeclaration xsdComp = (XSDNotationDeclaration) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDXPathDefinition)
+    {
+      XSDXPathDefinition xsdComp = (XSDXPathDefinition) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDModelGroup)
+    {
+      XSDModelGroup xsdComp = (XSDModelGroup) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDModelGroupDefinition)
+    {
+      XSDModelGroupDefinition xsdComp = (XSDModelGroupDefinition) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDIdentityConstraintDefinition)
+    {
+      XSDIdentityConstraintDefinition xsdComp = (XSDIdentityConstraintDefinition) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDWildcard)
+    {
+      XSDWildcard xsdComp = (XSDWildcard) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDSchema)
+    {
+      XSDSchema xsdComp = (XSDSchema) input;
+      List list = xsdComp.getAnnotations();
+      if (list.size() > 0)
+      {
+        xsdAnnotation = (XSDAnnotation) list.get(0);
+      }
+      else
+      {
+        if (createIfNotExist && xsdAnnotation == null)
+        {
+          xsdAnnotation = factory.createXSDAnnotation();
+          if (xsdComp.getContents() != null)
+          {
+            xsdComp.getContents().add(0, xsdAnnotation);
+          }
+        }
+      }
+      return xsdAnnotation;
+    }
+    else if (input instanceof XSDFacet)
+    {
+      XSDFacet xsdComp = (XSDFacet) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDTypeDefinition)
+    {
+      XSDTypeDefinition xsdComp = (XSDTypeDefinition) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDInclude)
+    {
+      XSDInclude xsdComp = (XSDInclude) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDImport)
+    {
+      XSDImport xsdComp = (XSDImport) input;
+      xsdAnnotation = xsdComp.getAnnotation();
+      if (createIfNotExist && xsdAnnotation == null)
+      {
+        xsdAnnotation = factory.createXSDAnnotation();
+        xsdComp.setAnnotation(xsdAnnotation);
+      }
+    }
+    else if (input instanceof XSDRedefine)
+    {
+      XSDRedefine xsdComp = (XSDRedefine) input;
+      List list = xsdComp.getAnnotations();
+      if (list.size() > 0)
+      {
+        xsdAnnotation = (XSDAnnotation) list.get(0);
+      }
+      else
+      {
+        if (createIfNotExist && xsdAnnotation == null)
+        {
+          // ?
+        }
+      }
+      return xsdAnnotation;
+    }
+    else if (input instanceof XSDAnnotation)
+    {
+      xsdAnnotation = (XSDAnnotation) input;
+    }
+
+    if (createIfNotExist)
+    {
+      formatAnnotation(xsdAnnotation);
+    }
+
+    return xsdAnnotation;
+  }
+
+  private static void formatAnnotation(XSDAnnotation annotation)
+  {
+    Element element = annotation.getElement();
+    formatChild(element);
+  }
+
+  public static void formatChild(Node 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 static String createUniqueElementName(String prefix, List elements)
+  {
+    ArrayList usedNames = new ArrayList();
+    for (Iterator i = elements.iterator(); i.hasNext();)
+    {
+      usedNames.add(getDisplayName((XSDNamedComponent) i.next()));
+    }
+
+    int i = 1;
+    String testName = prefix + i++;
+    while (usedNames.contains(testName))
+    {
+      testName = prefix + i++;
+    }
+    return testName;
+  }
+
+  public static String getDisplayName(XSDNamedComponent component)
+  {
+    if (component instanceof XSDTypeDefinition)
+      return getDisplayNameFromXSDType((XSDTypeDefinition) component);
+
+    if (component instanceof XSDFeature)
+    {
+      XSDFeature feature = (XSDFeature) component;
+      if (feature.getName() != null)
+        return feature.getName();
+      else if (feature.getResolvedFeature() != null && feature.getResolvedFeature().getName() != null)
+        return feature.getResolvedFeature().getName();
+    }
+
+    return component.getName();
+
+  }
+
+  public static String getDisplayNameFromXSDType(XSDTypeDefinition type)
+  {
+    return getDisplayNameFromXSDType(type, true);
+  }
+
+  public static String getDisplayNameFromXSDType(XSDTypeDefinition type, boolean returnPrimitiveParents)
+  {
+    if (type == null)
+      return null;
+
+    if (type.getName() == null || type.getName().length() == 0)
+    {
+      if (returnPrimitiveParents && isPrimitiveType(type))
+      {
+        return getDisplayNameFromXSDType(type.getBaseType());
+      }
+
+      EObject container = type.eContainer();
+
+      while (container != null)
+      {
+        if (container instanceof XSDNamedComponent && ((XSDNamedComponent) container).getName() != null)
+        {
+          return ((XSDNamedComponent) container).getName();
+        }
+        container = container.eContainer();
+      }
+      return null;
+    }
+    else
+      return type.getName();
+  }
+
+  public static boolean isPrimitiveType(XSDTypeDefinition type)
+  {
+    if (type instanceof XSDComplexTypeDefinition)
+      return false;
+
+    XSDTypeDefinition baseType = null;
+    if (type != null)
+    {
+      baseType = type.getBaseType();
+      XSDTypeDefinition origType = baseType; // KC: although invalid, we need to
+                                            // prevent cycles and to avoid an
+                                            // infinite loop
+      while (baseType != null && !XSDUtil.isAnySimpleType(baseType) && !XSDUtil.isAnyType(baseType) && origType != baseType)
+      {
+        type = baseType;
+        baseType = type.getBaseType();
+      }
+      baseType = type;
+    }
+    else
+    {
+      return false;
+    }
+
+    return (XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001.equals(baseType.getTargetNamespace()));
+  }
+
+  public static XSDSimpleTypeDefinition getAnonymousSimpleType(XSDFeature input, XSDSimpleTypeDefinition xsdSimpleTypeDefinition)
+  {
+    XSDSimpleTypeDefinition anonymousSimpleType = null;
+    XSDTypeDefinition localType = null;
+
+    if (input instanceof XSDElementDeclaration)
+    {
+      localType = ((XSDElementDeclaration) input).getAnonymousTypeDefinition();
+    }
+    else if (input instanceof XSDAttributeDeclaration)
+    {
+      localType = ((XSDAttributeDeclaration) input).getAnonymousTypeDefinition();
+    }
+
+    if (localType instanceof XSDSimpleTypeDefinition)
+    {
+      anonymousSimpleType = (XSDSimpleTypeDefinition) localType;
+    }
+    return anonymousSimpleType;
+  }
+
+  public static List getChildElements(XSDModelGroup group)
+  {
+    List children = new ArrayList();
+    for (Iterator i = group.getContents().iterator(); i.hasNext();)
+    {
+      XSDParticle next = (XSDParticle) i.next();
+      if (next.getContent() instanceof XSDFeature)
+      {
+        children.add(next.getContent());
+      }
+      else if (next.getTerm() instanceof XSDModelGroup)
+      {
+        children.addAll(getChildElements((XSDModelGroup) next.getTerm()));
+      }
+    }
+    return children;
+  }
+
+  public static List getAllAttributes(XSDComplexTypeDefinition xsdComplexType)
+  {
+    List attributes = getChildElements(xsdComplexType);
+    attributes.addAll(getChildAttributes(xsdComplexType));
+
+    return attributes;
+  }
+
+  public static List getInheritedAttributes(XSDComplexTypeDefinition ct)
+  {
+    List attrs = new ArrayList();
+    XSDTypeDefinition parent = ct.getBaseTypeDefinition();
+    if (parent != null && parent instanceof XSDComplexTypeDefinition && ct.isSetDerivationMethod())
+    {
+      attrs.addAll(getAllAttributes((XSDComplexTypeDefinition) parent));
+      attrs.addAll(getInheritedAttributes((XSDComplexTypeDefinition) parent));
+    }
+
+    return attrs;
+  }
+
+  public static List getChildElements(XSDComplexTypeDefinition ct)
+  {
+    return getChildElements(getModelGroup(ct));
+  }
+
+  public static XSDModelGroup getModelGroup(XSDComplexTypeDefinition cType)
+  {
+    XSDParticle particle = cType.getComplexType();
+
+    if (particle == null || particle.eContainer() != cType)
+      return null;
+
+    Object particleContent = particle.getContent();
+    XSDModelGroup group = null;
+
+    if (particleContent instanceof XSDModelGroupDefinition)
+      group = ((XSDModelGroupDefinition) particleContent).getResolvedModelGroupDefinition().getModelGroup();
+    else if (particleContent instanceof XSDModelGroup)
+      group = (XSDModelGroup) particleContent;
+
+    if (group == null)
+      return null;
+
+    if (group.getContents().isEmpty() || group.eResource() != cType.eResource())
+    {
+      XSDComplexTypeContent content = cType.getContent();
+      if (content instanceof XSDParticle)
+        group = (XSDModelGroup) ((XSDParticle) content).getContent();
+    }
+
+    return group;
+  }
+
+  public static List getChildAttributes(XSDComplexTypeDefinition ct)
+  {
+    EList attrContents = ct.getAttributeContents();
+    List attrs = new ArrayList();
+    for (int i = 0; i < attrContents.size(); i++)
+    {
+      Object next = attrContents.get(i);
+
+      if (next instanceof XSDAttributeUse)
+      {
+        attrs.add(((XSDAttributeUse) next).getContent().getResolvedAttributeDeclaration());
+      }
+      else if (next instanceof XSDAttributeGroupDefinition)
+      {
+        XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition) next;
+      }
+    }
+    return attrs;
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/MakeAnonymousTypeGlobalAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/MakeAnonymousTypeGlobalAction.java
index 6216de7..dd5ffc4 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/MakeAnonymousTypeGlobalAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/MakeAnonymousTypeGlobalAction.java
@@ -15,7 +15,7 @@
 import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
 import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
 import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.refactor.structure.MakeAnonymousTypeGlobalCommand;
 import org.eclipse.wst.xsd.ui.internal.refactor.structure.MakeTypeGlobalProcessor;
 import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactoringWizardMessages;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameAction.java
index fe8c721..0874e57 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameAction.java
@@ -17,7 +17,7 @@
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactoringWizardMessages;
 
 
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameComponentAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameComponentAction.java
index 7cbc3fe..e433463 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameComponentAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameComponentAction.java
@@ -18,7 +18,7 @@
 import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
 import org.eclipse.ui.actions.GlobalBuildAction;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.refactor.RefactoringComponent;
 import org.eclipse.wst.xsd.ui.internal.refactor.XMLRefactoringComponent;
 import org.eclipse.wst.xsd.ui.internal.refactor.rename.RenameComponentProcessor;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameResourceAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameResourceAction.java
index 722e5e9..5cda216 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameResourceAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameResourceAction.java
@@ -16,7 +16,7 @@
 import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
 import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
 import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.refactor.rename.RenameResourceProcessor;
 import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactoringWizardMessages;
 import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RenameRefactoringWizard;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameTargetNamespaceAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameTargetNamespaceAction.java
index e7dac64..b6ac481 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameTargetNamespaceAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/RenameTargetNamespaceAction.java
@@ -17,7 +17,7 @@
 import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
 import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
 import org.eclipse.ui.actions.GlobalBuildAction;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.refactor.rename.RenameTargetNamespaceProcessor;
 import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactoringWizardMessages;
 import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RenameRefactoringWizard;
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/XSDRefactorGroupActionDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/XSDRefactorGroupActionDelegate.java
index 4c8e451..d46aa02 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/XSDRefactorGroupActionDelegate.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/actions/XSDRefactorGroupActionDelegate.java
@@ -1,36 +1,16 @@
-/*******************************************************************************
- * Copyright (c) 2005, 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.xsd.ui.internal.refactor.actions;
 
-import java.io.IOException;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
 import org.eclipse.ui.IWorkbenchPartSite;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xsd.editor.ISelectionMapper;
+import org.eclipse.wst.xsd.ui.internal.refactor.actions.XSDRefactorActionGroup;
 import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactorActionGroup;
 import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactorGroupActionDelegate;
 import org.eclipse.wst.xsd.ui.internal.refactor.wizard.RefactorGroupSubMenu;
-import org.eclipse.xsd.XSDFactory;
 import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDResourceImpl;
 
 public class XSDRefactorGroupActionDelegate extends RefactorGroupActionDelegate {
 
@@ -52,45 +32,19 @@
 				return;
 	
 			IEditorPart editor = site.getPage().getActiveEditor();
-			if (editor != null) {
-				IEditorInput editorInput = editor.getEditorInput();
-				if(editorInput instanceof IFileEditorInput){
-					IFileEditorInput fileInput = (IFileEditorInput)editorInput;
-					XSDSchema schema = createXMLSchema(fileInput.getFile(), resourceSet);
-					RefactorActionGroup refactorMenuGroup = new XSDRefactorActionGroup(fSelection, schema);
+			if (editor != null) {              
+                XSDSchema schema = (XSDSchema)editor.getAdapter(XSDSchema.class);
+                ISelectionMapper mapper = (ISelectionMapper)editor.getAdapter(ISelectionMapper.class);
+			    if (schema != null)
+                {                
+                    ISelection selection = mapper != null ? mapper.mapSelection(fSelection) : fSelection;                    
+					RefactorActionGroup refactorMenuGroup = new XSDRefactorActionGroup(selection, schema);
 					RefactorGroupSubMenu subMenu = new RefactorGroupSubMenu(refactorMenuGroup);
 					subMenu.fill(menu, -1);
-				}
-				
+				}				
 			}
 		
 		}
 	
 	}
-	
-	public static XSDSchema createXMLSchema(IFile file, ResourceSet set)  {
-		
-		URI uri = URI.createFileURI(file.getLocation().toString());
-		XSDSchema schema = XSDFactory.eINSTANCE.createXSDSchema();
-		// we need this model to be able to get locations
-		try {
-			IStructuredModel structuredModel = StructuredModelManager.getModelManager().getModelForEdit(file);
-			IDOMModel domModel = (IDOMModel) structuredModel;
-			Resource xsdResource = new XSDResourceImpl();
-			xsdResource.setURI(uri);
-			schema = XSDFactory.eINSTANCE.createXSDSchema();
-			xsdResource.getContents().add(schema);
-			schema.setElement(domModel.getDocument().getDocumentElement());
-			if(set != null){
-				set.getResources().add(xsdResource);
-			}
-		} catch (IOException e) {
-			// do nothing
-		} catch (CoreException e) {
-			// do nothing
-		}
-		return schema;
-	}
-
-
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/ResourceRenameParticipant.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/ResourceRenameParticipant.java
index e1b69ef..ecb772f 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/ResourceRenameParticipant.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/refactor/rename/ResourceRenameParticipant.java
@@ -54,7 +54,7 @@
 			try {
 				IContentDescription description = aFile.getContentDescription();
 				if ( description == null )
-					return false;
+  				return false;
 				IContentType contentType = description.getContentType();
 				if(contentType != null){
 					if(XSD_CONTENT_TYPE_ID.equals(contentType.getId()) ||
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java
deleted file mode 100644
index ce0476d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 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.xsd.ui.internal.search.actions;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.search.ui.NewSearchUI;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-import org.eclipse.wst.common.core.search.scope.SearchScope;
-import org.eclipse.wst.common.core.search.scope.WorkspaceSearchScope;
-import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
-import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-public class FindReferencesAction extends FindAction{
-	public FindReferencesAction(IEditorPart editor)
-	{   
-		super(editor);
-	}
-	
-	public void setActionDefinitionId(String string)
-	{
-		
-	}
-	
-	/**
-	 * To be used by subclass in its run()
-	 * Returns the file where the selection of a component (from the user) occurs
-	 * ie. Returns the file that the user is currently working on.
-	 * @return The IFile representation of the current working file.
-	 */
-	protected IFile getCurrentFile(){
-		if (editor != null){
-			IEditorInput input = editor.getEditorInput();
-			if (input instanceof IFileEditorInput){
-				IFileEditorInput fileEditorInput = (IFileEditorInput)input;               
-				return  fileEditorInput.getFile();
-			}
-		}
-		return null;
-	}
-	
-	/**
-	 * To be used by subclass in its run()
-	 * Works with the Editor to return the selected XSD component which the user
-	 * wants to do the search on.
-	 * @return
-	 * 	The XSDNamedComponent that the user points to (using cursor).
-	 */
-	protected XSDNamedComponent getXSDNamedComponent(){
-		if (editor != null){     
-			ISelectionProvider provider = 
-				(ISelectionProvider) editor.getAdapter(ISelectionProvider.class);
-			if (provider != null)
-			{
-				ISelection selection = provider.getSelection();
-				if (selection != null && selection instanceof IStructuredSelection)
-				{
-					IStructuredSelection s = (IStructuredSelection) selection;
-					Object o = s.getFirstElement();
-					if (o != null && o instanceof XSDNamedComponent)
-					{
-						return (XSDNamedComponent) o;
-					}
-				}
-			}			
-		}
-		 //The expected component we get from the editor does not meet
-		 //  our expectation 
-		return null;
-	}
-	
-	/**
-	 * To be used by subclass in its run()..
-	 * Determines the metaName of the XSD component given to this method.
-	 * @param component The component of which we want to determine the name
-	 * @return
-	 */
-	protected QualifiedName determineMetaName(XSDNamedComponent component){
-		QualifiedName metaName = null;
-		if (component instanceof XSDComplexTypeDefinition)
-		{             
-			metaName = IXSDSearchConstants.COMPLEX_TYPE_META_NAME;
-		}
-		else if (component instanceof XSDSimpleTypeDefinition)
-		{
-			metaName = IXSDSearchConstants.SIMPLE_TYPE_META_NAME;
-		}  
-		else if (component instanceof XSDElementDeclaration)
-		{
-			metaName = IXSDSearchConstants.ELEMENT_META_NAME; 
-		} 
-		return metaName;
-	}
-	
-	public void run()
-	{
-		String pattern = "";
-		
-		XSDNamedComponent component = getXSDNamedComponent();
-		IFile file = getCurrentFile();
-		if ( file != null && component != null){
-			QualifiedName metaName = determineMetaName(component);
-			
-			QualifiedName elementQName = 
-				new QualifiedName(component.getTargetNamespace(), component.getName());
-			
-			SearchScope scope = new WorkspaceSearchScope();
-			String scopeDescription = "Workspace";    
-			XSDSearchQuery searchQuery = 
-				new XSDSearchQuery(pattern, file, elementQName, metaName, XSDSearchQuery.LIMIT_TO_REFERENCES, scope, scopeDescription);    
-			NewSearchUI.activateSearchResultView();
-			NewSearchUI.runQueryInBackground(searchQuery);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java b/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java
deleted file mode 100644
index 34371e7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 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.xsd.ui.internal.search.actions;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.search.ui.NewSearchUI;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-import org.eclipse.wst.common.core.search.scope.ProjectSearchScope;
-import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
-import org.eclipse.xsd.XSDNamedComponent;
-
-public class FindReferencesInProjectAction extends FindReferencesAction {
-
-	public FindReferencesInProjectAction(IEditorPart editor) {
-		super(editor);
-	}
-
-	public void run()
-	{
-		String pattern = "";
-
-		XSDNamedComponent component = getXSDNamedComponent();
-		IFile file = getCurrentFile();
-
-		if ( file != null && component != null){
-			QualifiedName metaName = determineMetaName(component);
-
-			QualifiedName elementQName = 
-				new QualifiedName(component.getTargetNamespace(), component.getName());
-
-			IPath fullPath = (IPath) file.getFullPath();
-			ProjectSearchScope scope = 
-				new ProjectSearchScope(	fullPath);
-
-			String scopeDescription = "Workspace";
-			XSDSearchQuery searchQuery = 
-				new XSDSearchQuery(pattern, file, elementQName, metaName, XSDSearchQuery.LIMIT_TO_REFERENCES, scope, scopeDescription);    
-			NewSearchUI.activateSearchResultView();
-			NewSearchUI.runQueryInBackground(searchQuery);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/IXSDSearchConstants.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/IXSDSearchConstants.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/IXSDSearchConstants.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/IXSDSearchConstants.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchContributor.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchParticipant.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchParticipant.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchParticipant.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchParticipant.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchQuery.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchQuery.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/XSDSearchQuery.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/XSDSearchQuery.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/BaseGroupActionDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/BaseGroupActionDelegate.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/BaseGroupActionDelegate.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/BaseGroupActionDelegate.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/CompositeActionGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/CompositeActionGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/CompositeActionGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/CompositeActionGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/DeclarationsSearchGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/DeclarationsSearchGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/DeclarationsSearchGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/DeclarationsSearchGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java
similarity index 98%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java
index 187d894..c4d6664 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindAction.java
@@ -10,24 +10,21 @@
  *     
  *******************************************************************************/
 package org.eclipse.wst.xsd.ui.internal.search.actions;
-
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.ui.IEditorPart;
-
 public class FindAction extends Action implements ISelectionChangedListener
 {
   IEditorPart editor;
-  
+
   protected FindAction(IEditorPart editor)
   {
     this.editor = editor;
   }
-  
+
   public void selectionChanged(SelectionChangedEvent event)
   {
     // TODO Auto-generated method stub
-    
   }
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java
new file mode 100644
index 0000000..095ccd5
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesAction.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 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.xsd.ui.internal.search.actions;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.scope.SearchScope;
+import org.eclipse.wst.common.core.search.scope.WorkspaceSearchScope;
+import org.eclipse.wst.xsd.editor.ISelectionMapper;
+import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
+import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+public class FindReferencesAction extends FindAction
+{
+  public FindReferencesAction(IEditorPart editor)
+  {
+    super(editor);
+  }
+
+  public void setActionDefinitionId(String string)
+  {
+  }
+
+  /**
+   * To be used by subclass in its run() Returns the file where the selection of
+   * a component (from the user) occurs ie. Returns the file that the user is
+   * currently working on.
+   * 
+   * @return The IFile representation of the current working file.
+   */
+  protected IFile getCurrentFile()
+  {
+    if (editor != null)
+    {
+      IEditorInput input = editor.getEditorInput();
+      if (input instanceof IFileEditorInput)
+      {
+        IFileEditorInput fileEditorInput = (IFileEditorInput) input;
+        return fileEditorInput.getFile();
+      }
+    }
+    return null;
+  }
+
+  /**
+   * To be used by subclass in its run().. Determines the metaName of the XSD
+   * component given to this method.
+   * 
+   * @param component
+   *          The component of which we want to determine the name
+   * @return
+   */
+  protected QualifiedName determineMetaName(XSDNamedComponent component)
+  {
+    QualifiedName metaName = null;
+    if (component instanceof XSDComplexTypeDefinition)
+    {
+      metaName = IXSDSearchConstants.COMPLEX_TYPE_META_NAME;
+    }
+    else if (component instanceof XSDSimpleTypeDefinition)
+    {
+      metaName = IXSDSearchConstants.SIMPLE_TYPE_META_NAME;
+    }
+    else if (component instanceof XSDElementDeclaration)
+    {
+      metaName = IXSDSearchConstants.ELEMENT_META_NAME;
+    }
+    return metaName;
+  }
+  
+  protected XSDNamedComponent getXSDNamedComponent()
+  {
+    if (editor != null)
+    {
+      ISelectionProvider provider = (ISelectionProvider) editor.getAdapter(ISelectionProvider.class);
+      ISelectionMapper mapper = (ISelectionMapper) editor.getAdapter(ISelectionMapper.class);
+      if (provider != null)
+      {
+        ISelection selection = provider.getSelection();
+        if (mapper != null)
+        {
+          selection = mapper.mapSelection(selection);
+        }
+        if (selection != null && selection instanceof IStructuredSelection)
+        {
+          IStructuredSelection s = (IStructuredSelection) selection;
+          Object o = s.getFirstElement();
+          if (o != null && o instanceof XSDNamedComponent)
+          {
+            return (XSDNamedComponent) o;
+          }
+        }
+      }
+    }
+    // The expected component we get from the editor does not meet
+    // our expectation
+    return null;
+  }  
+
+  public void run()
+  {
+    String pattern = "";
+    XSDNamedComponent component = getXSDNamedComponent();
+    IFile file = getCurrentFile();
+    if (file != null && component != null)
+    {
+      QualifiedName metaName = determineMetaName(component);
+      QualifiedName elementQName = new QualifiedName(component.getTargetNamespace(), component.getName());
+      SearchScope scope = new WorkspaceSearchScope();
+      String scopeDescription = "Workspace";
+      XSDSearchQuery searchQuery = new XSDSearchQuery(pattern, file, elementQName, metaName, XSDSearchQuery.LIMIT_TO_REFERENCES, scope, scopeDescription);
+      NewSearchUI.activateSearchResultView();
+      NewSearchUI.runQueryInBackground(searchQuery);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java
new file mode 100644
index 0000000..cab3b94
--- /dev/null
+++ b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInProjectAction.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 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.xsd.ui.internal.search.actions;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.scope.ProjectSearchScope;
+import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
+import org.eclipse.xsd.XSDNamedComponent;
+public class FindReferencesInProjectAction extends FindReferencesAction
+{
+  public FindReferencesInProjectAction(IEditorPart editor)
+  {
+    super(editor);
+  }
+
+  public void run()
+  {
+    String pattern = "";
+    XSDNamedComponent component = getXSDNamedComponent();
+    IFile file = getCurrentFile();
+    if (file != null && component != null)
+    {
+      QualifiedName metaName = determineMetaName(component);
+      QualifiedName elementQName = new QualifiedName(component.getTargetNamespace(), component.getName());
+      IPath fullPath = (IPath) file.getFullPath();
+      ProjectSearchScope scope = new ProjectSearchScope(fullPath);
+      String scopeDescription = "Workspace";
+      XSDSearchQuery searchQuery = new XSDSearchQuery(pattern, file, elementQName, metaName, XSDSearchQuery.LIMIT_TO_REFERENCES, scope, scopeDescription);
+      NewSearchUI.activateSearchResultView();
+      NewSearchUI.runQueryInBackground(searchQuery);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java
similarity index 97%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java
index 67b0b53..bfe6947 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/FindReferencesInWorkingSetAction.java
@@ -22,7 +22,7 @@
 import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
 import org.eclipse.wst.common.core.search.pattern.QualifiedName;
 import org.eclipse.wst.common.core.search.scope.WorkingSetSearchScope;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
 import org.eclipse.xsd.XSDNamedComponent;
 
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/ImplementorsSearchGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/ImplementorsSearchGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/ImplementorsSearchGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/ImplementorsSearchGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/OccurrencesSearchGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/OccurrencesSearchGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/OccurrencesSearchGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/OccurrencesSearchGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/ReferencesSearchGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/ReferencesSearchGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/ReferencesSearchGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/ReferencesSearchGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/SearchGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/SearchGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/SearchGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/SearchGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchActionGroup.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchActionGroup.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchActionGroup.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchActionGroup.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java
similarity index 71%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java
index e57b1e5..91c55c6 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchDeclarationsGroupActionDelegate.java
@@ -17,14 +17,6 @@
 public class XSDSearchDeclarationsGroupActionDelegate extends BaseGroupActionDelegate
 {
     protected void fillMenu(Menu menu) {
-      // TODO... fill in the content
-      /*
-        if (fSelection == null) {
-            return;
-        }          
-        XSDSearchActionGroup refactorMenuGroup = new XSDSearchActionGroup(null);
-        XSDSearchGroupSubMenu subMenu = new XSDSearchGroupSubMenu(refactorMenuGroup);
-        subMenu.fill(menu, -1);
-      */          
-    }  
+
+    }             
 }
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchGroupSubMenu.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchGroupSubMenu.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchGroupSubMenu.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchGroupSubMenu.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchReferencesGroupActionDelegate.java b/bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchReferencesGroupActionDelegate.java
similarity index 100%
rename from bundles/org.eclipse.wst.xsd.ui/src-refactor/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchReferencesGroupActionDelegate.java
rename to bundles/org.eclipse.wst.xsd.ui/src-search/org/eclipse/wst/xsd/ui/internal/search/actions/XSDSearchReferencesGroupActionDelegate.java
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-validation/org/eclipse/wst/xsd/ui/internal/validation/ValidateAction.java b/bundles/org.eclipse.wst.xsd.ui/src-validation/org/eclipse/wst/xsd/ui/internal/validation/ValidateAction.java
index a489005..817f390 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-validation/org/eclipse/wst/xsd/ui/internal/validation/ValidateAction.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-validation/org/eclipse/wst/xsd/ui/internal/validation/ValidateAction.java
@@ -22,7 +22,7 @@
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 import org.eclipse.wst.xml.core.internal.validation.core.ValidationMessage;
 import org.eclipse.wst.xml.core.internal.validation.core.ValidationReport;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
+import org.eclipse.wst.xsd.editor.XSDEditorPlugin;
 
 
 
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/BaseHyperlinkDetector.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/BaseHyperlinkDetector.java
deleted file mode 100644
index 4a97205..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/BaseHyperlinkDetector.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
-
-package org.eclipse.wst.xsd.ui.internal;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-
-/**
- * Base class for hyperlinks detectors. Provides a framework and common code for
- * hyperlink detectors. TODO: Can we pull this class further up the inheritance
- * hierarchy?
- */
-public abstract class BaseHyperlinkDetector implements IHyperlinkDetector
-{
-  /*
-   * (non-Javadoc)
-   */
-  public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks)
-  {
-    if (region == null || textViewer == null)
-    {
-      return null;
-    }
-
-    List hyperlinks = new ArrayList(0);
-    IDocument document = textViewer.getDocument();
-    int offset = region.getOffset();
-
-    IDOMNode node = getCurrentNode(document, offset);
-
-    // This call allows us to determine whether an attribute is linkable,
-    // without incurring the cost of asking for the target component.
-
-    if (!isLinkable(node))
-    {
-      return null;
-    }
-
-    IRegion hyperlinkRegion = getHyperlinkRegion(node);
-
-    // createHyperlink is a template method. Derived classes, should override.
-
-    IHyperlink hyperlink = createHyperlink(document, node, hyperlinkRegion);
-
-    if (hyperlink != null)
-    {
-      hyperlinks.add(hyperlink);
-    }
-
-    if (hyperlinks.size() == 0)
-    {
-      return null;
-    }
-
-    return (IHyperlink[]) hyperlinks.toArray(new IHyperlink[0]);
-  }
-
-  /**
-   * Determines whether a node is "linkable" that is, the component it refers to
-   * can be the target of a "go to definition" navigation.
-   * 
-   * @param node the node to test, must not be null;
-   * @return true if the node is linkable, false otherwise.
-   */
-  private boolean isLinkable(IDOMNode node)
-  {
-    if (node == null)
-    {
-      return false;
-    }
-
-    short nodeType = node.getNodeType();
-
-    boolean isLinkable = false;
-
-    if (nodeType == Node.ATTRIBUTE_NODE)
-    {
-      IDOMAttr attr = (IDOMAttr) node;
-      String name = attr.getName();
-
-      // isLinkableAttribute is a template method. Derived classes should
-      // override.
-
-      isLinkable = isLinkableAttribute(name);
-    }
-
-    return isLinkable;
-  }
-
-  /**
-   * Determines whether an attribute is "linkable" that is, the component it
-   * points to can be the target of a "go to definition" navigation. Derived
-   * classes should override.
-   * 
-   * @param name the attribute name. Must not be null.
-   * @return true if the attribute is linkable, false otherwise.
-   */
-  protected abstract boolean isLinkableAttribute(String name);
-
-  /**
-   * Creates a hyperlink based on the selected node. Derived classes should
-   * override.
-   * 
-   * @param document the source document.
-   * @param node the node under the cursor.
-   * @param region the text region to use to create the hyperlink.
-   * @return a new IHyperlink for the node or null if one cannot be created.
-   */
-  protected abstract IHyperlink createHyperlink(IDocument document, IDOMNode node, IRegion region);
-
-  /**
-   * Locates the attribute node under the cursor.
-   * 
-   * @param offset the cursor offset.
-   * @param parent the parent node
-   * @return an IDOMNode representing the attribute if one is found at the
-   *         offset or null otherwise.
-   */
-  protected IDOMNode getAttributeNode(int offset, IDOMNode parent)
-  {
-    IDOMAttr attrNode = null;
-    NamedNodeMap map = parent.getAttributes();
-
-    for (int index = 0; index < map.getLength(); index++)
-    {
-      attrNode = (IDOMAttr) map.item(index);
-      boolean located = attrNode.contains(offset);
-      if (located)
-      {
-        if (attrNode.hasNameOnly())
-        {
-          attrNode = null;
-        }
-        break;
-      }
-    }
-
-    if (attrNode == null)
-    {
-      return parent;
-    }
-    return attrNode;
-  }
-
-  /**
-   * Returns the node the cursor is currently on in the document or null if no
-   * node is selected
-   * 
-   * @param offset the current cursor offset.
-   * @return IDOMNode either element, doctype, text, attribute or null
-   */
-  private IDOMNode getCurrentNode(IDocument document, int offset)
-  {
-    IndexedRegion inode = null;
-    IStructuredModel sModel = null;
-
-    try
-    {
-      sModel = StructuredModelManager.getModelManager().getExistingModelForRead(document);
-      inode = sModel.getIndexedRegion(offset);
-      if (inode == null)
-        inode = sModel.getIndexedRegion(offset - 1);
-    }
-    finally
-    {
-      if (sModel != null)
-        sModel.releaseFromRead();
-    }
-
-    if (inode instanceof IDOMNode)
-    {
-      IDOMNode node = (IDOMNode) inode;
-
-      if (node.hasAttributes())
-      {
-        node = getAttributeNode(offset, node);
-      }
-      return node;
-    }
-
-    return null;
-  }
-
-  /**
-   * Get the text region corresponding to an IDOMNode.
-   * 
-   * @param node the node for which we want the text region. Must not be null.
-   * @return an IRegion for the node, or null if the node is not recognized.
-   */
-  protected IRegion getHyperlinkRegion(IDOMNode node)
-  {
-    if (node == null)
-    {
-      return null;
-    }
-
-    IRegion hyperRegion = null;
-    short nodeType = node.getNodeType();
-
-    switch (nodeType)
-    {
-      case Node.ELEMENT_NODE : 
-        {
-          hyperRegion = new Region(node.getStartOffset(), node.getEndOffset() - node.getStartOffset());
-        }
-      break;
-      case Node.ATTRIBUTE_NODE : 
-        {
-          IDOMAttr att = (IDOMAttr) node;
-  
-          int regOffset = att.getValueRegionStartOffset();
-  
-          // ISSUE: We are using a deprecated method here. Is there
-          // a better way to get what we need?
-  
-          ITextRegion valueRegion = att.getValueRegion();
-          if (valueRegion != null)
-          {
-            int regLength = valueRegion.getTextLength();
-            String attValue = att.getValueRegionText();
-  
-            // Do not include quotes in attribute value region.
-            if (StringUtils.isQuoted(attValue))
-            {
-              regOffset = ++regOffset;
-              regLength = regLength - 2;
-            }
-            hyperRegion = new Region(regOffset, regLength);
-          }
-        }
-        break;
-      default :
-        // Do nothing.
-        break;
-    }
- 
-    return hyperRegion;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/Logger.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/Logger.java
deleted file mode 100644
index 3ba5a01..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/Logger.java
+++ /dev/null
@@ -1,157 +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
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *     
- *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal;
-
-import java.util.StringTokenizer;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.osgi.framework.Bundle;
-
-/**
- * Small convenience class to log messages to plugin's log file and also, if
- * desired, the console. This class should only be used by classes in this
- * plugin. Other plugins should make their own copy, with appropriate ID.
- */
-public class Logger {
-	private static final String PLUGIN_ID = "org.eclipse.wst.xsd.ui"; //$NON-NLS-1$
-	
-	public static final int ERROR = IStatus.ERROR; // 4
-	public static final int ERROR_DEBUG = 200 + ERROR;
-	public static final int INFO = IStatus.INFO; // 1
-	public static final int INFO_DEBUG = 200 + INFO;
-
-	public static final int OK = IStatus.OK; // 0
-
-	public static final int OK_DEBUG = 200 + OK;
-
-	private static final String TRACEFILTER_LOCATION = "/debug/tracefilter"; //$NON-NLS-1$
-	public static final int WARNING = IStatus.WARNING; // 2
-	public static final int WARNING_DEBUG = 200 + WARNING;
-
-	/**
-	 * Adds message to log.
-	 * 
-	 * @param level
-	 *            severity level of the message (OK, INFO, WARNING, ERROR,
-	 *            OK_DEBUG, INFO_DEBUG, WARNING_DEBUG, ERROR_DEBUG)
-	 * @param message
-	 *            text to add to the log
-	 * @param exception
-	 *            exception thrown
-	 */
-	protected static void _log(int level, String message, Throwable exception) {
-		if (level == OK_DEBUG || level == INFO_DEBUG || level == WARNING_DEBUG || level == ERROR_DEBUG) {
-			if (!isDebugging())
-				return;
-		}
-
-		int severity = IStatus.OK;
-		switch (level) {
-			case INFO_DEBUG :
-			case INFO :
-				severity = IStatus.INFO;
-				break;
-			case WARNING_DEBUG :
-			case WARNING :
-				severity = IStatus.WARNING;
-				break;
-			case ERROR_DEBUG :
-			case ERROR :
-				severity = IStatus.ERROR;
-		}
-		message = (message != null) ? message : "null"; //$NON-NLS-1$
-		Status statusObj = new Status(severity, PLUGIN_ID, severity, message, exception);
-		Bundle bundle = Platform.getBundle(PLUGIN_ID);
-		if (bundle != null) 
-			Platform.getLog(bundle).log(statusObj);
-	}
-
-	/**
-	 * Prints message to log if category matches /debug/tracefilter option.
-	 * 
-	 * @param message
-	 *            text to print
-	 * @param category
-	 *            category of the message, to be compared with
-	 *            /debug/tracefilter
-	 */
-	protected static void _trace(String category, String message, Throwable exception) {
-		if (isTracing(category)) {
-			message = (message != null) ? message : "null"; //$NON-NLS-1$
-			Status statusObj = new Status(IStatus.OK, PLUGIN_ID, IStatus.OK, message, exception);
-			Bundle bundle = Platform.getBundle(PLUGIN_ID);
-			if (bundle != null) 
-				Platform.getLog(bundle).log(statusObj);
-		}
-	}
-
-	/**
-	 * @return true if the platform is debugging
-	 */
-	public static boolean isDebugging() {
-		return Platform.inDebugMode();
-	}
-
-	/**
-	 * Determines if currently tracing a category
-	 * 
-	 * @param category
-	 * @return true if tracing category, false otherwise
-	 */
-	public static boolean isTracing(String category) {
-		if (!isDebugging())
-			return false;
-
-		String traceFilter = Platform.getDebugOption(PLUGIN_ID + TRACEFILTER_LOCATION);
-		if (traceFilter != null) {
-			StringTokenizer tokenizer = new StringTokenizer(traceFilter, ","); //$NON-NLS-1$
-			while (tokenizer.hasMoreTokens()) {
-				String cat = tokenizer.nextToken().trim();
-				if (category.equals(cat)) {
-					return true;
-				}
-			}
-		}
-		return false;
-	}
-
-	public static void log(int level, String message) {
-		_log(level, message, null);
-	}
-
-	public static void log(int level, String message, Throwable exception) {
-		_log(level, message, exception);
-	}
-
-	public static void logException(String message, Throwable exception) {
-		_log(ERROR, message, exception);
-	}
-
-	public static void logException(Throwable exception) {
-		_log(ERROR, exception.getMessage(), exception);
-	}
-
-	public static void trace(String category, String message) {
-		_trace(category, message, null);
-	}
-
-	public static void traceException(String category, String message, Throwable exception) {
-		_trace(category, message, exception);
-	}
-
-	public static void traceException(String category, Throwable exception) {
-		_trace(category, exception.getMessage(), exception);
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/StructuredTextViewerConfigurationXSD.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/StructuredTextViewerConfigurationXSD.java
deleted file mode 100644
index 1b68b13..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/StructuredTextViewerConfigurationXSD.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
-import org.eclipse.wst.xml.ui.StructuredTextViewerConfigurationXML;
-
-/**
- * Configuration for editing XSD content type
- */
-public class StructuredTextViewerConfigurationXSD extends StructuredTextViewerConfigurationXML {
-	public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer sourceViewer) {
-		if (sourceViewer == null || !fPreferenceStore.getBoolean(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_HYPERLINKS_ENABLED))
-			return null;
-
-		List allDetectors = new ArrayList(0);
-		// add XSD Hyperlink detector
-		allDetectors.add(new XSDHyperlinkDetector());
-
-		IHyperlinkDetector[] superDetectors = super.getHyperlinkDetectors(sourceViewer);
-		for (int m = 0; m < superDetectors.length; m++) {
-			IHyperlinkDetector detector = superDetectors[m];
-			if (!allDetectors.contains(detector)) {
-				allDetectors.add(detector);
-			}
-		}
-		return (IHyperlinkDetector[]) allDetectors.toArray(new IHyperlinkDetector[0]);
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDActionBarContributor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDActionBarContributor.java
deleted file mode 100644
index 50f2e5b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDActionBarContributor.java
+++ /dev/null
@@ -1,248 +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;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ResourceBundle;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.actions.ActionFactory;
-import org.eclipse.ui.actions.RetargetAction;
-import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.eclipse.ui.texteditor.ITextEditorActionConstants;
-import org.eclipse.ui.texteditor.RetargetTextEditorAction;
-import org.eclipse.wst.sse.ui.StructuredTextEditor;
-import org.eclipse.wst.sse.ui.internal.ISourceViewerActionBarContributor;
-import org.eclipse.wst.sse.ui.internal.actions.StructuredTextEditorActionConstants;
-import org.eclipse.wst.xsd.ui.internal.actions.ISchemaEditorActionConstants;
-import org.eclipse.wst.xsd.ui.internal.actions.ReloadDependenciesAction;
-import org.eclipse.wst.xsd.ui.internal.actions.SourcePageActionContributor;
-
-public class XSDActionBarContributor extends MultiPageEditorActionBarContributor
-{
-  protected XSDEditor xsdEditor;
-  protected ITextEditor textEditor;
-  protected IEditorActionBarContributor sourceViewerActionContributor = null;
-  
-  protected ReloadDependenciesAction reloadDependenciesAction;
-  
-  protected List fPartListeners= new ArrayList();
-
-  protected RetargetAction retargetReloadDependenciesAction;
-  private RetargetTextEditorAction renameElementAction = null;
-  //private IMenuManager refactorMenu = null;
- 
-  /**
-   * Constructor for XSDActionBarContributor.
-   */
-  public XSDActionBarContributor()
-  {
-    super();
-    
-    sourceViewerActionContributor = new SourcePageActionContributor();
-
-    // Reload Dependencies
-    reloadDependenciesAction = new ReloadDependenciesAction(XSDEditorPlugin.getXSDString("_UI_MENU_RELOAD_DEPENDENCIES"));
-    retargetReloadDependenciesAction = new RetargetAction(ISchemaEditorActionConstants.RETARGET_RELOAD_DEPENDENCIES_ACTION_ID, XSDEditorPlugin.getXSDString("_UI_MENU_RELOAD_DEPENDENCIES"));
-    retargetReloadDependenciesAction.setToolTipText(XSDEditorPlugin.getXSDString("_UI_MENU_RELOAD_DEPENDENCIES_TOOLTIP"));
-    retargetReloadDependenciesAction.setImageDescriptor(
-        ImageDescriptor.createFromFile(XSDEditorPlugin.getPlugin().getClass(), "icons/reloadgrammar.gif"));
-    fPartListeners.add(retargetReloadDependenciesAction);
-    
-    ResourceBundle bundle = Platform.getResourceBundle(XSDEditorPlugin.getPlugin().getBundle());
-	renameElementAction = new RetargetTextEditorAction(bundle, ISchemaEditorActionConstants.RETARGET_RENAME_ELEMENT_ACTION_ID + StructuredTextEditorActionConstants.DOT);
-	renameElementAction.setActionDefinitionId("org.eclipse.wst.xsd.ui.refactor.rename.element"); // TODO: add to contstants command id
-		
-	// the refactor menu, add the menu itself to add all refactor actions
-	//refactorMenu = new MenuManager(XSDEditorPlugin.getXSDString("refactoring.menu.label"), RefactorActionGroup.MENU_ID); //TODO: externalize string
-	//refactorMenu.add(this.renameElementAction);
-  }
-
-  protected void updateActions()
-  {
-    if (xsdEditor != null && xsdEditor.getCurrentPageType().equals(XSDEditorPlugin.GRAPH_PAGE))
-    {
-      IAction deleteAction = xsdEditor.getGraphViewer().getComponentViewer().getMenuListener().getDeleteAction();
-      getActionBars().setGlobalActionHandler(ActionFactory.DELETE.getId(), deleteAction);
-
-      IAction printGraphAction = xsdEditor.getGraphViewer().getPrintGraphAction();
-      getActionBars().setGlobalActionHandler(ActionFactory.PRINT.getId(), printGraphAction);
-    }
-    else
-    {
-      getActionBars().setGlobalActionHandler(ActionFactory.DELETE.getId(), null);      
-      // always enable print regardless of whether we are on source or design
-      updateAction(ActionFactory.PRINT.getId(), ITextEditorActionConstants.PRINT, true);
-    }
-  }
-      
-  public void setActivePage(IEditorPart activeEditor)
-  {
-    updateActions();
-    
-    if (activeEditor != null && activeEditor instanceof StructuredTextEditor)
-    {
-      activateSourcePage(activeEditor, true);
-    }
-    else
-    {
-      activateSourcePage(xsdEditor, false);
-    }
-
-    IActionBars actionBars = getActionBars();
-    if (actionBars != null) {
-      // update menu bar and tool bar
-      actionBars.updateActionBars();
-    }
-    
-    updateAction(IWorkbenchActionConstants.UNDO, ITextEditorActionConstants.UNDO, true);
-    updateAction(IWorkbenchActionConstants.REDO, ITextEditorActionConstants.REDO, true);
-
-    getActionBars().updateActionBars();
-  }
-  
-  protected void activateSourcePage(IEditorPart activeEditor, boolean state)
-  {
-    if (sourceViewerActionContributor != null && sourceViewerActionContributor instanceof ISourceViewerActionBarContributor)
-    {
-      sourceViewerActionContributor.setActiveEditor(activeEditor);
-      ((ISourceViewerActionBarContributor) sourceViewerActionContributor).setViewerSpecificContributionsEnabled(state);
-    }
-  }
-
-  protected void updateAction(String globalActionId, String textEditorActionId, boolean enable)
-  {
-    getActionBars().setGlobalActionHandler(globalActionId,
-                                      enable ? getAction(textEditor, textEditorActionId) :
-                                               null);
-  }
-
-  /**
-   * Returns the action registed with the given text editor.
-   * @return IAction or null if editor is null.
-   */
-  protected IAction getAction(ITextEditor editor, String actionID)
-  {
-    try
-    {
-      return (editor == null ? null : editor.getAction(actionID));
-    }
-    catch (Exception e)
-    {
-      return null;
-    }
-  }
-
-  public void addToMenu(IMenuManager menuManager)
-  {
-    MenuManager treeMenu = new MenuManager(XSDEditorPlugin.getXSDString("_UI_MENU_XSD_EDITOR"));
-    menuManager.insertAfter(IWorkbenchActionConstants.MB_ADDITIONS, treeMenu);
-
-    treeMenu.add(new Separator("group1"));
-//  Add retarget actions
-
-    treeMenu.add(retargetReloadDependenciesAction);
-
-    treeMenu.add(new Separator("group2"));
-  }
-
-
-public void addToToolBar(IToolBarManager toolBarManager)
-  {
-    toolBarManager.add(new Separator("XMLSchema.2"));
-//  Add retarget actions
-    toolBarManager.add(retargetReloadDependenciesAction);
-
-    toolBarManager.add(new Separator("XMLSchema.1"));
-
-    toolBarManager.add(new Separator());
-  }
-  
-  public void contributeToToolBar(IToolBarManager toolBarManager)
-  {
-    addToToolBar(toolBarManager);
-  }
-  
-  public void contributeToMenu(IMenuManager menuManager)
-  {
-    addToMenu(menuManager);
-  }
-  
-  /**
-   * @see org.eclipse.ui.IEditorActionBarContributor#setActiveEditor(IEditorPart)
-   */
-  public void setActiveEditor(IEditorPart targetEditor)
-  {
-    if (targetEditor instanceof XSDEditor)
-    {
-      xsdEditor = (XSDEditor) targetEditor;
-      reloadDependenciesAction.setEditor((XSDEditor)targetEditor);
-
-      textEditor = ((XSDEditor)targetEditor).getTextEditor();
-      if (textEditor != null)
-      {      
-         
-        renameElementAction.setAction(getAction(textEditor, ISchemaEditorActionConstants.RETARGET_RENAME_ELEMENT_ACTION_ID));
-        updateActions();  
-        getActionBars().updateActionBars();
-      }
-    }
-    super.setActiveEditor(targetEditor);
-    
-    updateAction(IWorkbenchActionConstants.UNDO, ITextEditorActionConstants.UNDO, true);
-    updateAction(IWorkbenchActionConstants.REDO, ITextEditorActionConstants.REDO, true);
-  }
-
-  public void init(IActionBars bars, IWorkbenchPage page)
-  {
-    Iterator e = fPartListeners.iterator();
-    while (e.hasNext())
-    {
-      page.addPartListener((RetargetAction) e.next());
-    }
-
-    // register actions that have a dynamic editor. 
-
-    bars.setGlobalActionHandler(ISchemaEditorActionConstants.RETARGET_RELOAD_DEPENDENCIES_ACTION_ID, reloadDependenciesAction);
-    
-    initSourceViewerActionContributor(bars);
-    
-    super.init(bars, page);
-  }
-  
-  protected void initSourceViewerActionContributor(IActionBars actionBars) {
-    if (sourceViewerActionContributor != null)
-      sourceViewerActionContributor.init(actionBars, getPage());
-  }
-
-  
-  public void dispose()
-  {
-    super.dispose();
-    
-    if (sourceViewerActionContributor != null)
-      sourceViewerActionContributor.dispose();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlineConfiguration.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlineConfiguration.java
deleted file mode 100644
index 09e105e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlineConfiguration.java
+++ /dev/null
@@ -1,354 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
-package org.eclipse.wst.xsd.ui.internal;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.wst.sse.ui.internal.contentoutline.PropertyChangeUpdateAction;
-import org.eclipse.wst.sse.ui.internal.contentoutline.PropertyChangeUpdateActionContributionItem;
-import org.eclipse.wst.sse.ui.views.contentoutline.ContentOutlineConfiguration;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xsd.ui.internal.actions.OpenSchemaAction;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDAdapterFactoryLabelProvider;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDContentProvider;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl;
-import org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * Outline configuration for XSD
- */
-public class XSDContentOutlineConfiguration extends ContentOutlineConfiguration {
-	private XSDContentProvider fContentProvider;
-	private ILabelProvider fLabelProvider;
-	private KeyListener[] fKeyListeners = null;
-	private IMenuListener fMenuListener = null;
-	private XSDEditor fEditor = null;
-	private TreeViewer treeViewer;
-	protected SelectionManagerSelectionChangeListener selectionManagerSelectionChangeListener = new SelectionManagerSelectionChangeListener();
-	
-	public XSDContentOutlineConfiguration()
-	{
-		super();
-	}
-
-	public IContentProvider getContentProvider(TreeViewer viewer) {
-		if (fContentProvider == null) {
-			fContentProvider = new XSDContentProvider(XSDModelAdapterFactoryImpl.getInstance());
-		}
-		this.treeViewer = viewer;
-		getXSDEditor().getSelectionManager().addSelectionChangedListener(selectionManagerSelectionChangeListener);
-		return fContentProvider;
-	}
-
-	public ILabelProvider getLabelProvider(TreeViewer viewer) {
-		if (fLabelProvider == null) {
-			fLabelProvider = new XSDAdapterFactoryLabelProvider(XSDModelAdapterFactoryImpl.getInstance());
-		}
-		return fLabelProvider;
-	}
-
-	public IMenuListener getMenuListener(TreeViewer viewer) {
-		if (fMenuListener == null) {
-			// ISSUE: what happens if cannot get XSD Editor? (See
-			// getXSDEditor comment)
-			if (getXSDEditor() != null)
-				fMenuListener = new XSDMenuListener(getXSDEditor().getSelectionManager());
-		}
-		return fMenuListener;
-	}
-
-	public KeyListener[] getKeyListeners(TreeViewer viewer) {
-		if (fKeyListeners == null) {
-			final TreeViewer finalViewer = viewer;
-			KeyAdapter keyListener = new KeyAdapter() {
-				public void keyReleased(KeyEvent e) {
-					if (e.character == SWT.DEL) {
-						IMenuListener menuListener = getMenuListener(finalViewer);
-						if (menuListener instanceof XSDMenuListener)
-							((XSDMenuListener) menuListener).getDeleteAction().run();
-					}
-					else if (e.keyCode == SWT.F3) // open editor on any
-					// include/import/redefine
-					{
-						if (e.widget instanceof Tree) {
-							Tree tree = (Tree) e.widget;
-							TreeItem[] selection = tree.getSelection();
-							if (selection.length > 0) {
-								if (selection[0].getData() instanceof XSDSchemaDirective) {
-									XSDSchemaDirective comp = (XSDSchemaDirective) selection[0].getData();
-									OpenSchemaAction openSchema = new OpenSchemaAction(XSDEditorPlugin.getXSDString("_UI_ACTION_OPEN_SCHEMA"), comp);
-									openSchema.run();
-								}
-							}
-						}
-					}
-				}
-			};
-			fKeyListeners = new KeyListener[]{keyListener};
-		}
-
-		return fKeyListeners;
-	}
-
-	public ISelection getSelection(TreeViewer viewer, ISelection selection) {
-		ISelection sel = selection;
-
-		if (selection instanceof IStructuredSelection) {
-			List xsdSelections = new ArrayList();
-			for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();) {
-				Object domNode = i.next();
-				Object xsdNode = getXSDNode(domNode, viewer);
-				if (xsdNode != null) {
-					xsdSelections.add(xsdNode);
-				}
-			}
-
-			if (!xsdSelections.isEmpty()) {
-				sel = new StructuredSelection(xsdSelections);
-			}
-		}
-		return sel;
-	}
-
-	/**
-	 * Determines XSD node based on object (DOM node)
-	 * 
-	 * @param object
-	 * @return
-	 */
-	private Object getXSDNode(Object object, TreeViewer viewer) {
-		// get the element node
-		Element element = null;
-		if (object instanceof Node) {
-			Node node = (Node) object;
-			if (node != null) {
-				if (node.getNodeType() == Node.ELEMENT_NODE) {
-					element = (Element) node;
-				}
-				else if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
-					element = ((Attr) node).getOwnerElement();
-				}
-			}
-		}
-		Object o = element;
-		if (element != null) {
-			Object modelObject = getXSDSchema(viewer).getCorrespondingComponent(element);
-			if (modelObject != null) {
-				o = modelObject;
-			}
-		}
-		return o;
-	}
-
-	/**
-	 * Gets the xsd schema from treeviewer's input
-	 * 
-	 * @param model
-	 *            (of type Object but really should be IStructuredModel)
-	 * @return Definition
-	 */
-	private XSDSchema getXSDSchema(TreeViewer viewer) {
-		XSDSchema xsdSchema = null;
-		Object model = null;
-		if (viewer != null)
-			model = viewer.getInput();
-
-		if (model instanceof IDOMModel) {
-			IDOMDocument domDoc = ((IDOMModel) model).getDocument();
-			if (domDoc != null) {
-				XSDModelAdapter modelAdapter = (XSDModelAdapter) domDoc.getExistingAdapter(XSDModelAdapter.class);
-				/*
-				 * ISSUE: Didn't want to go through initializing schema if it
-				 * does not already exist, so just attempted to get existing
-				 * adapter. If doesn't exist, just don't bother working.
-				 */
-				if (modelAdapter != null)
-					xsdSchema = modelAdapter.getSchema();
-			}
-		}
-		return xsdSchema;
-	}
-
-	// ISSUE: There are some cases where outline comes up before editor
-	private XSDEditor getXSDEditor() {
-		if (fEditor == null) {
-			IWorkbench workbench = PlatformUI.getWorkbench();
-			if (workbench != null) {
-				IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
-				if (window != null) {
-					IWorkbenchPage page = window.getActivePage();
-					if (page != null) {
-						IEditorPart editor = page.getActiveEditor();
-						if (editor instanceof XSDEditor)
-							fEditor = (XSDEditor) editor;
-					}
-				}
-			}
-		}
-		return fEditor;
-	}
-
-	protected IContributionItem[] createMenuContributions(TreeViewer viewer) {
-       IContributionItem[] items = super.createMenuContributions(viewer);
-		
-	   referenceAction = new FilterAction(XSDEditorPlugin.getPlugin().getPreferenceStore(), "referenceContentAction", new ReferenceFilter("Reference Content"), XSDEditorPlugin.getXSDString("_UI_OUTLINE_SHOW_REFERENCES"), ImageDescriptor.createFromFile(XSDEditorPlugin.getPlugin().getClass(), "icons/XSDElementRef.gif"));
-       boolean initialRef = getXSDEditor().getXSDModelAdapterFactory().getShowReferences();
-       referenceAction.setChecked(initialRef);
-
-       inheritedAction = new FilterAction(XSDEditorPlugin.getPlugin().getPreferenceStore(), "inheritedContentAction", new ReferenceFilter("Inherited Content"), XSDEditorPlugin.getXSDString("_UI_OUTLINE_SHOW_INHERITED"), ImageDescriptor.createFromFile(XSDEditorPlugin.getPlugin().getClass(), "icons/XSDComplexContent.gif"));
-		
-	   IContributionItem toggleReferenceItem = new PropertyChangeUpdateActionContributionItem(referenceAction);
-	   IContributionItem toggleInheritedItem = new PropertyChangeUpdateActionContributionItem(inheritedAction);
-	    
-	   List list = new ArrayList();
-	   list.addAll(Arrays.asList(items));
-	   list.add(toggleReferenceItem);
-	   list.add(toggleInheritedItem);
-	   
-	   int length = list.size();
-	   IContributionItem[] newItems = new IContributionItem[length];
-	   int i = 0;
-	   for (Iterator iter = list.iterator(); iter.hasNext(); i++)
-	   {
-	     newItems[i] = (IContributionItem)iter.next();
-	   }
-	   
-	   return newItems;
-	}
-	
-	  // expose
-	  public TreeViewer getTreeViewer()
-	  {
-	    return treeViewer;
-	  }
-
-	  FilterAction referenceAction, inheritedAction;
-	  
-	  private void updateActions(Action current)
-	  {
-	    if (referenceAction.isChecked())
-	    {
-	      getXSDEditor().getXSDModelAdapterFactory().setShowReferences(true);
-	    }
-	    else
-	    {
-	      getXSDEditor().getXSDModelAdapterFactory().setShowReferences(false);
-	    }
-	    if (inheritedAction.isChecked())
-	    {
-	      getXSDEditor().getXSDModelAdapterFactory().setShowInherited(true);
-	    }
-	    else
-	    {
-	      getXSDEditor().getXSDModelAdapterFactory().setShowInherited(false);
-	    }
-	    getTreeViewer().refresh();
-	  }
-
-	  public class FilterAction extends PropertyChangeUpdateAction
-	  {
-	    ViewerFilter filter;
-
-	    public FilterAction(IPreferenceStore store, String preference, ViewerFilter filter, String label, ImageDescriptor image)
-	    {
-	      super(label, store, preference, true);
-	      setImageDescriptor(image);
-	      setUpdateFromPropertyChange(false);
-	      this.filter = filter;
-	      setChecked(false);
-	    }
-
-	    public void update()
-	    {
-	      super.update();
-	      updateActions(this);
-	    }
-	  }
-	  
-	  class ReferenceFilter extends ViewerFilter // Dummy filter
-	  {
-	    public ReferenceFilter(String elementTag)
-	    {
-	      this.elementTag = elementTag;
-	    }
-	    protected String elementTag;
-
-	    public boolean select(Viewer viewer, Object parentElement, Object element)
-	    {
-	      return true;
-	    }
-	  }
-	
-	  class SelectionManagerSelectionChangeListener implements ISelectionChangedListener
-	  {
-	    public void selectionChanged(SelectionChangedEvent event)
-	    {
-	      if (event.getSelectionProvider() != getTreeViewer())
-	      {
-	    	StructuredSelection selection = (StructuredSelection)event.getSelection();
-	    	if (selection.getFirstElement() instanceof XSDSchema)
-	    	{
-	    	   StructuredSelection s = (StructuredSelection)getTreeViewer().getSelection();
-	    	   if (!(s.getFirstElement() instanceof CategoryAdapter))
-	    	   {
-	    		 getTreeViewer().setSelection(event.getSelection(), true);
-	    	   }
-	    	}
-	    	else
-	    	{
-	          getTreeViewer().setSelection(event.getSelection(), true);
-	    	}
-	      }
-	    }
-	  }
-
-	  public void unconfigure(TreeViewer viewer) {
-		  super.unconfigure(viewer);
-		  getXSDEditor().getSelectionManager().removeSelectionChangedListener(selectionManagerSelectionChangeListener);
-	  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlinePage.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlinePage.java
deleted file mode 100644
index f6ab990..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlinePage.java
+++ /dev/null
@@ -1,561 +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;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.ListenerList;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.part.IPageSite;
-import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
-import org.eclipse.wst.xsd.ui.internal.actions.OpenSchemaAction;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.w3c.dom.Element;
-
-/**
- * @deprecated Using SSE's ConfiguratbleContentOutlinePage 
- * instead via XSDContentOutlineCOnfiguration
- */
-public class XSDContentOutlinePage extends ContentOutlinePage implements ISelectionListener
-{
-  protected XSDEditor xsdEditor;
-  protected int level = 0;
-  protected Object model;
-  protected ITreeContentProvider contentProvider;
-  protected ILabelProvider labelProvider;
-  protected XSDSelectionManager selectionManager;
-  protected SelectionManagerSelectionChangeListener selectionManagerSelectionChangeListener = new SelectionManagerSelectionChangeListener();
-  protected TreeSelectionChangeListener treeSelectionChangeListener = new TreeSelectionChangeListener();
-  XSDEditor xsdTextEditor;
-  XSDMenuListener menuListener;
-  SelectionProvider fSelectionProvider = null;
-  
-  /**
-   *  
-   */
-  public XSDContentOutlinePage(XSDEditor xsdTextEditor)
-  {
-    super();
-    this.xsdTextEditor = xsdTextEditor;
-    fSelectionProvider = new SelectionProvider();
-  }
-
-  public void init(IPageSite pageSite)
-  {
-  	super.init(pageSite);
-  	getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(this);
-  	getSite().setSelectionProvider(fSelectionProvider);
-  }
-  
-  public void dispose()
-  {
-  	super.dispose();
-  	getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(this);
-  }
-  
-  public void setModel(Object newModel)
-  {
-    model = newModel;
-  }
-
-  public void setContentProvider(ITreeContentProvider contentProvider)
-  {
-    this.contentProvider = contentProvider;
-  }
-
-  public void setLabelProvider(ILabelProvider labelProvider)
-  {
-    this.labelProvider = labelProvider;
-  }
-
-  // expose
-  public TreeViewer getTreeViewer()
-  {
-    return super.getTreeViewer();
-  }
-
-  public void createControl(Composite parent)
-  {
-    super.createControl(parent);
-    getTreeViewer().setContentProvider(contentProvider);
-    getTreeViewer().setLabelProvider(labelProvider);
-    getTreeViewer().setInput(model);
-//    getTreeViewer().addSelectionChangedListener(this);
-    MenuManager menuManager = new MenuManager("#popup");//$NON-NLS-1$
-    menuManager.setRemoveAllWhenShown(true);
-    Menu menu = menuManager.createContextMenu(getTreeViewer().getControl());
-    getTreeViewer().getControl().setMenu(menu);
-    menuListener = new XSDMenuListener(xsdTextEditor.getSelectionManager());
-//  menuListener.setSelectionProvider(getTreeViewer());
-    menuManager.addMenuListener(menuListener);
-    
-    // enable popupMenus extension
-    getSite().registerContextMenu("org.eclipse.wst.xsd.ui.popup.outline", menuManager, xsdTextEditor.getSelectionManager());
-
-    setSelectionManager(xsdTextEditor.getSelectionManager());
-    // cs... why are we doing this from the outline view?
-    //
-    //xsdTextEditor.getXSDEditor().getSelectionManager().setSelection(new
-    // StructuredSelection(xsdTextEditor.getXSDSchema()));
-    XSDKeyListener keyListener = new XSDKeyListener(getTreeViewer(), menuListener);
-    getTreeViewer().getControl().addKeyListener(keyListener);
-    // drill down from outline view
-    getTreeViewer().getControl().addMouseListener(new MouseAdapter()
-    {
-      public void mouseDoubleClick(MouseEvent e)
-      {
-        ISelection iSelection = getTreeViewer().getSelection();
-        if (iSelection instanceof StructuredSelection)
-        {
-          StructuredSelection selection = (StructuredSelection)iSelection;
-          Object obj = selection.getFirstElement();
-          if (obj instanceof XSDConcreteComponent)
-          {
-            XSDConcreteComponent comp = (XSDConcreteComponent)obj;
-            if (comp.getContainer() instanceof XSDSchema)
-            {
-              xsdTextEditor.getGraphViewer().setInput(obj);
-            }
-          }
-        }
-
-      }
-    });
-    
-    
-		getTreeViewer().addPostSelectionChangedListener(fSelectionProvider.getPostSelectionChangedListener());
-		getTreeViewer().addSelectionChangedListener(fSelectionProvider.getSelectionChangedListener());
-
-  }
-  class XSDKeyListener extends KeyAdapter
-  {
-    TreeViewer viewer;
-    XSDMenuListener menuListener;
-
-    public XSDKeyListener(TreeViewer viewer, XSDMenuListener menuListener)
-    {
-      super();
-      this.viewer = viewer;
-      this.menuListener = menuListener;
-    }
-
-    /**
-     * @see org.eclipse.swt.events.KeyAdapter#keyReleased(KeyEvent)
-     */
-    public void keyReleased(KeyEvent e)
-    {
-      if (e.character == SWT.DEL)
-      {
-        menuListener.getDeleteAction().run();
-      }
-      else if (e.keyCode == SWT.F3) // open editor on any
-                                    // include/import/redefine
-      {
-        if (e.widget instanceof Tree)
-        {
-          Tree tree = (Tree) e.widget;
-          TreeItem[] selection = tree.getSelection();
-          if (selection.length > 0)
-          {
-            if (selection[0].getData() instanceof XSDSchemaDirective)
-            {
-              XSDSchemaDirective comp = (XSDSchemaDirective) selection[0].getData();
-              OpenSchemaAction openSchema = new OpenSchemaAction(XSDEditorPlugin.getXSDString("_UI_ACTION_OPEN_SCHEMA"), comp);
-              openSchema.run();
-            }
-          }
-        }
-      }
-    }
-  }
-
-  public void setExpandToLevel(int i)
-  {
-    level = i;
-  }
-
-  public void setInput(Object value)
-  {
-    getTreeViewer().setInput(value);
-    getTreeViewer().expandToLevel(level);
-  }
-
-  public void selectionChanged(IWorkbenchPart part, ISelection selection)
-  {
-    if (selectionManager != null)
-    {
-      if (selection instanceof IStructuredSelection)
-      {
-        IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-        Object o = structuredSelection.getFirstElement();
-        // TODO ...
-        // we need to implement a selectionManagerMapping extension point
-        // so that extensions can specify how they'd like to map view objects
-        // to selection objects
-        //                                        
-        if (o instanceof Element)
-        {
-          try
-          {
-            Object modelObject = xsdTextEditor.getXSDSchema().getCorrespondingComponent((Element) o);
-            if (modelObject != null)
-            {
-              o = modelObject;
-            }
-          }
-          catch (Exception e)
-          {
-          }
-        }
-        else if (o instanceof CategoryAdapter)
-        {
-          // todo... we need to ensure we eliminate the propagation 
-          // of 'view' specific objects into the SelectionManager.                     
-          // We need to do some work to ensure all views utilize the 'Category' model object  
-          // so we can get rid of this CategoryAdapter class.
-//           CategoryAdapter adapter = (CategoryAdapter) o;
-//           o = adapter.getXSDSchema();
-        }
-        if (o != null)
-        {
-    			if (getControl() != null && !getControl().isDisposed() && !getControl().isFocusControl() && getControl().isVisible()) {
-    				/*
-    				 * Do not allow selection from other parts to affect selection
-    				 * in the tree widget if it has focus. Selection events
-    				 * "bouncing" off of other parts are all that we can receive
-    				 * if we have focus (since we forward selection to the
-    				 * service), and only the user should affect selection if we
-    				 * have focus.
-    				 */
-            getTreeViewer().setSelection(new StructuredSelection(o), true);
-    			}
-          selectionManager.setSelection(new StructuredSelection(o), getTreeViewer());
-//        selectionManager.selectionChanged(new SelectionChangedEvent(getTreeViewer(),new StructuredSelection(o)));
-        }
-        else
-        {
-          // selectionManager.setSelection(new StructuredSelection(),
-          // getTreeViewer());
-        }
-      }
-    }
-  }
-  
-  public void setSelectionManager(XSDSelectionManager newSelectionManager)
-  {
-    TreeViewer treeViewer = getTreeViewer();
-    // disconnect from old one
-    if (selectionManager != null)
-    {
-      selectionManager.removeSelectionChangedListener(selectionManagerSelectionChangeListener);
-      treeViewer.removeSelectionChangedListener(treeSelectionChangeListener);
-    }
-    selectionManager = newSelectionManager;
-    // connect to new one
-    if (selectionManager != null)
-    {
-      selectionManager.addSelectionChangedListener(selectionManagerSelectionChangeListener);
-      treeViewer.addSelectionChangedListener(treeSelectionChangeListener);
-    }
-  }
-  
-  class SelectionManagerSelectionChangeListener implements ISelectionChangedListener
-  {
-    public void selectionChanged(SelectionChangedEvent event)
-    {
-      if (event.getSelectionProvider() != getTreeViewer())
-      {
-        getTreeViewer().setSelection(event.getSelection(), true);
-      }
-    }
-  }
-  class TreeSelectionChangeListener implements ISelectionChangedListener
-  {
-    public void selectionChanged(SelectionChangedEvent event)
-    {
-      if (selectionManager != null)
-      {
-        ISelection selection = event.getSelection();
-        if (selection instanceof IStructuredSelection)
-        {
-          IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-          Object o = structuredSelection.getFirstElement();
-          // TODO ...
-          // we need to implement a selectionManagerMapping extension point
-          // so that extensions can specify how they'd like to map view objects
-          // to selection objects
-          //                                        
-          if (o instanceof Element)
-          {
-            try
-            {
-              Object modelObject = xsdTextEditor.getXSDSchema().getCorrespondingComponent((Element) o);
-              if (modelObject != null)
-              {
-                o = modelObject;
-              }
-            }
-            catch (Exception e)
-            {
-            }
-          }
-          else if (o instanceof CategoryAdapter)
-          {
-            // todo... we need to ensure we eliminate the propagation 
-            // of 'view' specific objects into the SelectionManager.                     
-            // We need to do some work to ensure all views utilize the 'Category' model object  
-            // so we can get rid of this CategoryAdapter class.
-//             CategoryAdapter adapter = (CategoryAdapter) o;
-//             o = adapter.getXSDSchema();
-          }
-          if (o != null)
-          {
-            selectionManager.setSelection(new StructuredSelection(o), getTreeViewer());
-//          selectionManager.selectionChanged(new SelectionChangedEvent(getTreeViewer(),new StructuredSelection(o)));
-          }
-        }
-      }
-    }
-  }
-  FilterAction referenceAction, inheritedAction;
-
-  public void setActionBars(IActionBars actionBars)
-  {
-    super.setActionBars(actionBars);
-    // Uncomment to add sort action
-    //    SortAction sortAction = new SortAction();
-    //
-    //    actionBars.getToolBarManager().add(sortAction);
-    //    sortAction.setChecked(false);
-    referenceAction = new FilterAction(new ReferenceFilter("Reference Content"), XSDEditorPlugin.getXSDString("_UI_OUTLINE_SHOW_REFERENCES"), ImageDescriptor.createFromFile(XSDEditorPlugin
-        .getPlugin().getClass(), "icons/XSDElementRef.gif"));
-    boolean initialRef = xsdTextEditor.getXSDModelAdapterFactory().getShowReferences();
-    referenceAction.setChecked(initialRef);
-    inheritedAction = new FilterAction(new ReferenceFilter("Inherited Content"), XSDEditorPlugin.getXSDString("_UI_OUTLINE_SHOW_INHERITED"), ImageDescriptor.createFromFile(XSDEditorPlugin.getPlugin()
-        .getClass(), "icons/XSDComplexContent.gif"));
-    IMenuManager menu = actionBars.getMenuManager();
-    menu.add(referenceAction);
-    menu.add(inheritedAction);
-  }
-
-  private void updateActions(Action current)
-  {
-    if (referenceAction.isChecked())
-    {
-      xsdTextEditor.getXSDModelAdapterFactory().setShowReferences(true);
-    }
-    else
-    {
-      xsdTextEditor.getXSDModelAdapterFactory().setShowReferences(false);
-    }
-    if (inheritedAction.isChecked())
-    {
-      xsdTextEditor.getXSDModelAdapterFactory().setShowInherited(true);
-    }
-    else
-    {
-      xsdTextEditor.getXSDModelAdapterFactory().setShowInherited(false);
-    }
-  }
-  private Sorter sorter = new Sorter();
-  public class Sorter extends org.eclipse.jface.viewers.ViewerSorter
-  {
-  }
-  public class SortAction extends Action
-  {
-    public SortAction()
-    {
-      super("Sort", ImageDescriptor.createFromFile(XSDEditorPlugin.getPlugin().getClass(), "icons/sort.gif"));
-    }
-
-    public void run()
-    {
-      getTreeViewer().getControl().setVisible(false);
-      Object[] expandedElements = getTreeViewer().getExpandedElements();
-      getTreeViewer().setSorter(isChecked() ? sorter : null);
-      Object input = getTreeViewer().getInput();
-      getTreeViewer().setInput(input);
-      getTreeViewer().setExpandedElements(expandedElements);
-      getTreeViewer().getControl().setVisible(true);
-    }
-
-    public void setChecked(boolean checked)
-    {
-      super.setChecked(checked);
-      setToolTipText(checked ? XSDEditorPlugin.getXSDString("_UI_OUTLINE_DO_NOT_SORT") : XSDEditorPlugin.getXSDString("_UI_OUTLINE_SORT"));
-    }
-  }
-  public class FilterAction extends Action
-  {
-    ViewerFilter filter;
-
-    public FilterAction(ViewerFilter filter, String label, ImageDescriptor image)
-    {
-      super(label, image);
-      this.filter = filter;
-      setChecked(false);
-    }
-
-    public void run()
-    {
-      updateActions(this);
-      if (isChecked())
-      {
-        getTreeViewer().resetFilters();
-        getTreeViewer().addFilter(filter);
-      }
-      else
-      {
-        getTreeViewer().removeFilter(filter);
-      }
-    }
-  }
-  class ReferenceFilter extends ViewerFilter // Dummy filter
-  {
-    public ReferenceFilter(String elementTag)
-    {
-      this.elementTag = elementTag;
-    }
-    protected String elementTag;
-
-    public boolean select(Viewer viewer, Object parentElement, Object element)
-    {
-      return true;
-    }
-  }
-  
-	/**
-	 * Forwards post-selection from the tree viewer to the listeners while
-	 * acting as this page's selection provider.
-	 */
-	private class SelectionProvider implements IPostSelectionProvider {
-		private class PostSelectionChangedListener implements ISelectionChangedListener {
-			public void selectionChanged(SelectionChangedEvent event) {
-				if (!isFiringSelection()) {
-					fireSelectionChanged(event, postListeners);
-				}
-			}
-		}
-
-		private class SelectionChangedListener implements ISelectionChangedListener {
-			public void selectionChanged(SelectionChangedEvent event) {
-				if (!isFiringSelection()) {
-					fireSelectionChanged(event, listeners);
-				}
-			}
-		}
-
-		private boolean isFiringSelection = false;
-		private ListenerList listeners = new ListenerList();
-		private ListenerList postListeners = new ListenerList();
-		private ISelectionChangedListener postSelectionChangedListener = new PostSelectionChangedListener();
-		private ISelectionChangedListener selectionChangedListener = new SelectionChangedListener();
-
-		public void addPostSelectionChangedListener(ISelectionChangedListener listener) {
-			postListeners.add(listener);
-		}
-
-		public void addSelectionChangedListener(ISelectionChangedListener listener) {
-			listeners.add(listener);
-		}
-
-		public void fireSelectionChanged(final SelectionChangedEvent event, ListenerList listenerList) {
-			isFiringSelection = true;
-			Object[] listeners = listenerList.getListeners();
-			for (int i = 0; i < listeners.length; ++i) {
-				final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
-				Platform.run(new SafeRunnable() {
-					public void run() {
-						l.selectionChanged(event);
-					}
-				});
-			}
-			isFiringSelection = false;
-		}
-
-		public void fireSelectionChanged(final SelectionChangedEvent event) {
-			isFiringSelection = true;
-			Object[] listeners = postListeners.getListeners();
-			for (int i = 0; i < listeners.length; ++i) {
-				final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i];
-				Platform.run(new SafeRunnable() {
-					public void run() {
-						l.selectionChanged(event);
-					}
-				});
-			}
-			isFiringSelection = false;
-		}
-
-		public ISelectionChangedListener getPostSelectionChangedListener() {
-			return postSelectionChangedListener;
-		}
-
-		public ISelection getSelection() {
-			if (getTreeViewer() != null) {
-				return getTreeViewer().getSelection();
-			}
-			return StructuredSelection.EMPTY;
-		}
-
-		public ISelectionChangedListener getSelectionChangedListener() {
-			return selectionChangedListener;
-		}
-
-		public boolean isFiringSelection() {
-			return isFiringSelection;
-		}
-
-		public void removePostSelectionChangedListener(ISelectionChangedListener listener) {
-			postListeners.remove(listener);
-		}
-
-		public void removeSelectionChangedListener(ISelectionChangedListener listener) {
-			listeners.remove(listener);
-		};
-
-		public void setSelection(ISelection selection) {
-			if (isFiringSelection) {
-				getTreeViewer().setSelection(selection);
-			}
-		};
-	}
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditor.java
deleted file mode 100644
index 71fe602..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditor.java
+++ /dev/null
@@ -1,881 +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;
-
-import java.util.ArrayList;
-import java.util.EventObject;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.emf.common.command.BasicCommandStack;
-import org.eclipse.emf.common.command.Command;
-import org.eclipse.emf.common.command.CommandStackListener;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.editors.text.ILocationProvider;
-import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
-import org.eclipse.ui.views.properties.IPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySheetPageContributor;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
-import org.eclipse.wst.sse.core.internal.provisional.events.IStructuredDocumentListener;
-import org.eclipse.wst.sse.core.internal.undo.IStructuredTextUndoManager;
-import org.eclipse.wst.sse.ui.StructuredTextEditor;
-import org.eclipse.wst.sse.ui.internal.contentoutline.ConfigurableContentOutlinePage;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphViewer;
-import org.eclipse.wst.xsd.ui.internal.properties.section.XSDTabbedPropertySheetPage;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDAdapterFactoryLabelProvider;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl;
-import org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter;
-import org.eclipse.wst.xsd.ui.internal.util.OpenOnSelectionHelper;
-import org.eclipse.xsd.XSDComponent;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.ProcessingInstruction;
-
-// public class XSDEditor extends StructuredTextMultiPageEditorPart
-public class XSDEditor extends XSDMultiPageEditorPart implements ITabbedPropertySheetPageContributor {
-	protected StructuredTextEditor textEditor;
-	IFile resourceFile;
-	XSDSelectionManager xsdSelectionManager;
-	XSDModelAdapter schemalNodeAdapter;
-
-	private IStructuredModel result;
-
-	/**
-	 * Listener on SSE's outline page's selections that converts DOM
-	 * selections into wsdl selections and notifies WSDL selection manager
-	 */
-	class OutlineTreeSelectionChangeListener implements ISelectionChangedListener, IDoubleClickListener {
-		public OutlineTreeSelectionChangeListener() {
-		}
-
-		private ISelection getXSDSelection(ISelection selection) {
-			ISelection sel = null;
-			if (selection instanceof IStructuredSelection) {
-				IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-				Object o = structuredSelection.getFirstElement();
-				if (o != null)
-					sel = new StructuredSelection(o);
-			}
-			return sel;
-		}
-
-		/**
-		 * Determines DOM node based on object (xsd node)
-		 * 
-		 * @param object
-		 * @return
-		 */
-		private Object getObjectForOtherModel(Object object) {
-			Node node = null;
-
-			if (object instanceof Node) {
-				node = (Node) object;
-			}
-			else if (object instanceof XSDComponent) {
-				node = ((XSDComponent) object).getElement();
-			}
-			else if (object instanceof CategoryAdapter) {
-				node = ((CategoryAdapter) object).getXSDSchema().getElement();
-			}
-
-			// the text editor can only accept sed nodes!
-			//
-			if (!(node instanceof IDOMNode)) {
-				node = null;
-			}
-			return node;
-		}
-
-		public void doubleClick(DoubleClickEvent event) {
-			/*
-			 * Selection in outline tree changed so set outline tree's
-			 * selection into editor's selection and say it came from outline
-			 * tree
-			 */
-			if (getSelectionManager() != null && getSelectionManager().enableNotify) {
-				ISelection selection = getXSDSelection(event.getSelection());
-				if (selection != null) {
-					getSelectionManager().setSelection(selection, fOutlinePage);
-				}
-
-				if (getTextEditor() != null && selection instanceof IStructuredSelection) {
-					int start = -1;
-					int length = 0;
-					Object o = ((IStructuredSelection) selection).getFirstElement();
-					if (o != null)
-						o = getObjectForOtherModel(o);
-					if (o instanceof IndexedRegion) {
-						start = ((IndexedRegion) o).getStartOffset();
-						length = ((IndexedRegion) o).getEndOffset() - start;
-					}
-					if (start > -1) {
-						getTextEditor().selectAndReveal(start, length);
-					}
-				}
-			}
-		}
-
-		public void selectionChanged(SelectionChangedEvent event) {
-			/*
-			 * Selection in outline tree changed so set outline tree's
-			 * selection into editor's selection and say it came from outline
-			 * tree
-			 */
-			if (getSelectionManager() != null) { // && getSelectionManager().enableNotify) {
-				
-				ISelection selection = getXSDSelection(event.getSelection());
-				if (selection != null) {
-					getSelectionManager().setSelection(selection, fOutlinePage);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Listener on SSE's source editor's selections that converts DOM
-	 * selections into xsd selections and notifies XSD selection manager
-	 */
-	private class SourceEditorSelectionListener implements ISelectionChangedListener {
-		/**
-		 * Determines XSD node based on object (DOM node)
-		 * 
-		 * @param object
-		 * @return
-		 */
-		private Object getXSDNode(Object object) {
-			// get the element node
-			Element element = null;
-			if (object instanceof Node) {
-				Node node = (Node) object;
-				if (node != null) {
-					if (node.getNodeType() == Node.ELEMENT_NODE) {
-						element = (Element) node;
-					}
-					else if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
-						element = ((Attr) node).getOwnerElement();
-					}
-				}
-			}
-			Object o = element;
-			if (element != null) {
-				Object modelObject = getXSDSchema().getCorrespondingComponent(element);
-				if (modelObject != null) {
-					o = modelObject;
-				}
-			}
-			return o;
-		}
-
-		public void selectionChanged(SelectionChangedEvent event) {
-			ISelection selection = event.getSelection();
-			if (selection instanceof IStructuredSelection) {
-				List xsdSelections = new ArrayList();
-				for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();) {
-					Object domNode = i.next();
-					Object xsdNode = getXSDNode(domNode);
-					if (xsdNode != null) {
-						xsdSelections.add(xsdNode);
-					}
-				}
-
-				if (!xsdSelections.isEmpty()) {
-					StructuredSelection xsdSelection = new StructuredSelection(xsdSelections);
-					getSelectionManager().setSelection(xsdSelection, getTextEditor().getSelectionProvider());
-				}
-			}
-		}
-	}
-
-	/**
-	 * Listener on XSD's selection manager's selections that converts XSD
-	 * selections into DOM selections and notifies SSE's selection provider
-	 */
-	private class XSDSelectionManagerSelectionListener implements ISelectionChangedListener {
-		/**
-		 * Determines DOM node based on object (xsd node)
-		 * 
-		 * @param object
-		 * @return
-		 */
-		private Object getObjectForOtherModel(Object object) {
-			Node node = null;
-
-			if (object instanceof Node) {
-				node = (Node) object;
-			}
-			else if (object instanceof XSDComponent) {
-				node = ((XSDComponent) object).getElement();
-			}
-			else if (object instanceof CategoryAdapter) {
-				node = ((CategoryAdapter) object).getXSDSchema().getElement();
-			}
-            else if (object instanceof String) {
-
-              // The string is expected to be a URI fragment use to identify an XSD component. 
-              // The URI fragment should be relative to the schema being edited in this editor.
-              
-              String uriFragment = (String)object;
-              XSDSchema schema = getXSDSchema();
-              EObject eObject = schema.eResource().getEObject(uriFragment);
-              
-              if (eObject != null) {
-                node = ((XSDComponent)eObject).getElement();
-              }
-            }
-
-			// the text editor can only accept sed nodes!
-			//
-			if (!(node instanceof IDOMNode)) {
-				node = null;
-			}
-			return node;
-		}
-
-		public void selectionChanged(SelectionChangedEvent event) {
-			// do not fire selection in source editor if selection event came
-			// from source editor
-			if (event.getSource() != getTextEditor().getSelectionProvider()) {
-				ISelection selection = event.getSelection();
-				if (selection instanceof IStructuredSelection) {
-					List otherModelObjectList = new ArrayList();
-					for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();) {
-						Object modelObject = i.next();
-						Object otherModelObject = getObjectForOtherModel(modelObject);
-						if (otherModelObject != null) {
-							otherModelObjectList.add(otherModelObject);
-						}
-					}
-					if (!otherModelObjectList.isEmpty()) {
-						StructuredSelection nodeSelection = new StructuredSelection(otherModelObjectList);
-						getTextEditor().getSelectionProvider().setSelection(nodeSelection);
-					}
-				}
-			}
-		}
-	}
-
-	public XSDEditor() {
-		super();
-		xsdSelectionManager = new XSDSelectionManager();
-	}
-
-	InternalPartListener partListener = new InternalPartListener(this);
-
-	// show outline view - defect 266116
-	public void init(IEditorSite site, IEditorInput editorInput) throws PartInitException {
-		super.init(site, editorInput);
-		IWorkbenchWindow dw = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-		IWorkbenchPage page = dw.getActivePage();
-		getSite().getPage().addPartListener(partListener);
-		try {
-			if (page != null) {
-				// page.showView("org.eclipse.ui.views.ContentOutline");
-				page.showView("org.eclipse.ui.views.PropertySheet");
-			}
-		}
-		catch (PartInitException e) {
-			// e.printStackTrace();
-		}
-	}
-
-	// For team support
-	// protected PropertyDirtyChangeListener propertyChangeListener;
-
-	/**
-	 * Creates the pages of this multi-page editor.
-	 * <p>
-	 * Subclasses of <code>MultiPageEditor</code> must implement this
-	 * method.
-	 * </p>
-	 */
-	protected void createPages() {
-		try {
-			if (!loadFile())
-				return;
-
-			xsdModelAdapterFactory = XSDModelAdapterFactoryImpl.getInstance();
-			adapterFactoryLabelProvider = new XSDAdapterFactoryLabelProvider(xsdModelAdapterFactory);
-
-			// source page MUST be created before design page, now
-			createSourcePage();
-
-			addSourcePage();
-			buildXSDModel();
-
-			// comment this line out to hide the graph page
-			// 
-			createAndAddGraphPage();
-
-			int pageIndexToShow = getDefaultPageTypeIndex();
-			setActivePage(pageIndexToShow);
-
-			openOnSelectionHelper = new OpenOnSelectionHelper(textEditor, getXSDSchema());
-			// added selection listeners after setting selection to avoid
-			// navigation exception
-			ISelectionProvider provider = getTextEditor().getSelectionProvider();
-			fSourceEditorSelectionListener = new SourceEditorSelectionListener();
-			if (provider instanceof IPostSelectionProvider) {
-				((IPostSelectionProvider) provider).addPostSelectionChangedListener(fSourceEditorSelectionListener);
-			}
-			else {
-				provider.addSelectionChangedListener(fSourceEditorSelectionListener);
-			}
-			fXSDSelectionListener = new XSDSelectionManagerSelectionListener();
-			getSelectionManager().addSelectionChangedListener(fXSDSelectionListener);
-			
-			addCommandStackListener();
-
-			XSDEditorPlugin.getPlugin().getPreferenceStore().addPropertyChangeListener(preferenceStoreListener);
-		}
-		catch (PartInitException e) {
-			// log for now, unless we find reason not to
-			Logger.log(Logger.INFO, e.getMessage());
-		}
-	}
-
-
-	public void buildXSDModel() {
-		try {
-			Document document = ((IDOMModel) getModel()).getDocument();
-
-			boolean schemaNodeExists = document.getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "schema").getLength() == 1;
-
-			if (document.getChildNodes().getLength() == 0 || !schemaNodeExists) {
-				createDefaultSchemaNode(document);
-			}
-
-			if (document instanceof INodeNotifier) {
-				INodeNotifier notifier = (INodeNotifier) document;
-				schemalNodeAdapter = (XSDModelAdapter) notifier.getAdapterFor(XSDModelAdapter.class);
-				if (schemalNodeAdapter == null) {
-					schemalNodeAdapter = new XSDModelAdapter();
-					notifier.addAdapter(schemalNodeAdapter);
-					schemalNodeAdapter.createSchema(document.getDocumentElement());
-				}
-			}
-		}
-		catch (Exception e) {
-			// XSDEditorPlugin.getPlugin().getMsgLogger().write("Failed to
-			// create Model");
-			// XSDEditorPlugin.getPlugin().getMsgLogger().write(e);
-			// e.printStackTrace();
-		}
-
-
-
-		// XSDResourceFactoryImpl.validate(xsdSchema,
-		// input.getFile().getContents(true));
-	}
-
-	public String[] getPropertyCategories() {
-		return new String[]{"general", "namespace", "other", "attributes", "documentation", "facets"}; //$NON-NLS-1$
-	}
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySheetPageContributor#getContributorId()
-	 */
-	public String getContributorId() {
-		return "org.eclipse.wst.xsd.ui.internal.XSDEditor";
-		// return getSite().getId();
-	}
-
-	protected CommandStackListener commandStackListener;
-
-	protected void addCommandStackListener() {
-		if (commandStackListener == null) {
-			IStructuredTextUndoManager undoManager = getModel().getUndoManager();
-			commandStackListener = new CommandStackListener() {
-				/**
-				 * @see org.eclipse.emf.common.command.CommandStackListener#commandStackChanged(EventObject)
-				 */
-				public void commandStackChanged(EventObject event) {
-					Object obj = event.getSource();
-					if (obj instanceof BasicCommandStack) {
-						BasicCommandStack stack = (BasicCommandStack) obj;
-						Command recentCommand = stack.getMostRecentCommand();
-						Command redoCommand = stack.getRedoCommand();
-						Command undoCommand = stack.getUndoCommand();
-						if (recentCommand == redoCommand) {
-							// there must have been an undo reset info tasks
-							resetInformationTasks();
-						}
-					}
-				}
-			};
-
-			// TODO WTP Port
-			// undoManager.getCommandStack().addCommandStackListener(commandStackListener);
-
-		}
-	}
-
-	protected void pageChange(int arg) {
-		super.pageChange(arg);
-	}
-
-	protected void removeCommandStackListener() {
-		if (commandStackListener != null) {
-			IStructuredTextUndoManager undoManager = getModel().getUndoManager();
-			// TODO WTP Port
-			// undoManager.getCommandStack().removeCommandStackListener(commandStackListener);
-		}
-	}
-
-	// This is from the IValidateEditEditor interface
-	/*
-	 * public void undoChange() { StructuredTextUndoManager undoManager =
-	 * textEditor.getModel().getUndoManager(); undoManager.undo(); // Make the
-	 * editor clean textEditor.getModel().setDirtyState(false); }
-	 */
-
-	private class PreferenceStoreListener implements IPropertyChangeListener {
-		/**
-		 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(PropertyChangeEvent)
-		 */
-		public void propertyChange(PropertyChangeEvent event) {
-		}
-	}
-
-	protected IPropertyChangeListener preferenceStoreListener = new PreferenceStoreListener();
-
-	protected int getDefaultPageTypeIndex() {
-		int pageIndex = sourcePageIndex;
-
-		if (XSDEditorPlugin.getPlugin().getDefaultPage().equals(XSDEditorPlugin.GRAPH_PAGE)) {
-			if (graphPageIndex != -1)
-				pageIndex = graphPageIndex;
-		}
-
-		return pageIndex;
-	}
-
-	int currentPage = -1;
-
-	public String getCurrentPageType() {
-		// should update pref. for valid pages
-		if (getActivePage() != -1) {
-			currentPage = getActivePage();
-		}
-		if (currentPage == graphPageIndex) {
-			return XSDEditorPlugin.GRAPH_PAGE;
-		}
-		else {
-			return XSDEditorPlugin.SOURCE_PAGE;
-		}
-	}
-
-	public Object getActivePart() {
-		return getSite().getWorkbenchWindow().getActivePage().getActivePart();
-	}
-
-	public void dispose() {
-		// some things in the configuration need to clean
-		// up after themselves
-		if (fOutlinePage != null) {
-			if (fOutlinePage instanceof ConfigurableContentOutlinePage && fOutlineListener != null) {
-				((ConfigurableContentOutlinePage) fOutlinePage).removeDoubleClickListener(fOutlineListener);
-			}
-			if (fOutlineListener != null) {
-				fOutlinePage.removeSelectionChangedListener(fOutlineListener);
-			}
-		}
-		ISelectionProvider provider = getTextEditor().getSelectionProvider();
-		if (provider instanceof IPostSelectionProvider) {
-			((IPostSelectionProvider) provider).removePostSelectionChangedListener(fSourceEditorSelectionListener);
-		}
-		else {
-			provider.removeSelectionChangedListener(fSourceEditorSelectionListener);
-		}
-		getSelectionManager().removeSelectionChangedListener(fXSDSelectionListener);
-		
-		// propertyChangeListener.dispose();
-		removeCommandStackListener();
-
-		XSDEditorPlugin.getPlugin().setDefaultPage(getCurrentPageType());
-		XSDEditorPlugin.getPlugin().getPreferenceStore().removePropertyChangeListener(preferenceStoreListener);
-
-		getSite().getPage().removePartListener(partListener);
-
-		// KB: Temporary solution for bug 99468
-		IStructuredModel myModel = textEditor.getModel();
-		if (myModel != null && myModel instanceof IStructuredDocumentListener)
-			myModel.getStructuredDocument().removeDocumentChangingListener((IStructuredDocumentListener) myModel);
-
-		textEditor = null;
-		resourceFile = null;
-		xsdSelectionManager = null;
-		schemalNodeAdapter = null;
-		result = null;
-		partListener = null;
-		commandStackListener = null;
-		preferenceStoreListener = null;
-		openOnSelectionHelper = null;
-		graphViewer = null;
-
-		super.dispose();
-
-		// release the schema model
-		//
-		if (schemalNodeAdapter != null) {
-			schemalNodeAdapter.clear();
-			schemalNodeAdapter = null;
-		}
-	}
-
-	protected boolean loadFile() {
-		Object input = getEditorInput();
-
-		if (input instanceof IFileEditorInput) {
-			resourceFile = ((IFileEditorInput) input).getFile();
-		}
-		else if (input instanceof ILocationProvider) {
-			IPath path = ((ILocationProvider) input).getPath(input);
-			String ext = path.getFileExtension();
-			if (ext != null && ext.equals("xsd")) {
-				return true;
-			}
-			return false;
-		}
-		else {
-			return false;
-		}
-		return true;
-	}
-
-	/**
-	 * Method openOnGlobalReference. The comp argument is a resolved xsd
-	 * schema object from another file. This is created and called from
-	 * another schema model to allow F3 navigation to open a new editor and
-	 * choose the referenced object within that editor context
-	 * 
-	 * @param comp
-	 */
-	public void openOnGlobalReference(XSDConcreteComponent comp) {
-		openOnSelectionHelper.openOnGlobalReference(comp);
-	}
-
-	protected OpenOnSelectionHelper openOnSelectionHelper;
-
-	public OpenOnSelectionHelper getOpenOnSelectionHelper() {
-		return openOnSelectionHelper;
-	}
-
-	/**
-	 * @see org.eclipse.wst.xsd.ui.internal.XSDMultiPageEditorPart#createTextEditor()
-	 */
-	protected StructuredTextEditor createTextEditor() {
-		textEditor = new StructuredTextEditor();
-		return textEditor;
-	}
-
-	/*
-	 * @see StructuredTextMultiPageEditorPart#createSourcePage()
-	 */
-	protected void createSourcePage() throws PartInitException {
-		super.createSourcePage();
-	}
-
-	int sourcePageIndex = -1;
-
-	/**
-	 * Adds the source page of the multi-page editor.
-	 */
-	protected void addSourcePage() throws PartInitException {
-
-		sourcePageIndex = addPage(textEditor, getEditorInput());
-		setPageText(sourcePageIndex, XSDEditorPlugin.getXSDString("_UI_TAB_SOURCE"));
-
-		// the update's critical, to get viewer selection manager and
-		// highlighting to work
-		textEditor.update();
-		firePropertyChange(PROP_TITLE);
-	}
-
-	int graphPageIndex = -1;
-	XSDGraphViewer graphViewer;
-
-	/**
-	 * Creates the graph page and adds it to the multi-page editor.
-	 */
-	protected void createAndAddGraphPage() throws PartInitException {
-		graphViewer = new XSDGraphViewer(this);
-		graphViewer.setSchema(getXSDSchema());
-		Control graphControl = graphViewer.createControl(getContainer());
-		graphPageIndex = addPage(graphControl);
-		setPageText(graphPageIndex, XSDEditorPlugin.getXSDString("_UI_TAB_GRAPH"));
-
-		// graphViewer.setViewerSelectionManager(textEditor.getViewerSelectionManager());
-		graphViewer.setSelectionManager(getSelectionManager());
-
-		// this forces the editor to initially select the top level schema
-		// object
-		//
-		if (getXSDSchema() != null) {
-			getSelectionManager().setSelection(new StructuredSelection(getXSDSchema()));
-		}
-	}
-
-	protected XSDModelAdapterFactoryImpl xsdModelAdapterFactory;
-	protected XSDAdapterFactoryLabelProvider adapterFactoryLabelProvider;
-	private IPropertySheetPage fPropertySheetPage;
-	private IContentOutlinePage fOutlinePage;
-	private OutlineTreeSelectionChangeListener fOutlineListener;
-	private SourceEditorSelectionListener fSourceEditorSelectionListener;
-	private XSDSelectionManagerSelectionListener fXSDSelectionListener;
-
-	/*
-	 * @see IAdaptable#getAdapter(Class)
-	 */
-	public Object getAdapter(Class key) {
-		Object result = null;
-		if (key == ISelectionProvider.class) {
-			result = xsdSelectionManager;
-		}
-        else if (IPropertySheetPage.class.equals(key)) {
-			fPropertySheetPage = new XSDTabbedPropertySheetPage(this);
-
-			((XSDTabbedPropertySheetPage) fPropertySheetPage).setXSDModelAdapterFactory(xsdModelAdapterFactory);
-			((XSDTabbedPropertySheetPage) fPropertySheetPage).setSelectionManager(getSelectionManager());
-			((XSDTabbedPropertySheetPage) fPropertySheetPage).setXSDSchema(getXSDSchema());
-
-			return fPropertySheetPage;
-		}
-		else if (IContentOutlinePage.class.equals(key)) {
-			if (fOutlinePage == null || fOutlinePage.getControl() == null || fOutlinePage.getControl().isDisposed()) {
-				IContentOutlinePage page = (IContentOutlinePage) super.getAdapter(key);
-				if (page != null) {
-					fOutlineListener = new OutlineTreeSelectionChangeListener();
-					page.addSelectionChangedListener(fOutlineListener);
-					if (page instanceof ConfigurableContentOutlinePage) {
-						((ConfigurableContentOutlinePage) page).addDoubleClickListener(fOutlineListener);
-					}
-				}
-				fOutlinePage = page;
-				// XSDContentOutlinePage outlinePage = new
-				// XSDContentOutlinePage(this);
-				// XSDContentProvider xsdContentProvider = new
-				// XSDContentProvider(xsdModelAdapterFactory);
-				// xsdContentProvider.setXSDSchema(getXSDSchema());
-				// outlinePage.setContentProvider(xsdContentProvider);
-				// outlinePage.setLabelProvider(adapterFactoryLabelProvider);
-				// outlinePage.setModel(getXSDSchema().getDocument());
-				//
-				// fOutlinePage = outlinePage;
-			}
-			return fOutlinePage;
-		}
-		else {
-			result = super.getAdapter(key);
-		}
-		return result;
-	}
-
-
-	public XSDModelAdapterFactoryImpl getXSDModelAdapterFactory() {
-		return xsdModelAdapterFactory;
-	}
-
-	public XSDAdapterFactoryLabelProvider getLabelProvider() {
-		return adapterFactoryLabelProvider;
-	}
-
-
-	public XSDSelectionManager getSelectionManager() {
-		return xsdSelectionManager;
-	}
-
-	/**
-	 * @see org.eclipse.wst.xsd.ui.internal.XSDMultiPageEditorPart#doSaveAs()
-	 */
-	public void doSaveAs() {
-		super.doSaveAs();
-	}
-
-	public void doSave(org.eclipse.core.runtime.IProgressMonitor monitor) {
-		super.doSave(monitor);
-	}
-
-	public void reparseSchema() {
-		// TODO cs : Are there no better ways to make the model
-		// reload it's dependencies? This seems rather extreme.
-		//
-		Document document = ((IDOMModel) getModel()).getDocument();
-		if (schemalNodeAdapter != null) {
-			schemalNodeAdapter.createSchema(document.getDocumentElement());
-		}
-	}
-
-	/**
-	 * Returns the xsdSchema.
-	 * 
-	 * @return XSDSchema
-	 */
-	public XSDSchema getXSDSchema() {
-		return schemalNodeAdapter != null ? schemalNodeAdapter.getSchema() : null;
-	}
-
-
-	/**
-	 * Returns the resourceFile.
-	 * 
-	 * @return IFile
-	 */
-	public IFile getFileResource() {
-		return resourceFile;
-	}
-
-	/**
-	 * Get the IDocument from the text viewer
-	 */
-	public IDocument getEditorIDocument() {
-		IDocument document = textEditor.getTextViewer().getDocument();
-		return document;
-	}
-
-	/**
-	 * Create ref integrity tasks in task list
-	 */
-	public void createTasksInTaskList(ArrayList messages) {
-		// DisplayErrorInTaskList tasks = new
-		// DisplayErrorInTaskList(getEditorIDocument(), getFileResource(),
-		// messages);
-		// tasks.run();
-	}
-
-	public void resetInformationTasks() {
-		// DisplayErrorInTaskList.removeInfoMarkers(getFileResource());
-	}
-
-	public XSDGraphViewer getGraphViewer() {
-		return graphViewer;
-	}
-
-	public IEditorPart getActiveEditorPage() {
-		return getActiveEditor();
-	}
-
-	public StructuredTextEditor getTextEditor() {
-		return textEditor;
-	}
-
-	class InternalPartListener implements IPartListener {
-		XSDEditor editor;
-
-		public InternalPartListener(XSDEditor editor) {
-			this.editor = editor;
-		}
-
-		public void partActivated(IWorkbenchPart part) {
-			if (part == editor) {
-				ISelection selection = getSelectionManager().getSelection();
-				if (selection != null) {
-					if (getCurrentPageType().equals(XSDEditorPlugin.GRAPH_PAGE)) {
-						getSelectionManager().selectionChanged(new SelectionChangedEvent(editor.getGraphViewer().getComponentViewer(), selection));
-					}
-					else if (getCurrentPageType().equals(XSDEditorPlugin.SOURCE_PAGE)) {
-						getSelectionManager().setSelection(selection);
-					}
-				}
-			}
-		}
-
-		public void partBroughtToTop(IWorkbenchPart part) {
-		}
-
-		public void partClosed(IWorkbenchPart part) {
-		}
-
-		public void partDeactivated(IWorkbenchPart part) {
-		}
-
-		public void partOpened(IWorkbenchPart part) {
-		}
-	}
-
-
-	/**
-	 * Method createDefaultSchemaNode. Should only be called to insert a
-	 * schema node into an empty document
-	 */
-	public void createDefaultSchemaNode(Document document) {
-		if (document.getChildNodes().getLength() == 0) {
-			// if it is a completely empty file, then add the encoding and
-			// version processing instruction
-			// TODO String encoding = EncodingHelper.getDefaultEncodingTag();
-			String encoding = "UTF-8";
-			ProcessingInstruction instr = document.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"" + encoding + "\"");
-			document.appendChild(instr);
-		}
-
-		// Create a default schema tag now
-
-		// String defaultPrefixForTargetNamespace =
-		// getFileResource().getProjectRelativePath().removeFileExtension().lastSegment();
-		String defaultPrefixForTargetNamespace = "tns";
-		String prefixForSchemaNamespace = "";
-		String schemaNamespaceAttribute = "xmlns";
-		if (XSDEditorPlugin.getPlugin().isQualifyXMLSchemaLanguage()) {
-			// Added this if check before disallowing blank prefixes in the
-			// preferences...
-			// Can take this out. See also NewXSDWizard
-			if (XSDEditorPlugin.getPlugin().getXMLSchemaPrefix().trim().length() > 0) {
-				prefixForSchemaNamespace = XSDEditorPlugin.getPlugin().getXMLSchemaPrefix() + ":";
-				schemaNamespaceAttribute += ":" + XSDEditorPlugin.getPlugin().getXMLSchemaPrefix();
-			}
-		}
-
-		document.appendChild(document.createTextNode("\n"));
-		Element element = document.createElement(prefixForSchemaNamespace + XSDConstants.SCHEMA_ELEMENT_TAG);
-
-		element.setAttribute(schemaNamespaceAttribute, "http://www.w3.org/2001/XMLSchema");
-
-		String defaultTargetURI = XSDEditorPlugin.getPlugin().getXMLSchemaTargetNamespace();
-		element.setAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE, defaultTargetURI);
-		element.setAttribute("xmlns:" + defaultPrefixForTargetNamespace, defaultTargetURI);
-
-		document.appendChild(element);
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorAdapter.java
deleted file mode 100644
index 7591376..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorAdapter.java
+++ /dev/null
@@ -1,27 +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;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.text.IDocument;
-
-public interface XSDEditorAdapter
-{
-  public IFile getFileResource();
-
-  public IDocument getEditorIDocument();
-
-  public void createTasksInTaskList(ArrayList messages);
-
-  public void resetInformationTasks();
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorPlugin.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorPlugin.java
deleted file mode 100644
index dbcfdd1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditorPlugin.java
+++ /dev/null
@@ -1,326 +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;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.text.MessageFormat;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
-
-
-public class XSDEditorPlugin extends AbstractUIPlugin {
-	public final static String PLUGIN_ID = "org.eclipse.wst.xsd.ui";
-	public final static String XSD_EDITOR_ID = "org.eclipse.wst.xsd.ui.XSDEditor";
-
-	public final static String DEFAULT_TARGET_NAMESPACE = "http://www.example.org";
-
-	protected static XSDEditorPlugin plugin;
-
-	// protected XMLSchemaPackage xmlschemaPackage;
-	// KCPort private static MsgLogger myMsgLogger;
-
-	public XSDEditorPlugin() {
-		super();
-		plugin = this;
-		// KCPort myMsgLogger = getMsgLogger();
-		// myMsgLogger.write(Level.CONFIG, new BuildInfo());
-		// myMsgLogger.write(Level.CONFIG, BuildInfo.getWSABuildLevel());
-	}
-
-	/**
-	 * @deprecated use StructuredModelManager.getModelManager(); instead.
-	 */
-	public static IModelManager getModelManager() {
-		return StructuredModelManager.getModelManager();
-	}
-
-
-	/**
-	 * Get the Install URL
-	 */
-	public static URL getInstallURL() {
-		try
-	    {
-	      return FileLocator.resolve(plugin.getBundle().getEntry("/"));
-	    }
-	    catch (IOException e)
-	    {
-	      return null;
-	    }
-	}
-
-	/**
-	 * Return the plugin physical directory location
-	 */
-	public static IPath getPluginLocation() {
-		try {
-			IPath installPath = new Path(getInstallURL().toExternalForm()).removeTrailingSeparator();
-			String installStr = FileLocator.toFileURL(new URL(installPath.toString())).getFile();
-			return new Path(installStr);
-		}
-		catch (IOException e) {
-
-		}
-		return null;
-	}
-
-	/**
-	 * Get the metadata directory for this plugin
-	 */
-	public static String getMetaDataDirectory() {
-		return getPlugin().getStateLocation().toOSString();
-	}
-
-	/**
-	 * Get the one xmlschema package.
-	 */
-	// public XMLSchemaPackage getXMLSchemaPackage()
-	// {
-	// return xmlschemaPackage;
-	// }
-	// /**
-	// * Get the one xmlschema factory.
-	// */
-	// public XMLSchemaFactory getXMLSchemaFactory()
-	// {
-	// return (XMLSchemaFactory)xmlschemaPackage.getEFactoryInstance();
-	// }
-	/**
-	 * Get the singleton instance.
-	 */
-	public static XSDEditorPlugin getPlugin() {
-		return plugin;
-	}
-
-	public static Image getXSDImage(String iconName) {
-		return getPlugin().getImage(iconName);
-	}
-
-	public Image getImage(String iconName) {
-		ImageRegistry imageRegistry = getImageRegistry();
-
-		if (imageRegistry.get(iconName) != null) {
-			return imageRegistry.get(iconName);
-		}
-		else {
-			imageRegistry.put(iconName, ImageDescriptor.createFromFile(getClass(), iconName));
-			return imageRegistry.get(iconName);
-		}
-	}
-
-	public static String getXSDString(String key) {
-		return Platform.getResourceBundle(plugin.getBundle()).getString(key);
-	}
-
-	/**
-	 * This gets the string resource and does one substitution.
-	 */
-	public String getString(String key, Object s1) {
-		return MessageFormat.format(Platform.getResourceBundle(getBundle()).getString(key), new Object[]{s1});
-	}
-
-	// public IWorkspace getWorkspace()
-	// {
-	// return ResourcesPlugin.getWorkspace();
-	// }
-
-	public static Shell getShell() {
-		return getPlugin().getWorkbench().getActiveWorkbenchWindow().getShell();
-	}
-
-	/**
-	 * Get the xml schema default namespace prefix
-	 */
-	public String getXMLSchemaPrefix() {
-		return getPreferenceStore().getString(CONST_XSD_DEFAULT_PREFIX_TEXT);
-	}
-
-	/**
-	 * Get the xml schema default target namespace
-	 */
-	public String getXMLSchemaTargetNamespace() {
-		String targetNamespace = getPreferenceStore().getString(CONST_DEFAULT_TARGET_NAMESPACE);
-		if (!targetNamespace.endsWith("/")) {
-			targetNamespace = targetNamespace + "/";
-		}
-		return targetNamespace;
-	}
-
-	/**
-	 * Get the xml schema language qualification
-	 */
-	public boolean isQualifyXMLSchemaLanguage() {
-		return getPreferenceStore().getBoolean(CONST_XSD_LANGUAGE_QUALIFY);
-	}
-
-	/**
-	 * Method isCombinedDesignAndSourceView.
-	 * 
-	 * @return boolean if the editor should have a single page that is a
-	 *         combined design and source page
-	 */
-	public boolean isCombinedDesignAndSourceView() {
-		return COMBINED_LAYOUT.equals(getPreferenceStore().getString(EDITOR_LAYOUT));
-	}
-
-	public int getDesignLayout() {
-		if (TOP_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
-			return SWT.VERTICAL;
-		}
-		else if (BOTTOM_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
-			return SWT.VERTICAL;
-		}
-		else if (LEFT_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
-			return SWT.HORIZONTAL;
-		}
-		else if (RIGHT_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
-			return SWT.HORIZONTAL;
-		}
-		return SWT.HORIZONTAL;
-	}
-
-	public String getDesignLayoutPosition() {
-		if (TOP_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
-			return TOP_LAYOUT;
-		}
-		else if (BOTTOM_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
-			return BOTTOM_LAYOUT;
-		}
-		else if (LEFT_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
-			return LEFT_LAYOUT;
-		}
-		else if (RIGHT_LAYOUT.equals(getPreferenceStore().getString(DESIGN_LAYOUT))) {
-			return RIGHT_LAYOUT;
-		}
-		return RIGHT_LAYOUT;
-	}
-
-	/*---------------------------------------------------------------------------*/
-	/* the following methods are impls for the IPluginHelper interface */
-	/*---------------------------------------------------------------------------*/
-	// public void setMsgLoggerConfig(Hashtable msgLoggerConfig)
-	// {
-	// getMsgLogger().setMsgLoggerConfig(msgLoggerConfig);
-	// }
-	//
-	// public Hashtable getMsgLoggerConfig(Plugin plugin)
-	// {
-	// return (new PluginHelperImpl().getMsgLoggerConfig(plugin));
-	// }
-	//
-	// public Hashtable getMsgLoggerConfig()
-	// {
-	// return (getMsgLoggerConfig(this));
-	// }
-	//
-	// /**
-	// * XSDEditor and XSDModel use the same logger. See plugin.xml
-	// */
-	// public MsgLogger getMsgLogger()
-	// {
-	// if (myMsgLogger == null)
-	// {
-	// myMsgLogger = (MsgLogger) MsgLogger.getFactory().getLogger(new
-	// PluginHelperImpl().getMsgLoggerName(this), this);
-	// }
-	// return (myMsgLogger);
-	// }
-	public static final String CONST_XSD_DEFAULT_PREFIX_TEXT = "org.eclipse.wst.xmlschema.xsdDefaultPrefixText";
-	public static final String CONST_XSD_LANGUAGE_QUALIFY = "org.eclipse.wst.xmlschema.xsdQualify";
-	public static final String CONST_DEFAULT_TARGET_NAMESPACE = "org.eclipse.wst.xmlschema.defaultTargetnamespaceText";
-
-	// Preference to store which page should come up as the default page in
-	// the editor. This setting is based
-	// on the page that was left showing the last time the editor was closed.
-	public static String DEFAULT_PAGE = "org.eclipse.wst.xsd.ui.internal.defaultPage";
-	public static String DESIGN_PAGE = "org.eclipse.wst.xsd.ui.internal.designPage";
-	public static String SOURCE_PAGE = "org.eclipse.wst.xsd.ui.internal.sourcePage";
-	public static String GRAPH_PAGE = "org.eclipse.wst.xsd.ui.internal.graphPage";
-
-	public static String EDITOR_LAYOUT = "org.eclipse.wst.xsd.ui.internal.editorlayout";
-	public static String COMBINED_LAYOUT = "org.eclipse.wst.xsd.ui.internal.combined";
-	public static String SEPARATE_LAYOUT = "org.eclipse.wst.xsd.ui.internal.separate";
-
-	public static String DESIGN_LAYOUT = "org.eclipse.wst.xsd.ui.internal.designlayout";
-	public static String TOP_LAYOUT = "org.eclipse.wst.xsd.ui.internal.top";
-	public static String BOTTOM_LAYOUT = "org.eclipse.wst.xsd.ui.internal.bottom";
-	public static String LEFT_LAYOUT = "org.eclipse.wst.xsd.ui.internal.left";
-	public static String RIGHT_LAYOUT = "org.eclipse.wst.xsd.ui.internal.right";
-
-	/**
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#initializeDefaultPreferences(IPreferenceStore)
-	 */
-	protected void initializeDefaultPreferences(IPreferenceStore store) {
-		super.initializeDefaultPreferences(store);
-
-		store.setDefault(CONST_XSD_DEFAULT_PREFIX_TEXT, "xsd");
-		store.setDefault(CONST_XSD_LANGUAGE_QUALIFY, false);
-
-		store.setDefault(DEFAULT_PAGE, DESIGN_PAGE);
-		store.setDefault(EDITOR_LAYOUT, COMBINED_LAYOUT);
-		store.setDefault(DESIGN_LAYOUT, RIGHT_LAYOUT);
-
-		store.setDefault(XSDEditorPlugin.CONST_DEFAULT_TARGET_NAMESPACE, DEFAULT_TARGET_NAMESPACE);
-	}
-
-	public void setDefaultPage(String page) {
-		getPreferenceStore().setValue(DEFAULT_PAGE, page);
-	}
-
-	/**
-	 * Method getDefaultPage.
-	 * 
-	 * @return String value of the string constant that is the default page
-	 *         the editor should turn to when first opened. Changes to the
-	 *         last visible page when the editor was closed
-	 */
-	public String getDefaultPage() {
-		return getPreferenceStore().getString(DEFAULT_PAGE);
-	}
-
-	protected URL baseURL;
-
-	public URL getBaseURL() {
-		try
-	    {
-	      return FileLocator.resolve(getBundle().getEntry("/"));
-	    }
-	    catch (IOException e)
-	    {
-	      return null;
-	    }
-	}
-
-	public Image getIconImage(String object) {
-		try {
-			return ExtendedImageRegistry.getInstance().getImage(new URL(getBaseURL() + "icons/" + object + ".gif"));
-		}
-		catch (MalformedURLException exception) {
-			System.out.println("Failed to load image for '" + object + "'");
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlink.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlink.java
deleted file mode 100644
index 13d4d57..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlink.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
-
-package org.eclipse.wst.xsd.ui.internal;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-
-/**
- * XSDHyperlink knows how to open links from XSD files.
- * 
- * @see XSDHyperlinkDetector
- */
-public class XSDHyperlink implements IHyperlink
-{
-  private IRegion fRegion;
-  private XSDConcreteComponent fComponent;
-
-  public XSDHyperlink(IRegion region, XSDConcreteComponent component)
-  {
-    fRegion = region;
-    fComponent = component;
-  }
-
-  public IRegion getHyperlinkRegion()
-  {
-    return fRegion;
-  }
-
-  public String getTypeLabel()
-  {
-    return null;
-  }
-
-  public String getHyperlinkText()
-  {
-    return null;
-  }
-
-  public void open()
-  {
-    XSDSchema schema = fComponent.getSchema();
-
-    if (schema == null)
-    {
-      return;
-    }
-
-    String schemaLocation = schema.getSchemaLocation();
-    schemaLocation = URIHelper.removePlatformResourceProtocol(schemaLocation);
-    IPath schemaPath = new Path(schemaLocation);
-    IFile schemaFile = ResourcesPlugin.getWorkspace().getRoot().getFile(schemaPath);
-
-    boolean fileExists = schemaFile != null && schemaFile.exists();
-
-    if (!fileExists)
-    {
-      return;
-    }
-    IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-    if (workbenchWindow != null)
-    {
-      IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
-      IEditorPart editorPart = workbenchPage.getActiveEditor();
-      
-      workbenchPage.getNavigationHistory().markLocation(editorPart);
-      
-      try
-      {
-        editorPart = IDE.openEditor(workbenchPage, schemaFile, true);
-        if (editorPart instanceof XSDEditor)
-        {
-          ((XSDEditor) editorPart).openOnGlobalReference(fComponent);
-        }
-      }
-      catch (PartInitException pie)
-      {
-        Logger.log(Logger.WARNING_DEBUG, pie.getMessage(), pie);
-      }
-    }
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlinkDetector.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlinkDetector.java
deleted file mode 100644
index 6d3f2ad..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDHyperlinkDetector.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 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
- *     Jens Lukowski/Innoopract - initial renaming/restructuring
- *******************************************************************************/
-
-package org.eclipse.wst.xsd.ui.internal;
-
-import java.util.List;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDIdentityConstraintDefinition;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.XSDVariety;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Node;
-
-/**
- * Detects hyperlinks for XSD files. Used by the XSD text editor to provide a
- * "Go to declaration" functionality similar with the one provided by the Java
- * editor.
- */
-public class XSDHyperlinkDetector extends BaseHyperlinkDetector
-{
-  /**
-   * Determines whether an attribute is "linkable" that is, the component it
-   * points to can be the target of a "go to definition" navigation. Derived
-   * classes should override.
-   * 
-   * @param name the attribute name. Must not be null.
-   * @return true if the attribute is linkable, false otherwise.
-   */
-  protected boolean isLinkableAttribute(String name)
-  {
-    boolean isLinkable = name.equals(XSDConstants.TYPE_ATTRIBUTE) ||
-      name.equals(XSDConstants.REFER_ATTRIBUTE) || 
-      name.equals(XSDConstants.REF_ATTRIBUTE) || 
-      name.equals(XSDConstants.BASE_ATTRIBUTE) || 
-      name.equals(XSDConstants.SCHEMALOCATION_ATTRIBUTE) || 
-      name.equals(XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE) ||
-      name.equals(XSDConstants.ITEMTYPE_ATTRIBUTE) ||
-      name.equals(XSDConstants.MEMBERTYPES_ATTRIBUTE)
-      ;
-
-    return isLinkable;
-  }
-
-  /**
-   * Creates a hyperlink based on the selected node. Derived classes should
-   * override.
-   * 
-   * @param document the source document.
-   * @param node the node under the cursor.
-   * @param region the text region to use to create the hyperlink.
-   * @return a new IHyperlink for the node or null if one cannot be created.
-   */
-  protected IHyperlink createHyperlink(IDocument document, IDOMNode node, IRegion region)
-  {
-    XSDSchema xsdSchema = getXSDSchema(document);
-
-    if (xsdSchema == null)
-    {
-      return null;
-    }
-
-    XSDConcreteComponent targetComponent = getTargetXSDComponent(xsdSchema, node);
-
-    if (targetComponent != null)
-    {
-      IRegion nodeRegion = getHyperlinkRegion(node);
-
-      return new XSDHyperlink(nodeRegion, targetComponent);
-    }
-
-    return null;
-  }
-
-  /**
-   * Finds the XSD component for the given node.
-   * 
-   * @param xsdSchema cannot be null
-   * @param node cannot be null
-   * @return XSDConcreteComponent
-   */
-  private XSDConcreteComponent getTargetXSDComponent(XSDSchema xsdSchema, IDOMNode node)
-  {
-    XSDConcreteComponent component = null;
-
-    XSDConcreteComponent xsdComp = xsdSchema.getCorrespondingComponent((Node) node);
-    if (xsdComp instanceof XSDElementDeclaration)
-    {
-      XSDElementDeclaration elementDecl = (XSDElementDeclaration) xsdComp;
-      if (elementDecl.isElementDeclarationReference())
-      {
-        component = elementDecl.getResolvedElementDeclaration();
-      }
-      else
-      {
-        XSDConcreteComponent typeDef = null;
-        if (elementDecl.getAnonymousTypeDefinition() == null)
-        {
-          typeDef = elementDecl.getTypeDefinition();
-        }
-
-        XSDConcreteComponent subGroupAffiliation = elementDecl.getSubstitutionGroupAffiliation();
-
-        if (typeDef != null && subGroupAffiliation != null)
-        {
-          // we have 2 things we can navigate to, if the
-          // cursor is anywhere on the substitution
-          // attribute
-          // then jump to that, otherwise just go to the
-          // typeDef.
-          if (node instanceof Attr && ((Attr) node).getLocalName().equals(XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE))
-          {
-            component = subGroupAffiliation;
-          }
-          else
-          {
-            // try to reveal the type now. On success,
-            // then we return true.
-            // if we fail, set the substitution group
-            // as
-            // the object to reveal as a backup plan.
-            // ISSUE: how to set backup?
-            // if (revealObject(typeDef)) {
-            component = typeDef;
-            // }
-            // else {
-            // objectToReveal = subGroupAffiliation;
-            // }
-          }
-        }
-        else
-        {
-          // one or more of these is null. If the
-          // typeDef is
-          // non-null, use it. Otherwise
-          // try and use the substitution group
-          component = typeDef != null ? typeDef : subGroupAffiliation;
-        }
-      }
-    }
-    else if (xsdComp instanceof XSDModelGroupDefinition)
-    {
-      XSDModelGroupDefinition elementDecl = (XSDModelGroupDefinition) xsdComp;
-      if (elementDecl.isModelGroupDefinitionReference())
-      {
-        component = elementDecl.getResolvedModelGroupDefinition();
-      }
-    }
-    else if (xsdComp instanceof XSDAttributeDeclaration)
-    {
-      XSDAttributeDeclaration attrDecl = (XSDAttributeDeclaration) xsdComp;
-      if (attrDecl.isAttributeDeclarationReference())
-      {
-        component = attrDecl.getResolvedAttributeDeclaration();
-      }
-      else if (attrDecl.getAnonymousTypeDefinition() == null)
-      {
-        component = attrDecl.getTypeDefinition();
-      }
-    }
-    else if (xsdComp instanceof XSDAttributeGroupDefinition)
-    {
-      XSDAttributeGroupDefinition attrGroupDef = (XSDAttributeGroupDefinition) xsdComp;
-      if (attrGroupDef.isAttributeGroupDefinitionReference())
-      {
-        component = attrGroupDef.getResolvedAttributeGroupDefinition();
-      }
-    }
-    else if (xsdComp instanceof XSDIdentityConstraintDefinition)
-    {
-      XSDIdentityConstraintDefinition idConstraintDef = (XSDIdentityConstraintDefinition) xsdComp;
-      if (idConstraintDef.getReferencedKey() != null)
-      {
-        component = idConstraintDef.getReferencedKey();
-      }
-    }
-    else if (xsdComp instanceof XSDSimpleTypeDefinition)
-    {
-      XSDSimpleTypeDefinition typeDef = (XSDSimpleTypeDefinition) xsdComp;
-
-      // Simple types can be one of restriction, list or union.
-
-      XSDVariety variety = typeDef.getVariety();
-      int varietyType = variety.getValue();
-      
-      switch (varietyType)
-      {
-        case XSDVariety.ATOMIC : 
-          {
-            component = typeDef.getBaseTypeDefinition();
-          }
-          break;
-        case XSDVariety.LIST : 
-          {
-            component = typeDef.getItemTypeDefinition();
-          }
-          break;
-        case XSDVariety.UNION : 
-          {
-            List memberTypes = typeDef.getMemberTypeDefinitions();
-            if (memberTypes != null && memberTypes.size() > 0)
-            {
-              // ISSUE: What if there are more than one type?
-              // This could be a case for multiple hyperlinks at the same
-              // location.
-              component = (XSDConcreteComponent) memberTypes.get(0);
-            }
-          }
-          break;
-      }
-    }
-    else if (xsdComp instanceof XSDTypeDefinition)
-    {
-      XSDTypeDefinition typeDef = (XSDTypeDefinition) xsdComp;
-      component = typeDef.getBaseType();
-    }
-    else if (xsdComp instanceof XSDSchemaDirective)
-    {
-      XSDSchemaDirective directive = (XSDSchemaDirective) xsdComp;
-      component = directive.getResolvedSchema();
-    }
-
-    // Avoid types located in the schema for schema (the built in XSD types) 
-    // as we don't want to navigate to their definition.
-    
-    if (component != null)
-    {
-      XSDSchema schema =  component.getSchema();
-
-      if (schema.equals(schema.getSchemaForSchema())) {
-        component = null;
-      }
-    }
-    
-    return component;
-  }
-
-  /**
-   * Gets the xsd schema from document
-   * 
-   * @param document
-   * @return XSDSchema or null of one does not exist yet for document
-   */
-  private XSDSchema getXSDSchema(IDocument document)
-  {
-    XSDSchema schema = null;
-    IStructuredModel model = StructuredModelManager.getModelManager().getExistingModelForRead(document);
-    if (model != null)
-    {
-      try
-      {
-        if (model instanceof IDOMModel)
-        {
-          IDOMDocument domDoc = ((IDOMModel) model).getDocument();
-          if (domDoc != null)
-          {
-            XSDModelAdapter modelAdapter = (XSDModelAdapter) domDoc.getExistingAdapter(XSDModelAdapter.class);
-            /*
-             * ISSUE: Didn't want to go through initializing schema if it does
-             * not already exist, so just attempted to get existing adapter. If
-             * doesn't exist, just don't bother working.
-             */
-            if (modelAdapter != null)
-              schema = modelAdapter.getSchema();
-          }
-        }
-      }
-      finally
-      {
-        model.releaseFromRead();
-      }
-    }
-    return schema;
-  }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMenuListener.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMenuListener.java
deleted file mode 100644
index 090992a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMenuListener.java
+++ /dev/null
@@ -1,1767 +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;
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.wst.xsd.ui.internal.actions.AddEnumsAction;
-import org.eclipse.wst.xsd.ui.internal.actions.AddModelGroupAction;
-import org.eclipse.wst.xsd.ui.internal.actions.BackAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateAnnotationAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateElementAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateGroupAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateIdentityConstraintsAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateLocalComplexTypeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateLocalSimpleTypeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateSimpleContentAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateSimpleTypeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.actions.DeleteAction;
-import org.eclipse.wst.xsd.ui.internal.actions.OpenSchemaAction;
-import org.eclipse.wst.xsd.ui.internal.actions.SetBaseTypeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.SetMultiplicityAction;
-import org.eclipse.wst.xsd.ui.internal.actions.SetTypeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.XSDEditNamespacesAction;
-import org.eclipse.wst.xsd.ui.internal.graph.model.Category;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-public class XSDMenuListener implements IMenuListener
-{
-  protected ISelectionProvider selectionProvider;
-  protected DeleteAction deleteAction;
-  protected CreateElementAction addComplexTypeAction;
-  protected XSDSchema xsdSchema;
-  protected boolean isReadOnly;
-  protected Object sourceContext;
-  //private RefactorActionGroup fRefactorMenuGroup;
-
-  /**
-   * Constructor for XSDMenuListener.
-   */
-  public XSDMenuListener(ISelectionProvider selectionProvider)
-  {
-    super();
-    this.selectionProvider = selectionProvider;
-
-    deleteAction = new DeleteAction(XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE"), null, getXSDSchema());
-    deleteAction.setSelectionProvider(selectionProvider);
-    selectionProvider.addSelectionChangedListener(deleteAction);
-  }
-
-  public void setSourceContext(Object sourceContext)
-  {
-    this.sourceContext = sourceContext;
-  }
-
-  public void setSelectionProvider(ISelectionProvider selectionProvider)
-  {
-    this.selectionProvider = selectionProvider;
-  }
-
-  protected XSDSchema getXSDSchema()
-  {
-    return xsdSchema;
-  }
-
-  protected Object getSelectedElement()
-  {
-    ISelection selection = selectionProvider.getSelection();
-    if (selection.isEmpty())
-    {
-      return null;
-    }
-    return ((IStructuredSelection) selection).getFirstElement();
-  }
-  
-  protected boolean isSchemaReadOnly()
-  {
-	  XSDSchema editorSchema = ((XSDEditor)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).getXSDSchema();
-	  if (editorSchema == xsdSchema) {
-		  return false;
-	  }
-
-	  return true; 
-  }
-  
-  protected XSDSchema getCurrentSchemaInEditor()
-  {
-    return ((XSDEditor)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor()).getXSDSchema();
-  }
-    
-  protected void updateXSDSchema()
-  {
-    isReadOnly = false;
-
-    Object object = getSelectedElement();
-    if (object instanceof XSDConcreteComponent)
-    {
-      xsdSchema = ((XSDConcreteComponent) object).getSchema();
-      isReadOnly = isSchemaReadOnly();
-    }
-    else if (object instanceof Category)
-    {
-      Category cg = (Category) object;
-      xsdSchema = cg.getXSDSchema();
-    }
-    else if (object instanceof CategoryAdapter)
-    {
-      CategoryAdapter category = (CategoryAdapter) object;
-      xsdSchema = category.getXSDSchema();
-    }
-  }
-  
-  /*
-   * @see IMenuListener#menuAboutToShow(IMenuManager)
-   */
-  public void menuAboutToShow(IMenuManager manager)
-  {
-    isReadOnly = false;
-    updateXSDSchema();
-    if (xsdSchema == null)
-    {
-      manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));    
-      return;
-    }
-    
-    deleteAction.setXSDSchema(xsdSchema);
-    deleteAction.setEnabled(!isReadOnly);
-    
-    BackAction backAction = new BackAction(XSDEditorPlugin.getXSDString("_UI_ACTION_BACK_TO_SCHEMA_VIEW")); //$NON-NLS-1$
-    backAction.setXSDSchema(getCurrentSchemaInEditor());
-    backAction.setSelectionProvider(selectionProvider);
-    
-    Object selectedElementObj = getSelectedElement();
-    
-    if (selectedElementObj instanceof XSDSchema || selectedElementObj instanceof Category || selectedElementObj instanceof CategoryAdapter)
-    {
-      backAction.setEnabled(false);
-    }
-    manager.add(backAction);
-    manager.add(new Separator());
-//    if (undoAction == null && textEditor != null)
-//    {
-//      undoAction = textEditor.getAction(org.eclipse.ui.texteditor.ITextEditorActionConstants.UNDO);
-//      redoAction = textEditor.getAction(org.eclipse.ui.texteditor.ITextEditorActionConstants.REDO);
-//    }
-    //    Element selectedElement = getSelectedElement();
-
-    Element selectedElement = null;
-    
-    if (selectedElementObj instanceof Element)
-    {
-      selectedElement = (Element) selectedElementObj;
-    }
-    else if (selectedElementObj instanceof XSDConcreteComponent)
-    {
-      selectedElement = ((XSDConcreteComponent) selectedElementObj).getElement();
-    }
-    else if (selectedElementObj instanceof Category || selectedElementObj instanceof CategoryAdapter)
-    {
-      int groupType = -1;
-      if (selectedElementObj instanceof Category)
-      {
-        Category category = (Category) selectedElementObj;
-        groupType = category.getGroupType();
-      }
-      // todo... We need to ensure we eliminate the need for
-      // this case. The XSDMenuListener class should not have
-      // view dependant code. We need to do some work to ensure all
-      // views utilize the 'Category' model object
-      else if (selectedElementObj instanceof CategoryAdapter)
-      {
-        CategoryAdapter categoryAdapter = (CategoryAdapter) selectedElementObj;
-        groupType = categoryAdapter.getGroupType();
-      }
-      ArrayList attributes = null;
-      Element parent = getXSDSchema().getElement();
-      
-      if (parent == null)
-      {
-        return;
-      }
-      
-      Node relativeNode = null;
-      switch (groupType)
-      {
-        case Category.TYPES : {
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("ComplexType")));
-          Action action = addCreateElementAction(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_COMPLEX_TYPE"), attributes, parent, relativeNode);
-          ((CreateElementAction) action).setIsGlobal(true);
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("SimpleType")));
-          Action action2 = addCreateSimpleTypeAction(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SIMPLE_TYPE"), attributes, parent, relativeNode);
-          ((CreateElementAction) action2).setIsGlobal(true);
-          break;
-        }
-        case Category.ELEMENTS : {
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ELEMENT_ELEMENT_TAG, "GlobalElement")));
-          attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-          Action action = addCreateElementAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ELEMENT"), attributes, parent, relativeNode);
-          ((CreateElementAction) action).setIsGlobal(true);
-          break;
-        }
-        case Category.GROUPS : {
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.GROUP_ELEMENT_TAG, "Group")));
-          CreateGroupAction groupAction = addCreateGroupAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GROUP"), attributes, parent, relativeNode);
-          groupAction.setIsGlobal(true);
-          break;
-        }
-        case Category.ATTRIBUTES : {
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ATTRIBUTE_ELEMENT_TAG, "GlobalAttribute")));
-          attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-          Action action = addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GLOBAL_ATTRIBUTE"), attributes, parent, relativeNode);
-          ((CreateElementAction) action).setIsGlobal(true);
-          break;
-        }
-        case Category.ATTRIBUTE_GROUPS : {
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, "AttributeGroup")));
-          Action action = addCreateElementAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP"), attributes, parent, relativeNode);
-          ((CreateElementAction) action).setIsGlobal(true);
-          break;
-        }
-        case Category.NOTATIONS : {
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.NOTATION_ELEMENT_TAG, "Notation")));
-          attributes.add(new DOMAttribute(XSDConstants.PUBLIC_ATTRIBUTE, ""));
-          Action action = addCreateElementAction(manager, XSDConstants.NOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_NOTATION"), attributes, parent, relativeNode);
-          ((CreateElementAction) action).setIsGlobal(true);
-          break;
-        }
-        case Category.DIRECTIVES : {
-          boolean b = true;
-          NodeList children = parent.getChildNodes();
-          int length = children.getLength();
-          Node effectiveRelativeNode = parent.getFirstChild();
-          for (int i = 0; i < length && b; i++)
-          {
-            Node child = children.item(i);
-            if (child != null && child instanceof Element)
-            {
-              if (XSDDOMHelper.inputEquals((Element) child, XSDConstants.INCLUDE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.IMPORT_ELEMENT_TAG, false)
-                  || XSDDOMHelper.inputEquals((Element) child, XSDConstants.REDEFINE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.ANNOTATION_ELEMENT_TAG, false))
-              {
-                effectiveRelativeNode = child;
-              }
-              else
-              {
-                b = false;
-              }
-            }
-          }
-          relativeNode = effectiveRelativeNode != null ? XSDDOMHelper.getNextElementNode(effectiveRelativeNode) : null;
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, ""));
-          Action action = addCreateElementAction(manager, XSDConstants.INCLUDE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_INCLUDE"), attributes, parent, relativeNode);
-          ((CreateElementAction) action).setIsGlobal(true);
-          action = addCreateElementAction(manager, XSDConstants.IMPORT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_IMPORT"), null, parent, relativeNode);
-          ((CreateElementAction) action).setIsGlobal(true);
-          action = addCreateElementAction(manager, XSDConstants.REDEFINE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_REDEFINE"), attributes, parent, relativeNode);
-          ((CreateElementAction) action).setIsGlobal(true);
-          break;
-        }
-        case Category.ANNOTATIONS : {
-          Action action = addCreateElementAction(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), null, parent, relativeNode);
-          ((CreateElementAction) action).setIsGlobal(true);
-          break;
-        }
-      }
-//      manager.add(new Separator());
-//      if (undoAction != null)
-//      {
-//        manager.add(undoAction);
-//        manager.add(redoAction);
-//      }
-      
-      // insertion point for popupMenus extension
-      manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));    
-
-      return;
-    }
-    if (selectedElement != null)
-    {
-      addContextItems(manager, selectedElement, null);
-      manager.add(new Separator());
-    }
-    
-    manager.add(new Separator());
-    if (deleteAction != null)
-    {
-      manager.add(deleteAction);
-    }
-
-    manager.add(new Separator());       
-    manager.add(new Separator("refactoring_slot")); 
-    manager.add(new Separator());       
-    manager.add(new Separator("search_slot"));       
-    manager.add(new Separator());
-    
-    // insertion point for popupMenus extension
-    manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); 
-  }
-
-  protected String getBuiltInStringQName()
-  {
-    String stringName = "string";
-    if (getXSDSchema() != null)
-    {
-      String schemaForSchemaPrefix = getXSDSchema().getSchemaForSchemaQNamePrefix();
-      if (schemaForSchemaPrefix != null && schemaForSchemaPrefix.length() > 0)
-      {
-        String prefix = getXSDSchema().getSchemaForSchemaQNamePrefix();
-        if (prefix != null && prefix.length() > 0)
-        {
-          stringName = prefix + ":" + stringName;
-        }
-      }
-    }
-    return stringName;
-  }
-
-  /**
-   * Method addContextItems.
-   * 
-   * @param manager
-   * @param parent -
-   *          menu items should be context sensitive to this node
-   * @param relativeNode -
-   *          anything inserted, should be inserted before this node (which is a
-   *          child of the parent node. A value of null means add to the end
-   */
-  protected void addContextItems(IMenuManager manager, Element parent, Node relativeNode)
-  {
-    ArrayList attributes = null;
-    if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-    { //
-      addSchemaElementItems(manager, parent, relativeNode);
-      manager.add(new Separator());
-      boolean b = true;
-      NodeList children = parent.getChildNodes();
-      Node effectiveRelativeNode = parent.getFirstChild();
-      for (int i = 0; i < children.getLength() && b; i++)
-      {
-        Node child = children.item(i);
-        if (child != null && child instanceof Element)
-        {
-          if (XSDDOMHelper.inputEquals((Element) child, XSDConstants.INCLUDE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.IMPORT_ELEMENT_TAG, false)
-              || XSDDOMHelper.inputEquals((Element) child, XSDConstants.REDEFINE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.ANNOTATION_ELEMENT_TAG, false))
-          {
-            effectiveRelativeNode = child;
-          }
-          else
-          {
-            b = false;
-          }
-        }
-      }
-      relativeNode = effectiveRelativeNode != null ? effectiveRelativeNode.getNextSibling() : null;
-      attributes = new ArrayList();
-      attributes.add(new DOMAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, ""));
-      addCreateElementAction(manager, XSDConstants.INCLUDE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_INCLUDE"), attributes, parent, relativeNode);
-      addCreateElementAction(manager, XSDConstants.IMPORT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_IMPORT"), null, parent, relativeNode);
-      addCreateElementAction(manager, XSDConstants.REDEFINE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_REDEFINE"), attributes, parent, relativeNode);
-      attributes = null;
-      addCreateAnnotationAction(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), null, parent, relativeNode);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false))
-    { //
-      addCreateElementAction(manager, XSDConstants.DOCUMENTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_DOC"), attributes, parent, null);
-      addCreateElementAction(manager, XSDConstants.APPINFO_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_APP_INFO"), attributes, parent, null);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-    {
-      XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
-      Element parentNode = (Element) parent.getParentNode();
-      boolean isGlobalElement = false;
-      if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-      {
-        isGlobalElement = true;
-      }
-      boolean annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
-          parent.getFirstChild());
-      boolean simpleTypeExists = elementExists(XSDConstants.SIMPLETYPE_ELEMENT_TAG, parent);
-      boolean complexTypeExists = elementExists(XSDConstants.COMPLEXTYPE_ELEMENT_TAG, parent);
-      manager.add(new Separator());
-      if (annotationExists)
-      {
-        Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
-        if (!(simpleTypeExists || complexTypeExists) && annotationNode != null)
-        {
-          manager.add(new Separator());
-        }
-      }
-      else
-      {
-        if (concreteComponent != null)
-        {
-          AddModelGroupAction addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.SEQUENCE_LITERAL);
-          addModelGroupAction.setEnabled(!isReadOnly);
-          manager.add(addModelGroupAction);
-          
-          addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.CHOICE_LITERAL);
-          addModelGroupAction.setEnabled(!isReadOnly);
-          manager.add(addModelGroupAction);
-          
-          addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.ALL_LITERAL);
-          addModelGroupAction.setEnabled(!isReadOnly);
-          manager.add(addModelGroupAction);
-          
-          manager.add(new Separator());
-        }
-      }
-      XSDDOMHelper domHelper = new XSDDOMHelper();
-      Element anonymousType = (Element) domHelper.getChildNode(parent, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-      if (anonymousType != null)
-      {
-        manager.add(new Separator());
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("ComplexType")));
-        addMoveAnonymousGlobal(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, anonymousType, null);
-        attributes = null;
-      }
-      anonymousType = (Element) domHelper.getChildNode(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      if (anonymousType != null)
-      {
-        manager.add(new Separator());
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("SimpleType")));
-        addMoveAnonymousGlobal(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, anonymousType, null);
-        attributes = null;
-      }
-      
-      manager.add(new Separator());
-      MenuManager setTypeCascadeMenu = new MenuManager(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"));
-      manager.add(setTypeCascadeMenu);
-
-      SetTypeAction setNewComplexTypeAction = new SetTypeAction(XSDEditorPlugin.getXSDString("_UI_LABEL_NEW_COMPLEX_TYPE"), ImageDescriptor.createFromFile(XSDEditorPlugin.class, "icons/XSDComplexType.gif"), concreteComponent);
-      setNewComplexTypeAction.setTypeKind(XSDConstants.COMPLEXTYPE_ELEMENT);
-      setNewComplexTypeAction.setEnabled(!isReadOnly);
-      setTypeCascadeMenu.add(setNewComplexTypeAction);
-
-      SetTypeAction setNewSimpleTypeAction = new SetTypeAction(XSDEditorPlugin.getXSDString("_UI_LABEL_NEW_SIMPLE_TYPE"), ImageDescriptor.createFromFile(XSDEditorPlugin.class, "icons/XSDSimpleType.gif"), concreteComponent);
-      setNewSimpleTypeAction.setTypeKind(XSDConstants.SIMPLETYPE_ELEMENT);
-      setNewSimpleTypeAction.setEnabled(!isReadOnly);
-      setTypeCascadeMenu.add(setNewSimpleTypeAction);
-      
-      SetTypeAction setExistingTypeAction = new SetTypeAction(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_EXISTING_TYPE"), concreteComponent);
-      setExistingTypeAction.setTypeKind(0);
-      setExistingTypeAction.setEnabled(!isReadOnly);
-      setTypeCascadeMenu.add(setExistingTypeAction);
-      manager.add(new Separator());
-
-      if (!isGlobalElement)
-      {
-        addMultiplicityMenu(concreteComponent, manager);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.SEQUENCE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(parent, XSDConstants.CHOICE_ELEMENT_TAG, false))
-    { //
-      XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
-      
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-      manager.add(new Separator());
-      addCreateElementAction(manager, XSDConstants.CHOICE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CHOICE"), attributes, parent, null);
-      addCreateElementAction(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SEQUENCE"), attributes, parent, null);
-      addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, null);
-      manager.add(new Separator());
-      attributes = new ArrayList();
-      attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ELEMENT_ELEMENT_TAG, "Element", false)));
-      attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-      addCreateElementAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ELEMENT"), attributes, parent, null);
-      addCreateElementRefAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ELEMENT_REF"), parent, null);
-      manager.add(new Separator());
-      attributes = null;
-      addCreateElementAction(manager, XSDConstants.ANY_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ELEMENT"), attributes, parent, null);
-      
-      if (concreteComponent.getContainer() instanceof XSDParticle)
-      {
-        addMultiplicityMenu(concreteComponent, manager);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ALL_ELEMENT_TAG, false))
-    { //
-      XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
-      
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-      manager.add(new Separator());
-      attributes = new ArrayList();
-      attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ELEMENT_ELEMENT_TAG, "Element", false)));
-      attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-      addCreateElementAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ELEMENT"), attributes, parent, null);
-      addCreateElementRefAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ELEMENT_REF"), parent, null);
-
-      if (concreteComponent.getContainer() instanceof XSDParticle)
-      {
-        addMultiplicityMenu(concreteComponent, manager);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false))
-    { //
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
-          parent.getFirstChild());
-      boolean anyAttributeExists = elementExists(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, parent);
-      Node anyAttributeNode = null;
-      manager.add(new Separator());
-      if (anyAttributeExists)
-      {
-        anyAttributeNode = getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false);
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-        attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-        addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
-        attributes = null;
-        addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
-        addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
-      }
-      else
-      {
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-        attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-        addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
-        attributes = null;
-        addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
-        addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
-      }
-      attributes = null;
-      addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, null);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.NOTATION_ELEMENT_TAG, false))
-    { //
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, null);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-    { //
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-      boolean restrictionExists = elementExists(XSDConstants.RESTRICTION_ELEMENT_TAG, parent);
-      boolean unionExists = elementExists(XSDConstants.UNION_ELEMENT_TAG, parent);
-      boolean listExists = elementExists(XSDConstants.LIST_ELEMENT_TAG, parent);
-      if (!(restrictionExists || unionExists || listExists))
-      {
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, getBuiltInStringQName()));
-        addCreateElementActionIfNotExist(manager, XSDConstants.RESTRICTION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_RESTRICTION"), attributes, parent, null);
-        attributes = null;
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, getBuiltInStringQName()));
-        addCreateElementActionIfNotExist(manager, XSDConstants.UNION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_UNION"), attributes, parent, null);
-        attributes = null;
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, getBuiltInStringQName()));
-        addCreateElementActionIfNotExist(manager, XSDConstants.LIST_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LIST"), attributes, parent, null);
-        attributes = null;
-      }
-      if (XSDDOMHelper.inputEquals(parent.getParentNode(), XSDConstants.ELEMENT_ELEMENT_TAG, false))
-      {
-        manager.add(new Separator());
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("SimpleType")));
-        addMoveAnonymousGlobal(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, parent, null);
-        attributes = null;
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.GROUP_ELEMENT_TAG, false))
-    { //
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-      addCreateElementActionIfNotExist(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CONTENT_MODEL"), attributes, parent, null);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-    { //
-      boolean annotationExists = false;
-      boolean contentExists = false;
-      Node annotationNode = null;
-      NodeList children = parent.getChildNodes();
-      for (int i = 0; i < children.getLength(); i++)
-      {
-        Node child = children.item(i);
-        if (child != null && child instanceof Element)
-        {
-          if (XSDDOMHelper.inputEquals((Element) child, XSDConstants.ANNOTATION_ELEMENT_TAG, false))
-          {
-            annotationNode = child;
-            annotationExists = true;
-          }
-          else if (XSDDOMHelper.inputEquals((Element) child, XSDConstants.SEQUENCE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.ALL_ELEMENT_TAG, false)
-              || XSDDOMHelper.inputEquals((Element) child, XSDConstants.CHOICE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.GROUP_ELEMENT_TAG, true)
-              || XSDDOMHelper.inputEquals((Element) child, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals((Element) child, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-          {
-            contentExists = true;
-          }
-        }
-      }
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-      manager.add(new Separator());
-      addSetBaseTypeAction(manager, parent);
-      XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
-      if (annotationExists)
-      {
-        if (!contentExists)
-        {
-          if (concreteComponent != null)
-          {
-            AddModelGroupAction addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.SEQUENCE_LITERAL);
-            addModelGroupAction.setEnabled(!isReadOnly);
-            manager.add(addModelGroupAction);
-            
-            addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.CHOICE_LITERAL);
-            addModelGroupAction.setEnabled(!isReadOnly);
-            manager.add(addModelGroupAction);
-            
-            addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.ALL_LITERAL);
-            addModelGroupAction.setEnabled(!isReadOnly);
-            manager.add(addModelGroupAction);
-
-          }
-          addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, annotationNode.getNextSibling());
-          attributes = null;
-        }
-      }
-      else
-      {
-        if (!contentExists)
-        {
-          if (concreteComponent != null)
-          {
-            AddModelGroupAction addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.SEQUENCE_LITERAL);
-            addModelGroupAction.setEnabled(!isReadOnly);
-            manager.add(addModelGroupAction);
-            
-            addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.CHOICE_LITERAL);
-            addModelGroupAction.setEnabled(!isReadOnly);
-            manager.add(addModelGroupAction);
-            
-            addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.ALL_LITERAL);
-            addModelGroupAction.setEnabled(!isReadOnly);
-            manager.add(addModelGroupAction);
-
-          }
-          addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, parent.getFirstChild());
-          attributes = null;
-        }
-      }
-      manager.add(new Separator());
-      if (XSDDOMHelper.inputEquals(parent.getParentNode(), XSDConstants.ELEMENT_ELEMENT_TAG, false))
-      {
-        manager.add(new Separator());
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("ComplexType")));
-        addMoveAnonymousGlobal(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, parent, null);
-        attributes = null;
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-    { //
-      XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
-      Element derivedByNode = xsdDOMHelper.getDerivedByElement(parent);
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
-          parent.getFirstChild());
-      manager.add(new Separator());
-      if (derivedByNode == null)
-      {
-        TypesHelper typesHelper = new TypesHelper(getXSDSchema());
-        String firstType = "";
-        List listOfCT = typesHelper.getUserComplexTypeNamesList();
-        if (listOfCT.size() > 0)
-        {
-          firstType = (String) (listOfCT).get(0);
-        }
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, firstType));
-        addCreateElementActionIfNotExist(manager, XSDConstants.RESTRICTION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_RESTRICTION"), attributes, parent, null);
-        addCreateElementActionIfNotExist(manager, XSDConstants.EXTENSION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_EXTENSION"), attributes, parent, null);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
-    { //
-      XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
-      Element derivedByNode = xsdDOMHelper.getDerivedByElement(parent);
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
-          parent.getFirstChild());
-      manager.add(new Separator());
-      if (derivedByNode == null)
-      {
-        TypesHelper typesHelper = new TypesHelper(getXSDSchema());
-        String firstType = "";
-        List listOfCT = typesHelper.getUserComplexTypeNamesList();
-        if (listOfCT.size() > 0)
-        {
-          firstType = (String) (listOfCT).get(0);
-        }
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, firstType));
-        addCreateElementActionIfNotExist(manager, XSDConstants.RESTRICTION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_RESTRICTION"), attributes, parent, null);
-        addCreateElementActionIfNotExist(manager, XSDConstants.EXTENSION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_EXTENSION"), attributes, parent, null);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false))
-    {
-      Element parentNode = (Element) parent.getParentNode();
-      // <simpleContent>
-      //    <restriction>
-      //      ...
-      if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
-      {
-        boolean annotationExists = false;
-        boolean anyAttributeExists = false;
-        Node anyAttributeNode = null;
-        anyAttributeExists = elementExists(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, parent);
-        annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent
-            .getFirstChild());
-        if (annotationExists)
-        {
-          getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
-        }
-
-        manager.add(new Separator());
-        if (anyAttributeExists)
-        {
-          anyAttributeNode = getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false);
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-          attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-          addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
-          attributes = null;
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
-        }
-        else
-        {
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-          attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-          addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
-          attributes = null;
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
-        }
-        attributes = null;
-        addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, parent.getLastChild());
-      }
-      // <simpleType>
-      //    <restriction>
-      //      ...
-      else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-      {
-        boolean annotationExists = false;
-        attributes = null;
-        annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent
-            .getFirstChild());
-        if (annotationExists)
-        {
-          Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
-          addCreateLocalSimpleTypeActionIfNotExist(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, annotationNode
-              .getNextSibling());
-        }
-        else
-        {
-          addCreateLocalSimpleTypeActionIfNotExist(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, parent
-              .getFirstChild());
-        }
-        manager.add(new Separator());
-        addCreateElementAction(manager, XSDConstants.PATTERN_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_PATTERN"), attributes, parent, null);
-        addCreateElementAction(manager, XSDConstants.ENUMERATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUM"), attributes, parent, null);
-        addEnumsAction(manager, XSDConstants.ENUMERATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUMS"), attributes, parent, null);
-      }
-      // <complexContent>
-      //    <restriction>
-      //      ...
-      else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-      {
-        boolean annotationExists = false;
-        boolean anyAttributeExists = false;
-        Node anyAttributeNode = null;
-        boolean sequenceExists = elementExists(XSDConstants.SEQUENCE_ELEMENT_TAG, parent);
-        boolean choiceExists = elementExists(XSDConstants.CHOICE_ELEMENT_TAG, parent);
-        boolean allExists = elementExists(XSDConstants.ALL_ELEMENT_TAG, parent);
-        boolean groupExists = elementExists(XSDConstants.GROUP_ELEMENT_TAG, parent);
-        anyAttributeExists = elementExists(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, parent);
-        annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent
-            .getFirstChild());
-        manager.add(new Separator());
-        if (annotationExists)
-        {
-          if (!(sequenceExists || choiceExists || allExists || groupExists))
-          {
-            Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
-            addCreateElementActionIfNotExist(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CONTENT_MODEL"), attributes, parent, annotationNode
-                .getNextSibling());
-            addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, annotationNode.getNextSibling());
-          }
-        }
-        else
-        {
-          if (!(sequenceExists || choiceExists || allExists || groupExists))
-          {
-            addCreateElementActionIfNotExist(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CONTENT_MODEL"), attributes, parent, parent.getFirstChild());
-            addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, parent.getFirstChild());
-          }
-        }
-        manager.add(new Separator());
-        if (anyAttributeExists)
-        {
-          anyAttributeNode = getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false);
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-          attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-          addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
-          attributes = null;
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
-        }
-        else
-        {
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-          attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-          addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
-          attributes = null;
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
-        }
-        attributes = null;
-        addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, parent.getLastChild());
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.EXTENSION_ELEMENT_TAG, false))
-    {
-      Element parentNode = (Element) parent.getParentNode();
-      // <simpleContent>
-      //    <extension>
-      //      ...
-      if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
-      {
-        boolean anyAttributeExists = false;
-        Node anyAttributeNode = null;
-        anyAttributeExists = elementExists(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, parent);
-        addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent
-            .getFirstChild());
-        manager.add(new Separator());
-        if (anyAttributeExists)
-        {
-          anyAttributeNode = getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false);
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-          attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-          addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
-          attributes = null;
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
-        }
-        else
-        {
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-          attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-          addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
-          attributes = null;
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
-        }
-        attributes = null;
-        addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, parent.getLastChild());
-      }
-      // <complexContent>
-      //    <extension>
-      //      ...
-      else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-      {
-        boolean annotationExists = false;
-        boolean anyAttributeExists = false;
-        Node anyAttributeNode = null;
-        boolean sequenceExists = elementExists(XSDConstants.SEQUENCE_ELEMENT_TAG, parent);
-        boolean choiceExists = elementExists(XSDConstants.CHOICE_ELEMENT_TAG, parent);
-        boolean allExists = elementExists(XSDConstants.ALL_ELEMENT_TAG, parent);
-        boolean groupExists = elementExists(XSDConstants.GROUP_ELEMENT_TAG, parent);
-        anyAttributeExists = elementExists(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, parent);
-        annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent
-            .getFirstChild());
-        manager.add(new Separator());
-        if (annotationExists)
-        {
-          if (!(sequenceExists || choiceExists || allExists || groupExists))
-          {
-            Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
-            addCreateElementActionIfNotExist(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CONTENT_MODEL"), attributes, parent, annotationNode
-                .getNextSibling());
-            addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, annotationNode.getNextSibling());
-          }
-        }
-        else
-        {
-          if (!(sequenceExists || choiceExists || allExists || groupExists))
-          {
-            addCreateElementActionIfNotExist(manager, XSDConstants.SEQUENCE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CONTENT_MODEL"), attributes, parent, parent.getFirstChild());
-            addCreateElementRefAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ADD_GROUP_REF"), parent, parent.getFirstChild());
-          }
-        }
-        manager.add(new Separator());
-        if (anyAttributeExists)
-        {
-          anyAttributeNode = getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false);
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-          attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-          addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
-          attributes = null;
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
-        }
-        else
-        {
-          attributes = new ArrayList();
-          attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-          attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-          addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
-          attributes = null;
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
-          addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
-        }
-        attributes = null;
-        addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, parent.getLastChild());
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.REDEFINE_ELEMENT_TAG, false))
-    { //
-      addCreateElementAction(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, null);
-      addCreateElementAction(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SIMPLE_TYPE"), attributes, parent, null);
-      addCreateElementAction(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_COMPLEX_TYPE"), attributes, parent, null);
-      addCreateGroupAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GROUP"), attributes, parent, null);
-      addCreateElementAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP"), attributes, parent, null);
-      manager.add(new Separator());
-      addOpenSchemaAction(manager, XSDEditorPlugin.getXSDString("_UI_ACTION_OPEN_SCHEMA"), parent);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.LIST_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
-          parent.getFirstChild());
-      manager.add(new Separator());
-      addCreateLocalSimpleTypeActionIfNotExist(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, null);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.UNION_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
-          parent.getFirstChild());
-      manager.add(new Separator());
-      addCreateLocalSimpleTypeAction(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, null);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.UNIQUE_ELEMENT_TAG, false))
-    {
-      boolean annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
-          parent.getFirstChild());
-      manager.add(new Separator());
-      attributes = new ArrayList();
-      attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
-      if (annotationExists)
-      {
-        Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
-        addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, annotationNode.getNextSibling());
-      }
-      else
-      {
-        addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, parent.getFirstChild());
-      }
-      attributes = new ArrayList();
-      attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
-      addCreateElementAction(manager, XSDConstants.FIELD_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_FIELD"), attributes, parent, null);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.KEYREF_ELEMENT_TAG, false))
-    {
-      boolean annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
-          parent.getFirstChild());
-      manager.add(new Separator());
-      attributes = new ArrayList();
-      attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
-      if (annotationExists)
-      {
-        Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
-        addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, annotationNode.getNextSibling());
-      }
-      else
-      {
-        addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, parent.getFirstChild());
-      }
-      attributes = new ArrayList();
-      attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
-      addCreateElementAction(manager, XSDConstants.FIELD_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_FIELD"), attributes, parent, null);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.KEY_ELEMENT_TAG, false))
-    {
-      boolean annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
-          parent.getFirstChild());
-      manager.add(new Separator());
-      attributes = new ArrayList();
-      attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
-      if (annotationExists)
-      {
-        Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
-        addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, annotationNode.getNextSibling());
-      }
-      else
-      {
-        addCreateElementActionIfNotExist(manager, XSDConstants.SELECTOR_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SELECTOR"), attributes, parent, parent.getFirstChild());
-      }
-      attributes = new ArrayList();
-      attributes.add(new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, ""));
-      addCreateElementAction(manager, XSDConstants.FIELD_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_FIELD"), attributes, parent, null);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.IMPORT_ELEMENT_TAG, false))
-    {
-      addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-      manager.add(new Separator());
-      addOpenSchemaAction(manager, XSDEditorPlugin.getXSDString("_UI_ACTION_OPEN_SCHEMA"), parent);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.SELECTOR_ELEMENT_TAG, false))
-    {
-      addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.FIELD_ELEMENT_TAG, false))
-    {
-      addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.INCLUDE_ELEMENT_TAG, false))
-    {
-      addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-      manager.add(new Separator());
-      addOpenSchemaAction(manager, XSDEditorPlugin.getXSDString("_UI_ACTION_OPEN_SCHEMA"), parent);
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ANY_ELEMENT_TAG, false))
-    {
-      addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-      // need to add adapters for the ANY element.  I'd rather not provide this menu
-      // and let users see that the graph view doesn't update
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false))
-    {
-      addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
-    {
-      addCreateElementActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-      addCreateLocalSimpleTypeActionIfNotExist(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, null);
-    }
-    // Facets all have optional annotation nodes
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MINEXCLUSIVE_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MININCLUSIVE_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MAXEXCLUSIVE_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MAXINCLUSIVE_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.TOTALDIGITS_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.FRACTIONDIGITS_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.LENGTH_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MINLENGTH_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.MAXLENGTH_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ENUMERATION_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.WHITESPACE_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.PATTERN_ELEMENT_TAG, false))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true))
-    {
-      addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent, parent.getFirstChild());
-    }
-    else if (XSDDOMHelper.inputEquals(parent, XSDConstants.ELEMENT_ELEMENT_TAG, true))
-    {
-      XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)getXSDSchema().getCorrespondingComponent(parent);
-      if (xsdConcreteComponent instanceof XSDElementDeclaration)
-      {
-        XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)xsdConcreteComponent;
-        XSDElementDeclaration resolvedElementDeclaration = xsdElementDeclaration.getResolvedElementDeclaration();
-        if (resolvedElementDeclaration.getRootContainer() == xsdSchema)
-        {
-          parent = resolvedElementDeclaration.getElement(); 
-        
-          boolean annotationExists = addCreateAnnotationActionIfNotExist(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), attributes, parent,
-              parent.getFirstChild());
-          boolean simpleTypeExists = elementExists(XSDConstants.SIMPLETYPE_ELEMENT_TAG, parent);
-          boolean complexTypeExists = elementExists(XSDConstants.COMPLEXTYPE_ELEMENT_TAG, parent);
-          manager.add(new Separator());
-          if (annotationExists)
-          {
-            Node annotationNode = getFirstChildNodeIfExists(parent, XSDConstants.ANNOTATION_ELEMENT_TAG, false);
-            if (!(simpleTypeExists || complexTypeExists) && annotationNode != null)
-            {
-              manager.add(new Separator());
-            }
-          }
-          else
-          {
-            XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
-            if (concreteComponent != null)
-            {
-              AddModelGroupAction addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.SEQUENCE_LITERAL);
-              addModelGroupAction.setEnabled(!isReadOnly);
-              manager.add(addModelGroupAction);
-              
-              addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.CHOICE_LITERAL);
-              addModelGroupAction.setEnabled(!isReadOnly);
-              manager.add(addModelGroupAction);
-              
-              addModelGroupAction = new AddModelGroupAction(concreteComponent, XSDCompositor.ALL_LITERAL);
-              addModelGroupAction.setEnabled(!isReadOnly);
-              manager.add(addModelGroupAction);
-              
-              manager.add(new Separator());
-            }
-          }
-          XSDDOMHelper domHelper = new XSDDOMHelper();
-          Element anonymousType = (Element) domHelper.getChildNode(parent, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-          if (anonymousType != null)
-          {
-            manager.add(new Separator());
-            attributes = new ArrayList();
-            attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("ComplexType")));
-            addMoveAnonymousGlobal(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, anonymousType, null);
-            attributes = null;
-          }
-          anonymousType = (Element) domHelper.getChildNode(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-          if (anonymousType != null)
-          {
-            manager.add(new Separator());
-            attributes = new ArrayList();
-            attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("SimpleType")));
-            addMoveAnonymousGlobal(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_MAKE_ANONYMOUS_TYPE_GLOBAL"), attributes, anonymousType, null);
-            attributes = null;
-          }
-        }
-        addMultiplicityMenu(xsdConcreteComponent, manager);
-      }
-    }
-   
-    XSDConcreteComponent concreteComponent = getXSDSchema().getCorrespondingComponent(parent);
-    if (concreteComponent instanceof XSDNamedComponent)
-    {
-      addRefactorMenuGroup(manager);
-    }
-  }
-
-  protected void addContextInsertItems(IMenuManager manager, Element parent, Element currentElement, Node relativeNode)
-  {
-    ArrayList attributes = null;
-    if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.INCLUDE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(currentElement, XSDConstants.IMPORT_ELEMENT_TAG, false)
-        || XSDDOMHelper.inputEquals(currentElement, XSDConstants.REDEFINE_ELEMENT_TAG, false) || XSDDOMHelper.inputEquals(currentElement, XSDConstants.ANNOTATION_ELEMENT_TAG, false))
-    {
-      if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-      {
-        attributes = new ArrayList();
-        attributes.add(new DOMAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, ""));
-        addCreateElementAction(manager, XSDConstants.INCLUDE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_INCLUDE"), attributes, parent, relativeNode);
-        addCreateElementAction(manager, XSDConstants.IMPORT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_IMPORT"), null, parent, relativeNode);
-        addCreateElementAction(manager, XSDConstants.REDEFINE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_REDEFINE"), attributes, parent, relativeNode);
-        attributes = null;
-        addCreateElementAction(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), null, parent, relativeNode);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-    {
-      if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-      {
-        addSchemaElementItems(manager, parent, relativeNode);
-      }
-      else if (XSDDOMHelper.inputEquals(parent, XSDConstants.UNION_ELEMENT_TAG, false))
-      {
-        addCreateLocalSimpleTypeAction(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LOCAL_SIMPLE_TYPE"), attributes, parent, relativeNode);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-    {
-      if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-      {
-        addSchemaElementItems(manager, parent, relativeNode);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.GROUP_ELEMENT_TAG, false))
-    {
-      if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-      {
-        addSchemaElementItems(manager, parent, relativeNode);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false))
-    {
-      if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-      {
-        addSchemaElementItems(manager, parent, relativeNode);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-    {
-      if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-      {
-        addSchemaElementItems(manager, parent, relativeNode);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
-    {
-      if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-      {
-        addSchemaElementItems(manager, parent, relativeNode);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.NOTATION_ELEMENT_TAG, false))
-    {
-      if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-      {
-        addSchemaElementItems(manager, parent, relativeNode);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.DOCUMENTATION_ELEMENT_TAG, false))
-    {
-      addCreateElementAction(manager, XSDConstants.DOCUMENTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_DOC"), attributes, parent, relativeNode);
-      addCreateElementAction(manager, XSDConstants.APPINFO_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_APP_INFO"), attributes, parent, relativeNode);
-    }
-    else if (XSDDOMHelper.inputEquals(currentElement, XSDConstants.APPINFO_ELEMENT_TAG, false))
-    {
-      addCreateElementAction(manager, XSDConstants.DOCUMENTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_DOC"), attributes, parent, relativeNode);
-      addCreateElementAction(manager, XSDConstants.APPINFO_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_APP_INFO"), attributes, parent, relativeNode);
-    }
-  }
-
-  protected String getNewGlobalName(String elementTag, String description)
-  {
-    return getNewGlobalName(elementTag, description, false);
-  }
-
-  protected String getNewGlobalTypeName(String description)
-  {
-    return getNewGlobalName(null, description, true);
-  }
-
-  protected String getNewGlobalName(String elementTag, String description, boolean isSimpleOrComplexType)
-  {  
-     return getNewName(getXSDSchema().getDocument(), elementTag, description, isSimpleOrComplexType);
-  }
-
-  // TODO.. .we need to rewrite this code to me model driven... not document driven
-  //
-  protected String getNewName(Node parentNode, String elementTag, String description, boolean isSimpleOrComplexType)
-  {
-    NodeList list = null;
-    NodeList typeList2 = null;
-    // if the global name is for a simple or complex type, we ignore the
-    // elementTag and populate 2 lists
-    // one to look for all simple types and the other to look for all complex
-    // types
-    if (isSimpleOrComplexType)
-    {
-      if (parentNode instanceof Document)
-      {
-        list = ((Document) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-        typeList2 = ((Document) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      }
-      else if (parentNode instanceof Element)
-      {
-        list = ((Element) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-        typeList2 = ((Element) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      }
-    }
-    else
-    {
-      if (parentNode instanceof Document)
-      {
-        list = ((Document) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, elementTag);
-      }
-      else if (parentNode instanceof Element)
-      {
-        list = ((Element) parentNode).getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, elementTag);
-      }
-    }
-    String name = "New" + description;
-    if (list == null || list.getLength() == 0 && (typeList2 != null && typeList2.getLength() == 0))
-    {
-      return name;
-    }
-    for (int i = 1; i < 100; i++)
-    {
-      boolean newName = false;
-      for (int j = 0; j < list.getLength(); j++)
-      {
-        String currName = ((Element) list.item(j)).getAttribute(XSDConstants.NAME_ATTRIBUTE);
-        if (currName == null || currName.length() == 0)
-        {
-          continue;
-        }
-        if (currName.equals(name))
-        {
-          name = "New" + description + String.valueOf(i);
-          newName = true;
-          break;
-        }
-      }
-      // if there is another type list and we haven't created a new name, then
-      // check the type list
-      if (typeList2 != null && !newName)
-      {
-        for (int j = 0; j < typeList2.getLength(); j++)
-        {
-          String currName = ((Element) typeList2.item(j)).getAttribute(XSDConstants.NAME_ATTRIBUTE);
-          if (currName == null || currName.length() == 0)
-          {
-            continue;
-          }
-          if (currName.equals(name))
-          {
-            name = "New" + description + String.valueOf(i);
-            break;
-          }
-        }
-      }
-    }
-    return name;
-  }
-
-  protected String getFirstGlobalElementTagName(String elementTag)
-  {
-    //XMLModel model = getXMLModel();
-    //if (model != null)
-    {
-      XSDSchema schema = getXSDSchema();
-      TypesHelper helper = new TypesHelper(schema);
-      String prefix = "";
-      if (schema != null)
-      {
-        prefix = helper.getPrefix(schema.getTargetNamespace(), true);
-      }
-      // get the schema node
-      NodeList slist = schema.getDocument().getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.SCHEMA_ELEMENT_TAG);
-      Node schemaNode = null;
-      if (slist != null && slist.getLength() > 0)
-      {
-        schemaNode = slist.item(0);
-      }
-      NodeList list = null;
-      // get the schema's direct children - hence, globals
-      if (schemaNode != null)
-      {
-        list = schemaNode.getChildNodes();
-      }
-      String name = null;
-      if (list != null)
-      {
-        for (int i = 0; i < list.getLength(); i++)
-        {
-          if (list.item(i) instanceof Element)
-          {
-            if (list.item(i).getLocalName().equals(elementTag))
-            {
-              name = ((Element) list.item(i)).getAttribute(XSDConstants.NAME_ATTRIBUTE);
-              if (name != null && name.length() > 0)
-              {
-                return prefix + name;
-              }
-            }
-          }
-        }
-      }
-      if (elementTag.equals(XSDConstants.ELEMENT_ELEMENT_TAG))
-      {
-        return helper.getGlobalElement(schema);
-      }
-      else if (elementTag.equals(XSDConstants.ATTRIBUTE_ELEMENT_TAG))
-      {
-        return helper.getGlobalAttribute(schema);
-      }
-      else if (elementTag.equals(XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG))
-      {
-        return helper.getGlobalAttributeGroup(schema);
-      }
-      else if (elementTag.equals(XSDConstants.GROUP_ELEMENT_TAG))
-      {
-        return helper.getModelGroup(schema);
-      }
-    }
-    return null;
-  }
-
-  protected void addSchemaElementItems(IMenuManager manager, Element parent, Node relativeNode)
-  {
-    ArrayList attributes = null;
-    // Add Edit Namespaces menu action
-    XSDEditNamespacesAction nsAction = new XSDEditNamespacesAction(XSDEditorPlugin.getXSDString("_UI_ACTION_EDIT_NAMESPACES"), parent, relativeNode, getXSDSchema());
-    manager.add(nsAction);
-    manager.add(new Separator());
-    DOMAttribute nameAttribute = new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("ComplexType"));
-    attributes = new ArrayList();
-    attributes.add(nameAttribute);
-    Action action = addCreateElementAction(manager, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_COMPLEX_TYPE"), attributes, parent, relativeNode);
-    ((CreateElementAction) action).setIsGlobal(true);
-    attributes = new ArrayList();
-    attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalTypeName("SimpleType")));
-    action = addCreateElementAction(manager, XSDConstants.SIMPLETYPE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SIMPLE_TYPE"), attributes, parent, relativeNode);
-    ((CreateElementAction) action).setIsGlobal(true);
-    attributes = new ArrayList();
-    attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ELEMENT_ELEMENT_TAG, "GlobalElement")));
-    attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-    action = addCreateElementAction(manager, XSDConstants.ELEMENT_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GLOBAL_ELEMENT"), attributes, parent, relativeNode);
-    ((CreateElementAction) action).setIsGlobal(true);
-    attributes = new ArrayList();
-    attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ATTRIBUTE_ELEMENT_TAG, "GlobalAttribute")));
-    attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-    action = addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GLOBAL_ATTRIBUTE"), attributes, parent, relativeNode);
-    ((CreateElementAction) action).setIsGlobal(true);
-    attributes = new ArrayList();
-    attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, "AttributeGroup")));
-    action = addCreateElementAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP"), attributes, parent, relativeNode);
-    ((CreateElementAction) action).setIsGlobal(true);
-    attributes = new ArrayList();
-    attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.GROUP_ELEMENT_TAG, "Group")));
-    CreateGroupAction groupAction = addCreateGroupAction(manager, XSDConstants.GROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_GROUP"), attributes, parent, relativeNode);
-    groupAction.setIsGlobal(true);
-    attributes = new ArrayList();
-    attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE, getNewGlobalName(XSDConstants.NOTATION_ELEMENT_TAG, "Notation")));
-    attributes.add(new DOMAttribute(XSDConstants.PUBLIC_ATTRIBUTE, ""));
-    action = addCreateElementAction(manager, XSDConstants.NOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_NOTATION"), attributes, parent, relativeNode);
-    ((CreateElementAction) action).setIsGlobal(true);
-    action = addCreateElementAction(manager, XSDConstants.ANNOTATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANNOTATION"), null, parent, relativeNode);
-    ((CreateElementAction) action).setIsGlobal(true);
-  }
-
-  // returns whether element exists already
-  protected boolean addCreateElementActionIfNotExist(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
-    {
-      addCreateElementAction(manager, elementTag, label, attributes, parent, relativeNode);
-      return false;
-    }
-    return true;
-  }
-
-  protected Action addCreateElementAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    CreateElementAction action = new CreateElementAction(label);
-    action.setElementTag(elementTag);
-    action.setAttributes(attributes);
-    action.setParentNode(parent);
-    action.setRelativeNode(relativeNode);
-    action.setXSDSchema(getXSDSchema());
-    action.setSelectionProvider(selectionProvider);
-    action.setEnabled(!isReadOnly);
-    action.setSourceContext(sourceContext);
-    manager.add(action);
-    return action;
-  }
-
-  protected void addCreateElementAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode, boolean isEnabled)
-  {
-    Action action = addCreateElementAction(manager, elementTag, label, attributes, parent, relativeNode);
-    action.setEnabled(isEnabled);
-  }
-
-  protected void addCreateElementRefAction(IMenuManager manager, String elementTag, String label, Element parent, Node relativeNode)
-  {
-    ArrayList attributes = new ArrayList();
-    String ref = getFirstGlobalElementTagName(elementTag);
-    attributes.add(new DOMAttribute(XSDConstants.REF_ATTRIBUTE, ref));
-    Action action = addCreateElementAction(manager, elementTag, label, attributes, parent, relativeNode);
-    action.setEnabled(ref != null && !isReadOnly);
-  }
-
-  protected void addCreateSimpleContentAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
-    {
-      CreateSimpleContentAction action = new CreateSimpleContentAction(label, getXSDSchema());
-      action.setElementTag(elementTag);
-      action.setAttributes(attributes);
-      action.setParentNode(parent);
-      action.setRelativeNode(relativeNode);
-      action.setEnabled(!isReadOnly);
-      manager.add(action);
-    }
-  }
-
-  protected CreateGroupAction addCreateGroupAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    CreateGroupAction action = new CreateGroupAction(label, getXSDSchema());
-    action.setElementTag(elementTag);
-    action.setAttributes(attributes);
-    action.setParentNode(parent);
-    action.setRelativeNode(relativeNode);
-    action.setXSDSchema(getXSDSchema());
-    action.setSelectionProvider(selectionProvider);
-    action.setEnabled(!isReadOnly);
-    action.setSourceContext(sourceContext);
-    manager.add(action);
-    return action;
-  }
-
-  protected void addCreateIdentityConstraintsAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    CreateIdentityConstraintsAction action = new CreateIdentityConstraintsAction(label, getXSDSchema());
-    action.setElementTag(elementTag);
-    action.setAttributes(attributes);
-    action.setParentNode(parent);
-    action.setRelativeNode(relativeNode);
-    action.setXSDSchema(getXSDSchema());
-    action.setSelectionProvider(selectionProvider);
-    action.setEnabled(!isReadOnly);
-    manager.add(action);
-  }
-
-  protected void addEnumsAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    AddEnumsAction action = new AddEnumsAction(label);
-    action.setElementTag(elementTag);
-    action.setAttributes(attributes);
-    action.setParentNode(parent);
-    action.setRelativeNode(relativeNode);
-    action.setDescription(XSDEditorPlugin.getXSDString("_UI_ENUMERATIONS_DIALOG_TITLE"));
-    action.setEnabled(!isReadOnly);
-    manager.add(action);
-  }
-
-  protected Action addCreateSimpleTypeAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    CreateSimpleTypeAction action = new CreateSimpleTypeAction(label);
-    action.setElementTag(elementTag);
-    action.setAttributes(attributes);
-    action.setParentNode(parent);
-    action.setRelativeNode(relativeNode);
-    action.setXSDSchema(getXSDSchema());
-    action.setSelectionProvider(selectionProvider);
-    action.setEnabled(!isReadOnly);
-    action.setSourceContext(sourceContext);
-    manager.add(action);
-    return action;
-  }
-
-  protected boolean addCreateLocalSimpleTypeActionIfNotExist(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
-    {
-      addCreateLocalSimpleTypeAction(manager, elementTag, label, attributes, parent, relativeNode);
-      return false;
-    }
-    return true;
-  }
-
-  protected void addSetBaseTypeAction(IMenuManager manager, Element element)
-  {
-    SetBaseTypeAction action = new SetBaseTypeAction(XSDEditorPlugin.getXSDString("_UI_ACTION_SET_BASE_TYPE"));// +
-    // "...");
-    action.setComplexTypeElement(element);
-    action.setXSDSchema(getXSDSchema());
-    action.setEnabled(!isReadOnly);
-    manager.add(action);
-  }
-
-  protected void addCreateLocalSimpleTypeAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    CreateLocalSimpleTypeAction action = new CreateLocalSimpleTypeAction(label);
-    action.setElementTag(elementTag);
-    action.setAttributes(attributes);
-    action.setParentNode(parent);
-    action.setRelativeNode(relativeNode);
-    action.setXSDSchema(getXSDSchema());
-    action.setSelectionProvider(selectionProvider);
-    action.setEnabled(!isReadOnly);
-    manager.add(action);
-  }
-
-  protected boolean addCreateLocalComplexTypeActionIfNotExist(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
-    {
-      addCreateLocalComplexTypeAction(manager, elementTag, label, attributes, parent, relativeNode);
-      return false;
-    }
-    return true;
-  }
-
-  protected void addCreateLocalComplexTypeAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    CreateLocalComplexTypeAction action = new CreateLocalComplexTypeAction(label);
-    action.setElementTag(elementTag);
-    action.setAttributes(attributes);
-    action.setParentNode(parent);
-    action.setRelativeNode(relativeNode);
-    action.setXSDSchema(getXSDSchema());
-    action.setSelectionProvider(selectionProvider);
-    action.setEnabled(!isReadOnly);
-    manager.add(action);
-  }
-
-  protected boolean addCreateAnnotationActionIfNotExist(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    return false;
-  }
-
-  protected void addOpenSchemaAction(IMenuManager manager, String label, Element parent)
-  {
-    OpenSchemaAction openAction = new OpenSchemaAction(label, getXSDSchema().getCorrespondingComponent(parent));
-    manager.add(openAction);
-  }
-
-  protected void addMoveAnonymousGlobal(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-//    MakeAnonymousGlobal action = new MakeAnonymousGlobal(label, parent, getXSDSchema());
-//    action.setElementTag(elementTag);
-//    action.setAttributes(attributes);
-//    action.setParentNode(getXSDSchema().getElement());
-//    action.setRelativeNode(relativeNode);
-//    action.setEnabled(!isReadOnly);
-//    //manager.add(action);
-//    addRefactorMenuGroup(manager);
-//    fRefactorMenuGroup.addAction(action);
-  }
-  
-  protected void addRefactorMenuGroup(IMenuManager manager){
-    /*
-	  	fRefactorMenuGroup = new RefactorActionGroup(selectionProvider, getXSDSchema());
-     	ActionContext context= new ActionContext(selectionProvider.getSelection());
-    	fRefactorMenuGroup.setContext(context);
-    	fRefactorMenuGroup.fillContextMenu(manager);
-    	fRefactorMenuGroup.setContext(null);
-    */    
-  }
-
-  protected void addCreateAnnotationAction(IMenuManager manager, String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    CreateAnnotationAction action = new CreateAnnotationAction(label);
-    action.setElementTag(elementTag);
-    action.setAttributes(attributes);
-    action.setParentNode(parent);
-    action.setRelativeNode(relativeNode);
-    action.setEnabled(!isReadOnly);
-    manager.add(action);
-  }
-
-  protected Node getFirstChildNodeIfExists(Node parent, String elementTag, boolean isRef)
-  {
-    if (parent == null)
-      return null;
-    NodeList children = parent.getChildNodes();
-    Node targetNode = null;
-    for (int i = 0; i < children.getLength(); i++)
-    {
-      Node child = children.item(i);
-      if (child != null && child instanceof Element)
-      {
-        if (XSDDOMHelper.inputEquals((Element) child, elementTag, isRef))
-        {
-          targetNode = child;
-          break;
-        }
-      }
-    }
-    return targetNode;
-  }
-
-  protected boolean elementExists(String elementTag, Element parent)
-  {
-    if (!(parent.getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, elementTag).getLength() > 0))
-    {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * Returns the deleteAction.
-   * 
-   * @return DeleteAction
-   */
-  public DeleteAction getDeleteAction()
-  {
-    return deleteAction;
-  }
-  
-  protected void addMultiplicityMenu(XSDConcreteComponent concreteComponent, IMenuManager manager)
-  {
-    SetMultiplicityAction oneMultiplicity = new SetMultiplicityAction(concreteComponent, "1");
-    oneMultiplicity.setMaxOccurs(1);
-    oneMultiplicity.setMinOccurs(1);
-    oneMultiplicity.setEnabled(!isReadOnly);
-    SetMultiplicityAction zeroOrMoreMultiplicity = new SetMultiplicityAction(concreteComponent, "0..* (" + XSDEditorPlugin.getXSDString("_ZERO_OR_MORE") + ")");
-    zeroOrMoreMultiplicity.setMaxOccurs(-1);
-    zeroOrMoreMultiplicity.setMinOccurs(0);
-    zeroOrMoreMultiplicity.setEnabled(!isReadOnly);
-    SetMultiplicityAction zeroOrOneMultiplicity = new SetMultiplicityAction(concreteComponent, "0..1 (" + XSDEditorPlugin.getXSDString("_ZERO_OR_ONE") + ")");
-    zeroOrOneMultiplicity.setMaxOccurs(1);
-    zeroOrOneMultiplicity.setMinOccurs(0);
-    zeroOrOneMultiplicity.setEnabled(!isReadOnly);
-    SetMultiplicityAction oneOrMoreMultiplicity = new SetMultiplicityAction(concreteComponent, "1..* (" + XSDEditorPlugin.getXSDString("_ONE_OR_MORE") + ")");
-    oneOrMoreMultiplicity.setMaxOccurs(-1);
-    oneOrMoreMultiplicity.setMinOccurs(1);
-    oneOrMoreMultiplicity.setEnabled(!isReadOnly);
-    
-    MenuManager multiplicityMenu = new MenuManager(XSDEditorPlugin.getXSDString("_UI_ACTION_SET_MULTIPLICITY"));
-    manager.add(multiplicityMenu);
-    multiplicityMenu.add(oneMultiplicity);
-    multiplicityMenu.add(zeroOrOneMultiplicity);
-    multiplicityMenu.add(zeroOrMoreMultiplicity);
-    multiplicityMenu.add(oneOrMoreMultiplicity);    
-  }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMultiPageEditorPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMultiPageEditorPart.java
deleted file mode 100644
index 009efb1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDMultiPageEditorPart.java
+++ /dev/null
@@ -1,645 +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;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceStatus;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextInputListener;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorActionBarContributor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IPropertyListener;
-import org.eclipse.ui.IStorageEditorInput;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IGotoMarker;
-import org.eclipse.wst.common.ui.provisional.editors.PostMultiPageEditorSite;
-import org.eclipse.wst.common.ui.provisional.editors.PostSelectionMultiPageEditorPart;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.ui.StructuredTextEditor;
-import org.eclipse.wst.sse.ui.internal.provisional.extensions.ISourceEditingTextTools;
-import org.eclipse.wst.xml.core.internal.provisional.IXMLPreferenceNames;
-import org.eclipse.wst.xml.core.internal.provisional.contenttype.ContentTypeIdForXML;
-import org.eclipse.wst.xml.ui.internal.provisional.IDOMSourceEditingTextTools;
-import org.eclipse.wst.xml.ui.internal.tabletree.XMLEditorMessages;
-import org.w3c.dom.Document;
-
-public class XSDMultiPageEditorPart extends PostSelectionMultiPageEditorPart implements IPropertyListener
-{
-
-  /**
-   * 
-   */
-  public XSDMultiPageEditorPart()
-  {
-    super();
-  }
-  
-  /**
-   * Internal part activation listener
-   */
-  class PartListener extends ShellAdapter implements IPartListener {
-    private IWorkbenchPart fActivePart;
-    private boolean fIsHandlingActivation = false;
-
-    private void handleActivation() {
-
-      if (fIsHandlingActivation)
-        return;
-
-      if (fActivePart == XSDMultiPageEditorPart.this) {
-        fIsHandlingActivation = true;
-        try {
-          safelySanityCheckState();
-        }
-        finally {
-          fIsHandlingActivation = false;
-        }
-      }
-    }
-
-    /**
-     * @see IPartListener#partActivated(IWorkbenchPart)
-     */
-    public void partActivated(IWorkbenchPart part) {
-      fActivePart = part;
-      handleActivation();
-    }
-
-    /**
-     * @see IPartListener#partBroughtToTop(IWorkbenchPart)
-     */
-    public void partBroughtToTop(IWorkbenchPart part) {
-    }
-
-    /**
-     * @see IPartListener#partClosed(IWorkbenchPart)
-     */
-    public void partClosed(IWorkbenchPart part) {
-    }
-
-    /**
-     * @see IPartListener#partDeactivated(IWorkbenchPart)
-     */
-    public void partDeactivated(IWorkbenchPart part) {
-      fActivePart = null;
-    }
-
-    /**
-     * @see IPartListener#partOpened(IWorkbenchPart)
-     */
-    public void partOpened(IWorkbenchPart part) {
-    }
-
-    /*
-     * @see ShellListener#shellActivated(ShellEvent)
-     */
-    public void shellActivated(ShellEvent e) {
-      handleActivation();
-    }
-  }
-
-  class TextInputListener implements ITextInputListener {
-    public void inputDocumentAboutToBeChanged(IDocument oldInput, IDocument newInput) {
-    }
-
-    public void inputDocumentChanged(IDocument oldInput, IDocument newInput) {
-    }
-  }
-
-  /** The source page index. */
-  private int fSourcePageIndex;
-  /** The text editor. */
-  private StructuredTextEditor fTextEditor;
-
-  private PartListener partListener;
-
-
-  /*
-   * This method is just to make firePropertyChanged accessbible from some
-   * (anonomous) inner classes.
-   */
-  protected void _firePropertyChange(int property) {
-    super.firePropertyChange(property);
-  }
-
-  /**
-   * Adds the source page of the multi-page editor.
-   */
-  protected void addSourcePage() throws PartInitException {
-    try {
-      fSourcePageIndex = addPage(fTextEditor, getEditorInput());
-      setPageText(fSourcePageIndex, XSDEditorPlugin.getXSDString("_UI_TAB_SOURCE")); //$NON-NLS-1$
-      // the update's critical, to get viewer selection manager and
-      // highlighting to work
-      fTextEditor.update();
-  
-      firePropertyChange(PROP_TITLE);
-  
-      // Changes to the Text Viewer's document instance should also force an
-      // input refresh
-      fTextEditor.getTextViewer().addTextInputListener(new TextInputListener());
-    }
-    catch (PartInitException e) {
-      // dispose editor
-      dispose();
-
-		// log for now, unless we find reason not to
-		Logger.log(Logger.INFO, e.getMessage());
-    }
-  }
-
-
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.part.MultiPageEditorPart#createPages()
-   */
-  protected void createPages()
-  {
-    try
-    {
-      // source page MUST be created before design page, now
-      createSourcePage();
-      addSourcePage();
-      setActivePage();
-
-    // future_TODO: add a catch block here for any exception the design
-    // page throws and convert it into a more informative message.
-    }
-    catch (PartInitException e) {
-      throw new RuntimeException(e);
-    }
-  }
-
-  /**
-   * @see org.eclipse.ui.part.MultiPageEditorPart#createSite(org.eclipse.ui.IEditorPart)
-   */
-  protected IEditorSite createSite(IEditorPart editor) {
-    IEditorSite site = null;
-    if (editor == fTextEditor) {
-			site = new PostMultiPageEditorSite(this, editor) {
-				public IEditorActionBarContributor getActionBarContributor() {
-					IEditorActionBarContributor contributor = super.getActionBarContributor();
-					XSDMultiPageEditorPart.this.getEditorSite().getActionBarContributor();
-					return contributor;
-				}
-				
-				public String getId() {
-					// sets this id so nested editor is considered xml source
-					// page
-					return ContentTypeIdForXML.ContentTypeID_XML + ".source"; //$NON-NLS-1$;
-				}
-			};
-		}
-    else {
-      site = super.createSite(editor);
-    }
-    return site;
-  }
-
-  /**
-   * Creates the source page of the multi-page editor.
-   */
-  protected void createSourcePage() throws PartInitException {
-    fTextEditor = createTextEditor();
-    fTextEditor.setEditorPart(this);
-
-    // Set the SourceViewerConfiguration now so the text editor won't use
-    // the default configuration first
-    // and switch to the StructuredTextViewerConfiguration later.
-    // DMW removed setSourceViewerConfiguration 3/26/2003 since added
-    // createPartControl to our text editor.
-    // fTextEditor.setSourceViewerConfiguration();
-    fTextEditor.addPropertyListener(this);
-  }
-
-  /**
-   * Method createTextEditor.
-   * 
-   * @return StructuredTextEditor
-   */
-  protected StructuredTextEditor createTextEditor() {
-    return new StructuredTextEditor();
-  }
-
-  public void dispose()
-  {
-    IWorkbenchWindow window = getSite().getWorkbenchWindow();
-    window.getPartService().removePartListener(partListener);
-    window.getShell().removeShellListener(partListener);
-
-    getSite().getPage().removePartListener(partListener);
-    if (fTextEditor != null) {
-      fTextEditor.removePropertyListener(this);
-    }
-    fTextEditor = null;
-
-    // moved to last when added window ... seems like
-    // we'd be in danger of losing some data, like site,
-    // or something.
-    super.dispose();
-  }
-
-  /*
-   * (non-Javadoc) Saves the contents of this editor. <p> Subclasses must
-   * override this method to implement the open-save-close lifecycle for an
-   * editor. For greater details, see <code> IEditorPart </code></p>
-   * 
-   * @see IEditorPart
-   */
-  public void doSave(IProgressMonitor monitor) {
-    fTextEditor.doSave(monitor);
-    //    // this is a temporary way to force validation.
-    //    // when the validator is a workbench builder, the following lines
-    // can be removed
-    //    if (fDesignViewer != null)
-    //      fDesignViewer.saveOccurred();
-
-  }
-
-  /*
-   * (non-Javadoc) Saves the contents of this editor to another object. <p>
-   * Subclasses must override this method to implement the open-save-close
-   * lifecycle for an editor. For greater details, see <code> IEditorPart
-   * </code></p>
-   * 
-   * @see IEditorPart
-   */
-  public void doSaveAs() {
-    fTextEditor.doSaveAs();
-    // 253619
-    // following used to be executed here, but is
-    // now called "back" from text editor (since
-    // mulitiple paths to the performSaveAs in StructuredTextEditor.
-    //doSaveAsForStructuredTextMulitPagePart();
-  }
-
-	private void editorInputIsAcceptable(IEditorInput input) throws PartInitException {
-		if (input instanceof IFileEditorInput) {
-			// verify that it can be opened
-			CoreException[] coreExceptionArray = new CoreException[1];
-			if (fileDoesNotExist((IFileEditorInput) input, coreExceptionArray)) {
-				CoreException coreException = coreExceptionArray[0];
-				if (coreException.getStatus().getCode() == IResourceStatus.FAILED_READ_LOCAL) {
-					// I'm assuming this is always 'does not exist'
-					// we'll refresh local go mimic behavior of default
-					// editor, where the
-					// troublesome file is refreshed (and will cause it to
-					// 'disappear' from Navigator.
-					try {
-						((IFileEditorInput) input).getFile().refreshLocal(IResource.DEPTH_ZERO, new NullProgressMonitor());
-					} catch (CoreException ce) {
-						// very unlikely
-						Logger.logException(ce);
-					}
-					throw new PartInitException(NLS.bind(XMLEditorMessages.Resource__does_not_exist, (new Object[]{input.getName()})));
-				} else {
-					throw new PartInitException(NLS.bind(XMLEditorMessages.Editor_could_not_be_open, (new Object[]{input.getName()})));
-				}
-			}
-		} else if (input instanceof IStorageEditorInput) {
-			InputStream contents = null;
-			try {
-				contents = ((IStorageEditorInput) input).getStorage().getContents();
-			} catch (CoreException noStorageExc) {
-			}
-			if (contents == null) {
-				throw new PartInitException(NLS.bind(XMLEditorMessages.Editor_could_not_be_open, (new Object[]{input.getName()})));
-			} else {
-				try {
-					contents.close();
-				} catch (IOException e) {
-				}
-			}
-		}
-	}
-
-  //  void doSaveAsForStructuredTextMulitPagePart() {
-  //    setPageText(getActivePage(), fTextEditor.getTitle());
-  //    setInput(fTextEditor.getEditorInput());
-  //    if (fDesignViewer != null) {
-  //      //fDesignViewer.setEditorInput(fTextEditor.getEditorInput());
-  //      fDesignViewer.setModel(getModel());
-  //      fDesignViewer.saveAsOccurred();
-  //    }
-  //    // even though we've set title etc., several times already!
-  //    // only now is all prepared for it.
-  //    firePropertyChange(IWorkbenchPart.PROP_TITLE);
-  //    firePropertyChange(PROP_DIRTY);
-  //  }
-  /*
-   * (non-Javadoc) Initializes the editor part with a site and input. <p>
-   * Subclasses of <code> EditorPart </code> must implement this method.
-   * Within the implementation subclasses should verify that the input type
-   * is acceptable and then save the site and input. Here is sample code:
-   * </p><pre> if (!(input instanceof IFileEditorInput)) throw new
-   * PartInitException("Invalid Input: Must be IFileEditorInput");
-   * setSite(site); setInput(editorInput); </pre>
-   */
-  protected boolean fileDoesNotExist(IFileEditorInput input, Throwable[] coreException) {
-    boolean result = false;
-    InputStream inStream = null;
-    if ((!(input.exists())) || (!(input.getFile().exists()))) {
-      result = true;
-    }
-    else {
-      try {
-        inStream = input.getFile().getContents(true);
-      }
-      catch (CoreException e) {
-        // very likely to be file not found
-        result = true;
-        coreException[0] = e;
-      }
-      finally {
-        if (input != null) {
-          try {
-            if (inStream != null) {
-              inStream.close();
-            }
-          }
-          catch (IOException e) {
-
-          }
-        }
-      }
-    }
-    return result;
-  }
-
-  public Object getAdapter(Class key) {
-    Object result = null;
-
-      // DMW: I'm bullet-proofing this because
-      // its been reported (on 4.03 version) a null pointer sometimes
-      // happens here on startup, when an editor has been left
-      // open when workbench shutdown.
-      if (fTextEditor != null) {
-        result = fTextEditor.getAdapter(key);
-      }
-    return result;
-  }
-
-  public Document getDOMDocument() {
-    if (getTextEditor() == null)
-      return null;
-
-    ISourceEditingTextTools tools = (ISourceEditingTextTools) getAdapter(ISourceEditingTextTools.class);
-    if(tools != null && tools instanceof IDOMSourceEditingTextTools) {
-    	return ((IDOMSourceEditingTextTools)tools).getDOMDocument();
-    }
-    return null;
-  }
-
-  protected IStructuredModel getModel() {
-    IStructuredModel model = null;
-    if (fTextEditor != null)
-      model = fTextEditor.getModel();
-    return model;
-  }
-
-  protected IPreferenceStore getPreferenceStore() {
-    return XSDEditorPlugin.getPlugin().getPreferenceStore();
-  }
-
-  public StructuredTextEditor getTextEditor() {
-    return fTextEditor;
-  }
-
-  /*
-   * (non-Javadoc) Method declared on IWorkbenchPart.
-   */
-  public String getTitle() {
-    String title = null;
-    if (getTextEditor() == null) {
-      if (getEditorInput() != null) {
-        title = getEditorInput().getName();
-      }
-    }
-    else {
-      title = getTextEditor().getTitle();
-    }
-    if (title == null) {
-      title = getPartName();
-    }
-    return title;
-  }
-
-  /*
-   * (non-Javadoc) Sets the cursor and selection state for this editor to
-   * the passage defined by the given marker. <p> Subclasses may override.
-   * For greater details, see <code> IEditorPart </code></p>
-   * 
-   * @see IEditorPart
-   */
-  public void gotoMarker(IMarker marker) {
-    // (pa) 20020217 this was null when opening an editor that was
-    // already open
-    if (fTextEditor != null) {
-      IGotoMarker markerGotoer = (IGotoMarker) fTextEditor.getAdapter(IGotoMarker.class);
-      markerGotoer.gotoMarker(marker);
-    }
-  }
-
-  public void init(IEditorSite site, IEditorInput input) throws PartInitException {
-//    editorInputIsAcceptable(input);
-    try {
-      super.init(site, input);
-      if (partListener == null) {
-        partListener = new PartListener();
-      }
-      //getSite().getPage().addPartListener(partListner);
-      // we want to listen for our own activation
-      IWorkbenchWindow window = getSite().getWorkbenchWindow();
-      window.getPartService().addPartListener(partListener);
-      window.getShell().addShellListener(partListener);
-    }
-    catch (Exception e) {
-		// log for now, unless we find reason not to
-		Logger.log(Logger.INFO, e.getMessage());
-    }
-    setPartName(input.getName());
-  }
-
-  /*
-   * (non-Javadoc) Returns whether the "save as" operation is supported by
-   * this editor. <p> Subclasses must override this method to implement the
-   * open-save-close lifecycle for an editor. For greater details, see
-   * <code> IEditorPart </code></p>
-   * 
-   * @see IEditorPart
-   */
-  public boolean isSaveAsAllowed() {
-    return fTextEditor != null && fTextEditor.isSaveAsAllowed();
-  }
-
-  /*
-   * (non-Javadoc) Returns whether the contents of this editor should be
-   * saved when the editor is closed. <p> This method returns <code> true
-   * </code> if and only if the editor is dirty ( <code> isDirty </code> ).
-   * </p>
-   */
-  public boolean isSaveOnCloseNeeded() {
-    // overriding super class since it does a lowly isDirty!
-    if (fTextEditor != null)
-      return fTextEditor.isSaveOnCloseNeeded();
-    return isDirty();
-  }
-
-  /**
-   * Notifies this multi-page editor that the page with the given id has
-   * been activated. This method is called when the user selects a different
-   * tab.
-   * 
-   * @param newPageIndex
-   *            the index of the activated page
-   */
-  protected void pageChange(int newPageIndex) {
-    super.pageChange(newPageIndex);
-
-    saveLastActivePageIndex(newPageIndex);
-  }
-
-  /**
-   * Posts the update code "behind" the running operation.
-   */
-  protected void postOnDisplayQue(Runnable runnable) {
-    IWorkbench workbench = PlatformUI.getWorkbench();
-    IWorkbenchWindow[] windows = workbench.getWorkbenchWindows();
-    if (windows != null && windows.length > 0) {
-      Display display = windows[0].getShell().getDisplay();
-      display.asyncExec(runnable);
-    }
-    else
-      runnable.run();
-  }
-
-  /**
-   * Indicates that a property has changed.
-   * 
-   * @param source
-   *            the object whose property has changed
-   * @param propId
-   *            the id of the property which has changed; property ids are
-   *            generally defined as constants on the source class
-   */
-  public void propertyChanged(Object source, int propId) {
-    switch (propId) {
-      // had to implement input changed "listener" so that
-      // strucutedText could tell it containing editor that
-      // the input has change, when a 'resource moved' event is
-      // found.
-      case IEditorPart.PROP_INPUT :
-      case IEditorPart.PROP_DIRTY : {
-        if (source == fTextEditor) {
-          if (fTextEditor.getEditorInput() != getEditorInput()) {
-            setInput(fTextEditor.getEditorInput());
-            // title should always change when input changes.
-            // create runnable for following post call
-            Runnable runnable = new Runnable() {
-              public void run() {
-                _firePropertyChange(IWorkbenchPart.PROP_TITLE);
-              }
-            };
-            // Update is just to post things on the display queue
-            // (thread). We have to do this to get the dirty
-            // property to get updated after other things on the
-            // queue are executed.
-            postOnDisplayQue(runnable);
-          }
-        }
-        break;
-      }
-      case IWorkbenchPart.PROP_TITLE : {
-        // update the input if the title is changed
-        if (source == fTextEditor) {
-          if (fTextEditor.getEditorInput() != getEditorInput()) {
-            setInput(fTextEditor.getEditorInput());
-          }
-        }
-        break;
-      }
-      default : {
-        // propagate changes. Is this needed? Answer: Yes.
-        if (source == fTextEditor) {
-          firePropertyChange(propId);
-        }
-        break;
-      }
-    }
-
-  }
-
-  protected void safelySanityCheckState() {
-    // If we're called before editor is created, simply ignore since we
-    // delegate this function to our embedded TextEditor
-    if (getTextEditor() == null)
-      return;
-
-    getTextEditor().safelySanityCheckState(getEditorInput());
-
-  }
-
-  protected void saveLastActivePageIndex(int newPageIndex) {
-    // save the last active page index to preference manager
-    getPreferenceStore().setValue(IXMLPreferenceNames.LAST_ACTIVE_PAGE, newPageIndex);
-  }
-
-  /**
-   * Sets the currently active page.
-   */
-  protected void setActivePage() {
-    // retrieve the last active page index from preference manager
-    int activePageIndex = getPreferenceStore().getInt(IXMLPreferenceNames.LAST_ACTIVE_PAGE);
-
-    // We check this range since someone could hand edit the XML
-    // preference file to an invalid value ... which I know from
-    // experience :( ... if they do, we'll reset to default and continue
-    // rather than throw an assertion error in the setActivePage(int)
-    // method.
-    if (activePageIndex < 0 || activePageIndex >= getPageCount()) {
-      activePageIndex = fSourcePageIndex;
-    }
-    setActivePage(activePageIndex);
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see org.eclipse.ui.part.EditorPart#setInput(org.eclipse.ui.IEditorInput)
-   */
-  protected void setInput(IEditorInput input) {
-    // If driven from the Source page, it's "model" may not be up to date
-    // with the input just yet. We'll rely on later notification from the
-    // TextViewer to set us straight
-    super.setInput(input);
-    setPartName(input.getName());
-  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AbstractAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AbstractAction.java
deleted file mode 100644
index b421416..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AbstractAction.java
+++ /dev/null
@@ -1,68 +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 org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-public class AbstractAction extends Action
-{
-  XSDConcreteComponent xsdConcreteComponent;
-
-  /**
-   * @param text
-   */
-  public AbstractAction(String text, XSDConcreteComponent xsdConcreteComponent)
-  {
-    super(text);
-    this.xsdConcreteComponent = xsdConcreteComponent;
-  }
-
-  /**
-   * @param text
-   * @param image
-   */
-  public AbstractAction(String text, ImageDescriptor image, XSDConcreteComponent xsdConcreteComponent)
-  {
-    super(text, image);
-    this.xsdConcreteComponent = xsdConcreteComponent;
-  }
-
-  /**
-   * @param text
-   * @param style
-   */
-  public AbstractAction(String text, int style)
-  {
-    super(text, style);
-  }
-  
-  public DocumentImpl getDocument()
-  {
-    return (DocumentImpl) xsdConcreteComponent.getElement().getOwnerDocument();
-  }
-    
-  public void beginRecording(String description)
-  {
-    getDocument().getModel().beginRecording(this, description);
-  }
-  
-  public void endRecording()
-  {
-    DocumentImpl doc = (DocumentImpl) getDocument();
-    
-    doc.getModel().endRecording(this);    
-  }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddAttributeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddAttributeAction.java
deleted file mode 100644
index f1a9f3f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddAttributeAction.java
+++ /dev/null
@@ -1,40 +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 org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.commands.AddAttributeDeclarationCommand;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-public class AddAttributeAction extends AbstractAction
-{
-  protected AddAttributeDeclarationCommand command;
-  
-  public AddAttributeAction(String text, XSDConcreteComponent parent)
-  {
-    super(text, parent);
-    command = new AddAttributeDeclarationCommand(parent);
-  }
-
-  public AddAttributeAction(String text, ImageDescriptor image, XSDConcreteComponent parent)
-  {
-    super(text, image, parent);
-    command = new AddAttributeDeclarationCommand(parent);
-  }
-
-  public void run()
-  {
-    beginRecording(getText());
-    command.run();
-    
-    endRecording();
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddEnumsAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddEnumsAction.java
deleted file mode 100644
index ecc2f4b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddEnumsAction.java
+++ /dev/null
@@ -1,92 +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.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.xsd.ui.internal.widgets.EnumerationsDialog;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-/**
- * Pattern is scoped to Enum Type
- */
-public class AddEnumsAction extends CreateElementAction
-{
-  public AddEnumsAction(String label)
-  {
-  	super(label);
-  }
- 
-  public Element createAndAddNewChildElement(String token)
-  {
-    String prefix = parentNode.getPrefix();
-    prefix = (prefix == null) ? "" : (prefix + ":");
-    Element childNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + elementTag);
-    if (getAttributes() != null)
-    {
-      List attributes = getAttributes();
-      for (int i = 0; i < attributes.size(); i++)
-      {
-        DOMAttribute attr = (DOMAttribute) attributes.get(i);
-        childNode.setAttribute(attr.getName(), attr.getValue());
-      }
-    }
-    if (getRelativeNode() == null)
-    {
-      parentNode.appendChild(childNode);
-    }
-    else
-    {
-      ((Element)parentNode).insertBefore(childNode,getRelativeNode());
-    }
-    childNode.setAttribute("value", token);
-    return childNode;
-  }    
-  
-  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();
-    EnumerationsDialog dialog = new EnumerationsDialog(parentShell);
-    dialog.setBlockOnOpen(true);
-    int result = dialog.open();
-
-    if (result == Window.OK) 
-    {
-      beginRecording(getDescription());
-
-      String text = dialog.getText();
-      String delimiter = dialog.getDelimiter();
-      StringTokenizer tokenizer = new StringTokenizer(text, delimiter);
-      while (tokenizer.hasMoreTokens()) 
-      {
-        String token = tokenizer.nextToken();
-        if (dialog.isPreserveWhitespace() == false) 
-        {
-          token = token.trim();
-        }
-
-        Element child = createAndAddNewChildElement(token);
-        formatChild(child);        
-      }
-      endRecording();
-    }
-  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddModelGroupAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddModelGroupAction.java
deleted file mode 100644
index fcfdc77..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddModelGroupAction.java
+++ /dev/null
@@ -1,57 +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 org.eclipse.jface.action.Action;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.commands.AddModelGroupCommand;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-
-public class AddModelGroupAction extends Action
-{
-   protected AddModelGroupCommand command;
-   protected XSDConcreteComponent parent;
-  
-   public static String getLabel(XSDCompositor compositor)
-   {
-     String result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_SEQUENCE"); //$NON-NLS-1$
-     if (compositor != null)
-     {
-       if (compositor == XSDCompositor.CHOICE_LITERAL)
-       {
-         result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_CHOICE");  //$NON-NLS-1$
-       }
-       else if (compositor == XSDCompositor.ALL_LITERAL)
-       {
-         result = XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ALL");//$NON-NLS-1$
-       }  
-     }
-     return result;
-   }
-  
-   public AddModelGroupAction(XSDConcreteComponent parent, XSDCompositor compositor)
-   {
-     command = new AddModelGroupCommand(parent, compositor);
-     this.parent = parent;
-     setText(getLabel(compositor));     
-   }   
-   
-   public void run()
-   {
-     DocumentImpl doc = (DocumentImpl) parent.getElement().getOwnerDocument();
-     doc.getModel().beginRecording(this, getText());
-     command.run();
-     doc.getModel().endRecording(this);
-   }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddSchemaNodeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddSchemaNodeAction.java
deleted file mode 100644
index d890af0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/AddSchemaNodeAction.java
+++ /dev/null
@@ -1,61 +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 org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-
-
-public class AddSchemaNodeAction extends Action
-{
-  /**
-   * Constructor for AddSchemaNodeAction.
-   */
-  public AddSchemaNodeAction()
-  {
-    super();
-  }
-
-  /**
-   * Constructor for AddSchemaNodeAction.
-   * @param text
-   */
-  public AddSchemaNodeAction(String text)
-  {
-    super(text);
-  }
-
-  /**
-   * Constructor for AddSchemaNodeAction.
-   * @param text
-   * @param image
-   */
-  public AddSchemaNodeAction(String text, ImageDescriptor image)
-  {
-    super(text, image);
-  }
-
-  public void setEditor(XSDEditor editor)
-  {
-    this.editor = editor;
-  }
-  
-  protected XSDEditor editor;
-  
-  /**
-   * @see org.eclipse.jface.action.IAction#run()
-   */
-  public void run()
-  {
-    editor.createDefaultSchemaNode(editor.getDOMDocument());
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/BackAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/BackAction.java
deleted file mode 100644
index 0ab518d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/BackAction.java
+++ /dev/null
@@ -1,90 +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 org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphViewer;
-import org.eclipse.xsd.XSDSchema;
-
-/**
- * @author kchong
- *
- * <a href="mailto:kchong@ca.ibm.com">kchong@ca.ibm.com</a>
- *
- */
-public class BackAction extends Action
-{
-  ISelectionProvider selectionProvider;
-  XSDGraphViewer xsdGraphViewer;
-  XSDSchema xsdSchema;
-  
-  /**
-   * 
-   */
-  public BackAction()
-  {
-    super();
-  }
-
-  /**
-   * @param text
-   */
-  public BackAction(String text)
-  {
-    super(text);
-  }
-
-  public BackAction(String text, XSDGraphViewer viewer)
-  {
-    super(text);
-    xsdGraphViewer = viewer;
-  }
-  
-  /**
-   * @param text
-   * @param image
-   */
-  public BackAction(String text, ImageDescriptor image)
-  {
-    super(text, image);
-  }
-
-  /**
-   * @param text
-   * @param style
-   */
-  public BackAction(String text, int style)
-  {
-    super(text, style);
-  }
-
-  public void setSelectionProvider(ISelectionProvider selectionProvider)
-  {
-    this.selectionProvider = selectionProvider;
-  }
-
-  public void setXSDSchema(XSDSchema xsdSchema)
-  {
-    this.xsdSchema = xsdSchema;
-  }
-  
-  /*
-   * @see IAction#run()
-   */
-  public void run()
-  {
-    StructuredSelection selection = new StructuredSelection(xsdSchema);
-    selectionProvider.setSelection(selection);
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAnnotationAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAnnotationAction.java
deleted file mode 100644
index 698d433..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAnnotationAction.java
+++ /dev/null
@@ -1,55 +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 org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class CreateAnnotationAction extends CreateElementAction
-{
-  XSDSchema xsdSchema;
-  Element documentationNode;
-
-  public CreateAnnotationAction()
-  {
-    super();
-  }
-
-  public CreateAnnotationAction(String text)
-  {
-    super(text);
-  }
-
-  public CreateAnnotationAction(String text, ImageDescriptor image)
-  {
-    super(text, image);
-  }
-
-  public Element createAndAddNewChildElement()
-  {
-    Element childNode = super.createAndAddNewChildElement();
-
-    String prefix = parentNode.getPrefix();
-    prefix = (prefix == null) ? "" : (prefix + ":");
-    documentationNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.DOCUMENTATION_ELEMENT_TAG);
-    childNode.appendChild(documentationNode);
-
-    formatChild(childNode);
-    formatChild(documentationNode);
-    formatChild(childNode);
-    
-    return childNode;
-  }
-  
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAttributeAndRequired.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAttributeAndRequired.java
deleted file mode 100644
index 155577b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateAttributeAndRequired.java
+++ /dev/null
@@ -1,115 +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.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-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.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-
-/*
- * Class which creates an Attribute and necessary Elements required before
- * an Attribute can be added.  For example, if we wish to add an Attribute
- * to a GlobalElement without a ComplexType, a ComplexType will be created.
- */
-public class CreateAttributeAndRequired extends Action {
-	String elementTag;
-	String label;
-	List attributes;
-	XSDSchema xsdSchema;
-	ISelectionProvider selectionProvider;
-	Object parent;
-	
-	public CreateAttributeAndRequired(String elementTag, String label, List attributes, XSDSchema xsdSchema, ISelectionProvider selProvider, Object parent) {
-		super(label);
-		
-		this.elementTag = elementTag;
-		this.label = label;
-		this.attributes = attributes;
-		this.xsdSchema = xsdSchema;
-		this.selectionProvider = selProvider;
-		this.parent = parent;
-	}
-
-	public void run() {
-		if (parent instanceof XSDElementDeclaration) {
-			XSDElementDeclaration ed = (XSDElementDeclaration) parent;
-			beginRecording(ed.getElement());
-	        ed.setTypeDefinition(null);
-	      	XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
-	        ed.setAnonymousTypeDefinition(td);
-			
-		    CreateElementAction action = new CreateElementAction(label);		    
-		    action.setElementTag(elementTag);
-		    action.setAttributes(attributes);
-		    action.setParentNode(td.getElement());
-		    action.setRelativeNode(null);
-		    action.setXSDSchema(xsdSchema);
-		    action.setSelectionProvider(selectionProvider);
-		    action.run();
-		    
-		    formatChild(td.getElement());
-        if (td.getAttributeContents().size() > 0)
-        {
-		      selectObject(td.getAttributeContents().get(0));
-        }
-		    endRecording(ed.getElement());
-		}
-	}
-
-	protected void beginRecording(Element element) {
-		((DocumentImpl) element.getOwnerDocument()).getModel().beginRecording(this, getText());
-	}
-	
-	protected void endRecording(Element element) {
-		((DocumentImpl) element.getOwnerDocument()).getModel().endRecording(this);
-	}
-	
-	public void selectObject(Object object) {
-	    if (selectionProvider != null)
-	    {
-	        selectionProvider.setSelection(new StructuredSelection(object));
-	    }
-	}
-	
-	  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(); 
-	      }
-	    }
-	  }
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateGroupAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateGroupAction.java
deleted file mode 100644
index f9eadae..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateGroupAction.java
+++ /dev/null
@@ -1,76 +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 org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class CreateGroupAction extends CreateElementAction
-{
-  XSDSchema xsdSchema;
-
-  /**
-   * Constructor for CreateGroupAction.
-   */
-  public CreateGroupAction()
-  {
-    super();
-  }
-  /**
-   * Constructor for CreateGroupAction.
-   * @param text
-   */
-  public CreateGroupAction(String text)
-  {
-    super(text);
-  }
-  /**
-   * Constructor for CreateGroupAction.
-   * @param text
-   * @param XSDSchema
-   */
-  public CreateGroupAction(String text, XSDSchema xsdSchema)
-  {
-    super(text);
-    this.xsdSchema = xsdSchema;
-  }
-  /**
-   * Constructor for CreateGroupAction.
-   * @param text
-   * @param image
-   */
-  public CreateGroupAction(String text, ImageDescriptor image)
-  {
-    super(text, image);
-  }
-
-  public Element createAndAddNewChildElement()
-  {
-    XSDConcreteComponent xsdComp = xsdSchema.getCorrespondingComponent(parentNode);
-    Element childNode = super.createAndAddNewChildElement();
-
-    String prefix = parentNode.getPrefix();
-    prefix = (prefix == null) ? "" : (prefix + ":");
-    Element contentModelNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SEQUENCE_ELEMENT_TAG);
-    childNode.appendChild(contentModelNode);
-
-    formatChild(childNode);
-    
-    xsdComp.setElement(parentNode);
-    
-    return childNode;
-  }
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateIdentityConstraintsAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateIdentityConstraintsAction.java
deleted file mode 100644
index ca933f3..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateIdentityConstraintsAction.java
+++ /dev/null
@@ -1,74 +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 org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class CreateIdentityConstraintsAction extends CreateElementAction
-{
-  XSDSchema xsdSchema;
-
-  /**
-   * Constructor for CreateIdentityConstraintsAction.
-   */
-  public CreateIdentityConstraintsAction()
-  {
-    super();
-  }
-  /**
-   * Constructor for CreateIdentityConstraintsAction.
-   * @param text
-   */
-  public CreateIdentityConstraintsAction(String text)
-  {
-    super(text);
-  }
-  /**
-   * Constructor for CreateIdentityConstraintsAction.
-   * @param text
-   * @param XSDSchema
-   */
-  public CreateIdentityConstraintsAction(String text, XSDSchema xsdSchema)
-  {
-    super(text);
-    this.xsdSchema = xsdSchema;
-  }
-  /**
-   * Constructor for CreateIdentityConstraintsAction.
-   * @param text
-   * @param image
-   */
-  public CreateIdentityConstraintsAction(String text, ImageDescriptor image)
-  {
-    super(text, image);
-  }
-
-  public Element createAndAddNewChildElement()
-  {
-    Element childNode = super.createAndAddNewChildElement();
-
-    String prefix = parentNode.getPrefix();
-    prefix = (prefix == null) ? "" : (prefix + ":");
-    Element selectorNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SELECTOR_ELEMENT_TAG);
-
-    DOMAttribute attr = new DOMAttribute(XSDConstants.XPATH_ATTRIBUTE, "");
-    selectorNode.setAttribute(attr.getName(), attr.getValue());
-
-    childNode.appendChild(selectorNode);
-
-    return childNode;
-  }
-	
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalComplexTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalComplexTypeAction.java
deleted file mode 100644
index e8b0cd0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalComplexTypeAction.java
+++ /dev/null
@@ -1,68 +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 org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class CreateLocalComplexTypeAction extends CreateElementAction
-{
-  /**
-   * Constructor for CreateLocalComplexTypeAction.
-   */
-  public CreateLocalComplexTypeAction()
-  {
-    super();
-  }
-  /**
-   * Constructor for CreateLocalComplexTypeAction.
-   * @param text
-   */
-  public CreateLocalComplexTypeAction(String text)
-  {
-    super(text);
-  }
-  /**
-   * Constructor for CreateLocalComplexTypeAction.
-   * @param text
-   * @param image
-   */
-  public CreateLocalComplexTypeAction(String text, ImageDescriptor image)
-  {
-    super(text, image);
-  }
-
-  public Element createAndAddNewChildElement()
-  {  
-    XSDConcreteComponent xsdComp = xsdSchema.getCorrespondingComponent(parentNode);
-    
-    Element childNode = super.createAndAddNewChildElement();
-  
-    if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.ELEMENT_ELEMENT_TAG, false))  
-    {  
-      parentNode.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);  
-    }  
-                                                      
-    String prefix = parentNode.getPrefix();
-    prefix = (prefix == null) ? "" : (prefix + ":");
-    childNode.appendChild(getDocument().createElement(prefix + XSDConstants.SEQUENCE_ELEMENT_TAG));
-    
-    formatChild(childNode);
-    
-    xsdComp.setElement(parentNode);
-
-    return childNode;
-  }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalSimpleTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalSimpleTypeAction.java
deleted file mode 100644
index d2e1065..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateLocalSimpleTypeAction.java
+++ /dev/null
@@ -1,85 +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 org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class CreateLocalSimpleTypeAction extends CreateElementAction
-{
-  XSDSchema xsdSchema;
-
-  /**
-   * Constructor for CreateLocalSimpleTypeAction.
-   */
-  public CreateLocalSimpleTypeAction()
-  {
-    super();
-  }
-  /**
-   * Constructor for CreateLocalSimpleTypeAction.
-   * @param text
-   */
-  public CreateLocalSimpleTypeAction(String text)
-  {
-    super(text);
-  }
-
-  /**
-   * Constructor for CreateLocalSimpleTypeAction.
-   * @param text
-   * @param image
-   */
-  public CreateLocalSimpleTypeAction(String text, ImageDescriptor image)
-  {
-    super(text, image);
-  }
-
-  public Element createAndAddNewChildElement()
-  {
-    Element childNode = super.createAndAddNewChildElement();
-
-    if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.UNION_ELEMENT_TAG, false))
-    {
-//      parentNode.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
-    }
-    else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.LIST_ELEMENT_TAG, false))
-    {
-      parentNode.removeAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
-    }
-    else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
-    {
-      parentNode.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
-    }
-    else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.RESTRICTION_ELEMENT_TAG, false))
-    {
-      Node parent = parentNode.getParentNode();
-      if (XSDDOMHelper.inputEquals(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-      {
-        parentNode.removeAttribute(XSDConstants.BASE_ATTRIBUTE);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-    {
-      parentNode.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
-    }
-    
-    formatChild(childNode);
-    
-    return childNode;
-  }
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleContentAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleContentAction.java
deleted file mode 100644
index d9d9eb7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleContentAction.java
+++ /dev/null
@@ -1,115 +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.List;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-/**
- * @version   1.0
- * @author
- */
-public class CreateSimpleContentAction extends CreateElementAction
-{
-  XSDSchema xsdSchema;
-  //IDocument document;
-
-  /**
-   * Constructor for CreateSimpleContentAction.
-   */
-  public CreateSimpleContentAction()
-  {
-    super();
-  }
-  /**
-   * Constructor for CreateSimpleContentAction.
-   * @param text
-   */
-  public CreateSimpleContentAction(String text)
-  {
-    super(text);
-  }
-  /**
-   * Constructor for CreateSimpleContentAction.
-   * @param text
-   * @param XSDSchema
-   */
-  public CreateSimpleContentAction(String text, XSDSchema xsdSchema)
-  {
-    super(text);
-    this.xsdSchema = xsdSchema;
-  }
-  /**
-   * Constructor for CreateSimpleContentAction.
-   * @param text
-   * @param image
-   */
-  public CreateSimpleContentAction(String text, ImageDescriptor image)
-  {
-    super(text, image);
-  }
-
-  public Element createAndAddNewChildElement()
-  {
-    Element childNode = super.createAndAddNewChildElement();
-
-    String prefix = parentNode.getPrefix();
-    prefix = (prefix == null) ? "" : (prefix + ":");
-    Element derivedByNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + "restriction");
-    childNode.appendChild(derivedByNode);
-    Element sequence = null;
-
-    if (XSDDOMHelper.inputEquals(childNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-    {
-      sequence = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + "sequence");
-      derivedByNode.appendChild(sequence);
-    }
-
-    // now add the required base attribute for the derived by node
-    TypesHelper typesHelper = new TypesHelper(xsdSchema);
-    List listOfCT = typesHelper.getUserComplexTypeNamesList();
-    String firstType = "";
-    if (listOfCT.size() > 0)
-    {
-      firstType = (String)(listOfCT).get(0);
-    }
-    DOMAttribute attr = new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, firstType);
-    derivedByNode.setAttribute(attr.getName(), attr.getValue());
-
-    formatChild(derivedByNode);
-    if (sequence != null)
-    {
-      formatChild(sequence);
-      formatChild(derivedByNode);
-    }
-    formatChild(childNode);
-
-    
-    return childNode;
-  }
-
-  /*
-   * @see IAction#run()
-   */
-  public void run()
-  {
-    beginRecording(getDescription());
-
-    createAndAddNewChildElement();
-    endRecording();
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleTypeAction.java
deleted file mode 100644
index 5e5c29c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/CreateSimpleTypeAction.java
+++ /dev/null
@@ -1,68 +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 org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-public class CreateSimpleTypeAction extends CreateElementAction
-{
-  /**
-   * 
-   */
-  public CreateSimpleTypeAction()
-  {
-    super();
-  }
-
-  /**
-   * @param text
-   */
-  public CreateSimpleTypeAction(String text)
-  {
-    super(text);
-  }
-  
-  public CreateSimpleTypeAction(String text, XSDSchema xsdSchema)
-  {
-    super(text);
-    this.xsdSchema = xsdSchema;
-  }
-
-  /**
-   * @param text
-   * @param image
-   */
-  public CreateSimpleTypeAction(String text, ImageDescriptor image)
-  {
-    super(text, image);
-  }
-  
-  public Element createAndAddNewChildElement()
-  {
-    XSDConcreteComponent xsdComp = xsdSchema.getCorrespondingComponent(parentNode);
-    Element childNode = super.createAndAddNewChildElement();
-
-    String prefix = parentNode.getPrefix();
-    prefix = (prefix == null) ? "" : (prefix + ":");
-    Element contentModelNode = getDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.RESTRICTION_ELEMENT_TAG);
-    contentModelNode.setAttribute(XSDConstants.BASE_ATTRIBUTE, prefix + "string");
-    childNode.appendChild(contentModelNode);
-
-    formatChild(childNode);
-    
-    xsdComp.setElement(parentNode);
-    
-    return childNode;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DeleteAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DeleteAction.java
deleted file mode 100644
index 5495c98..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/DeleteAction.java
+++ /dev/null
@@ -1,218 +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.Iterator;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.actions.SelectionListenerAction;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Node;
-
-
-public class DeleteAction extends SelectionListenerAction
-{
-  protected IEditorPart editor;
-  protected XSDSchema xsdSchema;
-  protected ISelectionProvider selectionProvider;
-  protected XSDConcreteComponent parentXSDComponent;
-  
-  /**
-   * Constructor for DeleteAction.
-   * @param text
-   */
-  public DeleteAction(String text, IEditorPart editor, XSDSchema xsdSchema)
-  {
-    super(text);
-    this.editor = editor;
-    this.xsdSchema = xsdSchema;
-  }
-  
-  public void setSelectionProvider(ISelectionProvider selectionProvider)
-  {
-    this.selectionProvider = selectionProvider;
-  }
-  
-  public IEditorPart getEditor()
-  {
-    return editor;
-  }
-  
-  public XSDSchema getSchema()
-  {
-    return xsdSchema;
-  }
-  
-  public void setXSDSchema(XSDSchema xsdSchema)
-  {
-    this.xsdSchema = xsdSchema;
-  }
-  
-  /*
-   * @see IAction#run()
-   */
-  public void run()
-  {
-    IStructuredSelection selection = getStructuredSelection();
-    
-    if (selection.isEmpty())
-    {
-      return;
-    }
-    
-    Iterator iter = selection.iterator();
-    DocumentImpl doc = null;
-    while (iter.hasNext())
-    {
-      Object obj = iter.next();
-      Node node = null;
-      if (obj instanceof Node)
-      {
-        node = (Node)obj;
-      }
-      else if (obj instanceof XSDConcreteComponent)
-      {
-        xsdSchema = ((XSDConcreteComponent)obj).getSchema();
-        
-        node = ((XSDConcreteComponent)obj).getElement();
-        if (node instanceof IDOMNode)
-        {
-          parentXSDComponent = ((XSDConcreteComponent)obj).getContainer();
-        
-          if (parentXSDComponent instanceof XSDParticle)
-          {
-            // need to get the modelGroup
-            parentXSDComponent = parentXSDComponent.getContainer();
-          }
-        }
-
-      }
-      if (!XSDDOMHelper.inputEquals(node, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-      {
-        if (node instanceof IDOMNode)
-        {
-          if (doc == null)
-          {
-            doc = (DocumentImpl) node.getOwnerDocument();
-            doc.getModel().beginRecording(this, XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_NODES"));
-          }
-    
-          boolean refresh = cleanupReferences(node);
-          if (node != null)
-          {
-            XSDDOMHelper.removeNodeAndWhitespace(node);
-          }
-          
-          // Workaround to reset included elements in XSD model
-          if (refresh)
-          {
-  //          getEditor().reparseSchema();
-  //          getEditor().getGraphViewer().setSchema(getEditor().getXSDSchema());
-          }
-        }
-      }
-    }
-    
-    if (parentXSDComponent != null && selectionProvider != null)
-    {
-      selectionProvider.setSelection(new StructuredSelection(parentXSDComponent));
-    }
-    
-    if (doc != null)
-    {
-      doc.getModel().endRecording(this);
-    }
-  }
-
-  protected boolean cleanupReferences(Node deletedNode)
-  {
-    boolean refresh = false;
-    /*
-    XSDConcreteComponent comp = getSchema().getCorrespondingComponent(deletedNode);
-    
-    if (comp instanceof XSDInclude ||
-        comp instanceof XSDImport ||
-        comp instanceof XSDRedefine)
-    {
-      XSDSchema referencedSchema = null;
-      if (comp instanceof XSDInclude)
-      {
-        referencedSchema = ((XSDInclude)comp).getIncorporatedSchema();
-        refresh = true;
-      }
-      else if (comp instanceof XSDRedefine)
-      {
-        referencedSchema = ((XSDRedefine)comp).getIncorporatedSchema();
-        refresh = true;
-      }
-      else if (comp instanceof XSDImport)
-      {
-        referencedSchema = ((XSDImport)comp).getResolvedSchema();
-        refresh = true;
-      }
-
-      if (referencedSchema != null)
-      {
-        XSDExternalFileCleanup cleanHelper = new XSDExternalFileCleanup(referencedSchema);
-        cleanHelper.visitSchema(getSchema());
-        // populate messages
-// TODO        getEditor().createTasksInTaskList(cleanHelper.getMessages());
-      }
-      if (comp instanceof XSDImport)
-      {
-        TypesHelper typesHelper = new TypesHelper(getSchema());
-        typesHelper.updateMapAfterDelete((XSDImport)comp);
-      }
-    }
-    else if (getSchema().equals(comp.getContainer()))
-    {
-      BaseGlobalCleanup cleanHelper = null;
-      // Only need to clean up references if the component being deleted is global scoped
-      if (comp instanceof XSDElementDeclaration)
-      {
-        cleanHelper = new GlobalElementCleanup(comp);
-      }
-      else if (comp instanceof XSDModelGroupDefinition)
-      {
-        cleanHelper = new GlobalGroupCleanup(comp);
-      }
-      else if (comp instanceof XSDTypeDefinition)
-      {
-        cleanHelper = new GlobalSimpleOrComplexTypeCleanup(comp);
-      }
-      else if (comp instanceof XSDAttributeDeclaration)
-      {
-        cleanHelper = new GlobalAttributeCleanup(comp);
-      }
-      else if (comp instanceof XSDAttributeGroupDefinition)
-      {
-        cleanHelper = new GlobalAttributeGroupCleanup(comp);
-      }
-      
-      
-      if (cleanHelper != null)
-      {
-        cleanHelper.visitSchema(getSchema());
-      }
-    }*/
-    return refresh;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/GraphRenameAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/GraphRenameAction.java
deleted file mode 100644
index cea3fd9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/GraphRenameAction.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2004, 2005 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 org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.jface.action.Action;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.commands.RenameCommand;
-import org.eclipse.xsd.XSDNamedComponent;
-
-
-public class GraphRenameAction extends Action
-{
-  protected RenameCommand command;
-  
-  public GraphRenameAction(XSDNamedComponent namedComponent, GraphicalEditPart editPart)
-  {
-    command = new RenameCommand(namedComponent, editPart);
-    setText(XSDEditorPlugin.getXSDString("_UI_LABEL_RENAME"));
-  }
-
-  public void run()
-  {
-    command.run();
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ISchemaEditorActionConstants.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ISchemaEditorActionConstants.java
deleted file mode 100644
index 39836ff..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ISchemaEditorActionConstants.java
+++ /dev/null
@@ -1,22 +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;
-
-public interface ISchemaEditorActionConstants
-{
-  public static final String RETARGET_VALIDATE_SCHEMA_ACTION_ID = "retargetValidateSchemaAction"; //$NON-NLS-1$
-  public static final String RETARGET_RELOAD_DEPENDENCIES_ACTION_ID = "retargetReloadDependenciesAction"; //$NON-NLS-1$
-  public static final String RETARGET_GENERATE_JAVA_ACTION_ID = "retargetGenerateJavaAction"; //$NON-NLS-1$
-  public static final String RETARGET_GENERATE_DTD_ACTION_ID = "retargetGenerateDtdAction"; //$NON-NLS-1$
-  public static final String RETARGET_GENERATE_XML_ACTION_ID = "retargetGenerateXMLAction"; //$NON-NLS-1$
-  public static final String RETARGET_RENAME_ELEMENT_ACTION_ID = "RenameElement"; //$NON-NLS-1$
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MakeAnonymousGlobal.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MakeAnonymousGlobal.java
deleted file mode 100644
index 9a9638a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MakeAnonymousGlobal.java
+++ /dev/null
@@ -1,66 +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 org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class MakeAnonymousGlobal extends CreateElementAction
-{
-	XSDSchema xsdSchema;
-	Element type;
-	
-	public MakeAnonymousGlobal(String text, Element type, XSDSchema xsdSchema)
-	{
-		super(text);
-		this.xsdSchema = xsdSchema;
-		this.type = type;
-		isGlobal = true;
-	}
-
-	public Element createAndAddNewChildElement()
-	{
-		// create the new global type
-		Element childNode = super.createAndAddNewChildElement();
-    // add the anonymous type's children to the new global type
-		if (type.hasChildNodes())
-		{        
-			NodeList nodes = type.getChildNodes();
-			// use clones so we don't have a refresh problem
-			for (int i = 0; i < nodes.getLength(); i++)
-			{
-				Node node = nodes.item(i);       
-				childNode.appendChild(node.cloneNode(true));
-			}
-		}
-
-    // clean up the element whose type was anonymous
-    // and set its type attribute to the new global type
-		TypesHelper helper = new TypesHelper(xsdSchema);
-		String prefix = helper.getPrefix(xsdSchema.getTargetNamespace(), true);
-		helper = null;
-		
-		Element parentElementOfAnonymousType = (Element)type.getParentNode();
-
-		parentElementOfAnonymousType.removeChild(type);
-		parentElementOfAnonymousType.setAttribute(XSDConstants.TYPE_ATTRIBUTE, prefix + childNode.getAttribute(XSDConstants.NAME_ATTRIBUTE));
-
-		formatChild(childNode);
-		
-    return childNode;
-	}
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ModelMessage.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ModelMessage.java
deleted file mode 100644
index aa30618..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ModelMessage.java
+++ /dev/null
@@ -1,36 +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 org.w3c.dom.Node;
-
-public class ModelMessage
-{
-  protected String message;
-  protected Node node;
-
-  public ModelMessage(String message, Node node)
-  {
-    this.message = message;
-    this.node = node;
-  }
-
-  public String getMessage()
-  {
-    return message;
-  }
-
-  public Node getNode()
-  {
-    return node;
-  }
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MoveAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MoveAction.java
deleted file mode 100644
index e3606c9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/MoveAction.java
+++ /dev/null
@@ -1,183 +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 java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-
-public class MoveAction extends Action
-{
-  protected List selectedNodes;
-  protected Node parentNode;
-  protected Node refChild;
-
-  /**
-   * Constructor for DeleteAction.
-   * @param text
-   */
-  public MoveAction(Node parentNode, List selectedNodes, Node refChild)
-  {
-    this.parentNode = parentNode;
-    this.selectedNodes = selectedNodes;
-    this.refChild = refChild;
-  }    
-
-  public MoveAction(XSDConcreteComponent parentComponent, List selectedComponents, XSDConcreteComponent refChildComponent)
-  {
-    selectedNodes = new ArrayList(selectedComponents.size());
-    for (Iterator i = selectedComponents.iterator(); i.hasNext(); )
-    {
-      XSDConcreteComponent concreteComponent = (XSDConcreteComponent)i.next();
-      selectedNodes.add(concreteComponent.getElement());
-    }
-    parentNode = parentComponent.getElement();
-    refChild = refChildComponent != null ? refChildComponent.getElement() : null;
-  }
-                   
-  public boolean canMove()
-  {                           
-    // TODO... there are likely more restriction to consider here
-    boolean result = true;
-    for (Iterator i = selectedNodes.iterator(); i.hasNext(); )
-    {
-      Node child = (Node)i.next();
-      if (isDecendantOrSelf(child, parentNode)) 
-      {
-        result = false;
-        break;
-      }
-    }   
-    return result;
-  }           
-                  
-  protected boolean isDecendantOrSelf(Node potentialParent, Node node)
-  { 
-    boolean result = false;
-    while (node != null)
-    {
-      if (node == potentialParent)    
-      {
-        result = true;
-        break;
-      }           
-      node = node.getParentNode();
-    }
-    return result;
-  }
-
-
-  protected void beginRecording()
-  {
-    IDOMModel model = getModel();      
-    if (model != null)
-    {
-      model.beginRecording(this, XSDEditorPlugin.getXSDString("_UI_LABEL_MOVE"));
-    }
-  }
-  
-  protected void endRecording()
-  {
-    IDOMModel model = getModel();      
-    if (model != null)
-    {
-      model.endRecording(this);    
-    }
-  }
-
-  protected IDOMModel getModel()
-  {
-    IDOMModel model = null;
-    if (parentNode instanceof IDOMNode)
-    {                            
-      model = ((IDOMNode)parentNode).getModel();
-    }
-    return model;
-  }
-  
-
-     
-  /*
-   * @see IAction#run()
-   */
-  public void run()
-  {                            
-    beginRecording();
-    try
-    {
-      for (Iterator i = selectedNodes.iterator(); i.hasNext(); )
-      {
-        Node child = (Node)i.next();
-        repositionBefore(parentNode, child, refChild);
-      }   
-    }
-    catch (Exception e)
-    {         
-      e.printStackTrace();
-    }
-    endRecording();
-  }
-
-
-  public void repositionBefore(Node parent, Node child, Node refChild)
-  {   
-    // TODO... when the refChild (inserting as the last element) we need to
-    // special case the way we preserve indentation 
-    Node oldParent = child.getParentNode();
-    if (oldParent != null && refChild != child)
-    {  
-      // consider any indentation text node that preceeds the child
-      //      
-      Node textNode = isWhitespaceTextNode(child.getPreviousSibling()) ? child.getPreviousSibling() : null;
-
-      // remove the child
-      //
-      oldParent.removeChild(child);
-      
-      // Instead of inserting the child immediatlely infront of the refChild, we first check to see if there
-      // is an indentation text node preceeding the refChild.  If we find such a node, we perform the insertion
-      // so that the child is inserted before the indentation text node.
-      Node adjustedRefChild = refChild;
-      if (refChild != null && isWhitespaceTextNode(refChild.getPreviousSibling()))
-      {
-        adjustedRefChild = refChild.getPreviousSibling();
-      }
-          
-      // reposition the child and any indentation text node 
-      //
-      parent.insertBefore(child, adjustedRefChild);
-      if (textNode != null)
-      {
-        oldParent.removeChild(textNode);
-        parent.insertBefore(textNode, child);
-      }
-    }
-  }     
-    
-
-  protected static boolean isWhitespaceTextNode(Node node)
-  {
-    boolean result = false;
-    if (node != null && node.getNodeType() == Node.TEXT_NODE)
-    {
-      String data = ((Text)node).getData();
-      result = (data == null || data.trim().length() == 0);
-    }   
-    return result;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/OpenSchemaAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/OpenSchemaAction.java
deleted file mode 100644
index ce9216f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/OpenSchemaAction.java
+++ /dev/null
@@ -1,62 +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 org.eclipse.jface.action.Action;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.util.OpenOnSelectionHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.impl.XSDImportImpl;
-
-
-public class OpenSchemaAction extends Action
-{
-  XSDConcreteComponent component;
-  public OpenSchemaAction(String label, XSDConcreteComponent component)
-  {
-    super(label);
-    this.component = component;
-  }
-
-  public void run()
-  {
-    if (component != null)
-    {
-      revealObject();
-    }
-  }
-
-  boolean lastResult = false;
-  protected boolean revealObject()
-  {
-    String schemaLocation = "";
-    XSDSchemaDirective dir;
-    if (component instanceof XSDSchemaDirective)
-    {
-      dir = (XSDSchemaDirective)component;
-      // force load of imported schema
-      if (dir instanceof XSDImportImpl)
-      {
-        ((XSDImportImpl)dir).importSchema();
-      }
-      if (dir.getResolvedSchema() != null)
-      {
-        schemaLocation = URIHelper.removePlatformResourceProtocol(dir.getResolvedSchema().getSchemaLocation());
-        if (schemaLocation != null)
-        {
-          OpenOnSelectionHelper.openXSDEditor(schemaLocation);
-        }
-      }
-    }
-    return lastResult;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ReloadDependenciesAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ReloadDependenciesAction.java
deleted file mode 100644
index 73e239f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/ReloadDependenciesAction.java
+++ /dev/null
@@ -1,58 +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 org.eclipse.jface.action.Action;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-
-
-public class ReloadDependenciesAction extends Action
-{
-  /**
-   * Constructor for ReloadDependenciesAction.
-   */
-  public ReloadDependenciesAction()
-  {
-    super();
-  }
-
-  /**
-   * Constructor for ReloadDependenciesAction.
-   * @param text
-   */
-  public ReloadDependenciesAction(String text)
-  {
-    super(text);
-  }
-
-  /**
-   * Constructor for ReloadDependenciesAction.
-   * @param text
-   * @param image
-   */
-  public ReloadDependenciesAction(String text, ImageDescriptor image)
-  {
-    super(text, image);
-  }
-
-  public void setEditor(XSDEditor editor)
-  {
-    this.editor = editor;
-  }
-  
-  protected XSDEditor editor;
-  
-  public void run()
-  {
-    editor.reparseSchema();
-  }
-}
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 31d9753..0000000
--- 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);    
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetMultiplicityAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetMultiplicityAction.java
deleted file mode 100644
index 7de436d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetMultiplicityAction.java
+++ /dev/null
@@ -1,42 +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 org.eclipse.wst.xsd.ui.internal.commands.SetMultiplicityCommand;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-public class SetMultiplicityAction extends AbstractAction
-{
-  SetMultiplicityCommand command;
-  
-  public SetMultiplicityAction(XSDConcreteComponent parent, String multiplicity)
-  {
-    super(multiplicity, parent);
-    command = new SetMultiplicityCommand(parent);
-  }
-  
-  public void setMaxOccurs(int i)
-  {
-    command.setMaxOccurs(i);
-  }
-
-  public void setMinOccurs(int i)
-  {
-    command.setMinOccurs(i);
-  }
-
-  public void run()
-  {
-    beginRecording(getText());
-    command.run();
-    endRecording();
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetTypeAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetTypeAction.java
deleted file mode 100644
index b913398..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SetTypeAction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2004, 2005 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 org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.xsd.ui.internal.commands.SetTypeCommand;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-public class SetTypeAction extends AbstractAction
-{
-  int typeKind;
-  SetTypeCommand command;
-  
-  public SetTypeAction(String text, ImageDescriptor image, XSDConcreteComponent xsdConcreteComponent)
-  {
-    super(text, image, xsdConcreteComponent);
-    command = new SetTypeCommand(xsdConcreteComponent);
-  }
-  
-  public SetTypeAction(String text, XSDConcreteComponent xsdConcreteComponent)
-  {
-    super(text, xsdConcreteComponent);
-    command = new SetTypeCommand(xsdConcreteComponent);
-  }
-  
-  public void setTypeKind(int type)
-  {
-    this.typeKind = type;
-    command.setTypeKind(type);
-  }
-  
-  public void run()
-  {
-    beginRecording(getText());
-    command.run();
-    endRecording();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SourcePageActionContributor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SourcePageActionContributor.java
deleted file mode 100644
index 8bc62ca..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/actions/SourcePageActionContributor.java
+++ /dev/null
@@ -1,58 +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 org.eclipse.ui.IActionBars;
-import org.eclipse.wst.xml.ui.internal.actions.ActionContributorXML;
-
-
-/**
- * SourcePageActionContributor
- * 
- * This class is for multi page editor's source page contributor.
- *
- * 
- */
-public class SourcePageActionContributor extends ActionContributorXML {
-
-	private IActionBars fBars;
-
-	/**
-	 * This method calls:
-	 * <ul>
-	 *  <li><code>contributeToMenu</code> with <code>bars</code>' menu manager</li>
-	 *  <li><code>contributeToToolBar</code> with <code>bars</code>' tool bar
-	 *    manager</li>
-	 *  <li><code>contributeToStatusLine</code> with <code>bars</code>' status line
-	 *    manager</li>
-	 * </ul>
-	 * The given action bars are also remembered and made accessible via 
-	 * <code>getActionBars</code>.
-	 * 
-	 * @param bars the action bars
-	 * 
-	 */
-	public void init(IActionBars bars) {
-		fBars = bars;
-		contributeToMenu(bars.getMenuManager());
-		contributeToToolBar(bars.getToolBarManager());
-		contributeToStatusLine(bars.getStatusLineManager());
-	}
-
-	/**
-	 * Returns this contributor's action bars.
-	 *
-	 * @return the action bars
-	 */
-	public IActionBars getActionBars() {
-		return fBars;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddAttributeDeclarationCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddAttributeDeclarationCommand.java
deleted file mode 100644
index 0430149..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddAttributeDeclarationCommand.java
+++ /dev/null
@@ -1,140 +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.commands;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-public class AddAttributeDeclarationCommand extends AbstractCommand
-{
-  XSDAttributeDeclaration refAttribute = null;
-  /**
-   * @param parent
-   */
-  public AddAttributeDeclarationCommand(XSDConcreteComponent parent)
-  {
-    super(parent);
-  }
-
-  public AddAttributeDeclarationCommand(XSDConcreteComponent parent, XSDAttributeDeclaration ref)
-  {
-    super(parent);
-    this.refAttribute = ref;
-  }
-
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#run()
-   */
-  public void run()
-  {
-    XSDConcreteComponent parent = getParent();
-    if (parent instanceof XSDComplexTypeDefinition)
-    {
-      XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)parent;
-
-      XSDAttributeDeclaration attribute = XSDFactory.eINSTANCE.createXSDAttributeDeclaration();
-      attribute.setName(getNewName("Attribute")); //$NON-NLS-1$
-      attribute.setTypeDefinition(ct.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string")); //$NON-NLS-1$
-      
-      XSDAttributeUse attributeUse = XSDFactory.eINSTANCE.createXSDAttributeUse();
-      attributeUse.setAttributeDeclaration(attribute);
-      attributeUse.setContent(attribute);
-      
-      if (ct.getAttributeContents() != null)
-      {
-        ct.getAttributeContents().add(attributeUse);
-        formatChild(attribute.getElement());
-      }
-    }
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#adopt(org.eclipse.xsd.XSDConcreteComponent)
-   */
-  protected boolean adopt(XSDConcreteComponent model)
-  {
-    return false;
-  }
-  
-  ArrayList names;
-  
-  protected String getNewName(String description)
-  {
-    String candidateName = "New" + description; //$NON-NLS-1$
-    XSDConcreteComponent parent = getParent();
-    names = new ArrayList();
-    int i = 1;
-    if (parent instanceof XSDComplexTypeDefinition)
-    {
-      XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)parent;
-      walkUpInheritance(ct);
-
-      boolean ready = false;
-      while (!ready)
-      {
-        ready = true;
-        for (Iterator iter = names.iterator(); iter.hasNext(); )
-        {
-          String attrName = (String)iter.next();
-          if (candidateName.equals(attrName))
-          {
-            ready = false;
-            candidateName = "New" + description + String.valueOf(i); //$NON-NLS-1$
-            i++;
-          }
-        }
-      }
-    }
-    return candidateName;
-  }
-  
-  private void walkUpInheritance(XSDComplexTypeDefinition ct)
-  {
-    updateNames(ct);
-    XSDTypeDefinition typeDef = ct.getBaseTypeDefinition();
-    if (ct != ct.getRootType())
-    {
-      if (typeDef instanceof XSDComplexTypeDefinition)
-      {
-        XSDComplexTypeDefinition ct2 = (XSDComplexTypeDefinition)typeDef;
-        walkUpInheritance(ct2);
-      }
-    }
-  }
-
-  private void updateNames(XSDComplexTypeDefinition ct)
-  {
-    Iterator iter = ct.getAttributeContents().iterator();
-    while (iter.hasNext())
-    {
-      Object obj = iter.next();
-      if (obj instanceof XSDAttributeUse)
-      {
-        XSDAttributeUse use = (XSDAttributeUse)obj;
-        XSDAttributeDeclaration attr = use.getAttributeDeclaration();
-        String attrName = attr.getName();
-        if (attrName != null)
-        {
-          names.add(attrName);
-        }
-      }
-    }
-
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddComplexTypeDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddComplexTypeDefinitionCommand.java
deleted file mode 100644
index 72da36a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddComplexTypeDefinitionCommand.java
+++ /dev/null
@@ -1,53 +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.commands;
-
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDSchema;
-
-public final class AddComplexTypeDefinitionCommand extends AbstractCommand
-{
-  private String name;
-  
-  public AddComplexTypeDefinitionCommand
-    (XSDConcreteComponent parent,
-     String name)
-  {
-    super(parent);
-    this.name = name; // this may be null for anonymous type
-  }
-	  
-  public void run()
-  {
-  	XSDComplexTypeDefinition typeDef = 
-      XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
-    typeDef.setName(name);
-    	
-    if (adopt(typeDef))
-      setModelObject(typeDef);
-  }
-  
-  protected boolean adopt(XSDConcreteComponent model)
-  {
-  	XSDConcreteComponent parent = getParent();
-    if (parent instanceof XSDSchema)
-      ((XSDSchema)parent).getTypeDefinitions().add(model);
-    else if (parent instanceof XSDElementDeclaration)
-      ((XSDElementDeclaration)parent).setAnonymousTypeDefinition((XSDComplexTypeDefinition)model);
-    else
-      return false; // invalid parent
-    
-    return true;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddElementDeclarationCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddElementDeclarationCommand.java
deleted file mode 100644
index fa087dd..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddElementDeclarationCommand.java
+++ /dev/null
@@ -1,53 +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.commands;
-
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-
-public final class AddElementDeclarationCommand extends AbstractCommand
-{
-  private String name; // element name
-  
-  public AddElementDeclarationCommand
-    (XSDConcreteComponent parent,
-     String name)
-  {
-    super(parent);
-    this.name = name;
-  }
-  
-  public void run()
-  {
-    XSDElementDeclaration elementDecl = 
-      XSDFactory.eINSTANCE.createXSDElementDeclaration();
-    elementDecl.setName(name);
-
-    adopt(elementDecl);
-    setModelObject(elementDecl);
-  }
-
-  protected boolean adopt(XSDConcreteComponent model)
-  {
-  	XSDConcreteComponent parent = getParent();
-    if (parent instanceof XSDSchema)
-      ((XSDSchema)parent).getElementDeclarations().add(model);
-    else if (parent instanceof XSDParticle)
-      ((XSDParticle)parent).setContent((XSDElementDeclaration)model);
-    else
-      return false; // invalid parent
-    
-    return true;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddModelGroupCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddModelGroupCommand.java
deleted file mode 100644
index f5518e2..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddModelGroupCommand.java
+++ /dev/null
@@ -1,103 +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.commands;
-
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-public class AddModelGroupCommand extends AbstractCommand
-{
-  protected XSDCompositor compositor;
-
-  public AddModelGroupCommand(XSDConcreteComponent parent, XSDCompositor compositor)
-  {
-    super(parent);
-    this.compositor = compositor;
-  }
-
-  public void run()
-  {
-    XSDConcreteComponent parent = getParent();
-    XSDConcreteComponent owner = null;
-    if (parent instanceof XSDElementDeclaration)
-    {
-      XSDElementDeclaration ed = (XSDElementDeclaration)parent;      
-      if (ed.getTypeDefinition() != null) 
-      {
-        if (ed.getAnonymousTypeDefinition() == null)
-        {
-          ed.setTypeDefinition(null);
-          XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
-          ed.setAnonymousTypeDefinition(td);
-          owner = ed.getTypeDefinition();
-        }
-        else
-        {
-          XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
-          ed.setAnonymousTypeDefinition(td);
-          owner = td;        
-        }
-      }        
-      else if (ed.getAnonymousTypeDefinition() == null)
-      {
-        XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
-        ed.setAnonymousTypeDefinition(td);
-        owner = td;        
-      }
-      else if (ed.getAnonymousTypeDefinition() instanceof XSDComplexTypeDefinition)
-      {
-        owner = ed.getAnonymousTypeDefinition();
-      }
-      else if (ed.getAnonymousTypeDefinition() instanceof XSDSimpleTypeDefinition)
-      {
-        XSDComplexTypeDefinition td = XSDFactory.eINSTANCE.createXSDComplexTypeDefinition();
-        ed.setAnonymousTypeDefinition(td);
-        owner = td;        
-      }
-    }
-    else if (parent instanceof XSDModelGroup)
-    {
-      ((XSDModelGroup) parent).getContents().add(createModelGroup());
-    }
-    else if (parent instanceof XSDComplexTypeDefinition)
-    {
-      owner = ((XSDComplexTypeDefinition)parent);
-    }
-    if (owner != null)
-    {
-      XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle(); 
-      XSDModelGroup modelGroup = createModelGroup();
-      particle.setContent(modelGroup);
-
-      XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)owner;
-      ctd.setContent(particle);
-      formatChild(parent.getElement());
-    }  
-  }
-
-  protected boolean adopt(XSDConcreteComponent model)
-  {
-    return false;
-  }
-  
-  protected XSDModelGroup createModelGroup()
-  {
-    XSDModelGroup modelGroup = XSDFactory.eINSTANCE.createXSDModelGroup();
-    modelGroup.setCompositor(compositor);
-    return modelGroup;
-  }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddSimpleTypeDefinitionCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddSimpleTypeDefinitionCommand.java
deleted file mode 100644
index b0c347b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/AddSimpleTypeDefinitionCommand.java
+++ /dev/null
@@ -1,56 +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.commands;
-
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-public final class AddSimpleTypeDefinitionCommand extends AbstractCommand
-{
-  private String name;
-  
-  public AddSimpleTypeDefinitionCommand
-    (XSDConcreteComponent parent,
-     String name)
-  {
-    super(parent);
-    this.name = name; // this may be null for anonymous type
-  }
-  
-  public void run()
-  {
-  	XSDSimpleTypeDefinition typeDef = 
-      XSDFactory.eINSTANCE.createXSDSimpleTypeDefinition();
-  	typeDef.setName(name);
-  	
-    if (adopt(typeDef))
-      setModelObject(typeDef);
-  }
-  
-  protected boolean adopt(XSDConcreteComponent model)
-  {
-  	XSDConcreteComponent parent = getParent();
-    if (parent instanceof XSDSchema)
-      ((XSDSchema)parent).getTypeDefinitions().add(model);
-    else if (parent instanceof XSDElementDeclaration)
-      ((XSDElementDeclaration)parent).setAnonymousTypeDefinition((XSDSimpleTypeDefinition)model);
-    else if (parent instanceof XSDAttributeDeclaration)
-      ((XSDAttributeDeclaration)parent).setAnonymousTypeDefinition((XSDSimpleTypeDefinition)model);
-    else
-      return false; // invalid parent
-    
-    return true;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeAnonymousTypeGlobalCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeAnonymousTypeGlobalCommand.java
deleted file mode 100644
index 7562a18..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeAnonymousTypeGlobalCommand.java
+++ /dev/null
@@ -1,84 +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.commands;
-
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-public final class MakeAnonymousTypeGlobalCommand extends AbstractCommand {
-
-	String fNewName;
-
-	public MakeAnonymousTypeGlobalCommand(XSDConcreteComponent element,
-			String newName) {
-		super(element.getContainer());
-		setModelObject(element);
-		fNewName = newName;
-	}
-
-	public void run() {
-		XSDConcreteComponent model = getModelObject();
-		XSDConcreteComponent parent = model.getContainer();
-		XSDTypeDefinition globalTypeDef = null;
-		if (model instanceof XSDComplexTypeDefinition) {
-			if (parent instanceof XSDElementDeclaration) {
-				// clone typedef with it's content and set it global
-				globalTypeDef = (XSDComplexTypeDefinition) model
-						.cloneConcreteComponent(true, false);
-				globalTypeDef.setName(fNewName);
-				parent.getSchema().getContents().add(globalTypeDef);
-				((XSDElementDeclaration) parent)
-						.setTypeDefinition(globalTypeDef);
-			}
-		} else if (model instanceof XSDSimpleTypeDefinition) {
-
-			XSDSimpleTypeDefinition typeDef = (XSDSimpleTypeDefinition) model;
-			if (parent instanceof XSDElementDeclaration) {
-				// clone typedef with it's content and set it global
-				globalTypeDef = (XSDSimpleTypeDefinition) typeDef
-						.cloneConcreteComponent(true, false);
-				globalTypeDef.setName(fNewName);
-				parent.getSchema().getContents().add(globalTypeDef);
-				((XSDElementDeclaration) parent)
-						.setTypeDefinition(globalTypeDef);
-				formatChild(globalTypeDef.getElement());
-
-			} else if (parent instanceof XSDAttributeDeclaration) {
-				// clone typedef with it's content and set it global
-				globalTypeDef = (XSDSimpleTypeDefinition) typeDef
-						.cloneConcreteComponent(true, false);
-				globalTypeDef.setName(fNewName);
-				parent.getSchema().getContents().add(globalTypeDef);
-				((XSDAttributeDeclaration) parent)
-						.setTypeDefinition((XSDSimpleTypeDefinition) globalTypeDef);
-
-			}
-
-		}
-
-		formatChild(globalTypeDef.getElement());
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#adopt(org.eclipse.xsd.XSDConcreteComponent)
-	 */
-	protected boolean adopt(XSDConcreteComponent model) {
-		// TODO Auto-generated method stub
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeLocalElementGlobalCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeLocalElementGlobalCommand.java
deleted file mode 100644
index 7303919..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/MakeLocalElementGlobalCommand.java
+++ /dev/null
@@ -1,84 +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.commands;
-
-import org.eclipse.xsd.XSDComplexTypeContent;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-public final class MakeLocalElementGlobalCommand extends AbstractCommand
-{
-	
-  public MakeLocalElementGlobalCommand
-    (XSDConcreteComponent element)
-  {
-    super(element.getContainer());
-    setModelObject(element);
-  }
-  
-  public void run()
-  {
-    
-   if(getModelObject() instanceof XSDElementDeclaration){
-   
-	   XSDElementDeclaration element = (XSDElementDeclaration)getModelObject();
- 	XSDConcreteComponent parent = getParent();
- 	XSDConcreteComponent container = parent.getContainer();
- 	
- 	// clone element with it's content and set it global
-	XSDConcreteComponent  elementDecl = ((XSDElementDeclaration)getModelObject()).cloneConcreteComponent(true, true);
- 	container.getSchema().getContents().add(elementDecl);
- 	
- 	// create local element and set it's reference to the global one
- 	XSDElementDeclaration elementRef = 
-	      XSDFactory.eINSTANCE.createXSDElementDeclaration();
-	elementRef.setValue(element.getValue());
-    elementRef.setResolvedElementDeclaration((XSDElementDeclaration)elementDecl); 
-    
-    // now set content models
- 	if(parent instanceof XSDComplexTypeContent){
- 		if(container instanceof XSDModelGroup){
- 			XSDModelGroup modelGroup = (XSDModelGroup)container;
- 			// disconnect parent from its container
- 			int index = modelGroup.getContents().indexOf(parent);
- 			 XSDParticle particle = 
- 			      XSDFactory.eINSTANCE.createXSDParticle();
- 		    particle.setContent(elementRef);
- 		    modelGroup.getContents().add(index, particle); 
- 		   
- 			modelGroup.getContents().remove(parent);
- 		    modelGroup.updateElement(true);
-  		    formatChild(modelGroup.getElement());
- 		}
- 	}
- 	else if(parent instanceof XSDTypeDefinition){
-		System.out.println("MakeLocalElementGlobalCommand.run: parent instanceof XSDTypeDefinition");
-		 		
- 	}
- 	
- 	container.getSchema().updateElement(true);
-    formatChild(elementDecl.getElement());
-  
-   }
-
-  }
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.xsd.ui.internal.commands.AbstractCommand#adopt(org.eclipse.xsd.XSDConcreteComponent)
-	 */
-	protected boolean adopt(XSDConcreteComponent model) {
-		// TODO Auto-generated method stub
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/RenameCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/RenameCommand.java
deleted file mode 100644
index 4ecd336..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/RenameCommand.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2004, 2005 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.commands;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ComplexTypeDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ElementDeclarationEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ModelGroupDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.TopLevelComponentEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDNamedComponent;
-
-
-/**
- * @author kchong
- *
- * <a href="mailto:kchong@ca.ibm.com">kchong@ca.ibm.com</a>
- *
- */
-public class RenameCommand
-{
-  protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
-  Label label = new Label();
-  XSDNamedComponent namedComponent;
-  GraphicalEditPart editPart;
-  
-  public RenameCommand(XSDNamedComponent namedComponent, GraphicalEditPart editPart)
-  {
-    this.namedComponent = namedComponent;
-    this.editPart = editPart;
-  }
-
-  public void run()
-  {
-    if (editPart instanceof ElementDeclarationEditPart)
-    {
-      ElementDeclarationEditPart elementDeclarationEditPart = (ElementDeclarationEditPart)editPart;
-      elementDeclarationEditPart.doEditName();
-    }
-    else if (editPart instanceof TopLevelComponentEditPart)
-    {
-      TopLevelComponentEditPart topLevelEditPart = (TopLevelComponentEditPart)editPart;
-      topLevelEditPart.doEditName();
-    }
-    else if (editPart instanceof ComplexTypeDefinitionEditPart)
-    {
-      ((ComplexTypeDefinitionEditPart)editPart).doEditName();
-    }
-    else if (editPart instanceof ModelGroupDefinitionEditPart)
-    {
-      ((ModelGroupDefinitionEditPart)editPart).doEditName();
-    }
-  }
-
-  protected boolean adopt(XSDConcreteComponent model)
-  {
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetTypeCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetTypeCommand.java
deleted file mode 100644
index ce76482..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/commands/SetTypeCommand.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2004, 2005 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.commands;
-
-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.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDSetTypeHelper;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-
-public class SetTypeCommand extends AbstractCommand
-{
-  protected int typeKind = XSDConstants.COMPLEXTYPE_ELEMENT;
-  
-  public SetTypeCommand(XSDConcreteComponent parent)
-  {
-    super(parent);
-  }
-  
-  public void setTypeKind(int type)
-  {
-    this.typeKind = type;
-  }
-
-  public void run()
-  {
-    XSDConcreteComponent parent = getParent();
-    if (parent instanceof XSDElementDeclaration)
-    {
-      XSDElementDeclaration element = (XSDElementDeclaration)parent;
-      XSDSchema schema = element.getSchema();
-      if (typeKind == XSDConstants.COMPLEXTYPE_ELEMENT)
-      {
-        AddModelGroupCommand sequenceCommand = new AddModelGroupCommand(element, XSDCompositor.SEQUENCE_LITERAL);
-        sequenceCommand.run();
-      }
-      else if (typeKind == XSDConstants.SIMPLETYPE_ELEMENT)
-      {
-        AddSimpleTypeDefinitionCommand stCommand = new AddSimpleTypeDefinitionCommand(element, null);
-        stCommand.run();
-        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)stCommand.getModelObject();
-        XSDSimpleTypeDefinition base = schema.resolveSimpleTypeDefinition(schema.getSchemaForSchemaNamespace(), "string");
-        st.setBaseTypeDefinition(base);
-      }
-      else
-      {
-          Shell shell = Display.getCurrent().getActiveShell();
-          IFile currentIFile = ((IFileEditorInput)getActiveEditor().getEditorInput()).getFile();
-          
-          XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, schema);
-          XSDComponentSelectionDialog dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider);
-          provider.setDialog(dialog);
-          
-          dialog.setBlockOnOpen(true);
-          dialog.create();
-          
-          if (dialog.open() == Window.OK) {
-              XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, schema);
-              helper.setType(element.getElement(), "type", dialog.getSelection());
-          }
-      }
-      formatChild(element.getElement());
-    }
-
-  }
-  
-  private IEditorPart getActiveEditor()
-  {
-    IWorkbench workbench = XSDEditorPlugin.getPlugin().getWorkbench();
-    IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
-    IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
-//    IEditorPart editorPart = part.getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
-
-    return editorPart;
-  }
-
-  protected boolean adopt(XSDConcreteComponent model)
-  {
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/ComponentSelectionDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/ComponentSelectionDialog.java
deleted file mode 100644
index 3ebe1f2..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/ComponentSelectionDialog.java
+++ /dev/null
@@ -1,446 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.common;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-
-public class ComponentSelectionDialog extends Dialog {
-    private Display display = Display.getCurrent();
-    private String dialogTitle;
-
-    protected IComponentSelectionProvider provider;
-    private List componentTreeViewerInput;
-    private List masterComponentList;
-    
-    // widgets
-    protected Composite topComposite;
-    protected Composite bottomComposite; 
-    private String filterTextLabel = "";
-    private String componentListLabel = XSDEditorPlugin.getXSDString("_UI_LABEL_COMPONENTS");
-    private Text textFilter;
-    protected TreeViewer componentTreeViewer;
-    private org.eclipse.swt.widgets.List qualifierList;
-    
-    protected Object componentSelection;
-    protected Object qualifierTextSelection;
-
-    public ComponentSelectionDialog(Shell shell, String dialogTitle, IComponentSelectionProvider provider) {
-        super(shell);
-        setShellStyle(getShellStyle() | SWT.RESIZE);
-        this.dialogTitle = dialogTitle;
-        this.provider = provider;
-        
-        componentTreeViewerInput = new ArrayList();
-        masterComponentList = new ArrayList();
-    }
-
-    /*
-     * This method should be called before createDialogArea(Composite)
-     */
-    public void setComponentTreeLabel(String string) {
-        componentListLabel = string;
-    }
-
-    /*
-     * This method should be called before createDialogArea(Composite)
-     */
-    public void setFilterLabel(String string) {
-        filterTextLabel = string;
-    }
-    
-    public void create() {
-        super.create();
-        setTextFilterFocus();
-    }
-    
-    protected void setTextFilterFocus() {
-        textFilter.setFocus();        
-    }
-
-    public Control createDialogArea(Composite parent) {
-        getShell().setText(dialogTitle);
-
-        Composite mainComposite = (Composite) super.createDialogArea(parent);
-        GridData gData = (GridData) mainComposite.getLayoutData();
-        gData.heightHint = 500;
-        gData.widthHint = 400;
-
-        // Subclasses may use this Composite to add desired widgets
-        //topComposite = new Composite(mainComposite, SWT.NONE);
-        //topComposite.setLayoutData(new GridData());
-        //topComposite.setLayout(new GridLayout());
-        
-        // do we need to introduce a method here to contain this
-        // so we can add different parent other than 'topComposite'
-        Composite filterLabelAndTree = new Composite(mainComposite, SWT.NONE);
-        GridLayout layout = new GridLayout();
-        layout.marginWidth = 0;
-        filterLabelAndTree.setLayoutData(new GridData(GridData.FILL_BOTH));
-        filterLabelAndTree.setLayout(layout);
-
-        // Create Text textFilter
-        Label filterLabel = new Label(filterLabelAndTree, SWT.NONE);
-        filterLabel.setText(filterTextLabel);// + "(? = any character, * = any string):"); // TODO: Externalize String
-
-        textFilter = new Text(filterLabelAndTree, SWT.SINGLE | SWT.BORDER);
-        textFilter.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));        
-        textFilter.addModifyListener(new TextFilterModifyAdapter());
-        GridData textFilterData = new GridData();
-        textFilterData.horizontalAlignment = GridData.FILL;
-        textFilterData.grabExcessHorizontalSpace = true;
-        textFilter.setLayoutData(textFilterData);
-
-        //textFilter.setSelection(0);
-        //textFilter.setf
-        
-        
-        // Create Component TreeViewer
-        createComponentTreeViewer(filterLabelAndTree);
-
-        // Create Qualifier List widget
-        Label qualifierLabel = new Label(mainComposite, SWT.NONE);
-        qualifierLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_QUALIFIER"));
-
-        qualifierList = new org.eclipse.swt.widgets.List(mainComposite, SWT.BORDER | SWT.SINGLE);
-        GridData data = new GridData();
-        data.horizontalAlignment = GridData.FILL;
-        data.grabExcessHorizontalSpace = true;
-        data.heightHint = 45;
-        qualifierList.setLayoutData(data);
-                
-        bottomComposite = new Composite(mainComposite, SWT.NONE);
-        bottomComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        bottomComposite.setLayout(new GridLayout());
-
-        // Populate the Component TreeViewer via the provider
-        // TODO: Is this the right way to set/get the ContentProvider?
-        componentTreeViewer.setContentProvider(new ComponentTreeContentProvider());
-        componentTreeViewer.setLabelProvider(provider.getLabelProvider());
-        componentTreeViewer.setSorter(new ViewerSorter());
-        componentTreeViewer.setInput(componentTreeViewerInput);
-        
-        populateMasterComponentList();
-        refreshTreeViewer("");
-
-        return mainComposite;
-    }
-
-    protected TreeViewer createTreeViewer(Composite comp, String title) {
-        Label label = new Label(comp, SWT.NONE);
-        label.setText(title);
-
-        TreeViewer treeViewer = new TreeViewer(new Tree(comp, SWT.SINGLE | SWT.BORDER));
-        Control treeWidget = treeViewer.getTree();
-        GridData gd = new GridData(GridData.FILL_BOTH);
-        treeWidget.setLayoutData(gd);
-
-        return treeViewer;
-    }
-    
-    /*
-     * Creates the Component TreeViewer.
-     */
-    private void createComponentTreeViewer(Composite base) {
-        componentTreeViewer = createTreeViewer(base, componentListLabel);    
-        
-        componentTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
-            public void selectionChanged(SelectionChangedEvent event) {
-                IStructuredSelection structuredSelection = (IStructuredSelection) event.getSelection();
-                List qualifiers = provider.getQualifiers(structuredSelection.getFirstElement());
-                updateQualifierList(qualifiers);
-                updateCanFinish();
-            }
-        });
-    }
-    
-    private void updateQualifierList(List qualifiers) {
-        qualifierList.removeAll();
-        Iterator it = qualifiers.iterator();
-        while (it.hasNext()) {
-            qualifierList.add(it.next().toString());
-        }
-    }
-    
-    
-    /*
-     * Returns the processed filter text for the Text field.  Inserts a "."
-     * before each supported meta-character.
-     */
-    protected String getProcessedFilterString() {
-        return processFilterString(textFilter.getText());
-    }
-
-    /*
-     * If supported metacharacters are used in the filter string, we need to
-     * insert a "." before each metacharacter.
-     */
-    private String processFilterString(String inputString) {
-        if (!(inputString.equals(""))) {
-            inputString = insertString("*", ".", inputString);
-            inputString = insertString("?", ".", inputString);
-            inputString = inputString + ".*";
-        } else {
-            inputString = ".*";
-        }
-
-        return inputString.toLowerCase();
-    }
-    
-    /*
-     * Helper method to insert a "." before each metacharacter in the
-     * search/filter string.
-     */
-    private String insertString(String target, String newString, String string) {
-        StringBuffer stringBuffer = new StringBuffer(string);
-
-        int index = stringBuffer.indexOf(target);
-        while (index != -1) {
-            stringBuffer = stringBuffer.insert(index, newString);
-            index = stringBuffer.indexOf(target, index + newString.length() + target.length());
-        }
-
-        return stringBuffer.toString();
-    }
-
-    /*
-     * Listens to changes made in the text filter widget
-     */
-    private class TextFilterModifyAdapter implements ModifyListener {
-        public void modifyText(ModifyEvent e) {
-            if (e.widget == textFilter) {
-                if (delayedEvent != null) {
-                    delayedEvent.CANCEL = true;
-                }
-
-                delayedEvent = new DelayedEvent();
-                Display.getCurrent().timerExec(400, delayedEvent);
-            }
-        }
-    }
-
-    //TODO... do we really need one instance?
-    private DelayedEvent delayedEvent;
-
-    /*
-     * Update the component TreeViewer when the text filter is modified.
-     * Use a DelayedEvent so we don't update on every keystroke.
-     */
-    private class DelayedEvent implements Runnable {
-        public boolean CANCEL = false;
-
-        public void run() {
-            if (!CANCEL) {
-                refreshTreeViewer(getProcessedFilterString());
-                
-                // Select first match
-                if (componentTreeViewer.getTree().getItemCount() > 0) {
-                    TreeItem item = componentTreeViewer.getTree().getItems()[0];
-                    TreeItem items[] = new TreeItem[1];
-                    items[0] = item;
-                    componentTreeViewer.getTree().setSelection(items);
-                }
-                
-                // Update qualifierList
-                IStructuredSelection structuredSelection = (IStructuredSelection) componentTreeViewer.getSelection();
-                List qualifiers = provider.getQualifiers(structuredSelection.getFirstElement());
-                updateQualifierList(qualifiers);
-                
-                updateCanFinish();
-            }
-        }
-    }
-
-    class ComponentList implements IComponentList {
-        private Vector objectVector = new Vector();
-        private long currentChangeCounter = 0;
-        
-        public void addComponent(Object o) {
-            objectVector.add(o);
-            currentChangeCounter++;
-            doViewerUpdate();
-        }
-        
-        private void doViewerUpdate() {
-            // TODO: Investigate if we should also add a timer condition??
-            if (currentChangeCounter == 10) {
-                currentChangeCounter = 0;
-                fireUpdateList(this);
-            }
-        }
-
-        public int size() {
-            return objectVector.size();
-        }
-        
-        public List subList(int startIndex, int endIndex) {
-            return objectVector.subList(startIndex, endIndex);
-        }
-        
-        public Iterator iterator() {
-            return objectVector.iterator();
-        }
-    }
-
-    
-    // this method gets called from a non-ui thread so needs to call
-    // asyncExec to ensure the UI updates happen on the UI thread
-    //
-    protected void fireUpdateList(final ComponentList list) {    
-        Runnable runnable = new Runnable() {
-            public void run(){
-                // add new objects
-                int growingListSize = list.size();
-                int currentSize = masterComponentList.size();
-                if (growingListSize > currentSize) {
-                    masterComponentList.addAll(list.subList(currentSize, growingListSize));
-                }
-
-                refreshTreeViewer(getProcessedFilterString());
-            }
-        };
-        display.asyncExec(runnable);        
-    }
-
-    
-    /*
-     * Populate the Component TreeViewer with items.
-     */
-    protected void populateMasterComponentList() {
-        masterComponentList.clear();
-        
-        final ComponentList componentList = new ComponentList();
-        provider.getComponents(componentList, true);
-        
-        Job job = new Job("read components") {
-          protected IStatus run(IProgressMonitor monitor) {
-            try {
-              // this stuff gets executed on a non-UI thread
-              //
-              provider.getComponents(componentList, false);
-              
-              // Do a final update of our Input for the component tree viewer.
-              fireUpdateList(componentList);
-            }
-            catch (Exception e) {
-            	e.printStackTrace();
-            }
-            return Status.OK_STATUS;
-          }          
-        };
-        job.schedule();
-    }
-    
-    protected void refreshTreeViewer(String filterText) {
-        componentTreeViewerInput.clear();
-        ILabelProvider labelProvider = provider.getLabelProvider();
-        Pattern regex = Pattern.compile(filterText);
-        Iterator it = masterComponentList.iterator();
-        while (it.hasNext()) {
-            Object item = it.next();
-            String itemString = labelProvider.getText(item);           
-            Matcher m = regex.matcher(itemString.toLowerCase());
-            if (itemString.toLowerCase().startsWith(filterText) || m.matches()) {
-                componentTreeViewerInput.add(item);
-            }
-        }
-        
-        componentTreeViewer.refresh();
-    }
-    
-    /*
-     * If there is a selection in the ComponentTreeViewer, enable OK
-     */
-    protected void updateCanFinish() {
-        IStructuredSelection selection = (IStructuredSelection) componentTreeViewer.getSelection();
-        if (selection.getFirstElement() != null) {
-            getButton(IDialogConstants.OK_ID).setEnabled(true);
-        }
-        else {
-            getButton(IDialogConstants.OK_ID).setEnabled(false);
-        }
-    }
-    
-    protected void okPressed() {
-        IStructuredSelection selection = (IStructuredSelection) componentTreeViewer.getSelection();
-        componentSelection = selection.getFirstElement();
-        int qualifierIndex = qualifierList.getSelectionIndex();
-        if (qualifierIndex < 0) {
-            qualifierIndex = 0;
-        }
-        qualifierTextSelection = qualifierList.getItem(qualifierIndex);
-        
-        super.okPressed();
-    }
-    
-    private class ComponentTreeContentProvider implements ITreeContentProvider {
-        public Object[] getChildren(Object parentElement) {
-            if (parentElement instanceof List) {
-                return ((List) parentElement).toArray();
-            }
-            return new Object[0];
-        }
-        
-        public Object[] getElements(Object inputElement) {
-            return getChildren(inputElement);
-        }
-        
-        public Object getParent(Object element) {
-            return null;
-        }
-        
-        public boolean hasChildren(Object element) {
-            if (getChildren(element).length > 0) {
-                return true;
-            }
-            return false;
-        }
-        
-        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        }
-        
-        public void dispose() {
-        }
-    }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentList.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentList.java
deleted file mode 100644
index 5c5d46a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentList.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.common;
-
-import java.util.Iterator;
-
-public interface IComponentList {
-   public void addComponent(Object o);
-   public Iterator iterator();
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentSelectionProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentSelectionProvider.java
deleted file mode 100644
index de68271..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/common/IComponentSelectionProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.common;
-
-import java.util.List;
-
-import org.eclipse.jface.viewers.ILabelProvider;
-
-public interface IComponentSelectionProvider {
-    
-    // warning ... this will get called on a non UI thread
-    void getComponents(IComponentList list, boolean quick);
-    
-	String getType(Object component);
-	ILabelProvider getLabelProvider();
-	List getQualifiers(Object component);
-	String getNameFieldTitle();
-	String getListTitle();
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/ResourceView.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/ResourceView.java
deleted file mode 100644
index 2a61449..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/ResourceView.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.xml;
-
-public class ResourceView {
-/*
-	Label scopeComboLabel = new Label(topComposite, SWT.NONE);
-	scopeComboLabel.setText(searchScopeComboLabel);
-	scopeCombo = new Combo(topComposite, SWT.NONE);
-	initializeSearchScopeCombo();
-	
-	sashForm = new SashForm(topComposite,  SWT.VERTICAL);
-	GridData sashGD = new GridData(GridData.FILL_BOTH);
-	sashGD.grabExcessHorizontalSpace = true;
-	sashGD.grabExcessVerticalSpace = true;
-	sashForm.setLayoutData(new GridData(GridData.FILL_BOTH));
-	sashForm.setLayout(new GridLayout());
-	
-				int[] sashFormWeights = new int[2];
-			sashFormWeights[0] = 0;
-			sashFormWeights[1] = 7;
-			sashForm.setWeights(sashFormWeights);
-	
-	// Create PageBook for High Level TreeViewer
-			highLevelPageBook = new PageBook(sashForm, SWT.NONE);
-			GridData fileSystemPBData = new GridData();
-			fileSystemPBData.horizontalAlignment = SWT.FILL;
-			highLevelPageBook.setLayoutData(fileSystemPBData);
-			
-			blankHighLevelComposite = new Composite(highLevelPageBook, SWT.NONE);
-			highLevelComposite = new Composite(highLevelPageBook, SWT.NONE);
-			GridLayout fileSystemLayout = new GridLayout();
-			fileSystemLayout.marginWidth = 0;
-			highLevelComposite.setLayout(fileSystemLayout);
-			highLevelComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
-
-			createHighLevelTreeViewer(highLevelComposite);
-			populateHighLevelTreeViewer();
-			
-			highLevelPageBook.showPage(blankHighLevelComposite);
-//////////////////////////////////////////////////////////////////////////////	//
-			
-		/*
-		 * Creates the High Level TreeViewer (Top TreeViewer).
-		 *
-		private void createHighLevelTreeViewer(Composite base) {
-			highLevelTreeViewer = createTreeViewer(highLevelComposite, "Resources");
-			initializeHighLevelTreeViewer();
-			String ext[] = new String[1];
-			ext[0] = "xsd";
-			addFilterExtensions(highLevelTreeViewer, ext, new IFile[0]); 
-			
-			initializeHighLevelTreeViewer();
-			populateHighLevelTreeViewer();
-		}
-        
-        
-          protected void showHighLevelView(boolean show) {
-        if (show) {
-            int[] sashFormWeights = new int[2];
-            sashFormWeights[0] = 4;
-            sashFormWeights[1] = 5;
-            sashForm.setWeights(sashFormWeights);
-
-            highLevelPageBook.showPage(highLevelComposite);
-            topComposite.layout(true, true);
-
-            showHighLevelView();
-        } else {
-            int[] sashFormWeights = new int[2];
-            sashFormWeights[0] = 0;
-            sashFormWeights[1] = 7;
-            sashForm.setWeights(sashFormWeights);
-
-            highLevelPageBook.showPage(blankHighLevelComposite);
-            topComposite.layout(true, true);
-
-            hideHighLevelView();
-        }
-    }
-    
-    protected void setFilter(TreeViewer treeViewer, ViewerFilter filter) {
-        treeViewer.getTree().setRedraw(false);
-        treeViewer.resetFilters();
-        treeViewer.addFilter(filter);
-        treeViewer.getTree().setRedraw(true);
-        treeViewer.getTree().redraw();
-    }
-    
-  // ///////////////////////////////////////////////////
-    // This is a convenience method that allows filtering of the given file
-    // exensions. It internally creates a ResourceFilter so that users of this
-    // class don't have to construct one.
-    // If the extensions provided don't have '.', one will be added.
-    protected void addFilterExtensions(TreeViewer treeViewer, String[] filterExtensions, IFile[] excludedFiles) {
-        // First add the '.' to the filterExtensions if they don't already have
-        // one
-        String[] correctedFilterExtensions = new String[filterExtensions.length];
-        for (int i = 0; i < filterExtensions.length; i++) {
-            // If the extension doesn't start with a '.', then add one.
-            if (filterExtensions[i].startsWith(".")) {
-                correctedFilterExtensions[i] = filterExtensions[i];
-            } else {
-                correctedFilterExtensions[i] = "." + filterExtensions[i];
-            }
-        }
-        ViewerFilter filter;
-        if (excludedFiles != null) {
-            filter = new SetTypeResourceFilter(correctedFilterExtensions, excludedFiles, null);
-        } else {
-            filter = new SetTypeResourceFilter(correctedFilterExtensions, null);
-        }
-        setFilter(treeViewer, filter);
-    }    
-    
-    
-  
-     * Creates a Generic TreeViewer object with the specified label and sets
-     * it's GridData value.
-  
-    protected TreeViewer createTreeViewer(Composite comp, String title) {
-        Label label = new Label(comp, SWT.NONE);
-        label.setText(title);
-
-        TreeViewer treeViewer = new TreeViewer(new Tree(comp, SWT.SINGLE | SWT.BORDER));
-        Control treeWidget = treeViewer.getTree();
-        GridData gd = new GridData(GridData.FILL_BOTH);
-        treeWidget.setLayoutData(gd);
-
-        return treeViewer;
-    }
-*/		
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentFinder.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentFinder.java
deleted file mode 100644
index 9c1bf72..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentFinder.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.xml;
-
-import org.eclipse.core.resources.IFile;
-
-/**
- * this thing parsers xml artifacts and picks out the specified components attributes
- * 
- */
-public class XMLComponentFinder {
-    public static final int ENCLOSING_PROJECT_SCOPE = 0;
-    public static final int ENTIRE_WORKSPACE_SCOPE = 1;
-
-    protected IFile currentIFile;
-
-	public XMLComponentFinder() {
-	}
-    
-    /*
-     * Takes in the IFile we are currently editing.
-     * The currentIFile must be set before the getEnclosingProjectFiles()
-     * method will return correctly.
-     */
-    public void setFile(IFile file) {
-        currentIFile = file;
-    }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionDialog.java
deleted file mode 100644
index d9a74d5..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionDialog.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.xml;
-
-import java.util.List;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.ComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.IComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSelectionProvider.XMLComponentTreeObject;
-
-public class XMLComponentSelectionDialog extends ComponentSelectionDialog {
-
-    protected final static String DEFAULT_NAME_FIELD_TITLE = XSDEditorPlugin.getXSDString("_UI_LABEL_COMPONENT_NAME");
-    protected final static String DEFAULT_LIST_TITLE = XSDEditorPlugin.getXSDString("_UI_LABEL_MATCHING_COMPONENTS");
-	
-	public static final String SCOPE_SPECIFIED_FILE = XSDEditorPlugin.getXSDString("_UI_LABEL_SPECIFIED_FILE");
-
-	public static final String SCOPE_ENCLOSING_PROJECT = XSDEditorPlugin.getXSDString("_UI_LABEL_ENCLOSING_PROJECT");
-
-	public static final String SCOPE_WORKSPACE = XSDEditorPlugin.getXSDString("_UI_LABEL_WORKSPACE");
-
-	public static final String SCOPE_CURRENT_RESOURCE = XSDEditorPlugin.getXSDString("_UI_LABEL_CURRENT_RESOURCE");
-
-	private String currentSearchScope = SCOPE_CURRENT_RESOURCE;
-
-	protected Button chooseButton;
-	protected Button[] radioButton = new Button[3];
-
-	public XMLComponentSelectionDialog(Shell shell, String dialogTitle,
-			IComponentSelectionProvider provider) {
-		super(shell, dialogTitle, provider);
-	}
-
-public Control createDialogArea(Composite parent) {
-
-        setFilterLabel(provider.getNameFieldTitle() != null ? provider.getNameFieldTitle() : DEFAULT_NAME_FIELD_TITLE);         
-        setComponentTreeLabel(provider.getListTitle() != null ? provider.getListTitle() : DEFAULT_LIST_TITLE);
-        super.createDialogArea(parent);
-        
-        // We use the Composite topComposite to create additional widgets
-        GridLayout layout = new GridLayout();
-        layout.marginWidth = 0;
-        bottomComposite.setLayout(layout);
-        
-        
-        Group group = new Group(bottomComposite, SWT.NONE);
-        GridLayout gridLayout = new GridLayout(3, false);
-        //gridLayout.marginWidth = 0;
-        //gridLayout.marginLeft = 2;
-        group.setLayout(gridLayout);
-        group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        group.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_SEARCH_SCOPE"));
-        
-        ScopeChangeListener scopeChangeListener = new ScopeChangeListener();
-        radioButton[0] = new Button(group, SWT.RADIO);       
-        radioButton[0].setText(SCOPE_WORKSPACE);
-        
-        radioButton[1] = new Button(group, SWT.RADIO);
-        radioButton[1].setText(SCOPE_ENCLOSING_PROJECT);
-        
-        radioButton[2] = new Button(group, SWT.RADIO);
-        radioButton[2].setText(SCOPE_CURRENT_RESOURCE);
-        
-        //radioButton[3] = new Button(group, SWT.RADIO);
-        //radioButton[3].setText("Resource Set");
-
-        
-        for (int i = 0; i < radioButton.length; i++)
-        {          	
-          if (radioButton[i].getText().equals(currentSearchScope))
-          {
-          	radioButton[i].setSelection(true);
-          }	
-          radioButton[i].addSelectionListener(scopeChangeListener);        	
-        }
-        if (false){
-        Composite selectFileGroup = new Composite(group, SWT.NONE);
-        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
-        gd.horizontalSpan = 2;
-        selectFileGroup.setLayoutData(gd);
-        GridLayout gridLayout3 = new GridLayout(2, false);       
-        gridLayout3.marginWidth = 0;    
-        gridLayout3.marginHeight = 0;
-        selectFileGroup.setLayout(gridLayout3);
-        Text t = new Text(selectFileGroup, SWT.BORDER | SWT.READ_ONLY);
-        t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-        Button choose = new Button(selectFileGroup, SWT.NONE);
-        choose.setText("Choose...");
-        choose.addSelectionListener(scopeChangeListener);
-        }
-        
-        
-        Button check = new Button(group, SWT.CHECK);
-        check.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_NARROW_SEARCH_SCOPE_RESOURCE"));
-        GridData gd = new GridData();
-        gd.horizontalSpan = 3;
-        check.setLayoutData(gd);
-        check.setEnabled(false);
-
-        return parent;
-    }	/*
-		  * Returns the selected search scope.
-		  */
-	public String getSearchScope() {
-		return currentSearchScope;
-	}
-
-	public XMLComponentSpecification getSelection() {
-		XMLComponentTreeObject treeObject = (XMLComponentTreeObject) componentSelection;
-		List specs = treeObject.getXMLComponentSpecification();
-
-		int matchingIndex = 0;
-		for (int index = 0; index < specs.size(); index++) {
-			XMLComponentSpecification spec = (XMLComponentSpecification) specs
-					.get(index);
-			IPath path = new Path(spec.getFileLocation());
-			String specText = spec.getTargetNamespace() + " - "
-					+ path.lastSegment();
-			if (specText.equals(qualifierTextSelection)) {
-				matchingIndex = index;
-				break;
-			}
-		}
-
-		return (XMLComponentSpecification) specs.get(matchingIndex);
-	}
-
-	private class ScopeChangeListener extends SelectionAdapter {
-		public void widgetSelected(SelectionEvent e) {
-
-			if (e.widget instanceof Button) {
-				Button b = (Button) e.widget;
-				if ((b.getStyle() & SWT.RADIO) != 0) {
-					currentSearchScope = b.getText();
-					populateMasterComponentList();
-					refreshTreeViewer(getProcessedFilterString());
-
-					// Select the first matching component. Though we should be
-					// smarter here
-					// and determine if there was a selection before the scope
-					// switch (and if
-					// the component is still available.
-					Tree tree = componentTreeViewer.getTree();
-					TreeItem items[] = tree.getItems();
-					if (items.length > 0) {
-						TreeItem select[] = new TreeItem[1];
-						select[0] = items[0];
-						tree.setSelection(select);
-					}
-
-					updateCanFinish();
-				}				
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionProvider.java
deleted file mode 100644
index 613d31a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSelectionProvider.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.xml;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.IComponentList;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.IComponentSelectionProvider;
-
-public abstract class XMLComponentSelectionProvider implements IComponentSelectionProvider {
-    public List getQualifiers(Object component) {
-        List qualifiers = new ArrayList();
-        if (component != null) {
-            XMLComponentTreeObject specification = (XMLComponentTreeObject) component;
-            Iterator it = specification.getXMLComponentSpecification().iterator();
-            while (it.hasNext()) {
-                XMLComponentSpecification spec = (XMLComponentSpecification) it.next();
-                qualifiers.add(createQualifierText(spec));
-            }
-        }
-        
-        return qualifiers;
-    }
-    
-    protected String createQualifierText(XMLComponentSpecification spec) {
-        IPath path = new Path(spec.getFileLocation());
-        return spec.getTargetNamespace() + " - " + path.lastSegment();        
-    }
-    
-    protected void addDataItemToTreeNode(IComponentList comps, XMLComponentSpecification dataItem) {
-        boolean foundMatch = false;
-        Iterator it = comps.iterator();
-        XMLComponentTreeObject containingTreeObject = null;
-
-        while (it.hasNext()) {
-            XMLComponentTreeObject treeObject = (XMLComponentTreeObject) it.next();
-            if (treeObject.getName().equals(dataItem.getAttributeInfo("name"))) {
-                // If the existing data item and the new data item have the same names
-                if (treeObject.getXMLComponentSpecification().size() > 0) {
-                    QualifiedName metaName = ((XMLComponentSpecification) treeObject.getXMLComponentSpecification().get(0)).getMetaName();                   
-                    if (metaName != null && metaName.equals(dataItem.getMetaName())) {
-                        // If they are the same 'type' of items (according to the path value)
-                        containingTreeObject = treeObject;
-                        foundMatch = true;
-                        break;
-                    }
-                }
-            }
-        }
-        
-        if (!foundMatch) {
-            containingTreeObject = new XMLComponentTreeObject(dataItem);
-            comps.addComponent(containingTreeObject);
-        }
-        else {
-            // Only add to the tree object if the qualifier text differs than existing
-            // qualifier information contained in the tree object.
-            Iterator existingQualifiers = getQualifiers(containingTreeObject).iterator();
-            boolean alreadyExists = false;
-            while (existingQualifiers.hasNext()) {
-                String existingText = (String) existingQualifiers.next();
-                String newItemText = createQualifierText(dataItem);
-                if (existingText.equals(newItemText)) {
-                    alreadyExists = true;
-                    break;
-                }
-            }
-            
-            if (!alreadyExists) {
-                containingTreeObject.addXMLComponentSpecification(dataItem);
-            }
-        }
-    }
-    
-    protected String getNormalizedLocation(String location) {
-        try {
-            URL url = new URL(location);
-            URL resolvedURL = Platform.resolve(url);
-            location = resolvedURL.getPath();
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return location;
-    }
-
-    
-    /*
-     * Object used to hold components with the same name but different qualifiers.
-     * This object will contain a list of XMLComponentSpecifications (with the same
-     * names but different qualifiers).
-     */
-    public class XMLComponentTreeObject {
-        private String name;
-        private List xmlComponentSpecifications;
-        
-        public XMLComponentTreeObject(XMLComponentSpecification spec) {
-            xmlComponentSpecifications = new ArrayList();
-            xmlComponentSpecifications.add(spec);
-            name = (String) spec.getAttributeInfo("name");
-        }
-        
-        public String getName() {
-            return name;
-        }
-        
-        public void addXMLComponentSpecification(XMLComponentSpecification spec) {
-            xmlComponentSpecifications.add(spec);
-        }
-        
-        public List getXMLComponentSpecification() {
-            return xmlComponentSpecifications;
-        }
-    }
-
-    /*
-     * Used to provide labels to the ComponentSeletionDialog
-     */
-    public class XMLComponentSelectionLabelProvider extends LabelProvider {
-        public String getText(Object element) {
-            XMLComponentTreeObject specification = (XMLComponentTreeObject) element;
-            return specification.getName();
-        }        
-    }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSpecification.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSpecification.java
deleted file mode 100644
index 321a5a3..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xml/XMLComponentSpecification.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.xml;
-
-import java.util.Hashtable;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-
-/*
- * Simple class which keeps track of attribute information.
- * This class is basically a Hashtable with convenience methods.
- */
-public class XMLComponentSpecification {
-  
-    QualifiedName metaName;    
-    Hashtable hashtable;
-    String targetNamespace;
-    String fileLocation;
-    
-    public XMLComponentSpecification(QualifiedName metaName) {
-        this.metaName = metaName;
-        hashtable = new Hashtable();
-    }
-    
-    public void addAttributeInfo(Object attribute, Object value) {
-        hashtable.put(attribute, value);
-    }
-    
-    public Object getAttributeInfo(Object attribute) {
-        return hashtable.get(attribute);
-    }
-    
-    public QualifiedName getMetaName() {
-        return metaName;
-    }
-    
-    public String getTargetNamespace() {
-        return targetNamespace;
-    }
-    
-    public void setTargetNamespace(String tns) {
-        targetNamespace = tns;
-    }
-    
-    public String getFileLocation() {
-        return fileLocation;
-    }
-    
-    public void setFileLocation(String location) {
-        fileLocation = location;
-    }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentFinder.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentFinder.java
deleted file mode 100644
index 0ae65d5..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentFinder.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.xsd;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.wst.common.core.search.SearchEngine;
-import org.eclipse.wst.common.core.search.SearchMatch;
-import org.eclipse.wst.common.core.search.SearchParticipant;
-import org.eclipse.wst.common.core.search.SearchPlugin;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-import org.eclipse.wst.common.core.search.pattern.SearchPattern;
-import org.eclipse.wst.common.core.search.scope.ProjectSearchScope;
-import org.eclipse.wst.common.core.search.scope.SearchScope;
-import org.eclipse.wst.common.core.search.scope.WorkspaceSearchScope;
-import org.eclipse.wst.common.core.search.util.CollectingSearchRequestor;
-import org.eclipse.wst.xml.core.internal.search.XMLComponentDeclarationPattern;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentFinder;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSpecification;
-import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
-
-public class XSDComponentFinder extends XMLComponentFinder {    
-    public XSDComponentFinder() {
-    }
-    
-    protected void findTypes(SearchEngine searchEngine, List list, int scope, QualifiedName metaName)
-    {      
-      SearchScope searchScope = new WorkspaceSearchScope();
-      if (scope == ENCLOSING_PROJECT_SCOPE)
-      {
-        searchScope = new ProjectSearchScope(currentIFile.getProject().getLocation());
-      }       
-      try {
-          CollectingSearchRequestor requestor = new CollectingSearchRequestor();
-          
-          XMLComponentDeclarationPattern pattern = new XMLComponentDeclarationPattern(new QualifiedName("*", "*"), metaName, SearchPattern.R_PATTERN_MATCH);
-          SearchParticipant particpant = SearchPlugin.getDefault().getSearchParticipant("org.eclipse.wst.xsd.search.XSDSearchParticipant");
-          Assert.isNotNull(particpant);
-          
-          // for now we assume that we only want to include the xsd related participant
-          // that way we don't get SearchMatches for things withing WSDL files
-          // TODO... rethink this... since folks should be capable of changing the 'xsd' search participant impl
-          // without killing this logic
-          SearchParticipant[] participants = { particpant };          
-          searchEngine.search(pattern, requestor, participants, searchScope, null, new NullProgressMonitor());
-          
-          for (Iterator i = requestor.getResults().iterator(); i.hasNext(); )
-          {
-            SearchMatch match = (SearchMatch)i.next();
-            XMLComponentSpecification spec = new XMLComponentSpecification(metaName);
-            spec.setFileLocation(match.getFile().getLocation().toString());
-            Object o = match.map.get("name");
-            if (o != null && o instanceof QualifiedName)
-            {  
-              QualifiedName qualifiedName = (QualifiedName)o;
-              if (qualifiedName.getLocalName() != null)
-              {  
-                spec.addAttributeInfo("name", qualifiedName.getLocalName());
-                spec.setTargetNamespace(qualifiedName.getNamespace());
-                list.add(spec);
-              }  
-            }  
-          }  
-      } catch (CoreException e) {
-        e.printStackTrace();
-          //status.add(e.getStatus());
-      }      
-    }
-    
-    public List getWorkbenchResourceComponents(int scope) {
-      // TODO... by making this method return a list... we're cutting off any chance provide asynchronous friendly
-      // behaviour where we populate the list and refresh the dialog after every few updates or seconds
-      // returning a list makes this an all or nothing deal
-      //
-      List list = new ArrayList();
-      SearchEngine searchEngine = new SearchEngine();
-      // TODO... we need a way to combine these into a single search!!
-      // we can make this search 2X faster by doing so
-      // either we should combine COMPLEX_TYPE_META_NAME and SIMPLE_TYPE_META_NAME into a single TYPE_META_NAME
-      // or we'll need to introduce a way to 'OR' SearchPatterns ... which may be tricky!
-      findTypes(searchEngine, list, scope, IXSDSearchConstants.COMPLEX_TYPE_META_NAME);
-      findTypes(searchEngine, list, scope, IXSDSearchConstants.SIMPLE_TYPE_META_NAME);    
-      return list;
-    }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionDialog.java
deleted file mode 100644
index b66e13c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionDialog.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.xsd;
-
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.IComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSelectionDialog;
-
-public class XSDComponentSelectionDialog extends XMLComponentSelectionDialog {
-
-	public static final int ELEMENT = 1;
-	public static final int TYPE = 2;
-	
-	public XSDComponentSelectionDialog(Shell shell, String dialogTitle,
-			IComponentSelectionProvider provider) {
-		super(shell, dialogTitle, provider);
-	}
-	
-	
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionProvider.java
deleted file mode 100644
index 8aa8178..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDComponentSelectionProvider.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.xsd;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.common.IComponentList;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentFinder;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSpecification;
-import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDRedefine;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaContent;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.impl.XSDImportImpl;
-import org.eclipse.xsd.util.XSDConstants;
-
-/*
- *
- */
-public class XSDComponentSelectionProvider extends XMLComponentSelectionProvider {
-    private XSDComponentFinder xsdComponentFinder;
-    private XSDComponentSelectionDialog dialog;
-    private XSDSchema schema;
-    private XSDComponentLabelProvider labelProvider;
-    
-    private boolean showComplexTypes = true;
-    
-    /*
-     * Takes in the IFile we are currently editing.
-     */
-    public XSDComponentSelectionProvider(IFile file, XSDSchema schema) {
-        xsdComponentFinder = new XSDComponentFinder();
-        xsdComponentFinder.setFile(file);
-        this.schema = schema;
-        labelProvider = new XSDComponentLabelProvider();
-    }
-    
-    public void setDialog(XSDComponentSelectionDialog dialog) {
-        this.dialog = dialog;
-    }
-    
-    public void showComplexTypes(boolean show) {
-        showComplexTypes = show;
-    }
-    
-    public String getType(Object element) {
-        return null;
-    }
-        
-    /*
-     * The return value is a List of XMLComponentTreeObjects.
-     * 
-     */
-	public void getComponents(IComponentList list, boolean quick) {
-	    if (quick) {
-            // Populate IComponentList list with components most easily accessible (fastest)
-            // Grab Built-In types
-            Iterator builtInIt = getBuiltInTypes().iterator();
-            while (builtInIt.hasNext()) {
-                XMLComponentSpecification tagItem = (XMLComponentSpecification) builtInIt.next();
-                addDataItemToTreeNode(list, tagItem);
-            }
-            
-            // Create current Schema's complex and simple types
-            createComplexTypes(list);
-            createSimpleTypes(list);
-        }
-        else {
-            getComponents(list);
-        }
-	}
-    
-    /*
-     * TODO: Need to revisit how we build up our treeObject list.... 
-     * And it's somewhat messy, clean this up.
-     */
-    private void getComponents(IComponentList list) {
-        List extensions = new ArrayList();
-        extensions.add("xsd");
-        
-        String scope = "";
-        if (dialog != null) {
-            scope = dialog.getSearchScope();
-        }
-        
-        List comps = new ArrayList();
-        if (scope.equals(XSDComponentSelectionDialog.SCOPE_ENCLOSING_PROJECT)) {
-            comps = xsdComponentFinder.getWorkbenchResourceComponents(XMLComponentFinder.ENCLOSING_PROJECT_SCOPE);
-        }
-        else if (scope.equals(XSDComponentSelectionDialog.SCOPE_WORKSPACE)) {
-            comps = xsdComponentFinder.getWorkbenchResourceComponents(XMLComponentFinder.ENTIRE_WORKSPACE_SCOPE);            
-        }
-        
-//      Group same item types together (simple/complex)
-        List complex = new ArrayList();
-        List simple = new ArrayList();
-        Iterator itemsIterator = comps.iterator();
-        while (itemsIterator.hasNext()) {
-            XMLComponentSpecification tagItem = (XMLComponentSpecification) itemsIterator.next();
-            if (tagItem.getMetaName() == IXSDSearchConstants.COMPLEX_TYPE_META_NAME) {
-                complex.add(tagItem);
-            }               
-            else if (tagItem.getMetaName() == IXSDSearchConstants.SIMPLE_TYPE_META_NAME) {
-                simple.add(tagItem);
-            }
-        }
-        
-        Iterator complexIt = complex.iterator();
-        Iterator simpleIt = simple.iterator();
-        if (showComplexTypes) {
-            while (complexIt.hasNext()) {
-                XMLComponentSpecification item = (XMLComponentSpecification) complexIt.next();
-                addDataItemToTreeNode(list, item);
-            }
-        }
-        
-        while (simpleIt.hasNext()) {
-            XMLComponentSpecification item = (XMLComponentSpecification) simpleIt.next();
-            addDataItemToTreeNode(list, item);
-        }
-        
-        // Create from imports, includes, and redefines
-        createFromImport(list);
-        createFromInclude(list);
-        createFromRedefine(list);
-    }
-    
-////////////////////////////////////////////////////////////////////////////////    
-    private List getBuiltInTypes() {        
-        List items = new ArrayList();
-        for (int i = 0; i < XSDDOMHelper.dataType.length; i++) {
-          items.add(XSDDOMHelper.dataType[i][0]);
-        }
-        Iterator it = items.iterator();
-        
-        List builtInComponentSpecs = new ArrayList();
-        while (it.hasNext()) {
-            Object item = it.next();
-            String itemString = item.toString();
-            
-            XMLComponentSpecification builtInTypeItem = new XMLComponentSpecification(null);
-            builtInTypeItem.addAttributeInfo("name", itemString);
-            builtInTypeItem.setTargetNamespace(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
-//            String normalizedFile = getNormalizedLocation(schema.getSchemaLocation());
-//            builtInTypeItem.setFileLocation(normalizedFile);
-            builtInTypeItem.setFileLocation("Built-In");
-            
-            builtInComponentSpecs.add(builtInTypeItem);
-        }
-        
-        return builtInComponentSpecs;
-    }
-
-    private void createComplexTypes(IComponentList treeObjectList) {
-        TypesHelper typesHelper = new TypesHelper(schema);
-        List complexTypes = typesHelper.getUserComplexTypes();
-        createComplexSimpleTreeObject(treeObjectList, complexTypes, true);
-    }
-    
-    private void createSimpleTypes(IComponentList treeObjectList) {
-        TypesHelper typesHelper = new TypesHelper(schema);
-        List complexTypes = typesHelper.getUserSimpleTypes();
-        createComplexSimpleTreeObject(treeObjectList, complexTypes, true);
-    }
-
-    
-    private void createFromImport(IComponentList treeObjectList) {
-        Iterator imports = getXSDImports().iterator();
-        while (imports.hasNext()) {
-            XSDImport importItem = (XSDImport) imports.next();
-            if (importItem.getSchemaLocation() != null) {
-                ((XSDImportImpl) importItem).importSchema();
-                TypesHelper helper = new TypesHelper(importItem.getResolvedSchema());
-                
-                List types = helper.getUserComplexTypes();
-                types.addAll(helper.getUserSimpleTypes());
-                createComplexSimpleTreeObject(treeObjectList, types, false);
-            }
-        }
-    }
-    
-        private void createFromInclude(IComponentList treeObjectList) {
-        Iterator imports = getXSDIncludes().iterator();
-        while (imports.hasNext()) {
-            XSDInclude includeItem = (XSDInclude) imports.next();
-            if (includeItem.getSchemaLocation() != null) {
-                TypesHelper helper = new TypesHelper(includeItem.getResolvedSchema());  
-                
-                List types = helper.getUserComplexTypes();
-                types.addAll(helper.getUserSimpleTypes());
-                createComplexSimpleTreeObject(treeObjectList, types, false);
-            }
-        }
-    }
-    
-    private void createFromRedefine(IComponentList treeObjectList) {
-        Iterator redefines = getXSDRedefines().iterator();
-        while (redefines.hasNext()) {
-            XSDRedefine redefineItem = (XSDRedefine) redefines.next();
-            if (redefineItem.getSchemaLocation() != null) {
-                TypesHelper helper = new TypesHelper(redefineItem.getResolvedSchema());
-                
-                List types = helper.getUserComplexTypes();
-                types.addAll(helper.getUserSimpleTypes());
-                createComplexSimpleTreeObject(treeObjectList, types, false);
-            }
-        }
-    }
-    
-        protected List getXSDImports() {
-        List imports = new ArrayList();
-        
-        Iterator contents = schema.getContents().iterator();
-        while (contents.hasNext()) {
-            XSDSchemaContent content = (XSDSchemaContent) contents.next();
-            if (content instanceof XSDImport) {
-                imports.add(content);             
-            }
-        }
-        
-        return imports;
-    }
-    
-    protected List getXSDIncludes() {
-        List includes = new ArrayList();
-        
-        Iterator contents = schema.getContents().iterator();
-        while (contents.hasNext()) {
-            XSDSchemaContent content = (XSDSchemaContent) contents.next();
-            if (content instanceof XSDInclude) {
-                includes.add(content);            
-            }
-        }
-        
-        return includes;
-    }
-
-    protected List getXSDRedefines() {
-        List includes = new ArrayList();
-        
-        Iterator contents = schema.getContents().iterator();
-        while (contents.hasNext()) {
-            XSDSchemaContent content = (XSDSchemaContent) contents.next();
-            if (content instanceof XSDRedefine) {
-                includes.add(content);            
-            }
-        }
-        
-        return includes;
-    }
-
-    private void createComplexSimpleTreeObject(IComponentList treeObjectList, List complexTypes, boolean sameNS) {
-        boolean proceed = true;
-        
-        for (int i = 0; i < complexTypes.size(); i++) {
-            XSDNamedComponent item = (XSDNamedComponent) complexTypes.get(i); 
-        
-            if (sameNS) {
-                // We do this check because Types from Includes might show up.  However, we don't want to show them
-                String itemLocation = item.getSchema().getSchemaLocation();
-                String currentSchemaLocation = schema.getSchemaLocation();
-                if (itemLocation != null) {
-                    proceed = itemLocation.equals(currentSchemaLocation);
-                }
-                else {
-                    proceed = false;
-                }
-            }
-            
-            if (proceed) {
-                XMLComponentSpecification typeItem =  null;
-                if (showComplexTypes && item instanceof XSDComplexTypeDefinition) {
-                    typeItem = new XMLComponentSpecification(IXSDSearchConstants.COMPLEX_TYPE_META_NAME);
-                    typeItem.addAttributeInfo("name", ((XSDComplexTypeDefinition) item).getName());
-                }
-                else if (item instanceof XSDSimpleTypeDefinition) {
-                    typeItem = new XMLComponentSpecification(IXSDSearchConstants.SIMPLE_TYPE_META_NAME);
-                    typeItem.addAttributeInfo("name", ((XSDSimpleTypeDefinition) item).getName());
-                }
-                
-                if (typeItem != null) {
-                    typeItem.setTargetNamespace(item.getTargetNamespace());
-                    String normalizedFile = getNormalizedLocation(schema.getSchemaLocation());
-                    typeItem.setFileLocation(normalizedFile);
-    
-                    addDataItemToTreeNode(treeObjectList, typeItem);
-                }
-            }
-        }
-    }
-
-    
-	public ILabelProvider getLabelProvider() {
-		return labelProvider;
-	}
-
-    
-    public class XSDComponentLabelProvider extends XMLComponentSelectionLabelProvider {
-        public Image getImage(Object element) {
-            XMLComponentTreeObject specification = (XMLComponentTreeObject) element;
-            XMLComponentSpecification spec = (XMLComponentSpecification) specification.getXMLComponentSpecification().get(0);
-            if (spec.getMetaName() == IXSDSearchConstants.COMPLEX_TYPE_META_NAME) {
-                return XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif");
-            }
-            else if (spec.getMetaName() == IXSDSearchConstants.SIMPLE_TYPE_META_NAME) {
-                return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
-            }
-            else if (spec.getMetaName() == null) {
-                return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
-            }
-    
-            return null;
-        }
-    }
-    
-    
-
-	public String getListTitle() {
-		return XSDEditorPlugin.getXSDString("_UI_LABEL_MATCHING_TYPES");
-	}
-
-	public String getNameFieldTitle() {
-		return XSDEditorPlugin.getXSDString("_UI_LABEL_TYPE_NAME");
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDSetTypeHelper.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDSetTypeHelper.java
deleted file mode 100644
index 5c45e43..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dialogs/types/xsd/XSDSetTypeHelper.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.dialogs.types.xsd;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.wst.common.core.search.pattern.QualifiedName;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateElementAction;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSpecification;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.XSDExternalFileCleanup;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDRedefine;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaContent;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.util.XSDConstants;
-import org.eclipse.xsd.util.XSDParser;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class XSDSetTypeHelper {
-    private XSDSchema xsdSchema;
-    private IFile currentIFile;
-    
-    public XSDSetTypeHelper(IFile iFile, XSDSchema schema) {
-        currentIFile = iFile;
-        xsdSchema = schema;
-    }
-
-    public void setType(Element element, String property, XMLComponentSpecification spec) {
-        addImportIfNecessary(element, spec);        
-        String typeObject = getPrefixedTypeName(spec);
-        
-        // Get the previous type --> previousStringType
-        String previousStringType = "";
-        Attr attr = element.getAttributeNode(property);
-        if (attr != null) {
-            attr.getValue();
-        }
-
-        if (!XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
-        {/*
-            if (spec != null && spec.getTagPath().equals("**anonymous**"))
-            {
-              if (spec.getTagPath().equals("ANONYMOUS_SIMPLE_TYPE"))
-              {
-                if (!previousStringType.equals("**anonymous**"))
-                {
-                  updateElementToAnonymous(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-                }
-              }
-              else
-              {
-                if (!previousStringType.equals("**anonymous**"))
-                {
-                  updateElementToAnonymous(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-                }
-              }
-              // element.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
-              element.removeAttribute(property);
-            }
-            else*/
-            {
-              XSDDOMHelper.updateElementToNotAnonymous(element);
-              //element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, typeObject.toString());
-              element.setAttribute(property, typeObject.toString());
-            }
-        }
-    }
-    
-    public void addImportIfNecessary(Element element, XMLComponentSpecification spec) {
-        
-        // Get the new type --> typeObject
-        if (spec != null) {
-            QualifiedName metaName = spec.getMetaName();
-           
-            if (metaName != null) {
-                // Do an actual import if needed
-                XSDParser parser = new XSDParser();
-                parser.parse(spec.getFileLocation());
-                XSDSchema schema = parser.getSchema();
-                String tns = schema.getTargetNamespace();
-                
-                boolean exists = false;
-                // Check if the type is defined in the 'current' file itself.
-                String currentFile = getNormalizedLocation(xsdSchema.getSchemaLocation());
-                IPath currentFilePath = new Path(currentFile);
-                if (currentFilePath.equals(new Path(spec.getFileLocation()))) {
-                    exists = true;
-                }
-
-                if (!exists) {
-                    if (tns.equals(xsdSchema.getTargetNamespace())) {
-                        // Check if the schema is in a redefine/include
-                        List existingList = getXSDIncludes();
-                        existingList.addAll(getXSDRedefines());
-                        Iterator it = existingList.iterator();
-                        while (it.hasNext()) {
-                            XSDSchemaDirective existingSchema = (XSDSchemaDirective) it.next();
-                            String normalizedFile = getNormalizedLocation(existingSchema.getResolvedSchema().getSchemaLocation());
-                            String normalizedSpec = spec.getFileLocation();
-                            
-                            if (normalizedFile.equals(normalizedSpec)) {
-                                // Found and existing one
-                                exists = true;
-                            }
-                        }                        
-                    }
-                    else {
-                        // Check if the schema is in a import
-                        List existingList = getXSDImports();
-                        Iterator it = existingList.iterator();
-                        while (it.hasNext()) {
-                            XSDSchemaDirective existingSchema = (XSDSchemaDirective) it.next();
-                            String normalizedFile = getNormalizedLocation(existingSchema.getResolvedSchema().getSchemaLocation());
-                            String normalizedSpec = spec.getFileLocation();
-
-                            if (normalizedFile.equals(normalizedSpec)) {
-                                // Found and existing one
-                                exists = true;
-                            }
-                        }                        
-                    }
-                }
-                
-                if (!exists) {
-                    doImport(spec.getFileLocation(), schema);
-                }
-            }
-        }
-    }
-    
-    /*
-     * Return the prefixed type name for the type described by the given
-     * XMLComponentSpecification object.
-     * If the type described is a Built-in type, do not add the prefix
-     */
-    public String getPrefixedTypeName(XMLComponentSpecification spec) {
-        String typeObject = (String) spec.getAttributeInfo("name");
-        
-        TypesHelper typesHelper = new TypesHelper(xsdSchema); // ???? Is this correct?
-        List prefixedNames = typesHelper.getPrefixedNames(spec.getTargetNamespace(), typeObject);
-        if (prefixedNames.size() > 0) {
-            // Grab the first prefixed name
-            typeObject = (String) prefixedNames.get(0);
-        }
-
-        return typeObject;
-    }
-    
-    private void updateElementToAnonymous(Element element, String xsdType) {
-        String prefix = element.getPrefix();
-        prefix = (prefix == null) ? "" : (prefix + ":");
-        XSDDOMHelper.updateElementToNotAnonymous(element);
-        Element childNode = null;
-        if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG)) {
-            childNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-        }
-        else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG)) {
-            childNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-        }
-        
-        if (childNode != null) {
-            XSDDOMHelper helper = new XSDDOMHelper();
-            Node annotationNode = helper.getChildNode(element, XSDConstants.ANNOTATION_ELEMENT_TAG);
-            if (annotationNode == null) {
-                Node firstChild = element.getFirstChild();
-                element.insertBefore(childNode, firstChild);
-            } else {
-                Node nextSibling = annotationNode.getNextSibling();
-                element.insertBefore(childNode, nextSibling);
-            }
-            XSDDOMHelper.formatChild(childNode);
-        }
-    }
-
-    // TODO: We shouldn't need to pass in IPath externalSchemaPath.
-    private void doImport(String externalSchemaPath, XSDSchema externalSchema) {
-        // Determine schemaLocation
-        String locationAttribute = URIHelper.getRelativeURI(externalSchemaPath, currentIFile.getLocation().toOSString());
-        
-        boolean isInclude = false;
-        if (externalSchema.getTargetNamespace().equals(xsdSchema.getTargetNamespace())) {
-            isInclude = true;
-        }
-        
-        if (externalSchema != null) { // In case we have problems loading the file.... we should display an error message.
-                Element newElement;
-                if (isInclude) {                
-                    List attributes = new ArrayList();
-                    attributes.add(new DOMAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, locationAttribute));
-                    newElement = createElement(XSDConstants.INCLUDE_ELEMENT_TAG, attributes);
-                }
-                else if (!isInclude) {
-                    List attributes = new ArrayList();
-                    attributes.add(new DOMAttribute(XSDConstants.NAMESPACE_ATTRIBUTE, externalSchema.getTargetNamespace()));
-                    attributes.add(new DOMAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, locationAttribute));
-                    newElement = createElement(XSDConstants.IMPORT_ELEMENT_TAG, attributes);
-                    handleImportNS(newElement, externalSchema);
-                }
-        }
-    }
-
-    private void handleImportNS(Element importElement, XSDSchema externalSchema) {
-        String namespace = externalSchema.getTargetNamespace();
-        if (namespace == null) namespace = "";
-
-        XSDImport xsdImport = (XSDImport) xsdSchema.getCorrespondingComponent(importElement);
-        xsdImport.setResolvedSchema(externalSchema);
-        
-        java.util.Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-        
-//        System.out.println("changed Import Map is " + map.values());
-//        System.out.println("changed import Map keys are " + map.keySet());
-
-        // Referential integrity on old import
-        // How can we be sure that if the newlocation is the same as the oldlocation
-        // the file hasn't changed
-                
-        XSDSchema referencedSchema = xsdImport.getResolvedSchema();
-        if (referencedSchema != null)
-        {
-          XSDExternalFileCleanup cleanHelper = new XSDExternalFileCleanup(referencedSchema);
-          cleanHelper.visitSchema(xsdSchema);
-        }
-         
-        Element schemaElement = xsdSchema.getElement();
-
-        // update the xmlns in the schema element first, and then update the import element next
-        // so that the last change will be in the import element.  This keeps the selection
-        // on the import element
-        TypesHelper helper = new TypesHelper(externalSchema);
-        String prefix = helper.getPrefix(namespace, false);
-        
-        if (map.containsKey(prefix))
-        {
-          prefix = null;
-        }
-
-        if (prefix == null || (prefix !=null && prefix.length() == 0))
-        {
-          StringBuffer newPrefix = new StringBuffer("pref");  //$NON-NLS-1$
-          int prefixExtension = 1;
-          while (map.containsKey(newPrefix.toString()) && prefixExtension < 100)
-          {
-            newPrefix = new StringBuffer("pref" + String.valueOf(prefixExtension));
-            prefixExtension++;
-          }
-          prefix = newPrefix.toString();
-        }
-
-        if (namespace.length() > 0)
-        {
-          // if ns already in map, use its corresponding prefix
-          if (map.containsValue(namespace))
-          {
-            TypesHelper typesHelper = new TypesHelper(xsdSchema);
-            prefix = typesHelper.getPrefix(namespace, false);
-          }
-          else // otherwise add to the map
-          {
-            schemaElement.setAttribute("xmlns:"+prefix, namespace);
-          }
-        }
-
-
-//        System.out.println("changed Import Map is " + map.values());
-//        System.out.println("changed import Map keys are " + map.keySet());
-    }
-    
-    private Element createElement(String elementTag, List attributes) {
-        Node relativeNode = XSDDOMHelper.getNextElementNode(xsdSchema.getElement().getFirstChild());
-        
-        CreateElementAction action = new CreateElementAction("");
-        action.setElementTag(elementTag);
-        action.setAttributes(attributes);
-        action.setParentNode(xsdSchema.getElement());
-        action.setRelativeNode(relativeNode);
-        action.setXSDSchema(xsdSchema);
-        return action.createAndAddNewChildElement();
-    }
-
-    private String getNormalizedLocation(String location) {
-        try {
-            URL url = new URL(location);
-            URL resolvedURL = Platform.resolve(url);
-            location = resolvedURL.getPath();
-        }
-        catch (Exception e) {
-            e.printStackTrace();
-        }
-        
-        return location; 
-      }
-    
-    private List getXSDImports() {
-        List imports = new ArrayList();
-        
-        Iterator contents = xsdSchema.getContents().iterator();
-        while (contents.hasNext()) {
-            XSDSchemaContent content = (XSDSchemaContent) contents.next();
-            if (content instanceof XSDImport) {
-                imports.add(content);             
-            }
-        }
-        
-        return imports;
-    }
-    
-    private List getXSDIncludes() {
-        List includes = new ArrayList();
-        
-        Iterator contents = xsdSchema.getContents().iterator();
-        while (contents.hasNext()) {
-            XSDSchemaContent content = (XSDSchemaContent) contents.next();
-            if (content instanceof XSDInclude) {
-                includes.add(content);            
-            }
-        }
-        
-        return includes;
-    }
-
-    private List getXSDRedefines() {
-        List includes = new ArrayList();
-        
-        Iterator contents = xsdSchema.getContents().iterator();
-        while (contents.hasNext()) {
-            XSDSchemaContent content = (XSDSchemaContent) contents.next();
-            if (content instanceof XSDRedefine) {
-                includes.add(content);            
-            }
-        }
-        
-        return includes;
-    }
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/BaseDragNodesCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/BaseDragNodesCommand.java
deleted file mode 100644
index d83fc47..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/BaseDragNodesCommand.java
+++ /dev/null
@@ -1,103 +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.dnd;
-
-import java.util.Collection;
-
-import org.eclipse.wst.common.ui.internal.dnd.DefaultDragAndDropCommand;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Node;
-
-
-public abstract class BaseDragNodesCommand extends DefaultDragAndDropCommand
-{
-  /**
-   * Constructor for BaseDragNodesCommand.
-   * @param target
-   * @param location
-   * @param operations
-   * @param operation
-   * @param sources
-   */
-  public BaseDragNodesCommand(
-    Object target,
-    float location,
-    int operations,
-    int operation,
-    Collection sources)
-  {
-    super(target, location, operations, operation, sources);
-  }
-
-  protected boolean isDirectSchemaChild(Node node)
-  {
-    Node parent = node.getParentNode();
-    if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false) &&
-        parent.getParentNode().equals(parent.getOwnerDocument()))
-    {
-      return true;
-    }
-    return false;
-  } 
-  
-  protected boolean isSiblingNodes(Node first, Node second)
-  {
-    if (first.getParentNode() != null)
-    {
-      return first.getParentNode().equals(second.getParentNode());
-    }
-    return false;
-  }
-  
-  protected void beginRecording()
-  {
-    if (target != null)
-    {
-      IDOMModel model = getModel((Node)target);
-      
-      if (model != null)
-      {
-        model.beginRecording(this, XSDEditorPlugin.getXSDString("_UI_LABEL_MOVE"));
-      }
-    }
-  }
-  
-  protected void endRecording()
-  {
-    if (target != null)
-    {
-      IDOMModel model = getModel((Node)target);
-      
-      if (model != null)
-      {
-        model.endRecording(this);
-      }
-    }
-  }
-  protected IDOMModel getModel(Node node)
-  {
-    Object object = node.getOwnerDocument();
-    if (object instanceof DocumentImpl)
-    {
-      return ((DocumentImpl) object).getModel();
-    }
-    return null;
-  }
-  
-  protected void moveNode(Node referenceNode, Node nodeToMove, boolean isBefore)
-  {
-    XSDDOMHelper.moveNode(referenceNode, nodeToMove, isBefore);
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/DragNodesCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/DragNodesCommand.java
deleted file mode 100644
index fa0d0b9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/DragNodesCommand.java
+++ /dev/null
@@ -1,77 +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.dnd;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.provisional.format.NodeFormatter;
-import org.w3c.dom.Node;
-
-public class DragNodesCommand extends BaseDragNodesCommand
-{
-  /**
-   * Constructor for DragNodesCommand.
-   * @param target
-   * @param location
-   * @param operations
-   * @param operation
-   * @param sources
-   */
-  public DragNodesCommand(
-    Object target,
-    float location,
-    int operations,
-    int operation,
-    Collection sources)
-  {
-    super(target, location, operations, operation, sources);
-  }
-
-  /**
-   * @see org.eclipse.wst.common.ui.internal.dnd.DragAndDropCommand#canExecute()
-   */
-  public boolean canExecute()
-  {
-    if (sources.size() > 0)
-    {
-      Node firstSource = (Node) sources.toArray()[0];
-      return isSiblingNodes((Node) target, firstSource);
-    }
-    return false;
-//    return isDirectSchemaChild((Node)target);
-  }
-
-  
-  /**
-   * @see org.eclipse.wst.common.ui.internal.dnd.DragAndDropCommand#execute()
-   */
-  public void execute()
-  {
-  	NodeFormatter formatProcessor = new NodeFormatter();
-    Node referenceNode = (Node) target;
-    Iterator iter = sources.iterator();
-    beginRecording();
-
-    while (iter.hasNext()) 
-    {
-      Node node = (Node) iter.next();
-      if (isSiblingNodes(referenceNode,node)) 
-      {
-        moveNode(referenceNode, node, !isAfter());
-        formatProcessor.format((IDOMNode)node);
-      }
-    }
-//    formatProcessor.format((XMLNode)referenceNode.getParentNode());
-    endRecording();
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/XSDDragAndDropManager.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/XSDDragAndDropManager.java
deleted file mode 100644
index 7c52cc9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/dnd/XSDDragAndDropManager.java
+++ /dev/null
@@ -1,57 +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.dnd;
-
-import java.util.Collection;
-
-import org.eclipse.wst.common.ui.internal.dnd.DragAndDropCommand;
-import org.eclipse.wst.common.ui.internal.dnd.DragAndDropManager;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Node;
-
-public class XSDDragAndDropManager implements DragAndDropManager
-{
-  /**
-   * Constructor for XSDDragAndDropManager.
-   */
-  public XSDDragAndDropManager()
-  {
-  }
-  
-  protected boolean isDirectSchemaChild(Node node)
-  {
-    Node parent = node.getParentNode();
-    if (XSDDOMHelper.inputEquals(parent, XSDConstants.SCHEMA_ELEMENT_TAG, false) &&
-        parent.getParentNode().equals(parent.getOwnerDocument()))
-    {
-      return true;
-    }
-    return false;
-  } 
-
-  /**
-   * @see org.eclipse.wst.common.ui.internal.dnd.DragAndDropManager#createCommand(Object, float, int, int, Collection)
-   */
-  public DragAndDropCommand createCommand(
-    Object target,
-    float location,
-    int operations,
-    int operation,
-    Collection source)
-  {
-    if (target instanceof Node) 
-    {
-      return new DragNodesCommand(target, location, operations, operation, source);
-    }
-    return null;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/editparts/AbstractComponentViewerRootEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/editparts/AbstractComponentViewerRootEditPart.java
deleted file mode 100644
index caef397..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/editparts/AbstractComponentViewerRootEditPart.java
+++ /dev/null
@@ -1,63 +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.gef.util.editparts;
-                                      
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Panel;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.ContainerLayout;
-              
-
-public abstract class AbstractComponentViewerRootEditPart extends AbstractGraphicalEditPart 
-{
-  protected final static String MESSAGE_PLACE_HOLDER = "MESSAGE_PLACE_HOLDER";
-  protected Object input;              
-
-  public void setInput(Object input)
-  {
-    this.input = input;
-    refreshChildren();
-  }
-
-  protected IFigure createFigure()
-  {
-    Panel panel = new Panel();
-    ContainerLayout layout = new ContainerLayout();
-    layout.setBorder(60);
-    panel.setLayoutManager(layout);
-    return panel;
-  }   
-           
-
-  protected List getModelChildren() 
-  {               
-    List list = new ArrayList();
-    if (input != null)
-    {
-      list.add(input);
-    }
-    else
-    {
-      list.add(MESSAGE_PLACE_HOLDER);
-    }
-    return list;
-  }         
-
-  protected abstract EditPart createChild(Object model);
-  
-  protected void createEditPolicies()
-  {  
-  }             
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectedEditPartFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectedEditPartFigure.java
deleted file mode 100644
index f25f677..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectedEditPartFigure.java
+++ /dev/null
@@ -1,138 +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.gef.util.figures;
-           
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-
-              
-public class ConnectedEditPartFigure extends ContainerFigure implements IConnectedEditPartFigure
-{                 
-  protected EditPart editPart;
-  protected boolean childConnectionsEnabled = true;
-  protected List connectedFigures = new ArrayList();
-  protected int connectionType = RIGHT_CONNECTION;
-    
-  public ConnectedEditPartFigure(EditPart editPart)
-  {
-    this.editPart = editPart;    
-  }     
-
-  public void setChildConnectionsEnabled(boolean enabled)
-  {
-    childConnectionsEnabled = enabled;
-  }          
-
-  protected IConnectedEditPartFigure getParentGraphNodeFigure()
-  {
-    IConnectedEditPartFigure result = null;
-    for (EditPart parentEditPart = editPart.getParent(); parentEditPart != null; parentEditPart = parentEditPart.getParent())
-    {                                                              
-      IFigure figure = ((AbstractGraphicalEditPart)parentEditPart).getFigure();    
-      if (figure instanceof IConnectedEditPartFigure)
-      {                                                            
-        IConnectedEditPartFigure graphNodeFigure = (IConnectedEditPartFigure)figure;
-        if (graphNodeFigure.getConnectionFigure() != null)
-        {
-          result = graphNodeFigure;
-          break;
-        }
-      }          
-    }          
-    return result;
-  }
-
-  public void addNotify()                     
-  {           
-    super.addNotify();
-    if (getConnectionFigure() != null)
-    {
-      IConnectedEditPartFigure parentGraphNodeFigure = getParentGraphNodeFigure();
-      if (parentGraphNodeFigure != null)
-      {   
-        parentGraphNodeFigure.addConnectedFigure(this);
-      }   
-    }
-  }   
-
-  public void removeNotify()
-  {
-    super.removeNotify();
-    if (getConnectionFigure() != null)
-    {
-      IConnectedEditPartFigure parentGraphNodeFigure = getParentGraphNodeFigure();
-      if (parentGraphNodeFigure != null)
-      {   
-        parentGraphNodeFigure.removeConnectedFigure(this);
-      }   
-    }
-  }   
-
-  public void addConnectedFigure(IConnectedEditPartFigure figure)
-  {   
-    if (childConnectionsEnabled) 
-    {  
-      // this test is required since we sometimes receive the 'addNotify' call twice
-      //
-      if (!connectedFigures.contains(figure))
-      {
-        connectedFigures.add(figure);
-      }
-    }
-  }
-
-  public void removeConnectedFigure(IConnectedEditPartFigure figure)
-  {
-    if (childConnectionsEnabled) 
-    { 
-      connectedFigures.remove(figure);
-    }
-  }    
-                    
-  public IFigure getSelectionFigure()
-  {
-    return this;
-  }
-
-  public IFigure getConnectionFigure()
-  {
-    return this;
-  }
-
-  public List getConnectedFigures(int type)
-  {
-    List list = new ArrayList();
-    for (Iterator i = connectedFigures.iterator(); i.hasNext(); )
-    {           
-      IConnectedEditPartFigure figure = (IConnectedEditPartFigure)i.next();
-      //if (type == 0 || type == figure.getConnectionType())
-      {
-        list.add(figure);
-      }      
-    }
-    return list;
-  }                               
-
-  public int getConnectionType()
-  {
-    return connectionType;
-  }
-
-  public void setConnectionType(int type)
-  {
-    connectionType = type;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectionRenderingFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectionRenderingFigure.java
deleted file mode 100644
index 7192108..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ConnectionRenderingFigure.java
+++ /dev/null
@@ -1,215 +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.gef.util.figures;
-        
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.PointList;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.GraphicalEditPart;
-              
-
-public class ConnectionRenderingFigure extends RectangleFigure
-{               
-  protected boolean isOutlined = true;
-  protected IFigure primaryLayer;
-
-  public ConnectionRenderingFigure(IFigure primaryLayer)
-  {
-    setOpaque(false);                   
-    this.primaryLayer = primaryLayer;
-    //setFocusTraversable(false); 
-    //setEnabled(false); 
-  }
-           
-  protected boolean isMouseEventTarget()
-  {
-    return false;
-  }        
-
-  public boolean containsPoint(int x, int y)
-  {
-    return false;
-  }
-
-  protected void fillShape(Graphics graphics)
-  { 
-    graphics.setForegroundColor(ColorConstants.black);
-    drawLines(graphics, primaryLayer);
-  }
-
-  protected void outlineShape(Graphics graphics)
-  { 
-    if (isOutlined)
-    {
-      super.outlineShape(graphics);
-    }
-  } 
-
-  protected void drawLines(Graphics graphics, IFigure figure)
-  {      
-    if (figure instanceof IConnectedEditPartFigure)
-    {
-      IConnectedEditPartFigure graphNodeFigure = (IConnectedEditPartFigure)figure;         
-      List connectedFigures = graphNodeFigure.getConnectedFigures(IConnectedEditPartFigure.RIGHT_CONNECTION);
-      int connectedFiguresSize = connectedFigures.size();              
-
-      if (connectedFiguresSize > 0) 
-      {                                         
-        IConnectedEditPartFigure firstGraphNodeFigure = (IConnectedEditPartFigure)connectedFigures.get(0);
-        Rectangle r = graphNodeFigure.getConnectionFigure().getBounds();    
-          
-        int x1 = r.x + r.width;
-        int y1 = r.y + r.height/2;
-                                                                                   
-        int startOfChildBox = firstGraphNodeFigure.getConnectionFigure().getBounds().x;
-        int x2 = x1 + (startOfChildBox - x1) / 3;
-        int y2 = y1;
-      
-        if (connectedFiguresSize == 1)
-        {
-          graphics.drawLine(x1, y1, startOfChildBox, y2);   
-        }
-        else // (connectedFigures.length > 1)
-        { 
-          graphics.drawLine(x1, y1, x2, y2);
-
-          int minY = Integer.MAX_VALUE;
-          int maxY = -1;
-
-          for (Iterator i = connectedFigures.iterator(); i.hasNext(); )
-          {                                 
-            IConnectedEditPartFigure connectedFigure = (IConnectedEditPartFigure)i.next();
-            Rectangle childConnectionRectangle = connectedFigure.getConnectionFigure().getBounds();
-            int y = childConnectionRectangle.y + childConnectionRectangle.height / 2;
-            minY = Math.min(minY, y);
-            maxY = Math.max(maxY, y);
-            graphics.drawLine(x2, y, childConnectionRectangle.x, y);
-          }                   
-          graphics.drawLine(x2, minY, x2, maxY);
-        }                          
-      }                             
-    }            
-
-    //boolean visitChildren = true;
-    List children = figure.getChildren();
-    for (Iterator i = children.iterator(); i.hasNext(); )
-    {
-      IFigure child = (IFigure)i.next();
-      drawLines(graphics, child);
-    }
-  }    
-
-  // This method supports the preview connection line function related to drag and drop
-  //     
-  public PointList getConnectionPoints(GraphicalEditPart parentEditPart, GraphicalEditPart childRefEditPart, Rectangle draggedFigureBounds)
-  {           
-    PointList pointList = new PointList();                         
-    int[] data = new int[1];
-    Point a = getConnectionPoint(parentEditPart, childRefEditPart, data);
-    if (a != null)
-    {   
-      int draggedFigureBoundsY = draggedFigureBounds.y + draggedFigureBounds.height/2;
-
-      pointList.addPoint(a); 
-      //pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
-      
-      if (data[0] == 0) // insert between 2 items
-      {                                         
-        int x = a.x + (draggedFigureBounds.x - a.x)/2;
-        pointList.addPoint(new Point(x, a.y));
-        pointList.addPoint(new Point(x, draggedFigureBoundsY));        
-        pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
-      }
-      else // insert at first or last position
-      {
-        pointList.addPoint(new Point(a.x, draggedFigureBoundsY));   
-        pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
-      }
-    }       
-    return pointList;
-  }
-
-         
-  // This method supports the preview connection line function related to drag and drop
-  //     
-  protected Point getConnectionPoint(GraphicalEditPart parentEditPart, GraphicalEditPart childRefEditPart, int[] data)
-  {                      
-    Point point = null;     
-    List childList = parentEditPart.getChildren();         
-                                                                                                                                               
-    if (parentEditPart.getFigure() instanceof IConnectedEditPartFigure && childList.size() > 0)
-    {   
-      point = new Point();
-
-      GraphicalEditPart prev = null;    
-      GraphicalEditPart next = null;
-                               
-      for (Iterator i = childList.iterator(); i.hasNext(); )
-      {             
-        Object o = i.next();    
-        if (o instanceof GraphicalEditPart)
-        {
-          GraphicalEditPart childEditPart = (GraphicalEditPart)o;
-          if (childEditPart.getFigure() instanceof IConnectedEditPartFigure)
-          {
-            if (childEditPart == childRefEditPart)
-            {
-              next = childEditPart;
-              break;
-            }                                           
-            prev = childEditPart;
-          }
-        }
-      }                            
-                          
-
-      if (next != null && prev != null)
-      {                   
-        int ya = getConnectedEditPartConnectionBounds(prev).getCenter().y;
-        int yb = getConnectedEditPartConnectionBounds(next).getCenter().y;
-        point.y = ya + (yb - ya)/2;   
-        data[0] = 0;
-      }                               
-      else if (prev != null) // add it last
-      {
-        point.y = getConnectedEditPartConnectionBounds(prev).getCenter().y;
-        data[0] = 1;
-      }
-      else if (next != null) // add it first!
-      {                           
-        point.y = getConnectedEditPartConnectionBounds(next).getCenter().y;
-        data[0] = -1;
-      }
-          
-      if (next != null || prev != null)
-      {
-        GraphicalEditPart child = prev != null ? prev : next;
-        int startOfChildBox = getConnectedEditPartConnectionBounds(child).x;
-        Rectangle r = getConnectedEditPartConnectionBounds(parentEditPart);  
-        int x1 = r.x + r.width;
-        point.x = x1 + (startOfChildBox - x1) / 3;
-      }
-    }    
-    return point;
-  }
-
-  protected Rectangle getConnectedEditPartConnectionBounds(GraphicalEditPart editPart)
-  {
-    return ((IConnectedEditPartFigure)editPart.getFigure()).getConnectionFigure().getBounds();
-  }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerFigure.java
deleted file mode 100644
index d7a77ac..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/ContainerFigure.java
+++ /dev/null
@@ -1,60 +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.gef.util.figures;
-            
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.RectangleFigure;
-              
-public class ContainerFigure extends RectangleFigure implements IExpandable
-{               
-  protected boolean isOutlined = false;
-  protected boolean isExpanded = true;
-
-  public ContainerFigure()
-  {
-    setLayoutManager(new ContainerLayout());
-    setFill(false);
-  }
-
-  public void doLayout()
-  {
-	  layout();
-	  setValid(true);
-  }  
-          
-  public ContainerLayout getContainerLayout()
-  {
-    return (ContainerLayout)getLayoutManager();
-  }           
-
-  public void setOutlined(boolean isOutlined)
-  {
-    this.isOutlined = isOutlined;
-  }     
-
-  protected void outlineShape(Graphics graphics)
-  { 
-    if (isOutlined)
-    {
-      super.outlineShape(graphics);
-    }
-  }
-
-  public boolean isExpanded()
-  {
-    return isExpanded;
-  }
-  
-  public void setExpanded(boolean isExpanded)
-  {
-    this.isExpanded = isExpanded;
-  }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/FillLayout.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/FillLayout.java
deleted file mode 100644
index 9f3de7c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/FillLayout.java
+++ /dev/null
@@ -1,161 +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.gef.util.figures;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.AbstractLayout;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-
-public class FillLayout extends AbstractLayout
-{         
-  protected boolean isHorizontal = false;                    
-  protected int spacing = 0;
-  public Dimension min;
-
-  public FillLayout(){}     
-  
-  public FillLayout(int spacing)
-  { 
-    this.spacing = spacing; 
-  }
-  
-  public void setHorizontal(boolean isHorizontal)
-  {
-   this.isHorizontal = isHorizontal;
-  }
-  
-  /**
-   * Calculates and returns the preferred size of the input container.
-   * This is the size of the largest child of the container, as all
-   * other children fit into this size.
-   *
-   * @param figure  Container figure for which preferred size is required.
-   * @return  The preferred size of the input figure.
-   */
-
-  protected Dimension calculatePreferredSize(IFigure figure, int width, int height)
-  {	                 
-    Dimension d = calculatePreferredClientAreaSize(figure);
-  	d.expand(figure.getInsets().getWidth(),
-  	         figure.getInsets().getHeight());
-  	d.union(getBorderPreferredSize(figure));
-  	return d;
-  } 
-  
-  protected Dimension calculatePreferredClientAreaSize(IFigure figure)
-  {
-    Dimension d = new Dimension();
-  	List children = figure.getChildren(); 
-  
-  
-  	for (Iterator i = children.iterator(); i.hasNext(); )
-    {
-  		IFigure child = (IFigure)i.next();
-      Dimension childSize = child.getPreferredSize();
-  
-      if (isHorizontal)
-      {
-        d.width += childSize.width;
-        d.height = Math.max(childSize.height, d.height);
-      }
-      else
-      {
-        d.height += childSize.height;
-        d.width = Math.max(childSize.width, d.width);
-      }
-  	}	 
-  
-                     
-    int childrenSize = children.size();       
-    if (childrenSize > 0)
-    {
-      if (isHorizontal)
-      {
-        d.width += spacing * (childrenSize - 1); 
-      }
-      else
-      {
-        d.height += spacing * (childrenSize - 1);  
-      }
-    }       
-      
-    if (min != null)
-    {
-      d.width = Math.max(d.width, min.width);
-      d.height = Math.max(d.height, min.height);
-    }
-    return d;
-  }
-  
-  /*
-   * Returns the minimum size required by the input container.
-   * This is the size of the largest child of the container, as all
-   * other children fit into this size.
-   */
-  public Dimension getMinimumSize(IFigure figure, int width, int height)
-  {
-  	Dimension d = new Dimension();
-  	List children = figure.getChildren();
-  	IFigure child;
-
-  	for (int i=0; i < children.size(); i++)
-    {
-  		child = (IFigure)children.get(i);
-  		d.union(child.getMinimumSize());
-  	}
-  	d.expand(figure.getInsets().getWidth(),
-  	         figure.getInsets().getHeight());
-  	return d;
-  }
-  
-  public Dimension getPreferredSize(IFigure figure, int width, int height)
-  {
-  	return calculatePreferredSize(figure, width, height);
-  }
-  
-  /*
-   * Lays out the children on top of each other with
-   * their sizes equal to that of the available
-   * paintable area of the input container figure.
-   */
-  public void layout(IFigure figure)
-  {                         
-    Dimension	preferredSize = calculatePreferredClientAreaSize(figure);
-  	Rectangle r = figure.getClientArea().getCopy();
-  	List children = figure.getChildren();
-
-    int nChildren = children.size();                                                          
-    int extraHorizontalSpace = r.width - preferredSize.width;
-
-  	for (Iterator i = children.iterator(); i.hasNext(); )
-    {
-  		IFigure child = (IFigure)i.next();
-      Dimension preferredChildSize = child.getPreferredSize();
-         
-      if (isHorizontal)
-      {                       
-        int w = preferredChildSize.width + (extraHorizontalSpace / nChildren);
-  		  child.setBounds(new Rectangle(r.x, r.y, w, Math.max(preferredSize.height, r.height)));
-        r.x += w + spacing;
-      }
-      else
-      {
-  		  child.setBounds(new Rectangle(r.x, r.y, Math.max(preferredSize.width, r.width), preferredChildSize.height));
-        r.y += preferredChildSize.height + spacing;
-      }
-  	}
-  }   
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedEditPartFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedEditPartFigure.java
deleted file mode 100644
index 4c778d7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedEditPartFigure.java
+++ /dev/null
@@ -1,30 +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.gef.util.figures;
-            
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-
-public interface IConnectedEditPartFigure extends IConnectedFigure
-{                       
-  public static final int UP_CONNECTION = 1; 
-  public static final int DOWN_CONNECTION = 2;
-  public static final int LEFT_CONNECTION = 3;
-  public static final int RIGHT_CONNECTION = 4;
-
-  public IFigure getSelectionFigure();
-  public IFigure getConnectionFigure();
-  public List getConnectedFigures(int type);
-  public int getConnectionType();      
-  public void addConnectedFigure(IConnectedEditPartFigure figure);
-  public void removeConnectedFigure(IConnectedEditPartFigure figure);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedFigure.java
deleted file mode 100644
index 4a6d7de..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IConnectedFigure.java
+++ /dev/null
@@ -1,18 +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.gef.util.figures;
-            
-import org.eclipse.draw2d.IFigure;
-
-public interface IConnectedFigure extends IFigure
-{                       
-  public IFigure getConnectionFigure();
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IExpandable.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IExpandable.java
deleted file mode 100644
index 161581b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/IExpandable.java
+++ /dev/null
@@ -1,19 +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.gef.util.figures;  
-
-import org.eclipse.draw2d.IFigure;
-
-public interface IExpandable extends IFigure
-{
-  boolean isExpanded(); 
-  void setExpanded(boolean isExpanded);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/SpacingFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/SpacingFigure.java
deleted file mode 100644
index e245d69..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/gef/util/figures/SpacingFigure.java
+++ /dev/null
@@ -1,27 +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.gef.util.figures;
-            
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-              
-public class SpacingFigure extends RectangleFigure
-{  
-  public SpacingFigure()
-  {
-    setFill(false);
-    setPreferredSize(new Dimension(0, 0));
-  }
-  
-  //protected void outlineShape(Graphics graphics)
-  //{ 
-  //}                                              
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/BaseGraphicalViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/BaseGraphicalViewer.java
deleted file mode 100644
index 9f1bbec..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/BaseGraphicalViewer.java
+++ /dev/null
@@ -1,199 +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.graph;
-
-import java.util.Iterator;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.StackLayout;
-import org.eclipse.gef.DefaultEditDomain;
-import org.eclipse.gef.EditDomain;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.KeyHandler;
-import org.eclipse.gef.LayerConstants;
-import org.eclipse.gef.editparts.ScalableRootEditPart;
-import org.eclipse.gef.tools.SelectionTool;
-import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.XSDMenuListener;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.ConnectionRenderingFigure;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.IConnectionRenderingViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.CenterLayout;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-
-/**
- * @author ernest
- *
- * To change this generated comment go to 
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-public abstract class BaseGraphicalViewer extends ScrollingGraphicalViewer implements IConnectionRenderingViewer
-{
-  protected FigureCanvasKeyboardHandler figureCanvasKeyboardHandler;
-
-  protected EditDomain editDomain;
-
-  protected boolean isInputEnabled = true;
-
-  protected boolean isSelectionEnabled = true;
-
-  protected ISelectionProvider menuSelectionProvider;
-
-  protected GraphContextMenuProvider menuProvider;
-
-  protected XSDEditor editor;
-
-  protected XSDConcreteComponent input;
-
-  protected ConnectionRenderingFigure connectionRenderingFigure;
-
-  public BaseGraphicalViewer(XSDEditor editor, ISelectionProvider selectionProvider)
-  {
-    super();
-    this.editor = editor;
-    menuSelectionProvider = selectionProvider;
-  }
-  
-  public ConnectionRenderingFigure getConnectionRenderingFigure()
-  {
-    return connectionRenderingFigure;
-  }
-
-  public void setInputEnabled(boolean enabled)
-  {
-    isInputEnabled = enabled;
-  }
-
-  public void setSelectionEnabled(boolean enabled)
-  {
-    isSelectionEnabled = enabled;
-  }
-
-  public XSDMenuListener getMenuListener()
-  {
-    return menuProvider.getMenuListener();
-  }
-
-  protected static Color white = null;
-  protected void hookControl()
-  {                     
-    super.hookControl();
-  
-    if (white == null)
-    {
-      white = new Color(getControl().getDisplay(), 255, 255, 255);
-    }
-    getControl().setBackground(white); 
-  
-    editDomain = new DefaultEditDomain(null);
-    ((DefaultEditDomain)editDomain).setDefaultTool(new SelectionTool());
-    editDomain.loadDefaultTool();
-    editDomain.addViewer(this);
-  
-    //jvh - gef port - moved this from below so it is available when adding context menu below
-    menuProvider = new GraphContextMenuProvider(this, menuSelectionProvider);
-    setContextMenu(menuProvider);
-  
-    // add context menu to the graph
-    MenuManager manager = new MenuManager();
-    manager.addMenuListener(getMenuListener());  //jvh - gef port
-    manager.setRemoveAllWhenShown(true);
-    Menu menu = manager.createContextMenu(getControl());
-    getControl().setMenu(menu);
-    
-    // enable popupMenus extension
-    //BUG 68938 eclipse bug fixed. Bug 112955 - Filter out menu contributions.
-    editor.getEditorSite().registerContextMenu("org.eclipse.wst.xsd.ui.popup.graph", manager, menuSelectionProvider, false);
-    
-//    KeyAdapter keyListener = new KeyAdapter()
-//    {
-//      /**
-//       * @see org.eclipse.swt.events.KeyAdapter#keyReleased(KeyEvent)
-//       */
-//      public void keyReleased(KeyEvent e)
-//      {
-//        if (e.character == SWT.DEL)
-//        {
-//          getMenuListener().getDeleteAction().run();
-//        }
-//      }
-//    };
-  
-    setKeyHandler(new XSDGraphicalViewerKeyHandler(this).setParent(new KeyHandler()));
-    
-//    getControl().addKeyListener(keyListener);
-
-    figureCanvasKeyboardHandler = new FigureCanvasKeyboardHandler(this);
-    getFigureCanvas().addKeyListener(figureCanvasKeyboardHandler);
-    
-  	getRootEditPart().activate();		
-                       
-  	ScalableRootEditPart graphicalRootEditPart = (ScalableRootEditPart)getRootEditPart();
-     
-    // set the layout for the primary layer so that the children are always centered
-    //
-    graphicalRootEditPart.getLayer(LayerConstants.PRIMARY_LAYER).setLayoutManager(new CenterLayout());
-  
-    // add the ConnectionRenderingFigure which is responsible for drawing all of the lines in the view
-    //                       
-    IFigure figure = graphicalRootEditPart.getLayer(LayerConstants.HANDLE_LAYER);
-    figure.setLayoutManager(new StackLayout());          
-    connectionRenderingFigure = new ConnectionRenderingFigure(graphicalRootEditPart.getLayer(LayerConstants.PRIMARY_LAYER));      
-    figure.add(connectionRenderingFigure);
-  
-    figure.validate();      
-  }
-
-  public XSDConcreteComponent getInput()
-  {
-    return input;
-  }
-
-  protected EditPart getEditPart(EditPart parent, Object object)
-  {
-    EditPart result = null;
-    for (Iterator i = parent.getChildren().iterator(); i.hasNext(); )
-    {
-      EditPart editPart = (EditPart)i.next();
-      if (editPart.getModel() == object)
-      {  
-        result = editPart;
-        break;
-      }
-    }             
-  
-    if (result == null)
-    { 
-      for (Iterator i = parent.getChildren().iterator(); i.hasNext(); )
-      {
-        EditPart editPart = getEditPart((EditPart)i.next(), object);
-        if (editPart != null)
-        {
-          result = editPart;
-          break;
-        }
-      }            
-    }
-  
-    return result;
-  }
-  
-  public abstract void setInput(XSDConcreteComponent comp);
-  
-  public abstract void setSelection(XSDConcreteComponent comp);
-  
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/FigureCanvasKeyboardHandler.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/FigureCanvasKeyboardHandler.java
deleted file mode 100644
index 012e15e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/FigureCanvasKeyboardHandler.java
+++ /dev/null
@@ -1,125 +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.graph;
-
-import org.eclipse.draw2d.FigureCanvas;
-import org.eclipse.draw2d.RangeModel;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.CategoryEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.TopLevelComponentEditPart;
-
-public class FigureCanvasKeyboardHandler extends KeyAdapter
-{
-  public static final int H_SCROLL_INCREMENT = 5;
-  public static final int V_SCROLL_INCREMENT = 30;
-
-  BaseGraphicalViewer viewer;
-  
-  /**
-   * Constructor for FigureCanvasKeyboardHandler.
-   */
-  public FigureCanvasKeyboardHandler(BaseGraphicalViewer viewer)
-  {
-    super();
-    this.viewer = viewer;
-  }
-
-  public void keyPressed(KeyEvent e)
-  {
-    Widget w = e.widget;
-    if (w instanceof FigureCanvas)
-    {
-      processKey(e.keyCode, (FigureCanvas)w);
-      update();
-    }
-  }
-
-  private void processKey(int keyCode, FigureCanvas figureCanvas)
-  {
-    switch (keyCode)
-    {
-      case SWT.ARROW_DOWN :
-        scrollVertical(figureCanvas, false);
-        break;
-      case SWT.ARROW_UP :
-        scrollVertical(figureCanvas, true);
-        break;
-      case SWT.ARROW_LEFT :
-        scrollHorizontal(figureCanvas, true);
-        break;
-      case SWT.ARROW_RIGHT :
-        scrollHorizontal(figureCanvas, false);
-        break;
-      case SWT.PAGE_UP :
-        scrollPage(figureCanvas, true);
-        break;
-      case SWT.PAGE_DOWN :
-        scrollPage(figureCanvas, false);
-        break;
-    }
-  }
-
-  private int verifyScrollBarOffset(RangeModel model, int value)
-  {
-    value = Math.max(model.getMinimum(), value);
-    return Math.min(model.getMaximum() - model.getExtent(), value);
-  }
-
-  private void scrollVertical(FigureCanvas figureCanvas, boolean up)
-  {
-    Point location = figureCanvas.getViewport().getViewLocation();
-    int vOffset = up ? -V_SCROLL_INCREMENT : V_SCROLL_INCREMENT;
-    int x = verifyScrollBarOffset(figureCanvas.getViewport().getHorizontalRangeModel(), location.x);
-    int y = verifyScrollBarOffset(figureCanvas.getViewport().getVerticalRangeModel(), location.y + vOffset);
-    figureCanvas.scrollSmoothTo(x, y);
-  }
-
-  private void scrollHorizontal(FigureCanvas figureCanvas, boolean left)
-  {
-    Point location = figureCanvas.getViewport().getViewLocation();
-    int hOffset = left ? -H_SCROLL_INCREMENT : H_SCROLL_INCREMENT;
-    int x = verifyScrollBarOffset(figureCanvas.getViewport().getHorizontalRangeModel(), location.x + hOffset);
-    int y = verifyScrollBarOffset(figureCanvas.getViewport().getVerticalRangeModel(), location.y);
-    figureCanvas.scrollSmoothTo(x, y);
-  }
-
-  private void scrollPage(FigureCanvas figureCanvas, boolean up)
-  {
-    Rectangle clientArea = figureCanvas.getClientArea();
-    int increment = up ? -clientArea.height : clientArea.height;
-    Point location = figureCanvas.getViewport().getViewLocation();
-    int x = verifyScrollBarOffset(figureCanvas.getViewport().getHorizontalRangeModel(), location.x);
-    int y = verifyScrollBarOffset(figureCanvas.getViewport().getVerticalRangeModel(), location.y + increment);
-    figureCanvas.scrollSmoothTo(x, y);
-  }
-  
-  private void update()
-  {
-    StructuredSelection s = (StructuredSelection)viewer.getSelection();
-    Object newSelectedEditPart = s.getFirstElement();
-
-    if (newSelectedEditPart instanceof TopLevelComponentEditPart)
-    {
-      TopLevelComponentEditPart topLevel = (TopLevelComponentEditPart) newSelectedEditPart;
-      CategoryEditPart categoryEP = (CategoryEditPart) topLevel.getParent();
-      categoryEP.scrollTo(topLevel);
-      viewer.reveal((TopLevelComponentEditPart)newSelectedEditPart);
-    }                           
-  }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphContextMenuProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphContextMenuProvider.java
deleted file mode 100644
index dc539e2..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphContextMenuProvider.java
+++ /dev/null
@@ -1,56 +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.graph;
-
-import org.eclipse.gef.ContextMenuProvider;
-import org.eclipse.gef.EditPartViewer;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.XSDMenuListener;
-
-
-public class GraphContextMenuProvider extends ContextMenuProvider
-{
-
-  XSDMenuListener xsdMenuListener;
-  
-  /**
-   * Constructor for GraphContextMenuProvider.
-   * @param selectionProvider
-   * @param editor
-   */
-  public GraphContextMenuProvider(
-    EditPartViewer viewer,
-    ISelectionProvider selectionProvider)
-  {
-    super(viewer);
-    this.viewer = viewer;
-    xsdMenuListener = new XSDMenuListener(selectionProvider);
-    xsdMenuListener.setSourceContext(viewer);
-  }
-
-  public XSDMenuListener getMenuListener()
-  {
-      return xsdMenuListener;
-  }
-
-  
-  /**
-   * @see org.eclipse.gef.ui.parts.ContextMenuProvider#buildContextMenu(org.eclipse.jface.action.IMenuManager, org.eclipse.gef.EditPartViewer)
-   */
-  public void buildContextMenu(IMenuManager arg0)
-  {
-    xsdMenuListener.menuAboutToShow(arg0);
-  }
-  
-  protected EditPartViewer viewer;
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphicsConstants.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphicsConstants.java
deleted file mode 100644
index 691996d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/GraphicsConstants.java
+++ /dev/null
@@ -1,36 +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.graph;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * A collection of color-related constants.
- */
-public interface GraphicsConstants 
-{                          
-  public final static Display display = Display.getDefault();
-  public final static Color categoryBorderColor     = new Color(null, 118, 134, 164);
-  public final static Color elementBorderColor      = new Color(null, 138, 154, 184);
-  public final static Color elementBackgroundColor  = new Color(null, 236, 242, 252);  
-  public final static Color elementLabelColor       = new Color(null,  80,  96, 144);
-  public final static Color readOnlyBorderColor     = new Color(null, 164, 164, 164); 
-
-  public final static Color readOnlyBackgroundColor = ColorConstants.white;
-
-  public final static Font  smallFont               = new Font(Display.getCurrent(), "Small Fonts", 6, SWT.NONE); 
-  public final static Font  medium                  = new Font(Display.getCurrent(), "Tahoma", 8, SWT.NONE); 
-  public final static Font  mediumBoldFont          = new Font(Display.getCurrent(), "Tahoma", 8, SWT.BOLD); 
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/LinkedGraphViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/LinkedGraphViewer.java
deleted file mode 100644
index 73e21aa..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/LinkedGraphViewer.java
+++ /dev/null
@@ -1,160 +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.graph;
-
-import java.util.Iterator;
-
-import org.eclipse.gef.EditPart;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.w3c.dom.Element;
-
-
-
-public class LinkedGraphViewer
-{
-  
-  protected ISelectionProvider menuSelectionProvider;
-  protected XSDEditor editor;
-  protected BaseGraphicalViewer majorViewer, minorViewer;
-  
-  /**
-   * 
-   */
-  public LinkedGraphViewer(XSDEditor editor, ISelectionProvider selectionProvider)
-  {
-    menuSelectionProvider = selectionProvider;
-    this.editor = editor;
-  }
-
-  public void setMajorViewer(BaseGraphicalViewer majorViewer)
-  {
-    this.majorViewer = majorViewer;
-  }
-
-  public void setMinorViewer(BaseGraphicalViewer minorViewer)
-  {
-    this.minorViewer = minorViewer;
-  }
-  
-  protected Composite control;
-  protected SashForm sashForm;
-  
-  public Control createControl(Composite parent)
-  {
-    //control = new Composite(parent, SWT.DEFAULT);
-   
-    control = sashForm = new SashForm(parent, SWT.VERTICAL | SWT.BORDER);
-    sashForm.setLayoutData(ViewUtility.createFill());
-    
-    majorViewer.createControl(sashForm);
-    minorViewer.createControl(sashForm);
-//    control.setLayout(new GridLayout());
-//    control.setLayoutData(ViewUtility.createFill());
-    return control;
-  }
-  
-  public void addSelectionChangedListener(ISelectionChangedListener selectionListener)
-  {
-    if (majorViewer != null)
-    {
-      majorViewer.addSelectionChangedListener(selectionListener);
-      majorViewer.addSelectionChangedListener(majorViewerListener);
-    }
-    if (minorViewer != null)
-    {
-      minorViewer.addSelectionChangedListener(selectionListener);
-    }
-  }
-  
-  /**
-   * @return Composite
-   */
-  public Composite getControl()
-  {
-    return control;
-  }
-
-  /**
-   * 
-   */
-  protected XSDConcreteComponent getInput()
-  {
-    return majorViewer.getInput();
-  }
-
-  /**
-   * @param schema
-   */
-  protected void setInput(XSDConcreteComponent input)
-  {
-    majorViewer.setInput(input);
-    minorViewer.setInput(input);
-  }
-
-  /**
-   * @param component
-   */
-  public void setSelection(XSDConcreteComponent component)
-  {
-    majorViewer.setSelection(component);
-  }
-
-  protected MajorViewerSelectionChangedListener majorViewerListener = new MajorViewerSelectionChangedListener();
-  
-  private class MajorViewerSelectionChangedListener implements ISelectionChangedListener
-  {
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
-     */
-    public void selectionChanged(SelectionChangedEvent event)
-    {
-      ISelection editPartSelection = event.getSelection();
-      if (editPartSelection instanceof IStructuredSelection)
-      {
-        for (Iterator i = ((IStructuredSelection)editPartSelection).iterator(); i.hasNext(); )
-        {
-          EditPart editPart = (EditPart)i.next();
-          if (editPart != null)
-          {
-            Object model = editPart.getModel();
-            if (model instanceof XSDConcreteComponent)
-            {
-              Element element = ((XSDConcreteComponent)model).getElement();
-
-              // this test ensures that we don't attempt to select an element for an external schema
-              //
-              if (element instanceof IDOMNode)
-              {
-                // now update the minor viewer based on the selected component in the major viewer
-                minorViewer.setInput((XSDConcreteComponent)model);
-                minorViewer.setSelection((XSDConcreteComponent)model);
-              }
-            }
-          }
-        }
-      }                
-    }
-
-  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/PrintGraphAction.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/PrintGraphAction.java
deleted file mode 100644
index 53df913..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/PrintGraphAction.java
+++ /dev/null
@@ -1,84 +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.graph;
-             
-import org.eclipse.jface.action.Action;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.printing.PrintDialog;
-import org.eclipse.swt.printing.Printer;
-import org.eclipse.swt.printing.PrinterData;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-
-
-public class PrintGraphAction extends Action
-{ 
-  protected XSDComponentViewer componentViewer;
-
-  public PrintGraphAction(XSDComponentViewer componentViewer)
-  {
-    super("Print");
-    this.componentViewer = componentViewer;
-  } 
-
-  public void run()
-  {
-    try
-    {
-      PrintDialog dialog = new PrintDialog(Display.getCurrent().getActiveShell());
-      PrinterData data = dialog.open();
-      Printer printer = new Printer(data);
-                                                   
-      Control control = componentViewer.getControl();
-      Display display = Display.getCurrent();
-      Image graphImage = new Image(display, control.getSize().x, control.getSize().y);
-      GC graphGC = new GC(control);
-      graphGC.copyArea(graphImage, 0, 0);
-        
-      ImageData graphImageData = graphImage.getImageData();
-      graphImageData.transparentPixel = -1;
-        
-      Point screenDPI = display.getDPI();
-      Point printerDPI = printer.getDPI();
-      int scaleFactor = printerDPI.x / screenDPI.x;
-      Rectangle trim = printer.computeTrim(0, 0, 0, 0);
-      if (printer.startJob("Print XML Schema Graph")) 
-      {
-        GC gc = new GC(printer);
-        if (printer.startPage()) 
-        {
-          gc.drawImage(
-            graphImage,
-            0,
-            0,
-            graphImageData.width,
-            graphImageData.height,
-            -trim.x,
-            -trim.y,
-            scaleFactor * graphImageData.width,
-            scaleFactor * graphImageData.height);
-          printer.endPage();
-        }
-        printer.endJob();
-      }
-      printer.dispose();
-      graphGC.dispose();
-    }    
-    catch (Exception e)
-    {
-      e.printStackTrace();
-    }
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDComponentViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDComponentViewer.java
deleted file mode 100644
index a8a0525..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDComponentViewer.java
+++ /dev/null
@@ -1,104 +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.graph;
-             
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ComponentViewerRootEditPart;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-
-
-public class XSDComponentViewer extends BaseGraphicalViewer
-{               
-  protected ComponentViewerRootEditPart componentViewerRootEditPart;
-  public XSDComponentViewer(XSDEditor editor, ISelectionProvider menuSelectionProvider)
-  {
-    super(editor, menuSelectionProvider);       
-  }        
-
-  public void setInput(XSDConcreteComponent component)
-  {               
-    if (isInputEnabled)
-    {
-      input = null;         
-
-      if (component instanceof XSDElementDeclaration || 
-          component instanceof XSDSchema ||
-          component instanceof XSDModelGroup ||   
-          component instanceof XSDModelGroupDefinition ||
-          component instanceof XSDComplexTypeDefinition)
-      {            
-        input = component;
-      }
-      
-      componentViewerRootEditPart.setInput(input);
-      if (!(input instanceof XSDSchema))
-      {
-        editor.getGraphViewer().backButton.setEnabled(true);
-      }
-    }
-  }     
-
-  public void setSelection(XSDConcreteComponent component)
-  {                    
-    if (isSelectionEnabled)
-    {                      
-      //System.out.println("XSDComponentViewer.setSelection(" + component + ")");
-      List editPartList = new ArrayList();    
-      if (component instanceof XSDElementDeclaration || 
-          component instanceof XSDSchema ||
-          component instanceof XSDModelGroup ||        
-          component instanceof XSDModelGroupDefinition ||
-          component instanceof XSDComplexTypeDefinition)
-      {                     
-        if (component != null)
-        {
-          EditPart editPart = getEditPart(componentViewerRootEditPart, component);    
-          if (editPart != null)
-          { 
-            // TODO ... take a look at this to figure our why a newly added component
-            // seems to have the wrong bounds at this point... is this a layout issue?           
-            // As a temp hack I'm ignoring the selection of component with bounds (x, y) == (0, 0)
-            // Perhaps a delayed selection is required?
-            Rectangle bounds = ((GraphicalEditPart)editPart).getFigure().getBounds();
-            if (bounds.x > 0 || bounds.y > 0)
-            {
-              editPartList.add(editPart); 
-            }
-          } 
-        }    
-      }              
-      setSelection(new StructuredSelection(editPartList));
-    }
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.gef.ui.parts.AbstractEditPartViewer#hookControl()
-   */
-  protected void hookControl()
-  {
-    super.hookControl();
-    componentViewerRootEditPart = new ComponentViewerRootEditPart();
-    setContents(componentViewerRootEditPart);
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphUtil.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphUtil.java
deleted file mode 100644
index f66c279..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphUtil.java
+++ /dev/null
@@ -1,35 +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.graph;
-
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.w3c.dom.Element;
-              
-
-public class XSDGraphUtil
-{                        
-  public static boolean isEditable(Object model)
-  {                    
-    boolean result = false;
-    if (model instanceof XSDConcreteComponent)
-    {
-      Element element = ((XSDConcreteComponent)model).getElement();
-      // this test ensures that we don't attempt to select an element for an external schema
-      //
-      if (element instanceof IDOMNode)
-      {
-         result = true;
-      }
-    }                      
-    return result;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphViewer.java
deleted file mode 100644
index 95bcd15..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphViewer.java
+++ /dev/null
@@ -1,460 +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.graph;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.gef.EditPart;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.custom.ViewForm;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.ui.part.PageBook;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.XSDSelectionManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.TopLevelComponentEditPart;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-import org.eclipse.xsd.XSDAttributeGroupContent;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.Text;
-public class XSDGraphViewer implements ISelectionChangedListener
-{
-  protected PageBook pageBook;
-  protected Control componentViewerControl;
-  protected Control inheritanceViewerControl;
-  protected Control subGroupsViewerControl;
-  protected XSDComponentViewer componentViewer;
-  protected XSDInheritanceViewer inheritanceViewer;
-  protected XSDSubstitutionGroupsViewer subGroupsViewer;
-  protected XSDSelectionManager xsdSelectionManager;
-  protected XSDSchema schema;
-  protected InternalSelectionProvider internalSelectionProvider = new InternalSelectionProvider();
-  protected XSDEditor editor;
-  protected PrintGraphAction printGraphAction;
-  protected SashForm sashForm;
-  protected ToolItem backButton;
-
-  public XSDGraphViewer(XSDEditor editor)
-  {
-    super();
-    this.editor = editor;
-  }
-
-  public void setSchema(XSDSchema schema)
-  {
-    this.schema = schema;
-  }
-  ToolBar graphToolBar; // the toolbar at the top of the graph view
-  ToolItem toolItem; // the view tool item
-  ViewForm form; // view form for holding all the views
-  Composite frameBar; // The composite that contains the toolbar
-  Composite c; // temporary blank page. Clean this up when all views completed
-  LinkedGraphViewer linkInheritanceViewer;
-
-  protected void createInheritanceViewer(Composite parent)
-  {
-    linkInheritanceViewer = new LinkedGraphViewer(editor, internalSelectionProvider);
-    BaseGraphicalViewer graphViewer = new XSDInheritanceViewer(editor, internalSelectionProvider);
-    linkInheritanceViewer.setMajorViewer(graphViewer);
-    graphViewer = new XSDComponentViewer(editor, editor.getSelectionManager());
-    linkInheritanceViewer.setMinorViewer(graphViewer);
-    linkInheritanceViewer.createControl(parent);
-  }
-  LinkedGraphViewer linkSubstitutionGroupViewer;
-
-  protected void createSubstitutionGroupViewer(Composite parent)
-  {
-    linkSubstitutionGroupViewer = new LinkedGraphViewer(editor, internalSelectionProvider);
-    BaseGraphicalViewer graphViewer = new XSDSubstitutionGroupsViewer(editor, internalSelectionProvider);
-    linkSubstitutionGroupViewer.setMajorViewer(graphViewer);
-    graphViewer = new XSDComponentViewer(editor, internalSelectionProvider);
-    linkSubstitutionGroupViewer.setMinorViewer(graphViewer);
-    linkSubstitutionGroupViewer.createControl(parent);
-  }
-  static private Color dividerColor;
-
-  public Control createControl(Composite parent)
-  {
-    pageBook = new PageBook(parent, 0);
-    
-    componentViewer = new XSDComponentViewer(editor, editor.getSelectionManager());
-    form = new ViewForm(pageBook, SWT.NONE);
-    frameBar = new Composite(form, SWT.NONE);
-    org.eclipse.swt.layout.GridLayout frameLayout = new org.eclipse.swt.layout.GridLayout();
-    frameLayout.marginWidth = 0;
-    frameLayout.marginHeight = 0;
-    frameBar.setLayout(frameLayout);
-    graphToolBar = new ToolBar(frameBar, SWT.FLAT);
-    graphToolBar.addTraverseListener(new TraverseListener()
-    {
-      public void keyTraversed(TraverseEvent e)
-      {
-        if (e.detail == SWT.TRAVERSE_MNEMONIC)
-          e.doit = false;
-      }
-    });
-    backButton = new ToolItem(graphToolBar, SWT.PUSH);
-    backButton.setImage(XSDEditorPlugin.getXSDImage("icons/back.gif")); //$NON-NLS-1$
-    backButton.setToolTipText(XSDEditorPlugin.getXSDString("_UI_HOVER_BACK_TO_SCHEMA_VIEW")); //$NON-NLS-1$
-    backButton.setEnabled(false);
-    backButton.addSelectionListener(new SelectionAdapter()
-    {
-      public void widgetSelected(SelectionEvent e)
-      {
-        editor.getGraphViewer().setInput(editor.getXSDSchema());
-        editor.getSelectionManager().setSelection(new StructuredSelection(editor.getXSDSchema()));
-      }
-    });
-    form.setTopLeft(frameBar);
-    componentViewerControl = componentViewer.createControl(form);
-    c = ViewUtility.createComposite(form, 1);
-    form.setContent(componentViewerControl);
-    form.setData("layout ratio", new Float(0.65));
-    if (dividerColor == null)
-    {
-      dividerColor = new Color(componentViewerControl.getDisplay(), 143, 141, 138);
-    }
-    pageBook.showPage(form);
-    componentViewer.addSelectionChangedListener(internalSelectionProvider);
-    printGraphAction = new PrintGraphAction(componentViewer);
-    return pageBook;
-  }
-
-  public Action getPrintGraphAction()
-  {
-    return printGraphAction;
-  }
-
-  public void updateDesignLayout(int newLayout)
-  {
-    sashForm.setOrientation(newLayout);
-    sashForm.layout();
-  }
-
-  public SashForm getSashForm()
-  {
-    return sashForm;
-  }
-
-  public void enableDesignView(boolean enable)
-  {
-  }
-
-  public XSDComponentViewer getComponentViewer()
-  {
-    return componentViewer;
-  }
-  
-  public void setBackButtonEnabled(boolean state)
-  {
-    backButton.setEnabled(state);
-  }
-
-  public void setInput(Object object)
-  {
-    if (object instanceof XSDConcreteComponent)
-    {
-      XSDConcreteComponent xsdComp = (XSDConcreteComponent) object;
-      if (xsdComp instanceof XSDSchema)
-      {
-        setBackButtonEnabled(false);
-      }
-      else
-      {
-        setBackButtonEnabled(true);
-      }
-      componentViewer.setInput(xsdComp);
-      componentViewer.setSelection(xsdComp);
-    }   
-  }
-
-  protected boolean isDeleted(XSDConcreteComponent component)
-  {
-    boolean result = false;
-    if (component != null && component.getElement() != null)
-    {
-      result = component.getElement().getParentNode() == null;
-    }
-    return result;
-  }
-
-  public void setSelectionManager(XSDSelectionManager newSelectionManager)
-  {
-    // disconnect from old one
-    if (xsdSelectionManager != null)
-    {
-      xsdSelectionManager.removeSelectionChangedListener(this);
-      internalSelectionProvider.removeSelectionChangedListener(xsdSelectionManager);
-    }
-    xsdSelectionManager = newSelectionManager;
-    // connect to new one
-    if (xsdSelectionManager != null)
-    {
-      xsdSelectionManager.addSelectionChangedListener(this);
-      internalSelectionProvider.addSelectionChangedListener(xsdSelectionManager);
-    }
-  }
-
-  // this method is called by the SelectionManager to notify the graph view
-  // that the editor selection has changed
-  //
-  public void selectionChanged(SelectionChangedEvent event)
-  {
-    // here we check the selection source to ensure that this selection came
-    // from a different view (not from the graph view)
-    if (event.getSource() != getComponentViewer())
-    { 
-      handleSelection(event, true);
-    }
-  }
-
-  protected XSDConcreteComponent getTopLevelComponent(XSDConcreteComponent component)
-  {
-    XSDConcreteComponent prev = component;
-    XSDConcreteComponent container = component;
-    while ( container != null && !(container instanceof XSDSchema))
-    {
-      prev = container;     
-      container = container.getContainer();
-    }
-    return container != null ? prev : null;
-  }
-  
-  // TODO.. we need to clean this method up and add comments to clarify what's going on
-  //
-  protected void handleSelection(SelectionChangedEvent event, boolean isSelectionRequired)
-  {
-    StructuredSelection s = (StructuredSelection)event.getSelection();
-    Object obj = s.getFirstElement();
-    if (obj instanceof XSDConcreteComponent)
-    {
-      XSDConcreteComponent selectedComponent = (XSDConcreteComponent)obj;
-      Object currentInput = getComponentViewer().getInput();
-      
-      // in this case we're looking at a top level view
-      // so if the selection is a 'non-top-level' component we need to do a set input
-      XSDSchema topLevelSchema = null;
-      if (currentInput instanceof XSDSchema)
-      {
-        if (selectedComponent instanceof XSDSchema || 
-            selectedComponent.getContainer() instanceof XSDSchema)
-        {
-          topLevelSchema = (XSDSchema)currentInput;
-        }
-      }
-      if (selectedComponent instanceof XSDSchemaDirective || 
-          selectedComponent instanceof XSDNotationDeclaration)      
-      {
-        topLevelSchema = selectedComponent.getSchema();
-      }
-      else if (selectedComponent instanceof XSDAttributeGroupContent ||
-               selectedComponent instanceof XSDWildcard)
-      {
-        if (selectedComponent.getContainer() instanceof XSDAttributeGroupDefinition)
-        {
-          topLevelSchema = selectedComponent.getSchema();
-        }
-      }
-      else if (selectedComponent instanceof XSDSimpleTypeDefinition)
-      {
-        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)selectedComponent;
-        EditPart editPart = componentViewer.getEditPart(componentViewer.getRootEditPart(), st);
-        if (editPart == null)
-        {
-          if (st.getContainer() == editor.getXSDSchema())
-          {
-            topLevelSchema = selectedComponent.getSchema();
-          }
-        }
-      }
-      
-      if (topLevelSchema != null)
-      {
-        setInput(topLevelSchema);
-        // TODO... this is not 'quite' right
-        // it should be possible to view in
-      }  
-      else
-      { 
-        EditPart editPart = getComponentViewer().getEditPart(getComponentViewer().getRootEditPart(), obj);
-        if (editPart == null)
-        {  
-          XSDConcreteComponent topLevelComponent = getTopLevelComponent(selectedComponent);
-          if (topLevelComponent != null)
-          {
-            setInput(topLevelComponent);  
-          }
-        }  
-      }  
-      // now we handle the selection
-      //
-      if (isSelectionRequired)
-      {  
-        EditPart editPart = getComponentViewer().getRootEditPart();        
-        EditPart newSelectedEditPart = getComponentViewer().getEditPart(editPart, obj);
-        if (newSelectedEditPart != null)
-        {
-          if (newSelectedEditPart instanceof TopLevelComponentEditPart)
-          {
-            ((TopLevelComponentEditPart)newSelectedEditPart).setScroll(true);
-          }
-          getComponentViewer().setSelection(new StructuredSelection(newSelectedEditPart));
-        }
-      }      
-    }
-    else if (obj instanceof CategoryAdapter)
-    {
-      setInput(((CategoryAdapter)obj).getXSDSchema());  
-    }
-  }
-
-  protected Element getElementNode(Node node)
-  {
-    while (!(node instanceof Element))
-    {
-      if (node instanceof Attr)
-      {
-        node = ((Attr) node).getOwnerElement();
-      }
-      else if (node instanceof Text)
-      {
-        Node sibling = node.getNextSibling();
-        if (sibling == null)
-        {
-          break;
-        }
-        node = sibling;
-      }
-      else
-      {
-        Node parent = node.getParentNode();
-        if (parent == null)
-        {
-          break;
-        }
-        node = node.getParentNode();
-      }
-    }
-    return node instanceof Element ? (Element) node : null;
-  }
-
-
-
-  // This class listens to the graph view and converts edit part selection
-  // events
-  // into XSD component selection events that can be 'fired' to the
-  // selectionManager
-  //
-  class InternalSelectionProvider implements ISelectionProvider, ISelectionChangedListener
-  {
-    protected List listenerList = new ArrayList();
-    protected ISelection selection = new StructuredSelection();
-
-    public void addSelectionChangedListener(ISelectionChangedListener listener)
-    {
-      listenerList.add(listener);
-    }
-
-    public void removeSelectionChangedListener(ISelectionChangedListener listener)
-    {
-      listenerList.remove(listener);
-    }
-
-    public ISelection getSelection()
-    {
-      return selection;
-    }
-
-    protected void notifyListeners(SelectionChangedEvent event)
-    {
-      for (Iterator i = listenerList.iterator(); i.hasNext();)
-      {
-        ISelectionChangedListener listener = (ISelectionChangedListener) i.next();
-        listener.selectionChanged(event);
-      }
-    }
-
-    public StructuredSelection convertSelectionFromEditPartToModel(ISelection editPartSelection)
-    {
-      List selectedModelObjectList = new ArrayList();
-      if (editPartSelection instanceof IStructuredSelection)
-      {
-        for (Iterator i = ((IStructuredSelection) editPartSelection).iterator(); i.hasNext();)
-        {
-          Object obj = i.next();
-          Object model = null;
-          if (obj instanceof EditPart)
-          {
-            EditPart editPart = (EditPart) obj;
-            model = editPart.getModel();
-            // Convert category to XSDSchema
-            // if (editPart instanceof CategoryEditPart)
-            // {
-            //   model = ((Category)((CategoryEditPart)editPart).getModel()).getXSDSchema();
-            // }
-          }
-          else if (obj instanceof XSDConcreteComponent)
-          {
-            //cs .. not sure why would we'd ever hit this case?
-            model = obj;
-          }
-          if (model != null)//&& model instanceof XSDConcreteComponent)
-          {
-            selectedModelObjectList.add(model);
-          }
-        }
-      }
-      return new StructuredSelection(selectedModelObjectList);
-    }
-
-    public void setSelection(ISelection selection)
-    {
-      this.selection = selection;
-    }
-
-    // This method gets called when an edit part in the graph view is selected
-    //
-    public void selectionChanged(SelectionChangedEvent event)
-    {
-      ISelection newSelection = convertSelectionFromEditPartToModel(event.getSelection());
-      this.selection = newSelection;
-      SelectionChangedEvent newEvent = new SelectionChangedEvent(getComponentViewer(), newSelection);
-      notifyListeners(newEvent);
-    }
-  }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphicalViewerKeyHandler.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphicalViewerKeyHandler.java
deleted file mode 100644
index b6c8026..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDGraphicalViewerKeyHandler.java
+++ /dev/null
@@ -1,352 +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.graph;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.PositionConstants;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.ConnectionEditPart;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.GraphicalViewer;
-import org.eclipse.gef.KeyHandler;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ExpandableGraphNodeEditPart;
-
-
-public class XSDGraphicalViewerKeyHandler extends KeyHandler
-{
-    public XSDGraphicalViewerKeyHandler(GraphicalViewer viewer)
-    {
-      this.viewer = viewer;
-    }
-    
-    private WeakReference cachedNode;
-    int counter;
-    private GraphicalViewer viewer;
-
-    private boolean acceptConnection(KeyEvent event)
-    {
-      return event.character == '/'
-        || event.character == '?'
-        || event.character == '\\'
-        || event.character == '|';
-    }
-    private boolean acceptIntoContainer(KeyEvent event)
-    {
-      return (((event.stateMask & SWT.ALT) != 0)
-        && (event.keyCode == SWT.ARROW_RIGHT)) || (event.keyCode == SWT.ARROW_RIGHT);
-//      return (event.keyCode == SWT.ARROW_RIGHT);
-    }
-    private boolean acceptLeaveConnection(KeyEvent event)
-    {
-      int key = event.keyCode;
-      if (getFocus() instanceof ConnectionEditPart)
-        if ((key == SWT.ARROW_UP)
-          || (key == SWT.ARROW_RIGHT)
-          || (key == SWT.ARROW_DOWN)
-          || (key == SWT.ARROW_LEFT))
-          return true;
-      return false;
-    }
-    private boolean acceptLeaveContents(KeyEvent event)
-    {
-      int key = event.keyCode;
-      return getFocus() == getViewer().getContents()
-        && ((key == SWT.ARROW_UP)
-          || (key == SWT.ARROW_RIGHT)
-          || (key == SWT.ARROW_DOWN)
-          || (key == SWT.ARROW_LEFT));
-    }
-    private boolean acceptOutOf(KeyEvent event)
-    {
-      return (((event.stateMask & SWT.ALT) != 0) && (event.keyCode == SWT.ARROW_LEFT)) || (event.keyCode == SWT.ARROW_LEFT);
-//      return (event.keyCode == SWT.ARROW_LEFT);
-    }
-    private ConnectionEditPart findConnection(
-      GraphicalEditPart node,
-      ConnectionEditPart current,
-      boolean forward)
-    {
-      List connections = new ArrayList(node.getSourceConnections());
-      connections.addAll(node.getTargetConnections());
-      if (connections.isEmpty())
-        return null;
-      if (forward)
-        counter++;
-      else
-        counter--;
-      while (counter < 0)
-        counter += connections.size();
-      counter %= connections.size();
-      return (ConnectionEditPart) connections.get(counter % connections.size());
-    }
-    /*
-     * pStart is a point in absolute coordinates.
-     */
-    private GraphicalEditPart findSibling(
-      List siblings,
-      Point pStart,
-      int direction,
-      EditPart exclude)
-    {
-      GraphicalEditPart epCurrent;
-      GraphicalEditPart epFinal = null;
-      IFigure figure;
-      Point pCurrent;
-      int distance = Integer.MAX_VALUE;
-      Iterator iter = siblings.iterator();
-      while (iter.hasNext())
-      {
-        epCurrent = (GraphicalEditPart) iter.next();
-        if (epCurrent == exclude)
-          continue;
-        figure = epCurrent.getFigure();
-        pCurrent = getInterestingPoint(figure);
-        figure.translateToAbsolute(pCurrent);
-        if (pStart.getPosition(pCurrent) != direction)
-          continue;
-        int d = pCurrent.getDistanceOrthogonal(pStart);
-        if (d < distance)
-        {
-          distance = d;
-          epFinal = epCurrent;
-        }
-      }
-      return epFinal;
-    }
-    Point getInterestingPoint(IFigure figure)
-    {
-//      return figure.getBounds().getCenter();
-      return figure.getBounds().getTopLeft();
-    }
-    /**
-     * Returns the cached node.  It is possible that the node is not longer in the viewer but has
-     * not been garbage collected yet.
-     */
-    private GraphicalEditPart getCachedNode()
-    {
-      if (cachedNode == null)
-        return null;
-      if (cachedNode.isEnqueued())
-        return null;
-      return (GraphicalEditPart) cachedNode.get();
-    }
-    GraphicalEditPart getFocus()
-    {
-      return (GraphicalEditPart) getViewer().getFocusEditPart();
-    }
-    List getNavigationSiblings()
-    {
-      return getFocus().getParent().getChildren();
-    }
-    protected GraphicalViewer getViewer()
-    {
-      return viewer;
-    }
-    public boolean keyPressed(KeyEvent event)
-    {
-      if (event.character == ' ')
-      {
-        processSelect(event);
-        return true;
-      }
-      else if (acceptIntoContainer(event))
-      {
-        navigateIntoContainer(event);
-        return true;
-      }
-      else if (acceptOutOf(event))
-      {
-        navigateOut(event);
-        return true;
-      }
-      else if (acceptConnection(event))
-      {
-        navigateConnections(event);
-        return true;
-      }
-      else if (acceptLeaveConnection(event))
-      {
-        navigateOutOfConnection(event);
-        return true;
-      }
-      else if (acceptLeaveContents(event))
-      {
-        navigateIntoContainer(event);
-        return true;
-      }
-      switch (event.keyCode)
-      {
-        case SWT.ARROW_LEFT :
-          return navigateNextSibling(event, PositionConstants.WEST);
-        case SWT.ARROW_RIGHT :
-          return navigateNextSibling(event, PositionConstants.EAST);
-        case SWT.ARROW_UP :
-          return navigateNextSibling(event, PositionConstants.NORTH);
-        case SWT.ARROW_DOWN :
-          return navigateNextSibling(event, PositionConstants.SOUTH);
-        case SWT.HOME :
-          return navigateJumpSibling(event, PositionConstants.WEST);
-        case SWT.END :
-          return navigateJumpSibling(event, PositionConstants.EAST);
-        case SWT.PAGE_DOWN :
-          return navigateJumpSibling(event, PositionConstants.SOUTH);
-        case SWT.PAGE_UP :
-          return navigateJumpSibling(event, PositionConstants.NORTH);
-      }
-      return super.keyPressed(event);
-    }
-    private void navigateConnections(KeyEvent event)
-    {
-      GraphicalEditPart focus = getFocus();
-      ConnectionEditPart current = null;
-      GraphicalEditPart node = getCachedNode();
-      if (focus instanceof ConnectionEditPart)
-      {
-        current = (ConnectionEditPart) focus;
-        if (node == null
-          || (node != current.getSource() && node != current.getTarget()))
-        {
-          node = (GraphicalEditPart) current.getSource();
-          counter = 0;
-        }
-      }
-      else
-      {
-        node = focus;
-      }
-      setCachedNode(node);
-      boolean forward = event.character == '/' || event.character == '?';
-      ConnectionEditPart next = findConnection(node, current, forward);
-      navigateTo(next, event);
-    }
-    private void navigateIntoContainer(KeyEvent event)
-    {
-      GraphicalEditPart focus = getFocus();
-      List childList = focus.getChildren();
-
-      if (focus instanceof ExpandableGraphNodeEditPart)
-      {
-        if (!((ExpandableGraphNodeEditPart)focus).isExpanded())
-        {
-          ((ExpandableGraphNodeEditPart)focus).doPerformExpandOrCollapse();
-        }
-      }
-
-      Point tl = focus.getContentPane().getBounds().getTopLeft();
-      int minimum = Integer.MAX_VALUE;
-      int current;
-      GraphicalEditPart closestPart = null;
-      for (int i = 0; i < childList.size(); i++)
-      {
-        GraphicalEditPart ged = (GraphicalEditPart) childList.get(i);
-        Rectangle childBounds = ged.getFigure().getBounds();
-        current = (childBounds.x - tl.x) + (childBounds.y - tl.y);
-        if (current < minimum)
-        {
-          minimum = current;
-          closestPart = ged;
-        }
-      }
-      if (closestPart != null)
-        navigateTo(closestPart, event);
-    }
-    private boolean navigateJumpSibling(KeyEvent event, int direction)
-    {
-      return false;
-    }
-    private boolean navigateNextSibling(KeyEvent event, int direction)
-    {
-      GraphicalEditPart epStart = getFocus();
-      IFigure figure = epStart.getFigure();
-      Point pStart = getInterestingPoint(figure);
-      figure.translateToAbsolute(pStart);
-      EditPart next =
-        findSibling(getNavigationSiblings(), pStart, direction, epStart);
-      if (next == null)
-        return false;
-      navigateTo(next, event);
-      return true;
-    }
-    private void navigateOut(KeyEvent event)
-    {
-      if (getFocus() == null
-        || getFocus() == getViewer().getContents()
-        || getFocus().getParent() == getViewer().getContents())
-        return;
-
-      EditPart parent = getFocus().getParent();
-      if (((event.stateMask & SWT.ALT) != 0) && (event.keyCode == SWT.ARROW_LEFT))
-      {
-        if ((parent != null) && (parent instanceof ExpandableGraphNodeEditPart))
-        {
-          if (((ExpandableGraphNodeEditPart)parent).isExpanded())
-          {
-            ((ExpandableGraphNodeEditPart)parent).doPerformExpandOrCollapse();
-          }
-        }
-      }
-      navigateTo(parent, event);
-//      navigateTo(getFocus().getParent(), event);
-    }
-    private void navigateOutOfConnection(KeyEvent event)
-    {
-      GraphicalEditPart cached = getCachedNode();
-      ConnectionEditPart conn = (ConnectionEditPart) getFocus();
-      if (cached != null
-        && (cached == conn.getSource() || cached == conn.getTarget()))
-        navigateTo(cached, event);
-      else
-        navigateTo(conn.getSource(), event);
-    }
-    void navigateTo(EditPart part, KeyEvent event)
-    {
-      if (part == null)
-        return;
-      if ((event.stateMask & SWT.SHIFT) != 0)
-      {
-        getViewer().appendSelection(part);
-        getViewer().setFocus(part);
-      }
-      else if ((event.stateMask & SWT.CONTROL) != 0)
-        getViewer().setFocus(part);
-      else
-        getViewer().select(part);
-    }
-    private void processSelect(KeyEvent event)
-    {
-      EditPart part = getViewer().getFocusEditPart();
-      if ((event.stateMask & SWT.CONTROL) != 0
-        && part.getSelected() != EditPart.SELECTED_NONE)
-      {
-        getViewer().deselect(part);
-      }
-      else
-      {
-        getViewer().appendSelection(part);
-      }
-      getViewer().setFocus(part);
-    }
-    private void setCachedNode(GraphicalEditPart node)
-    {
-      if (node == null)
-        cachedNode = null;
-      else
-        cachedNode = new WeakReference(node);
-    }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDInheritanceViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDInheritanceViewer.java
deleted file mode 100644
index de95c0c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDInheritanceViewer.java
+++ /dev/null
@@ -1,97 +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.graph;
-             
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.SubstitutionGroupViewerRootEditPart;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-
-
-public class XSDInheritanceViewer extends BaseGraphicalViewer
-{               
-  protected SubstitutionGroupViewerRootEditPart inheritanceViewerRootEditPart;
-  public XSDInheritanceViewer(XSDEditor editor, ISelectionProvider menuSelectionProvider)
-  {
-    super(editor, menuSelectionProvider);       
-  }        
-
-  public void setInput(XSDConcreteComponent component)
-  {               
-    if (isInputEnabled)
-    {
-      input = null;         
-
-      if (component instanceof XSDSchema ||
-          component instanceof XSDComplexTypeDefinition)
-      {            
-        input = component;
-      }
-      
-      inheritanceViewerRootEditPart.setInput(input);       
-    }
-  }     
-
-  public void setSelection(XSDConcreteComponent component)
-  {                    
-    if (isSelectionEnabled)
-    {                      
-      //System.out.println("XSDComponentViewer.setSelection(" + component + ")");
-      List editPartList = new ArrayList();    
-      if (component instanceof XSDElementDeclaration || 
-          component instanceof XSDSchema ||
-          component instanceof XSDModelGroup ||        
-          component instanceof XSDModelGroupDefinition ||
-          component instanceof XSDComplexTypeDefinition)
-      {                     
-        if (component != null)
-        {
-          EditPart editPart = getEditPart(inheritanceViewerRootEditPart, component);    
-          if (editPart != null)
-          { 
-            // TODO ... take a look at this to figure our why a newly added component
-            // seems to have the wrong bounds at this point... is this a layout issue?           
-            // As a temp hack I'm ignoring the selection of component with bounds (x, y) == (0, 0)
-            // Perhaps a delayed selection is required?
-            Rectangle bounds = ((GraphicalEditPart)editPart).getFigure().getBounds();
-            if (bounds.x > 0 || bounds.y > 0)
-            {
-              editPartList.add(editPart); 
-            }
-          } 
-        }    
-      }              
-      setSelection(new StructuredSelection(editPartList));
-    }
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.gef.ui.parts.AbstractEditPartViewer#hookControl()
-   */
-  protected void hookControl()
-  {
-    super.hookControl();
-    inheritanceViewerRootEditPart = new SubstitutionGroupViewerRootEditPart();
-    setContents(inheritanceViewerRootEditPart);
-  }
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupChildUtility.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupChildUtility.java
deleted file mode 100644
index 9fa84bd..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupChildUtility.java
+++ /dev/null
@@ -1,46 +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.graph;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.xsd.XSDElementDeclaration;
-
-/**
- * @author ernest
- *
- * To change this generated comment go to 
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-public class XSDSubstitutionGroupChildUtility
-{
-
-  /**
-   * @param declaration
-   * @return List
-   */
-  public static List getModelChildren(XSDElementDeclaration declaration)
-  {
-    ArrayList children = new ArrayList();
-    List substitutionGroup = declaration.getSubstitutionGroup();
-    for (int i = 0, size = substitutionGroup.size(); i < size; i++)
-    {
-      XSDElementDeclaration element = (XSDElementDeclaration) substitutionGroup.get(i);
-      if (declaration.equals(element.getSubstitutionGroupAffiliation()))
-      {
-        children.add(element);
-      }
-    }
-    return children;
-    
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupsViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupsViewer.java
deleted file mode 100644
index cd3074f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/XSDSubstitutionGroupsViewer.java
+++ /dev/null
@@ -1,98 +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.graph;
-             
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.SubstitutionGroupViewerRootEditPart;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-
-
-public class XSDSubstitutionGroupsViewer extends BaseGraphicalViewer
-{               
-  protected SubstitutionGroupViewerRootEditPart subGroupViewerRootEditPart;
-  public XSDSubstitutionGroupsViewer(XSDEditor editor, ISelectionProvider menuSelectionProvider)
-  {
-    super(editor, menuSelectionProvider);       
-  }        
-
-  public void setInput(XSDConcreteComponent component)
-  {               
-    if (isInputEnabled)
-    {
-      input = null;         
-
-      if (component instanceof XSDElementDeclaration || 
-          component instanceof XSDSchema)
-      {            
-        input = component;
-      }
-      
-      subGroupViewerRootEditPart.setInput(input);       
-    }
-  }     
-
-  public void setSelection(XSDConcreteComponent component)
-  {                    
-    if (isSelectionEnabled)
-    {                      
-      //System.out.println("XSDComponentViewer.setSelection(" + component + ")");
-      List editPartList = new ArrayList();    
-      if (component instanceof XSDElementDeclaration || 
-          component instanceof XSDSchema ||
-          component instanceof XSDModelGroup ||        
-          component instanceof XSDModelGroupDefinition ||
-          component instanceof XSDComplexTypeDefinition)
-      {                     
-        if (component != null)
-        {
-          EditPart editPart = getEditPart(subGroupViewerRootEditPart, component);    
-          if (editPart != null)
-          { 
-            // TODO ... take a look at this to figure our why a newly added component
-            // seems to have the wrong bounds at this point... is this a layout issue?           
-            // As a temp hack I'm ignoring the selection of component with bounds (x, y) == (0, 0)
-            // Perhaps a delayed selection is required?
-            Rectangle bounds = ((GraphicalEditPart)editPart).getFigure().getBounds();
-            if (bounds.x > 0 || bounds.y > 0)
-            {
-              editPartList.add(editPart); 
-            }
-          } 
-        }    
-      }              
-      setSelection(new StructuredSelection(editPartList));
-    }
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.gef.ui.parts.AbstractEditPartViewer#hookControl()
-   */
-  protected void hookControl()
-  {
-    super.hookControl();
-    subGroupViewerRootEditPart = new SubstitutionGroupViewerRootEditPart();
-    setContents(subGroupViewerRootEditPart);
-  }
-
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/BaseEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/BaseEditPart.java
deleted file mode 100644
index f98da1a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/BaseEditPart.java
+++ /dev/null
@@ -1,86 +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.graph.editparts;
-                                 
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.GraphicsConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.model.ModelAdapterListener;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-
-
-public abstract class BaseEditPart extends AbstractGraphicalEditPart implements ModelAdapterListener, GraphicsConstants, IFeedbackHandler
-{
-	protected boolean isSelected = false;
-	/**
-	 * Activates the <code>EditPart</code> by setting the
-	 * appropriate flags, and activating its children.
-	 * activation signals to the EditPart that is should start observing
-	 * it's model, and that is should support editing at this time.
-	 * An EditPart will have a parent prior to activiation.
-	 * @see #deactivate()
-	 */
-	public void activate() 
-  {
-		super.activate();         
-    XSDModelAdapterFactory.addModelAdapterListener(getModel(), this);  
-	}
-	/** 
-	 * Apart from the deactivation done in super, the source
-	 * and target connections are deactivated, and the visual
-	 * part of the this is removed.
-	 *
-	 * @see #activate() 
-	 */
-	public void deactivate() 
-  {
-    XSDModelAdapterFactory.removeModelAdapterListener(getModel(), this);  
-		super.deactivate();
-	}   
-    
-  protected void createEditPolicies() 
-  {
-  }  
-
-  protected EditPart createChild(Object model) 
-  {
-    return XSDEditPartFactory.getInstance().createEditPart(this, model);
-  } 
-
-  public void propertyChanged(Object object, String property)
-  {                                                                                                  
-    refresh(); 
-  }    
-
-  //public BaseGraphicalViewer getBaseGraphicalViewer()
-  //{
-  //  return (BaseGraphicalViewer)getViewer();
-  //}
-
-  public IFigure getSelectionFigure()
-  {
-    return getFigure();
-  }
-  
-  
-  public void addFeedback()
-  {
-    isSelected = true;
-    refreshVisuals();
-  }
-
-  public void removeFeedback()
-  {
-    isSelected = false;
-    refreshVisuals();
-  }  
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/CategoryEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/CategoryEditPart.java
deleted file mode 100644
index afffaad..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/CategoryEditPart.java
+++ /dev/null
@@ -1,187 +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.graph.editparts;
-                           
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.ScrollPane;
-import org.eclipse.draw2d.Viewport;
-import org.eclipse.draw2d.ViewportLayout;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.GraphicsConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.wst.xsd.ui.internal.graph.model.Category;
-
-
-public class CategoryEditPart extends BaseEditPart
-{
-  protected ScrollPane scrollpane;
-  protected Label label;
-  protected ContainerFigure outerPane, r;
-  protected SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy;
-
-  public int getType()
-  {
-    return ((Category)getModel()).getGroupType();
-  }
-
-  protected IFigure createFigure()
-  {           
-    outerPane = new ContainerFigure();    
-    outerPane.setBorder(new RoundedLineBorder(1, 6));
-    outerPane.setForegroundColor(categoryBorderColor);
-
-    r = new ContainerFigure();  
-    r.setOutline(false);
-    r.setMinimumSize(new Dimension(0, 0));
-    r.setFill(true);
-    r.setBackgroundColor(GraphicsConstants.elementBackgroundColor);
-    outerPane.add(r);
-    
-    int minHeight = 250;
-    switch (getType())
-    {
-    	case Category.DIRECTIVES :
-		case Category.NOTATIONS :
-		{
-			minHeight = 50;
-			break;	
-		}
-		case Category.ATTRIBUTES :
-		case Category.GROUPS :		  
-		{
-			minHeight = 100;
-			break;
-		}
-    }
-    
-	final int theMinHeight = minHeight;
-    FillLayout outerLayout = new FillLayout()
-    {
-      protected Dimension calculatePreferredSize(IFigure parent, int width, int height)
-      {
-        Dimension d = super.calculatePreferredSize(parent, width, height);
-        d.union(new Dimension(100, theMinHeight));
-        return d;
-      }
-    };
-    //outerLayout.setHorizontal(false);
-    outerPane.setLayoutManager(outerLayout);
-    
-   
-    label = new Label();
-    label.setForegroundColor(ColorConstants.black);
-    label.setBorder(new MarginBorder(2, 4, 2, 4));
-    r.add(label); //Holder);
-
-    RectangleFigure line = new RectangleFigure();
-    line.setPreferredSize(20, 1);
-    outerPane.add(line);
-
-
-    scrollpane = new ScrollPane();
-    scrollpane.setForegroundColor(ColorConstants.black);
-    scrollpane.setVerticalScrollBarVisibility(ScrollPane.AUTOMATIC); //ScrollPane.ALWAYS);
-    outerPane.add(scrollpane);
-
-    ContainerFigure pane = new ContainerFigure();
-    pane.setBorder(new MarginBorder(5, 8, 5, 8));
-    ContainerLayout layout = new ContainerLayout();
-    layout.setHorizontal(false);
-    layout.setSpacing(0);
-    pane.setLayoutManager(layout);
-
-    Viewport viewport = new Viewport();
-    viewport.setContentsTracksHeight(true);
-    ViewportLayout viewportLayout = new ViewportLayout()
-    {
-      protected Dimension calculatePreferredSize(IFigure parent, int width, int height)
-      {
-        Dimension d = super.calculatePreferredSize(parent, width, height);
-        d.height = Math.min(d.height, theMinHeight - 25); //getViewer().getControl().getBounds().height);
-        return d;
-      }
-    };
-    viewport.setLayoutManager(viewportLayout);
-
-    scrollpane.setViewport(viewport);
-    scrollpane.setContents(pane);
-
-    return outerPane;
-  }  
-
-  protected List getModelChildren() 
-  {            
-    return ((Category)getModel()).getChildren();
-  }  
-        
-  public void refreshVisuals()
-  {
-    outerPane.setBorder(new RoundedLineBorder(isSelected ? ColorConstants.black : categoryBorderColor, isSelected ? 1 : 1, 6));
-    outerPane.repaint();
-// Uncomment this for coloured titles
-//    r.setBackgroundColor(isSelected ? ColorConstants.blue : GraphicsConstants.elementBackgroundColor);
-//    label.setForegroundColor(isSelected ? ColorConstants.white : ColorConstants.black);
-//    r.repaint();
-//    outerPane.setForegroundColor(isSelected ? ColorConstants.black : elementBorderColor);
-    
-    Category category = (Category)getModel();
-    // temp hack --- added empty space to make the min width of groups bigger  
-    label.setText("  " + category.getName() + "                                                    ");
-  } 
-  
-  public ScrollPane getScrollPane()
-  {
-    return scrollpane;
-  }
-  
-  public IFigure getContentPane()
-  {
-    return scrollpane.getContents();
-  }  
-
-  public void scrollTo(AbstractGraphicalEditPart topLevel)
-  {
-    Rectangle topLevelBounds = topLevel.getFigure().getBounds();
-    Rectangle categoryBounds = getFigure().getBounds();
-    int scrollValue = scrollpane.getVerticalScrollBar().getValue();
-    int location = topLevelBounds.y + scrollValue - categoryBounds.y;
-    scrollpane.scrollVerticalTo(location - categoryBounds.height/2);
-  }
-
-  protected EditPart createChild(Object model)
-  {
-    EditPart editPart = new TopLevelComponentEditPart();
-    editPart.setModel(model);
-    editPart.setParent(this);
-    return editPart;
-  }
-  
-  protected void createEditPolicies()
-  { 
-    selectionHandlesEditPolicy = new SelectionHandlesEditPolicyImpl();
-    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionHandlesEditPolicy);   
-  }  
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeDefinitionEditPart.java
deleted file mode 100644
index 620cdc5..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeDefinitionEditPart.java
+++ /dev/null
@@ -1,214 +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.graph.editparts;
-                                      
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.gef.requests.LocationRequest;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.CenteredIconFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-
-              
-
-public class ComplexTypeDefinitionEditPart extends GraphNodeEditPart
-{
-  protected ContainerFigure contentFigure;   
-  protected Label label;     
-  protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
-  protected CenteredIconFigure centeredIconFigure;  
-  protected RectangleFigure preceedingSpace;  
-  protected ContainerFigure contentPane;
-
-  public XSDComplexTypeDefinition getXSDComplexTypeDefinition()
-  {         
-    return (XSDComplexTypeDefinition)getModel();
-  }  
-
-  protected boolean isConnectedEditPart()
-  {
-    return false;
-  } 
-
-  protected GraphNodeFigure createGraphNodeFigure()  
-  {
-    GraphNodeFigure figure = new GraphNodeFigure();
-
-    figure.getOutlinedArea().setBorder(new RoundedLineBorder(1, 6));
-    figure.getOutlinedArea().setFill(true);
-    figure.getOutlinedArea().setLayoutManager(new FillLayout(true));
-
-    figure.getInnerContentArea().getContainerLayout().setHorizontal(true);
-
-    preceedingSpace = new RectangleFigure();
-    preceedingSpace.setVisible(false);
-    figure.getInnerContentArea().add(preceedingSpace, 0);
-
-    contentPane = new ContainerFigure();
-    contentPane.getContainerLayout().setHorizontal(false); 
-    contentPane.getContainerLayout().setSpacing(5);   
-    contentPane.setBorder(new MarginBorder(5, 5, 5, 5));
-    figure.getInnerContentArea().add(contentPane);
-    
-    label = new Label();    
-    label.setBorder(new MarginBorder(0, 5, 5, 5));
-    figure.getIconArea().add(label);     
-    label.setFont(mediumBoldFont);
- 
-    figure.getInnerContentArea().getContainerLayout().setSpacing(5);   
-    figure.getInnerContentArea().setBorder(new MarginBorder(5, 5, 5, 5));
-    
-    return figure;
-  }      
-                                                                    
-  protected EditPart createChild(Object model) 
-  {   
-    EditPart editPart = null;                                     
-    if (model == getModel())
-    {
-      editPart = new ComplexTypeInheritedContentEditPart();
-      editPart.setModel(model);
-      editPart.setParent(this);
-    }
-    else
-    {
-      editPart = super.createChild(model);
-    }            
-    return editPart;
-  } 
-
-  protected List getModelChildren() 
-  {                           
-    List list = new ArrayList();
-
-    XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)getModel();
-
-    if (ct.getDerivationMethod().getName().equals("extension"))
-    {
-      list.add(getModel());
-    }  
-
-    list.addAll(XSDChildUtility.getModelChildren(getModel()));
-    return list;
-  }
-
-  public IFigure getContentPane()  
-  {
-    return contentPane;
-  }
-                        
-  protected void refreshVisuals()
-  { 
-    XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)getModel();                   
-
-    String name = ctd.getName();
-    if (name == null)
-    {
-      try
-      {
-        if (label != null)
-        {
-          graphNodeFigure.getIconArea().remove(label);
-        }
-        label = null;
-      }
-      catch (Exception e)
-      {
-      }
-    }
-    else
-    {
-      if (label == null)
-      {
-        label = new Label();    
-        label.setBorder(new MarginBorder(0, 5, 5, 5));
-        ((GraphNodeFigure)getFigure()).getIconArea().add(label);     
-        label.setFont(mediumBoldFont);
-      }
-      graphNodeFigure.getIconArea().add(label);
-      label.setText(name);
-    }
-
-    // provides some room if we need to draw lines for the inherited
-    boolean includesInheritedContent = getModelChildren().contains(getModel());
-    preceedingSpace.setPreferredSize(includesInheritedContent ? new Dimension(10, 1) : new Dimension(0, 0));
-
-    if (XSDGraphUtil.isEditable(getModel()))
-    { 
-      graphNodeFigure.setForegroundColor(isSelected ? ColorConstants.black : elementBorderColor);
-      if (label != null)
-      label.setForegroundColor(elementBorderColor);
-    }
-    else
-    {
-      graphNodeFigure.setForegroundColor(isSelected ? ColorConstants.black : readOnlyBorderColor);
-      if (label != null)
-      label.setForegroundColor(readOnlyBorderColor);
-    }
-  }
-             
-  protected void performDirectEdit()
-  {  
-    ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, (XSDComplexTypeDefinition)getModel());   
-    simpleDirectEditPolicy.setDelegate(manager);
-    manager.show();
-  }    
-            
-
-  protected void createEditPolicies()
-  {  
-    super.createEditPolicies();
-  	installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
-  } 
-       
-
-  public void performRequest(Request request)
-  {
-  	if (request.getType() == RequestConstants.REQ_DIRECT_EDIT ||
-        request.getType() == RequestConstants.REQ_OPEN)
-    {     
-      if (XSDGraphUtil.isEditable(getModel()))
-      {                 
-        LocationRequest locationRequest = (LocationRequest)request;
-        Point p = locationRequest.getLocation();
-        
-        if (label != null && hitTest(label, p))
-        {
-  		    performDirectEdit();
-        }
-      }
-    }
-  }
-  
-  public void doEditName()
-  {
-    performDirectEdit();
-  }
-} 
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeInheritedContentEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeInheritedContentEditPart.java
deleted file mode 100644
index 0295265..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComplexTypeInheritedContentEditPart.java
+++ /dev/null
@@ -1,149 +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.graph.editparts;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-
-// This is a dashed box that displays the inherited content of a complex type
-//
-public class ComplexTypeInheritedContentEditPart extends BaseEditPart
-{
-  protected Label label;     
-  protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
-  protected boolean isParentExpanded;
-               
-  public ComplexTypeInheritedContentEditPart()
-  {
-    super();
-  }   
-                 
-  public XSDComplexTypeDefinition getXSDComplexTypeDefinition()
-  {         
-    return (XSDComplexTypeDefinition)getModel();
-  }
-                  
-  protected IFigure createFigure()
-  {                            
-    ContainerFigure figure = new ContainerFigure();
-    figure.getContainerLayout().setHorizontal(false);
-    figure.getContainerLayout().setBorder(5);
-    figure.getContainerLayout().setSpacing(5);
-    figure.setBorder(new RoundedLineBorder(ColorConstants.gray, 1, 6, Graphics.LINE_DASH));
-    return figure;
-  }    
-           
-  protected List getModelChildren() 
-  {                                              
-    XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)getModel();
-
-    List list = new ArrayList();
-
-    if (ct.getDerivationMethod().getName().equals("extension") && !isParentExpanded)
-    {
-      XSDTypeDefinition type = ct.getBaseTypeDefinition();
-      Iterator iter = XSDChildUtility.getModelChildren(type).iterator();
-      boolean cont = true;
-      while (cont)
-      {
-        while (iter.hasNext())
-        {
-          list.add(0, iter.next());
-        }
-        
-        if (type instanceof XSDComplexTypeDefinition)
-        {
-          XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)type;
-          type = ctd.getBaseTypeDefinition();
-                    
-					// defect 264957 - workbench hangs when modifying complex content
-					// Since we don't filter out the current complexType from
-					// the combobox, we can potentially have an endless loop
-					if (ctd == type)
-					{
-						cont = false;
-						break;
-					}
-
-          if (ctd.getDerivationMethod().getName().equals("extension"))
-          {
-            iter = XSDChildUtility.getModelChildren(type).iterator();
-          }
-          else
-          {
-            cont = false;
-          }
-        }
-        else
-        {
-          cont = false;
-        }
-      }
-    }
-    return list;
-  }
-
-  protected void refreshVisuals()
-  { 
-    List children = getModelChildren();
-    figure.setVisible(children.size() > 0);   
-    // todo set preferredSize to 0 ?
-  }
-
-  protected void performDirectEdit()
-  {
-    // Why are we allowing direct editing when the label is null?
-    // Should remove the policy
-    if (label != null)
-    {
-      ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, (XSDComplexTypeDefinition)getModel());   
-      simpleDirectEditPolicy.setDelegate(manager);
-      manager.show();
-    }
-  }    
-            
-
-  protected void createEditPolicies()
-  {  
-    super.createEditPolicies();
-    installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
-  } 
-       
-
-  public void performRequest(Request request)
-  {
-    if (request.getType() == RequestConstants.REQ_DIRECT_EDIT)
-    {     
-      if (XSDGraphUtil.isEditable(getModel()))
-      {
-        performDirectEdit();
-      }
-    }
-  } 
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComponentViewerRootEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComponentViewerRootEditPart.java
deleted file mode 100644
index fa8d191..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ComponentViewerRootEditPart.java
+++ /dev/null
@@ -1,76 +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.graph.editparts;
-                                      
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Panel;
-import org.eclipse.gef.EditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerLayout;
-
-              
-
-public class ComponentViewerRootEditPart extends BaseEditPart
-{
-  protected final static String MESSAGE_PLACE_HOLDER = "MESSAGE_PLACE_HOLDER";
-  protected Object input;              
-
-  public void setInput(Object input)
-  {
-    this.input = input;
-    refreshChildren();
-  }
-
-  protected IFigure createFigure()
-  {
-    Panel panel = new Panel();
-    ContainerLayout layout = new ContainerLayout();
-    layout.setBorder(60);
-    panel.setLayoutManager(layout);
-    return panel;
-  }   
-           
-
-  protected List getModelChildren() 
-  {               
-    List list = new ArrayList();
-    if (input != null)
-    {
-      list.add(input);
-    }
-    else
-    {
-      list.add(MESSAGE_PLACE_HOLDER);
-    }
-    return list;
-  }         
-
-  protected EditPart createChild(Object model) 
-  { 
-    EditPart editPart = null;
-    if (model == MESSAGE_PLACE_HOLDER)
-    {
-      editPart = new MessageEditPart();
-      editPart.setModel(model);
-    }
-    else
-    {
-      editPart = super.createChild(model);
-    }
-    return editPart;
-  } 
-
-  protected void createEditPolicies()
-  {  
-  }             
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ElementDeclarationEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ElementDeclarationEditPart.java
deleted file mode 100644
index 249c88b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ElementDeclarationEditPart.java
+++ /dev/null
@@ -1,460 +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.graph.editparts;
-                                   
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.LineBorder;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.gef.requests.LocationRequest;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.graphics.Image;
-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.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDSetTypeHelper;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.SpacingFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDSubstitutionGroupChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDSubstitutionGroupsViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComboBoxCellEditorManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ExpandableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.w3c.dom.Element;
-
-              
-
-public class ElementDeclarationEditPart extends ExpandableGraphNodeEditPart
-{
-  public Label label;  
-  protected Label contentIconLabel;
-  protected Label typeValueLabel;
-  protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
-  protected boolean isContentIconLabelSelected = false;
-
-  protected final static String ELEMENT_TYPE_PLACE_HOLDER = "ELEMENT_TYPE_PLACE_HOLDER";
-
-  public XSDParticle getXSDParticle()
-  {
-    Object o = getXSDElementDeclaration().getContainer(); 
-    return (o instanceof XSDParticle) ? (XSDParticle)o : null;
-  }        
-
-  public XSDElementDeclaration getXSDElementDeclaration()
-  {         
-    return (XSDElementDeclaration)getModel();
-  }
-     
-  protected boolean isDefaultExpanded()
-  {
-    // hack to expand up to its content.  The previous test didn't appear to work
-    int depth = 0;
-    for (EditPart part = this; part != null; part = part.getParent())
-    {
-      depth++;
-    }      
-    return depth <= 3;
-  }
-                     
-  protected GraphNodeFigure createGraphNodeFigure()
-  {
-    ExpandableGraphNodeFigure figure = new ExpandableGraphNodeFigure();
-
-    figure.getOutlinedArea().setFill(true);
-    figure.getOutlinedArea().setLayoutManager(new FillLayout());
-
-    label = new Label();    
-    figure.getIconArea().add(label);     
-    label.setFont(mediumBoldFont);
-    
-    SpacingFigure spacingFigure = new SpacingFigure();
-    figure.getIconArea().add(spacingFigure);
-    
-    contentIconLabel = new Label();
-    //contentIcon.setBorder(new MarginBorder(2, 2, 2, 10));
-    figure.getIconArea().add(contentIconLabel);
-
-    // A sneaky null check.... getViewer() does a getRoot(), but getRoot() might be null
-    // same with getParent()
-    if (getParent() != null && getRoot() != null && getViewer() instanceof XSDSubstitutionGroupsViewer)
-    {
-      figure.getOuterContentArea().getContainerLayout().setSpacing(5);
-    }
-    else
-    {  
-      RectangleFigure line = new RectangleFigure();
-      line.setPreferredSize(20, 1);   
-      figure.getOutlinedArea().add(line, 1);
-
-      figure.getInnerContentArea().setLayoutManager(new FillLayout(2));
-      figure.getInnerContentArea().setBorder(new MarginBorder(2,2,2,1));
-
-      ContainerFigure labelGroup = new ContainerFigure();   
-      Label typeLabel = new Label("type");
-      labelGroup.add(typeLabel);
-      labelGroup.setBorder(new MarginBorder(0, 4, 0, 4));      
-
-      Label equalsLabel = new Label(" = ");
-      labelGroup.add(equalsLabel);
-
-      typeValueLabel = new Label();                         
-      labelGroup.add(typeValueLabel);
-      figure.getOutlinedArea().add(labelGroup, 2);
-    }
-    return figure;
-  }          
-
-  protected ExpandableGraphNodeFigure getExpandableGraphNodeFigure()
-  {
-    return (ExpandableGraphNodeFigure)graphNodeFigure;
-  }                                            
-                    
-  protected List getModelChildren() 
-  {
-    XSDTypeDefinition typeDef = getXSDElementDeclaration().getTypeDefinition();
-    
-    // Special case simple type.   Need to add it to the list as well
-    List list = new ArrayList();
-    if (typeDef instanceof XSDSimpleTypeDefinition)
-    {
-      list.add((XSDSimpleTypeDefinition)typeDef);
-      if (getExpandableGraphNodeFigure().isExpanded())
-      {
-        list.addAll(getModelChildrenHelper());
-      }
-      return list;
-    }
-    return getExpandableGraphNodeFigure().isExpanded() ? getModelChildrenHelper() : Collections.EMPTY_LIST;
-  }  
-                       
-  protected List getModelChildrenHelper()
-  {
-    if (getViewer() instanceof XSDSubstitutionGroupsViewer)
-    {
-      return XSDSubstitutionGroupChildUtility.getModelChildren(getXSDElementDeclaration().getResolvedElementDeclaration());
-    }
-    else
-    {
-      return XSDChildUtility.getModelChildren(getXSDElementDeclaration().getResolvedElementDeclaration());
-    }
-  }           
-                
-  protected void refreshContentIcon()
-  {
-    String iconName = null;
-    XSDTypeDefinition td = getXSDElementDeclaration().getResolvedElementDeclaration().getTypeDefinition();
-
-    if (td instanceof XSDComplexTypeDefinition)
-    {
-      XSDComplexTypeDefinition complexTypeDefinition = (XSDComplexTypeDefinition)td;
-      if (complexTypeDefinition.getAttributeUses().size() > 0)
-      {
-        iconName = "icons/XSDAttribute.gif";  
-      }  
-    }  
-    Image image = iconName != null ? XSDEditorPlugin.getXSDImage(iconName) : null;
-    contentIconLabel.setIcon(image);    
-  }
-
-  protected void refreshVisuals()
-  { 
-    String text = getXSDElementDeclaration().isElementDeclarationReference() ?
-                  getXSDElementDeclaration().getResolvedElementDeclaration().getQName(getXSDElementDeclaration().getSchema()) :
-                  getXSDElementDeclaration().getName();
-
-    label.setText(text);
-    
-    ContainerFigure rectangle = graphNodeFigure.getOutlinedArea();
-    if (XSDGraphUtil.isEditable(getXSDElementDeclaration()))
-    {
-      rectangle.setBorder(new LineBorder(isSelected ? ColorConstants.black : elementBorderColor, 2));
-      rectangle.setBackgroundColor(elementBackgroundColor);
-      rectangle.setForegroundColor(elementBorderColor);
-      
-      graphNodeFigure.getInnerContentArea().setForegroundColor(ColorConstants.black);
-      if (XSDGraphUtil.isEditable(getXSDElementDeclaration().getResolvedElementDeclaration()))
-      { 
-        // give label 'editable' colour
-        graphNodeFigure.getInnerContentArea().setForegroundColor(elementLabelColor);    
-      }
-      else
-      {   
-        // give label 'read only' colour
-        graphNodeFigure.getInnerContentArea().setForegroundColor(elementBorderColor);
-      }
-      label.setBackgroundColor(elementBackgroundColor);
-      label.setForegroundColor(elementLabelColor);
-    }
-    else
-    {
-      rectangle.setBorder(new LineBorder(isSelected ? ColorConstants.black : readOnlyBorderColor, 2));
-      rectangle.setBackgroundColor(readOnlyBackgroundColor);
-      rectangle.setForegroundColor(readOnlyBorderColor);
-      graphNodeFigure.getInnerContentArea().setForegroundColor(readOnlyBorderColor);     
-      label.setBackgroundColor(readOnlyBackgroundColor);
-    }
-                                                                                   
-    if (getXSDElementDeclaration().isElementDeclarationReference())
-    {
-      label.setIcon(XSDEditorPlugin.getXSDImage("icons/GraphViewElementRef.gif"));
-      label.setBorder(new MarginBorder(0, 0, 0, 4)); 
-    }
-    else
-    {                     
-      label.setIcon(null);
-      label.setBorder(new MarginBorder(0, 6, 0, 4));
-    }
-    
-    if (getXSDParticle() != null)
-    { 
-      refreshOccurenceLabel(getXSDParticle().getMinOccurs(), getXSDParticle().getMaxOccurs());
-    }                      
-     
-   
-    if (typeValueLabel != null)
-    {
-      XSDElementDeclaration ed = getXSDElementDeclaration();
-      if (ed.getElement() != null)
-      {
-        String type = ed.getElement().getAttribute("type");
-        if (type == null)
-        {
-          type = "";
-        }
-        if (!getXSDElementDeclaration().isElementDeclarationReference())
-				{   
-          typeValueLabel.setText(type.equals("") ? "<anonymous>" : type);
-				}
-        else // if it is a ref, we show the resolved type
-        {
-        	String resolvedType = "";
-        	if (ed.getResolvedElementDeclaration() != null)
-        	{
-        		if (ed.getResolvedElementDeclaration().getTypeDefinition() != null)
-        	  {
-        	    resolvedType = ed.getResolvedElementDeclaration().getTypeDefinition().getQName(ed.getSchema());
-              
-              // if null, it has an anonymous type that has no resolved type
-              if (resolvedType == null)
-              {
-                resolvedType = "<anonymous>";
-              }
-        	  }
-        	}
-          typeValueLabel.setText(resolvedType);
-				}
-      }
-    }
-    refreshContentIcon();
-  } 
- 
-                                                                        
-  public void performRequest(Request request)
-  {
-  	if (request.getType() == RequestConstants.REQ_DIRECT_EDIT ||
-        request.getType() == RequestConstants.REQ_OPEN)
-    {                                        
-      if (XSDGraphUtil.isEditable(getXSDElementDeclaration()))
-      {
-        if (request instanceof LocationRequest)
-        {
-          LocationRequest locationRequest = (LocationRequest)request;
-          Point p = locationRequest.getLocation();
-          isContentIconLabelSelected = false;
-          
-          if (hitTest(label, p))
-          {
-  		      performDirectEditForLabel();
-          }
-          else if (hitTest(typeValueLabel, p))
-          {                             
-   		      performDirectEditForTypeValueLabel();
-          }
-        }
-      }
-    }
-  } 
-         
-  private void performDirectEditForTypeValueLabel()
-  {
-		if (!getXSDElementDeclaration().isElementDeclarationReference())
-		{    
-//      TypeReferenceDirectEditManager manager = new TypeReferenceDirectEditManager(this, getXSDElementDeclaration(), typeValueLabel);   
-//      simpleDirectEditPolicy.setDelegate(manager);
-//      manager.show();
-//TODO remove TypeReferenceDirectEditManager since it is not used any longer
-            
-            Shell shell = Display.getCurrent().getActiveShell();
-            IWorkbench workbench = XSDEditorPlugin.getPlugin().getWorkbench();
-            IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
-            IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
-            IFile currentIFile = ((IFileEditorInput)editorPart.getEditorInput()).getFile();
-            
-            XSDSchema schema = getXSDElementDeclaration().getSchema();
-                
-            XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, schema);
-            XSDComponentSelectionDialog dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider);
-            provider.setDialog(dialog);
-            
-            dialog.setBlockOnOpen(true);
-            dialog.create();
-
-            if (dialog.open() == Window.OK) {
-                Element element = getXSDElementDeclaration().getElement();
-                XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, schema);
-                helper.setType(element, "type", dialog.getSelection());
-            }        
-
-            
-		}
-		// just ignore type edit for element ref's
-  }                                                                
-
-                                                       
-  private void performDirectEditForLabel()
-  {    
-    if (getXSDElementDeclaration().isElementDeclarationReference())   
-    {
-      ComboBoxCellEditorManager manager = new ComboBoxCellEditorManager(this, label)
-      {
-         protected List computeComboContent()
-         {             
-           XSDSchema schema = getXSDElementDeclaration().getSchema();
-           List globalElementNameList = new ArrayList();
-           if (schema != null)
-           {
-             TypesHelper typesHelper = new TypesHelper(schema);
-             globalElementNameList = typesHelper.getGlobalElements();
-           }                                           
-           return globalElementNameList;
-         }
-
-         public void performModify(String value)
-         { 
-           getXSDElementDeclaration().getElement().setAttribute("ref", value);
-         }
-      };
-      simpleDirectEditPolicy.setDelegate(manager);
-      manager.show();
-    }
-    else
-    {
-      ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, getXSDElementDeclaration());   
-      simpleDirectEditPolicy.setDelegate(manager);
-      manager.show();
-    }
-  }                                
-  
-
-  protected void createEditPolicies()
-  {  
-    super.createEditPolicies();
-  	installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
-  }
-  
-  
-  public void activate() 
-  {
-    super.activate();
-    if (getXSDParticle() != null)
-    {
-      XSDModelAdapterFactory.addModelAdapterListener(getXSDParticle(), this);
-    }
-  }
-  /** 
-   * Apart from the deactivation done in super, the source
-   * and target connections are deactivated, and the visual
-   * part of the this is removed.
-   *
-   * @see #activate() 
-   */
-  public void deactivate() 
-  {
-    if (getXSDParticle() != null)
-    {
-      XSDModelAdapterFactory.removeModelAdapterListener(getXSDParticle(), this);
-    }
-    super.deactivate();
-  }   
-
-  public boolean isContentIconLabelSelected()
-  {
-    return isContentIconLabelSelected;
-  }
-
-  protected void addChildVisual(EditPart childEditPart, int index)
-  {
-    IFigure child = ((GraphicalEditPart)childEditPart).getFigure();
-    if (childEditPart instanceof SimpleTypeDefinitionEditPart)
-    {
-      graphNodeFigure.getIconArea().add(child, index+ 1);
-      SpacingFigure spacingFigure = new SpacingFigure();
-      graphNodeFigure.getIconArea().add(spacingFigure, index+1);
-    }
-    else
-    {
-      getContentPane().add(child, index);
-    }
-  }
-  
-  protected void removeChildVisual(EditPart childEditPart)
-  {
-    IFigure child = ((GraphicalEditPart)childEditPart).getFigure();
-    if (childEditPart instanceof SimpleTypeDefinitionEditPart)
-    {
-      graphNodeFigure.getIconArea().remove(child);
-    }    
-    else
-    {
-      super.removeChildVisual(childEditPart);
-    }
-  }
-
-  public void doEditName()
-  {
-    ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, getXSDElementDeclaration());
-    simpleDirectEditPolicy.setDelegate(manager);
-    manager.show();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ExpandableGraphNodeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ExpandableGraphNodeEditPart.java
deleted file mode 100644
index 1ad4057..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ExpandableGraphNodeEditPart.java
+++ /dev/null
@@ -1,189 +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.graph.editparts;
-                                        
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.ActionEvent;
-import org.eclipse.draw2d.ActionListener;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.LayoutManager;
-import org.eclipse.draw2d.MouseEvent;
-import org.eclipse.draw2d.MouseListener;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ExpandableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-
-                  
-
-public abstract class ExpandableGraphNodeEditPart extends RepeatableGraphNodeEditPart implements MouseListener, ActionListener
-{
-  protected boolean needToPerformDefaultExpansion = true;
-   
-  protected GraphNodeFigure createGraphNodeFigure()
-  {
-    return new ExpandableGraphNodeFigure();     
-  }
-
-  protected void addGraphNodeFigureListeners()
-  {                                                                    
-    getExpandableGraphNodeFigure().getInteractor().addMouseListener(this); 
-  }  
-            
-  protected ExpandableGraphNodeFigure getExpandableGraphNodeFigure()
-  {
-    return (ExpandableGraphNodeFigure)graphNodeFigure;
-  } 
-
-  public IFigure getContentPane()  
-  {
-    return getExpandableGraphNodeFigure().getOuterContentArea();
-  }
-    
-  protected boolean isDefaultExpanded()
-  {
-    return false;
-  }
-
-  protected boolean hasChildren()
-  {
-    return getModelChildrenHelper().size() > 0;
-  }         
-
-  protected abstract List getModelChildrenHelper();
-      
-
-  protected List getModelChildren() 
-  {                                                                             
-    return getExpandableGraphNodeFigure().isExpanded() ? getModelChildrenHelper() : Collections.EMPTY_LIST;
-  }  
-
-  protected void refreshChildren()
-  {    
-    if (needToPerformDefaultExpansion && isDefaultExpanded())
-    {
-      needToPerformDefaultExpansion = false;   
-      performExpandOrCollapseHelper();
-
-      super.refreshChildren();
-
-      EditPart root = getRoot();
-      if (root instanceof AbstractGraphicalEditPart)
-      {         
-        getContentPane().setVisible(true); 
-                    
-        IFigure rootFigure = ((AbstractGraphicalEditPart)root).getFigure();
-        invalidateAll(rootFigure);
-        rootFigure.validate();
-        rootFigure.repaint();
-      }     
-      getExpandableGraphNodeFigure().getInteractor().repaint();
-    } 
-    else
-    {
-      super.refreshChildren(); 
-    }   
-    getExpandableGraphNodeFigure().getInteractor().setVisible(hasChildren());
-  }
-
-
-  protected void performExpandOrCollapseHelper()
-  {
-    boolean isButtonExpanded = !getExpandableGraphNodeFigure().isExpanded();
-    getExpandableGraphNodeFigure().setExpanded(isButtonExpanded);
-  }
-
-  public void doPerformExpandOrCollapse()
-  {
-    performExpandOrCollapse();
-  }  
-  
-  public boolean isExpanded()
-  {
-    return getExpandableGraphNodeFigure().isExpanded();
-  }
-
-  protected void performExpandOrCollapse()
-  {
-    performExpandOrCollapseHelper();                              
-
-    boolean isButtonExpanded = getExpandableGraphNodeFigure().isExpanded();
-
-    refreshChildren();
-
-    EditPart root = getRoot();
-    if (root instanceof AbstractGraphicalEditPart)
-    {         
-      getContentPane().setVisible(isButtonExpanded); 
-                       
-      IFigure rootFigure = ((AbstractGraphicalEditPart)root).getFigure();
-      invalidateAll(rootFigure);
-      rootFigure.validate();
-      rootFigure.repaint();
-    }      
-    getExpandableGraphNodeFigure().getInteractor().repaint();
-  }
-
-  
-  protected void refreshOccurenceLabel(int min, int max)
-  {
-    super.refreshOccurenceLabel(min, max);
-
-    // TODO: revisit the 'hack' to understand why we need to do this 
-    // in order to get the view to layout propetly
-    //
-    IFigure thisFigure = getFigure();
-    invalidateAll(thisFigure);
-    thisFigure.validate();
-    thisFigure.repaint();
-  }
-
-  protected void invalidateAll(IFigure figure)
-  {
-    figure.invalidate();   
-    LayoutManager manager = figure.getLayoutManager();
-    if (manager != null)
-    {
-      manager.invalidate();
-    }
-    for (Iterator i = figure.getChildren().iterator(); i.hasNext(); )
-    {
-      IFigure child = (IFigure)i.next();
-      invalidateAll(child);
-    }
-  } 
-
-  
-  // implements MouseListener
-  // 
-  public void mouseDoubleClicked(MouseEvent me) 
-  {
-  }
-
-  public void mousePressed(MouseEvent me) 
-  {                             
-    me.consume();
-    needToPerformDefaultExpansion = false;
-    performExpandOrCollapse();  
-  }
-
-  public void mouseReleased(MouseEvent me) 
-  {
-  } 
-
-  public void actionPerformed(ActionEvent event) 
-  {                      
-    performExpandOrCollapse();
-  }   
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/GraphNodeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/GraphNodeEditPart.java
deleted file mode 100644
index ce6ad0a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/GraphNodeEditPart.java
+++ /dev/null
@@ -1,144 +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.graph.editparts;
-                                        
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.DragTracker;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.requests.LocationRequest;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.ConnectedEditPartFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.GraphNodeDragTracker;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-
-              
-
-public abstract class GraphNodeEditPart extends BaseEditPart
-{
-  protected GraphNodeFigure graphNodeFigure;
-  protected SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy;
-                                 
-  protected boolean isConnectedEditPart()
-  {
-    return true;
-  }
-
-  protected IFigure createFigure()
-  {                           
-    IFigure result = graphNodeFigure = createGraphNodeFigure();    
-    addGraphNodeFigureListeners();
-
-    if (isConnectedEditPart())
-    {
-      ConnectedEditPartFigure connectedEditPartFigure = createConnectedEditPartFigure();                                    
-      connectedEditPartFigure.add(graphNodeFigure);
-      result = connectedEditPartFigure;
-    }
-    return result;
-  }       
-           
-  protected ConnectedEditPartFigure createConnectedEditPartFigure()
-  {
-    ConnectedEditPartFigure connectedEditPartFigure = new ConnectedEditPartFigure(this)
-    {
-      public IFigure getSelectionFigure()
-      {
-        return graphNodeFigure.getOutlinedArea();
-      }
-
-      public IFigure getConnectionFigure()
-      {
-        return graphNodeFigure.getConnectionFigure();
-      }
-    };
-    return connectedEditPartFigure;
-  }                                
-
-  protected abstract GraphNodeFigure createGraphNodeFigure();           
-  
-  protected void addGraphNodeFigureListeners()
-  {
-  }
- 
-  public IFigure getSelectionFigure()
-  {
-    return graphNodeFigure.getOutlinedArea();
-  }
-
-  public Rectangle getConnectionRectangle()
-  {
-    return graphNodeFigure.getConnectionRectangle();
-  }
-
-  protected void createEditPolicies()
-  { 
-    //installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new NonResizableEditPolicy());    
-    selectionHandlesEditPolicy = new SelectionHandlesEditPolicyImpl();
-    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionHandlesEditPolicy);   
-  }  
-
-  public DragTracker getDragTracker(Request request)
-  {
-    return new GraphNodeDragTracker((EditPart)this);
-  }   
-
- protected EditPart getApplicableEditPart(EditPart editPart, Point p)
-  {        
-    while (true)
-    {    
-      EditPart parent = null;
-      if (editPart instanceof GraphNodeEditPart)
-      {                                  
-        IFigure f = ((GraphNodeEditPart)editPart).getSelectionFigure();
-        if (!hitTest(f, p))
-        {                                 
-          parent = editPart.getParent();        
-        }             
-      }   
-
-      if (parent != null)
-      {
-        editPart = parent;
-      }                   
-      else
-      {
-        break;
-      }
-    }         
-    return editPart;
-  }
-
-  public EditPart getTargetEditPart(Request request)   
-  { 
-    EditPart editPart = null;
-    if (request.getType() == REQ_SELECTION)
-    {                                                                       
-      if (request instanceof LocationRequest)
-      {
-        LocationRequest locationRequest = (LocationRequest)request;
-        Point p = locationRequest.getLocation();
-        editPart = getApplicableEditPart(this, p);
-      }
-    }
-    return (editPart != null) ? editPart : super.getTargetEditPart(request);
-  }   
-
-  public boolean hitTest(IFigure target, Point location)
-  {
-    Rectangle b = target.getBounds().getCopy();
-    target.translateToAbsolute(b);  
-    return b.contains(location);
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/MessageEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/MessageEditPart.java
deleted file mode 100644
index bbb7f92..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/MessageEditPart.java
+++ /dev/null
@@ -1,38 +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.graph.editparts;
-                          
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-
-              
-
-public class MessageEditPart extends BaseEditPart
-{
-  public MessageEditPart()
-  {
-  }   
-  
-  protected IFigure createFigure()
-  {                            
-    Label label = new Label(XSDEditorPlugin.getXSDString("_UI_GRAPH_VIEW_NOT_AVAILABLE"));         
-    return label;
-  }    
-
-  protected List getModelChildren() 
-  {                  
-    return Collections.EMPTY_LIST;
-  }   
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupDefinitionEditPart.java
deleted file mode 100644
index af5804a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupDefinitionEditPart.java
+++ /dev/null
@@ -1,204 +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.graph.editparts;
-                                      
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComboBoxCellEditorManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RepeatableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-
-              
-public class ModelGroupDefinitionEditPart extends RepeatableGraphNodeEditPart
-{
-  protected Label label;     
-  protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
-
-  public XSDModelGroupDefinition getXSDModelGroupDefinition()
-  {
-    return (XSDModelGroupDefinition)getModel();
-  } 
-
-  protected boolean isConnectedEditPart()
-  {
-    return false;
-  }          
-
-  public XSDParticle getXSDParticle()
-  {                    
-    Object o = getXSDModelGroupDefinition().getContainer();
-    return (o instanceof XSDParticle) ? (XSDParticle)o : null;
-  }
-             
-  protected GraphNodeFigure createGraphNodeFigure()
-  {
-    RepeatableGraphNodeFigure figure = new RepeatableGraphNodeFigure();                                                        
-    figure.getOutlinedArea().setBorder(new RoundedLineBorder(1, 6));
-    figure.getInnerContentArea().setBorder(new MarginBorder(10, 0, 10, 0));
-
-    label = new Label();    
-    label.setFont(mediumBoldFont); 
-    figure.getIconArea().add(label);     
-
-
-    return figure;
-  }  
- 
-  public IFigure getContentPane()  
-  {
-    return graphNodeFigure.getInnerContentArea();
-  }
-           
-  protected List getModelChildren() 
-  {                                             
-    return XSDChildUtility.getModelChildren(getModel());  
-  }
-
-  protected void createEditPolicies()
-  {     
-    super.createEditPolicies();
-  	installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
-  }             
-             
-  protected void refreshVisuals()
-  { 
-    super.refreshVisuals();                                                                
-  
-    if (getXSDModelGroupDefinition().isModelGroupDefinitionReference())
-    {
-      label.setText(getXSDModelGroupDefinition().getResolvedModelGroupDefinition().getQName());
-      label.setIcon(XSDEditorPlugin.getXSDImage("icons/GraphViewElementRef.gif"));
-      label.setBorder(new MarginBorder(0, 0, 0, 4)); 
-
-      // todo update occurence label
-      //
-    }
-    else
-    {               
-      label.setText(getXSDModelGroupDefinition().getName());      
-      label.setIcon(null);
-      label.setBorder(new MarginBorder(0, 6, 0, 4));
-    }
-                       
-    if (XSDGraphUtil.isEditable(getModel()))
-    { 
-      graphNodeFigure.getOutlinedArea().setForegroundColor(isSelected ? ColorConstants.black : elementBorderColor);
-      label.setForegroundColor(elementLabelColor);
-    }
-    else
-    {
-      graphNodeFigure.getOutlinedArea().setForegroundColor(readOnlyBackgroundColor);
-      label.setForegroundColor(readOnlyBackgroundColor);
-    }   
-
-    refreshOccurenceLabel(getXSDParticle());
-  }
- 
-
-  protected void performDirectEdit()
-  {              
-    if (getXSDModelGroupDefinition().isModelGroupDefinitionReference())
-    {
-      ComboBoxCellEditorManager manager = new ComboBoxCellEditorManager(this, label)
-      {
-         protected List computeComboContent()
-         {             
-           XSDSchema schema = getXSDModelGroupDefinition().getSchema();
-           List nameList = new ArrayList();
-           if (schema != null)
-           {
-             TypesHelper typesHelper = new TypesHelper(schema);
-             nameList = typesHelper.getModelGroups();
-           }                                           
-           return nameList;
-         }
-
-         public void performModify(String value)
-         {  
-           Display.getCurrent().asyncExec(new DelayedModelGroupRenameAction(getXSDModelGroupDefinition(), value));
-         }
-      };                                          
-      simpleDirectEditPolicy.setDelegate(manager);
-      manager.show();
-    }
-    else 
-    {
-      ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, getXSDModelGroupDefinition());           
-      simpleDirectEditPolicy.setDelegate(manager);
-      manager.show();
-    }
-  }  
-       
-
-  protected class DelayedModelGroupRenameAction implements Runnable
-  {
-     XSDModelGroupDefinition modelGroupDefinition;                                     
-     String value;
-
-     DelayedModelGroupRenameAction(XSDModelGroupDefinition modelGroupDefinition, String value)
-     {
-       this.modelGroupDefinition = modelGroupDefinition;
-       this.value = value;
-     }
-
-     public void run()
-     {
-       modelGroupDefinition.getElement().setAttribute("ref", value);
-     }
-  }
-    
-
-  public void performRequest(Request request)
-  {
-  	if (request.getType() == RequestConstants.REQ_DIRECT_EDIT)
-    {     
-      if (XSDGraphUtil.isEditable(getModel()))
-      {
-  		  performDirectEdit();
-      }
-    }
-  }    
- 
-  // TODO... I added this as a quick fix to makesure the title gets redrawn when the groupRef is changed
-  // we should probably fix the ModelListenerUtil to fire both call both 'change' methods for the ref property
-  //public void modelChildrenChanged()
-  //{   
-  //  super.modelChildrenChanged();                                              
-  //  refreshVisuals(); 
-  //} 
-
-  public void doEditName()
-  {
-    ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, getXSDModelGroupDefinition());           
-    simpleDirectEditPolicy.setDelegate(manager);
-    manager.show();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupEditPart.java
deleted file mode 100644
index b793eba..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/ModelGroupEditPart.java
+++ /dev/null
@@ -1,187 +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.graph.editparts;
-                          
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.DragAndDropEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.CenteredIconFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ExpandableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticle;
-
-              
-
-public class ModelGroupEditPart extends ExpandableGraphNodeEditPart
-{
-  protected CenteredIconFigure centeredIconFigure;
- 
-  protected static Color editableBackgroundColor = null;
-  protected static Color editableForegroundColor = null;
-  protected static Color nonEditableForegroundColor = null;
-
-  public XSDParticle getXSDParticle()
-  {                    
-    Object o = getXSDModelGroup().getContainer();
-    return (o instanceof XSDParticle) ? (XSDParticle)o : null;
-  }
-
-  public XSDModelGroup getXSDModelGroup()
-  {
-    return (XSDModelGroup)getModel();
-  }           
-
-  protected GraphNodeFigure createGraphNodeFigure()
-  {
-    ExpandableGraphNodeFigure figure = new ExpandableGraphNodeFigure();      
-
-    centeredIconFigure = new CenteredIconFigure();
-    centeredIconFigure.setPreferredSize(new Dimension(32, 20)); 
-    //centeredIconFigure.setBackgroundColor(new Color(Display.getCurrent(), 255, 0, 0)); 
-    figure.getIconArea().add(centeredIconFigure);   
-    //figure.getIconArea().setLayout(new CenterLayout());
-
-    ContainerFigure outlinedArea = figure.getOutlinedArea();                        
-    outlinedArea.setBorder(new RoundedLineBorder(1, 10));   
-    //outlinedArea.setPreferredSize(new Dimension(32, 20)); 
-                         
-    // set layout so that children are aligned vertically with some spacing
-    //
-    figure.getOuterContentArea().getContainerLayout().setHorizontal(false);  
-    figure.getOuterContentArea().getContainerLayout().setSpacing(10);
-
-    return figure;
-  }    
-
-  protected List getModelChildrenHelper()
-  {
-    return XSDChildUtility.getModelChildren(getXSDModelGroup());
-  }  
- 
-  protected void refreshVisuals()
-  {         
-    String iconName = "icons/XSDSequence.gif";    
-    switch (getXSDModelGroup().getCompositor().getValue())
-    {
-      case XSDCompositor.ALL   : { iconName = "icons/XSDAll.gif"; break; }
-      case XSDCompositor.CHOICE   : { iconName = "icons/XSDChoice.gif"; break; }
-      case XSDCompositor.SEQUENCE : { iconName = "icons/XSDSequence.gif"; break; }
-    }
-    centeredIconFigure.image = XSDEditorPlugin.getXSDImage(iconName);
-    centeredIconFigure.repaint();
-                                                          
-
-    ContainerFigure outlinedArea = graphNodeFigure.getOutlinedArea() ;    
-    if (XSDGraphUtil.isEditable(getXSDModelGroup()))
-    {
-      if (editableForegroundColor == null) 
-        editableForegroundColor = new Color(Display.getCurrent(), 120, 152, 184);
-
-      if (editableBackgroundColor == null) 
-        editableBackgroundColor = new Color(Display.getCurrent(), 232, 240, 248);
-       
-      outlinedArea.setForegroundColor(isSelected ? ColorConstants.black : editableForegroundColor);
-      outlinedArea.setBackgroundColor(editableBackgroundColor);
-    }
-    else
-    {                                          
-      if (nonEditableForegroundColor == null) 
-        nonEditableForegroundColor = new Color(Display.getCurrent(), 164, 164, 164);    
-        
-      outlinedArea.setForegroundColor(isSelected ? ColorConstants.black : nonEditableForegroundColor);
-      outlinedArea.setBackgroundColor(ColorConstants.white);
-    }  
-
-    refreshOccurenceLabel(getXSDParticle());
-  }        
-
-  protected boolean isChildLayoutHorizontal()
-  {
-    return false;
-  } 
-
-  protected boolean isDefaultExpanded()
-  {        
-    return isPossibleCycle() ? false : true;
-  }  
-                                                                                         
-  // This test ensures that we don't end up with an infinite default expansion (e.g. when a group contains a cyclic group ref)
-  // TODO... we probably need some more extensible 'OO' way of computing this information
-  protected boolean isPossibleCycle()
-  {        
-    boolean result = false;
-    if (getParent() instanceof ModelGroupDefinitionEditPart)
-    {                                                      
-      ModelGroupDefinitionEditPart group = (ModelGroupDefinitionEditPart)getParent();
-      for (EditPart parent = group.getParent(); parent != null; parent = parent.getParent())
-      {
-        if (parent.getModel() instanceof ElementDeclarationEditPart)
-        {
-          break;
-        }       
-        else 
-        {
-          if (parent.getModel() == group.getModel())
-          {
-            result = true;
-            break;
-          }
-        }
-      }      
-    }      
-    return result;
-  } 
-       
-  protected void createEditPolicies()
-  { 
-    super.createEditPolicies();
-    installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new DragAndDropEditPolicy(getViewer(), selectionHandlesEditPolicy));      
-  }
-  
-  public void activate() 
-  {
-    super.activate();
-    if (getXSDParticle() != null)
-    {
-      XSDModelAdapterFactory.addModelAdapterListener(getXSDParticle(), this);
-    }
-  }
-  /** 
-   * Apart from the deactivation done in super, the source
-   * and target connections are deactivated, and the visual
-   * part of the this is removed.
-   *
-   * @see #activate() 
-   */
-  public void deactivate() 
-  {
-    if (getXSDParticle() != null)
-    {
-      XSDModelAdapterFactory.removeModelAdapterListener(getXSDParticle(), this);
-    }
-    super.deactivate();
-  }   
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RepeatableGraphNodeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RepeatableGraphNodeEditPart.java
deleted file mode 100644
index 6fdf7d6..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RepeatableGraphNodeEditPart.java
+++ /dev/null
@@ -1,72 +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.graph.editparts;
-                                        
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.DragAndDropEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RepeatableGraphNodeFigure;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDSchema;
-
-                  
-
-public class RepeatableGraphNodeEditPart extends GraphNodeEditPart
-{
-  protected RepeatableGraphNodeFigure getRepeatableGraphNodeFigure()
-  {
-    return (RepeatableGraphNodeFigure)graphNodeFigure;
-  }
-  
-  protected GraphNodeFigure createGraphNodeFigure()
-  {
-    return new RepeatableGraphNodeFigure();                                                        
-  }   
-      
-  protected void refreshOccurenceLabel(XSDParticle particle)
-  {  
-    if (particle != null)
-    { 
-      refreshOccurenceLabel(particle.getMinOccurs(), particle.getMaxOccurs());
-    }
-  }
-
-  protected void refreshOccurenceLabel(int min, int max)
-  {                     
-    if (min == 1 && max == 1)
-    {
-      getRepeatableGraphNodeFigure().getOccurenceLabel().setText("");
-    }
-    else
-    {
-      String maxString = max == -1 ? "*" : "" + max;
-      getRepeatableGraphNodeFigure().getOccurenceLabel().setText(min + ".." + maxString);
-    }
-    getRepeatableGraphNodeFigure().getOccurenceLabel().repaint();
-  }
-
-  protected void createEditPolicies()
-  { 
-    super.createEditPolicies();
-    
-    if (getModel() instanceof XSDElementDeclaration) {
-    	Object parent = ((XSDElementDeclaration) getModel()).eContainer();
-    	
-    	if (!(parent instanceof XSDSchema)) {
-    		installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new DragAndDropEditPolicy(getViewer(), selectionHandlesEditPolicy));      
-    	}
-    }
-    else {
-    	installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new DragAndDropEditPolicy(getViewer(), selectionHandlesEditPolicy));
-    }
-  }  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootComplexTypeDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootComplexTypeDefinitionEditPart.java
deleted file mode 100644
index 853a2df..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootComplexTypeDefinitionEditPart.java
+++ /dev/null
@@ -1,121 +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.graph.editparts;
-                                   
-import java.util.List;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDInheritanceViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ExpandableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-
-              
-
-public class RootComplexTypeDefinitionEditPart extends ExpandableGraphNodeEditPart
-{                      
-  public Label label;  
-  protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();                              
-        
-
-  protected GraphNodeFigure createGraphNodeFigure()
-  {
-    ExpandableGraphNodeFigure figure = new ExpandableGraphNodeFigure();
-    figure.getOutlinedArea().setBorder(new RoundedLineBorder(1, 6));
-    figure.getOutlinedArea().setLayoutManager(new FillLayout());
-    figure.getOutlinedArea().setFill(true);
-    
-    if (getViewer() instanceof XSDInheritanceViewer)
-    {
-      figure.getOuterContentArea().getContainerLayout().setSpacing(10);
-    }
-
-    label = new Label();       
-    label.setFont(mediumBoldFont);
-    label.setBorder(new MarginBorder(5, 8, 5, 8));  
-    figure.getIconArea().add(label);  
-
-    return figure;
-  }          
-   
-                                                                                   
-  protected void refreshVisuals()
-  { 
-    super.refreshVisuals();                                                                
-
-    XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)getModel();                   
-    label.setText(ctd.getName() != null ? ctd.getName(): "");
-
-    if (XSDGraphUtil.isEditable(ctd))
-    { 
-      figure.setForegroundColor(elementBorderColor);
-      label.setForegroundColor(elementBorderColor);
-    }
-    else
-    {
-      figure.setForegroundColor(readOnlyBorderColor);
-      label.setForegroundColor(readOnlyBorderColor);
-    }
-  }
-
-
-  protected List getModelChildrenHelper()
-  {
-    XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)getModel();
-    if (getViewer() instanceof XSDInheritanceViewer)
-    {
-      return XSDChildUtility.getImmediateDerivedTypes(ct);
-    }
-    else
-    {
-      return XSDChildUtility.getModelChildren(getModel());
-    }
-  }     
-
-
-  protected void createEditPolicies()
-  {  
-    SelectionHandlesEditPolicyImpl policy = new SelectionHandlesEditPolicyImpl();
-    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, policy);     
-  	installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
-  }  
-        
-
-  protected void performDirectEdit()
-  {                                  
-    ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, (XSDComplexTypeDefinition)getModel());     
-    simpleDirectEditPolicy.setDelegate(manager);
-    manager.show();
-  }    
-
-
-  public void performRequest(Request request)
-  {
-  	if (request.getType() == RequestConstants.REQ_DIRECT_EDIT)
-    {
-      if (XSDGraphUtil.isEditable(getModel()))
-      {
-  		  performDirectEdit();
-      }
-    }
-  } 
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootModelGroupDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootModelGroupDefinitionEditPart.java
deleted file mode 100644
index 35f4486..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/RootModelGroupDefinitionEditPart.java
+++ /dev/null
@@ -1,105 +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.graph.editparts;
-                                   
-import java.util.List;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ExpandableGraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-
-              
-public class RootModelGroupDefinitionEditPart extends ExpandableGraphNodeEditPart
-{                      
-  public Label label;  
-  protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();                              
-                     
-
-  protected GraphNodeFigure createGraphNodeFigure()
-  {
-    ExpandableGraphNodeFigure figure = new ExpandableGraphNodeFigure();
-    figure.getOutlinedArea().setBorder(new RoundedLineBorder(1, 6));
-    figure.getOutlinedArea().setLayoutManager(new FillLayout());
-    figure.getOutlinedArea().setFill(true);
-
-    label = new Label();       
-    label.setFont(mediumBoldFont);
-    label.setBorder(new MarginBorder(5, 8, 5, 8));  
-    figure.getIconArea().add(label);  
-
-    return figure;
-  }  
-                                                                          
-  protected void refreshVisuals()
-  { 
-    super.refreshVisuals();                                                                
-
-    XSDModelGroupDefinition mgd = (XSDModelGroupDefinition)getModel();                      
-    String name = mgd.getResolvedModelGroupDefinition().getName();                  
-    label.setText(name);
-
-    if (XSDGraphUtil.isEditable(getModel()))
-    { 
-      figure.setForegroundColor(elementBorderColor);
-      label.setForegroundColor(elementBorderColor);
-    }
-    else
-    {
-      figure.setForegroundColor(readOnlyBorderColor);
-      label.setForegroundColor(readOnlyBorderColor);
-    }
-  }  
-
-  protected List getModelChildrenHelper()
-  {
-    return XSDChildUtility.getModelChildren(getModel());
-  }   
-
-
-  protected void createEditPolicies()
-  {  
-    SelectionHandlesEditPolicyImpl policy = new SelectionHandlesEditPolicyImpl();
-    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, policy);     
-  	installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
-  }  
-        
-
-  protected void performDirectEdit()
-  {                                  
-    ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, ((XSDModelGroupDefinition)getModel()).getResolvedModelGroupDefinition());           
-    simpleDirectEditPolicy.setDelegate(manager);
-    manager.show();
-  }    
-
-
-  public void performRequest(Request request)
-  {
-  	if (request.getType() == RequestConstants.REQ_DIRECT_EDIT)
-    {
-      if (XSDGraphUtil.isEditable(getModel()))
-      {
-  		  performDirectEdit();
-      }
-    }
-  } 
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaDirectiveEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaDirectiveEditPart.java
deleted file mode 100644
index c0697d5..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaDirectiveEditPart.java
+++ /dev/null
@@ -1,60 +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.graph.editparts;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.CenteredIconFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.xsd.XSDSchemaDirective;
-
-
-public class SchemaDirectiveEditPart extends BaseEditPart
-{
-  protected CenteredIconFigure centeredIconFigure;
-  protected Label label;
-  /**
-   * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
-   */
-  protected IFigure createFigure()
-  {
- 
-    ContainerFigure figure = new ContainerFigure();
-
-    figure.setLayoutManager(new FillLayout());
-    figure.setBorder(new RoundedLineBorder(1, 8));
-
-    ContainerFigure fig = new ContainerFigure();
-    fig.setLayoutManager(new FillLayout());
-    fig.setBorder(new MarginBorder(10, 0, 10, 0));
-    figure.add(fig);
-
-
-    label = new Label();    
-    label.setBorder(new MarginBorder(4, 2, 2, 10));
-    fig.add(label);        
-
-    return figure;
-  }  
- 
-  public void refreshVisuals()
-  {
-    XSDSchemaDirective directive = (XSDSchemaDirective)getModel();
-    String schemaLocation = directive.getSchemaLocation();
-    if (schemaLocation == null) schemaLocation = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
-    if (schemaLocation.equals("")) schemaLocation = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
-    label.setText("  " + directive.getElement().getLocalName() + " " + schemaLocation);
-  } 
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaEditPart.java
deleted file mode 100644
index ad1f64b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SchemaEditPart.java
+++ /dev/null
@@ -1,206 +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.graph.editparts;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.Figure;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.gef.EditPart;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.GraphicsConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RoundedLineBorder;
-import org.eclipse.wst.xsd.ui.internal.graph.model.Category;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-import org.eclipse.xsd.XSDSchema;
-
-public class SchemaEditPart extends BaseEditPart
-{
-  protected ContainerFigure containerFigure;
-  protected Label label;
-
-  //protected ContainerFigure childExpansionContainer;
-  public IFigure getContentPane()
-  {
-    return containerFigure;
-  }
-
-  protected IFigure createFigure()
-  {
-    ContainerFigure outer = new ContainerFigure();
-    outer.setBorder(new RoundedLineBorder(1, 6));
-    outer.setForegroundColor(categoryBorderColor);
-    FillLayout fillLayout = new FillLayout(4);
-    outer.setLayoutManager(fillLayout); 
-    //outer.getContainerLayout().setHorizontal(false);
-    
-    ContainerFigure r = new ContainerFigure();  
-    r.setOutline(false);
-    r.setMinimumSize(new Dimension(0, 0));
-    r.setFill(true);
-    r.setBackgroundColor(GraphicsConstants.elementBackgroundColor);
-    outer.add(r);
-    
-	final int theMinHeight = 200;
-    FillLayout outerLayout = new FillLayout()
-    {
-      protected Dimension calculatePreferredSize(IFigure parent, int width, int height)
-      {
-        Dimension d = super.calculatePreferredSize(parent, width, height);
-        d.union(new Dimension(100, theMinHeight));
-        return d;
-      }
-    };
-    outerLayout.setHorizontal(false);
-    outer.setLayoutManager(outerLayout);
-    
-    label = new Label();
-    label.setForegroundColor(ColorConstants.black);
-    label.setBorder(new MarginBorder(2, 4, 2, 4));    
-    r.add(label);
-    
-    RectangleFigure line = new RectangleFigure();
-    line.setPreferredSize(20, 1);
-    outer.add(line);
-    
-    containerFigure = new ContainerFigure();
-    //containerFigure.setBackgroundColor(ColorConstants.red);
-    containerFigure.setBorder(new MarginBorder(4, 4, 4, 4));
-    fillLayout = new FillLayout(4);
-    containerFigure.setLayoutManager(fillLayout);
-    //containerFigure.setLayoutManager(new FillLayout(false));
-    /*
-     * FlowLayout layout1 = new FlowLayout(false); layout1.setMajorSpacing(0);
-     * layout1.setMinorSpacing(0); layout1.setStretchMinorAxis(true);
-     * containerFigure.setLayoutManager(layout1);
-     */
-    outer.add(containerFigure);
-    //childExpansionContainer = new ContainerFigure();
-    //childExpansionContainer.getContainerLayout().setHorizontal(false);
-    //childExpansionContainer.setOutlined(true);
-    return outer;
-  }
-
-  protected List getModelChildren()
-  {
-    List list = new ArrayList();
-    list.add(CategoryRowEditPart.DIRECTIVES_AND_NOTATIONS);
-    list.add(CategoryRowEditPart.ELEMENTS_AND_TYPES);
-    list.add(CategoryRowEditPart.MODEL_GROUPS_AND_ATTRIBUTES);      
-    return list;
-  }
-
-  protected EditPart createChild(Object model)
-  {
-    CategoryRowEditPart result = new CategoryRowEditPart();
-    result.setModel(model);
-    result.setParent(this);
-    result.setSchema((XSDSchema)getModel());
-    return result;
-  }
-  
-
-  protected void refreshVisuals()
-  {
-    super.refreshVisuals();
-    String targetNamespaceValue = ((XSDSchema)getModel()).getTargetNamespace();
-    if (targetNamespaceValue == null || targetNamespaceValue.length() == 0)
-    {
-      targetNamespaceValue = XSDEditorPlugin.getXSDString("_UI_GRAPH_XSDSCHEMA_NO_NAMESPACE");
-    }     
-    label.setText(XSDEditorPlugin.getXSDString("_UI_GRAPH_XSDSCHEMA") + " : " + targetNamespaceValue);
-  }
-}
-
-class CategoryRowEditPart extends BaseEditPart
-{  
-  public static final int[] ELEMENTS_AND_TYPES = {Category.ELEMENTS, Category.TYPES };
-  public static final int[] DIRECTIVES_AND_NOTATIONS =  {Category.DIRECTIVES, Category.NOTATIONS };
-  public static final int[] MODEL_GROUPS_AND_ATTRIBUTES = {Category.GROUPS, Category.ATTRIBUTES};//, Category.COMPLEX_TYPES };
-  
-  protected XSDSchema schema;
-  protected Figure contentPane;
-  
-  protected IFigure createFigure()
-  {
-    ContainerFigure containerFigure = new ContainerFigure();
-    //containerFigure.setBackgroundColor(ColorConstants.red);
-    containerFigure.setFill(true);
-    containerFigure.setBorder(new MarginBorder(4, 4, 4, 4));
-    org.eclipse.wst.xsd.ui.internal.gef.util.figures.FillLayout fillLayout = new org.eclipse.wst.xsd.ui.internal.gef.util.figures.FillLayout(4);
-    fillLayout.setHorizontal(true);
-    containerFigure.setLayoutManager(fillLayout);
-    //containerFigure.setLayoutManager(new FillLayout(4));
-    return containerFigure;
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#getContentPane()
-   */
-  public IFigure getContentPane()
-  {
-    return super.getContentPane();
-  }
-
-  public XSDSchema getSchema()
-  {
-    return schema;
-  }
-
-  public void setSchema(XSDSchema schema)
-  {
-    this.schema = schema;
-  }
-  
-
-  protected List getModelChildren()
-  {
-    List categoryList = (List) XSDModelAdapterFactory.getAdapter(schema).getProperty(schema, "groups");
-    return filterCategoryList(categoryList);
-  }
-  
-  protected List filterCategoryList(List list)
-  {
-    List result = new ArrayList();
-    int[] categoryTypes = (int[])getModel();
-    for (Iterator i = list.iterator(); i.hasNext(); )
-    {
-      Category category = (Category)i.next();
-      if (isMatching(categoryTypes, category))
-      {
-        result.add(category);
-      }
-    }
-    return result;
-  }
-  
-  private boolean isMatching(int[] categoryTypes, Category category)
-  {
-    boolean result = false;
-    for (int i = 0; i < categoryTypes.length; i++)
-    {
-      if (categoryTypes[i] == category.getGroupType())
-      {
-        result = true;
-        break;
-      }
-    }
-    return result;
-  }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SimpleTypeDefinitionEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SimpleTypeDefinitionEditPart.java
deleted file mode 100644
index df1afad..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SimpleTypeDefinitionEditPart.java
+++ /dev/null
@@ -1,69 +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.graph.editparts;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.ImageFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-
-public class SimpleTypeDefinitionEditPart extends BaseEditPart
-{
-  protected Label label;
-  protected SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy;
-
-  ImageFigure figure;
-  Image image;
-  
-  protected IFigure createFigure()
-  {
-    String iconName = "icons/XSDSimpleTypeForEditPart.gif";
-    image = XSDEditorPlugin.getXSDImage(iconName);
-  
-    figure = new ImageFigure(image);
-    return figure;
-  }
-
-  protected void refreshVisuals()
-  {
-    if (isSelected)
-    {
-      image = XSDEditorPlugin.getXSDImage("icons/XSDSimpleTypeForEditPart.gif");
-    }
-    else
-    {
-      image = XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
-    }
-    figure.setImage(image);
-    figure.repaint();
-  }
-  
-  protected boolean isConnectedEditPart()
-  {
-    return false;
-  }
-  
-  public void deactivate()
-  {
-    super.deactivate();
-    image = null;  // where do we dispose the image?
-  }
-  
-
-  protected void createEditPolicies()
-  { 
-    selectionHandlesEditPolicy = new SelectionHandlesEditPolicyImpl();
-    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionHandlesEditPolicy);   
-  }  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SubstitutionGroupViewerRootEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SubstitutionGroupViewerRootEditPart.java
deleted file mode 100644
index 3899e8e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/SubstitutionGroupViewerRootEditPart.java
+++ /dev/null
@@ -1,76 +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.graph.editparts;
-                                      
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Panel;
-import org.eclipse.gef.EditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerLayout;
-
-              
-
-public class SubstitutionGroupViewerRootEditPart extends BaseEditPart
-{
-  protected final static String MESSAGE_PLACE_HOLDER = "MESSAGE_PLACE_HOLDER";
-  protected Object input;              
-
-  public void setInput(Object input)
-  {
-    this.input = input;
-    refreshChildren();
-  }
-
-  protected IFigure createFigure()
-  {
-    Panel panel = new Panel();
-    ContainerLayout layout = new ContainerLayout();
-    layout.setBorder(60);
-    panel.setLayoutManager(layout);
-    return panel;
-  }   
-           
-
-  protected List getModelChildren() 
-  {               
-    List list = new ArrayList();
-    if (input != null)
-    {
-      list.add(input);
-    }
-    else
-    {
-      list.add(MESSAGE_PLACE_HOLDER);
-    }
-    return list;
-  }         
-
-  protected EditPart createChild(Object model) 
-  { 
-    EditPart editPart = null;
-    if (model == MESSAGE_PLACE_HOLDER)
-    {
-      editPart = new MessageEditPart();
-      editPart.setModel(model);
-    }
-    else
-    {
-      editPart = super.createChild(model);
-    }
-    return editPart;
-  } 
-
-  protected void createEditPolicies()
-  {  
-  }             
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TopLevelComponentEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TopLevelComponentEditPart.java
deleted file mode 100644
index 04b686a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TopLevelComponentEditPart.java
+++ /dev/null
@@ -1,319 +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.graph.editparts;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.RequestConstants;
-import org.eclipse.gef.editpolicies.SelectionEditPolicy;
-import org.eclipse.gef.requests.LocationRequest;
-import org.eclipse.gef.ui.parts.AbstractEditPartViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.gef.util.editparts.AbstractComponentViewerRootEditPart;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.FillLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.GraphicsConstants;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDComponentViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.ComponentNameDirectEditManager;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.model.ModelAdapter;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNamedComponent;
-
-
-public class TopLevelComponentEditPart extends BaseEditPart implements IFeedbackHandler
-{
-  protected Label label;
-  //protected Label arrowLabel;
-  protected ContainerFigure labelHolder = new ContainerFigure();
-  protected SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy;
-  protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
-  protected boolean isReadOnly;
-  protected boolean isSelected;
-  protected Font font;
-  
-  protected IFigure createFigure()
-  {
-    ContainerFigure typeGroup = new ContainerFigure();
-    typeGroup.getContainerLayout().setHorizontal(true);
-
-    //arrowLabel = new Label();
-    //arrowLabel.setIcon(XSDEditorPlugin.getPlugin().getImage("icons/forward.gif"));
-    //typeGroup.add(arrowLabel);
-
-    labelHolder = new ContainerFigure();
-    FillLayout fillLayout = new FillLayout();
-    labelHolder.setLayoutManager(fillLayout);
-    labelHolder.setFill(true);
-    typeGroup.add(labelHolder);
-
-    label = new Label();
-    label.setBorder(new MarginBorder(0, 2, 2, 1));
-    label.setForegroundColor(ColorConstants.black);
-    labelHolder.add(label);
-    
-    try
-	{
-      // evil hack to provide underlines
-      Object model = getModel();
-      
-      boolean isLinux = java.io.File.separator.equals("/");
-      if (model instanceof XSDComplexTypeDefinition ||
-          model instanceof XSDElementDeclaration ||
-          model instanceof XSDModelGroupDefinition)
-      {
-        if (!isLinux)
-        {
-          FontData oldData = GraphicsConstants.medium.getFontData()[0];
-          FontData fontData = new FontData(oldData.getName(), oldData.getHeight(), SWT.NONE);
-
-            // TODO... clean this awful code up... we seem to be leaking here too
-            // we can't call this directly since the methods are OS dependant
-            // fontData.data.lfUnderline = 1
-            // so instead we use reflection
-            Object data = fontData.getClass().getField("data").get(fontData);
-//            System.out.println("data" + data.getClass());
-            data.getClass().getField("lfUnderline").setByte(data, (byte)1);
-            font = new Font(Display.getCurrent(), fontData);
-            label.setFont(font);
-        }
-      }
-	}
-    catch (Exception e)
-	{
-
-	}
-    
-    return typeGroup;
-  }
-  
-  public void deactivate()
-  {
-	  super.deactivate();
-	  if (font != null)
-	  {
-		  font.dispose();
-		  font = null;
-	  }
-  }
-  
-  public void refreshVisuals()
-  {
-    ModelAdapter adapter = XSDModelAdapterFactory.getAdapter(getModel());
-    if (adapter != null)
-    {
-      // isReadOnly = Boolean.TRUE.equals(adapter.getProperty(getModel(), "isReadOnly"));
-      isReadOnly = !XSDGraphUtil.isEditable(getModel());
-      label.setForegroundColor(computeLabelColor());
-      label.setText((String)adapter.getProperty(getModel(), ModelAdapter.LABEL_PROPERTY));
-      Image image = (Image)adapter.getProperty(getModel(), ModelAdapter.IMAGE_PROPERTY);
-      if (image != null) label.setIcon(image);
-      //arrowLabel.setVisible(Boolean.TRUE.equals(adapter.getProperty(getModel(), "drillDown")));
-    }
-    else
-    {
-      label.setText(XSDEditorPlugin.getXSDString("_UI_GRAPH_UNKNOWN_OBJECT") + getModel().getClass().getName());
-      //arrowLabel.setVisible(false);
-    }
-
-    if (reselect)
-    {
-      getViewer().select(this);
-      setReselect(false);
-    }
-  }
-
-
-  public XSDNamedComponent getXSDNamedComponent()
-  {
-    return (XSDNamedComponent) getModel();
-  }
-
-  public List getModelChildren()
-  {
-    return Collections.EMPTY_LIST;
-  }
-  
-  protected void createEditPolicies()
-  { 
-    //installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new NonResizableEditPolicy());    
-    //selectionHandlesEditPolicy = new SelectionHandlesEditPolicyImpl();
-    //installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionHandlesEditPolicy);  
-  	
-    SelectionHandlesEditPolicyImpl policy = new SelectionHandlesEditPolicyImpl();
-    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, policy);
-
-    SelectionEditPolicy feedBackSelectionEditPolicy = new SelectionEditPolicy()
-    {
-      protected void hideSelection()
-      {
-        EditPart editPart = getHost();
-        if (editPart instanceof IFeedbackHandler)
-        {
-          ((IFeedbackHandler)editPart).removeFeedback();
-        }
-      }
-
-      protected void showSelection()
-      {
-        EditPart editPart = getHost();
-        if (editPart instanceof IFeedbackHandler)
-        {
-          ((IFeedbackHandler)editPart).addFeedback();
-        }
-      }
-    };
-    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, feedBackSelectionEditPolicy);
-
-    installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
-  }  
-  
-  public Color computeLabelColor()
-  {
-    Color color = ColorConstants.black;
-    if (isSelected)
-    {
-      color = ColorConstants.white;
-    }
-    else if (isReadOnly)
-    {
-      color = ColorConstants.gray;
-    }
-    return color;
-  }
-
-
-  public void addFeedback()
-  {
-    isSelected = true;
-
-    labelHolder.setBackgroundColor(ColorConstants.black);
-    label.setForegroundColor(computeLabelColor());
-    labelHolder.setFill(true);
-    
-    if (doScroll)
-    {
-      CategoryEditPart categoryEP = (CategoryEditPart)getParent();
-      categoryEP.scrollTo(this);
-      setScroll(false);
-    }
-  }
-  
-  private boolean doScroll = false;
-  public void setScroll(boolean doScroll)
-  {
-    this.doScroll = doScroll;
-  }
-
-  public void removeFeedback()
-  {
-    isSelected = false;
-    labelHolder.setBackgroundColor(null);
-    label.setForegroundColor(computeLabelColor());
-    labelHolder.setFill(false);
-  }
-
-  public void performRequest(Request request)
-  {  
-    if (request.getType() == RequestConstants.REQ_DIRECT_EDIT ||
-        request.getType() == RequestConstants.REQ_OPEN)
-    {
-      
-      Object model = getModel();
-      if (model instanceof XSDComplexTypeDefinition ||
-          model instanceof XSDElementDeclaration ||
-          model instanceof XSDModelGroupDefinition)
-      {
-        if (request instanceof LocationRequest)
-        {
-          LocationRequest locationRequest = (LocationRequest)request;
-          Point p = locationRequest.getLocation();
-        
-          if (hitTest(labelHolder, p))
-          {
-            performDrillDownAction();
-          }              
-        }
-      }
-    }
-  }  
-
-  public boolean hitTest(IFigure target, Point location)
-  {
-    Rectangle b = target.getBounds().getCopy();
-    target.translateToAbsolute(b);  
-    return b.contains(location);
-  }  
-
-  protected void performDrillDownAction()
-  {                                                                                    
-    Runnable runnable = new Runnable()
-    {
-      public void run()
-      {
-        //((XSDComponentViewer)getViewer()).setInput((XSDConcreteComponent)getModel());
-        
-        EditPart editPart = ((AbstractEditPartViewer)getViewer()).getRootEditPart().getContents();
-        if (editPart instanceof AbstractComponentViewerRootEditPart)
-        {
-          AbstractComponentViewerRootEditPart rootEditPart = (AbstractComponentViewerRootEditPart)editPart;
-          rootEditPart.setInput((XSDConcreteComponent)getModel());
-        }
-        else if (editPart instanceof BaseEditPart)
-        {
-          ((XSDComponentViewer)getViewer()).setInput((XSDConcreteComponent)getModel());
-        }
-      }
-    };
-    Display.getCurrent().asyncExec(runnable);
-  }
-  
-  public void doEditName()
-  {
-    removeFeedback();
-    Object object = getModel();
-    if (object instanceof XSDNamedComponent)
-    {
-      ComponentNameDirectEditManager manager = new ComponentNameDirectEditManager(this, label, (XSDNamedComponent)object);
-      simpleDirectEditPolicy.setDelegate(manager);
-      manager.show();
-    }
-  }
-
-  
-  static boolean reselect = false;
-  
-  public void setReselect(boolean state)
-  {
-    reselect = state;
-  }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TypeEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TypeEditPart.java
deleted file mode 100644
index 37a83e1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/TypeEditPart.java
+++ /dev/null
@@ -1,72 +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.graph.editparts;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.gef.EditPolicy;
-import org.eclipse.gef.Request;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SelectionHandlesEditPolicyImpl;
-import org.eclipse.wst.xsd.ui.internal.graph.editpolicies.SimpleDirectEditPolicy;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-
-public class TypeEditPart extends BaseEditPart
-{
-  protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
-
-  protected IFigure createFigure()
-  {
-    ContainerFigure typeGroup = new ContainerFigure();
-//    typeGroup.setBorder(new SimpleRaisedBorder(1));
-//    typeGroup.setBorder(new LineBorder(1));
-//    typeGroup.setBorder(new RoundedLineBorder(1,5));
-
-    Label typeLabel = new Label("type");
-    typeLabel.setBorder(new MarginBorder(0,2,2,1));
-    typeGroup.add(typeLabel);
-
-    return typeGroup;
-  }    
-
-  protected void refreshVisuals()
-  {                 
-    super.refreshVisuals();
-  }
-
-  public XSDTypeDefinition getXSDTypeDefinition()
-  {         
-    return (XSDTypeDefinition)getModel();
-  }
-
-                    
-  public List getModelChildren() 
-  {                   
-    return Collections.EMPTY_LIST;
-  }  
-
-  protected void createEditPolicies()
-  {        
-    SelectionHandlesEditPolicyImpl policy = new SelectionHandlesEditPolicyImpl();
-    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, policy);      
-  } 
-  
-               
-  public void performRequest(Request request)
-  {
-    super.performRequest(request);
-  }  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/WildcardEditPart.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/WildcardEditPart.java
deleted file mode 100644
index 53a86a1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/WildcardEditPart.java
+++ /dev/null
@@ -1,85 +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.graph.editparts;
-                          
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.LineBorder;
-import org.eclipse.draw2d.MarginBorder;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphUtil;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.GraphNodeFigure;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.RepeatableGraphNodeFigure;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDWildcard;
-              
-
-public class WildcardEditPart extends RepeatableGraphNodeEditPart
-{
-  protected Label label;
-
-                             
-  public XSDParticle getXSDParticle()
-  {                    
-    Object o = getXSDWildcard().getContainer();
-    return (o instanceof XSDParticle) ? (XSDParticle)o : null;
-  }
-
-
-  public XSDWildcard getXSDWildcard()
-  {
-    return (XSDWildcard)getModel();
-  }
-
-   
-  protected GraphNodeFigure createGraphNodeFigure()
-  {
-    RepeatableGraphNodeFigure figure = new RepeatableGraphNodeFigure();                                                        
-    figure.setConnected(true);
-    figure.getOutlinedArea().setFill(true);
-
-    label = new Label();    
-    label.setText(XSDEditorPlugin.getXSDString("_UI_ANY_ELEMENT")); 
-    label.setBorder(new MarginBorder(0, 6, 0, 4));
-    label.setFont(mediumBoldFont);        
-
-    figure.getIconArea().add(label);     
-
-    return figure;
-  }  
- 
-      
-  protected void refreshVisuals()
-  {     
-    ContainerFigure rectangle = graphNodeFigure.getOutlinedArea();
-    if (XSDGraphUtil.isEditable(getModel()))
-    {
-      rectangle.setBorder(new LineBorder(2));
-      rectangle.setBackgroundColor(elementBackgroundColor);
-      rectangle.setForegroundColor(isSelected ? ColorConstants.black : elementBorderColor);
-
-      label.setBackgroundColor(elementBackgroundColor);
-      label.setForegroundColor(elementLabelColor);
-    }
-    else
-    {            
-      rectangle.setBorder(new LineBorder(readOnlyBorderColor, 2));
-      rectangle.setBackgroundColor(readOnlyBackgroundColor);
-      rectangle.setForegroundColor(isSelected ? ColorConstants.black : readOnlyBorderColor);
-   
-      label.setBackgroundColor(readOnlyBackgroundColor);
-      label.setForegroundColor(readOnlyBorderColor);
-    } 
-
-    refreshOccurenceLabel(getXSDParticle());
-  }      
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/XSDEditPartFactory.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/XSDEditPartFactory.java
deleted file mode 100644
index 5d6ed1e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editparts/XSDEditPartFactory.java
+++ /dev/null
@@ -1,102 +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.graph.editparts;
-                              
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPartFactory;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDInheritanceViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.model.Category;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-
-
-
-public class XSDEditPartFactory implements EditPartFactory
-{   
-  protected static XSDEditPartFactory instance;
-                      
-  public static XSDEditPartFactory getInstance()
-  {
-    if (instance == null)
-    {               
-      instance = new XSDEditPartFactory();
-    }
-    return instance;
-  }
-  
-  public EditPart createEditPart(EditPart parent, Object model)
-  {
-    EditPart editPart = null;
-           
-    if (model instanceof Category)
-    {                                  
-      editPart = new CategoryEditPart();
-    }
-    else if (model instanceof XSDElementDeclaration)
-    {       
-      editPart = new ElementDeclarationEditPart();
-    }    
-    else if (model instanceof XSDComplexTypeDefinition)
-    {
-      if (parent.getViewer() instanceof XSDInheritanceViewer)
-      {
-        editPart = new RootComplexTypeDefinitionEditPart();
-      }
-      else
-      {
-        if (parent instanceof CategoryEditPart)
-          editPart = new RootComplexTypeDefinitionEditPart();
-        else
-          editPart = new ComplexTypeDefinitionEditPart();             
-      }
-    }      
-    else if (model instanceof XSDModelGroup)
-    {       
-      editPart = new ModelGroupEditPart();
-    }      
-    else if (model instanceof XSDModelGroupDefinition)
-    {       
-      if (parent instanceof CategoryEditPart)
-        editPart = new RootModelGroupDefinitionEditPart();
-      else
-        editPart = new ModelGroupDefinitionEditPart();
-    }  
-    else if (model instanceof XSDSchema)
-    {                                  
-      editPart = new SchemaEditPart();
-    }
-    else if (model instanceof XSDWildcard)
-    {                                  
-      editPart = new WildcardEditPart();
-    }
-    else if (model instanceof XSDSimpleTypeDefinition)
-    {
-      editPart = new SimpleTypeDefinitionEditPart();
-    }
-
-    if (editPart != null)   
-    {
-      editPart.setModel(model);
-      editPart.setParent(parent);
-    }
-    else
-    {      
-//      System.out.println("can't create editPart for " + model);
-//      Thread.dumpStack();
-    }
-    return editPart;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComboBoxCellEditorManager.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComboBoxCellEditorManager.java
deleted file mode 100644
index a7b2329..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComboBoxCellEditorManager.java
+++ /dev/null
@@ -1,203 +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.graph.editpolicies;
-                                                  
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.tools.CellEditorLocator;
-import org.eclipse.gef.tools.DirectEditManager;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ComboBoxCellEditor;
-import org.eclipse.jface.viewers.ICellEditorListener;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-
-public abstract class ComboBoxCellEditorManager extends DirectEditManager implements DirectEditPolicyDelegate
-{
-  protected Label label;                                 
-
-  public ComboBoxCellEditorManager(GraphicalEditPart source,	Label label)
-  {
-	  super(source, ComboBoxCellEditor.class, new InternalCellEditorLocator(label));
-    this.label = label;                        
-  }
-
-  protected void initCellEditor() 
-  {                                             
-  	String initialLabelText = label.getText();   
-
-    CCombo combo = (CCombo)getCellEditor().getControl();
-   	combo.setFont(label.getFont());
-    combo.setForeground(label.getForegroundColor());
-    combo.setBackground(label.getBackgroundColor());
-    /*
-	combo.addKeyListener(new KeyAdapter() {
-			// hook key pressed - see PR 14201  
-			public void keyPressed(KeyEvent keyEvent) {
-				if (keyEvent.character == 'z') { 
-					getCellEditor().applyEditorValue();
-				}
-			}
-		});
-*/
-  ICellEditorListener cellEditorListener = new ICellEditorListener()
-  {
-    public void cancelEditor()
-    {
-//      System.out.println("cancelEditor");
-    }
-    public void applyEditorValue()
-    {
-//      System.out.println("applyEditorValue");
-    }
-    public void editorValueChanged(boolean old, boolean newState)
-    {
-//      System.out.println("editorValueChanged");
-    }
-  };
-  getCellEditor().addListener(cellEditorListener);
-
-    String[] item = combo.getItems();
-    for (int i = 0; i < item.length; i++)
-    {
-      if (item[i].equals(initialLabelText))
-      {
-        getCellEditor().setValue(new Integer(i));
-        break;
-      }
-    } 	
-  }	 
-         
-  // hack... for some reason the ComboBoxCellEditor does't fire an editorValueChanged to set the dirty flag
-  // unless we overide this method to return true, the manager is not notified of changes made in the cell editor
-  protected boolean isDirty()
-  {
-	  return true;
-  }
-
-  protected CellEditor createCellEditorOn(Composite composite)
-  { 
-    boolean isLabelTextInList = false;                                       
-    List list = computeComboContent();
-    for (Iterator i = list.iterator(); i.hasNext(); )
-    {
-      String string = (String)i.next();
-      if (string.equals(label.getText()))
-      {                               
-         isLabelTextInList = true;
-         break;
-      }
-    } 
-         
-    if (!isLabelTextInList)
-    {
-      list.add(label.getText());
-    }
-                                               
-    List sortedList = computeSortedList(list);
-    String[] stringArray = new String[sortedList.size()];
-    for (int i = 0; i < stringArray.length; i++)
-    {
-      stringArray[i] = (String)sortedList.get(i);
-    }
-    return new ComboBoxCellEditor(composite, stringArray);
-	}                                                                 
-
-  protected List computeSortedList(List list)
-  {
-    return list;
-  }
-
-  protected abstract List computeComboContent(); 
-
-  protected abstract void performModify(String value);
-
-  public static class InternalCellEditorLocator implements CellEditorLocator
-  {
-    protected Label label;
-
-    public InternalCellEditorLocator(Label label)
-    {
-      this.label = label;
-    }                   
-
-    public void relocate(CellEditor celleditor) 
-    {
-      CCombo combo = (CCombo)celleditor.getControl();  
-	    Point pref = combo.computeSize(-1, -1);
-	    Rectangle rect = label.getTextBounds().getCopy();
-	    label.translateToAbsolute(rect);
-	    combo.setBounds(rect.x-4, rect.y-1, pref.x+1, pref.y+1);
-    }
-  } 
-   
-  // implements DirectEditPolicyDelegate
-  // 
-  public void performEdit(CellEditor cellEditor)
-  {   
-    CCombo combo = (CCombo)getCellEditor().getControl();
-    int index = combo.getSelectionIndex();              
-    if (index != -1)
-    {      
-      performModify(combo.getItem(index));
-    }  
-    else
-    {
-      String typedValue = combo.getText();	
-      if (combo.indexOf(typedValue) != -1)
-      {	      
-	    performModify(typedValue);
-      }      	
-      else
-      {
-      	String closeMatch = getCloseMatch(typedValue, combo.getItems());
-      	if (closeMatch != null)
-      	{
-		  performModify(closeMatch);      	
-      	}
-      	else
-      	{      	
-      	  Display.getCurrent().beep();
-      	}
-      }
-    }    	                                                
-  }
-  
-  protected String getCloseMatch(String value, String[] items)
-  {
-    int matchIndex = -1;
-
-    for (int i = 0; i < items.length; i++)
-    {
-    	String item = items[i];
-    	String a = getLocalName(value);
-    	String b = getLocalName(item);
-		  if (a.equalsIgnoreCase(b))
-		  { 
-			  matchIndex = i;
-			  break;				
-		  }	    	     
-    }  
-    return matchIndex != -1 ? items[matchIndex] : null;
-  }
-  
-  protected String getLocalName(String string)
-  {
-		int index = string.indexOf(":");
-	  return (index != -1) ? string.substring(index + 1) : string;  
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComponentNameDirectEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComponentNameDirectEditManager.java
deleted file mode 100644
index 03c23e6..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/ComponentNameDirectEditManager.java
+++ /dev/null
@@ -1,100 +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.graph.editpolicies;
-                                                  
-import org.eclipse.draw2d.Label;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.TopLevelComponentEditPart;
-import org.eclipse.xsd.XSDNamedComponent;
-
-
-
-public class ComponentNameDirectEditManager extends TextCellEditorManager
-{
-  protected XSDNamedComponent component;
-  protected static GraphicalEditPart mySource;
-
-  public ComponentNameDirectEditManager(GraphicalEditPart source,	Label label, XSDNamedComponent component)
-  {
-    super(source, label);  
-    this.component = component;
-    mySource = source;
-  }
-
-  public void performModify(final String value)
-  {
-    if (value.length() > 0)
-    {
-      DelayedRenameRunnable runnable = new DelayedRenameRunnable(component, value);
-      Display.getCurrent().asyncExec(runnable);
-    }
-  }      
-
-  protected static class DelayedRenameRunnable implements Runnable
-  {
-    protected XSDNamedComponent component;
-    protected String name;
-
-    public DelayedRenameRunnable(XSDNamedComponent component, String name)
-    {                                                               
-      this.component = component;
-      this.name = name;
-    }                                                              
-
-    public void run()       
-    { 
-      //TODO cs : revisit
-      /*                            
-      XSDSwitch xsdSwitch = new XSDSwitch()
-      {                   
-        public Object caseXSDTypeDefinition(XSDTypeDefinition object)
-        {
-          new GlobalSimpleOrComplexTypeRenamer(object, name).visitSchema(object.getSchema());
-          return null;
-        } 
-      
-        public Object caseXSDElementDeclaration(XSDElementDeclaration object)
-        {           
-          if (object.isGlobal())
-          {
-            new GlobalElementRenamer(object, name).visitSchema(object.getSchema());
-          }
-          return null;
-        }
-      
-        public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition object)
-        {
-          new GlobalGroupRenamer(object, name).visitSchema(object.getSchema());
-          return null;
-        }
-      };
-      xsdSwitch.doSwitch(component);*/ 
-      component.setName(name);
-      if (mySource instanceof TopLevelComponentEditPart)
-      {
-        ((TopLevelComponentEditPart)mySource).setReselect(true);        
-      }
-    }
-  }
-  
-  protected void bringDown()
-  {
-    super.bringDown();
-    if (mySource != null)
-    {
-      if (mySource instanceof TopLevelComponentEditPart)
-      {
-        ((TopLevelComponentEditPart)mySource).setReselect(true);        
-      }
-    }
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropCommand.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropCommand.java
deleted file mode 100644
index aa7a60d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropCommand.java
+++ /dev/null
@@ -1,161 +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.graph.editpolicies;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.FigureCanvas;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.PointList;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.EditPartViewer;
-import org.eclipse.gef.commands.Command;
-import org.eclipse.gef.requests.ChangeBoundsRequest;
-import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
-import org.eclipse.wst.xsd.ui.internal.actions.MoveAction;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.IConnectionRenderingViewer;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ComplexTypeDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.GraphNodeEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ModelGroupDefinitionEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.ModelGroupEditPart;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-
-public class DragAndDropCommand extends Command //AbstractCommand
-{ 
-  protected EditPartViewer viewer;    
-  protected ChangeBoundsRequest request;
-  protected GraphNodeEditPart childRefEditPart;    
-  public GraphNodeEditPart parentEditPart; 
-  public Point location;
-  protected MoveAction action;    
-  protected boolean canExecute;
-
-  public DragAndDropCommand(EditPartViewer viewer, ChangeBoundsRequest request)
-  {
-    this.viewer = viewer;                    
-    this.request = request;
-
-    location = request.getLocation();   
-    EditPart target = viewer.findObjectAt(location); 
-    if (viewer instanceof ScrollingGraphicalViewer)
-    {  
-      ScrollingGraphicalViewer sgv = (ScrollingGraphicalViewer)viewer;
-      Point p = ((FigureCanvas)sgv.getControl()).getViewport().getViewLocation();
-      location.y += p.y;
-      location.x += p.x;
-    }
-     
-    List list = request.getEditParts();
-    if (list.size() > 0)
-    {           
-      parentEditPart = getParentEditPart(target);
-      if (parentEditPart != null)
-      {                                          
-        for (Iterator i = parentEditPart.getChildren().iterator(); i.hasNext(); )
-        {
-          EditPart child = (EditPart)i.next();
-          if (child instanceof GraphNodeEditPart)
-          {
-            GraphNodeEditPart childGraphNodeEditPart = (GraphNodeEditPart)child;
-            Rectangle rectangle = childGraphNodeEditPart.getSelectionFigure().getBounds();
-     
-            if (location.y < rectangle.getCenter().y)
-            {                                    
-              childRefEditPart = childGraphNodeEditPart;   
-              break;
-            }
-          }
-        } 
-            
-        List editPartsList = request.getEditParts();
-        List concreteComponentList = new ArrayList(editPartsList.size());
-        for (Iterator i = editPartsList.iterator(); i.hasNext(); )
-        {                                                       
-          EditPart editPart = (EditPart)i.next();
-          concreteComponentList.add((XSDConcreteComponent)editPart.getModel());
-        } 
-        XSDConcreteComponent refComponent = childRefEditPart != null ? (XSDConcreteComponent)childRefEditPart.getModel() : null;
-
-        action = new MoveAction((XSDConcreteComponent)parentEditPart.getModel(), concreteComponentList, refComponent);
-        canExecute = action.canMove();                                            
-      }            
-    }     
-  }
-             
-  protected GraphNodeEditPart getParentEditPart(EditPart target)
-  {
-    GraphNodeEditPart result = null;    
-    while (target != null)
-    {                     
-      if (target instanceof ModelGroupEditPart)
-      {
-        result = (GraphNodeEditPart)target;
-        break;
-      }
-      else if (target instanceof ComplexTypeDefinitionEditPart ||
-               target instanceof ModelGroupDefinitionEditPart)
-      {
-        List list = target.getChildren();
-        for (Iterator i = list.iterator(); i.hasNext(); )
-        {
-          Object child = i.next();
-          if (child instanceof ModelGroupEditPart)
-          {
-            result = (GraphNodeEditPart)child;
-            break;
-          }
-        }   
-        if (result != null)
-        {
-          break;
-        }
-      }
-      target = target.getParent();
-    }
-    return result;
-  }
-
-  public void execute()
-  {           
-    if (canExecute)
-    { 
-      action.run(); 
-    }
-  }     
-  
-  public void redo()
-  {
-
-  }  
-  
-  public void undo()
-  {
-  }     
-  
-  public boolean canExecute()
-  { 
-    return canExecute;
-  } 
-
-  public PointList getConnectionPoints(Rectangle draggedFigureBounds)
-  {             
-    PointList pointList = null;      
-    if (parentEditPart != null && childRefEditPart != null && viewer instanceof IConnectionRenderingViewer)
-    {                                
-      pointList = ((IConnectionRenderingViewer)viewer).getConnectionRenderingFigure().getConnectionPoints(parentEditPart, childRefEditPart, draggedFigureBounds);      
-    }               
-    return pointList != null ? pointList : new PointList();
-  }                                                                  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropEditPolicy.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropEditPolicy.java
deleted file mode 100644
index 18468c8..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/DragAndDropEditPolicy.java
+++ /dev/null
@@ -1,47 +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.graph.editpolicies;
-
-import org.eclipse.gef.EditPartViewer;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.requests.ChangeBoundsRequest;
-
-public class DragAndDropEditPolicy extends org.eclipse.gef.editpolicies.GraphicalEditPolicy
-{ 
-  protected EditPartViewer viewer;    
-  protected SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy;
-
-  public DragAndDropEditPolicy(EditPartViewer viewer, SelectionHandlesEditPolicyImpl selectionHandlesEditPolicy)
-  {
-    this.viewer = viewer;
-    this.selectionHandlesEditPolicy = selectionHandlesEditPolicy;
-  }
-
-  public boolean understandsRequest(Request req)
-  {
-	  return true;
-  }                           
-    
-  static int count2 = 0;
-  boolean theCommandResult = true;   
-  
-  public org.eclipse.gef.commands.Command getCommand(Request request)
-  {             
-    // this block is commented out to disable move for now
-    DragAndDropCommand command = null;                            
-    if (request instanceof ChangeBoundsRequest)
-    {
-      command = new DragAndDropCommand(viewer, (ChangeBoundsRequest)request);  
-      selectionHandlesEditPolicy.setDragAndDropCommand(command);
-    } 
-    return command;             
-  }                                                     
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/GraphNodeDragTracker.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/GraphNodeDragTracker.java
deleted file mode 100644
index 58fbaac..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/GraphNodeDragTracker.java
+++ /dev/null
@@ -1,34 +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.graph.editpolicies;
-
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.commands.Command;
-import org.eclipse.gef.tools.DragEditPartsTracker;
-
-                                   
-public class GraphNodeDragTracker extends DragEditPartsTracker 
-{                                     
-  protected EditPart editPart; 
-           
-  public GraphNodeDragTracker(EditPart editPart)
-  {
-    super(editPart);
-    this.editPart = editPart;
-  } 
-                                              
-  protected Command getCommand() 
-  { 
-	  Request request = getTargetRequest();
-    return editPart.getCommand(request); 
-  }
-} 
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SelectionHandlesEditPolicyImpl.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SelectionHandlesEditPolicyImpl.java
deleted file mode 100644
index d09b53a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/SelectionHandlesEditPolicyImpl.java
+++ /dev/null
@@ -1,257 +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.graph.editpolicies;
-                                 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.FigureUtilities;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.Polyline;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.PointList;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.EditPart;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.Request;
-import org.eclipse.gef.editpolicies.SelectionHandlesEditPolicy;
-import org.eclipse.gef.handles.MoveHandle;
-import org.eclipse.gef.handles.MoveHandleLocator;
-import org.eclipse.gef.requests.ChangeBoundsRequest;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.BaseEditPart;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.IFeedbackHandler;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.BogusLayout;
-import org.eclipse.wst.xsd.ui.internal.graph.figures.ContainerFigure;
-
-
-
-
-
-public class SelectionHandlesEditPolicyImpl	extends SelectionHandlesEditPolicy
-{
-  protected IFigure feedback;
-  protected Rectangle originalLocation;
-  protected DragAndDropCommand dragAndDropCommand;
-
-  protected List createSelectionHandles()
-  {              
-    List list = new ArrayList();
-    EditPart editPart = getHost();
-     
-    if (editPart instanceof GraphicalEditPart)
-    {
-      GraphicalEditPart graphicalEditPart = (GraphicalEditPart)editPart;
-      IFigure figure = (graphicalEditPart instanceof BaseEditPart) ? 
-                          ((BaseEditPart)graphicalEditPart).getSelectionFigure() :
-                          graphicalEditPart.getFigure();
-   
-      Cursor cursorFigure = figure.getCursor();
-      MoveHandleLocator loc = new MoveHandleLocator(figure);    
-      MoveHandle moveHandle = new MoveHandle(graphicalEditPart, loc);     
-      moveHandle.setCursor(cursorFigure);
-      list.add(moveHandle);
-    }
-
-    return list;
-  }   
-  
-
-  public boolean understandsRequest(Request request)
-  {    
-    boolean result = false;
-
-	  if (REQ_MOVE.equals(request.getType()))
-    {  
-		  result = false; // return false to disable move for now 
-    }
-    else
-    {
-	    result = super.understandsRequest(request);
-    }
-    return result;
-  }
-  
-
-  public org.eclipse.gef.commands.Command getCommand(Request request) 
-  {                                          
-    return null;  
-  }   
-
-  public void setDragAndDropCommand(DragAndDropCommand dragAndDropCommand)
-  {
-    this.dragAndDropCommand = dragAndDropCommand;
-  }
-
-  protected org.eclipse.gef.commands.Command getMoveCommand(ChangeBoundsRequest request) 
-  {
-	  ChangeBoundsRequest req = new ChangeBoundsRequest(REQ_MOVE_CHILDREN);
-	  req.setEditParts(getHost());
-	
-	  req.setMoveDelta(request.getMoveDelta());
-	  req.setSizeDelta(request.getSizeDelta());
-	  req.setLocation(request.getLocation());
-
-	  return getHost().getParent().getCommand(req);
-  } 
-
-  public void showSourceFeedback(Request request)
-  {  	
-	  if (REQ_MOVE.equals(request.getType()) ||
-		  REQ_ADD.equals(request.getType()))
-		  showChangeBoundsFeedback((ChangeBoundsRequest)request);
-  }
-
-  protected void showChangeBoundsFeedback(ChangeBoundsRequest request)
-  {
-  	IFigure p = getDragSourceFeedbackFigure();
-  	Rectangle r = originalLocation.getTranslated(request.getMoveDelta());
-  	Dimension resize = request.getSizeDelta();
-  	r.width += resize.width;
-  	r.height+= resize.height;
-  
-  	((GraphicalEditPart)getHost()).getFigure().translateToAbsolute(r);
-  	p.translateToRelative(r);
-                
-    Rectangle pBounds = r.getCopy();                            
-
-    if (dragAndDropCommand != null && dragAndDropCommand.canExecute())
-    {                     
-      int size = request.getEditParts().size();
-      if (size > 0 && request.getEditParts().get(size - 1) == getHost())
-      {         
-        PointList pointList = dragAndDropCommand.getConnectionPoints(r);
-        if (pointList != null && pointList.size() > 0)
-        {
-          polyLine.setPoints(pointList);
-          
-          Point firstPoint = pointList.getFirstPoint();
-          if (firstPoint != null)
-          {
-            pBounds = pBounds.getUnion(new Rectangle(firstPoint.x, firstPoint.y, 1, 1));
-          }
-        }
-      }
-    }
-    p.setBounds(pBounds);
-    ghostShape.setBounds(r);
-  	p.validate();
-  }        
-
-
-
-
-  protected IFigure getDragSourceFeedbackFigure() 
-  {
-    EditPart editPart = getHost(); 
-    if (feedback == null && editPart instanceof BaseEditPart)
-    {                                       
-      BaseEditPart baseEditPart = (BaseEditPart)editPart;
-		  originalLocation = new Rectangle(baseEditPart.getSelectionFigure().getBounds());
-		  feedback = createDragSourceFeedbackFigure(baseEditPart.getSelectionFigure());
-	  }
-	  return feedback;
-  }  
-    
-  Polyline polyLine;
-  RectangleFigure ghostShape;
-
-  protected IFigure createDragSourceFeedbackFigure(IFigure draggedFigure)
-  {
-		// Use a ghost rectangle for feedback  
-    ContainerFigure panel = new ContainerFigure(); 
-    panel.setLayoutManager(new BogusLayout());//new FreeformLayout());
-
-		ghostShape = new RectangleFigure();
-		FigureUtilities.makeGhostShape(ghostShape);
-		ghostShape.setLineStyle(Graphics.LINE_DASHDOT);
-		ghostShape.setForegroundColor(ColorConstants.white);
-    
-    Rectangle r = draggedFigure.getBounds();
-    panel.setOpaque(false);
-    panel.add(ghostShape);                 
-
-    polyLine = new Polyline();                         
-    //polyLine.setLineStyle(Graphics.LINE_DASHDOT);      
-    polyLine.setLineWidth(3);
-    panel.add(polyLine);
-
-    panel.setBounds(r);
-		ghostShape.setBounds(r);
-
-		addFeedback(panel);
-
-		return panel;
-	} 
-
-  public void deactivate()
-  {
-	  if (feedback != null)
-    {
-		  removeFeedback(feedback);
-		  feedback = null;
-	  }
-	  hideFocus();
-	  super.deactivate();
-  }
-
-  /**
-   * Erase feedback indicating that the receiver object is 
-   * being dragged.  This method is called when a drag is
-   * completed or cancelled on the receiver object.
-   * @param dragTracker org.eclipse.gef.tools.DragTracker The drag tracker of the tool performing the drag.
-   */
-  protected void eraseChangeBoundsFeedback(ChangeBoundsRequest request) 
-  {
-	  if (feedback != null) 
-    {		      
-		  removeFeedback(feedback);
-	  }
-	  feedback = null;
-	  originalLocation = null;
-  }
-
-  /**
-   * Erase feedback indicating that the receiver object is 
-   * being dragged.  This method is called when a drag is
-   * completed or cancelled on the receiver object.
-   * @param dragTracker org.eclipse.gef.tools.DragTracker The drag tracker of the tool performing the drag.
-   */
-  public void eraseSourceFeedback(Request request) 
-  {
-    if (REQ_MOVE.equals(request.getType()) ||  REQ_ADD.equals(request.getType()))
-    {
-		  eraseChangeBoundsFeedback((ChangeBoundsRequest)request);
-    }
-  }
-  
-  protected void hideSelection()
-  {
-    EditPart editPart = getHost();
-    if (editPart instanceof IFeedbackHandler)
-    {
-      ((IFeedbackHandler)editPart).removeFeedback();
-    }
-  }
-
-  protected void showSelection()
-  {
-    EditPart editPart = getHost();
-    if (editPart instanceof IFeedbackHandler)
-    {
-      ((IFeedbackHandler)editPart).addFeedback();
-    }
-  }  
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TextCellEditorManager.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TextCellEditorManager.java
deleted file mode 100644
index 6409937..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TextCellEditorManager.java
+++ /dev/null
@@ -1,74 +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.graph.editpolicies;
-                                                  
-import org.eclipse.draw2d.Label;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gef.tools.CellEditorLocator;
-import org.eclipse.gef.tools.DirectEditManager;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Text;
-
-public abstract class TextCellEditorManager extends DirectEditManager implements DirectEditPolicyDelegate
-{
-  protected Label label;                                 
-
-  public TextCellEditorManager(GraphicalEditPart source,	Label label)
-  {
-	  super(source, TextCellEditor.class, new InternalCellEditorLocator(label));
-    this.label = label;     
-  }
-
-  protected void initCellEditor() 
-  {                                             
-  	String initialLabelText = label.getText();
-  	getCellEditor().setValue(initialLabelText);
-  	Text text = (Text)getCellEditor().getControl();
-  	text.setFont(label.getFont());
-    text.setForeground(label.getForegroundColor());
-    text.setBackground(label.getBackgroundColor());
-  	text.selectAll();
-  }	          
-
-  protected abstract void performModify(String value);
-    
-  public static class InternalCellEditorLocator implements CellEditorLocator
-  {
-    protected Label label;
-
-    public InternalCellEditorLocator(Label label)
-    {
-      this.label = label;
-    }                   
-
-    public void relocate(CellEditor celleditor) 
-    {
-      Text text = (Text)celleditor.getControl();  
-	    Point sel = text.getSelection();
-	    Point pref = text.computeSize(-1, -1);
-	    Rectangle rect = label.getTextBounds().getCopy();
-	    label.translateToAbsolute(rect);
-	    text.setBounds(rect.x-4, rect.y-1, pref.x+1, pref.y+1);	
-	    text.setSelection(0);
-	    text.setSelection(sel); 
-    }
-  }    
-
-  // implements DirectEditPolicyDelegate
-  // 
-  public void performEdit(CellEditor cellEditor)
-  {
-    performModify((String)cellEditor.getValue());
-  }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TypeReferenceDirectEditManager.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TypeReferenceDirectEditManager.java
deleted file mode 100644
index c62d1e9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/editpolicies/TypeReferenceDirectEditManager.java
+++ /dev/null
@@ -1,118 +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.graph.editpolicies;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.Label;
-import org.eclipse.gef.EditPart;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.BaseEditPart;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSchema;
-
-
-
-public class TypeReferenceDirectEditManager extends ComboBoxCellEditorManager
-{
-  protected BaseEditPart editPart;                                                
-  protected XSDElementDeclaration ed;
-
-  
-  public TypeReferenceDirectEditManager(BaseEditPart source,	XSDElementDeclaration ed, Label label)
-  {
-    super(source, label);  
-    editPart = source;               
-    this.ed = ed;
-  }
-
-  protected List computeComboContent()
-  {             
-    XSDSchema schema = ed.getSchema();
-    List typeNameList = new ArrayList();
-    if (schema != null)
-    {         
-      TypesHelper typesHelper = new TypesHelper(schema);
-      typeNameList.addAll(typesHelper.getUserSimpleTypeNamesList());
-      typeNameList.addAll(typesHelper.getUserComplexTypeNamesList());               
-      typeNameList.addAll(typesHelper.getBuiltInTypeNamesList());
-    }                        
-    return typeNameList;
-  }
-    
-  public void performModify(String value)
-  {                                               
-    // we need to perform an asyncExec here since the 'host' editpart may be removed
-    // as a side effect of performing the action
-    DelayedRenameRunnable runnable = new DelayedRenameRunnable(editPart, ed, value);
-    Display.getCurrent().asyncExec(runnable);   
-  }  
-   
-
-  protected List computeSortedList(List list)
-  {
-    return TypesHelper.sortList(list);
-  }
-
-  protected static class DelayedRenameRunnable implements Runnable
-  {
-    protected BaseEditPart editPart;                                                
-    protected EditPart editPartParent;
-    protected XSDElementDeclaration ed;
-    protected String name;
-
-    public DelayedRenameRunnable(BaseEditPart editPart, XSDElementDeclaration ed, String name)
-    {                                                               
-      this.editPart = editPart;
-      editPartParent = editPart.getParent();
-      this.ed = ed;
-      this.name = name;
-    }                                                              
-
-    public void run()
-    {                             
-      //BaseGraphicalViewer viewer = editPart.getBaseGraphicalViewer();
-      //viewer.setInputEnabled(false);
-      //viewer.setSelectionEnabled(false);      
-      if (name.equals("<anonymous>"))
-      {          
-        try
-        {
-          ed.getResolvedElementDeclaration().getElement().removeAttribute("type");
-        }
-        catch (Exception e)
-        {
-        }
-      }
-      else
-      {
-        if (ed.getResolvedElementDeclaration().getAnonymousTypeDefinition() != null) // isSetAnonymousTypeDefinition())
-        {
-          if (!(name.equals("<anonymous>")))
-          {
-            ed.getResolvedElementDeclaration().getElement().setAttribute("type", name);
-            XSDDOMHelper.updateElementToNotAnonymous(ed.getResolvedElementDeclaration().getElement());
-//            ed.getResolvedElementDeclaration().setAnonymousTypeDefinition(null);
-            return;
-          }
-        }
-        ed.getResolvedElementDeclaration().getElement().setAttribute("type", name);
-      }
-      //viewer.setInputEnabled(true);
-      //viewer.setSelectionEnabled(true);
-      //viewer.setSelection(new StructuredSelection(editPartParent));
-    }
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/BogusLayout.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/BogusLayout.java
deleted file mode 100644
index cfa8c75..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/BogusLayout.java
+++ /dev/null
@@ -1,61 +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.graph.figures;
-
-import org.eclipse.draw2d.AbstractLayout;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-
-
-/**
- * Figures using the StackLayout as their layout manager have
- * their children placed on top of one another. Order of 
- * placement is determined by the order in which the children
- * were added, first child added placed on the bottom.
- */
-public class BogusLayout
-	extends AbstractLayout
-{
-                             
-protected int spacing;
-
-public BogusLayout(){}
-
-protected Dimension calculatePreferredSize(IFigure figure, int w, int h)
-{	                 
-  Dimension d = new Dimension();
-  return d;
-} 
-
-/*
- * Returns the minimum size required by the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- */
-/*jvh - final
-public Dimension getMinimumSize(IFigure figure){
-	return new Dimension();
-}
-
-public Dimension getPreferredSize(IFigure figure){
-	return new Dimension();
-}            */
-
-/*
- * Lays out the children on top of each other with
- * their sizes equal to that of the available
- * paintable area of the input container figure.
- */
-public void layout(IFigure figure){   
- 
-} 
- 
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenterLayout.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenterLayout.java
deleted file mode 100644
index a0087ab..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenterLayout.java
+++ /dev/null
@@ -1,117 +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.graph.figures;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.AbstractLayout;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-
-/**
- * Figures using the StackLayout as their layout manager have
- * their children placed on top of one another. Order of 
- * placement is determined by the order in which the children
- * were added, first child added placed on the bottom.
- */
-public class CenterLayout
-	extends AbstractLayout
-{
-                             
-protected int spacing;
-
-public CenterLayout(){}
-public CenterLayout(int spacing){ this.spacing = spacing; }
-
-/**
- * Calculates and returns the preferred size of the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- *
- * @param figure  Container figure for which preferred size is required.
- * @return  The preferred size of the input figure.
- */
-protected Dimension calculatePreferredSize(IFigure figure, int w, int h){
-	Dimension d = calculatePreferredClientAreaSize(figure);
-	/*d.expand(figure.getInsets().getWidth(),
-	         figure.getInsets().getHeight()); */
-        d.expand(w,
-	         h);
-	d.union(getBorderPreferredSize(figure));
-	return d;
-}
-
-protected Dimension calculatePreferredClientAreaSize(IFigure figure){
-	Dimension d = new Dimension();
-	List children = figure.getChildren();
-	for (Iterator i = children.iterator(); i.hasNext(); )
-  {
-		IFigure child = (IFigure)i.next();
-    Dimension childSize = child.getPreferredSize();
-    d.height += childSize.height;
-    d.width = Math.max(childSize.width, d.width);
-	}	                    
-  int childrenSize = children.size();       
-  if (childrenSize > 0)
-  {
-    d.height += spacing * children.size() - 1;
-  }
-	return d;
-}
-
-/*
- * Returns the minimum size required by the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- */
-public Dimension getMinimumSize(IFigure figure, int wHint, int hHint){
-	Dimension d = new Dimension();
-	List children = figure.getChildren();
-	IFigure child;
-	for (int i=0; i < children.size(); i++){
-		child = (IFigure)children.get(i);
-		d.union(child.getMinimumSize());
-	}
-	d.expand(figure.getInsets().getWidth(),
-	         figure.getInsets().getHeight());
-	return d;
-}
-
-public Dimension getPreferredSize(IFigure figure, int wHint, int hHint){
-	return calculatePreferredSize(figure, wHint, hHint);
-}
-
-
-/*
- * Lays out the children on top of each other with
- * their sizes equal to that of the available
- * paintable area of the input container figure.
- */
-public void layout(IFigure figure){
-	Rectangle r = figure.getClientArea();
-	List children = figure.getChildren();
-  
-  Dimension preferredClientAreaSize = calculatePreferredClientAreaSize(figure);
-  int x = r.x + (r.width - preferredClientAreaSize.width) / 2;
-  int y = r.y + (r.height - preferredClientAreaSize.height) / 2;
-
-	for (Iterator i = children.iterator(); i.hasNext(); )
-  {
-		IFigure child = (IFigure)i.next();
-    Dimension childSize = child.getPreferredSize();
-		child.setBounds(new Rectangle(x, y, childSize.width, childSize.height));
-    y += childSize.height + spacing;
-	}
-}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenteredIconFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenteredIconFigure.java
deleted file mode 100644
index 3426bb0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/CenteredIconFigure.java
+++ /dev/null
@@ -1,39 +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.graph.figures;
-            
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.swt.graphics.Image;
-              
-
-public class CenteredIconFigure extends ContainerFigure
-{                                                
-  public Image image;  
-                               
-  public CenteredIconFigure()
-  {
-    super();
-    setFill(true);   
-  }
-
-  protected void fillShape(Graphics g)
-  {    
-    super.fillShape(g);    
-    if (image != null)
-    {                         
-      Rectangle r = getBounds();                                                         
-      Dimension imageSize = new Dimension(16, 16);
-      g.drawImage(image, r.x + (r.width - imageSize.width)/2, r.y + (r.height - imageSize.height)/2);
-    }
-  }          
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ConnectionFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ConnectionFigure.java
deleted file mode 100644
index aaa05f1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ConnectionFigure.java
+++ /dev/null
@@ -1,210 +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.graph.figures;
-       
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.PointList;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.wst.xsd.ui.internal.graph.editparts.GraphNodeEditPart;
-
-              
-
-public class ConnectionFigure extends RectangleFigure
-{               
-  protected boolean isOutlined = true;
-  protected IFigure xsdFigure;
-
-  public ConnectionFigure(IFigure xsdFigure)
-  {
-    setOpaque(false);                   
-    this.xsdFigure = xsdFigure;
-    //setFocusTraversable(false); 
-    //setEnabled(false); 
-  }
-           
-  protected boolean isMouseEventTarget()
-  {
-    return false;
-  }        
-
-  public boolean containsPoint(int x, int y){return false;}
-
-  protected void fillShape(Graphics graphics)
-  { 
-    graphics.setForegroundColor(ColorConstants.black);
-    drawLines(graphics, xsdFigure);
-  }
-
-  protected void drawLines(Graphics graphics, IFigure figure)
-  {
-    if (figure instanceof GraphNodeFigure)
-    {
-      GraphNodeFigure graphNodeFigure = (GraphNodeFigure)figure;         
-      if (graphNodeFigure.isConnected() && graphNodeFigure.isExpanded())
-      {
-        List childList = graphNodeFigure.getChildGraphNodeFigures();
-        if (childList.size() > 0)
-        {                                         
-          Rectangle r = graphNodeFigure.getConnectionRectangle();    
-          
-          int x1 = r.x + r.width;
-          int y1 = r.y + r.height/2;
-          
-          int startOfChildBox = ((GraphNodeFigure)childList.get(0)).getConnectionRectangle().x;
-
-          int x2 = x1 + (startOfChildBox - x1) / 3;
-          int y2 = y1;
-                    
-          if (childList.size() > 1)
-          {                                 
-            graphics.drawLine(x1, y1, x2, y2);
-          
-            int minY = Integer.MAX_VALUE;
-            int maxY = -1;
-          
-            for (Iterator i = childList.iterator(); i.hasNext(); )
-            {
-              GraphNodeFigure childGraphNodeFigure = (GraphNodeFigure)i.next();
-              Rectangle childConnectionRectangle = childGraphNodeFigure.getConnectionRectangle();
-              int y = childConnectionRectangle.y + childConnectionRectangle.height / 2;
-             
-              minY = Math.min(minY, y);
-              maxY = Math.max(maxY, y);             
-              graphics.drawLine(x2, y, childConnectionRectangle.x, y);            
-            }                   
-            graphics.drawLine(x2, minY, x2, maxY);
-          }
-          else
-          {
-            graphics.drawLine(x1, y1, startOfChildBox, y2);
-          }
-        }                            
-      }                             
-    }
-
-    //boolean visitChildren = true;
-    List children = figure.getChildren();
-    for (Iterator i = children.iterator(); i.hasNext(); )
-    {
-      IFigure child = (IFigure)i.next();
-      drawLines(graphics, child);
-    }
-  }    
-
-
-  // This method supports the preview connection line function related to drag and drop
-  //     
-  public PointList getConnectionPoints(GraphNodeEditPart parentEditPart, GraphNodeEditPart childRefEditPart, Rectangle draggedFigureBounds)
-  {           
-    PointList pointList = new PointList();                         
-    int[] data = new int[1];
-    Point a = getConnectionPoint(parentEditPart, childRefEditPart, data);
-    if (a != null)
-    {   
-      int draggedFigureBoundsY = draggedFigureBounds.y + draggedFigureBounds.height/2;
-
-      pointList.addPoint(a); 
-      //pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
-      
-      if (data[0] == 0) // insert between 2 items
-      {                                         
-        int x = a.x + (draggedFigureBounds.x - a.x)/2;
-        pointList.addPoint(new Point(x, a.y));
-        pointList.addPoint(new Point(x, draggedFigureBoundsY));        
-        pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
-      }
-      else // insert at first or last position
-      {
-        pointList.addPoint(new Point(a.x, draggedFigureBoundsY));   
-        pointList.addPoint(new Point(draggedFigureBounds.x, draggedFigureBoundsY));
-      }
-    }       
-    return pointList;
-  }
-
-         
-  // This method supports the preview connection line function related to drag and drop
-  //     
-  protected Point getConnectionPoint(GraphNodeEditPart parentEditPart, GraphNodeEditPart childRefEditPart, int[] data)
-  {                      
-    Point point = null;     
-    List childList = parentEditPart.getChildren();         
-
-    //TreeNodeIconFigure icon = ((TreeNodeFigure)parent.getFigure()).treeNodeIconFigure;
-                                                                                                                                               
-    if (childList.size() > 0)
-    {   
-      point = new Point();
-
-      GraphNodeEditPart prev = null;    
-      GraphNodeEditPart next = null;
-                               
-      for (Iterator i = childList.iterator(); i.hasNext(); )
-      {             
-        Object o = i.next();    
-        if (o instanceof GraphNodeEditPart)
-        {
-          GraphNodeEditPart childEditPart = (GraphNodeEditPart)o;        
-          if (childEditPart == childRefEditPart)
-          {
-            next = childEditPart;
-            break;
-          }                                           
-          prev = childEditPart;
-        }
-      }                            
-
-      if (next != null && prev != null)
-      { 
-        int ya = prev.getConnectionRectangle().getCenter().y;
-        int yb = next.getConnectionRectangle().getCenter().y;
-        point.y = ya + (yb - ya)/2;   
-        data[0] = 0;
-      }                               
-      else if (prev != null) // add it last
-      {
-        point.y = prev.getConnectionRectangle().getCenter().y;
-        data[0] = 1;
-      }
-      else if (next != null) // add it first!
-      {                           
-        point.y = next.getConnectionRectangle().getCenter().y;
-        data[0] = -1;
-      }
-          
-      if (next != null || prev != null)
-      {
-        GraphNodeEditPart child = prev != null ? prev : next;
-        int startOfChildBox = child.getConnectionRectangle().x;
-        Rectangle r = parentEditPart.getConnectionRectangle();  
-        int x1 = r.x + r.width;
-        point.x = x1 + (startOfChildBox - x1) / 3;
-      }
-    }    
-    return point;
-  }
-         
-
-  protected void outlineShape(Graphics graphics)
-  { 
-    if (isOutlined)
-    {
-      super.outlineShape(graphics);
-    }
-  } 
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerFigure.java
deleted file mode 100644
index 8594005..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerFigure.java
+++ /dev/null
@@ -1,71 +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.graph.figures;
-            
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.LayoutManager;
-import org.eclipse.draw2d.RectangleFigure;
-              
-public class ContainerFigure extends RectangleFigure
-{               
-  protected boolean isOutlined = false;
-
-  public ContainerFigure()
-  {
-    setLayoutManager(new ContainerLayout());
-    setFill(false);
-  }
-
-  public void doLayout()
-  {
-	  layout();
-	  setValid(true);
-  }  
-          
-  public ContainerLayout getContainerLayout()
-  {
-    return (ContainerLayout)getLayoutManager();
-  }           
-
-  public void setOutlined(boolean isOutlined)
-  {
-    this.isOutlined = isOutlined;
-  }     
-
-  protected void outlineShape(Graphics graphics)
-  { 
-    if (isOutlined)
-    {
-      super.outlineShape(graphics);
-    }
-  }
-  
-  
-  public void validate() 
-  {
-    if (isValid())
-    {
-      return;
-    }
-    super.validate();	
-    postLayout();
-  }
-
-
-  protected void postLayout()
-  {
-    LayoutManager layoutManager = getLayoutManager();
-    if (layoutManager instanceof PostLayoutManager)
-    {
-      ((PostLayoutManager)layoutManager).postLayout(this);    
-    }  
-  }  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerLayout.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerLayout.java
deleted file mode 100644
index a30b6b8..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ContainerLayout.java
+++ /dev/null
@@ -1,248 +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.graph.figures;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.AbstractLayout;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-import org.eclipse.wst.xsd.ui.internal.gef.util.figures.SpacingFigure;
-
-public class ContainerLayout extends AbstractLayout implements PostLayoutManager
-{                                         
-  protected boolean isHorizontal;
-  protected int spacing = 0;
-  protected int border = 0;
- 
-  public ContainerLayout()
-  { 
-    this(true, 0); 
-  }             
-
-  public ContainerLayout(boolean isHorizontal, int spacing)
-  {
-    this.isHorizontal = isHorizontal;   
-    this.spacing = spacing;
-  }  
-
-  public void setHorizontal(boolean isHorizontal)
-  {
-    this.isHorizontal = isHorizontal;
-  }  
-
-  public void setSpacing(int spacing)
-  {
-    this.spacing = spacing;
-  }  
-
-  public void setBorder(int border)
-  {
-    this.border = border;
-  }   
-
-  /**
-   * Calculates and returns the preferred size of the container 
-   * given as input.
-   * 
-   * @param figure  Figure whose preferred size is required.
-   * @return  The preferred size of the passed Figure.
-   */
-  protected Dimension calculatePreferredSize(IFigure parent, int w, int h)
-  { 
-    Dimension preferred = null;                                              
-                                  
-    // Here we ensure that an unexpanded container is given a size of (0,0)
-    //
-    if (parent instanceof GraphNodeContainerFigure)
-    {
-      GraphNodeContainerFigure graphNodeContainerFigure = (GraphNodeContainerFigure)parent;
-      if (!graphNodeContainerFigure.isExpanded())
-      {
-        preferred = new Dimension(); 
-      }
-    }   
-    
-    if (preferred == null)
-    {
-      preferred = new Dimension();
-      List children = parent.getChildren();
-                                            
-      for (int i=0; i < children.size(); i++)
-      {
-        IFigure child = (IFigure)children.get(i);      
-    
-        Dimension childSize = child.getPreferredSize();
-        /*
-        if (child instanceof Interactor)
-        {          
-          childSize.width = 9;
-          childSize.height = 9;
-        }*/  
-    
-        if (isHorizontal)
-        {
-          preferred.width += childSize.width;
-          preferred.height = Math.max(preferred.height, childSize.height);
-        }
-        else
-        {  
-          preferred.height += childSize.height;
-          preferred.width = Math.max(preferred.width, childSize.width);
-        }
-      }                                                 
-
-      int childrenSize = children.size();
-      if (childrenSize > 1)
-      {                      
-        if (isHorizontal)    
-        {
-          preferred.width += spacing * (childrenSize - 1);
-        }
-        else
-        {
-          preferred.height += spacing * (childrenSize - 1);
-        } 
-      }
-                            
-      preferred.width += border * 2;
-      preferred.height += border * 2;
-      preferred.width += parent.getInsets().getWidth();
-      preferred.height += parent.getInsets().getHeight();      
-    }
-    return preferred;
-  }
-
-                
-  protected int alignFigure(IFigure parent, IFigure child)
-  {         
-    int y = -1;                                                            
-    return y;
-  }
-
-  public void layout(IFigure parent)
-  {                        
-    List children = parent.getChildren();
-    Dimension preferred = new Dimension();
-
-    int rx = 0;
-    for (int i=0; i < children.size(); i++)
-    {
-      IFigure child = (IFigure)children.get(i);
-      Dimension childSize = child.getPreferredSize();
-      if (isHorizontal)
-      {   
-        preferred.height = Math.max(preferred.height, childSize.height);
-        rx += childSize.width;
-      }
-      else
-      {
-        preferred.width = Math.max(preferred.width, childSize.width);
-      }
-    }
-
-    if (isHorizontal)
-    {
-      preferred.height += border*2;
-      preferred.width += border;
-    }
-    else
-    {
-      preferred.width += border*2;
-      preferred.height += border;
-    }
-
-    int childrenSize = children.size(); 
-    for (int i=0; i < childrenSize; i++)
-    {
-      IFigure child = (IFigure)children.get(i);
-      Dimension childSize = child.getPreferredSize();
-      
-      if (isHorizontal)
-      {   
-        int y = alignFigure(parent, child);             
-
-      
-        if (y == -1)
-        {
-           y = (preferred.height - childSize.height) / 2;                                      
-        }      
-
-        Rectangle rectangle = new Rectangle(preferred.width, y, childSize.width, childSize.height);   
-        rectangle.translate(parent.getClientArea().getLocation());
-
-        child.setBounds(rectangle);         
-        preferred.width += childSize.width; 
-        preferred.width += spacing;   
-        
-        if (child instanceof SpacingFigure)
-        {          
-          int availableHorizontalSpace = parent.getClientArea().width - rx;
-          preferred.width += availableHorizontalSpace;
-        } 
-      }
-      else
-      {
-        Rectangle rectangle = new Rectangle(0, preferred.height, childSize.width, childSize.height);
-        rectangle.translate(parent.getClientArea().getLocation());
-        child.setBounds(rectangle);  
-        preferred.height += childSize.height;
-        preferred.height += spacing;
-      }
-    }     
-  }      
-  
-  public void postLayout(IFigure figure)
-  {       
-    // This method attempts to align a 'FloatableFigure' (e.g. an Element node) 
-    // with any content that it is connected to.  This way a chain of connected figures
-    // will be vertically aligned (e.g. element -> modelgroup -> element).  Any visible clipping of the
-    // figures in the graph is probably a result of a bug in this code that results in a 'FloatableFigure' being
-    // repositioned beyond the bounds of its parent.
-    //     
-    for (Iterator i = figure.getChildren().iterator(); i.hasNext();)
-    {
-      IFigure child = (IFigure)i.next();
-      if (child instanceof FloatableFigure)       
-      {        
-        FloatableFigure floatableFigure = (FloatableFigure)child;
-        GraphNodeFigure graphNodeFigure = floatableFigure.getGraphNodeFigure(); 
-        if (graphNodeFigure.isExpanded() && graphNodeFigure.getChildGraphNodeFigures().size() == 1)
-        {
-          GraphNodeFigure alignedChild = (GraphNodeFigure)graphNodeFigure.getChildGraphNodeFigures().get(0);      
-          Rectangle alignedChildBounds = alignedChild.getConnectionRectangle();                            
-          Rectangle childBounds = child.getBounds();
-        
-          int l = childBounds.y + childBounds.height/2;
-          int r = alignedChildBounds.y + alignedChildBounds.height/2;       
-          int delta = r - l;
-
-          fixUp(child, delta);
-        }          
-      }
-    }      
-  }      
-  
-  protected void fixUp(IFigure figure, int delta)
-  { 
-    Rectangle bounds = figure.getBounds();
-    bounds.y += delta;
-    figure.setBounds(bounds);
-      
-    for (Iterator i = figure.getChildren().iterator(); i.hasNext(); )
-    {
-      IFigure child = (IFigure)i.next();
-      fixUp(child, delta);
-    }                       
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ExpandableGraphNodeFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ExpandableGraphNodeFigure.java
deleted file mode 100644
index e339103..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/ExpandableGraphNodeFigure.java
+++ /dev/null
@@ -1,133 +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.graph.figures;
-            
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-              
-
-//  ------------------------------------------------------------
-//  | ExpandableGraphNodeFigure                                |
-//  |                                                          |
-//  |   ----------------------------------   ---------------   |
-//  |   | verticalGroup                  |   |             |   |
-//  |   |                                |   |             |   |
-//  |   | -----------------------------  |   |             |   |
-//  |   | | horizontalGroup           |  |   |             |   |
-//  |   | |                           |  |   |             |   |
-//  |   | | ---------------------     |  |   |             |   |
-//  |   | | | outlinedArea      |     |  |   |             |   |
-//  |   | | | ----------------- |     |  |   |  outer      |   |
-//  |   | | | | iconArea      | |     |  |   |  Content    |   |
-//  |   | | | ----------------- | [+] |  |   |  Area       |   |
-//  |   | | | ----------------- |     |  |   |             |   |
-//  |   | | | | innerContent  | |     |  |   |             |   |
-//  |   | | | ----------------- |     |  |   |             |   |
-//  |   | | ---------------------     |  |   |             |   |
-//  |   | -----------------------------  |   |             |   |
-//  |   |                                |   |             |   |
-//  |   |   ------------------           |   |             |   |
-//  |   |   | occurenceArea  |           |   |             |   |
-//  |   |   ------------------           |   |             |   |
-//  |   ----------------------------------   ---------------   |
-//  ------------------------------------------------------------
-
-public class ExpandableGraphNodeFigure extends RepeatableGraphNodeFigure
-{                        
-  protected ContainerFigure horizontalGroup;
-  protected Interactor interactor; 
-  protected ContainerFigure outerContentArea;
-
-  public boolean isExpanded()
-  {
-    return interactor.isExpanded();
-  }   
-
-  public void setExpanded(boolean isExpanded)
-  {
-    interactor.setExpanded(isExpanded);
-  }
-  
-  public ExpandableGraphNodeFigure()
-  {
-    super();    
-    isConnected = true;
-  }      
-
-  protected void createFigure()
-  {   
-    createPreceedingSpace(this);           
-    createVerticalGroup(this);
-    createHorizontalGroup(verticalGroup);
-    createOutlinedArea(horizontalGroup);   
-    createInteractor(horizontalGroup);
-    createOccurenceArea(verticalGroup);   
-    createOuterContentArea(this);
-  }
-  
-  protected void createVerticalGroup(IFigure parent)
-  {
-    verticalGroup = new FloatableFigure(this);
-    verticalGroup.getContainerLayout().setHorizontal(false);
-    parent.add(verticalGroup);
-  }
-
-  protected void createHorizontalGroup(IFigure parent)
-  {
-    horizontalGroup = new ContainerFigure();
-    parent.add(horizontalGroup);
-  }                 
-
-  protected void createInteractor(IFigure parent)
-  {
-    interactor = new Interactor();
-    interactor.setForegroundColor(ColorConstants.black);
-    interactor.setBackgroundColor(ColorConstants.white); 
-    parent.add(interactor);
-  } 
-
-  protected void createOuterContentArea(IFigure parent)
-  {
-    // create a small space between the interactor and the contentArea
-    //
-    RectangleFigure space = new RectangleFigure();
-    space.setVisible(false);
-    space.setPreferredSize(new Dimension(5, 10));
-    parent.add(space);   
-      
-    outerContentArea = new GraphNodeContainerFigure(this);
-    outerContentArea.getContainerLayout().setHorizontal(false);
-    parent.add(outerContentArea);
-  }
-
-  public Interactor getInteractor()
-  {
-    return interactor;
-  } 
-
-  public ContainerFigure getOuterContentArea()
-  {
-    return outerContentArea;
-  }
-     
-  public IFigure getConnectionFigure()
-  {
-    return horizontalGroup;
-  }
-
-  public Rectangle getConnectionRectangle()
-  {
-    return horizontalGroup.getBounds();
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FillLayout.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FillLayout.java
deleted file mode 100644
index 221c147..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FillLayout.java
+++ /dev/null
@@ -1,160 +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.graph.figures;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.draw2d.AbstractLayout;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-
-/**
- * Figures using the StackLayout as their layout manager have
- * their children placed on top of one another. Order of 
- * placement is determined by the order in which the children
- * were added, first child added placed on the bottom.
- */
-public class FillLayout extends AbstractLayout
-{
-         
-protected boolean isHorizontal = false;                    
-protected int spacing = 0;
-public Dimension min;  
-
-public FillLayout(){}     
-public FillLayout(boolean dummy){} 
-
-public FillLayout(int spacing)
-{ 
-  this.spacing = spacing; 
-}
-
-public void setHorizontal(boolean isHorizontal)
-{
- this.isHorizontal = isHorizontal;
-}
-
-/**
- * Calculates and returns the preferred size of the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- *
- * @param figure  Container figure for which preferred size is required.
- * @return  The preferred size of the input figure.
- */
-protected Dimension calculatePreferredSize(IFigure figure, int w, int h)
-{	                 
-  Dimension d = calculatePreferredClientAreaSize(figure);
-	d.expand(figure.getInsets().getWidth(),
-	         figure.getInsets().getHeight());
-	//d.union(getBorderPreferredSize(figure));
-	return d;
-} 
-
-protected Dimension calculatePreferredClientAreaSize(IFigure figure)
-{
-  Dimension d = new Dimension();
-	List children = figure.getChildren(); 
-
-
-	for (Iterator i = children.iterator(); i.hasNext(); )
-  {
-		IFigure child = (IFigure)i.next();
-    Dimension childSize = child.getPreferredSize();
-
-    if (isHorizontal)
-    {
-      d.width += childSize.width;
-      d.height = Math.max(childSize.height, d.height);
-    }
-    else
-    {
-      d.height += childSize.height;
-      d.width = Math.max(childSize.width, d.width);
-    }
-	}	 
-
-                   
-  int childrenSize = children.size();       
-  if (childrenSize > 0)
-  {
-    if (isHorizontal)
-      d.width += spacing * (childrenSize - 1); 
-    else
-      d.height += spacing * (childrenSize - 1);
-  }       
-    
-  if (min != null)
-  {
-    d.width = Math.max(d.width, min.width);
-    d.height = Math.max(d.height, min.height);
-  }
-  return d;
-}
-
-/*
- * Returns the minimum size required by the input container.
- * This is the size of the largest child of the container, as all
- * other children fit into this size.
- */
-public Dimension getMinimumSize(IFigure figure, int w, int h)
-{
-	Dimension d = new Dimension();
-	List children = figure.getChildren();
-	IFigure child;
-	for (int i=0; i < children.size(); i++){
-		child = (IFigure)children.get(i);
-		d.union(child.getMinimumSize());
-	}
-	d.expand(figure.getInsets().getWidth(),
-	         figure.getInsets().getHeight());
-	return d;
-}
-
-public Dimension getPreferredSize(IFigure figure, int w, int h)
-{
-	return calculatePreferredSize(figure, w, h);
-}
-
-/*
- * Lays out the children on top of each other with
- * their sizes equal to that of the available
- * paintable area of the input container figure.
- */
-public void layout(IFigure figure){   
-                     
-  Dimension	preferredSize = calculatePreferredClientAreaSize(figure);
-	Rectangle r = figure.getClientArea().getCopy(); 
-
-	List children = figure.getChildren();
-                                        
-	for (Iterator i = children.iterator(); i.hasNext(); )
-  {
-		IFigure child = (IFigure)i.next();
-    Dimension childSize = child.getPreferredSize();
-
-    if (isHorizontal)
-    {
-		  child.setBounds(new Rectangle(r.x, r.y, childSize.width, Math.max(preferredSize.height, r.height)));
-      r.x += childSize.width + spacing;
-    }
-    else
-    {            
-		  child.setBounds(new Rectangle(r.x, r.y, Math.max(preferredSize.width, r.width), childSize.height));
-      r.y += childSize.height + spacing;
-    }
-	}
-}
-} 
- 
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FloatableFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FloatableFigure.java
deleted file mode 100644
index c224145..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/FloatableFigure.java
+++ /dev/null
@@ -1,29 +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.graph.figures;
-            
-              
-
-public class FloatableFigure extends ContainerFigure
-{               
-  public GraphNodeFigure graphNodeFigure;  
-
-  public FloatableFigure(GraphNodeFigure graphNodeFigure)
-  {                  
-    super();
-    this.graphNodeFigure = graphNodeFigure;
-  }   
-
-  public GraphNodeFigure getGraphNodeFigure()
-  {
-    return graphNodeFigure;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeContainerFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeContainerFigure.java
deleted file mode 100644
index c06a655..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeContainerFigure.java
+++ /dev/null
@@ -1,29 +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.graph.figures;
-            
-              
-
-public class GraphNodeContainerFigure extends ContainerFigure
-{               
-  public ExpandableGraphNodeFigure expandableGraphNodeFigure;  
-
-  public GraphNodeContainerFigure(ExpandableGraphNodeFigure expandableGraphNodeFigure)
-  {                  
-    super();
-    this.expandableGraphNodeFigure = expandableGraphNodeFigure;
-  }     
-
-  public boolean isExpanded()
-  {
-    return expandableGraphNodeFigure.isExpanded();
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeFigure.java
deleted file mode 100644
index 3d9706d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/GraphNodeFigure.java
+++ /dev/null
@@ -1,184 +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.graph.figures;
-            
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.geometry.Rectangle;
-              
-
-//  ------------------------------
-//  | GraphNodeFigure            |
-//  |                            |
-//  | -------------------------  |
-//  | | vertical group        |  |
-//  | | --------------------- |  |
-//  | | | outlined area     | |  |
-//  | | | ----------------- | |  |
-//  | | | | icon area     | | |  |
-//  | | | ----------------- | |  |
-//  | | | ----------------- | |  |
-//  | | | | inner content | | |  |
-//  | | | ----------------- | |  |
-//  | | --------------------- |  |
-//  | -------------------------  |
-//  ------------------------------
-
-public class GraphNodeFigure extends ContainerFigure
-{                        
-  protected ContainerFigure verticalGroup; 
-  protected ContainerFigure outlinedArea;
-  protected ContainerFigure iconArea;
-  protected ContainerFigure innerContentArea; 
-         
-  protected boolean isConnected;
-  protected boolean isIsolated;
-
-  protected List childGraphNodeFigures = new ArrayList();
-  protected GraphNodeFigure parentGraphNodeFigure; 
-
-  public GraphNodeFigure()
-  { 
-    isIsolated = false;
-    createFigure();
-  }      
-
-  public boolean isExpanded()
-  {
-    return true;
-  }    
-
-  public boolean isConnected()
-  {
-    return isConnected;
-  }                    
-
-  public void setConnected(boolean isConnected)
-  {
-    this.isConnected = isConnected;
-  }
-
-  public void setIsIsolated(boolean isIsolated)
-  {
-    this.isIsolated = isIsolated; 
-  }
-
-  public boolean getIsIsolated()
-  {
-    return isIsolated; 
-  }
-
-  protected void createFigure()
-  {
-    createVerticalGroup(this);
-    createOutlinedArea(verticalGroup); 
-  }
-
-  protected void createVerticalGroup(IFigure parent)
-  {
-    verticalGroup = new ContainerFigure();
-    verticalGroup.getContainerLayout().setHorizontal(false);
-    parent.add(verticalGroup);
-  }
-
-  protected void createOutlinedArea(IFigure parent)
-  { 
-    outlinedArea = new ContainerFigure();
-    outlinedArea.getContainerLayout().setHorizontal(false);
-    parent.add(outlinedArea);      
-     
-    iconArea = new ContainerFigure();
-    outlinedArea.add(iconArea);
-
-    innerContentArea = new ContainerFigure();
-    innerContentArea.getContainerLayout().setHorizontal(false);
-    outlinedArea.add(innerContentArea);  
-  }   
-
-  public ContainerFigure getIconArea()
-  {
-    return iconArea;
-  }
-
-  public ContainerFigure getOutlinedArea()
-  {
-    return outlinedArea;
-  }
-
-  public ContainerFigure getInnerContentArea()
-  {
-    return innerContentArea;
-  } 
-
-  public IFigure getConnectionFigure()
-  {
-    return outlinedArea;
-  }
-
-  public Rectangle getConnectionRectangle()
-  {
-    return outlinedArea.getBounds();
-  }
-
-  public List getChildGraphNodeFigures()
-  {
-    return childGraphNodeFigures;
-  }
-
-  public void addNotify()                     
-  {
-    super.addNotify();                 
-    if (isConnected())
-    {
-      parentGraphNodeFigure = computeParentGraphNodeFigure(this);
-      if (parentGraphNodeFigure != null)
-      {   
-        parentGraphNodeFigure.getChildGraphNodeFigures().add(this);
-      }   
-    }
-  } 
-
-  public void removeNotify()
-  {     
-    super.removeNotify();
-    if (parentGraphNodeFigure != null)
-    {   
-      parentGraphNodeFigure.getChildGraphNodeFigures().remove(this);
-    }  
-  }
-
-  public GraphNodeFigure getParentGraphNodeFigure()
-  {
-    return parentGraphNodeFigure;
-  }  
-
-  public GraphNodeFigure computeParentGraphNodeFigure(IFigure figure)
-  {                   
-    GraphNodeFigure result = null;
-    IFigure parent = figure != null ? figure.getParent() : null;
-    while (parent != null)
-    {
-      if (parent instanceof GraphNodeFigure)
-      {    
-        GraphNodeFigure parentGraphNodeFigure = (GraphNodeFigure)parent;
-        if (parentGraphNodeFigure.isConnected())
-        {
-          result = (GraphNodeFigure)parent;
-          break;
-        }
-      }
-      parent = parent.getParent();
-    }   
-    return result;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/Interactor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/Interactor.java
deleted file mode 100644
index 7a64b8f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/Interactor.java
+++ /dev/null
@@ -1,54 +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.graph.figures;
-            
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-
-/**
- * Interactor the +/- control commonly found in trees
- */
-public class Interactor extends RectangleFigure
-{
-  protected boolean isExpanded;
-
-  public Interactor()
-  {
-    super(); 
-    setPreferredSize(new Dimension(9, 9));               
-  }  
-
-  public void setExpanded(boolean isExpanded)
-  {                                         
-    this.isExpanded = isExpanded;
-  }
-
-  public boolean isExpanded()
-  {
-    return isExpanded;
-  }
-    
-  protected void fillShape(Graphics g)
-  {
-    super.fillShape(g);
-    Rectangle r = getBounds();                          
-    int mx = r.x + r.width / 2;
-    int my = r.y + r.height / 2;    
-    int s = 2;       
-    g.drawLine(r.x + s, my, r.x + r.width - s - 1, my); 
-    if (!isExpanded)
-    {
-      g.drawLine(mx, r.y + s, mx, r.y + r.height - s -1);
-    }
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/LabelFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/LabelFigure.java
deleted file mode 100644
index 04c82b8..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/LabelFigure.java
+++ /dev/null
@@ -1,88 +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.graph.figures;
-            
-import org.eclipse.draw2d.Figure;
-import org.eclipse.draw2d.FigureUtilities;
-import org.eclipse.draw2d.Graphics;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
-              
-
-public class LabelFigure extends Figure
-{                                                
-  protected String text = "";  
-  protected boolean isShowEmptyLabel = true;
-  protected int left = 4; 
-  protected int right = 4; 
-  protected int textHeight;
-  protected int textWidth;
-                       
-  public LabelFigure()
-  {
-    setPreferredSize(new Dimension());
-  }  
-
-  protected void setLeft(int left)
-  {
-    this.left = left;
-  }
-
-  protected void setRight(int right)
-  {
-    this.right = right;
-  }
-
-  public void setShowEmptyLabel(boolean isShowEmptyLabel)
-  {
-    this.isShowEmptyLabel = isShowEmptyLabel;
-  }     
-       
-
-  public void setText(String s)
-  { 
-	  if (s == null)
-		  s = "";
-
-    if (!text.equals(s))
-    {
-	    text = s;
-      if (text.length() > 0 || isShowEmptyLabel)
-      {
-        textHeight = FigureUtilities.getFontMetrics(getFont()).getHeight();
-        textWidth = FigureUtilities.getTextWidth(text, getFont());
-        textWidth = Math.max(textWidth, FigureUtilities.getTextWidth("abcdefg", getFont()));
-        setPreferredSize(new Dimension(textWidth + left + right, textHeight));
-      } 
-      else
-      {
-        setPreferredSize(new Dimension());
-      } 
-    }   
-    //revalidate(); 
-    //repaint();
-  }
-
-
-  
-  protected void paintFigure(Graphics graphics)
-  //protected void fillShape(Graphics graphics)
-  {  
-    super.paintFigure(graphics);
-    //super.fillShape(graphics);
-    if (text.length() > 0)
-    {
-      Rectangle r = getBounds();
-		  graphics.setForegroundColor(getForegroundColor());
-      graphics.drawString(text, left + r.x, r.y);// + (r.width - textWidth)/2, r.y + (r.height - textHeight)/2);           
-    }
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RepeatableGraphNodeFigure.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RepeatableGraphNodeFigure.java
deleted file mode 100644
index fd8d249..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/figures/RepeatableGraphNodeFigure.java
+++ /dev/null
@@ -1,85 +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.graph.figures;
-
-import org.eclipse.draw2d.ColorConstants;
-import org.eclipse.draw2d.IFigure;
-import org.eclipse.draw2d.RectangleFigure;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.wst.xsd.ui.internal.graph.GraphicsConstants;
-
-
-              
-
-//  ------------------------------
-//  | RepeatableGraphNodeFigure  |
-//  |                            |
-//  | -------------------------  |
-//  | | vertical group        |  |
-//  | | --------------------- |  |
-//  | | | outlined area     | |  |
-//  | | | ----------------- | |  |
-//  | | | | icon area     | | |  |
-//  | | | ----------------- | |  |
-//  | | | ----------------- | |  |
-//  | | | | inner content | | |  |
-//  | | | ----------------- | |  |
-//  | | --------------------- |  |
-//  | |                       |  |
-//  | | ------------------    |  |
-//  | | | occurence area |    |  |
-//  | | ------------------    |  |
-//  | -------------------------  |
-//  ------------------------------
-
-public class RepeatableGraphNodeFigure extends GraphNodeFigure
-{                            
-  protected ContainerFigure occurenceArea;  
-  protected LabelFigure occurenceLabel; 
-
-  public RepeatableGraphNodeFigure()
-  {    
-    super();          
-  }     
-
-  protected void createFigure()
-  {                  
-    createPreceedingSpace(this);
-    createVerticalGroup(this);
-    createOutlinedArea(verticalGroup); 
-    createOccurenceArea(verticalGroup);
-  }
-
-  protected void createOccurenceArea(IFigure parent)
-  {
-    occurenceArea = new ContainerFigure();   
-    occurenceLabel = new LabelFigure();
-    occurenceLabel.setForegroundColor(ColorConstants.black);
-    occurenceLabel.setShowEmptyLabel(false);
-    occurenceLabel.setFont(GraphicsConstants.medium); 
-    occurenceArea.add(occurenceLabel);               
-    parent.add(occurenceArea);
-  }
-                                 
-  protected void createPreceedingSpace(IFigure parent)
-  {
-    // create a small space
-    RectangleFigure space = new RectangleFigure();
-    space.setVisible(false);
-    space.setPreferredSize(new Dimension(10, 10));
-    parent.add(space);  
-  } 
-
-  public LabelFigure getOccurenceLabel()
-  {
-    return occurenceLabel;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/Category.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/Category.java
deleted file mode 100644
index 31aa07b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/Category.java
+++ /dev/null
@@ -1,265 +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.graph.model;
-                                   
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-
-public class Category implements ModelAdapter
-{
-  public final static int ATTRIBUTES = 1;
-  public final static int ELEMENTS = 2;
-  public final static int TYPES = 3;
-  public final static int GROUPS = 5;
-  public final static int DIRECTIVES = 6;
-  public final static int NOTATIONS = 7;
-  public final static int ATTRIBUTE_GROUPS = 8;
-  public final static int IDENTITY_CONSTRAINTS = 9;
-  public final static int ANNOTATIONS = 10;
-
-  
-  protected XSDSchema schema;
-  protected int groupType;
-
-  //public void modelNameChanged();
-  public Category(XSDSchema schema, int groupType)
-  {
-    this.schema = schema;
-    this.groupType = groupType;
-  }       
-
-  public int getGroupType()
-  {
-    return groupType;
-  }   
-
-  public XSDSchema getXSDSchema()
-  {
-    return schema;
-  }
-
-  public String getName()
-  {
-    String name = "";
-    switch (groupType)
-    {
-      case ATTRIBUTES       : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_ATTRIBUTES"); break; }
-      case NOTATIONS        : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_NOTATIONS"); break; }
-      case ELEMENTS         : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_ELEMENTS"); break; }
-      case TYPES             : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_TYPES"); break; }    
-      case GROUPS           : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_GROUPS"); break; }      
-      case DIRECTIVES       : { name = XSDEditorPlugin.getXSDString("_UI_GRAPH_DIRECTIVES"); break; }
-    }      
-    return name;
-  }
-              
-  public List getChildren()
-  {                      
-    List list = Collections.EMPTY_LIST;
-    switch (groupType)
-    {
-      case ATTRIBUTES       : { list = getAttributeList(); break; }
-      case NOTATIONS        : { list = getNotations(); break; }
-      case ELEMENTS         : { list = getGlobalElements(); break; }
-      case TYPES            : { list = getTypes();  break; }
-      case GROUPS           : { list = getGroups(); break; }
-      case DIRECTIVES       : { list = getDirectives(); break; }
-    }      
-    return list;
-  }
-  
-  private boolean isSameNamespace(String ns1, String ns2)
-  {
-    if (ns1 == null) ns1 = "";
-    if (ns2 == null) ns2 = "";
-    
-    if (ns1.equals(ns2))
-    {
-      return true;
-    }
-    return false;
-  }
-  
-  protected List getGlobalElements()
-  {
-    List elements = schema.getElementDeclarations();
-    List list = new ArrayList();
-    for (Iterator i = elements.iterator(); i.hasNext(); )
-    {
-      XSDElementDeclaration elem = (XSDElementDeclaration)i.next();
-      if (isSameNamespace(elem.getTargetNamespace(),schema.getTargetNamespace()))
-      {
-        list.add(elem);
-      }
-    }                
-    return list;
-  }
-
-  protected List getTypes()
-  {
-    List allTypes = schema.getTypeDefinitions();
-    List list = new ArrayList();
-    for (Iterator i = allTypes.iterator(); i.hasNext(); )
-    {
-      XSDTypeDefinition td = (XSDTypeDefinition)i.next();
-      if (td instanceof XSDComplexTypeDefinition)
-      {
-        XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)td;
-        if (isSameNamespace(ct.getTargetNamespace(),schema.getTargetNamespace()))
-        {
-          list.add(ct);
-        }
-      }
-    }                
-
-//    List simpleTypes = schema.getTypeDefinitions();
-    for (Iterator i = allTypes.iterator(); i.hasNext(); )
-    {
-      XSDTypeDefinition td = (XSDTypeDefinition)i.next();
-      if (td instanceof XSDSimpleTypeDefinition)
-      {
-        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)td;
-        if (isSameNamespace(st.getTargetNamespace(),schema.getTargetNamespace()))
-        {
-          list.add(st);
-        }
-      }
-    }                
-    return list;
-  }
-  
-  protected List getGroups()
-  {
-    List groups = schema.getModelGroupDefinitions();
-    List list = new ArrayList();
-    for (Iterator i = groups.iterator(); i.hasNext(); )
-    {
-      XSDModelGroupDefinition group = (XSDModelGroupDefinition)i.next();
-      if (isSameNamespace(group.getTargetNamespace(),schema.getTargetNamespace()))
-      {
-        list.add(group);
-      }
-    }                
-    return list;
-  }
-  
-  protected List getDirectives()
-  {                 
-    List list = new ArrayList();
-    for (Iterator i = schema.getContents().iterator(); i.hasNext(); )
-    {
-      Object o = i.next();
-      if (o instanceof XSDSchemaDirective)
-      {
-        list.add(o);
-      }
-    } 
-    return list;
-  }
-
-  protected List getAttributeList()
-  {
-    List attributesList = new ArrayList();
-    for (Iterator iter = schema.getAttributeDeclarations().iterator(); iter.hasNext(); )
-    {
-      Object o = iter.next();
-      if (o instanceof XSDAttributeDeclaration)
-      {
-        XSDAttributeDeclaration attr = (XSDAttributeDeclaration)o;
-        if (attr != null)
-        {
-          if (attr.getTargetNamespace() != null)
-          {
-            if (!(attr.getTargetNamespace().equals("http://www.w3.org/2001/XMLSchema-instance")))
-            {
-              if (isSameNamespace(attr.getTargetNamespace(), schema.getTargetNamespace()))
-              {
-                attributesList.add(attr);
-              }
-            }
-          }
-          else
-          {
-            if (isSameNamespace(attr.getTargetNamespace(),schema.getTargetNamespace()))
-            {
-              attributesList.add(attr);
-            }
-          }
-        }
-      }
-    }
-    return attributesList;
-  }
-
-  protected List getNotations()
-  {
-    List notations = schema.getNotationDeclarations();
-    List list = new ArrayList();
-    for (Iterator i = notations.iterator(); i.hasNext(); )
-    {
-      XSDNotationDeclaration notation = (XSDNotationDeclaration)i.next();
-      if (isSameNamespace(notation.getTargetNamespace(),schema.getTargetNamespace()))
-      {
-        list.add(notation);
-      }
-    }                
-    return list;
-  }
-  
-  //
-  protected List listenerList = new ArrayList();
-                                                                                           
-  public void addListener(ModelAdapterListener l)
-  {
-    listenerList.add(l);
-  }  
-
-  public void removeListener(ModelAdapterListener l)
-  {
-    listenerList.remove(l);
-  } 
-
-  public Object getProperty(Object modelObject, String propertyName)
-  {
-    return null;
-  }
-
-  public void firePropertyChanged(Object modelObject, String propertyName)
-  {
-    List newList = new ArrayList();
-    newList.addAll(listenerList);
-    for (Iterator i = newList.iterator(); i.hasNext(); )
-    {
-      ModelAdapterListener l = (ModelAdapterListener)i.next();                  
-      try
-      {
-        l.propertyChanged(modelObject, propertyName);
-      }
-      catch (Exception e)
-      {
-      }
-    }
-  }  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapter.java
deleted file mode 100644
index 3066987..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/ModelAdapter.java
+++ /dev/null
@@ -1,27 +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.graph.model;
-
-
-
-public interface ModelAdapter
-{               
-  public static final String CHILDREN_PROPERTY = "CHILDREN_PROPERTY";
-  public static final String LABEL_PROPERTY = "LABEL_PROPERTY";
-  public static final String IMAGE_PROPERTY = "IMAGE_PROPERTY";
-  public static final String DETAIL_PROPERTY = "DETAIL_PROPERTY";
-                                       
-  public void addListener(ModelAdapterListener l);
-  public void removeListener(ModelAdapterListener l);
-  public Object getProperty(Object modelObject, String propertyName); 
-  public void firePropertyChanged(Object modelObject, String propertyName);
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/XSDModelAdapterFactory.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/XSDModelAdapterFactory.java
deleted file mode 100644
index 98f051a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/graph/model/XSDModelAdapterFactory.java
+++ /dev/null
@@ -1,559 +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.graph.model;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDAbstractAdapter;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDParticleContent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.util.XSDSwitch;
-
-
-
-
-public class XSDModelAdapterFactory
-{  
-  protected static XSDModelAdapterFactory instance;
-  protected static XSDAdapterFactoryImpl xsdAdapterFactoryImpl = new XSDAdapterFactoryImpl();
-                                              
-  public static XSDModelAdapterFactory getInstance()
-  {
-    if (instance == null)
-    {
-      instance = new XSDModelAdapterFactory();
-    }                                         
-    return instance;
-  }
-
-
-  public static ModelAdapter getAdapter(Object o)
-  {                             
-    ModelAdapter result = null;
-    if (o instanceof Notifier)
-    {                                
-      Notifier target = (Notifier)o;
-		  Adapter adapter = xsdAdapterFactoryImpl.adapt(target);
-      if (adapter instanceof XSDObjectAdapter)
-      {
-        result = (XSDObjectAdapter)adapter;
-      }
-    }                              
-    else if (o instanceof ModelAdapter)
-    {
-      result = (ModelAdapter)o;
-    }
-    return result;
-  }             
-    
-
-  public static XSDObjectAdapter getExisitingAdapter(Object xsdObject)
-  {  
-    XSDObjectAdapter result = null;
-    if (xsdObject instanceof Notifier)
-    {                                
-      Notifier target = (Notifier)xsdObject;
-		  Adapter adapter = EcoreUtil.getExistingAdapter(target,xsdAdapterFactoryImpl);
-      if (adapter instanceof XSDObjectAdapter)
-      {
-        result = (XSDObjectAdapter)adapter;
-      }
-    }
-    return result;
-  }
-   
-  //
-  //
-  //
-  public static class XSDAdapterFactoryImpl extends AdapterFactoryImpl
-  {
-    public Adapter createAdapter(Notifier target)
-    {
-      XSDSwitch xsdSwitch = new XSDSwitch()
-      {                   
-        public Object caseXSDElementDeclaration(XSDElementDeclaration object)
-        {
-          return new XSDElementDeclarationAdapter(object);
-        }
-        
-        public Object caseXSDParticle(XSDParticle object)
-        {
-          return new XSDParticleAdapter(object);
-        }
-
-        public Object caseXSDSchema(XSDSchema object) 
-        {
-          return new XSDSchemaAdapter(object);
-        }
-
-        public Object defaultCase(EObject object) 
-        {
-          return new XSDObjectAdapter();
-        }         
-      };
-      Object o = xsdSwitch.doSwitch((EObject)target);
-
-      Adapter result = null;
-      if (o instanceof Adapter)
-      {
-        result  = (Adapter)o;
-      }
-      else
-      {          
-//        System.out.println("did not create adapter for target : " + target);
-//        Thread.dumpStack();
-      }
-      return result;
-    }      
-                               
-
-    public Adapter adapt(Notifier target)
-    {
-      return adapt(target, this);
-    }
-  }
-    
-
- 
-  //
-  //
-  //
-  protected static class XSDObjectAdapter extends AdapterImpl implements ModelAdapter
-  {   
-    protected List listenerList = new ArrayList();
-    protected boolean isUpdating = false;
-                                  
-    public boolean isAdapterForType(Object type)
-    {
-      return type == xsdAdapterFactoryImpl;
-    }                                             
-                
-    public void addListener(ModelAdapterListener l)
-    {
-      listenerList.add(l);
-    }  
-
-    public void removeListener(ModelAdapterListener l)
-    {
-      listenerList.remove(l);
-    } 
-                
-    public Object getProperty(Object modelObject, String propertyName)
-    {
-      Object result = null;
-      if (ModelAdapter.LABEL_PROPERTY.equals(propertyName))
-      {
-      	result = "";
-      	// TODO... move this logic into each adapter
-      	//
-        if (modelObject instanceof XSDNamedComponent)
-        {
-      	  result = ((XSDNamedComponent)modelObject).getName();
-        }
-        else if (modelObject instanceof XSDSchemaDirective)
-        {
-       	  result = ((XSDSchemaDirective)modelObject).getSchemaLocation();
-          if (result == null) result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
-          if (result.equals("")) result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
-          return result;
-        }
-      }
-      else if ("drillDown".equals(propertyName))
-      {
-      	// TODO... move this logic into each adapter
-      	//   
-      	List list = XSDChildUtility.getModelChildren(modelObject);	
-      	result = list.size() > 0 ? Boolean.TRUE : Boolean.FALSE;      	   
-      }      
-      else if (ModelAdapter.IMAGE_PROPERTY.equals(propertyName))
-      {
-      	// result = XSDEditorPlugin.getDefault().getImage("icons/XSDElement.gif");
-        XSDModelAdapterFactoryImpl factory = XSDModelAdapterFactoryImpl.getInstance();
-        Adapter adapter = factory.createAdapter((Notifier)modelObject);
-        result = ((XSDAbstractAdapter)adapter).getImage(modelObject);
-      }	
-      return result;
-    }
-
-    public void firePropertyChanged(Object modelObject, String propertyName)
-    {
-      List newList = new ArrayList();
-      newList.addAll(listenerList);
-      for (Iterator i = newList.iterator(); i.hasNext(); )
-      {
-        ModelAdapterListener l = (ModelAdapterListener)i.next();                  
-        try
-        {
-          l.propertyChanged(modelObject, propertyName);
-        }
-        catch (Exception e)
-        {
-        }
-      }
-    }  
-
-    public void notifyChanged(Notification msg)
-    {        
-      firePropertyChanged(msg.getNotifier(), null);
-    }     
-  }
-       
-  protected static class XSDParticleAdapter extends XSDObjectAdapter implements ModelAdapterListener
-  {
-    protected XSDParticle particle;
-
-    public XSDParticleAdapter(XSDParticle particle)
-    {
-      this.particle = particle;
-    } 
-
-    public void notifyChanged(Notification msg)
-    {
-      XSDParticle xsdParticle = (XSDParticle)msg.getNotifier();
-      XSDParticleContent xsdParticleContent = xsdParticle.getContent();
-      XSDModelAdapterFactoryImpl factory = XSDModelAdapterFactoryImpl.getInstance();
-      if (xsdParticleContent != null)
-      {
-        if (xsdParticleContent instanceof XSDElementDeclaration)
-        {
-          firePropertyChanged((XSDElementDeclaration)xsdParticleContent, null);
-          factory.fireNotifyChanged(msg);
-        }
-        else if (xsdParticleContent instanceof XSDModelGroup)
-        {
-          firePropertyChanged((XSDModelGroup)xsdParticleContent, null);
-          factory.fireNotifyChanged(msg);
-        }
-        else if (xsdParticleContent instanceof XSDWildcard)
-        {
-          firePropertyChanged((XSDWildcard)xsdParticleContent, null);
-          factory.fireNotifyChanged(msg);
-        }
-      }
-    } 
-
-
-    public void propertyChanged(Object object, String property)
-    {
-      firePropertyChanged(object, property);
-    }
-  }                         
-     
-  //
-  //
-  //
-  protected static class XSDElementDeclarationAdapter extends XSDObjectAdapter implements ModelAdapterListener
-  {
-    protected XSDElementDeclaration ed;
-    protected XSDTypeDefinition typeDefinition;          
-
-    public XSDElementDeclarationAdapter(XSDElementDeclaration ed)
-    {
-      this.ed = ed;
-      updateTypeDefinition();
-    } 
-    
-    protected void updateTypeDefinition()
-    {
-      XSDTypeDefinition td = ed.getTypeDefinition();
-      td = (td instanceof XSDComplexTypeDefinition) ? td : null;
-      if (td != typeDefinition)
-      {                     
-        if (typeDefinition != null)
-        {
-          XSDObjectAdapter adapter = (XSDObjectAdapter)xsdAdapterFactoryImpl.adapt(typeDefinition);
-          adapter.removeListener(this);
-        }
-        typeDefinition = td;
-        if (typeDefinition != null)
-        {
-          XSDObjectAdapter adapter = (XSDObjectAdapter)xsdAdapterFactoryImpl.adapt(typeDefinition);
-          adapter.addListener(this);
-        }
-      }
-    } 
-
-
-    public void notifyChanged(Notification msg)
-    {
-      updateTypeDefinition();    
-      firePropertyChanged(msg.getNotifier(), null);                                                                          
-    } 
-
-
-    public void propertyChanged(Object object, String property)
-    {                         
-      // here we propagate typeDefinition changes to our listeners
-      firePropertyChanged(object, property);
-    }
-  }                         
-  
-
-  //
-  //
-  protected static class XSDSchemaAdapter extends XSDObjectAdapter
-  { 
-    protected XSDSchema schema;
-    protected List groups;            
-
-    public XSDSchemaAdapter(XSDSchema schema)
-    {
-      this.schema = schema;                         
-      groups = new ArrayList();                                       
-      groups.add(new Category(schema, Category.DIRECTIVES));
-      groups.add(new Category(schema, Category.ATTRIBUTES)); 
-      //groups.add(new Category(schema, Category.ATTRIBUTE_GROUPS));
-      groups.add(new Category(schema, Category.ELEMENTS));
-      groups.add(new Category(schema, Category.TYPES));
-      //groups.add(new Category(schema, Category.SIMPLE_TYPES));
-      groups.add(new Category(schema, Category.GROUPS));
-    }
-
-    public void notifyChanged(Notification msg)
-    {
-      super.notifyChanged(msg);
-      for (Iterator i = groups.iterator(); i.hasNext(); )
-      {
-        ModelAdapter group = (ModelAdapter)i.next();
-        group.firePropertyChanged(group, null);
-      }
-    }
-
-    public Object getProperty(Object modelObject, String propertyName)
-    {
-      Object result = null;
-      if ("groups".equals(propertyName))
-      { 
-        /*
-        List list = new ArrayList();
-        for (Iterator i = groups.iterator(); i.hasNext(); )
-        {
-          Category group = (Category)i.next();
-          if (group.getChildren().size() > 0)
-          {
-            list.add(group);
-          }
-        }
-        result = list;*/
-        result = groups;
-      }      
-      if (result == null)
-      {
-        result = super.getProperty(modelObject, propertyName);
-      }
-      return result;
-    }
-  }
-
-
-  public static void addModelAdapterListener(Object modelObject, ModelAdapterListener listener)
-  {                                                            
-    ModelAdapter modelAdapter = getModelAdapter(modelObject);
-    if (modelAdapter != null)
-    {
-      modelAdapter.addListener(listener);
-    }
-  }    
-
-
-  public static void removeModelAdapterListener(Object modelObject, ModelAdapterListener listener)
-  {                               
-    ModelAdapter modelAdapter = getModelAdapter(modelObject);
-    if (modelAdapter != null)
-    {
-      modelAdapter.removeListener(listener);
-    }
-  }   
-
-  protected static ModelAdapter getModelAdapter(Object modelObject)
-  {
-    ModelAdapter modelAdapter = null;                         
-    if (modelObject instanceof Notifier)
-    {
-      modelAdapter = (ModelAdapter)xsdAdapterFactoryImpl.adapt((Notifier)modelObject);
-    } 
-    else if (modelObject instanceof ModelAdapter)
-    {
-      modelAdapter = (ModelAdapter)modelObject;
-    } 
-    return modelAdapter;
-  }      
-}
-    
-
-
-// --------------------------------------------------------------------------------------------
-// todo... revist this stuff
-// --------------------------------------------------------------------------------------------
-
-  /*                   
-  public static void handleTypeChange(XSDTypeDefinition td, XSDSchema schema, int change)
-  {                                    
-    try
-    {
-      TypeFindingSchemaVisitor visitor = new TypeFindingSchemaVisitor(schema, td, change == Notification.ADD);
-      List list = visitor.findElementsUsingType(schema);          
-      
-      if (change == Notification.REMOVE)          
-      {
-        visitor.removeMatchingReferences();
-      }
-      else if (change == Notification.ADD)          
-      {
-        visitor.setMatchingReferences();
-      }
-      else
-      {
-        visitor.cleanUpTypeMismatches();        
-      }
-      
-      for (Iterator i = list.iterator(); i.hasNext(); )
-      {
-        Object o = i.next();  
-        XSDObjectAdapter adapter = getExisitingAdapter(o);
-        if (adapter != null)
-        { 
-          adapter.fireChildrenChangedNotification();
-        }
-      }          
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-    }
-  }
-          
-
-  protected static class TypeFindingSchemaVisitor extends org.eclipse.wst.xsd.utility.XSDVisitor
-  {                           
-    protected XSDTypeDefinition td;
-    protected List list = new ArrayList();   
-    protected XSDSchema schema;                            
-    protected boolean matchByName;
-
-    public TypeFindingSchemaVisitor(XSDSchema schema, XSDTypeDefinition td, boolean matchByName)
-    {
-      this.td = td;                                 
-      this.schema = schema;
-      this.matchByName = matchByName;
-    }
-
-    public void visitElementDeclaration(XSDElementDeclaration ed)
-    {                                  
-      if (ed.getTypeDefinition() == td)
-      {                
-        list.add(ed);        
-      }  
-      else if (matchByName)
-      {          
-        String[] name = getDOMName(ed);
-        if (name[0].equals(td.getTargetNamespace()) && name[1].equals(td.getName()))
-        {
-          list.add(ed);
-        }
-      }
-    } 
-
-    public List findElementsUsingType(XSDSchema schema)
-    {
-      if (td != null)
-      {
-        visitSchema(schema);
-      }    
-      return list;
-    }   
-
-    public List getMatchingTypeList()
-    {
-      return list;
-    } 
-
-    public String[] getDOMName(XSDElementDeclaration ed)
-    {      
-      String[] result = new String[2];
-      org.w3c.dom.Element domElement = ed.getElement();
-      String typeName = domElement.getAttribute("type");
-      if (typeName != null && !typeName.endsWith(td.getName()))
-      {             
-        int index = typeName.indexOf(":");                                      
-        String prefix = index == -1 ? "" : typeName.substring(0, index);   
-        result[0] = (String)schema.getQNamePrefixToNamespaceMap().get(prefix);
-        if (result[0] == null) result[0] = "";
-        if (result[1] == null) result[1] = "";
-        result[1] = index == -1 ? typeName : typeName.substring(index + 1);
-      }  
-      else
-      {
-        result[0] = "";
-        result[1] = "";
-      }
-      return result;
-    }
-    
-    
-    public void cleanUpTypeMismatches()
-    {
-      for (Iterator i = list.iterator(); i.hasNext(); )
-      {
-        XSDElementDeclaration ed = (XSDElementDeclaration)i.next();
-        XSDTypeDefinition candidateTd = ed.getTypeDefinition();
-        if (candidateTd != null && candidateTd.getName() != null)
-        {
-          String[] result = getDOMName(ed);
-          ed.setTypeDefinition((XSDTypeDefinition)schema.resolveComplexTypeDefinition(result[0], result[1]));         
-        }
-      }
-    }
-    
-    public void removeMatchingReferences()
-    {
-      for (Iterator i = list.iterator(); i.hasNext(); )
-      {
-        XSDElementDeclaration ed = (XSDElementDeclaration)i.next();
-        String[] result = getDOMName(ed);          
-        if (ed.getElement() != null)
-        {
-          // NOTE ... this forces the model to reset the ed's XSDTypeDefinition without causing the
-          // DOM element's 'type' attribute to be set to null
-          ed.elementAttributesChanged(ed.getElement());
-        }
-      }
-    }
-    
-    public void setMatchingReferences()
-    {
-      for (Iterator i = list.iterator(); i.hasNext(); )
-      {
-        XSDElementDeclaration ed = (XSDElementDeclaration)i.next();
-        ed.setTypeDefinition(td);
-      }
-    }    
-  } */   
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGroupRef.gif b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGroupRef.gif
deleted file mode 100644
index 3621342..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/icons/XSDGroupRef.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyAttributePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyAttributePropertySource.java
deleted file mode 100644
index 0f4e7e7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyAttributePropertySource.java
+++ /dev/null
@@ -1,173 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class AnyAttributePropertySource extends BasePropertySource implements IPropertySource
-{
-  private String[] namespaceComboValues = {
-              "",
-              "##any",
-              "##other",
-              "##targetNamespace",
-              "##local"
-  };
-  
-  private String[] processContentsComboValues = {
-              "",
-              XSDEditorPlugin.getXSDString("_UI_COMBO_LAX"),
-              XSDEditorPlugin.getXSDString("_UI_COMBO_SKIP"),
-              XSDEditorPlugin.getXSDString("_UI_COMBO_STRICT")
-  };
-  public AnyAttributePropertySource()
-  {
-  }
-
-  public AnyAttributePropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-    
-  public AnyAttributePropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-
-    XSDComboBoxPropertyDescriptor namespaceDescriptor = new XSDComboBoxPropertyDescriptor(
-        XSDConstants.NAMESPACE_ATTRIBUTE,
-        XSDConstants.NAMESPACE_ATTRIBUTE,
-        namespaceComboValues);
-    list.add(namespaceDescriptor);
-    
-    XSDComboBoxPropertyDescriptor processContentsDescriptor = new XSDComboBoxPropertyDescriptor(
-        XSDConstants.PROCESSCONTENTS_ATTRIBUTE,
-        XSDConstants.PROCESSCONTENTS_ATTRIBUTE,
-        processContentsComboValues);
-    list.add(processContentsDescriptor);
-    
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-      if (result == null)
-      {
-        result = "";
-      }
-      return result;
-    }
-    return "";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      if (((String) id).equals(XSDConstants.NAMESPACE_ATTRIBUTE))
-      {
-        String namespace = (String)value;
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_NAMESPACE_CHANGE"), element);
-        if (namespace != null && namespace.length() > 0)
-        {
-          element.setAttribute(XSDConstants.NAMESPACE_ATTRIBUTE, namespace);
-        }
-        else
-        {
-          element.removeAttribute(XSDConstants.NAMESPACE_ATTRIBUTE);
-        }
-        endRecording(element);
-      }
-      else if (((String) id).equals(XSDConstants.PROCESSCONTENTS_ATTRIBUTE))
-      {
-        String processContents = (String)value;
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_PROCESSCONTENTS_CHANGE"), element);
-        if (processContents != null && processContents.length() > 0)
-        {
-          element.setAttribute(XSDConstants.PROCESSCONTENTS_ATTRIBUTE, processContents);
-        }
-        else
-        {
-          element.removeAttribute(XSDConstants.PROCESSCONTENTS_ATTRIBUTE);
-        }
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-
-  }
-
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyContentPropertyDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyContentPropertyDescriptor.java
deleted file mode 100644
index 7904053..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyContentPropertyDescriptor.java
+++ /dev/null
@@ -1,154 +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.properties;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-import org.w3c.dom.CharacterData;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class AnyContentPropertyDescriptor extends PropertyDescriptor
-{
-  Element element;
-  /**
-   * @param id
-   * @param displayName
-   */
-  public AnyContentPropertyDescriptor(Object id, String displayName, Element element)
-  {
-    super(id, displayName);
-    this.element = element;
-  }
-  
-  public CellEditor createPropertyEditor(Composite parent)
-  {
-    CellEditor editor = new AnyContentDialogCellEditor(parent);
-    if (getValidator() != null)
-      editor.setValidator(getValidator());
-    return editor;
-  }
-
-  public class AnyContentDialogCellEditor extends DialogCellEditor {
-
-    /**
-     * Creates a new Font dialog cell editor parented under the given control.
-     * The cell editor value is <code>null</code> initially, and has no 
-     * validator.
-     *
-     * @param parent the parent control
-     */
-    protected AnyContentDialogCellEditor(Composite parent) {
-      super(parent);
-    }
-
-    /**
-     * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control)
-     */
-    protected Object openDialogBox(Control cellEditorWindow)
-    {
-      Shell shell = Display.getCurrent().getActiveShell();
-      
-      AnyContentDialog dialog = new AnyContentDialog(shell);
-      dialog.setBlockOnOpen(true);
-      dialog.create();
-      
-      String value = (String)getValue();
-
-      int result = dialog.open();
-
-      if (result == Window.OK)
-      {
-        return dialog.getComment();
-      }
-      return value;
-    }
-
-  }
-
-  public class AnyContentDialog extends org.eclipse.jface.dialogs.Dialog
-  {
-    protected Text commentField;
-    protected Button okButton, cancelButton;
-    private String comment;
-    
-    public AnyContentDialog(Shell shell)
-    {
-      super(shell);
-    }
-
-    protected void configureShell(Shell shell)
-    {
-      super.configureShell(shell);
-    }
-
-    protected void buttonPressed(int buttonId)
-    {
-      if (buttonId == Dialog.OK)
-      {
-        comment = commentField.getText();
-      }
-      super.buttonPressed(buttonId);
-    }
-
-    public String getComment() { return comment; }
-
-    //
-    // Create the controls
-    //
-    public Control createDialogArea(Composite parent)
-    {
-      Composite client = (Composite)super.createDialogArea(parent);
-      getShell().setText(element.getLocalName());
-      
-      commentField = ViewUtility.createMultiTextField(client, 400, 200, true);
-      
-      WorkbenchHelp.setHelp(commentField, XSDEditorContextIds.XSDE_ANNOTATION_COMMENT);
-      commentField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_COMMENT")); //$NON-NLS-1$
-
-      String initialString = (String)getInitialContent();
-      commentField.setText(initialString);
-      return client;
-    }
-
-    private Object getInitialContent()
-    {
-      Object result = null;
-      if (element.hasChildNodes())
-       {
-        // if the element is Text
-        Node node = element.getFirstChild();
-        if (node instanceof CharacterData)
-         {
-          result = ((CharacterData)node).getData();
-        }
-      }
-      else
-       {
-        result = ""; //$NON-NLS-1$
-      }
-      return result;
-    }
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyElementPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyElementPropertySource.java
deleted file mode 100644
index 1b2e12b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AnyElementPropertySource.java
+++ /dev/null
@@ -1,226 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class AnyElementPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-
-  private String[] namespaceComboValues = {
-        "",
-        "##any",
-        "##other",
-        "##targetNamespace",
-        "##local"
-  };
-  
-  private String[] processContentsComboValues = {
-     "",
-     XSDEditorPlugin.getXSDString("_UI_COMBO_LAX"),
-     XSDEditorPlugin.getXSDString("_UI_COMBO_SKIP"),
-     XSDEditorPlugin.getXSDString("_UI_COMBO_STRICT")
-  };
-  
-  /**
-   * 
-   */
-  public AnyElementPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public AnyElementPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public AnyElementPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-
-    XSDComboBoxPropertyDescriptor namespaceDescriptor = new XSDComboBoxPropertyDescriptor(
-        XSDConstants.NAMESPACE_ATTRIBUTE,
-        XSDConstants.NAMESPACE_ATTRIBUTE,
-        namespaceComboValues);
-    list.add(namespaceDescriptor);
-    
-    XSDComboBoxPropertyDescriptor processContentsDescriptor = new XSDComboBoxPropertyDescriptor(
-        XSDConstants.PROCESSCONTENTS_ATTRIBUTE,
-        XSDConstants.PROCESSCONTENTS_ATTRIBUTE,
-        processContentsComboValues);
-    list.add(processContentsDescriptor);
-
-// These are moved to the tabbed properties general section     
-//    PropertyDescriptor minOccursDescriptor =
-//    new TextPropertyDescriptor(
-//        XSDConstants.MINOCCURS_ATTRIBUTE,
-//        XSDConstants.MINOCCURS_ATTRIBUTE);
-//    list.add(minOccursDescriptor);
-//    PropertyDescriptor maxOccursDescriptor =
-//    new TextPropertyDescriptor(
-//        XSDConstants.MAXOCCURS_ATTRIBUTE,
-//        XSDConstants.MAXOCCURS_ATTRIBUTE);
-//    list.add(maxOccursDescriptor);
-    
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-      if (result == null)
-      {
-        result = "";
-      }
-      return result;
-
-//      if (((String) id).equals(XSDConstants.NAMESPACE_ATTRIBUTE))
-//       {
-//      }
-//      else if (((String) id).equals(XSDConstants.PROCESSCONTENTS_ATTRIBUTE))
-//       {
-//      }      
-    }
-    return "";
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-     {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      if (((String) id).equals(XSDConstants.MAXOCCURS_ATTRIBUTE))
-      {
-        String max = (String)value;
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_MAXOCCURS_CHANGE"), element);
-        if (max.length() > 0)
-        {
-          element.setAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE, max);
-        }
-        else
-        {
-          element.removeAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
-        }
-        endRecording(element);
-      }
-      else if (((String) id).equals(XSDConstants.MINOCCURS_ATTRIBUTE))
-      {
-        String min = (String)value;
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_MINOCCURS_CHANGE"), element);
-        if (min.length() > 0)
-        {
-          element.setAttribute(XSDConstants.MINOCCURS_ATTRIBUTE, min);
-        }
-        else
-        {
-          element.removeAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
-        }
-        endRecording(element);
-      }
-      else if (((String) id).equals(XSDConstants.NAMESPACE_ATTRIBUTE))
-      {
-        String namespace = (String)value;
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_NAMESPACE_CHANGE"), element);
-        if (namespace.length() > 0)
-        {
-          element.setAttribute(XSDConstants.NAMESPACE_ATTRIBUTE, namespace);
-        }
-        else
-        {
-          element.removeAttribute(XSDConstants.NAMESPACE_ATTRIBUTE);
-        }
-        endRecording(element);
-      }
-      else if (((String) id).equals(XSDConstants.PROCESSCONTENTS_ATTRIBUTE))
-      {
-        String processContents = (String)value;
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_PROCESSCONTENTS_CHANGE"), element);
-        if (processContents.length() > 0)
-        {
-          element.setAttribute(XSDConstants.PROCESSCONTENTS_ATTRIBUTE, processContents);
-        }
-        else
-        {
-          element.removeAttribute(XSDConstants.PROCESSCONTENTS_ATTRIBUTE);
-        }
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AppInfoPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AppInfoPropertySource.java
deleted file mode 100644
index b99c768..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AppInfoPropertySource.java
+++ /dev/null
@@ -1,216 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.CharacterData;
-import org.w3c.dom.Node;
-
-public class AppInfoPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  public static String CONTENT = "Content";
-
-  /**
-   * 
-   */
-  public AppInfoPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public AppInfoPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public AppInfoPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    PropertyDescriptor sourceDescriptor =
-      new TextPropertyDescriptor(
-        XSDConstants.SOURCE_ATTRIBUTE,
-        XSDConstants.SOURCE_ATTRIBUTE);
-    list.add(sourceDescriptor);
-    AnyContentPropertyDescriptor contentDescriptor =
-      new AnyContentPropertyDescriptor(
-        CONTENT,
-        CONTENT,
-        element);
-    list.add(contentDescriptor);
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      if (((String) id).equals(CONTENT))
-      {
-        try
-        {
-          if (element.hasChildNodes())
-          {
-            // if the element is Text
-            Node node = element.getFirstChild();
-            if (node instanceof CharacterData)
-            {
-              return ((CharacterData)node).getData();
-            }
-          }
-          else
-          {
-            return "";
-          }
-        }
-        catch (Exception e)
-        {
-            
-        }
-
-      }
-      else
-      {
-        result = element.getAttribute((String) id);
-      }
-    }
-    if (result == null)
-    {
-      result = "";
-    }
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value != null)
-    {
-      if (value instanceof String)
-      {
-        if (((String)id).equals(XSDConstants.SOURCE_ATTRIBUTE))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_SOURCE_ATTRIBUTE_CHANGE"), element);
-          if (((String)value).length() > 0)
-          {
-            element.setAttribute(XSDConstants.SOURCE_ATTRIBUTE, (String)value);
-          }
-          else
-          {
-            element.removeAttribute(XSDConstants.SOURCE_ATTRIBUTE);
-          }
-          endRecording(element);
-        }
-        else if (((String)id).equals(CONTENT))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_COMMENT_CHANGE"), element);
-          try
-          {
-            if (element.hasChildNodes())
-            {
-              // if the element is Text
-              Node node = element.getFirstChild();
-              if (node instanceof CharacterData)
-              {
-                ((CharacterData)node).setData((String)value);
-              }
-            }
-            else
-            {
-              if (((String)value).length() > 0)
-              {
-                Node childNode = element.getOwnerDocument().createTextNode((String)value);
-                element.appendChild(childNode);
-              }
-            }
-            endRecording(element);
-          }
-          catch (Exception e)
-          {
-            
-          }
-        }
-        else  // shouldn't be here
-        {
-          element.setAttribute((String) id, (String) value);
-        }
-      }
-      else if (value instanceof Integer)
-      {
-      }
-    }
-    else
-    {
-      element.removeAttribute((String) id);
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributeGroupRefPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributeGroupRefPropertySource.java
deleted file mode 100644
index 74ca702..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributeGroupRefPropertySource.java
+++ /dev/null
@@ -1,172 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-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.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class AttributeGroupRefPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  private String[] refComboValues = { "" };
-  /**
-   * 
-   */
-  public AttributeGroupRefPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public AttributeGroupRefPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public AttributeGroupRefPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  
-  public void setInput(Element element)
-  {
-    this.element = element;
-    TypesHelper helper = new TypesHelper(xsdSchema);
-    java.util.List items = helper.getGlobalAttributes();
-      
-    if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true))
-    {
-      items = helper.getGlobalAttributes();
-//      WorkbenchHelp.setHelp(client, XSDEditorContextIds.XSDE_ATTRIBUTE_REF_DESIGN_VIEW);
-//      WorkbenchHelp.setHelp(refCombo, XSDEditorContextIds.XSDE_ATTRIBUTE_REF_NAME);      
-    }
-    else if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true))
-    {
-      items = helper.getGlobalAttributeGroups();
-//      WorkbenchHelp.setHelp(client, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_REF_DESIGN_VIEW);
-//      WorkbenchHelp.setHelp(refCombo, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_REF_NAME);
-    }
-    int size = items.size() + 1;
-    refComboValues = new String[size];
-    refComboValues[0] = "";
-    if (items != null)
-    {
-      for (int i = 0; i < items.size(); i++)
-      {
-        refComboValues[i + 1] = (String) items.get(i);
-      }
-    }
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    XSDComboBoxPropertyDescriptor refDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        XSDConstants.REF_ATTRIBUTE,
-        XSDConstants.REF_ATTRIBUTE,
-        refComboValues);
-    list.add(refDescriptor);
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-      if (result == null)
-      {
-        result = "";
-      }
-//      if (((String) id).equals(XSDConstants.REF_ATTRIBUTE))
-//      {
-//      }
-      return result;
-    }
-    return "";
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-     {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      if (((String) id).equals(XSDConstants.REF_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTEGROUP_REF_CHANGE"), element);
-        element.setAttribute(XSDConstants.REF_ATTRIBUTE, (String) value);
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributePropertySource.java
deleted file mode 100644
index b6413fe..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributePropertySource.java
+++ /dev/null
@@ -1,293 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-public class AttributePropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  private String[] useComboValues =
-  {
-        "", //$NON-NLS-1$
-        "prohibited",   // XSDEditorPlugin.getXSDString("_UI_COMBO_BOX_PROHIBITED"), //$NON-NLS-1$ 
-        "optional",   // XSDEditorPlugin.getXSDString("_UI_COMBO_BOX_OPTIONAL"), //$NON-NLS-1$
-        "required"  // XSDEditorPlugin.getXSDString("_UI_COMBO_BOX_REQUIRED") //$NON-NLS-1$
-  };
-
-  protected String formComboValues[] =
-  {
-        "", //$NON-NLS-1$
-        XSDEditorPlugin.getXSDString("_UI_COMBO_UNQUALIFIED"), //$NON-NLS-1$
-        XSDEditorPlugin.getXSDString("_UI_COMBO_QUALIFIED") //$NON-NLS-1$
-  };
-  
-  
-  /**
-   * 
-   */
-  public AttributePropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public AttributePropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public AttributePropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    PropertyDescriptor nameDescriptor = new TextPropertyDescriptor(XSDConstants.NAME_ATTRIBUTE, XSDConstants.NAME_ATTRIBUTE);
-    list.add(nameDescriptor);
-//    nameDescriptor.setCategory(XSDEditorPlugin.getXSDString("_UI_LABEL_GENERAL"));
-    TypesPropertyDescriptor typeDescriptor = new TypesPropertyDescriptor(
-      XSDConstants.TYPE_ATTRIBUTE,
-      XSDConstants.TYPE_ATTRIBUTE,
-      element, xsdSchema);
-    list.add(typeDescriptor);
-//    typeDescriptor.setCategory(XSDEditorPlugin.getXSDString("_UI_LABEL_GENERAL"));
-
-    Attr fixedAttr = element.getAttributeNode(XSDConstants.FIXED_ATTRIBUTE);
-    Attr defaultAttr = element.getAttributeNode(XSDConstants.DEFAULT_ATTRIBUTE);
-    String str;
-    if (fixedAttr != null)
-     {
-      str = XSDConstants.FIXED_ATTRIBUTE;
-    }
-    else if (defaultAttr != null)
-     {
-      str = XSDConstants.DEFAULT_ATTRIBUTE;
-    }
-    else
-     {
-      str = XSDConstants.FIXED_ATTRIBUTE + "/" + XSDConstants.DEFAULT_ATTRIBUTE; //$NON-NLS-1$
-    }
-    
-    FixedOrDefaultTextPropertyDescriptor fixedOrDefaultDescriptor =
-    new FixedOrDefaultTextPropertyDescriptor(
-        str, 
-        str,
-        element);
-    list.add(fixedOrDefaultDescriptor);
-//    fixedOrDefaultDescriptor.setCategory(XSDEditorPlugin.getXSDString("_UI_LABEL_OTHER"));
-    
-    Object parentNode = element.getParentNode();
-    if (XSDDOMHelper.inputEquals(parentNode, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-    {
-    }
-    else
-    {
-      XSDComboBoxPropertyDescriptor useDescriptor =
-      new XSDComboBoxPropertyDescriptor(
-          XSDConstants.USE_ATTRIBUTE,
-          XSDConstants.USE_ATTRIBUTE,
-          useComboValues);
-      list.add(useDescriptor);
-//      useDescriptor.setCategory(XSDEditorPlugin.getXSDString("_UI_LABEL_OTHER"));
-      XSDComboBoxPropertyDescriptor formDescriptor =
-      new XSDComboBoxPropertyDescriptor(
-          XSDConstants.FORM_ATTRIBUTE,
-          XSDConstants.FORM_ATTRIBUTE,
-          formComboValues);
-      list.add(formDescriptor);
-//      formDescriptor.setCategory(XSDEditorPlugin.getXSDString("_UI_LABEL_OTHER"));
-    }
-    
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-      if (result == null)
-      {
-        result = ""; //$NON-NLS-1$
-      }
-      if (((String) id).equals(XSDConstants.TYPE_ATTRIBUTE))
-      {
-        if (result.equals("")) //$NON-NLS-1$
-        {
-          if (checkForAnonymousType(element))
-          {
-            return "**anonymous**"; //$NON-NLS-1$
-          }
-          else
-          {
-            return XSDEditorPlugin.getXSDString("_UI_NO_TYPE"); //$NON-NLS-1$ 
-          }
-        }
-        else
-         {
-          return result;
-        }
-      }
-      return result;
-    }
-    return ""; //$NON-NLS-1$
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = ""; //$NON-NLS-1$
-    }
-    if (value instanceof String)
-    {
-      if (((String) id).equals(XSDConstants.TYPE_ATTRIBUTE))
-      {
-//        beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element);
-//        element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, (String)value);
-//        updateElementToNotAnonymous(element);
-//        endRecording(element);
-      }
-      else if (((String) id).equals(XSDConstants.NAME_ATTRIBUTE))
-      { 
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_NAME_CHANGE"), element); //$NON-NLS-1$
-        // now rename any references to this element
-        if (xsdSchema != null)
-         {
-          XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-          if (comp != null && comp instanceof XSDAttributeDeclaration && comp.getRootContainer().equals(xsdSchema))
-          {
-            XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)comp;
-            xsdAttributeDeclaration.setName((String)value);
-            //TODO : cs revisit
-            //GlobalAttributeRenamer renamer = new GlobalAttributeRenamer(xsdAttributeDeclaration, (String)value);
-            //renamer.visitSchema(xsdSchema);
-          }
-        }
-        element.setAttribute(XSDConstants.NAME_ATTRIBUTE, (String)value);
-        endRecording(element);
-      }
-      else if (((String) id).equals(XSDConstants.FIXED_ATTRIBUTE) || ((String) id).equals(XSDConstants.DEFAULT_ATTRIBUTE))
-      {            
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_VALUE_CHANGE"), element); //$NON-NLS-1$
-        if (((String)value).equals("")) //$NON-NLS-1$
-         {
-          element.removeAttribute((String)id);
-        }
-        else
-        {  
-          element.setAttribute((String) id, (String) value);
-        }
-        endRecording(element);
-      }
-      else if (((String) id).equals(XSDConstants.USE_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_USE_CHANGE"), element); //$NON-NLS-1$
-        if (((String)value).equals("")) //$NON-NLS-1$
-        {
-          element.removeAttribute(XSDConstants.USE_ATTRIBUTE);
-        }
-        else
-        {  
-          element.setAttribute((String) id, (String)value);
-        }
-        endRecording(element);
-      }
-      else if (((String) id).equals(XSDConstants.FORM_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_FORM_CHANGE"), element); //$NON-NLS-1$
-        if (((String)value).equals("")) //$NON-NLS-1$
-        {
-          element.removeAttribute(XSDConstants.FORM_ATTRIBUTE);
-        }
-        else
-        {
-          element.setAttribute(XSDConstants.FORM_ATTRIBUTE, (String)value);
-        }
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-  
-  boolean checkForAnonymousType(Element element)
-  {
-    NodeList list = element.getElementsByTagNameNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-    if (list.getLength() > 0)
-     {
-      return true;
-    }
-    return false;
-  }  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributesTable.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributesTable.java
deleted file mode 100644
index cfed172..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/AttributesTable.java
+++ /dev/null
@@ -1,331 +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.properties;
-
-//import com.ibm.icu.text.Collator;
-//import java.util.Comparator;
-//import java.util.List;
-//
-//import org.eclipse.jface.viewers.CellEditor;
-//import org.eclipse.jface.viewers.ColumnPixelData;
-//import org.eclipse.jface.viewers.ICellModifier;
-//import org.eclipse.jface.viewers.ILabelProvider;
-//import org.eclipse.jface.viewers.IStructuredContentProvider;
-//import org.eclipse.jface.viewers.ITableLabelProvider;
-//import org.eclipse.jface.viewers.LabelProvider;
-//import org.eclipse.jface.viewers.TableLayout;
-//import org.eclipse.jface.viewers.TableViewer;
-//import org.eclipse.jface.viewers.TextCellEditor;
-//import org.eclipse.jface.viewers.Viewer;
-//import org.eclipse.swt.SWT;
-//import org.eclipse.swt.events.MouseAdapter;
-//import org.eclipse.swt.events.MouseEvent;
-//import org.eclipse.swt.graphics.Image;
-//import org.eclipse.swt.widgets.Composite;
-//import org.eclipse.swt.widgets.Control;
-//import org.eclipse.swt.widgets.Table;
-//import org.eclipse.swt.widgets.TableColumn;
-//import org.eclipse.swt.widgets.TableItem;
-//import org.eclipse.ui.IEditorPart;
-//import org.eclipse.ui.views.properties.ComboBoxPropertyDescriptor;
-//import org.eclipse.ui.views.properties.IPropertyDescriptor;
-//import org.eclipse.ui.views.properties.IPropertySource;
-//import org.w3c.dom.Element;
-
-public class AttributesTable // extends TableViewer implements ICellModifier
-{
-//	protected static final String PROPERTY = "property"; //$NON-NLS-1$
-//	protected static final String VALUE = "value"; //$NON-NLS-1$
-//
-//	protected IEditorPart editorPart;
-//	protected String[] columnProperties = {PROPERTY, VALUE};
-//	protected PropertyTableProvider tableProvider = new PropertyTableProvider(this);
-//	protected CellEditor cellEditor;
-//	//protected StringComboBoxCellEditor comboCellEditor;
-//	protected IPropertySource propertySource;
-//
-//	public AttributesTable(IEditorPart editorPart, Composite parent)
-//	{
-//		super(new Table(parent, SWT.FULL_SELECTION | SWT.MULTI | SWT.FLAT | SWT.H_SCROLL | SWT.V_SCROLL));   
-//				 this.editorPart = editorPart;               
-//		getTable().setLinesVisible(true);
-//		getTable().setHeaderVisible(true);  
-//    
-//		setContentProvider(tableProvider);
-//		setLabelProvider(tableProvider);
-//		setColumnProperties(columnProperties);
-//
-//		for (int i = 0; i < columnProperties.length; i++)
-//		{
-//			TableColumn column = new TableColumn(getTable(), SWT.NONE, i);
-//			column.setText(columnProperties[i]);
-//			column.setAlignment(SWT.LEFT);
-//		}      
-//
-////		TableLayout layout = new TableLayout(); 
-////		ColumnWeightData data = new ColumnWeightData(40, 40, true);
-////		layout.addColumnData(data);
-////    
-////		ColumnWeightData data2 = new ColumnWeightData(80, 80, true);
-////		layout.addColumnData(data2);                       
-//
-//		TableLayout layout = new TableLayout();
-//		layout.addColumnData(new ColumnPixelData(130,true));
-//		layout.addColumnData(new ColumnPixelData(130,true));
-//		getTable().setLayout(layout);
-//		
-//         
-//		cellEditor = new TextCellEditor(getTable());                            
-//		resetCellEditors();           
-//
-//		setCellModifier(this);    
-//	}  
-//
-//	public void setPropertySource(IPropertySource propertySource)
-//	{
-//		this.propertySource = propertySource;
-//	}
-//
-//  /* (non-Javadoc)
-//   * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String)
-//   */
-//  public boolean canModify(Object element, String property)
-//  {
-//		return property.equals(VALUE);
-//  }
-//  
-//  /* (non-Javadoc)
-//   * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String)
-//   */
-//  public Object getValue(Object element, String property)
-//  {
-//		int column = 0;
-//		if (property.equals(columnProperties[0]))
-//		{
-//			column = 0;
-//		}
-//		else if (property.equals(columnProperties[1]))
-//		{
-//			column = 1;
-//		}    
-//		return tableProvider.getColumnValue(element, column);
-// }
-//
-//  /* (non-Javadoc)
-//   * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String, java.lang.Object)
-//   */
-//  public void modify(Object element, String property, Object value)
-//  {
-//		TableItem item = (TableItem)element;
-//  	IPropertyDescriptor propertyDescriptor = (IPropertyDescriptor)item.getData();
-//              
-//	// if the new value is the same as the old value, the user has only clicked
-//	// on the cell in the course of 'browsing' ... so don't edit the value
-//	  Object oldValue = getValue(propertyDescriptor, property);       
-//	  if (value != null && !value.equals(oldValue)) 
-//	  {      
-//				 // we assume the value is empty that the attribute should be removed
-//				 // todo... we probably need to look at this in more detail
-//				 if (value instanceof String && ((String)value).length() == 0)
-//				 {
-//								value = null;
-//				 }
-//				 propertySource.setPropertyValue(propertyDescriptor.getId(), value);    
-//	  }                       
-//  }
-//
-//      
-//	protected void hookControl(Control control) {
-//	  // we need to hook up our own mouse listener first
-//				 // so that we can update the cellEditors before
-//				 // the 'internal' listener tries to get hold of them
-//			 Table tableControl = (Table)control;
-//				 tableControl.addMouseListener(new MouseAdapter() {
-//								public void mouseDown(MouseEvent e) {
-//								  System.out.println("Mouse down");
-//										   updateCellEditors();
-//								}
-//				 });
-//		  super.hookControl(control);
-//	}                                
-//
-//	protected void updateCellEditors()
-//	{
-//		CellEditor[] cellEditors = new CellEditor[2];
-//		cellEditors[0] = cellEditor;
-//		cellEditors[1] = cellEditor;
-//
-//		Element element = (Element)getInput();
-//              
-//		IPropertyDescriptor[] propertyDescriptors = propertySource.getPropertyDescriptors();
-//		int index = getTable().getSelectionIndex();
-//		if (index >= 0 && index < propertyDescriptors.length)
-//		{
-//			CellEditor[] oldCellEditors = getCellEditors();
-//			CellEditor oldCellEditor = (oldCellEditors.length > 1) ? oldCellEditors[1] : null;
-//			if (oldCellEditor != null && oldCellEditor != cellEditor)
-//			{
-//			 oldCellEditor.deactivate();
-//			 oldCellEditor.dispose();
-//			}
-//			cellEditors[1] = propertyDescriptors[index].createPropertyEditor(getTable());     
-//		}  
-//		setCellEditors(cellEditors);     
-//
-////		IPropertyDescriptor[] propertyDescriptors = propertySource.getPropertyDescriptors();
-////
-//// 		int index = getTable().getSelectionIndex();
-//// 		//cellEditor.dispose();
-////
-////		if (index >= 0 && index < propertyDescriptors.length)
-////		{
-////      cellEditor = propertyDescriptors[index].createPropertyEditor(getTable());
-////			Control control = cellEditor.getControl();
-////			if (control == null) {
-////				cellEditor.deactivate();
-////				cellEditor = null;
-////				return;
-////			}
-////			setCellEditors(new CellEditor[] {null, cellEditor});
-////			cellEditor.activate();
-////			cellEditor.setFocus();
-////		}
-//	}
-//                 
-//
-//	public String[] getStringArray(List list)
-//	{
-//		String[] result = new String[list.size()];
-//		for (int i = 0; i < result.length; i++)
-//		{
-//			result[i] = (String)list.get(i);
-//		}
-//		return result;
-//	}
-//                                   
-//	protected void resetCellEditors()
-//	{
-//			 CellEditor[] cellEditors = new CellEditor[2];
-//			 cellEditors[0] = null;
-//			 cellEditors[1] = cellEditor;
-//			 setCellEditors(cellEditors);  
-//	}
-//
-//
-//	class PropertyTableProvider extends LabelProvider implements ITableLabelProvider, IStructuredContentProvider
-//	{                  
-//		protected TableViewer viewer;
-//
-//		PropertyTableProvider(TableViewer viewer)
-//		{
-//			this.viewer = viewer;
-//		}
-//		
-//		public void inputChanged(Viewer viewer, Object oldInput, Object newInput)  
-//		{
-////		 resetCellEditors();                         
-////			if (newInput instanceof XMLElement)
-////			{      
-////					 propertySource = new ExtensiblePropertySource(editorPart, (XMLElement)newInput);
-////			} 
-////			if (newInput instanceof Element)
-////			{
-////				if (XSDDOMHelper.inputEquals(newInput, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-////				{  
-////				  propertySource = new ElementPropertySource((Element)newInput, viewer);
-////				}
-////				else
-////				{  
-////  				 propertySource = new ReadOnlyPropertySource(editorPart, (Element)newInput);
-////				}
-////			}
-////			else
-////			{
-////						 propertySource = null;
-////			}          
-//		}
-//
-//		public Image getColumnImage(Object element, int columnIndex)
-//		{  
-//			return null;
-//		}      
-//
-//		public Object getColumnValue(Object o, int columnIndex)  
-//		{ 
-//			IPropertyDescriptor propertyDescriptor = (IPropertyDescriptor)o;
-//			if (columnIndex == 0)
-//			{
-//			  return propertyDescriptor.getId();
-//			}
-//			else
-//			{  
-//			  return propertySource.getPropertyValue(propertyDescriptor.getId());
-//			}
-//		}
-//		  
-//		public String getColumnText(Object o, int columnIndex)  
-//		{ 
-//			IPropertyDescriptor propertyDescriptor = (IPropertyDescriptor)o;
-//			// (columnIndex == 1 && propertyDescriptor instanceof XSDComboBoxPropertyDescriptor)
-//			if ((columnIndex == 1 && propertyDescriptor instanceof OptionsComboBoxPropertyDescriptor) ||
-//			   (columnIndex == 1 && propertyDescriptor instanceof ComboBoxPropertyDescriptor))
-//			{
-//			  ILabelProvider lp = propertyDescriptor.getLabelProvider();
-//			  if (lp != null)
-//		  	{
-//			    return lp.getText(propertyDescriptor.getId());
-//		  	}
-//			}
-//			
-//			Object id = propertyDescriptor.getId();
-//      String attribute = "";
-//		  if (id != null && attribute instanceof String)
-//      {
-//        attribute = (String)id;
-//      }
-//      Object value = propertySource.getPropertyValue(attribute);
-//      String attributeValue = "";
-//      if (value != null)
-//      {
-//        attributeValue = (String)value;
-//      }
-//
-//      return (columnIndex == 0) ? attribute : attributeValue;
-//			
-////			  return (columnIndex == 0) ? propertyDescriptor.getId().toString() : propertySource.getPropertyValue(propertyDescriptor.getId()).toString();
-//		}  
-//
-//		public Object[] getElements(Object o)
-//		{         
-//						Object[] result = propertySource.getPropertyDescriptors();
-//						// For some strange reson the ViewerSorter doesn't seem to be working for this table
-//						// As a workaround we sort them in this method before returning them to the viewer
-////						if (result.length > 0)
-////						{
-////									 Arrays.sort(result, new InternalComparator());
-////						}
-//						return result;
-//		}
-//	}
-//
-//	class InternalComparator implements Comparator
-//	{
-//			 public int compare(Object e1, Object e2) 
-//			 {
-//							IPropertyDescriptor p1 = (IPropertyDescriptor)e1;
-//							IPropertyDescriptor p2 = (IPropertyDescriptor)e2;
-//							String p1Name = p1.getDisplayName();
-//							String p2Name = p2.getDisplayName();
-//							return Collator.getInstance().compare(p1.getDisplayName(), p2.getDisplayName());
-//			 }         
-//	}
-//
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/BasePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/BasePropertySource.java
deleted file mode 100644
index dbea691..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/BasePropertySource.java
+++ /dev/null
@@ -1,126 +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.properties;
-
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.NameValidator;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public abstract class BasePropertySource implements IPropertySource
-{
-	protected Element element;
-	protected Viewer viewer;
-	protected IPropertyDescriptor[] propertyDescriptors;
-	protected XSDSchema xsdSchema;
-	protected String [] trueFalseComboValues = {
-		"",
-		"false",
-		"true"
-	};
-
-  public BasePropertySource()
-  {
-    
-  }
-
-  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);    
-  }
-  
-  
-  public BasePropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    this.viewer = viewer;
-    this.xsdSchema = xsdSchema;
-  }
-  
-  public BasePropertySource(XSDSchema xsdSchema)
-  {
-    this.xsdSchema = xsdSchema;
-  }
-  
-  public void setViewer(Viewer viewer)
-  {
-    this.viewer = viewer;
-  }
-
-  public void setInput(Element element)
-  {
-    this.element = element;
-  }
-
-  protected XSDDOMHelper domHelper = new XSDDOMHelper();
-  /**
-   * Gets the domHelper.
-   * @return Returns a XSDDomHelper
-   */
-  public XSDDOMHelper getDomHelper()
-  {
-    return domHelper;
-  }
-  
-	protected boolean hasElementChildren(Node parentNode)
-	{
-		boolean hasChildrenElements = false;
-		if (parentNode != null && parentNode.hasChildNodes())
-		{
-			NodeList nodes = parentNode.getChildNodes();
-			for (int i = 0; i < nodes.getLength(); i++)
-			{
-				if (nodes.item(i) instanceof Element)
-				{
-					hasChildrenElements = true;
-					break;
-				}
-			}
-		}
-		return hasChildrenElements;
-	}
-  
-  protected boolean validateName(String name)
-  {
-    return NameValidator.isValid(name);
-  }
-
-  // TODO
-  protected boolean validateLanguage(String lang)
-  {
-    return true;
-  }
-  
-  // TODO  
-  protected boolean validatePrefix(String prefix)
-  {
-    return true;
-  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ComplexTypePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ComplexTypePropertySource.java
deleted file mode 100644
index aa358e6..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ComplexTypePropertySource.java
+++ /dev/null
@@ -1,339 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.SetBaseTypeAction;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class ComplexTypePropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  private String DERIVED_BY_ID = "derived by"; // XSDEditorPlugin.getXSDString("_UI_LABEL_DERIVED_BY");  //$NON-NLS-1$ 
-  private String BASE_TYPE_ID = "base type"; //  XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE");  //$NON-NLS-1$
-  
-  private String[] blockOrFinalComboValues = 
-  {
-    "",    	//$NON-NLS-1$
-    "#all",  //$NON-NLS-1$
-    "extension", //$NON-NLS-1$
-    "restriction" //$NON-NLS-1$
-  };
-  
-  /**
-   * 
-   */
-  public ComplexTypePropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public ComplexTypePropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public ComplexTypePropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    
-    XSDComboBoxPropertyDescriptor abstractDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        XSDConstants.ABSTRACT_ATTRIBUTE,
-        XSDConstants.ABSTRACT_ATTRIBUTE,
-        trueFalseComboValues);
-    list.add(abstractDescriptor);
-
-    XSDComboBoxPropertyDescriptor mixedDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        XSDConstants.MIXED_ATTRIBUTE,
-        XSDConstants.MIXED_ATTRIBUTE,
-        trueFalseComboValues);
-    list.add(mixedDescriptor);
-        
-    XSDComboBoxPropertyDescriptor blockDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        XSDConstants.BLOCK_ATTRIBUTE,
-        XSDConstants.BLOCK_ATTRIBUTE,
-        blockOrFinalComboValues);
-    list.add(blockDescriptor);
-    XSDComboBoxPropertyDescriptor finalDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        XSDConstants.FINAL_ATTRIBUTE,
-        XSDConstants.FINAL_ATTRIBUTE,
-        blockOrFinalComboValues);
-    list.add(finalDescriptor);
-    
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-
-  public void setInput(Element element)
-  {
-    this.element = element;
-    
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      String attributeName = (String)id;
-      result = element.getAttribute((String) id);
-      Element contentModelElement = getDomHelper().getContentModelFromParent(element);    
-      String baseType = getDomHelper().getBaseType(contentModelElement);
-      
-      if (result == null)
-      {
-        result = ""; //$NON-NLS-1$
-      }
-      
-      if (attributeName.equals(DERIVED_BY_ID))
-      {
-        return getDomHelper().getDerivedByName(contentModelElement);
-      }
-      else if (attributeName.equals(BASE_TYPE_ID))
-      {
-        if (baseType != null)
-        {
-          return baseType;
-        }
-        else
-        {
-          return ""; //$NON-NLS-1$
-        }
-      }
-      else if (attributeName.equals(XSDConstants.NAME_ATTRIBUTE))
-      {
-        String name = element.getAttribute(XSDConstants.NAME_ATTRIBUTE);
-        
-        boolean isAnonymousType = checkForAnonymousType(element);
-        if (isAnonymousType)
-        {
-          return "**anonymous**";  //$NON-NLS-1$
-        }
-        else
-        {
-          return name;
-        }
-      }
-        
-      return result;
-//      if (((String) id).equals(XSDConstants.ABSTRACT_ATTRIBUTE)
-//          || ((String) id).equals(XSDConstants.MIXED_ATTRIBUTE))
-//      {
-//      }
-//      else if (((String) id).equals(XSDConstants.BLOCK_ATTRIBUTE))
-//       {
-//      }
-//      else if (((String) id).equals(XSDConstants.FINAL_ATTRIBUTE))
-//      {
-//      }
-    }
-    return ""; //$NON-NLS-1$
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = ""; //$NON-NLS-1$
-    }
-    if (value instanceof String)
-    {
-      String newValue = (String)value;
-      String attributeName = (String)id;
-      
-      if (attributeName.equals(XSDConstants.NAME_ATTRIBUTE))
-      {
-        if (validateName(newValue))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_NAME_CHANGE"), element); //$NON-NLS-1$
-          if (newValue.length() > 0)
-          {
-            // now rename any references to this type
-            if (xsdSchema != null)
-            {
-              XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-              if (comp != null && comp instanceof XSDComplexTypeDefinition && comp.getContainer().equals(xsdSchema))
-              {
-//                XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)comp;
-//                ct.setName(newValue);
-                //TODO : cs revisit
-                //GlobalSimpleOrComplexTypeRenamer renamer = new GlobalSimpleOrComplexTypeRenamer((XSDNamedComponent)comp, newValue);
-                //renamer.visitSchema(xsdSchema);
-              }
-            }
-            element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-          }
-          else
-          {
-            element.removeAttribute(XSDConstants.NAME_ATTRIBUTE);
-          }
-          endRecording(element);
-        }
-      }
-      else if (attributeName.equals(DERIVED_BY_ID))
-      {
-        Element contentModelElement = getDomHelper().getContentModelFromParent(element);
-        String baseType = getDomHelper().getBaseType(contentModelElement);
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_DERIVEDBY_CHANGE"), element); //$NON-NLS-1$
-        getDomHelper().changeDerivedByType(contentModelElement, newValue, baseType);
-        endRecording(element);
-      }
-      else if (attributeName.equals(BASE_TYPE_ID))
-      {
-        String derivedBy = getDomHelper().getDerivedByName(element);
-        
-        SetBaseTypeAction setBaseTypeAction = new SetBaseTypeAction(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_BASE_TYPE")); //$NON-NLS-1$
-        setBaseTypeAction.setXSDSchema(xsdSchema);
-        setBaseTypeAction.setComplexTypeElement(element);
-        setBaseTypeAction.setType(newValue);
-        setBaseTypeAction.setDerivedBy(derivedBy);
-        setBaseTypeAction.performAction();
-
-//        handleBaseTypeComboChange(newValue);
-        
-      }
-      else
-      {
-        if (attributeName.equals(XSDConstants.ABSTRACT_ATTRIBUTE))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_ABSTRACT_CHANGE"), element); //$NON-NLS-1$
-        }
-        else if (attributeName.equals(XSDConstants.MIXED_ATTRIBUTE))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_MIXED_CHANGE"), element); //$NON-NLS-1$
-        }
-        else if (attributeName.equals(XSDConstants.BLOCK_ATTRIBUTE))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_BLOCK_CHANGE"), element); //$NON-NLS-1$
-        }
-        else if (attributeName.equals(XSDConstants.FINAL_ATTRIBUTE))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_FINAL_CHANGE"), element); //$NON-NLS-1$
-        }
-        
-        if (newValue.length() > 0)
-        {
-          element.setAttribute((String) id,  (String)value);
-        }
-        else
-        {
-          element.removeAttribute((String) id);
-        }
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-
-  boolean checkForAnonymousType(Element element)
-  {
-    Object parentElement = (Object)element.getParentNode();
-    boolean isAnonymous = false;
-    if (parentElement != null)
-    {
-      if (XSDDOMHelper.inputEquals(parentElement, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-      {
-        isAnonymous = true; 
-      }
-    }
-    return isAnonymous;
-  }
-  
-  
-//  private void handleBaseTypeComboChange(String newType)
-//  {
-//    String tempChoice = newType;
-//    TypesHelper helper = new TypesHelper(xsdSchema);
-//    if (helper.getBuiltInTypeNamesList().contains(tempChoice) ||
-//        helper.getUserSimpleTypeNamesList().contains(tempChoice))
-//    {
-//      derivedByCombo.setText(XSDConstants.EXTENSION_ELEMENT_TAG);
-//      derivedByCombo.setEnabled(false);
-//    }
-//    else if (helper.getUserComplexTypeNamesList().contains(tempChoice))
-//     {
-//      Element contentModelElement = getDomHelper().getContentModelFromParent(element);    
-//      String derivedByString = getDomHelper().getDerivedByName(contentModelElement);
-//      derivedByCombo.setText(derivedByString);
-//      derivedByCombo.setEnabled(true); 
-//    }
-//    else
-//     {
-//      derivedByCombo.setText("");
-//      derivedByCombo.setEnabled(false); 
-//    }
-//  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DocumentationPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DocumentationPropertySource.java
deleted file mode 100644
index 0dfda24..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DocumentationPropertySource.java
+++ /dev/null
@@ -1,242 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.CharacterData;
-import org.w3c.dom.Node;
-
-
-public class DocumentationPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  public static String CONTENT = "Content";
-  
-  /**
-   * 
-   */
-  public DocumentationPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public DocumentationPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-
-  }
-  /**
-   * @param xsdSchema
-   */
-  public DocumentationPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    PropertyDescriptor languageDescriptor =
-    new TextPropertyDescriptor(
-        "xml:lang",
-        "xml:lang"
-        );
-    list.add(languageDescriptor);
-    PropertyDescriptor sourceDescriptor =
-    new TextPropertyDescriptor(
-        XSDConstants.SOURCE_ATTRIBUTE,
-        XSDConstants.SOURCE_ATTRIBUTE);
-    list.add(sourceDescriptor);
-    AnyContentPropertyDescriptor contentDescriptor =
-    new AnyContentPropertyDescriptor(
-        CONTENT,
-        CONTENT,
-        element);
-    list.add(contentDescriptor);
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-     {
-      if (((String) id).equals(CONTENT))
-       {
-        try
-        {
-          if (element.hasChildNodes())
-           {
-            // if the element is Text
-            Node node = element.getFirstChild();
-            if (node instanceof CharacterData)
-             {
-              return ((CharacterData)node).getData();
-            }
-          }
-          else
-           {
-            return "";
-          }
-        }
-        catch (Exception e)
-        {
-          
-        }
-
-      }
-      else
-       {
-        result = element.getAttribute((String) id);
-      }
-    }
-    if (result == null)
-     {
-      result = "";
-    }
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value != null)
-    {
-      if (value instanceof String)
-      {
-        String newValue = (String)value;
-        if (((String)id).equals("xml:lang"))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_DOCUMENTATION_LANG_CHANGE"), element);
-          if (newValue.length() > 0)
-          {
-            if (validateLanguage(newValue))
-            {
-              element.setAttribute("xml:lang", newValue);
-            }
-          }
-          else
-          {
-            // clearErrorMessage();
-            element.removeAttribute("xml:lang");
-          }
-          endRecording(element);
-        }
-        else if (((String)id).equals(XSDConstants.SOURCE_ATTRIBUTE))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_DOCUMENTATION_SOURCE_CHANGE"), element);
-          if (newValue.length() > 0)
-          {
-            element.setAttribute(XSDConstants.SOURCE_ATTRIBUTE, newValue);
-          }
-          else
-          {
-            element.removeAttribute(XSDConstants.SOURCE_ATTRIBUTE);
-          }
-          endRecording(element);
-        }
-        else if (((String)id).equals(CONTENT))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_DOCUMENTATION_COMMENT_CHANGE"), element);
-          try
-          {
-            if (element.hasChildNodes())
-            {
-              // if the element is Text
-              Node node = element.getFirstChild();
-              if (node instanceof CharacterData)
-              {
-                ((CharacterData)node).setData(newValue);
-              }
-            }
-            else
-            {
-              if (newValue.length() > 0)
-              {
-                Node childNode = element.getOwnerDocument().createTextNode(newValue);
-                element.appendChild(childNode);
-              }
-            }
-            endRecording(element);
-          }
-          catch (Exception e)
-          {
-            
-          }
-        }
-        else  // shouldn't be here
-        {
-          element.setAttribute((String) id, newValue);
-        }
-      }
-      else if (value instanceof Integer)
-      {
-      }
-    }
-    else
-    {
-      element.removeAttribute((String) id);
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
- 
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DynamicCellEditor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DynamicCellEditor.java
deleted file mode 100644
index b09526a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/DynamicCellEditor.java
+++ /dev/null
@@ -1,1174 +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.properties;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.ACC;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleControlAdapter;
-import org.eclipse.swt.accessibility.AccessibleControlEvent;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.accessibility.AccessibleTextAdapter;
-import org.eclipse.swt.accessibility.AccessibleTextEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.TypedListener;
-
-public class DynamicCellEditor extends Composite
-{
-	Text text;
-	List list;
-	int maxItemCount = 5;
-	Shell popup;
-	Button arrow;
-	boolean hasFocus;
-	
-  public DynamicCellEditor(Composite parent, int style) {
-	super (parent, checkStyle (style));
-	
-	style = getStyle();
-	
-	int textStyle = SWT.SINGLE;
-	if ((style & SWT.READ_ONLY) != 0) textStyle |= SWT.READ_ONLY;
-	if ((style & SWT.FLAT) != 0) textStyle |= SWT.FLAT;
-	text = new Text (this, textStyle);
-	
-	popup = new Shell (getShell (), SWT.NO_TRIM);
-	
-	int listStyle = SWT.SINGLE | SWT.V_SCROLL;
-	if ((style & SWT.FLAT) != 0) listStyle |= SWT.FLAT;
-	if ((style & SWT.RIGHT_TO_LEFT) != 0) listStyle |= SWT.RIGHT_TO_LEFT;
-	if ((style & SWT.LEFT_TO_RIGHT) != 0) listStyle |= SWT.LEFT_TO_RIGHT;
-	list = new List (popup, listStyle);
-	
-	int arrowStyle = SWT.ARROW | SWT.DOWN;
-	if ((style & SWT.FLAT) != 0) arrowStyle |= SWT.FLAT;
-	arrow = new Button (this, arrowStyle);
-
-	Listener listener = new Listener () {
-		public void handleEvent (Event event) {
-			if (popup == event.widget) {
-				popupEvent (event);
-				return;
-			}
-			if (text == event.widget) {
-				textEvent (event);
-				return;
-			}
-			if (list == event.widget) {
-				listEvent (event);
-				return;
-			}
-			if (arrow == event.widget) {
-				arrowEvent (event);
-				return;
-			}
-			if (DynamicCellEditor.this == event.widget) {
-				comboEvent (event);
-				return;
-			}
-
-		}
-	};
-	
-	int [] comboEvents = {SWT.Dispose, SWT.Move, SWT.Resize};
-	for (int i=0; i<comboEvents.length; i++) this.addListener (comboEvents [i], listener);
-	
-	int [] popupEvents = {SWT.Close, SWT.Paint, SWT.Deactivate};
-	for (int i=0; i<popupEvents.length; i++) popup.addListener (popupEvents [i], listener);
-	
-	int [] textEvents = {SWT.KeyDown, SWT.KeyUp, SWT.Modify, SWT.MouseDown, SWT.MouseUp, SWT.Traverse, SWT.FocusIn, SWT.FocusOut};
-	for (int i=0; i<textEvents.length; i++) text.addListener (textEvents [i], listener);
-	
-	int [] listEvents = {SWT.MouseUp, SWT.Selection, SWT.Traverse, SWT.KeyDown, SWT.KeyUp, SWT.FocusIn, SWT.FocusOut};
-	for (int i=0; i<listEvents.length; i++) list.addListener (listEvents [i], listener);
-	
-	int [] arrowEvents = {SWT.Selection, SWT.FocusIn, SWT.FocusOut};
-	for (int i=0; i<arrowEvents.length; i++) arrow.addListener (arrowEvents [i], listener);
-	
-	initAccessible();
-}
-static int checkStyle (int style) {
-	int mask = SWT.BORDER | SWT.READ_ONLY | SWT.FLAT | SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT;
-	return style & mask;
-}
-/**
-* Adds an item.
-* <p>
-* The item is placed at the end of the list.
-* Indexing is zero based.
-*
-* @param string the new item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when the string is null
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_ADDED)
-*	when the item cannot be added
-*/
-public void add (String string) {
-	checkWidget();
-	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	list.add (string);
-}
-/**
-* Adds an item at an index.
-* <p>
-* The item is placed at an index in the list.
-* Indexing is zero based.
-*
-* This operation will fail when the index is
-* out of range.
-*
-* @param string the new item
-* @param index the index for the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when the string is null
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_ADDED)
-*	when the item cannot be added
-*/
-public void add (String string, int index) {
-	checkWidget();
-	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	list.add (string, index);
-}
-/**	 
-* Adds the listener to receive events.
-* <p>
-*
-* @param listener the listener
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when listener is null
-*/
-public void addModifyListener (ModifyListener listener) {;
-	checkWidget();
-	if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	TypedListener typedListener = new TypedListener (listener);
-	addListener (SWT.Modify, typedListener);
-}
-/**	 
-* Adds the listener to receive events.
-* <p>
-*
-* @param listener the listener
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when listener is null
-*/
-public void addSelectionListener(SelectionListener listener) {
-	checkWidget();
-	if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	TypedListener typedListener = new TypedListener (listener);
-	addListener (SWT.Selection,typedListener);
-	addListener (SWT.DefaultSelection,typedListener);
-}
-void arrowEvent (Event event) {
-	switch (event.type) {
-		case SWT.FocusIn: {
-			if (hasFocus) return;
-			hasFocus = true;
-			if (getEditable ()) text.selectAll ();
-			Event e = new Event();
-			e.time = event.time;
-			notifyListeners(SWT.FocusIn, e);
-			break;
-		}
-		case SWT.FocusOut: {
-			event.display.asyncExec(new Runnable() {
-				public void run() {
-					if (DynamicCellEditor.this.isDisposed()) return;
-					Control focusControl = getDisplay().getFocusControl();
-					if (focusControl == list || focusControl == text) return;
-					hasFocus = false;
-					Event e = new Event();
-					notifyListeners(SWT.FocusOut, e);
-				}
-			});
-			break;
-		}
-		case SWT.Selection: {
-			dropDown (!isDropped ());
-			break;
-		}
-	}
-}
-/**
-* Clears the current selection.
-* <p>
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-*/
-public void clearSelection () {
-	checkWidget();
-	text.clearSelection ();
-	list.deselectAll ();
-}
-void comboEvent (Event event) {
-	switch (event.type) {
-		case SWT.Dispose:
-			if (popup != null && !popup.isDisposed ()) popup.dispose ();
-			popup = null;  
-			text = null;  
-			list = null;  
-			arrow = null;
-			break;
-		case SWT.Move:
-			dropDown(false);
-			break;
-		case SWT.Resize:
-			internalLayout();
-			break;
-	}
-}
-
-public Point computeSize (int wHint, int hHint, boolean changed) {
-	checkWidget();
-	int width = 0, height = 0;
-	Point textSize = text.computeSize (wHint, SWT.DEFAULT, changed);
-	Point arrowSize = arrow.computeSize(SWT.DEFAULT, SWT.DEFAULT, changed);
-	Point listSize = list.computeSize (wHint, SWT.DEFAULT, changed);
-	int borderWidth = getBorderWidth();
-	
-	height = Math.max (hHint, Math.max(textSize.y, arrowSize.y)  + 2*borderWidth);
-	width = Math.max (wHint, Math.max(textSize.x + arrowSize.x + 2*borderWidth, listSize.x + 2)  );
-	return new Point (width, height);
-}
-/**
-* Deselects an item.
-* <p>
-* If the item at an index is selected, it is
-* deselected.  If the item at an index is not
-* selected, it remains deselected.  Indices
-* that are out of range are ignored.  Indexing
-* is zero based.
-*
-* @param index the index of the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-*/
-public void deselect (int index) {
-	checkWidget();
-	list.deselect (index);
-}
-/**
-* Deselects all items.
-* <p>
-*
-* If an item is selected, it is deselected.
-* If an item is not selected, it remains unselected.
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-*/
-public void deselectAll () {
-	checkWidget();
-	list.deselectAll ();
-}
-void dropDown (boolean drop) {
-	if (drop == isDropped ()) return;
-	if (!drop) {
-		popup.setVisible (false);
-		text.setFocus();
-		return;
-	}
-
-	int index = list.getSelectionIndex ();
-	if (index != -1) list.setTopIndex (index);
-	Display display = getDisplay ();
-	Rectangle listRect = list.getBounds ();
-	Rectangle parentRect = display.map (getParent (), null, getBounds());
-	Point comboSize = getSize ();
-	Rectangle displayRect = getMonitor().getClientArea();
-	int width = Math.max (comboSize.x, listRect.width + 2);
-	int height = listRect.height + 2;
-	int x = parentRect.x;
-	int y = parentRect.y + comboSize.y;
-	if (y + height > displayRect.y + displayRect.height) y = parentRect.y - height;
-	popup.setBounds (x, y, width, height);
-	popup.setVisible (true);
-	list.setFocus();
-}
-public Control [] getChildren () {
-	checkWidget();
-	return new Control [0];
-}
-boolean getEditable () {
-	return text.getEditable ();
-}
-/**
-* Gets an item at an index.
-* <p>
-* Indexing is zero based.
-*
-* This operation will fail when the index is out
-* of range or an item could not be queried from
-* the OS.
-*
-* @param index the index of the item
-* @return the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_CANNOT_GET_ITEM)
-*	when the operation fails
-*/
-public String getItem (int index) {
-	checkWidget();
-	return list.getItem (index);
-}
-/**
-* Gets the number of items.
-* <p>
-* This operation will fail if the number of
-* items could not be queried from the OS.
-*
-* @return the number of items in the widget
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_CANNOT_GET_COUNT)
-*	when the operation fails
-*/
-public int getItemCount () {
-	checkWidget();
-	return list.getItemCount ();
-}
-/**
-* Gets the height of one item.
-* <p>
-* This operation will fail if the height of
-* one item could not be queried from the OS.
-*
-* @return the height of one item in the widget
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_CANNOT_GET_ITEM_HEIGHT)
-*	when the operation fails
-*/
-public int getItemHeight () {
-	checkWidget();
-	return list.getItemHeight ();
-}
-/**
-* Gets the items.
-* <p>
-* This operation will fail if the items cannot
-* be queried from the OS.
-*
-* @return the items in the widget
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_CANNOT_GET_ITEM)
-*	when the operation fails
-*/
-public String [] getItems () {
-	checkWidget();
-	return list.getItems ();
-}
-/**
-* Gets the selection.
-* <p>
-* @return a point representing the selection start and end
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-*/
-public Point getSelection () {
-	checkWidget();
-	return text.getSelection ();
-}
-/**
-* Gets the index of the selected item.
-* <p>
-* Indexing is zero based.
-* If no item is selected -1 is returned.
-*
-* @return the index of the selected item.
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-*/
-public int getSelectionIndex () {
-	checkWidget();
-	return list.getSelectionIndex ();
-}
-/**
-* Gets the widget text.
-* <p>
-* If the widget has no text, an empty string is returned.
-*
-* @return the widget text
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-*/
-public String getText () {
-	checkWidget();
-	return text.getText ();
-}
-/**
-* Gets the height of the combo's text field.
-* <p>
-* The operation will fail if the height cannot 
-* be queried from the OS.
-
-* @return the height of the combo's text field.
-* 
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_ERROR_CANNOT_GET_ITEM_HEIGHT)
-*	when the operation fails
-*/
-public int getTextHeight () {
-	checkWidget();
-	return text.getLineHeight();
-}
-/**
-* Gets the text limit.
-* <p>
-* @return the text limit
-* 
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-*/
-public int getTextLimit () {
-	checkWidget();
-	return text.getTextLimit ();
-}
-/**
-* Gets the index of an item.
-* <p>
-* The list is searched starting at 0 until an
-* item is found that is equal to the search item.
-* If no item is found, -1 is returned.  Indexing
-* is zero based.
-*
-* @param string the search item
-* @return the index of the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when string is null
-*/
-public int indexOf (String string) {
-	checkWidget();
-	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	return list.indexOf (string);
-}
-/**
-* Gets the index of an item.
-* <p>
-* The widget is searched starting at start including
-* the end position until an item is found that
-* is equal to the search itenm.  If no item is
-* found, -1 is returned.  Indexing is zero based.
-*
-* @param string the search item
-* @param index the starting position
-* @return the index of the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when string is null
-*/
-public int indexOf (String string, int start) {
-	checkWidget();
-	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	return list.indexOf (string, start);
-}
-
-void initAccessible() {
-	getAccessible().addAccessibleListener(new AccessibleAdapter() {
-		public void getHelp(AccessibleEvent e) {
-			e.result = getToolTipText();
-		}
-	});
-	
-	getAccessible().addAccessibleTextListener(new AccessibleTextAdapter() {
-		public void getCaretOffset(AccessibleTextEvent e) {
-			e.offset = text.getCaretPosition();
-		}
-	});
-	
-	getAccessible().addAccessibleControlListener(new AccessibleControlAdapter() {
-		public void getChildAtPoint(AccessibleControlEvent e) {
-			Point testPoint = toControl(new Point(e.x, e.y));
-			if (getBounds().contains(testPoint)) {
-				e.childID = ACC.CHILDID_SELF;
-			}
-		}
-		
-		public void getLocation(AccessibleControlEvent e) {
-			Rectangle location = getBounds();
-			Point pt = toDisplay(new Point(location.x, location.y));
-			e.x = pt.x;
-			e.y = pt.y;
-			e.width = location.width;
-			e.height = location.height;
-		}
-		
-		public void getChildCount(AccessibleControlEvent e) {
-			e.detail = 0;
-		}
-		
-		public void getRole(AccessibleControlEvent e) {
-			e.detail = ACC.ROLE_COMBOBOX;
-		}
-		
-		public void getState(AccessibleControlEvent e) {
-			e.detail = ACC.STATE_NORMAL;
-		}
-
-		public void getValue(AccessibleControlEvent e) {
-			e.result = getText();
-		}
-	});
-}
-boolean isDropped () {
-	return popup.getVisible ();
-}
-public boolean isFocusControl () {
-	checkWidget();
-	if (text.isFocusControl() || arrow.isFocusControl() || list.isFocusControl() || popup.isFocusControl()) {
-		return true;
-	} else {
-		return super.isFocusControl();
-	}
-}
-
-//public boolean isListVisible()
-//{
-//  checkWidget();
-//  return list.isVisible();
-//}
-
-void internalLayout () {
-	if (isDropped ()) dropDown (false);
-	
-	Rectangle rect = getClientArea();
-	int width = rect.width;
-	int height = rect.height;
-	Point arrowSize = arrow.computeSize(SWT.DEFAULT, height);
-	text.setBounds (0, 0, width - arrowSize.x, height);
-	arrow.setBounds (width - arrowSize.x, 0, arrowSize.x, arrowSize.y);
-	
-	Point size = getSize();
-	int itemCount = list.getItemCount();
-	itemCount = (itemCount == 0) ? maxItemCount : Math.min(maxItemCount, itemCount);
-	int itemHeight = list.getItemHeight () * itemCount;
-	Point listSize = list.computeSize (SWT.DEFAULT, itemHeight);
-	list.setBounds (1, 1, Math.max (size.x - 2, listSize.x), listSize.y);
-}
-void listEvent (Event event) {
-	switch (event.type) {
-		case SWT.FocusIn: {
-			if (hasFocus) return;
-			hasFocus = true;
-			if (getEditable ()) text.selectAll ();
-			Event e = new Event();
-			e.time = event.time;
-			notifyListeners(SWT.FocusIn, e);
-			break;
-		}
-		case SWT.FocusOut: {
-			event.display.asyncExec(new Runnable() {
-				public void run() {
-					if (DynamicCellEditor.this.isDisposed()) return;
-					Control focusControl = getDisplay().getFocusControl();
-					if (focusControl == text || focusControl == arrow || focusControl == list) return;
-					hasFocus = false;
-					Event e = new Event();
-					notifyListeners(SWT.FocusOut, e);
-				}
-			});
-			break;
-		}
-		case SWT.MouseUp: {
-			if (event.button != 1) return;
-			dropDown (false);
-			break;
-		}
-		case SWT.Selection: {
-			int index = list.getSelectionIndex ();
-			if (index == -1) return;
-			text.setText (list.getItem (index));
-			text.selectAll ();
-			list.setSelection(index);
-			Event e = new Event();
-			e.time = event.time;
-			e.stateMask = event.stateMask;
-			e.doit = event.doit;
-			notifyListeners(SWT.Selection, e);
-			event.doit = e.doit;
-			break;
-		}
-		case SWT.Traverse: {
-			switch (event.detail) {
-				case SWT.TRAVERSE_TAB_NEXT:
-				case SWT.TRAVERSE_RETURN:
-				case SWT.TRAVERSE_ESCAPE:
-				case SWT.TRAVERSE_ARROW_PREVIOUS:
-				case SWT.TRAVERSE_ARROW_NEXT:
-					event.doit = false;
-					break;
-			}
-			Event e = new Event();
-			e.time = event.time;
-			e.detail = event.detail;
-			e.doit = event.doit;
-			e.keyCode = event.keyCode;
-			notifyListeners(SWT.Traverse, e);
-			event.doit = e.doit;
-			break;
-		}
-		case SWT.KeyUp: {		
-			Event e = new Event();
-			e.time = event.time;
-			e.character = event.character;
-			e.keyCode = event.keyCode;
-			e.stateMask = event.stateMask;
-			notifyListeners(SWT.KeyUp, e);
-			break;
-		}
-		case SWT.KeyDown: {
-			if (event.character == SWT.ESC) { 
-				// escape key cancels popup list
-				dropDown (false);
-			}
-			if (event.character == SWT.CR || event.character == '\t') {
-				// Enter and Tab cause default selection
-				dropDown (false);
-				Event e = new Event();
-				e.time = event.time;
-				e.stateMask = event.stateMask;
-				notifyListeners(SWT.DefaultSelection, e);
-			}
-			//At this point the widget may have been disposed.
-			// If so, do not continue.
-			if (isDisposed()) break;
-			Event e = new Event();
-			e.time = event.time;
-			e.character = event.character;
-			e.keyCode = event.keyCode;
-			e.stateMask = event.stateMask;
-			notifyListeners(SWT.KeyDown, e);
-			break;
-			
-		}
-	}
-}
-void popupEvent(Event event) {
-	switch (event.type) {
-		case SWT.Paint:
-			// draw black rectangle around list
-			Rectangle listRect = list.getBounds();
-			Color black = getDisplay().getSystemColor(SWT.COLOR_BLACK);
-			event.gc.setForeground(black);
-			event.gc.drawRectangle(0, 0, listRect.width + 1, listRect.height + 1);
-			break;
-		case SWT.Close:
-			event.doit = false;
-			dropDown (false);
-			break;
-		case SWT.Deactivate:
-			dropDown (false);
-			break;
-	}
-}
-public void redraw () {
-	super.redraw();
-	text.redraw();
-	arrow.redraw();
-	if (popup.isVisible()) list.redraw();
-}
-public void redraw (int x, int y, int width, int height, boolean all) {
-	super.redraw(x, y, width, height, true);
-}
-
-/**
-* Removes an item at an index.
-* <p>
-* Indexing is zero based.
-*
-* This operation will fail when the index is out
-* of range or an item could not be removed from
-* the OS.
-*
-* @param index the index of the item
-* @return the selection state
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_REMOVED)
-*	when the operation fails
-*/
-public void remove (int index) {
-	checkWidget();
-	list.remove (index);
-}
-/**
-* Removes a range of items.
-* <p>
-* Indexing is zero based.  The range of items
-* is from the start index up to and including
-* the end index.
-*
-* This operation will fail when the index is out
-* of range or an item could not be removed from
-* the OS.
-*
-* @param start the start of the range
-* @param end the end of the range
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_REMOVED)
-*	when the operation fails
-*/
-public void remove (int start, int end) {
-	checkWidget();
-	list.remove (start, end);
-}
-/**
-* Removes an item.
-* <p>
-* This operation will fail when the item
-* could not be removed from the OS.
-*
-* @param string the search item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when string is null
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_REMOVED)
-*	when the operation fails
-*/
-public void remove (String string) {
-	checkWidget();
-	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	list.remove (string);
-}
-/**
-* Removes all items.
-* <p>
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-*/
-public void removeAll () {
-	checkWidget();
-	text.setText (""); //$NON-NLS-1$
-	list.removeAll ();
-}
-/**	 
-* Removes the listener.
-* <p>
-*
-* @param listener the listener
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when listener is null
-*/
-public void removeModifyListener (ModifyListener listener) {
-	checkWidget();
-	if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	removeListener(SWT.Modify, listener);	
-}
-/**	 
-* Removes the listener.
-* <p>
-*
-* @param listener the listener
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when listener is null
-*/
-public void removeSelectionListener (SelectionListener listener) {
-	checkWidget();
-	if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	removeListener(SWT.Selection, listener);
-	removeListener(SWT.DefaultSelection,listener);	
-}
-/**
-* Selects an item.
-* <p>
-* If the item at an index is not selected, it is
-* selected. Indices that are out of
-* range are ignored.  Indexing is zero based.
-*
-* @param index the index of the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-*/
-public void select (int index) {
-	checkWidget();
-	if (index == -1) {
-		list.deselectAll ();
-		text.setText (""); //$NON-NLS-1$
-		return;
-	}
-	if (0 <= index && index < list.getItemCount()) {
-		if (index != getSelectionIndex()) {
-			text.setText (list.getItem (index));
-			text.selectAll ();
-			list.select (index);
-			list.showSelection ();
-		}
-	}
-}
-public void setBackground (Color color) {
-	super.setBackground(color);
-	if (text != null) text.setBackground(color);
-	if (list != null) list.setBackground(color);
-	if (arrow != null) arrow.setBackground(color);
-}
-public boolean setFocus () {
-	checkWidget();
-	return text.setFocus ();
-}
-public void setFont (Font font) {
-	super.setFont (font);
-	text.setFont (font);
-	list.setFont (font);
-	internalLayout ();
-}
-public void setForeground (Color color) {
-	super.setForeground(color);
-	if (text != null) text.setForeground(color);
-	if (list != null) list.setForeground(color);
-	if (arrow != null) arrow.setForeground(color);
-}
-/**
-* Sets the text of an item; indexing is zero based.
-*
-* This operation will fail when the index is out
-* of range or an item could not be changed in
-* the OS.
-*
-* @param index the index for the item
-* @param string the item
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when items is null
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_MODIFIED)
-*	when the operation fails
-*/
-public void setItem (int index, String string) {
-	checkWidget();
-	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	list.setItem (index, string);
-}
-/**
-* Sets all items.
-*
-* @param items the array of items
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when items is null
-* @exception org.eclipse.swt.SWTError(ERROR_ITEM_NOT_ADDED)
-*	when the operation fails
-*/
-public void setItems (String [] items) {
-	checkWidget();
-	if (items == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	int style = getStyle();
-	if ((style & SWT.READ_ONLY) != 0) text.setText (""); //$NON-NLS-1$
-	list.setItems (items);
-}
-/**
-* Sets the new selection.
-*
-* @param selection point representing the start and the end of the new selection
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when selection is null
-*/
-public void setSelection (Point selection) {
-	checkWidget();
-	if (selection == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	text.setSelection (selection.x, selection.y);
-}
-
-/**
-* Sets the widget text.
-*
-* @param string the widget text
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_NULL_ARGUMENT)
-*	when string is null
-*/
-public void setText (String string) {
-	checkWidget();
-	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
-	int index = list.indexOf (string);
-	if (index == -1) {
-		list.deselectAll ();
-		text.setText (string);
-		return;
-	}
-	text.setText (string);
-	text.selectAll ();
-	list.setSelection (index);
-	list.showSelection ();
-}
-/**
-* Sets the text limit.
-* 
-* @param limit new text limit
-*
-* @exception org.eclipse.swt.SWTError(ERROR_THREAD_INVALID_ACCESS)
-*	when called from the wrong thread
-* @exception org.eclipse.swt.SWTError(ERROR_WIDGET_DISPOSED)
-*	when the widget has been disposed
-* @exception org.eclipse.swt.SWTError(ERROR_CANNOT_BE_ZERO)
-*	when limit is 0
-*/
-public void setTextLimit (int limit) {
-	checkWidget();
-	text.setTextLimit (limit);
-}
-
-public void setToolTipText (String string) {
-	checkWidget();
-	super.setToolTipText(string);
-	arrow.setToolTipText (string);
-	text.setToolTipText (string);		
-}
-
-public void setVisible (boolean visible) {
-	super.setVisible(visible);
-	if (!visible) popup.setVisible(false);
-}
-
-void textEvent (Event event) {
-	switch (event.type) {
-		case SWT.FocusIn: {
-			if (hasFocus) return;
-			hasFocus = true;
-			if (getEditable ()) text.selectAll ();
-			Event e = new Event();
-			e.time = event.time;
-			notifyListeners(SWT.FocusIn, e);
-			break;
-		}
-		case SWT.FocusOut: {
-			event.display.asyncExec(new Runnable() {
-				public void run() {
-					if (DynamicCellEditor.this.isDisposed()) return;
-					Control focusControl = getDisplay().getFocusControl();
-					if (focusControl == list || focusControl == arrow) return;
-					hasFocus = false;
-					Event e = new Event();
-					notifyListeners(SWT.FocusOut, e);
-				}
-			});
-			break;
-		}
-		case SWT.KeyDown: {
-			
-			if (event.character == SWT.ESC) { // escape key cancels popup list
-				dropDown (false);
-			}
-			if (event.character == SWT.CR) {
-				dropDown (false);
-				Event e = new Event();
-				e.time = event.time;
-				e.stateMask = event.stateMask;
-				notifyListeners(SWT.DefaultSelection, e);
-			}
-			//At this point the widget may have been disposed.
-			// If so, do not continue.
-			if (isDisposed()) break;
-			
-			if (event.keyCode == SWT.ARROW_UP || event.keyCode == SWT.ARROW_DOWN) {
-				int oldIndex = getSelectionIndex ();
-				if (event.keyCode == SWT.ARROW_UP) {
-					select (Math.max (oldIndex - 1, 0));
-				} else {
-					select (Math.min (oldIndex + 1, getItemCount () - 1));
-				}
-		
-				if (oldIndex != getSelectionIndex ()) {
-					Event e = new Event();
-					e.time = event.time;
-					e.stateMask = event.stateMask;
-					notifyListeners(SWT.Selection, e);
-				}
-				//At this point the widget may have been disposed.
-				// If so, do not continue.
-				if (isDisposed()) break;
-			}
-			
-			// Further work : Need to add support for incremental search in 
-			// pop up list as characters typed in text widget
-						
-			Event e = new Event();
-			e.time = event.time;
-			e.character = event.character;
-			e.keyCode = event.keyCode;
-			e.stateMask = event.stateMask;
-			notifyListeners(SWT.KeyDown, e);
-			break;
-		}
-		case SWT.KeyUp: {
-			Event e = new Event();
-			e.time = event.time;
-			e.character = event.character;
-			e.keyCode = event.keyCode;
-			e.stateMask = event.stateMask;
-			notifyListeners(SWT.KeyUp, e);
-			break;
-		}
-		case SWT.Modify: {
-			list.deselectAll ();
-			Event e = new Event();
-			e.time = event.time;
-			notifyListeners(SWT.Modify, e);
-			break;
-		}
-		case SWT.MouseDown: {
-			if (event.button != 1) return;
-			if (text.getEditable ()) return;
-			boolean dropped = isDropped ();
-			text.selectAll ();
-			if (!dropped) setFocus ();
-			dropDown (!dropped);
-			break;
-		}
-		case SWT.MouseUp: {
-			if (event.button != 1) return;
-			if (text.getEditable ()) return;
-			text.selectAll ();
-			break;
-		}
-		case SWT.Traverse: {		
-			switch (event.detail) {
-				case SWT.TRAVERSE_RETURN:
-				case SWT.TRAVERSE_ARROW_PREVIOUS:
-				case SWT.TRAVERSE_ARROW_NEXT:
-					// The enter causes default selection and
-					// the arrow keys are used to manipulate the list contents so
-					// do not use them for traversal.
-					event.doit = false;
-					break;
-			}
-			
-			Event e = new Event();
-			e.time = event.time;
-			e.detail = event.detail;
-			e.doit = event.doit;
-			e.keyCode = event.keyCode;
-			notifyListeners(SWT.Traverse, e);
-			event.doit = e.doit;
-			break;
-		}
-	}
-}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ElementPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ElementPropertySource.java
deleted file mode 100644
index 9f21082..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ElementPropertySource.java
+++ /dev/null
@@ -1,543 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-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.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class ElementPropertySource extends BasePropertySource implements IPropertySource
-{
-  private String[] blockComboValues =
-    { "", "#all", "extension", "restriction", "substitution" };
-  private String[] finalComboValues =
-    { "", "#all", "extension", "restriction" };
-  private String[] substitutionGroupComboValues = { "" };
-  private String[] formComboValues =
-  {
-      "",
-      XSDEditorPlugin.getXSDString("_UI_COMBO_UNQUALIFIED"),
-      XSDEditorPlugin.getXSDString("_UI_COMBO_QUALIFIED")
-  };
-
-  public ElementPropertySource()
-  {
-    super();
-  }
-
-  public ElementPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  
-  public ElementPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-
-  public void setInput(Element element)
-  {
-    this.element = element;
-    TypesHelper helper = new TypesHelper(xsdSchema);
-    List globals = helper.getGlobalElements();
-    int size = globals.size() + 1;
-    substitutionGroupComboValues = new String[size];
-    substitutionGroupComboValues[0] = "";
-    if (globals != null)
-    {
-      for (int k = 0; k < globals.size(); k++)
-      {
-        substitutionGroupComboValues[k + 1] = (String) globals.get(k);
-      }
-    }
-  }
-
-  /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-	 */
-  public Object getEditableValue()
-  {
-//    return element.getNodeName();
-    return null;
-  }
-
-  /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-	 */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    Object parentNode = element.getParentNode();
-    boolean isGlobalElement = XSDDOMHelper.inputEquals(parentNode, XSDConstants.SCHEMA_ELEMENT_TAG, false);
-    
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-//  These have been moved to the general tab
-//    PropertyDescriptor nameDescriptor =
-//      new TextPropertyDescriptor(
-//        XSDConstants.NAME_ATTRIBUTE,
-//        XSDConstants.NAME_ATTRIBUTE);
-//    list.add(nameDescriptor);
-//    TypesPropertyDescriptor typeDescriptor = new TypesPropertyDescriptor(
-//        XSDConstants.TYPE_ATTRIBUTE,
-//        XSDConstants.TYPE_ATTRIBUTE,
-//        element, xsdSchema);
-//    list.add(typeDescriptor);
-    if (isGlobalElement)
-    {
-      XSDComboBoxPropertyDescriptor abstractDescriptor =
-        new XSDComboBoxPropertyDescriptor(
-          XSDConstants.ABSTRACT_ATTRIBUTE,
-          XSDConstants.ABSTRACT_ATTRIBUTE,
-          trueFalseComboValues);
-      list.add(abstractDescriptor);
-    }
-    if (!isGlobalElement)
-    {
-      PropertyDescriptor minOccursDescriptor =
-        new TextPropertyDescriptor(
-          XSDConstants.MINOCCURS_ATTRIBUTE,
-          XSDConstants.MINOCCURS_ATTRIBUTE);
-      list.add(minOccursDescriptor);
-    
-      PropertyDescriptor maxOccursDescriptor =
-        new TextPropertyDescriptor(
-          XSDConstants.MAXOCCURS_ATTRIBUTE,
-          XSDConstants.MAXOCCURS_ATTRIBUTE);
-      list.add(maxOccursDescriptor);
-    }
-    XSDComboBoxPropertyDescriptor nillableDescriptor =
-      new XSDComboBoxPropertyDescriptor(
-        XSDConstants.NILLABLE_ATTRIBUTE,
-        XSDConstants.NILLABLE_ATTRIBUTE,
-        trueFalseComboValues);
-    list.add(nillableDescriptor);
-    XSDComboBoxPropertyDescriptor blockDescriptor =
-      new XSDComboBoxPropertyDescriptor(
-        XSDConstants.BLOCK_ATTRIBUTE,
-        XSDConstants.BLOCK_ATTRIBUTE,
-        blockComboValues);
-    list.add(blockDescriptor);
-    if (isGlobalElement)
-    {      
-      XSDComboBoxPropertyDescriptor finalDescriptor =
-        new XSDComboBoxPropertyDescriptor(
-          XSDConstants.FINAL_ATTRIBUTE,
-          XSDConstants.FINAL_ATTRIBUTE,
-          finalComboValues);
-      list.add(finalDescriptor);
-      XSDComboBoxPropertyDescriptor substitutionGroupDescriptor =
-        new XSDComboBoxPropertyDescriptor(
-          XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE,
-          XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE,
-          substitutionGroupComboValues);
-      list.add(substitutionGroupDescriptor);
-    }
-    if (!isGlobalElement)
-    {
-      XSDComboBoxPropertyDescriptor formDescriptor =
-        new XSDComboBoxPropertyDescriptor(
-          XSDConstants.FORM_ATTRIBUTE,
-          XSDConstants.FORM_ATTRIBUTE,
-          formComboValues);
-      list.add(formDescriptor);
-    }
-
-    Attr fixedAttr = element.getAttributeNode(XSDConstants.FIXED_ATTRIBUTE);
-    Attr defaultAttr = element.getAttributeNode(XSDConstants.DEFAULT_ATTRIBUTE);
-    String str;
-    if (fixedAttr != null)
-    {
-      str = XSDConstants.FIXED_ATTRIBUTE;
-    }
-    else if (defaultAttr != null)
-    {
-      str = XSDConstants.DEFAULT_ATTRIBUTE;
-    }
-    else
-    {
-      str = XSDConstants.FIXED_ATTRIBUTE + "/" + XSDConstants.DEFAULT_ATTRIBUTE;
-    }
-    
-    FixedOrDefaultTextPropertyDescriptor fixedOrDefaultDescriptor =
-      new FixedOrDefaultTextPropertyDescriptor(
-        str, 
-        str,
-        element);
-    list.add(fixedOrDefaultDescriptor);
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-    //    return propertyDescriptors;
-  }
-
-  /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-	 */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      String attributeName = (String)id;
-      result = element.getAttribute(attributeName);
-      if (result == null)
-      {
-        result = "";
-      }
-      if (attributeName.equals(XSDConstants.TYPE_ATTRIBUTE))
-      {
-        boolean isAnonymous = checkForAnonymousType(element);
-        if (isAnonymous)
-        {
-          return "**anonymous**";
-        }
-        if (result.equals(""))
-        {
-          result = XSDEditorPlugin.getXSDString("_UI_NO_TYPE");
-        }
-        return result;
-      }
-      else if (attributeName.equals(XSDConstants.MAXOCCURS_ATTRIBUTE) 
-        || attributeName.equals(XSDConstants.MINOCCURS_ATTRIBUTE)
-        || attributeName.equals(XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE)
-        || attributeName.equals(XSDConstants.FORM_ATTRIBUTE)
-        || attributeName.equals(XSDConstants.ABSTRACT_ATTRIBUTE)
-        || attributeName.equals(XSDConstants.NILLABLE_ATTRIBUTE)
-        || attributeName.equals(XSDConstants.BLOCK_ATTRIBUTE)
-        || attributeName.equals(XSDConstants.FINAL_ATTRIBUTE)
-        || attributeName.equals(XSDConstants.FIXED_ATTRIBUTE) 
-        || attributeName.equals(XSDConstants.DEFAULT_ATTRIBUTE)
-        || attributeName.equals(XSDConstants.NAME_ATTRIBUTE))
-      {
-        return result;
-      }
-    }
-    return "";
-  }
-
-  /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-	 */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-
-  /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-	 */
-  public void resetPropertyValue(Object id)
-  {
-  }
-
-  /*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object,
-	 *      java.lang.Object)
-	 */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      String newValue = (String)value;
-      String attributeName = (String)id;
-      
-      if (attributeName.equals(XSDConstants.MAXOCCURS_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_MAXOCCURS_CHANGE"), element);
-      }
-      else if (attributeName.equals(XSDConstants.MINOCCURS_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_MINOCCURS_CHANGE"), element);      
-      }
-      else if (attributeName.equals(XSDConstants.SUBSTITUTIONGROUP_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_SUBSTITUTIONGROUP_CHANGE"), element);
-      }
-      else if (attributeName.equals(XSDConstants.FORM_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_FORM_CHANGE"), element);
-      }
-      else if (attributeName.equals(XSDConstants.ABSTRACT_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_ABSTRACT_CHANGE"), element);
-      }
-      else if (attributeName.equals(XSDConstants.NILLABLE_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_NILLABLE_CHANGE"), element);
-      }
-      else if (attributeName.equals(XSDConstants.BLOCK_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_BLOCK_CHANGE"), element);
-      }
-      else if (attributeName.equals(XSDConstants.FINAL_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_FINAL_CHANGE"), element);
-      }
-      else if (attributeName.equals(XSDConstants.FIXED_ATTRIBUTE) || attributeName.equals(XSDConstants.DEFAULT_ATTRIBUTE))
-      {  
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_VALUE_CHANGE"), element);
-      }
-      else if (attributeName.equals(XSDConstants.NAME_ATTRIBUTE))
-      {
-        if (validateName(newValue))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_NAME_CHANGE"), element);
-          // now rename any references to this element
-          if (xsdSchema != null)
-          {
-            XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-            
-            // TODO cs : revisit
-            //if (comp != null && comp instanceof XSDElementDeclaration && comp.getContainer().equals(xsdSchema))
-            //{
-              //GlobalElementRenamer renamer = new GlobalElementRenamer((XSDNamedComponent)comp, newValue);
-              //renamer.visitSchema(xsdSchema);
-            //}
-          }
-        }
-      }
-      else if (attributeName.equals(XSDConstants.TYPE_ATTRIBUTE))
-      {
-        // put logic in descriptor/cell editor
-//          beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_TYPE_CHANGE"), element);
-      }
-    
-      if (newValue.length() > 0)
-      {
-        element.setAttribute((String) id, (String) value);
-      }
-      else
-      {
-        if (!attributeName.equals(XSDConstants.NAME_ATTRIBUTE))
-        {
-          element.removeAttribute((String) id);
-        }
-      }
-      endRecording(element);
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-
-  }
-
-  boolean checkForAnonymousType(Element element)
-  {
-    /* Using Ed's model to check
-     boolean isAnonymous = false;
-
-     XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(element);
-     if (component instanceof XSDElementDeclaration)
-     {
-     XSDElementDeclaration xsdElem = (XSDElementDeclaration)component;
-     isAnonymous = xsdElem.isSetAnonymousTypeDefinition();
-     }
-     return isAnonymous;
-     */
-
-    boolean isAnonymous = false;
-
-    Node aNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-    if (aNode != null)
-     {
-      return true;
-    }
-    aNode = getDomHelper().getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-    if (aNode != null)
-     {
-      isAnonymous = true;
-    }
-    return isAnonymous;
-  }
-  
-  
-//  void updateElementToAnonymous(Element element, String xsdType)
-//  {
-//    String prefix = element.getPrefix();
-//    prefix = (prefix == null) ? "" : (prefix + ":");
-//
-//    updateElementToNotAnonymous(element);
-//    boolean hasChildrenElements = hasElementChildren(element);
-//
-//    Element childNode = null;
-//    if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-//     {
-//      childNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-//    }
-//    else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG))
-//     {
-//      childNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-//    }
-//
-//    element.appendChild(childNode);
-//    formatChild(childNode, hasChildrenElements);    
-//
-//
-//    /* Using Ed's model to do the above
-//     XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(element);
-//     if (component instanceof XSDElementDeclaration)
-//     {
-//     XSDElementDeclaration xsdElem = (XSDElementDeclaration)component;
-//     XSDFactoryImpl factory = new XSDFactoryImpl();
-//     XSDComplexTypeDefinition complex = factory.createXSDComplexTypeDefinition();
-//     XSDSimpleTypeDefinition simple = factory.createXSDSimpleTypeDefinition();
-//
-//     Node child = element.getFirstChild();
-//     if (XSDDOMHelper.inputEquals(child, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false) ||
-//     XSDDOMHelper.inputEquals(child, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-//     {
-//     element.removeChild(child);
-//     }
-//     
-//     FormatProcessor formatProcessor = new FormatProcessor();
-//     if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-//     {
-//     xsdElem.setAnonymousTypeDefinition(complex);
-//     Element elem = complex.getElement();
-//     formatProcessor.formatWithSiblingIndent((XMLNode)elem);
-//     }
-//     else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG))
-//     {
-//     xsdElem.setAnonymousTypeDefinition(simple);
-//     Element elem = simple.getElement();  
-//     formatProcessor.formatWithSiblingIndent((XMLNode)elem);
-//     }
-//     }
-//     component.updateElement();
-//     */
-//  }
-//
-//  boolean isSTAnonymous(Element element)
-//  {
-//    Node aNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-//    if (aNode != null)
-//     {
-//      if (XSDDOMHelper.inputEquals(aNode, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-//       {
-//        return true;
-//      }
-//    }
-//    return false;
-//  }  
-//
-//  boolean isCTAnonymous(Element element)
-//  {
-//    Node aNode = getDomHelper().getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-//    if (aNode != null)
-//     {
-//      if (XSDDOMHelper.inputEquals(aNode, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-//       {
-//        return true;
-//      }
-//    }
-//    return false;
-//  }  
-//
-//  XSDTypeDefinition getAnonymousTypeDefinition(Element element)
-//  {
-//    Node typeDefinitionNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-//    if (typeDefinitionNode == null)
-//     {
-//      typeDefinitionNode = getDomHelper().getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-//    }
-//    if (typeDefinitionNode != null)
-//     {
-//      XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(typeDefinitionNode);
-//      if (component instanceof XSDTypeDefinition)
-//       {
-//        return (XSDTypeDefinition)component;
-//      }
-//    }
-//    return null;    
-//
-//    /*    XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(element);
-//     if (component instanceof XSDElementDeclaration)
-//     {
-//     XSDElementDeclaration xsdElem = (XSDElementDeclaration)component;
-//
-//     return xsdElem.getAnonymousTypeDefinition();
-//     }
-//     return null;
-//     */
-//  }
-//
-//  void updateElementToNotAnonymous(Element element)
-//  {
-//    NodeList children = element.getChildNodes();
-//    if (children != null)
-//     {
-//      for (int i = 0; i < children.getLength(); i++)
-//       {
-//        Node node = (Node)children.item(i);
-//        if (node instanceof Element)
-//         {
-//          if (node.getLocalName().equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG) ||
-//              node.getLocalName().equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-//           {
-//            XSDDOMHelper.removeNodeAndWhitespace(node);
-//            i=0;
-//          }
-//        }
-//      }
-//    }
-//    /*    XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(element);
-//     if (component instanceof XSDElementDeclaration)
-//     {
-//     XSDElementDeclaration xsdElem = (XSDElementDeclaration)component;
-//     if (xsdElem.isSetAnonymousTypeDefinition())
-//     {
-//     xsdElem.unsetAnonymousTypeDefinition();
-//     xsdElem.setAnonymousTypeDefinition(null);
-//     }
-//     }
-//     component.updateElement();
-//     */
-//  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/EnumerationPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/EnumerationPropertySource.java
deleted file mode 100644
index 31b7d35..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/EnumerationPropertySource.java
+++ /dev/null
@@ -1,130 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class EnumerationPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  /**
-   * 
-   */
-  public EnumerationPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public EnumerationPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public EnumerationPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    PropertyDescriptor nameDescriptor =
-    new TextPropertyDescriptor(
-        XSDConstants.VALUE_ATTRIBUTE,
-        XSDConstants.VALUE_ATTRIBUTE);
-    list.add(nameDescriptor);
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-     {
-      result = element.getAttribute((String) id);
-    }
-    if (result == null)
-     {
-      result = "";
-    }
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value != null)
-    {
-      if (value instanceof String)
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ENUM_VALUE_CHANGE"), element);
-        element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, (String)value);
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/FixedOrDefaultTextPropertyDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/FixedOrDefaultTextPropertyDescriptor.java
deleted file mode 100644
index 1cdced0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/FixedOrDefaultTextPropertyDescriptor.java
+++ /dev/null
@@ -1,304 +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.properties;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-
-
-public class FixedOrDefaultTextPropertyDescriptor extends PropertyDescriptor
-{
-  protected static String choice = "";
-  Element element;
-  /**
-   * @param id
-   * @param displayName
-   */
-  public FixedOrDefaultTextPropertyDescriptor(Object id, String displayName, Element element)
-  {
-    super(id, displayName);
-    this.element = element;
-  }
-  
-  public CellEditor createPropertyEditor(Composite parent)
-  {
-    CellEditor editor = new FixedOrDefaultTextCellEditor(parent);
-    if (getValidator() != null)
-      editor.setValidator(getValidator());
-    return editor;
-  }
-
-//    public void setChoice(String newChoice)
-//    {
-//      choice = newChoice;
-//    }
-
-  public Object getId()
-  {
-    Attr fixedAttr = element.getAttributeNode(XSDConstants.FIXED_ATTRIBUTE);
-    Attr defaultAttr = element.getAttributeNode(XSDConstants.DEFAULT_ATTRIBUTE);
-    if (fixedAttr != null)
-    {
-      choice = "fixed";
-    }
-    else if (defaultAttr != null) // what if both attributes were specified?  Use default...
-    {
-      choice = "default";
-    }
-    else
-    {
-      choice = "";
-    }
-
-    if (choice.equals("fixed"))
-     {
-      return "fixed";
-    }
-    else if (choice.equals("default"))
-     {
-      return "default";
-    }
-    else
-     {
-      return super.getId();
-    }
-  }
-  
-  public String getDisplayName()
-  {
-    Attr fixedAttr = element.getAttributeNode(XSDConstants.FIXED_ATTRIBUTE);
-    Attr defaultAttr = element.getAttributeNode(XSDConstants.DEFAULT_ATTRIBUTE);
-    if (fixedAttr != null)
-    {
-      choice = "fixed";
-    }
-    else if (defaultAttr != null) // what if both attributes were specified?  Use default...
-     {
-      choice = "default";
-    }
-    else
-    {
-      choice = "fixed/default";
-    }
-
-    if (choice.equals("fixed"))
-     {
-      return "fixed";
-    }
-    else if (choice.equals("default"))
-     {
-      return "default";
-    }
-    else
-     {
-      return super.getDisplayName();
-    }
-  }
-
-  class FixedOrDefaultTextCellEditor extends DialogCellEditor
-  {
-    public FixedOrDefaultTextCellEditor(Composite parent)
-    {
-      super(parent);
-    }
-
-    protected Object openDialogBox(Control cellEditorWindow)
-    {
-	    Shell shell = Display.getCurrent().getActiveShell();
-	    
-	    FixedOrDefaultDialog dialog = new FixedOrDefaultDialog(shell);
-
-	    dialog.setBlockOnOpen(true);
-	    dialog.create();
-	    
-	    int result = dialog.open();
-	    
-	    if (result == Window.OK)
-	    {
-	      dialog.getValue();
-          fireApplyEditorValue();
-	    }
-	    deactivate();
-        return null;
-	  }
-  }
-  
-  class FixedOrDefaultDialog extends Dialog implements SelectionListener
-  {
-    private int FIXED = 0;
-    private int DEFAULT = 1;
-    private int type;
-    protected Button fixedButton, defaultButton;
-    protected Text valueField;
-    protected String valueString = "";
-    
-    public FixedOrDefaultDialog(Shell shell)
-    {
-      super(shell);
-    }
-
-    protected void configureShell(Shell shell)
-    {
-      super.configureShell(shell);
-    }
-
-    protected void buttonPressed(int buttonId)
-    {
-      if (buttonId == Dialog.OK)
-      {
-        valueString = valueField.getText();
-        applyEditorValueAndDeactivate();
-      }
-      super.buttonPressed(buttonId);
-    }
-
-    public String getValue() { return valueString; }
-    public String getType() { return type == FIXED? "fixed" : "default"; }
-
-    //
-    // Create the controls
-    //
-    public Control createDialogArea(Composite parent)
-    {
-      Composite client = (Composite)super.createDialogArea(parent);
-      getShell().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_FIXEDORDEFAULT_VALUE"));
-
-      GridLayout gl = new GridLayout(1, true);
-//      gl.marginHeight = 0;
-//      gl.marginWidth = 0;
-//      gl.horizontalSpacing = 0;
-//      gl.verticalSpacing = 0;
-      client.setLayout(gl);
-
-      GridData gd = new GridData();
-      gd.grabExcessHorizontalSpace = true;
-      gd.grabExcessVerticalSpace = true;
-      gd.horizontalAlignment = GridData.FILL;
-      gd.verticalAlignment = GridData.FILL;
-      gd.horizontalIndent = 0;
-      client.setLayoutData(gd);
-      
-//      isTextReadOnly = false;
-
-      fixedButton = ViewUtility.createRadioButton(client, XSDEditorPlugin.getXSDString("_UI_FIXED"));
-//    WorkbenchHelp.setHelp(fixedButton, XSDEditorContextIds.XSDE_ELEMENT_FIXED);
-      
-      defaultButton = ViewUtility.createRadioButton(client, XSDEditorPlugin.getXSDString("_UI_DEFAULT"));
-//    WorkbenchHelp.setHelp(defaultButton, XSDEditorContextIds.XSDE_ELEMENT_DEFAULT);
-
-      valueField = ViewUtility.createTextField(client, 30);
-      
-//    WorkbenchHelp.setHelp(valueField, XSDEditorContextIds.XSDE_ELEMENT_VALUE);
-//    valueField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_VALUE"));
-
-      WorkbenchHelp.setHelp(fixedButton, XSDEditorContextIds.XSDE_ATTRIBUTE_FIXED);
-      WorkbenchHelp.setHelp(defaultButton, XSDEditorContextIds.XSDE_ATTRIBUTE_DEFAULT);
-      // WorkbenchHelp.setHelp(valueField, XSDEditorContextIds.XSDE_ATTRIBUTE_VALUE);
-      
-      Attr fixedAttr = element.getAttributeNode(XSDConstants.FIXED_ATTRIBUTE);
-      Attr defaultAttr = element.getAttributeNode(XSDConstants.DEFAULT_ATTRIBUTE);
-
-      if (fixedAttr != null)
-      {
-        fixedButton.setSelection(true);
-        defaultButton.setSelection(false);
-        choice = "fixed";
-        type = FIXED;
-        valueField.setText(element.getAttribute("fixed"));
-        valueField.setFocus();
-        valueField.selectAll();
-      }
-      if (defaultAttr != null) // what if both attributes were specified?  Use default...
-       {
-        fixedButton.setSelection(false);
-        defaultButton.setSelection(true);
-        choice = "default";
-        type = DEFAULT;
-        valueField.setText(element.getAttribute("default"));
-        valueField.setFocus();
-        valueField.selectAll();
-      }
-
-      fixedButton.addSelectionListener(this);
-      defaultButton.addSelectionListener(this);
-      return client;
-    }
-
-    void applyEditorValueAndDeactivate()
-    {
-      String value = valueField.getText();
-      if (value != null && value.length() > 0)
-      {
-        choice = type == FIXED? "fixed" : "default";
-      }
-      if (value != null && value.length() > 0)
-      {
-        if (choice.equals("fixed"))
-        {
-          element.removeAttribute(XSDConstants.DEFAULT_ATTRIBUTE);
-          element.setAttribute(XSDConstants.FIXED_ATTRIBUTE, value);
-        }
-        else if (choice.equals("default"))
-        {
-          element.removeAttribute(XSDConstants.FIXED_ATTRIBUTE);
-          element.setAttribute(XSDConstants.DEFAULT_ATTRIBUTE, value);
-        }
-      }
-      if (value.equals(""))
-      {
-        choice = "";
-        element.removeAttribute(XSDConstants.DEFAULT_ATTRIBUTE);
-        element.removeAttribute(XSDConstants.FIXED_ATTRIBUTE);
-      }
-    }
-
-    public void widgetSelected(SelectionEvent e)
-    {
-      if (e.widget == fixedButton && fixedButton.getSelection())
-      {
-        type = FIXED;
-        choice = "fixed";
-      }
-      else if (e.widget == defaultButton && defaultButton.getSelection())
-      {
-        type = DEFAULT;
-        choice = "default";
-      }
-    }
-
-  	public void widgetDefaultSelected(SelectionEvent e)
-    {
-    }
-
-  }
-  
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/GroupRefPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/GroupRefPropertySource.java
deleted file mode 100644
index ffe87ae..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/GroupRefPropertySource.java
+++ /dev/null
@@ -1,225 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-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.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class GroupRefPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  private String[] refComboValues = { "" };
-  /**
-   * 
-   */
-  public GroupRefPropertySource()
-  {
-    super();
-  }
-  
-//  public void setReferenceComboContextHelp(String contextId)
-//  {
-//    WorkbenchHelp.setHelp(refCombo, contextId);
-//  }
-  
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public GroupRefPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public GroupRefPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  
-  public void setInput(Element element)
-  {
-    this.element = element;
-    TypesHelper helper = new TypesHelper(xsdSchema);
-    java.util.List items = helper.getGlobalElements();
-    if (XSDDOMHelper.inputEquals(element, XSDConstants.GROUP_ELEMENT_TAG, true))
-    {
-      items = helper.getModelGroups();
-      // Need tooltip for Group Ref
-//        minimumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MINIMUM"));
-//        WorkbenchHelp.setHelp(minimumField, XSDEditorContextIds.XSDE_GROUP_REF_MINIMUM);
-//        maximumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MAXIMUM"));
-//        WorkbenchHelp.setHelp(maximumField, XSDEditorContextIds.XSDE_GROUP_REF_MAXIMUM);
-    }
-    else if (XSDDOMHelper.inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, true))
-    {
-      items = helper.getGlobalElements();
-//        minimumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MINIMUM"));
-//        WorkbenchHelp.setHelp(minimumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MINIMUM);
-//        maximumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MAXIMUM"));
-//        WorkbenchHelp.setHelp(maximumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MAXIMUM);
-    }
-    
-    int size = items.size() + 1;
-    refComboValues = new String[size];
-    refComboValues[0] = "";
-    if (items != null)
-     {
-      for (int i = 0; i < items.size(); i++)
-       {
-        refComboValues[i + 1] = (String) items.get(i);
-      }
-    }
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    XSDComboBoxPropertyDescriptor refDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        XSDConstants.REF_ATTRIBUTE,
-        XSDConstants.REF_ATTRIBUTE,
-        refComboValues);
-    list.add(refDescriptor);
-    
-    PropertyDescriptor minOccursDescriptor =
-    new TextPropertyDescriptor(
-        XSDConstants.MINOCCURS_ATTRIBUTE,
-        XSDConstants.MINOCCURS_ATTRIBUTE);
-    list.add(minOccursDescriptor);
-    PropertyDescriptor maxOccursDescriptor =
-    new TextPropertyDescriptor(
-        XSDConstants.MAXOCCURS_ATTRIBUTE,
-        XSDConstants.MAXOCCURS_ATTRIBUTE);
-    list.add(maxOccursDescriptor);
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-      if (result == null)
-      {
-        result = "";
-      }
-      return result;
-      
-//      if (((String) id).equals(XSDConstants.REF_ATTRIBUTE))
-//      {
-//        return result;
-//      }
-    }
-    return "";
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      String newValue = (String)value;
-      if (((String) id).equals(XSDConstants.MAXOCCURS_ATTRIBUTE))
-      {
-        String max = (String)value;
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_MAXOCCURS_CHANGE"), element);
-        if (max.length() > 0)
-        {
-          element.setAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE, max);
-        }
-        else
-        {
-          element.removeAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
-        }
-        endRecording(element);
-      }
-      else if (((String) id).equals(XSDConstants.MINOCCURS_ATTRIBUTE))
-      {
-        String min = (String)value;
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_MINOCCURS_CHANGE"), element);
-        if (min.length() > 0)
-        {
-          element.setAttribute(XSDConstants.MINOCCURS_ATTRIBUTE, min);
-        }
-        else
-        {
-          element.removeAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
-        }
-        endRecording(element);
-      }
-      else if (((String) id).equals(XSDConstants.REF_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_REF_CHANGE"), element);
-        element.setAttribute((String) id, newValue);
-        endRecording(element);
-      }
-    }
-//    Runnable delayedUpdate = new Runnable()
-//    {
-//      public void run()
-//      {
-        if (viewer != null)
-          viewer.refresh();
-//      }
-//    };
-//    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ImportPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ImportPropertySource.java
deleted file mode 100644
index 6172f69..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ImportPropertySource.java
+++ /dev/null
@@ -1,309 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorContextIds;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.XSDExternalFileCleanup;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class ImportPropertySource
-  extends SchemaDirectiveHelperPropertySource
-  implements IPropertySource
-{
-  boolean isSetNamespace = false;
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public ImportPropertySource(Viewer viewer, XSDSchema xsdSchema, IFile currentIFile)
-  {
-    super(viewer, xsdSchema, false);
-    this.currentIFile = currentIFile;
-//     WorkbenchHelp.setHelp(controlsContainer, XSDEditorContextIds.XSDE_IMPORT_DESIGN_VIEW);
-//WorkbenchHelp.setHelp(selectButton, XSDEditorContextIds.XSDE_INCLUDE_HELPER_SELECT);
-//WorkbenchHelp.setHelp(prefixField, XSDEditorContextIds.XSDE_IMPORT_PREFIX);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public ImportPropertySource(XSDSchema xsdSchema, IFile currentIFile)
-  {
-    super(xsdSchema, false);
-    this.currentIFile = currentIFile;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    
-    SchemaLocationPropertyDescriptor schemaLocationDescriptor =
-    new SchemaLocationPropertyDescriptor(
-      XSDConstants.SCHEMALOCATION_ATTRIBUTE,
-      XSDConstants.SCHEMALOCATION_ATTRIBUTE
-      );
-    schemaLocationDescriptor.setHelpContextIds(XSDEditorContextIds.XSDE_INCLUDE_HELPER_SELECT);
-    list.add(schemaLocationDescriptor);
-    
-    if (isSetNamespace)
-    {
-      PropertyDescriptor prefixDescriptor = 
-      new TextPropertyDescriptor(
-        "Prefix",
-        "Prefix");
-      prefixDescriptor.setHelpContextIds(XSDEditorContextIds.XSDE_IMPORT_PREFIX);
-      list.add(prefixDescriptor);
-    }
-    else
-    {
-      PropertyDescriptor prefixDescriptor = 
-      new PropertyDescriptor(
-        "Prefix",
-        "Prefix");
-      prefixDescriptor.setHelpContextIds(XSDEditorContextIds.XSDE_IMPORT_PREFIX);
-      list.add(prefixDescriptor);
-    }
-
-    PropertyDescriptor namespaceDescriptor = 
-    new PropertyDescriptor(
-        XSDConstants.NAMESPACE_ATTRIBUTE,
-        XSDConstants.NAMESPACE_ATTRIBUTE);
-    list.add(namespaceDescriptor);  
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-      String attributeName = (String)id;
-      if (result == null)
-       {
-        result = "";
-      }
-
-      if (attributeName.equals("Prefix"))
-       {
-        TypesHelper helper = new TypesHelper(xsdSchema);
-        String aPrefix = helper.getPrefix(element.getAttribute(XSDConstants.NAMESPACE_ATTRIBUTE), false);
-        if (aPrefix != null && aPrefix.length() > 0)
-        {
-          return aPrefix;
-        }
-        return "";        
-      }
-      else
-       {
-        return result;
-      }
-    }
-    return "";
-    
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-     {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      String newValue = (String)value;
-      TypesHelper typesHelper = new TypesHelper(xsdSchema);
-      String namespace = element.getAttribute(XSDConstants.NAMESPACE_ATTRIBUTE);
-      String oldPrefixValue = typesHelper.getPrefix(namespace, false);
-      
-      String schemaLocation = element.getAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE);
-      if (((String) id).equals("Prefix"))
-      {
-        if (validatePrefix(newValue) &&  schemaLocation.length() > 0)
-        {
-          Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-
-          if (map.containsKey(newValue))
-          {
-//          setErrorMessage(XSDEditorPlugin.getXSDString("_ERROR_LABEL_PREFIX_EXISTS"));
-          }
-          else
-          {
-            beginRecording(XSDEditorPlugin.getXSDString("_UI_PREFIX_CHANGE"), element);
-            map.remove(oldPrefixValue);
-            map.put(newValue, namespace);
-            XSDSchemaHelper.updateElement(xsdSchema);
-
-            endRecording(element);  
-          }
-        }
-      }
-      else if (((String) id).equals(XSDConstants.SCHEMALOCATION_ATTRIBUTE))
-      { 
-        updateExternalModel((String)value, selectedIFile, selectedNamespace, selectedXSDSchema);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-  
-  public void setInput(Element element)
-  {
-    this.element = element;
-    String namespace = element.getAttribute(XSDConstants.NAMESPACE_ATTRIBUTE);
-    if (namespace != null && namespace.trim().length() > 0)
-    {
-      isSetNamespace = true;
-    }    
-    
-  }
-
-  protected void updateExternalModel(String newLocation, IFile newFile, String namespace, XSDSchema externalSchema)
-  {
-    if (xsdSchema == null) // in case we have a bad schema
-     {
-      return;
-    }
-    Element importElement = element;
-    if (namespace == null)
-    {
-      namespace = "";
-    }        
-    
-    XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-    if (comp instanceof XSDImport)
-    {
-      beginRecording(XSDEditorPlugin.getXSDString("_UI_IMPORT_CHANGE"), importElement);
-      java.util.Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-      
-      // Referential integrity on old import
-      // How can we be sure that if the newlocation is the same as the oldlocation
-      // the file hasn't changed
-      
-      XSDSchema referencedSchema = ((XSDSchemaDirective)comp).getResolvedSchema();
-      if (referencedSchema != null)
-      {
-        XSDExternalFileCleanup cleanHelper = new XSDExternalFileCleanup(referencedSchema);
-        cleanHelper.visitSchema(xsdSchema);
-      }
-
-      Element schemaElement = xsdSchema.getElement();
-
-      // update the xmlns in the schema element first, and then update the import element next
-      // so that the last change will be in the import element.  This keeps the selection
-      // on the import element
-      TypesHelper helper = new TypesHelper(externalSchema);
-      String prefix = helper.getPrefix(namespace, false);
-      
-      boolean prefixAlreadyExists = false;
-      if (map.containsKey(prefix))
-      {
-        prefixAlreadyExists = true;
-      }
-      
-      if (prefix == null || (prefix !=null && prefix.length() == 0) || prefixAlreadyExists)
-      {
-        prefix = "pref";
-
-        int prefixExtension = 1;
-        while (map.containsKey(prefix) && prefixExtension < 100)
-         {
-          prefix = prefix + String.valueOf(prefixExtension);
-          prefixExtension++;
-        }
-      }
-
-      if (namespace.length() > 0)
-       {
-        // if ns already in map, use its corresponding prefix
-        if (map.containsValue(namespace))
-         {
-          TypesHelper typesHelper = new TypesHelper(xsdSchema);
-          prefix = typesHelper.getPrefix(namespace, false);
-        }
-        else // otherwise add to the map
-        {
-          schemaElement.setAttribute("xmlns:"+prefix, namespace);
-        }
-      }
-
-      // Now update the import element's attributes
-      importElement.setAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, newLocation);
-      
-      if (!namespace.equals(""))
-       {
-        importElement.setAttribute(XSDConstants.NAMESPACE_ATTRIBUTE, namespace);
-      }
-      else
-       {
-        importElement.removeAttribute(XSDConstants.NAMESPACE_ATTRIBUTE);
-      }
-      
-      endRecording(importElement);
-    }
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/IncludePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/IncludePropertySource.java
deleted file mode 100644
index d1e9e12..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/IncludePropertySource.java
+++ /dev/null
@@ -1,236 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.XSDExternalFileCleanup;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class IncludePropertySource
-  extends SchemaDirectiveHelperPropertySource
-  implements IPropertySource
-{
-  /**
-   * 
-   */
-  public IncludePropertySource(IFile currentIFile)
-  {
-    super(true);
-    this.currentIFile = currentIFile;
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public IncludePropertySource(Viewer viewer, XSDSchema xsdSchema, IFile currentIFile)
-  {
-    super(viewer, xsdSchema, true);
-    this.currentIFile = currentIFile;
-  }
-  /**
-   * @param xsdSchema
-   */
-  public IncludePropertySource(XSDSchema xsdSchema, IFile currentIFile)
-  {
-    super(xsdSchema, true);
-    this.currentIFile = currentIFile;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    
-    SchemaLocationPropertyDescriptor schemaLocationDescriptor =
-    new SchemaLocationPropertyDescriptor(
-        XSDConstants.SCHEMALOCATION_ATTRIBUTE,
-        XSDConstants.SCHEMALOCATION_ATTRIBUTE);
-  
-    list.add(schemaLocationDescriptor);
-    
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-     {
-      result = element.getAttribute((String) id);
-      if (result == null)
-       {
-        result = "";
-      }
-      return result;
-    }
-    return "";
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      if (((String) id).equals(XSDConstants.SCHEMALOCATION_ATTRIBUTE))
-      { 
-        //element.setAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, (String)value);
-        updateExternalModel((String)value, selectedIFile, selectedNamespace, selectedXSDSchema);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-  }
-
-  protected void updateExternalModel(String newLocation, IFile newFile, String namespace, XSDSchema externalSchema)
-  {
-    Element includeElement = element;
-
-    String existingSchemaLocation = includeElement.getAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE);
-
-    beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_INCLUDE_CHANGE"), includeElement);
-    includeElement.setAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, newLocation);
-    
-    // If there is no existing schemaLocation, then just set it
-    if (existingSchemaLocation == null)
-    {
-      return;
-    }
-
-    XSDConcreteComponent includeComponent = xsdSchema.getCorrespondingComponent(includeElement);
-    if (includeComponent instanceof XSDInclude)
-     {
-      XSDInclude include = (XSDInclude) includeComponent;
-
-      XSDSchema referencedSchema = include.getResolvedSchema();
-      if (referencedSchema != null)
-      {        
-        XSDExternalFileCleanup cleanHelper = new XSDExternalFileCleanup(referencedSchema);
-        cleanHelper.visitSchema(xsdSchema);
-        
-        xsdSchema.update();
-        include.updateElement();
-      }
-      
-    }
-    endRecording(includeElement);    
-  }
-
-  
-// Redefine's version
-//  protected void updateExternalModel(IFile newFile, String namespace, XSDSchema externalSchema)
-//  {
-//    Element redefineElement = (Element) getNode();
-//
-//    redefineElement.setAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, locationField.getText());
-//
-//    String existingSchemaLocation = redefineElement.getAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE);
-//
-//    // If there is no existing schemaLocation, then just set it and return
-//    if (existingSchemaLocation == null)
-//     {
-//      return;
-//    }
-//
-//    XSDConcreteComponent redefineComponent = getXSDSchema().getCorrespondingComponent(redefineElement);
-//    if (redefineComponent instanceof XSDRedefine)
-//     {
-//      XSDRedefine redefine = (XSDRedefine) redefineComponent;
-//      XSDExternalFileCleanup cleanup = new XSDExternalFileCleanup(redefine.getIncorporatedSchema());
-//      
-//      cleanup.visitSchema(getXSDSchema());
-//      if (getEditor() != null)
-//       {
-//// DisplayErrorInTaskList task = new DisplayErrorInTaskList(getEditor().getEditorIDocument(), getEditor().getFileResource(), cleanup.getMessages());
-//// task.run();
-//        
-//        // Workaround to reset included elements in XSD model
-//        getEditor().reparseSchema();
-//        getEditor().getGraphViewer().setSchema(getXSDSchema());
-//      }
-//    }
-//
-//    /* since we are reparsing, we don't need this
-//
-//     Iterator contents = getXSDSchema().getContents().iterator();
-//     while (contents.hasNext())
-//     {
-//     XSDSchemaContent content = (XSDSchemaContent)contents.next();
-//     if (content instanceof XSDSchemaDirective)
-//     {
-//     XSDSchemaDirective directive = (XSDSchemaDirective)content;
-//
-//     if (directive.getSchemaLocation().equals(oldSchemaLocation) && directive instanceof XSDRedefine)
-//     {
-//     directive.unsetSchemaLocation();
-//     directive.setSchemaLocation(locationField.getText());
-//     directive.unsetResolvedSchema();
-//     redefineElement.setAttribute(XSDConstants.SCHEMALOCATION_ATTRIBUTE, locationField.getText());
-//     getXSDSchema().updateDocument();
-//     XSDSchemaHelper.updateElement(directive);
-////          directive.updateElement();
-//     break;
-//     }
-//     }
-//     }
-//     */
-//  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/KeyrefPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/KeyrefPropertySource.java
deleted file mode 100644
index f4fcab1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/KeyrefPropertySource.java
+++ /dev/null
@@ -1,207 +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.properties;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDIdentityConstraintDefinition;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class KeyrefPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  private String[] refComboValues = { "" };
-  /**
-   * 
-   */
-  public KeyrefPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public KeyrefPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public KeyrefPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  
-  public void setInput(Element element)
-  {
-    this.element = element;
-    java.util.List items = new ArrayList();
-
-    
-    if (xsdSchema != null)
-    {
-      Iterator iter = xsdSchema.getIdentityConstraintDefinitions().iterator();
-      String name = element.getAttribute(XSDConstants.NAME_ATTRIBUTE);
-      while (iter.hasNext())
-      {
-        XSDIdentityConstraintDefinition constraint = (XSDIdentityConstraintDefinition)iter.next();
-        if (name != null && !name.equals(""))
-         {
-          if (constraint.getName() != null)
-           {
-            if (!name.equals(constraint.getQName(xsdSchema)))
-            {
-              items.add(constraint.getQName(xsdSchema));
-            }
-          }
-        }
-        else
-         {
-          if (constraint.getName() != null)
-          {
-            items.add(constraint.getQName(xsdSchema));
-          }
-        }
-      }
-    }   
-    
-    int size = items.size() + 1;
-    refComboValues = new String[size];
-    refComboValues[0] = "";
-    if (items != null)
-     {
-      for (int i = 0; i < items.size(); i++)
-       {
-        refComboValues[i + 1] = (String) items.get(i);
-      }
-    }
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-// This property is moved to the General Tab
-//    PropertyDescriptor nameDescriptor =
-//    new TextPropertyDescriptor(
-//        XSDConstants.NAME_ATTRIBUTE,
-//        XSDConstants.NAME_ATTRIBUTE);
-//    list.add(nameDescriptor);
-    
-    XSDComboBoxPropertyDescriptor refDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        XSDConstants.REFER_ATTRIBUTE,
-        XSDConstants.REFER_ATTRIBUTE,
-        refComboValues);
-    list.add(refDescriptor);
-    
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-
-    if (id instanceof String)
-     {
-      result = element.getAttribute((String) id);
-      if (result == null)
-       {
-        result = "";
-      }
-      return result;
-//      if (((String) id).equals(XSDConstants.REFER_ATTRIBUTE))
-//      {
-//        return result;
-//      }
-    }
-    return "";
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      String newValue = (String)value;
-      if (((String) id).equals(XSDConstants.NAME_ATTRIBUTE))
-      {  
-        if (validateName(newValue))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_KEYREF_NAME_CHANGE"), element);
-          element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-          endRecording(element);
-        }         
-      }
-      else if (((String) id).equals(XSDConstants.REFER_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_KEYREF_REFER_CHANGE"), element);
-        element.setAttribute((String) id, newValue);
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ModelGroupPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ModelGroupPropertySource.java
deleted file mode 100644
index 728e613..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ModelGroupPropertySource.java
+++ /dev/null
@@ -1,260 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class ModelGroupPropertySource  // all or sequence or choice
-  extends BasePropertySource
-  implements IPropertySource
-{
-  private String[] modelGroupComboValues = { "sequence", "choice", "all" };
-  /**
-   * 
-   */
-  public ModelGroupPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public ModelGroupPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public ModelGroupPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-
-    XSDComboBoxPropertyDescriptor modelGroupDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        "model group",
-        "model group",
-        modelGroupComboValues);
-    list.add(modelGroupDescriptor);
-    
-    PropertyDescriptor minOccursDescriptor =
-    new TextPropertyDescriptor(
-        XSDConstants.MINOCCURS_ATTRIBUTE,
-        XSDConstants.MINOCCURS_ATTRIBUTE);
-    list.add(minOccursDescriptor);
-    PropertyDescriptor maxOccursDescriptor =
-    new TextPropertyDescriptor(
-        XSDConstants.MAXOCCURS_ATTRIBUTE,
-        XSDConstants.MAXOCCURS_ATTRIBUTE);
-    list.add(maxOccursDescriptor);
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-      String attributeName = (String)id;
-      if (result == null)
-       {
-        result = "";
-      }
-      if (attributeName.equals("model group"))
-      {
-        result = element.getLocalName();
-        return result;
-      }
-    }
-    return "";
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    String property = (String)id;
-    if (value == null)
-    {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      String newValue = (String)value;
-      if (property.equals("model group"))
-       {
-        Element parent = (Element)element.getParentNode();
-        String prefix = element.getPrefix();
-        prefix = prefix == null ? "" : prefix + ":";
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_SCOPE_CHANGE"), parent);
-        changeContentModel(parent, newValue);
-        endRecording(parent);
-        XSDDOMHelper domHelper = new XSDDOMHelper();
-        setInput(domHelper.getContentModelFromParent(parent));
-      }
-      else if (property.equals(XSDConstants.MAXOCCURS_ATTRIBUTE))
-      {
-        String max = (String)value;
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_MAXOCCURS_CHANGE"), element);
-        if (max.length() > 0)
-        {
-          element.setAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE, max);
-        }
-        else
-         {
-          element.removeAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
-        }
-        endRecording(element);
-      }
-      else if (((String) id).equals(XSDConstants.MINOCCURS_ATTRIBUTE))
-       {
-        String min = (String)value;
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_MINOCCURS_CHANGE"), element);
-        if (min.length() > 0)
-        {
-          element.setAttribute(XSDConstants.MINOCCURS_ATTRIBUTE, min);
-        }
-        else
-        {
-          element.removeAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
-        }
-        endRecording(element);
-      }
-    }
-
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-
-  public void setInput(Element element)
-  {
-    super.setInput(element);
-    
-    if (element != null)
-    {
-      boolean parentIsSequence = false;
-      boolean parentIsChoice = false;
-     
-      Object parent = element.getParentNode();
-      
-      if (XSDDOMHelper.inputEquals(parent, XSDConstants.SEQUENCE_ELEMENT_TAG, false))
-       {
-        parentIsSequence = true;
-      }
-      else if (XSDDOMHelper.inputEquals(parent, XSDConstants.CHOICE_ELEMENT_TAG, false))
-       {
-        parentIsChoice = true;
-      }
-      
-      if (parentIsChoice || parentIsSequence)
-      {
-        modelGroupComboValues = new String[2];
-        modelGroupComboValues[0] = XSDConstants.SEQUENCE_ELEMENT_TAG;
-        modelGroupComboValues[1] = XSDConstants.CHOICE_ELEMENT_TAG;
-      }
-      else
-      {
-        modelGroupComboValues = new String[3];
-        modelGroupComboValues[0] = XSDConstants.SEQUENCE_ELEMENT_TAG;
-        modelGroupComboValues[1] = XSDConstants.CHOICE_ELEMENT_TAG;
-        modelGroupComboValues[2] = XSDConstants.ALL_ELEMENT_TAG;
-      }
-    }      
-  }
-  
-  private void changeContentModel(Element parent, String contentModel)
-  {
-    Document doc = parent.getOwnerDocument();
-    XSDDOMHelper domHelper = new XSDDOMHelper();
-  
-    String prefix = parent.getPrefix();
-    prefix = prefix == null ? "" : prefix + ":";
-    
-    Element contentModelElement = domHelper.getContentModelFromParent(parent);
-  
-    if (contentModelElement.getLocalName().equals(contentModel))
-    {
-      return; // it's already the content model 
-    }
-  
-    Element newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + contentModel);
-  
-    if (contentModelElement.hasChildNodes())
-    {        
-      NodeList nodes = contentModelElement.getChildNodes();
-      // use clones so we don't have a refresh problem
-      for (int i = 0; i < nodes.getLength(); i++)
-      {
-        Node node = nodes.item(i);
-        newNode.appendChild(node.cloneNode(true)); 
-      }
-    }
-    parent.replaceChild(newNode, contentModelElement);
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NamePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NamePropertySource.java
deleted file mode 100644
index 9c31405..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NamePropertySource.java
+++ /dev/null
@@ -1,216 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-public class NamePropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  /**
-   * 
-   */
-  public NamePropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public NamePropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public NamePropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-
-// From attribute group    
-//    WorkbenchHelp.setHelp(client, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_DESIGN_VIEW);
-//    WorkbenchHelp.setHelp(nameField, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_NAME);
-
-// From unique
-//    WorkbenchHelp.setHelp(nameField, XSDEditorContextIds.XSDE_UNIQUE_BASE_NAME);
-
-// From key
-//    WorkbenchHelp.setHelp(nameField, XSDEditorContextIds.XSDE_UNIQUE_BASE_NAME);
-    
-// From group
-//     WorkbenchHelp.setHelp(controlsContainer, XSDEditorContextIds.XSDE_GROUP_DESIGN_VIEW);
-//     WorkbenchHelp.setHelp(nameField, XSDEditorContextIds.XSDE_GROUP_NAME);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    PropertyDescriptor nameDescriptor =
-    new TextPropertyDescriptor(
-        XSDConstants.NAME_ATTRIBUTE,
-        XSDConstants.NAME_ATTRIBUTE);
-    list.add(nameDescriptor);
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-    }
-    if (result == null)
-    {
-      result = "";
-    }
-    return result;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value != null)
-    {
-      if (value instanceof String)
-      {
-        String newValue = (String)value;
-        if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false))
-        {  
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTEGROUP_NAME_CHANGE"), element);
-
-          // now rename any references to this element
-          if (xsdSchema != null)
-          {
-            XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-            
-            // TODO cs : revisit
-            //if (comp != null && comp instanceof XSDAttributeGroupDefinition && comp.getContainer().equals(xsdSchema))
-            //{
-            //  GlobalAttributeGroupRenamer renamer = new GlobalAttributeGroupRenamer((XSDNamedComponent)comp, (String)value);
-            //  renamer.visitSchema(xsdSchema);
-            //}
-          }
-          element.setAttribute(XSDConstants.NAME_ATTRIBUTE, (String)value);
-          endRecording(element);
-        }
-        else if (XSDDOMHelper.inputEquals(element, XSDConstants.UNIQUE_ELEMENT_TAG, false))
-        {
-          if (validateName(newValue))
-           {
-            beginRecording(XSDEditorPlugin.getXSDString("_UI_UNIQUE_NAME_CHANGE"), element);
-            if (newValue.length() > 0)
-            {
-              element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-            }
-            else
-            {
-              element.setAttribute(XSDConstants.NAME_ATTRIBUTE, "");
-            }
-            endRecording(element);
-          }
-        }
-        else if (XSDDOMHelper.inputEquals(element, XSDConstants.KEY_ELEMENT_TAG, false))
-        {
-          if (validateName(newValue))
-          {
-            beginRecording(XSDEditorPlugin.getXSDString("_UI_KEY_NAME_CHANGE"), element);
-            if (newValue.length() > 0)
-            {
-              element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-            }
-            else
-            {
-              element.setAttribute(XSDConstants.NAME_ATTRIBUTE, "");
-            }
-            endRecording(element);
-          }
-        }
-        else if (XSDDOMHelper.inputEquals(element, XSDConstants.GROUP_ELEMENT_TAG, false))
-        {
-          if (validateName(newValue))
-           {
-            beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_NAME_CHANGE"), element);
-            // now rename any references to this element
-            if (xsdSchema != null)
-             {
-              // TODO cs : revisit
-              //XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-              //if (comp != null && comp instanceof XSDModelGroupDefinition && comp.getContainer().equals(xsdSchema))
-              //{
-              //  GlobalGroupRenamer renamer = new GlobalGroupRenamer((XSDNamedComponent)comp, newValue);
-              //  renamer.visitSchema(xsdSchema);
-              //}
-            }
-            element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-            endRecording(element);
-          }
-          
-        }
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NotationPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NotationPropertySource.java
deleted file mode 100644
index 829e192..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/NotationPropertySource.java
+++ /dev/null
@@ -1,185 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class NotationPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  /**
-   * 
-   */
-  public NotationPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public NotationPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public NotationPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-// Removed for tabbed properties
-//    PropertyDescriptor nameDescriptor =
-//    new TextPropertyDescriptor(
-//        XSDConstants.NAME_ATTRIBUTE,
-//        XSDConstants.NAME_ATTRIBUTE);
-//    list.add(nameDescriptor);
-
-    PropertyDescriptor publicDescriptor =
-    new TextPropertyDescriptor(
-        XSDConstants.PUBLIC_ATTRIBUTE,
-        XSDConstants.PUBLIC_ATTRIBUTE);
-    list.add(publicDescriptor);
-    
-    PropertyDescriptor systemDescriptor =
-    new TextPropertyDescriptor(
-        XSDConstants.SYSTEM_ATTRIBUTE,
-        XSDConstants.SYSTEM_ATTRIBUTE);
-    list.add(systemDescriptor);
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-    
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-    }
-    if (result == null)
-    {
-      result = "";
-    }
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      String newValue = (String)value;
-      if (((String)id).equals(XSDConstants.NAME_ATTRIBUTE))
-      {
-        if (validateName(newValue))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_NOTATION_NAME_CHANGE"), element);
-          if (newValue.length() > 0)
-          {
-            element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-          }
-          else
-          {
-            element.setAttribute(XSDConstants.NAME_ATTRIBUTE, "");
-          }
-          endRecording(element);
-        }
-      }
-      else if (((String)id).equals(XSDConstants.PUBLIC_ATTRIBUTE))
-       {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_NOTATION_PUBLIC_CHANGE"), element);
-        if (newValue.length() > 0)
-        {
-          element.setAttribute(XSDConstants.PUBLIC_ATTRIBUTE, newValue);
-        }
-        else
-        {
-          element.setAttribute(XSDConstants.PUBLIC_ATTRIBUTE, "");
-        }
-        endRecording(element);
-      }
-      else if (((String)id).equals(XSDConstants.SYSTEM_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_NOTATION_SYSTEM_CHANGE"), element);
-        if (newValue.length() > 0)
-        {
-          element.setAttribute(XSDConstants.SYSTEM_ATTRIBUTE, newValue);
-        }
-        else
-        {
-          element.removeAttribute(XSDConstants.SYSTEM_ATTRIBUTE);
-        }
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/OptionsTextCellEditor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/OptionsTextCellEditor.java
deleted file mode 100644
index d61142e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/OptionsTextCellEditor.java
+++ /dev/null
@@ -1,239 +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.properties;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.xsd.ui.internal.util.ViewUtility;
-
-
-public abstract class OptionsTextCellEditor extends CellEditor implements SelectionListener, KeyListener
-{
-	private Composite fEditor;
-	protected Text fText;
-  protected boolean isTextReadOnly;
-	Button moreButton;
-	Shell dialog;
-
-	protected Object fValue;
-	int selection;
-	Object typeObject;
-		
-	private class ComboCellLayout extends Layout 
-	{
-		public void layout(Composite editor, boolean force)
-		{
-			Rectangle bounds= editor.getClientArea();
-			Point size= moreButton.computeSize(SWT.DEFAULT, bounds.height, force);
-			fText.setBounds(0, 0, bounds.width - size.x, bounds.height);
-			moreButton.setBounds(bounds.width - size.x, 0, size.x, size.y);
-		}
-		
-		public Point computeSize(Composite editor, int wHint, int hHint, boolean force)
-		{
-			if (wHint != SWT.DEFAULT && hHint != SWT.DEFAULT)
-			{
-				return new Point(wHint, hHint);
-			}
-			Point size= fText.computeSize(SWT.DEFAULT, SWT.DEFAULT, force);
-//			size.x += moreButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, force).x;
-			return size;
-		}
-	}
-
-/**
- * Creates a new combo box cell editor with the given choices.
- */
-	 public OptionsTextCellEditor(Composite parent)
-	 {
-		 super(parent);
-	 }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.CellEditor#createControl(org.eclipse.swt.widgets.Composite)
-   */
-	protected Control createControl(Composite parent)
-	{
-		fEditor = ViewUtility.createComposite(parent, 2);
-		fEditor.setLayout(new ComboCellLayout());
- 
-    if (isTextReadOnly)
-    {
-		  fText = new Text(fEditor, SWT.LEFT | SWT.READ_ONLY);
-    }
-    else
-    {
-      fText = new Text(fEditor, SWT.LEFT);
-    }
-//    fText.setEnabled(false);
-
-		fText.setBackground(parent.getBackground());
-		fText.setText("");
-    fText.addKeyListener(this);
-		fText.addFocusListener(new FocusAdapter()
-    {
-			public void focusLost(FocusEvent e)
-      {
-				if (!moreButton.isFocusControl())
-				{
-					OptionsTextCellEditor.this.focusLost();
-				}
-			}
-		});
-			
-		moreButton = ViewUtility.createPushButton(fEditor, "...");
-		moreButton.addSelectionListener(new SelectionAdapter()
-		{
-			public void widgetSelected(SelectionEvent e)
-			{
-				// System.out.println("More Button Clicked");
-				openDialog();
-			}
-		});
-    moreButton.addKeyListener(this);
-		moreButton.addFocusListener(new FocusAdapter() {
-			public void focusLost(FocusEvent e) {
-				if (!fText.isFocusControl() && (dialog==null || 
-								dialog.isDisposed() || 
-								(dialog!=null && !dialog.isFocusControl())))
-				{
-          // System.out.println("MoreButton focusLost");
-					OptionsTextCellEditor.this.focusLost();
-				}
-			}
-		});
-
-
-		setValueValid(true);
-
-		return fEditor;
-	}
-  
-  public void activate()
-  {
-    // System.out.println("Cell editor activated");
-    fText.setText(fValue == null ? "" : fValue.toString());
-  }
-
-	protected void focusLost() {
-		// System.out.println("CELLEDITOR FOCUS LOST");
-		if (isActivated()) {
-			applyEditorValueAndDeactivate();
-		}
-	}
-
-	void applyEditorValueAndDeactivate() {
-		//	must set the selection before getting value
-//		if (dialog != null  && !dialog.isDisposed())
-//		{
-//			dialog.close();
-//			dialog.dispose();
-//		}
-		fireApplyEditorValue();
-		deactivate();
-	}
-
-  public void keyPressed(KeyEvent e)
-  {
-    if (e.character == SWT.ESC)
-     { // Escape character
-      fireCancelEditor();
-    }
-    else if ((e.character == SWT.CR) || (e.character == SWT.LF))
-     { // Return key
-      applyEditorValueAndDeactivate();
-    }
-  }
-  
-  public void keyReleased(KeyEvent e)
-  {
-    
-  }
-  
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.CellEditor#doGetValue()
-   * Returns the cell editor's value.
-	 */
-	protected Object doGetValue() 
-	{
-		return fValue;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.CellEditor#doSetFocus()
-   * Set the focus to the cell editor's UI representation.
-   */
-	protected void doSetFocus()
-	{
-//		fButton.setFocus();
-//		System.out.println("doSetFocus() " + moreButton.setFocus());
-		fText.setFocus();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.jface.viewers.CellEditor#doSetValue(java.lang.Object)
-	 * Sets the value of the cell editor to the given value.
-   */
-	protected void doSetValue(Object value)
-	{
-		fValue = value;
-	}
-
-  protected Point getButtonAbsoluteLocation()
-  {
-    Rectangle buttonBounds = moreButton.getBounds();
-    int x = buttonBounds.x;
-    int y = buttonBounds.y;
-    Control c = moreButton;
-    while (c != null)
-     {
-      c = c.getParent();
-      if (c == null)
-        break;
-      x += c.getBounds().x;
-      y += c.getBounds().y;
-    }
-    x += buttonBounds.width + 5;
-    y += buttonBounds.height;
-    Point p = new Point(x,y);
-    return p;
-  }
-  
-  protected void cancel()
-  {
-    dialog.close();
-    dialog.dispose();
-  }
-
-	protected abstract void openDialog();	
-  
-	public void widgetSelected(SelectionEvent e)
-	{
-	}
-	public void widgetDefaultSelected(SelectionEvent e)
-  {
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/PatternPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/PatternPropertySource.java
deleted file mode 100644
index c437e4c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/PatternPropertySource.java
+++ /dev/null
@@ -1,271 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.wizards.RegexWizard;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class PatternPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  /**
-   * 
-   */
-  public PatternPropertySource()
-  {
-    super();
-//    expressionField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_PATTERN"));    
-//    WorkbenchHelp.setHelp(expressionField, XSDEditorContextIds.XSDE_PATTERN_VALUE);
-//    WorkbenchHelp.setHelp(activateWizardButton, XSDEditorContextIds.XSDE_PATTERN_REGULAR);
-//    activateWizardButton.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_REGEX_WIZARD_BUTTON"));
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public PatternPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public PatternPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-
-    PatternTextPropertyDescriptor patternDescriptor =
-    new PatternTextPropertyDescriptor(
-        XSDConstants.VALUE_ATTRIBUTE, 
-        XSDConstants.VALUE_ATTRIBUTE);
-    list.add(patternDescriptor);
-    
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-    }
-    if (result == null)
-    {
-      result = "";
-    }
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      if (((String) id).equals(XSDConstants.VALUE_ATTRIBUTE))
-      { 
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_PATTERN_VALUE_CHANGE"), element);
-        element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, (String)value);
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-
-  public class PatternTextPropertyDescriptor extends PropertyDescriptor
-  {
-    /**
-     * @param id
-     * @param displayName
-     */
-    public PatternTextPropertyDescriptor(Object id, String displayName)
-    {
-      super(id, displayName);
-    }
-    
-    public CellEditor createPropertyEditor(Composite parent)
-    {
-      // CellEditor editor = new PatternTextCellEditor(parent);
-      CellEditor editor = new PatternDialogCellEditor(parent);
-      if (getValidator() != null)
-        editor.setValidator(getValidator());
-      return editor;
-    }
-  }   
-
-  public class PatternDialogCellEditor extends DialogCellEditor {
-
-    /**
-     * Creates a new Font dialog cell editor parented under the given control.
-     * The cell editor value is <code>null</code> initially, and has no 
-     * validator.
-     *
-     * @param parent the parent control
-     */
-    protected PatternDialogCellEditor(Composite parent) {
-      super(parent);
-    }
-
-    /**
-     * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control)
-     */
-    protected Object openDialogBox(Control cellEditorWindow)
-    {
-      String initialValue = element.getAttribute(XSDConstants.VALUE_ATTRIBUTE);
-      if (initialValue == null)
-      {
-        initialValue = "";
-      }
-      RegexWizard wizard = new RegexWizard(initialValue);
-      Shell shell = Display.getCurrent().getActiveShell();
-      WizardDialog wizardDialog = new WizardDialog(shell, wizard);
-      wizardDialog.create();
-      
-      String value = (String)getValue();
-
-      int result = wizardDialog.open();
-
-      if (result == Window.OK)
-      {
-        return wizard.getPattern();
-      }
-      return value;
-    }
-
-  }
-  
-//  class PatternTextCellEditor extends OptionsTextCellEditor
-//  {
-//    protected Button fixedButton, defaultButton;
-//    
-//    public PatternTextCellEditor(Composite parent)
-//    {
-//      super(parent);
-//    }
-//
-//    protected Control createControl(Composite parent)
-//    {
-//      isTextReadOnly = false;
-//      return super.createControl(parent);
-//    }
-//
-//    protected void openDialog()
-//    {
-//      RegexWizard wizard = new RegexWizard(element.getAttribute(XSDConstants.VALUE_ATTRIBUTE));
-//      Shell shell = Display.getCurrent().getActiveShell();
-//      WizardDialog wizardDialog = new WizardDialog(shell, wizard);
-//      wizardDialog.create();
-//      
-//      dialog = wizardDialog.getShell();
-//      Display display = dialog.getDisplay();
-//      dialog.addShellListener(new ShellAdapter()
-//      {
-//        public void shellDeactivated(ShellEvent e)
-//        {
-//          cancel();
-//        }
-//      });
-//
-//      int result = wizardDialog.open();
-//
-//      if (result == Window.OK)
-//      {
-//        fText.setText(wizard.getPattern());
-//        applyEditorValueAndDeactivate();
-//      }
-//      
-//    }
-//
-//    protected void cancel()
-//    {
-//      super.cancel();
-//    }
-//
-//    void applyEditorValueAndDeactivate()
-//    {
-//      String value = fText.getText();
-//      doSetValue(value);
-//      fireApplyEditorValue();
-//      deactivate();
-//    }
-//    
-//    protected Object doGetValue()
-//    { 
-//      fValue = fText.getText();
-//      return fText.getText();
-//    }
-//
-//  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ReadOnlyPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ReadOnlyPropertySource.java
deleted file mode 100644
index 46ca063..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/ReadOnlyPropertySource.java
+++ /dev/null
@@ -1,75 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-
-public class ReadOnlyPropertySource implements IPropertySource
-{
-	protected Element element;
-
-	public ReadOnlyPropertySource(IEditorPart editPart, Element element)
-	{
-			this.element = element;
-	}
-
-	public Object getEditableValue()
-	{
-			return null;
-	}
-
-	public IPropertyDescriptor[] getPropertyDescriptors()
-	{
-			List list = new ArrayList();
-			NamedNodeMap map = element.getAttributes();
-			int mapLength = map.getLength();
-			for (int i = 0; i < mapLength; i++)
-			{
-					Attr attr = (Attr) map.item(i);
-					list.add(new PropertyDescriptor(attr.getName(), attr.getName()));
-			}
-			IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-			list.toArray(result);
-			return result;
-	}
-
-	public Object getPropertyValue(Object id)
-	{
-			Object result = null;
-			if (id instanceof String)
-			{
-					result = element.getAttribute((String) id);
-			}
-			return result != null ? result : "";
-	}
-
-	public boolean isPropertySet(Object id)
-	{
-			return false;
-	}
-
-	public void resetPropertyValue(Object id)
-	{
-	}
-
-	public void setPropertyValue(Object id, Object value)
-	{
-	}
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaDirectiveHelperPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaDirectiveHelperPropertySource.java
deleted file mode 100644
index 43780f8..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaDirectiveHelperPropertySource.java
+++ /dev/null
@@ -1,191 +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.properties;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.views.navigator.ResourceNavigator;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.wst.common.ui.internal.viewers.ResourceFilter;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.wizards.XSDSelectIncludeFileWizard;
-import org.eclipse.xsd.XSDSchema;
-
-public abstract class SchemaDirectiveHelperPropertySource
-  extends BasePropertySource
-{
-  protected IFile currentIFile;
-
-  IFile selectedIFile;
-  String selectedNamespace;
-  XSDSchema selectedXSDSchema;
-  boolean isInclude;
-  /**
-   * 
-   */
-  public SchemaDirectiveHelperPropertySource(boolean isInclude)
-  {
-    super();
-    this.isInclude = isInclude;
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public SchemaDirectiveHelperPropertySource(
-    Viewer viewer,
-    XSDSchema xsdSchema,
-    boolean isInclude)
-  {
-    super(viewer, xsdSchema);
-    this.isInclude = isInclude;
-  }
-  /**
-   * @param xsdSchema
-   */
-  public SchemaDirectiveHelperPropertySource(XSDSchema xsdSchema, boolean isInclude)
-  {
-    super(xsdSchema);
-    this.isInclude = isInclude;
-  }
-
-  
-  public class SchemaLocationPropertyDescriptor extends PropertyDescriptor
-  {
-    /**
-     * @param id
-     * @param displayName
-     */
-    public SchemaLocationPropertyDescriptor(Object id, String displayName)
-    {
-      super(id, displayName);
-    }
-    
-    public CellEditor createPropertyEditor(Composite parent)
-    {
-      CellEditor editor = new SchemaLocationDialogCellEditor(parent);
-      if (getValidator() != null)
-        editor.setValidator(getValidator());
-      return editor;
-    }
-  }
-
-  public class SchemaLocationDialogCellEditor extends DialogCellEditor {
-
-    /**
-     * Creates a new Font dialog cell editor parented under the given control.
-     * The cell editor value is <code>null</code> initially, and has no 
-     * validator.
-     *
-     * @param parent the parent control
-     */
-    protected SchemaLocationDialogCellEditor(Composite parent) {
-      super(parent);
-    }
-
-    /**
-     * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control)
-     */
-    protected Object openDialogBox(Control cellEditorWindow)
-    {
-      Shell shell = Display.getCurrent().getActiveShell();
-      
-//      oldSchemaLocation = locationField.getText().trim();
-//      IFile currentIFile = ((IFileEditorInput)getIEditorPart().getEditorInput()).getFile();
-      ViewerFilter filter = new ResourceFilter(new String[] { ".xsd" }, 
-      new IFile[] { currentIFile },
-      null);
-//
-
-      IViewPart viewParts[] = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViews();
-      ResourceNavigator resourceNav = null;
-      for (int i = 0; i < viewParts.length; i++) 
-       {
-        if (viewParts[i] instanceof ResourceNavigator) 
-         {
-          resourceNav = (ResourceNavigator) viewParts[i];
-          break;
-        }
-      }
-      IStructuredSelection selection = StructuredSelection.EMPTY;
-      if (resourceNav != null)
-       {
-        selection = (IStructuredSelection)resourceNav.getViewSite().getSelectionProvider().getSelection();
-      }
-      
-      XSDSelectIncludeFileWizard fileSelectWizard = 
-      new XSDSelectIncludeFileWizard(xsdSchema, isInclude,
-          XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_SCHEMA"),
-          XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_DESC"),
-          filter,
-          selection);
-
-      WizardDialog wizardDialog = new WizardDialog(shell, fileSelectWizard);
-      wizardDialog.create();
-      wizardDialog.setBlockOnOpen(true);
-      int result = wizardDialog.open();
-
-      
-      String value = (String)getValue();
-      // System.out.println("VALUE IS *** = " + value);
-      if (result == Window.OK)
-      {
-        selectedIFile = fileSelectWizard.getResultFile();
-        String schemaFileString = value;
-        if (selectedIFile != null) 
-         {
-          schemaFileString = URIHelper.getRelativeURI(selectedIFile.getLocation(), currentIFile.getLocation());
-        }
-        else
-         {
-          schemaFileString = fileSelectWizard.getURL();
-        }
-
-//        updateExternalModel(selectedIFile, fileSelectWizard.getNamespace(), fileSelectWizard.getExternalSchema());
-        selectedNamespace = fileSelectWizard.getNamespace();
-        selectedXSDSchema = fileSelectWizard.getExternalSchema();
-        
-        return schemaFileString;
-      }
-      return value;
-    }
-  }
-
-  public IFile getSelectedIFile()
-  {
-    return selectedIFile;
-  }
-  
-  public String getSelectedNamespace()
-  {
-    return selectedNamespace;
-  }
-  
-  public XSDSchema getSelectedXSDSchema()
-  {
-    return selectedXSDSchema;
-  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaPropertySource.java
deleted file mode 100644
index 0ae4888..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SchemaPropertySource.java
+++ /dev/null
@@ -1,519 +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.properties;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.TargetNamespaceChangeHandler;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-public class SchemaPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  private String oldPrefix = "";
-  private String oldNamespace = "";
-  
-  private String[] attributeFormDefaultComboValues =
-  { 
-    "",
-    XSDEditorPlugin.getXSDString("_UI_COMBO_UNQUALIFIED"),
-    XSDEditorPlugin.getXSDString("_UI_COMBO_QUALIFIED")
-  };
-  
-  private String[] elementFormDefaultComboValues =
-  {
-    "",
-    XSDEditorPlugin.getXSDString("_UI_COMBO_UNQUALIFIED"),
-    XSDEditorPlugin.getXSDString("_UI_COMBO_QUALIFIED")
-  };
-
-  private String[] blockDefaultComboValues =
-  {
-    "",
-    "#all",
-    "extension",
-    "restriction",
-    "substitution"
-  };
-
-  private String[] finalDefaultComboValues =
-  {
-    "",
-    "#all",
-    "extension",
-    "restriction"
-  };
-  
-  /**
-   * 
-   */
-  public SchemaPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public SchemaPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public SchemaPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-// These have been moved to the General tab    
-//    PropertyDescriptor prefixDescriptor = 
-//    new TextPropertyDescriptor(
-//        "prefix",
-//        "prefix");
-//    list.add(prefixDescriptor);
-//    prefixDescriptor.setCategory("Namespace");
-//
-//    PropertyDescriptor targetNamespaceDescriptor = 
-//    new TextPropertyDescriptor(
-//        XSDConstants.TARGETNAMESPACE_ATTRIBUTE,
-//        XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
-//    list.add(targetNamespaceDescriptor);
-//    targetNamespaceDescriptor.setCategory("Namespace");
-    
-    PropertyDescriptor versionDescriptor = 
-    new TextPropertyDescriptor(
-        XSDConstants.VERSION_ATTRIBUTE,
-        XSDConstants.VERSION_ATTRIBUTE);
-//    versionDescriptor.setDescription("Version attribute"); // XSDEditorPlugin.getXSDString("_UI_TOOLTIP_VERSION"));
-    list.add(versionDescriptor);
-    PropertyDescriptor xmlLangDescriptor = 
-    new TextPropertyDescriptor(
-        "xml:lang",
-        "xml:lang");
-    list.add(xmlLangDescriptor);
-    
-    XSDComboBoxPropertyDescriptor attributeFormDefaultDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE,
-        XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE,
-        attributeFormDefaultComboValues);
-    list.add(attributeFormDefaultDescriptor);
-    
-    
-    XSDComboBoxPropertyDescriptor elementFormDefaultDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE,
-        XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE,
-        elementFormDefaultComboValues);
-    list.add(elementFormDefaultDescriptor);
-    
-    XSDComboBoxPropertyDescriptor blockDefaultDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        XSDConstants.BLOCKDEFAULT_ATTRIBUTE,
-        XSDConstants.BLOCKDEFAULT_ATTRIBUTE,
-        blockDefaultComboValues);
-    list.add(blockDefaultDescriptor);
-    XSDComboBoxPropertyDescriptor finalDefaultDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        XSDConstants.FINALDEFAULT_ATTRIBUTE,
-        XSDConstants.FINALDEFAULT_ATTRIBUTE,
-        finalDefaultComboValues);
-    list.add(finalDefaultDescriptor);
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-    //    return propertyDescriptors;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-      String attributeName = (String)id;
-      if (result == null)
-      {
-        result = "";
-      }
-
-      if (attributeName.equals("prefix"))
-      {
-        TypesHelper helper = new TypesHelper(xsdSchema);
-        String aPrefix = helper.getPrefix(element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE), false);
-        // System.out.println("schema targetNS is " + xsdSchema.getTargetNamespace());
-        if (aPrefix != null && aPrefix.length() > 0)
-        {
-          return aPrefix;
-        }
-        return "";        
-      }
-      else
-      {
-        return result;
-      }
-    }
-    return "";
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      String newValue = (String)value;
-      String attributeName = (String)id;
-      if (attributeName.equals("prefix"))
-      {
-        updatePrefix(newValue); 
-      }
-      else if (attributeName.equals(XSDConstants.TARGETNAMESPACE_ATTRIBUTE))
-      {
-        updateTargetNamespace(newValue);
-      }
-      else if (attributeName.equals("xml:lang"))
-      {
-        validateLanguage(newValue);
-        // return;  // we will accept the value even though it does not conform
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_LANG_CHANGE"), element);
-      }
-      else if (attributeName.equals(XSDConstants.VERSION_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_VERSION_CHANGE"), element);
-      }
-      else if (attributeName.equals(XSDConstants.ATTRIBUTEFORMDEFAULT_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_ATTRIBUTEFORMDEFAULT_CHANGE"), element);
-      }
-      else if (attributeName.equals(XSDConstants.ELEMENTFORMDEFAULT_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_ELEMENTFORMDEFAULT_CHANGE"), element); 
-      }
-      else if (attributeName.equals(XSDConstants.BLOCKDEFAULT_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_BLOCKDEFAULT_CHANGE"), element); 
-      }
-      else if (attributeName.equals(XSDConstants.FINALDEFAULT_ATTRIBUTE))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_SCHEMA_FINALDEFAULT_CHANGE"), element);
-      }
-
-      if (!attributeName.equals("prefix") && !attributeName.equals(XSDConstants.TARGETNAMESPACE_ATTRIBUTE))
-      {        
-        if (newValue.equals(""))
-        {
-          element.removeAttribute(attributeName); 
-        }
-        else
-        {
-          element.setAttribute(attributeName, newValue);
-        }
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-        viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-
-  public void setInput(Element element)
-  {
-    super.setInput(element);
-    
-    oldNamespace = "";
-    oldPrefix = "";
-    
-    if (element!= null)
-    {
-      String targetNamespace = element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
-      oldNamespace = targetNamespace;
-
-      TypesHelper helper = new TypesHelper(xsdSchema);
-      String aPrefix = helper.getPrefix(targetNamespace, false);
-      if (aPrefix != null && aPrefix.length() > 0)
-      {
-        oldPrefix = aPrefix;
-      }
-    }
-  }
-  
-  
-  private void updatePrefix(String newPrefix)
-  {
-    updateNamespaceInfo(newPrefix, oldNamespace);  
-  }
-  
-  private void updateTargetNamespace(String newTargetNamespace)
-  {
-    updateNamespaceInfo(oldPrefix, newTargetNamespace);
-  }
-  
-  private void updateNamespaceInfo(String newPrefix, String newTargetNamespace)
-  {
-//    System.out.println("\nold Prefix is " + oldPrefix);
-//    System.out.println("old NS is " + oldNamespace);
-//    System.out.println("new Prefix is " + newPrefix);
-//    System.out.println("new NS is " + newTargetNamespace);
-    
-    DocumentImpl doc = (DocumentImpl)element.getOwnerDocument();
-
-    String modelTargetNamespace = xsdSchema.getTargetNamespace();
-//    System.out.println("Model TargetNS is " + modelTargetNamespace);
-    if (modelTargetNamespace == null)
-    {
-      modelTargetNamespace = "";
-    }
-        
-    String targetNamespace = newTargetNamespace.trim(); 
-    String prefix = newPrefix.trim();
-
-    if (!validatePrefix(prefix) || !validateTargetNamespace(targetNamespace))
-    {
-      return;
-    }
-        
-    if (prefix.length() > 0 && targetNamespace.length() == 0)
-    {
-       // can't have blank targetnamespace and yet specify a prefix
-       return;
-    }
-
-    doc.getModel().beginRecording(this, XSDEditorPlugin.getXSDString("_UI_LABEL_TARGETNAMESPACE_CHANGE"));
-    String xsdForXSDPrefix = xsdSchema.getSchemaForSchemaQNamePrefix();
-    Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-
-// For debugging
-//        System.out.println("1. SW Map is " + map.values());
-//        System.out.println("1. SW Map keys are " + map.keySet());
-
-    // Check if prefix is blank
-    // if it is, then make sure we have a prefix 
-    // for schema for schema
-    if (prefix.length() == 0)
-    {
-      // if prefix for schema for schema is blank
-      // then set it to value specified in preference
-      // and update ALL nodes with this prefix
-      if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
-      {
-        // get preference prefix
-        xsdForXSDPrefix = XSDEditorPlugin.getPlugin().getXMLSchemaPrefix();
-        // get a unique prefix by checking what's in the map
-
-        xsdForXSDPrefix = getUniqueSchemaForSchemaPrefix(xsdForXSDPrefix, map);
-        element.setAttribute("xmlns:" + xsdForXSDPrefix, XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001);
-
-        updateAllNodes(element, xsdForXSDPrefix);
-            
-        // remove the old xmlns attribute for the schema for schema
-        if (element.getAttribute("xmlns") != null &&
-            element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001))
-        {
-          element.removeAttribute("xmlns");
-        }
-      }
-    }
-
-    if (targetNamespace.length() > 0 ||
-       (targetNamespace.length() == 0 && prefix.length() == 0))
-    {
-      // clean up the old prefix for this schema
-      if (oldPrefix != null && oldPrefix.length() > 0)
-      {
-        element.removeAttribute("xmlns:"+oldPrefix);
-//            element.setAttribute("xmlns:" + prefix, targetNamespace);
-//            java.util.Map prefixToNameSpaceMap = xsdSchema.getQNamePrefixToNamespaceMap();
-//            prefixToNameSpaceMap.remove(oldPrefix);
-      }
-      else // if no prefix
-      {
-        if (element.getAttribute("xmlns") != null)
-        {
-          if (!element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001))
-           {
-            element.removeAttribute("xmlns");
-          }
-        }
-      }
-    }
-
-    if (targetNamespace.length() > 0)
-    {
-      if (!modelTargetNamespace.equals(targetNamespace))
-      {
-        element.setAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE, targetNamespace);
-      }
-      // now set the new xmlns:prefix attribute
-      if (prefix.length() > 0)
-      {
-        element.setAttribute("xmlns:" + prefix, targetNamespace);
-      }
-      else
-      {
-        element.setAttribute("xmlns", targetNamespace);
-      }
-      // set the targetNamespace attribute
-    }
-    else // else targetNamespace is blank
-    {
-      if (prefix.length() == 0)
-      {
-        element.removeAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
-      }
-    }
-
-//    System.out.println("1.5 SW Map is " + map.values());
-//    System.out.println("1.5 SW Map keys are " + map.keySet());
-    
-    // do our own referential integrity
-    TargetNamespaceChangeHandler targetNamespaceChangeHandler = new TargetNamespaceChangeHandler(xsdSchema, oldNamespace, targetNamespace);
-    targetNamespaceChangeHandler.resolve();
-
-    oldPrefix = prefix;
-    oldNamespace = targetNamespace;
-    
-    XSDSchemaHelper.updateElement(xsdSchema);
-    
-    doc.getModel().endRecording(this);
-
-// For debugging
-        map = xsdSchema.getQNamePrefixToNamespaceMap();
-//        System.out.println("2. SW Map is " + map.values());
-//        System.out.println("2. SW Map keys are " + map.keySet());
-  }
-
-
-  private String getUniqueSchemaForSchemaPrefix(String xsdForXSDPrefix, Map map)
-  {
-    if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
-     {       
-      xsdForXSDPrefix = "xsd";
-    }
-    // ensure prefix is unique
-    int prefixExtension = 1;
-    while (map.containsKey(xsdForXSDPrefix) && prefixExtension < 100)
-     {
-      xsdForXSDPrefix = xsdForXSDPrefix + String.valueOf(prefixExtension);
-      prefixExtension++;
-    }
-    return xsdForXSDPrefix;
-  }
-
-  private void updateAllNodes(Element element, String prefix)
-  {
-    element.setPrefix(prefix);
-    NodeList list = element.getChildNodes();
-    if (list != null)
-    {
-      for (int i=0; i < list.getLength(); i++)
-      {
-        Node child = list.item(i);
-        if (child != null && child instanceof Element)
-        {
-          child.setPrefix(prefix);
-          if (child.hasChildNodes())
-          {
-            updateAllNodes((Element)child, prefix);
-          }
-        }
-      }
-    }   
-  }
-
-  protected boolean validateTargetNamespace(String ns)
-  {
-    // will allow blank namespace !!
-    if (ns.equals(""))
-     {
-      return true;
-    }
-    
-    String errorMessage = null;
-    try
-    {
-      URI testURI = new URI(ns);
-      testURI.isAbsolute();
-    }
-    catch (URISyntaxException e)
-    {
-      errorMessage = XSDEditorPlugin.getXSDString("_WARN_INVALID_TARGET_NAMESPACE");
-    }
-    
-    if (errorMessage == null || errorMessage.length() == 0)
-     {
-      return true;
-    }
-    return false;
-  }
-  
-}
-
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertyDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertyDescriptor.java
deleted file mode 100644
index 1948146..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertyDescriptor.java
+++ /dev/null
@@ -1,209 +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.properties;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.xsd.ui.internal.properties.section.SimpleContentBaseTypeOptionsDialog;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-
-public class SimpleContentPropertyDescriptor extends TypesPropertyDescriptor
-{
-  public SimpleContentPropertyDescriptor(Object id, String displayName, Element element, XSDSchema xsdSchema)
-  {
-    super(id, displayName, element, xsdSchema);
-  }
-  
-  public CellEditor createPropertyEditor(Composite parent)
-  {
-    // CellEditor editor = new SimpleContentBaseTypeOptionsTextCellEditor(parent);
-    CellEditor editor = new SimpleContentBaseTypeDialogCellEditor(parent);
-    if (getValidator() != null)
-      editor.setValidator(getValidator());
-    return editor;
-  }
-  
-  public class SimpleContentBaseTypeDialogCellEditor extends TypesDialogCellEditor
-  {
-
-    /**
-     * Creates a new Font dialog cell editor parented under the given control.
-     * The cell editor value is <code>null</code> initially, and has no 
-     * validator.
-     *
-     * @param parent the parent control
-     */
-    protected SimpleContentBaseTypeDialogCellEditor(Composite parent)
-    {
-      super(parent);
-    }
-
-    protected Object openDialogBox(Control cellEditorWindow)
-    {
-	    Shell shell = Display.getCurrent().getActiveShell();
-	    
-	    // SimpleContentBaseTypeOptionsDialog dialog = new SimpleContentBaseTypeOptionsDialog(shell);
-	    SimpleContentBaseTypeOptionsDialog dialog = new SimpleContentBaseTypeOptionsDialog(shell, element, property, xsdSchema);
-
-	    dialog.setBlockOnOpen(true);
-	    dialog.create();
-	    
-	    String value = (String)getValue();
-	
-	    int result = dialog.open();
-	
-	    if (result == Window.OK)
-	    {
-	      value = dialog.getType();
-	      return value;
-	    }
-	    deactivate();
-	    return value;
-	  }
-  }
-
-//  class SimpleContentBaseTypeOptionsDialog extends TypesDialog
-//  {
-//    public SimpleContentBaseTypeOptionsDialog(Shell shell)
-//    {
-//      super(shell);
-//      showAnonymous = false;
-//    }
-//
-////    protected void ok()
-////    {
-////      TableItem[] items = table.getItems();
-////      selection = table.getSelectionIndex();
-////      if (items != null && items.length > 0 && selection >= 0)
-////       {
-////        typeObject = items[selection].getData();
-////      }
-////      System.out.println("typeObject is " + typeObject);
-////
-////      doSetValue(typeObject);
-////      applyEditorValueAndDeactivate();
-////      dialog.close();
-////    }
-//    
-//    public void handleSetInput()
-//    {
-//      XSDDOMHelper domHelper = new XSDDOMHelper();
-//      typeSection.getSimpleType().setSelection(false);
-//      typeSection.getUserSimpleType().setSelection(false);
-//      typeSection.getUserComplexType().setSelection(false);
-//      showAnonymous = false;
-//      if (element != null)
-//      {
-//        String derivedBy = domHelper.getDerivedByName(element);
-//        String baseType = domHelper.getBaseType(element);
-//        boolean derivedByRestriction = true;
-//        
-//        if (XSDDOMHelper.inputEquals(element, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-//        {
-//          typeSection.getSimpleType().setEnabled(false);
-//          typeSection.getUserSimpleType().setEnabled(false);
-//          typeSection.getUserComplexType().setSelection(true);
-//
-//          previousType = 3;
-//        }
-//        else if (XSDDOMHelper.inputEquals(element, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
-//        {
-//          typeSection.getSimpleType().setEnabled(false);
-//          typeSection.getUserSimpleType().setEnabled(false);
-//
-//          if (derivedBy.equals("restriction"))
-//          {
-//            typeSection.getSimpleType().setEnabled(false);
-//            typeSection.getUserSimpleType().setEnabled(false);
-//            typeSection.getUserComplexType().setEnabled(true);
-//          }
-//          else if (derivedBy.equals("extension"))
-//          {
-//            derivedByRestriction = false;
-//            typeSection.getSimpleType().setEnabled(true);
-//            typeSection.getUserSimpleType().setEnabled(true);
-//            typeSection.getUserComplexType().setEnabled(true);
-//          }
-//        }
-//          
-//        if (derivedBy != null)
-//        {
-//            if (baseType != null && !baseType.equals(""))
-//            {
-//              Element parent = (Element)element.getParentNode();
-//              XSDConcreteComponent component = null;
-//              if (parent != null)
-//              {
-//                component = xsdSchema.getCorrespondingComponent(parent);
-//              }
-//              XSDTypeDefinition baseTypeDefinition = null;
-//              if (component instanceof XSDComplexTypeDefinition)
-//              {
-//                XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)component;
-//                baseTypeDefinition = complexType.getBaseTypeDefinition();
-//              }               
-//
-//              if (typeSection.getBuiltInTypeNamesList(xsdSchema).contains(baseType) && !derivedByRestriction)
-//              {
-//                typeSection.getSimpleType().setSelection(true);
-//                populateBuiltInType();
-//                int i = typeSection.getBuiltInTypeNamesList(xsdSchema).indexOf(baseType);
-//                table.setSelection(i);
-//                previousType = 1;
-//              }
-//              else if (baseTypeDefinition instanceof XSDSimpleTypeDefinition && !derivedByRestriction)
-//              {
-//                typeSection.getUserSimpleType().setSelection(true);
-//                populateUserSimpleType();
-//                int i = typeSection.getUserSimpleTypeNamesList(xsdSchema).indexOf(baseType);
-//                if (showAnonymous)
-//                 {
-//                  table.setSelection(i + 1);
-//                }
-//                else
-//                 {
-//                  table.setSelection(i);
-//                }
-//                previousType = 2;
-//              }
-//              else if (baseTypeDefinition instanceof XSDComplexTypeDefinition)
-//              {
-//                typeSection.getUserComplexType().setSelection(true);
-//                populateUserComplexType();
-//                int i = typeSection.getUserComplexTypeNamesList(xsdSchema).indexOf(baseType);
-//                if (showAnonymous)
-//                 {
-//                  table.setSelection(i + 1);
-//                }
-//                else
-//                 {
-//                  table.setSelection(i);
-//                }
-//                previousType = 3;
-//              }
-//            }
-//            else
-//            {
-//              typeSection.getUserComplexType().setSelection(true);
-//              populateUserComplexType();
-//              table.setSelection(0);
-//            }
-//          }
-//
-//      }
-//    }
-//  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertySource.java
deleted file mode 100644
index 9df52c1..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleContentPropertySource.java
+++ /dev/null
@@ -1,225 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class SimpleContentPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  private String DERIVED_BY_ID = "derived by";  // XSDEditorPlugin.getXSDString("_UI_LABEL_DERIVED_BY"); //$NON-NLS-1$ 
-  private String BASE_TYPE_ID = "base";  // XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE"); //$NON-NLS-1$
-  
-  private String derivedByChoicesComboValues[] =
-  {
-     "",  //$NON-NLS-1$
-     XSDConstants.RESTRICTION_ELEMENT_TAG,
-     XSDConstants.EXTENSION_ELEMENT_TAG
-  };
-  
-  /**
-   * 
-   */
-  public SimpleContentPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public SimpleContentPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public SimpleContentPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    
-    SimpleContentPropertyDescriptor typeDescriptor = new SimpleContentPropertyDescriptor(
-        BASE_TYPE_ID,
-        BASE_TYPE_ID,
-        element, xsdSchema);
-    list.add(typeDescriptor);
-    XSDComboBoxPropertyDescriptor derivedByDescriptor =
-    new XSDComboBoxPropertyDescriptor(
-        DERIVED_BY_ID,
-        DERIVED_BY_ID,
-        derivedByChoicesComboValues);
-    list.add(derivedByDescriptor);
-    
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    if (id instanceof String)
-     {
-      if (((String) id).equals(DERIVED_BY_ID))
-      {
-        String derivedBy = getDomHelper().getDerivedByName(element);
-        if (derivedBy == null)
-         {
-          derivedBy = ""; //$NON-NLS-1$
-        }
-        return derivedBy;
-      }
-      else if (((String) id).equals(BASE_TYPE_ID))
-      {
-        String baseType = getDomHelper().getBaseType(element);
-        if (baseType == null)
-        {
-          baseType = ""; //$NON-NLS-1$
-        }
-        return baseType;
-      }
-    }
-    return ""; //$NON-NLS-1$
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value != null)
-    {
-      if (value instanceof String)
-      {
-        String origBaseType = getDomHelper().getBaseType(element);
-        String derivedBy = getDomHelper().getDerivedByName(element);
-        
-        if (((String) id).equals(BASE_TYPE_ID))
-        {            
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element); //$NON-NLS-1$        
-          getDomHelper().setDerivedByBaseType(element, derivedBy, (String)value);
-          endRecording(element);
-        }
-        else if (((String) id).equals(DERIVED_BY_ID))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_DERIVEDBY_CHANGE"), element); //$NON-NLS-1$
-          String newDerivedBy = (String)value;
-          if (newDerivedBy.equals(XSDConstants.RESTRICTION_ELEMENT_TAG))
-          {
-            String prefix = element.getPrefix();
-            String anyType = prefix == null? "anyType" : prefix + ":anyType";  //$NON-NLS-1$ $NON-NLS-2$
-            getDomHelper().changeDerivedByType(element, (String)value, anyType);
-          }
-          else
-          {
-            Element derivedByElem = getDomHelper().getDerivedByElement(element);
-            if (checkForAnonymousType(derivedByElem))
-            {            
-// KCPort
-//            ArrayList message = new ArrayList();
-//            ErrorMessage aTask = new ErrorMessage();
-//            Node aNode = getDomHelper().getChildNode(derivedByElem, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-////////////// shall we remove the node and its children??
-////            getDomHelper().removeNodeAndWhitespace(aNode);
-//////////////
-////            if (aNode instanceof Element)
-////            {
-////              Element st = (Element)aNode;
-////             if (st instanceof NodeImpl)
-////              {
-////                aTask.setNode((NodeImpl)st);
-////              }
-////            }
-//            if (derivedByElem instanceof NodeImpl)
-//            {
-//              aTask.setModelObject(derivedByElem);
-//            }
-//            aTask.setLocalizedMessage(XSDEditorPlugin.getXSDString("_ERROR_REMOVE_LOCAL_SIMPLETYPE"));
-//            message.add(aTask);
-//            if (getEditor() != null)
-//            {
-//              getEditor().createTasksInTaskList(message);
-//            }
-            }   
-            getDomHelper().changeDerivedByType(element, (String)value, origBaseType);
-          }
-
-          
-          endRecording(element);
-//        setInput(element);
-        }
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-  }
-
-  boolean checkForAnonymousType(Element element)
-  {
-    boolean isAnonymous = false;
-
-    Node aNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-    if (aNode != null)
-     {
-      return true;
-    }
-    return isAnonymous;
-  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleRestrictPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleRestrictPropertySource.java
deleted file mode 100644
index 49124a9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleRestrictPropertySource.java
+++ /dev/null
@@ -1,327 +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.properties;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDFacet;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.impl.XSDFactoryImpl;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class SimpleRestrictPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  private String [] whiteSpaceComboChoices = { "", "preserve", "replace", "collapse" };
-  /**
-   * 
-   */
-  public SimpleRestrictPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public SimpleRestrictPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public SimpleRestrictPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    
-    SimpleContentPropertyDescriptor typeDescriptor = new SimpleContentPropertyDescriptor(
-        XSDConstants.BASE_ATTRIBUTE,
-        XSDConstants.BASE_ATTRIBUTE,
-        (Element)element.getParentNode(), xsdSchema);  // get the parent node!
-    list.add(typeDescriptor);
-    
-    Iterator facets = xsdSimpleType.getValidFacets().iterator();
-    
-    while(facets.hasNext())
-    {
-      String aValidFacet = (String)facets.next();
-      if (!(aValidFacet.equals(XSDConstants.PATTERN_ELEMENT_TAG) || aValidFacet.equals(XSDConstants.ENUMERATION_ELEMENT_TAG)))
-      {
-        if (aValidFacet.equals(XSDConstants.WHITESPACE_ELEMENT_TAG))
-        {
-          XSDComboBoxPropertyDescriptor whitespaceDescriptor = new XSDComboBoxPropertyDescriptor(
-              aValidFacet, aValidFacet, whiteSpaceComboChoices);
-          list.add(whitespaceDescriptor);
-        }
-        else
-        {  
-          list.add(new TextPropertyDescriptor(aValidFacet, aValidFacet));
-        }
-      }
-    }
-    
-    
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      if (((String) id).equals(XSDConstants.BASE_ATTRIBUTE))
-      {
-        String baseType = element.getAttribute(XSDConstants.BASE_ATTRIBUTE);
-        if (baseType == null)
-        {
-          baseType = "";
-        }
-        return baseType;
-      }
-      else
-      {
-        String aFacet = (String)id;
-        Iterator facets = xsdSimpleType.getFacets().iterator();
-        
-        while(facets.hasNext())
-        {
-          XSDFacet aValidFacet = (XSDFacet)facets.next();
-          if (aValidFacet.getFacetName().equals(aFacet))
-          {
-            result = aValidFacet.getLexicalValue();
-            if (result == null)
-            {
-              result = "";
-            }
-            return result;
-          }
-        }
-      }
-    }
-    return "";
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value != null)
-     {
-      if (value instanceof String)
-      {
-        String newValue = (String)value;
-        
-        if (((String) id).equals(XSDConstants.BASE_ATTRIBUTE))
-        {            
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element);        
-
-          Element parent = (Element)element.getParentNode();
-          if (XSDDOMHelper.inputEquals(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-          {
-//            updateElementToNotAnonymous(element);
-          }
-          getDomHelper().setSimpleContentType(element, newValue);
-          endRecording(element);
-        }
-        else
-        {
-          Element simpleTypeElement = xsdSimpleType.getElement();
-          XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
-          Element derivedByElement = xsdDOMHelper.getDerivedByElement(simpleTypeElement);
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_FACET_CHANGE"), simpleTypeElement);
-          String prefix = simpleTypeElement.getPrefix();
-          prefix = (prefix == null) ? "" : (prefix + ":");
-
-          String aFacet = (String)id;
-          XSDFactoryImpl factory = new XSDFactoryImpl();
-
-          Element childNodeElement = null;
-          DOMAttribute valueAttr = null;
-          XSDFacet facet = null;
-          if (aFacet.equals(XSDConstants.TOTALDIGITS_ELEMENT_TAG))
-          {
-            facet = xsdSimpleType.getTotalDigitsFacet();
-          }
-          else if (aFacet.equals(XSDConstants.FRACTIONDIGITS_ELEMENT_TAG))
-          {
-            facet = xsdSimpleType.getFractionDigitsFacet();
-          }
-          else if (aFacet.equals(XSDConstants.WHITESPACE_ELEMENT_TAG))
-          {
-            facet = xsdSimpleType.getWhiteSpaceFacet();
-          }
-          else if (aFacet.equals(XSDConstants.MAXEXCLUSIVE_ELEMENT_TAG))
-          {
-            facet = xsdSimpleType.getMaxExclusiveFacet();
-          }
-          else if (aFacet.equals(XSDConstants.MAXINCLUSIVE_ELEMENT_TAG))
-          {
-            facet = xsdSimpleType.getMaxInclusiveFacet();
-          }
-          else if (aFacet.equals(XSDConstants.MINEXCLUSIVE_ELEMENT_TAG))
-          {
-            facet = xsdSimpleType.getMinExclusiveFacet();
-          }
-          else if (aFacet.equals(XSDConstants.MININCLUSIVE_ELEMENT_TAG))
-          {
-            facet = xsdSimpleType.getMinInclusiveFacet();
-          }
-          else if (aFacet.equals(XSDConstants.LENGTH_ELEMENT_TAG))
-          {
-            facet = xsdSimpleType.getLengthFacet();
-          }
-          else if (aFacet.equals(XSDConstants.MAXLENGTH_ELEMENT_TAG))
-          {
-            facet = xsdSimpleType.getMaxLengthFacet();
-          }
-          else if (aFacet.equals(XSDConstants.MINLENGTH_ELEMENT_TAG))
-          {
-            facet = xsdSimpleType.getMinLengthFacet();
-          }
-          
-          if (facet != null)
-          {
-            facet.setLexicalValue(newValue);
-          }
-          else
-          {
-            facet = (XSDFacet)factory.createXSDTotalDigitsFacet();
-            childNodeElement = (derivedByElement.getOwnerDocument()).createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + aFacet);
-            valueAttr = new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, "");
-            childNodeElement.setAttribute(valueAttr.getName(), valueAttr.getValue());
-            valueAttr.setValue(newValue);
-            childNodeElement.setAttribute(valueAttr.getName(), valueAttr.getValue());  
-            element.appendChild(childNodeElement);
-          //formatChild(childNodeElement, hasChildrenElements);    
-          }
-          XSDSchemaHelper.updateElement(xsdSimpleType);
-          if (facet != null)
-          {
-            XSDSchemaHelper.updateElement(facet);
-          }
-        }
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-
-  }
-
-  protected boolean isAnonymous;
-  protected XSDSimpleTypeDefinition xsdSimpleType;
-
-  public void setInput(Element element)
-  {
-    this.element = element;
-    if (xsdSchema == null)
-    {
-      return;
-    }
-
-    isAnonymous = checkForAnonymousType(element);
-    
-    if (XSDDOMHelper.inputEquals(element, XSDConstants.RESTRICTION_ELEMENT_TAG, false))
-    {
-      Element parent = (Element)element.getParentNode();
-      if (XSDDOMHelper.inputEquals(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-      {
-        XSDConcreteComponent component = null;
-        if (parent != null)
-        {
-          component = xsdSchema.getCorrespondingComponent(parent);
-        }
-        if (component instanceof XSDSimpleTypeDefinition)
-        {
-          xsdSimpleType = (XSDSimpleTypeDefinition)component;
-        }
-      }
-
-      XSDConcreteComponent xsdConcreteComponent = null;
-      if (element.getParentNode() != null)
-      {
-        xsdConcreteComponent = xsdSchema.getCorrespondingComponent(element.getParentNode());
-      }
-
-      if (xsdConcreteComponent instanceof XSDSimpleTypeDefinition)
-      {
-        xsdSimpleType = (XSDSimpleTypeDefinition)xsdConcreteComponent;
-      }
-    }
-  }
-
-  boolean checkForAnonymousType(Element element)
-  {
-    boolean isAnonymous = false;
-
-    Node aNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-    if (aNode != null)
-    {
-      return true;
-    }
-    return isAnonymous;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeListPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeListPropertySource.java
deleted file mode 100644
index 17c4bef..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeListPropertySource.java
+++ /dev/null
@@ -1,143 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-public class SimpleTypeListPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  /**
-   * 
-   */
-  public SimpleTypeListPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public SimpleTypeListPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public SimpleTypeListPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    TypesPropertyDescriptor typeDescriptor = new TypesPropertyDescriptor(
-          XSDConstants.ITEMTYPE_ATTRIBUTE,
-          XSDConstants.ITEMTYPE_ATTRIBUTE,
-          element, xsdSchema);
-        
-    typeDescriptor.setLabelProvider(new LabelProvider()
-    {
-      public String getText(Object element)
-      {
-        return (String) element;
-      }
-    });
-    list.add(typeDescriptor);
-    
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      if (((String) id).equals(XSDConstants.ITEMTYPE_ATTRIBUTE))
-      {
-        result = element.getAttribute((String) id);
-        if (result == null)
-        {
-          result = "**anonymous**"; //$NON-NLS-1$
-        }
-        return result;
-      }
-    }
-    return ""; //$NON-NLS-1$
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value != null)
-     {
-      if (value instanceof String)
-      {
-        if (((String) id).equals(XSDConstants.ITEMTYPE_ATTRIBUTE))
-        { 
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_ITEM_TYPE_CHANGE"), element); //$NON-NLS-1$
-          element.setAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, (String)value);
-          endRecording(element);
-        }
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypePropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypePropertySource.java
deleted file mode 100644
index 12d5da9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypePropertySource.java
+++ /dev/null
@@ -1,181 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Node;
-
-public class SimpleTypePropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  private boolean isAnonymous = false;
-  /**
-   * 
-   */
-  public SimpleTypePropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public SimpleTypePropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public SimpleTypePropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    Node parent = element.getParentNode();
-    if (XSDDOMHelper.inputEquals(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(parent, XSDConstants.ELEMENT_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(parent, XSDConstants.UNION_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(parent, XSDConstants.LIST_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
-    {
-      isAnonymous = true;
-    }
-
-    List list = new ArrayList();
-    if (!isAnonymous)
-    {
-      // Create a descriptor and set a category
-      PropertyDescriptor nameDescriptor =
-      new TextPropertyDescriptor(
-          XSDConstants.NAME_ATTRIBUTE,
-          XSDConstants.NAME_ATTRIBUTE);
-      list.add(nameDescriptor);
-    }
-    else
-    {
-      PropertyDescriptor readOnly = new PropertyDescriptor(XSDConstants.NAME_ATTRIBUTE, XSDConstants.NAME_ATTRIBUTE);
-      list.add(readOnly);
-    }
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-    {
-      result = element.getAttribute((String) id);
-      if (isAnonymous)
-      {
-        result = "**anonymous**";
-      }
-    }
-    if (result == null)
-     {
-      result = "";
-    }
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = "";
-    }
-    if (value instanceof String)
-    {
-      String name = (String)value;
-      if (validateName(name))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_SIMPLETYPE_NAME_CHANGE"), element);
-        if (name != null && name.length() > 0)
-        {
-          // now rename any references to this type
-          if (xsdSchema != null)
-          {
-            XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-            if (comp != null && comp instanceof XSDSimpleTypeDefinition && comp.getContainer().equals(xsdSchema))
-            {
-//                ((XSDNamedComponent)comp).setName(name);
-              // TODO CS : revisit
-              //GlobalSimpleOrComplexTypeRenamer renamer = new GlobalSimpleOrComplexTypeRenamer((XSDNamedComponent)comp, name);
-              //renamer.visitSchema(xsdSchema);
-            }
-          }
-          element.setAttribute(XSDConstants.NAME_ATTRIBUTE, name);
-        }
-        else
-        {
-          element.setAttribute(XSDConstants.NAME_ATTRIBUTE, "");
-        }
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeUnionPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeUnionPropertySource.java
deleted file mode 100644
index d66b32c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/SimpleTypeUnionPropertySource.java
+++ /dev/null
@@ -1,492 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-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.ViewUtility;
-import org.eclipse.wst.xsd.ui.internal.widgets.TypeSection;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class SimpleTypeUnionPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  /**
-   * 
-   */
-  public SimpleTypeUnionPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public SimpleTypeUnionPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-  }
-  /**
-   * @param xsdSchema
-   */
-  public SimpleTypeUnionPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    SimpleUnionMemberTypesPropertyDescriptor typeDescriptor = new SimpleUnionMemberTypesPropertyDescriptor(
-        XSDConstants.MEMBERTYPES_ATTRIBUTE,
-        XSDConstants.MEMBERTYPES_ATTRIBUTE);
-    
-    typeDescriptor.setLabelProvider(new LabelProvider()
-        {
-      public String getText(Object element)
-      {
-        return (String) element;
-      }
-    });
-    list.add(typeDescriptor);
-    
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-     {
-      if (((String) id).equals(XSDConstants.MEMBERTYPES_ATTRIBUTE))
-       {
-        result = element.getAttribute((String) id);
-        if (result == null)
-        { 
-          result = ""; //$NON-NLS-1$
-        }
-        return result;
-      }
-    }
-    return ""; //$NON-NLS-1$
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value == null)
-    {
-      value = ""; //$NON-NLS-1$
-    }
-    
-    if (value instanceof String)
-    {
-      String newValue = (String)value;
-      if (((String) id).equals(XSDConstants.MEMBERTYPES_ATTRIBUTE))
-      { 
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES_CHANGE"), element); //$NON-NLS-1$
-        if (newValue.length() > 0)
-        {
-          element.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, (String)value);
-        }
-        else
-        {
-          element.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);  
-        }
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-
-  
-  public class SimpleUnionMemberTypesPropertyDescriptor extends PropertyDescriptor
-  {
-    /**
-     * @param id
-     * @param displayName
-     */
-    public SimpleUnionMemberTypesPropertyDescriptor(Object id, String displayName)
-    {
-      super(id, displayName);
-    }
-    
-    public CellEditor createPropertyEditor(Composite parent)
-    {
-      CellEditor editor = new SimpleTypeUnionMemberTypesDialogCellEditor(parent);
-      if (getValidator() != null)
-        editor.setValidator(getValidator());
-      return editor;
-    }
-  }
-  
-  public class SimpleTypeUnionMemberTypesDialogCellEditor extends DialogCellEditor {
-
-    /**
-     * Creates a new Font dialog cell editor parented under the given control.
-     * The cell editor value is <code>null</code> initially, and has no 
-     * validator.
-     *
-     * @param parent the parent control
-     */
-    protected SimpleTypeUnionMemberTypesDialogCellEditor(Composite parent) {
-      super(parent);
-    }
-
-    /**
-     * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control)
-     */
-    protected Object openDialogBox(Control cellEditorWindow)
-    {
-      Shell shell = Display.getCurrent().getActiveShell();
-      
-      SimpleContentUniontMemberTypesDialog dialog = new SimpleContentUniontMemberTypesDialog(shell);
-      dialog.setBlockOnOpen(true);
-      dialog.create();
-      
-      String value = (String)getValue();
-
-      int result = dialog.open();
-
-      if (result == Window.OK)
-       {
-        return dialog.getResult();
-      }
-      return value;
-    }
-
-  }
-
-  public class SimpleContentUniontMemberTypesDialog extends org.eclipse.jface.dialogs.Dialog implements SelectionListener
-  {
-    Table table;
-    TypeSection typeSection;
-    Button addButton, removeButton;
-    org.eclipse.swt.widgets.List memberTypesList;
-    
-    private String result;
-    
-    public SimpleContentUniontMemberTypesDialog(Shell shell)
-    {
-      super(shell);
-    }
-
-    protected void configureShell(Shell shell)
-    {
-      super.configureShell(shell);
-    }
-
-    protected void buttonPressed(int buttonId)
-    {
-      if (buttonId == Dialog.OK)
-      {
-        StringBuffer sb = new StringBuffer();
-        int length = memberTypesList.getItemCount();
-        for (int i=0 ; i < length; i++)
-        {
-          sb.append(memberTypesList.getItem(i));
-          if (i < length - 1)
-          {
-            sb.append(" "); //$NON-NLS-1$
-          }
-        }
-        result = sb.toString();
-      }
-      super.buttonPressed(buttonId);
-    }
-
-    public String getResult() { return result; }
-
-    //
-    // Create the controls
-    //
-    public Control createDialogArea(Composite parent)
-    {
-      Composite client = (Composite)super.createDialogArea(parent);
-      getShell().setText("Union " + XSDConstants.MEMBERTYPES_ATTRIBUTE); //$NON-NLS-1$ 
-      
-      Label instructions = new Label(client, SWT.LEFT | SWT.WRAP);
-      instructions.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_SELECT_MEMBERTYPES")); //$NON-NLS-1$
-      
-      Composite columnsComposite = new Composite(client, SWT.NONE);
-      GridLayout ccGL = new GridLayout();
-      ccGL.verticalSpacing = 0;
-      ccGL.horizontalSpacing = 0;
-      ccGL.marginHeight = 0;
-      ccGL.marginWidth = 0;
-      ccGL.makeColumnsEqualWidth = true;
-      ccGL.numColumns = 3;
-      columnsComposite.setLayout(ccGL);
-      
-      GridData ccGD = new GridData();
-      ccGD.grabExcessHorizontalSpace = true;
-      ccGD.horizontalAlignment = GridData.FILL;
-      columnsComposite.setLayoutData(ccGD);     
-                             
-      typeSection = new TypeSection(columnsComposite);
-      typeSection.setShowUserComplexType(false);
-
-      typeSection.createClient(columnsComposite);
-      typeSection.getSimpleType().setSelection(false);
-      typeSection.getSimpleType().addSelectionListener(this);
-      typeSection.getUserSimpleType().addSelectionListener(this);
-      
-      ViewUtility.createHorizontalFiller(columnsComposite, 1);
-      
-      Label memberListLabel = new Label(columnsComposite, SWT.LEFT);
-      memberListLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES_VALUE")); //$NON-NLS-1$  
-      
-      Composite dataComposite = new Composite(client, SWT.NONE);
-      GridLayout dcGL = new GridLayout();
-      dcGL.verticalSpacing = 0;
-      dcGL.marginHeight = 0;
-      dcGL.marginWidth = 0;
-      dcGL.numColumns = 3;
-      dataComposite.setLayout(dcGL);
-      
-      GridData dcGD = new GridData();
-      dcGD.grabExcessHorizontalSpace = true;
-      dcGD.grabExcessVerticalSpace = true;
-      dataComposite.setLayoutData(dcGD);
-      
-      table = new Table(dataComposite,
-          SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); 
-      table.setHeaderVisible(false);
-      table.setLinesVisible(true);
-      GridData gd2 = new GridData();
-      gd2.grabExcessHorizontalSpace = true;
-      gd2.grabExcessVerticalSpace = true;
-      gd2.horizontalAlignment = GridData.FILL;
-      gd2.verticalAlignment = GridData.FILL;
-      gd2.heightHint = 200;
-      gd2.widthHint = 200;
-      table.setLayoutData(gd2);
-
-      // Fill table
-      handleSetInput();
-      table.getItemCount();
-
-      TableColumn tc = new TableColumn(table, SWT.LEFT);
-//      tc.setImage(XSDEditorPlugin.getXSDImage("icons/XSDElement.gif"));
-      //tc.setText("Available types:");
-      tc.setWidth(200);
-      tc.setResizable(true);
-      
-      Composite buttonComposite = new Composite(dataComposite, SWT.NONE);
-      GridLayout bcGL = new GridLayout();
-      bcGL.numColumns = 1;
-      buttonComposite.setLayout(bcGL);
-      addButton = new Button(buttonComposite, SWT.PUSH);
-      addButton.setText(">"); //$NON-NLS-1$
-      addButton.addSelectionListener(this);
-      removeButton = new Button(buttonComposite, SWT.PUSH);
-      removeButton.setText("<"); //$NON-NLS-1$
-      removeButton.addSelectionListener(this);
-      
-      Composite listComposite = new Composite(dataComposite, SWT.NONE);
-      GridLayout mtGL = new GridLayout();
-      mtGL.numColumns = 1;
-      mtGL.marginHeight = 0;
-      mtGL.marginWidth = 0;
-      mtGL.horizontalSpacing = 0;
-      mtGL.verticalSpacing = 0;
-      listComposite.setLayout(mtGL);
-
-      GridData mtGD = new GridData();
-      mtGD.grabExcessHorizontalSpace = true;
-      mtGD.grabExcessVerticalSpace = true;
-      mtGD.verticalAlignment = GridData.FILL;
-      mtGD.horizontalAlignment = GridData.FILL;
-      listComposite.setLayoutData(mtGD);
-      
-      memberTypesList = new org.eclipse.swt.widgets.List(listComposite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
-      GridData mtlGD = new GridData();
-      mtlGD.grabExcessHorizontalSpace = true;
-      mtlGD.grabExcessVerticalSpace = true;
-      mtlGD.verticalAlignment = GridData.FILL;
-      mtlGD.horizontalAlignment = GridData.FILL;
-      mtlGD.heightHint = 200;
-      mtlGD.widthHint = 200;
-      memberTypesList.setLayoutData(mtlGD);
-      
-      initializeMemberListContent();
-      return client;
-    }
-
-    private void initializeMemberListContent()
-    {
-      String result = element.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
-      if (result == null)
-      {
-        return;
-      }
-      StringTokenizer token = new StringTokenizer(result);
-      while (token.hasMoreTokens())
-      {
-        memberTypesList.add(token.nextToken());
-      }
-    }
-  
-    public void widgetSelected(SelectionEvent e)
-    {
-      if (e.widget == typeSection.getSimpleType() && typeSection.getSimpleType().getSelection())
-       {
-        populateBuiltInType();
-      }
-      else if (e.widget == typeSection.getUserSimpleType() && typeSection.getUserSimpleType().getSelection())
-       {
-        populateUserSimpleType(false);
-      }
-      else if (e.widget == addButton)
-      {
-        TableItem[] items = table.getItems();
-        int selection = table.getSelectionIndex();
-        if (items != null && items.length > 0 && selection >= 0)
-        {
-          String typeToAdd = items[selection].getData().toString();
-          if (memberTypesList.indexOf(typeToAdd) < 0)
-          {
-            memberTypesList.add(items[selection].getData().toString());
-          }
-        }
-      }
-      else if (e.widget == removeButton)
-      {
-        String[] typesToRemove = memberTypesList.getSelection();
-        for (int i=0; i < typesToRemove.length; i++)
-        {
-          memberTypesList.remove(typesToRemove[i]);
-        }
-      }
-    }
-    
-    public void widgetDefaultSelected(SelectionEvent e)
-    {
-    }
-    
-    public void handleSetInput()
-    {
-      populateBuiltInType();
-    }
-    
-    public void populateBuiltInType()
-    {
-      table.removeAll();
-      List items = getBuiltInTypeNamesList();
-      for (int i = 0; i < items.size(); i++)
-       {
-        TableItem item = new TableItem(table, SWT.NONE);
-        item.setText(items.get(i).toString());
-        item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif")); //$NON-NLS-1$
-        item.setData(items.get(i));
-      }
-    }
-
-    public void populateUserSimpleType(boolean showAnonymous)
-    {
-      table.removeAll();
-      if (showAnonymous)
-       {
-        TableItem anonymousItem = new TableItem(table, SWT.NONE);
-        anonymousItem.setText("**anonymous**"); //$NON-NLS-1$
-        anonymousItem.setData("**anonymous**"); //$NON-NLS-1$
-      }
-      List items = getUserSimpleTypeNamesList();
-      for (int i = 0; i < items.size(); i++)
-       {
-        TableItem item = new TableItem(table, SWT.NONE);
-        item.setText(items.get(i).toString());
-        item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif")); //$NON-NLS-1$
-        item.setData(items.get(i));
-      }
-    }
-    
-    public java.util.List getBuiltInTypeNamesList()
-    {
-      TypesHelper helper = new TypesHelper(xsdSchema);
-      return helper.getBuiltInTypeNamesList();
-    }
-
-    public java.util.List getUserSimpleTypeNamesList()
-    {
-      TypesHelper helper = new TypesHelper(xsdSchema);
-      return helper.getUserSimpleTypeNamesList();
-    }
-  }
-  
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/TypesPropertyDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/TypesPropertyDescriptor.java
deleted file mode 100644
index 961be94..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/TypesPropertyDescriptor.java
+++ /dev/null
@@ -1,1144 +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.properties;
-
-import java.util.List;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.DialogCellEditor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.events.ShellAdapter;
-import org.eclipse.swt.events.ShellEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-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.TypeSection;
-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.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class TypesPropertyDescriptor extends PropertyDescriptor
-{
-  Element element;
-  XSDSchema xsdSchema;
-  String property;
-  /**
-   * @param id
-   * @param displayName
-   */
-  public TypesPropertyDescriptor(Object id, String displayName, Element element, XSDSchema xsdSchema)
-  {
-    super(id, displayName);
-    this.property = (String)id;
-    this.element = element;
-    this.xsdSchema = xsdSchema;
-  }
-  
-  boolean showComplexTypes = true;
-
-  public CellEditor createPropertyEditor(Composite parent)
-  {
-    if (XSDDOMHelper.inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-    {
-      showComplexTypes = true;
-    }
-    else if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false) ||
-      XSDDOMHelper.inputEquals(element, XSDConstants.LIST_ELEMENT_TAG, false) ||
-      XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
-    {
-      showComplexTypes = false;
-    }
-    // CellEditor editor = new TypesOptionsTextCellEditor(parent);
-    CellEditor editor = new TypesDialogCellEditor(parent);
-    if (getValidator() != null)
-      editor.setValidator(getValidator());
-    return editor;
-  }
-
-  
-  public class TypesDialogCellEditor extends DialogCellEditor
-  {
-
-    /**
-     * Creates a new Font dialog cell editor parented under the given control.
-     * The cell editor value is <code>null</code> initially, and has no 
-     * validator.
-     *
-     * @param parent the parent control
-     */
-    protected TypesDialogCellEditor(Composite parent)
-    {
-      super(parent);
-    }
-
-    protected Object openDialogBox(Control cellEditorWindow)
-    {
-	    Shell shell = Display.getCurrent().getActiveShell();
-	    
-	    TypesDialog dialog = new TypesDialog(shell);
-
-	    dialog.setBlockOnOpen(true);
-	    dialog.create();
-	    
-	    String value = (String)getValue();
-	
-	    int result = dialog.open();
-	    
-	    if (result == Window.OK)
-	    {
-	      value = dialog.getType();
-        doSetValue(value);
-        fireApplyEditorValue();
-	    }
-	    deactivate();
-	    return null;
-	  }
-  }
-
-  public class TypesDialog extends org.eclipse.jface.dialogs.Dialog implements SelectionListener
-  {
-    String type;
-    Object typeObject;
-    Table table;
-
-    TypeSection typeSection;
-    boolean showAnonymous = true;
-    String previousStringType = "";
-    boolean isAnonymous;
-    int previousType;
-
-    
-    public TypesDialog(Shell shell)
-    {
-      super(shell);
-    }
-
-    protected void configureShell(Shell shell)
-    {
-      super.configureShell(shell);
-    }
-
-    protected void buttonPressed(int buttonId)
-    {
-      if (buttonId == Dialog.OK)
-      {
-        type = table.getItem(table.getSelectionIndex()).getText();
-        ok();
-      }
-      super.buttonPressed(buttonId);
-    }
-
-    public Object getTypeObject() { return typeObject; }
-    public String getType() { return type; }
-
-    //
-    // Create the controls
-    //
-    public Control createDialogArea(Composite parent)
-    {
-      Composite client = (Composite)super.createDialogArea(parent);
-      getShell().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_AVAILABLE_TYPES"));
-
-      typeObject = null;
-      
-      GridLayout gl = new GridLayout(1, true);
-      client.setLayout(gl);
-
-      GridData gd = new GridData();
-      gd.grabExcessHorizontalSpace = true;
-      gd.grabExcessVerticalSpace = true;
-      gd.horizontalAlignment = GridData.FILL;
-      gd.verticalAlignment = GridData.FILL;
-      gd.horizontalIndent = 0;
-      client.setLayoutData(gd);
-      
-      typeSection = new TypeSection(client);
-      typeSection.setShowUserComplexType(showComplexTypes);
-
-      typeSection.createClient(client);
-      typeSection.getSimpleType().setSelection(false);
-      typeSection.getSimpleType().addSelectionListener(this);
-      typeSection.getUserSimpleType().addSelectionListener(this);
-      if (showComplexTypes)
-      {
-        typeSection.getUserComplexType().addSelectionListener(this);
-      }
-
-      table = new Table(client,
-                        SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL); 
-      table.setHeaderVisible(false);
-      table.setLinesVisible(true);
-      
-      GridData gd2 = new GridData();
-      gd2.grabExcessHorizontalSpace = true;
-      gd2.grabExcessVerticalSpace = true;
-      gd2.horizontalAlignment = GridData.FILL;
-      gd2.heightHint = 200;
-      table.setLayoutData(gd2);
-
-      TableColumn tableColumn = new TableColumn(table, SWT.LEFT);
-//      tableColumn.setImage(XSDEditorPlugin.getXSDImage("icons/XSDElement.gif"));
-      tableColumn.setResizable(true);
-      tableColumn.setWidth(200);
-      
-
-      // Fill table and select input type
-      handleSetInput();
-
-      return client;
-    }
-    
-    public void widgetSelected(SelectionEvent e)
-    {
-      if (e.widget == typeSection.getSimpleType() && typeSection.getSimpleType().getSelection())
-      {
-        populateBuiltInType();
-      }
-      else if (e.widget == typeSection.getUserComplexType() && typeSection.getUserComplexType().getSelection())
-      {
-        populateUserComplexType();
-      }
-      else if (e.widget == typeSection.getUserSimpleType() && typeSection.getUserSimpleType().getSelection())
-      {
-        populateUserSimpleType();
-      }
-
-    }
-    
-  	public void widgetDefaultSelected(SelectionEvent e)
-    {
-    }
-
-    protected void ok()
-    {
-      TableItem[] items = table.getItems();
-      int selection = table.getSelectionIndex();
-      if (items != null && items.length > 0 && selection >= 0)
-      {
-        typeObject = items[selection].getData();
-      }
-//      System.out.println("typeObject is " + typeObject);
-
-//      beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_TYPE_CHANGE"), element);
-//      beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element);
-//      doSetValue(typeObject);
-//      applyEditorValueAndDeactivate();
-//      dialog.close();
-
-      if (!XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
-      {
-      if (typeObject.equals("**anonymous**"))
-      {
-        if (typeSection.getUserSimpleType().getSelection())
-        {
-          if (!previousStringType.equals("**anonymous**"))
-          {
-            updateElementToAnonymous(
-              element,
-              XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-          }
-        }
-        else
-        {
-          if (!previousStringType.equals("**anonymous**"))
-          {
-            updateElementToAnonymous(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-          }
-        }
-        // element.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
-        element.removeAttribute(property);
-      }
-      else
-      {
-        updateElementToNotAnonymous(element);
-        //element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, typeObject.toString());
-        element.setAttribute(property, typeObject.toString());
-      }
-      }
-//      endRecording(element);
-
-      //implement dispose();
-//      table.removeAll();
-//      table.dispose();
-    }
-
-  	
-    public void handleSetInput()
-    {
-      table.removeAll();
-      isAnonymous = checkForAnonymousType(element);
-      // Attr attr = element.getAttributeNode(XSDConstants.TYPE_ATTRIBUTE);
-      Attr attr = element.getAttributeNode(property);
-      if (attr != null)
-      {
-        String value = attr.getValue();
-        if (typeSection.getBuiltInTypeNamesList(xsdSchema).contains(value))
-        {
-          typeSection.getSimpleType().setSelection(true);
-          populateBuiltInType();
-          int i = typeSection.getBuiltInTypeNamesList(xsdSchema).indexOf(value);
-          table.setSelection(i);
-          previousType = 1;
-        }
-        else if (typeSection.getUserSimpleTypeNamesList(xsdSchema).contains(value))
-        {
-          typeSection.getUserSimpleType().setSelection(true);
-          populateUserSimpleType();
-          int i = typeSection.getUserSimpleTypeNamesList(xsdSchema).indexOf(value);
-          if (showAnonymous)
-          {
-            table.setSelection(i + 1);
-          }
-          else
-          {
-            table.setSelection(i);
-          }
-          previousType = 2;
-        }
-        else if (typeSection.getUserComplexTypeNamesList(xsdSchema).contains(value))
-        {
-          typeSection.getUserComplexType().setSelection(true);
-          populateUserComplexType();
-          int i = typeSection.getUserComplexTypeNamesList(xsdSchema).indexOf(value);
-          if (showAnonymous)
-           {
-            table.setSelection(i + 1);
-          }
-          else
-           {
-            table.setSelection(i);
-          }
-          previousType = 3;
-        }
-        else // if it is type="" for an empty list of simple types
-          {
-          typeSection.getUserSimpleType().setSelection(true);
-          populateUserSimpleType();
-          previousType = 2;
-        }
-      }
-      else
-      {
-        if (isAnonymous)
-        {
-          if (isSTAnonymous(element))
-          {
-            typeSection.getUserSimpleType().setSelection(true);
-            populateUserSimpleType();
-            previousType = 2;
-          }
-          else
-          {
-            typeSection.getUserComplexType().setSelection(true);
-            populateUserComplexType();
-            previousType = 3;
-          }
-          table.setSelection(0); // anonymous
-          //        typeSection.getTypeList().setText("**anonymous**");
-        }
-        else
-        {
-          typeSection.getSimpleType().setSelection(true);
-          populateBuiltInType();
-          table.setSelection(0);
-          
-          //        typeSection.getTypeList().setEnabled(true);
-          //        typeSection.getSimpleType().setSelection(true);
-          //        typeSection.populateBuiltInType(xsdSchema);
-          //        typeSection.getTypeList().setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE"));
-          previousType = 1;
-        }
-      }
-      if (table.getSelection() != null && table.getSelection().length > 0)
-      {
-        previousStringType = (table.getSelection()[0]).getText();
-      }
-    }
-    
-    public void populateBuiltInType()
-    {
-      table.removeAll();
-      List items = getBuiltInTypeNamesList();
-      for (int i = 0; i < items.size(); i++)
-      {
-        TableItem item = new TableItem(table, SWT.NONE);
-        item.setText(items.get(i).toString());
-        item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
-        item.setData(items.get(i));
-      }
-    }
-
-    public void populateUserComplexType()
-    {
-      table.removeAll();
-      if (showAnonymous)
-      {
-        TableItem anonymousItem = new TableItem(table, SWT.NONE);
-        anonymousItem.setText("**anonymous**");
-        anonymousItem.setData("**anonymous**");
-      }
-      List items = getUserComplexTypeNamesList();
-      for (int i = 0; i < items.size(); i++)
-      {
-        TableItem item = new TableItem(table, SWT.NONE);
-//        System.out.println("item " + i + " is " + item);
-        item.setText(items.get(i).toString());
-        item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif"));
-        item.setData(items.get(i));
-      }
-    }
-
-    public void populateUserSimpleType()
-    {
-      table.removeAll();
-      if (showAnonymous)
-       {
-        TableItem anonymousItem = new TableItem(table, SWT.NONE);
-        anonymousItem.setText("**anonymous**");
-        anonymousItem.setData("**anonymous**");
-      }
-      List items = getUserSimpleTypeNamesList();
-      for (int i = 0; i < items.size(); i++)
-       {
-        TableItem item = new TableItem(table, SWT.NONE);
-        item.setText(items.get(i).toString());
-        item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
-        item.setData(items.get(i));
-      }
-    }
-
-    boolean checkForAnonymousType(Element element)
-    {
-      /*
-       * Using Ed's model to check boolean isAnonymous = false;
-       * 
-       * XSDConcreteComponent component =
-       * getXSDSchema().getCorrespondingComponent(element); if (component
-       * instanceof XSDElementDeclaration) { XSDElementDeclaration xsdElem =
-       * (XSDElementDeclaration)component; isAnonymous =
-       * xsdElem.isSetAnonymousTypeDefinition(); } return isAnonymous;
-       */
-      XSDDOMHelper helper = new XSDDOMHelper();
-      boolean isAnonymous = false;
-      Node aNode =
-      helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      if (aNode != null)
-       {
-        return true;
-      }
-      aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-      if (aNode != null)
-       {
-        isAnonymous = true;
-      }
-      return isAnonymous;
-    }
-
-    void updateElementToAnonymous(Element element, String xsdType)
-    {
-      String prefix = element.getPrefix();
-      prefix = (prefix == null) ? "" : (prefix + ":");
-      updateElementToNotAnonymous(element);
-      Element childNode = null;
-      if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-       {
-        childNode = element.getOwnerDocument().createElementNS(
-            XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001,
-            prefix + XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-      }
-      else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG))
-       {
-        childNode =
-        element.getOwnerDocument().createElementNS(
-            XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001,
-            prefix + XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      }
-      element.appendChild(childNode);
-    }
-
-    boolean isSTAnonymous(Element element)
-    {
-      XSDDOMHelper helper = new XSDDOMHelper();
-      Node aNode =
-      helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      if (aNode != null)
-       {
-        if (XSDDOMHelper
-            .inputEquals(aNode, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-         {
-          return true;
-        }
-      }
-      return false;
-    }
-
-    boolean isCTAnonymous(Element element)
-    {
-      XSDDOMHelper helper = new XSDDOMHelper();
-      Node aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-      if (aNode != null)
-       {
-        if (XSDDOMHelper.inputEquals(aNode, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-         {
-          return true;
-        }
-      }
-      return false;
-    }
-
-    XSDTypeDefinition getAnonymousTypeDefinition(Element element)
-    {
-      XSDDOMHelper helper = new XSDDOMHelper();
-      Node typeDefinitionNode =
-      helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      if (typeDefinitionNode == null)
-       {
-        typeDefinitionNode =
-        helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-      }
-      if (typeDefinitionNode != null)
-       {
-        XSDConcreteComponent component =
-        xsdSchema.getCorrespondingComponent(typeDefinitionNode);
-        if (component instanceof XSDTypeDefinition)
-         {
-          return (XSDTypeDefinition) component;
-        }
-      }
-      return null;
-    }
-
-    void updateElementToNotAnonymous(Element element)
-    {
-      if (element != null)
-      {
-	      NodeList children = element.getChildNodes();
-	      if (children != null)
-	       {
-	        for (int i = 0; i < children.getLength(); i++)
-	         {
-	          Node node = (Node) children.item(i);
-	          if (node instanceof Element)
-	           {
-	            if (node.getLocalName().equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG)
-	                || node.getLocalName().equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-	             {
-	              XSDDOMHelper.removeNodeAndWhitespace(node);
-	              i = 0;
-	            }
-	          }
-	        }
-	      }
-      }
-    }
-
-    public java.util.List getBuiltInTypeNamesList()
-    {
-      TypesHelper helper = new TypesHelper(xsdSchema);
-      return helper.getBuiltInTypeNamesList();
-    }
-
-    public java.util.List getUserSimpleTypeNamesList()
-    {
-      TypesHelper helper = new TypesHelper(xsdSchema);
-      return helper.getUserSimpleTypeNamesList();
-    }
-    
-    public java.util.List getUserComplexTypeNamesList()
-    {
-      TypesHelper helper = new TypesHelper(xsdSchema);
-      return helper.getUserComplexTypeNamesList();
-    }
-    
-	  protected boolean hasElementChildren(Node parentNode)
-	  {
-	    boolean hasChildrenElements = false;
-	    if (parentNode != null && parentNode.hasChildNodes())
-	    {
-	      NodeList nodes = parentNode.getChildNodes();
-	      for (int i = 0; i < nodes.getLength(); i++)
-	      {
-	        if (nodes.item(i) instanceof Element)
-	        {
-	          hasChildrenElements = true;
-	          break;
-	        }
-	      }
-	    }
-	    return hasChildrenElements;
-	  }
-
-  }
-
-  
-  
-  
-  
-  
-  
-  
-  class TypesOptionsTextCellEditor extends OptionsTextCellEditor
-  {
-    boolean showAnonymous = true;
-    
-    public TypesOptionsTextCellEditor(Composite parent)
-    {
-      super(parent);
-    }
-
-    protected Control createControl(Composite parent)
-    {
-      isTextReadOnly = true;
-      return super.createControl(parent);
-    }
-
-    Table table;
-    TypeSection typeSection;
-
-    protected void openDialog()
-    {
-      typeObject = null;
-      dialog = new Shell(XSDEditorPlugin.getPlugin().getWorkbench().getActiveWorkbenchWindow().getShell(), SWT.MODELESS);
-      Display display = dialog.getDisplay();
-      GridLayout gl = new GridLayout(1, true);
-      gl.marginHeight = 0;
-      gl.marginWidth = 0;
-      gl.horizontalSpacing = 0;
-      gl.verticalSpacing = 0;
-      dialog.setLayout(gl);
-      GridData gd = new GridData();
-      gd.grabExcessHorizontalSpace = true;
-      gd.grabExcessVerticalSpace = true;
-      gd.horizontalAlignment = GridData.FILL;
-      gd.verticalAlignment = GridData.FILL;
-      gd.horizontalIndent = 0;
-      dialog.setLayoutData(gd);
-
-      
-      
-      typeSection = new TypeSection(dialog);
-      typeSection.setShowUserComplexType(showComplexTypes);
-
-      typeSection.createClient(dialog);
-      typeSection.getSimpleType().setSelection(false);
-      typeSection.getSimpleType().addSelectionListener(this);
-      typeSection.getUserSimpleType().addSelectionListener(this);
-      if (showComplexTypes)
-      {
-        typeSection.getUserComplexType().addSelectionListener(this);
-      }
-
-      table = new Table(dialog,
-                        SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL); 
-      table.setHeaderVisible(false);
-      table.setLinesVisible(true);
-      GridData gd2 = new GridData();
-      gd2.grabExcessHorizontalSpace = true;
-      gd2.grabExcessVerticalSpace = true;
-      gd2.horizontalAlignment = GridData.FILL;
-      gd2.verticalAlignment = GridData.FILL;
-      table.setLayoutData(gd2);
-
-      // Fill table and select input type
-      handleSetInput();
-
-      TableColumn tc = new TableColumn(table, SWT.LEFT);
-      tc.setImage(XSDEditorPlugin.getXSDImage("icons/XSDElement.gif"));
-      tc.setResizable(false);
-
-      int MAX_ITEMS = 23;
-      Rectangle tableBounds = table.getBounds();
-      tableBounds.height = Math.min(tableBounds.height, table.getItemHeight()*MAX_ITEMS);
-      table.setBounds(tableBounds);
-      dialog.pack();
-      
-      dialog.addShellListener(new ShellAdapter()
-      {
-        public void shellDeactivated(ShellEvent e)
-        {
-          cancel();
-        }
-      });
-
-      Rectangle dialogBounds = dialog.getBounds();
-      Point buttonLocation = getButtonAbsoluteLocation();
-      dialogBounds.x = buttonLocation.x;
-      dialogBounds.y = buttonLocation.y;
-
-      if (dialogBounds.height > 200)
-      {        
-        dialogBounds.height = 200;
-      }
-      if (dialogBounds.height < 100)
-      {
-        dialogBounds.height = 200;
-      }
-      if (dialogBounds.width > 200)
-      {
-        dialogBounds.width = typeSection.getUserComplexType().getBounds().width + 30;
-      }
-      dialog.setBounds(dialogBounds);
-      tc.setWidth(dialogBounds.width);
-
-      table.addKeyListener(new KeyAdapter()
-      {
-        public void keyPressed(KeyEvent e)
-        {
-          char character = e.character;
-          if (character == SWT.CR || character == SWT.LF)
-            ok();
-          else if (character == SWT.ESC)
-            cancel();
-        }
-      });
-
-      table.addMouseListener(new MouseAdapter()
-      {
-        public void mouseDoubleClick(MouseEvent e)
-        {
-          ok();
-        }
-        public void mouseDown(MouseEvent e)
-        {
-          ok();
-        }
-      });
-
-      try
-      {
-        dialog.open();
-        table.setFocus();
-        table.showSelection();
-        
-        while (!dialog.isDisposed())
-        {
-          if (!display.readAndDispatch())
-          {
-            display.sleep();
-          }
-        }
-      }
-      finally
-      {
-        if (!dialog.isDisposed())
-          cancel();
-      }
-    }
-    
-    public void widgetSelected(SelectionEvent e)
-    {
-      if (e.widget == typeSection.getSimpleType() && typeSection.getSimpleType().getSelection())
-      {
-        populateBuiltInType();
-      }
-      else if (e.widget == typeSection.getUserComplexType() && typeSection.getUserComplexType().getSelection())
-      {
-        populateUserComplexType();
-      }
-      else if (e.widget == typeSection.getUserSimpleType() && typeSection.getUserSimpleType().getSelection())
-      {
-        populateUserSimpleType();
-      }
-    }
-    
-    protected void cancel()
-    {
-      super.cancel();
-      table.dispose();
-    }
-
-    protected void ok()
-    {
-      TableItem[] items = table.getItems();
-      selection = table.getSelectionIndex();
-      if (items != null && items.length > 0 && selection >= 0)
-      {
-        typeObject = items[selection].getData();
-      }
-//      System.out.println("typeObject is " + typeObject);
-
-//      beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_TYPE_CHANGE"), element);
-//      beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element);
-      doSetValue(typeObject);
-      applyEditorValueAndDeactivate();
-      dialog.close();
-
-      if (!XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
-      {
-      if (typeObject.equals("**anonymous**"))
-      {
-        if (typeSection.getUserSimpleType().getSelection())
-        {
-          if (!previousStringType.equals("**anonymous**"))
-          {
-            updateElementToAnonymous(
-              element,
-              XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-          }
-        }
-        else
-        {
-          if (!previousStringType.equals("**anonymous**"))
-          {
-            updateElementToAnonymous(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-          }
-        }
-        // element.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
-        element.removeAttribute(property);
-      }
-      else
-      {
-        updateElementToNotAnonymous(element);
-        //element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, typeObject.toString());
-        element.setAttribute(property, typeObject.toString());
-      }
-      }
-//      endRecording(element);
-
-      //implement dispose();
-      table.removeAll();
-      table.dispose();
-    }
-
-    String previousStringType = "";
-    boolean isAnonymous;
-    int previousType;
-
-    public void handleSetInput()
-    {
-      table.removeAll();
-      isAnonymous = checkForAnonymousType(element);
-      // Attr attr = element.getAttributeNode(XSDConstants.TYPE_ATTRIBUTE);
-      Attr attr = element.getAttributeNode(property);
-      if (attr != null)
-      {
-        String value = attr.getValue();
-        if (typeSection.getBuiltInTypeNamesList(xsdSchema).contains(value))
-        {
-          typeSection.getSimpleType().setSelection(true);
-          populateBuiltInType();
-          int i = typeSection.getBuiltInTypeNamesList(xsdSchema).indexOf(value);
-          table.setSelection(i);
-          previousType = 1;
-        }
-        else if (typeSection.getUserSimpleTypeNamesList(xsdSchema).contains(value))
-        {
-          typeSection.getUserSimpleType().setSelection(true);
-          populateUserSimpleType();
-          int i = typeSection.getUserSimpleTypeNamesList(xsdSchema).indexOf(value);
-          if (showAnonymous)
-          {
-            table.setSelection(i + 1);
-          }
-          else
-          {
-            table.setSelection(i);
-          }
-          previousType = 2;
-        }
-        else if (typeSection.getUserComplexTypeNamesList(xsdSchema).contains(value))
-        {
-          typeSection.getUserComplexType().setSelection(true);
-          populateUserComplexType();
-          int i = typeSection.getUserComplexTypeNamesList(xsdSchema).indexOf(value);
-          if (showAnonymous)
-           {
-            table.setSelection(i + 1);
-          }
-          else
-           {
-            table.setSelection(i);
-          }
-          previousType = 3;
-        }
-        else // if it is type="" for an empty list of simple types
-          {
-          typeSection.getUserSimpleType().setSelection(true);
-          populateUserSimpleType();
-          previousType = 2;
-        }
-      }
-      else
-      {
-        if (isAnonymous)
-        {
-          if (isSTAnonymous(element))
-          {
-            typeSection.getUserSimpleType().setSelection(true);
-            populateUserSimpleType();
-            previousType = 2;
-          }
-          else
-          {
-            typeSection.getUserComplexType().setSelection(true);
-            populateUserComplexType();
-            previousType = 3;
-          }
-          table.setSelection(0); // anonymous
-          //        typeSection.getTypeList().setText("**anonymous**");
-        }
-        else
-        {
-          typeSection.getSimpleType().setSelection(true);
-          populateBuiltInType();
-          table.setSelection(0);
-          
-          //        typeSection.getTypeList().setEnabled(true);
-          //        typeSection.getSimpleType().setSelection(true);
-          //        typeSection.populateBuiltInType(xsdSchema);
-          //        typeSection.getTypeList().setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE"));
-          previousType = 1;
-        }
-      }
-      if (table.getSelection() != null && table.getSelection().length > 0)
-      {
-        previousStringType = (table.getSelection()[0]).getText();
-      }
-    }
-    
-    public void populateBuiltInType()
-    {
-      table.removeAll();
-      List items = getBuiltInTypeNamesList();
-      for (int i = 0; i < items.size(); i++)
-      {
-        TableItem item = new TableItem(table, SWT.NONE);
-        item.setText(items.get(i).toString());
-        item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
-        item.setData(items.get(i));
-      }
-    }
-
-    public void populateUserComplexType()
-    {
-      table.removeAll();
-      if (showAnonymous)
-      {
-        TableItem anonymousItem = new TableItem(table, SWT.NONE);
-        anonymousItem.setText("**anonymous**");
-        anonymousItem.setData("**anonymous**");
-      }
-      List items = getUserComplexTypeNamesList();
-      for (int i = 0; i < items.size(); i++)
-      {
-        TableItem item = new TableItem(table, SWT.NONE);
-//        System.out.println("item " + i + " is " + item);
-        item.setText(items.get(i).toString());
-        item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif"));
-        item.setData(items.get(i));
-      }
-    }
-
-    public void populateUserSimpleType()
-    {
-      table.removeAll();
-      if (showAnonymous)
-       {
-        TableItem anonymousItem = new TableItem(table, SWT.NONE);
-        anonymousItem.setText("**anonymous**");
-        anonymousItem.setData("**anonymous**");
-      }
-      List items = getUserSimpleTypeNamesList();
-      for (int i = 0; i < items.size(); i++)
-       {
-        TableItem item = new TableItem(table, SWT.NONE);
-        item.setText(items.get(i).toString());
-        item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
-        item.setData(items.get(i));
-      }
-    }
-
-    boolean checkForAnonymousType(Element element)
-    {
-      /*
-       * Using Ed's model to check boolean isAnonymous = false;
-       * 
-       * XSDConcreteComponent component =
-       * getXSDSchema().getCorrespondingComponent(element); if (component
-       * instanceof XSDElementDeclaration) { XSDElementDeclaration xsdElem =
-       * (XSDElementDeclaration)component; isAnonymous =
-       * xsdElem.isSetAnonymousTypeDefinition(); } return isAnonymous;
-       */
-      XSDDOMHelper helper = new XSDDOMHelper();
-      boolean isAnonymous = false;
-      Node aNode =
-      helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      if (aNode != null)
-       {
-        return true;
-      }
-      aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-      if (aNode != null)
-       {
-        isAnonymous = true;
-      }
-      return isAnonymous;
-    }
-
-    void updateElementToAnonymous(Element element, String xsdType)
-    {
-      String prefix = element.getPrefix();
-      prefix = (prefix == null) ? "" : (prefix + ":");
-      updateElementToNotAnonymous(element);
-      Element childNode = null;
-      if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-       {
-        childNode = element.getOwnerDocument().createElementNS(
-            XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001,
-            prefix + XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-      }
-      else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG))
-       {
-        childNode =
-        element.getOwnerDocument().createElementNS(
-            XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001,
-            prefix + XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      }
-      element.appendChild(childNode);
-    }
-
-    boolean isSTAnonymous(Element element)
-    {
-      XSDDOMHelper helper = new XSDDOMHelper();
-      Node aNode =
-      helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      if (aNode != null)
-       {
-        if (XSDDOMHelper
-            .inputEquals(aNode, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-         {
-          return true;
-        }
-      }
-      return false;
-    }
-
-    boolean isCTAnonymous(Element element)
-    {
-      XSDDOMHelper helper = new XSDDOMHelper();
-      Node aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-      if (aNode != null)
-       {
-        if (XSDDOMHelper.inputEquals(aNode, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-         {
-          return true;
-        }
-      }
-      return false;
-    }
-
-    XSDTypeDefinition getAnonymousTypeDefinition(Element element)
-    {
-      XSDDOMHelper helper = new XSDDOMHelper();
-      Node typeDefinitionNode =
-      helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      if (typeDefinitionNode == null)
-       {
-        typeDefinitionNode =
-        helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-      }
-      if (typeDefinitionNode != null)
-       {
-        XSDConcreteComponent component =
-        xsdSchema.getCorrespondingComponent(typeDefinitionNode);
-        if (component instanceof XSDTypeDefinition)
-         {
-          return (XSDTypeDefinition) component;
-        }
-      }
-      return null;
-    }
-
-    void updateElementToNotAnonymous(Element element)
-    {
-      NodeList children = element.getChildNodes();
-      if (children != null)
-       {
-        for (int i = 0; i < children.getLength(); i++)
-         {
-          Node node = (Node) children.item(i);
-          if (node instanceof Element)
-           {
-            if (node.getLocalName().equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG)
-                || node.getLocalName().equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-             {
-              XSDDOMHelper.removeNodeAndWhitespace(node);
-              i = 0;
-            }
-          }
-        }
-      }
-    }
-
-    public java.util.List getBuiltInTypeNamesList()
-    {
-      TypesHelper helper = new TypesHelper(xsdSchema);
-      return helper.getBuiltInTypeNamesList();
-    }
-
-    public java.util.List getUserSimpleTypeNamesList()
-    {
-      TypesHelper helper = new TypesHelper(xsdSchema);
-      return helper.getUserSimpleTypeNamesList();
-    }
-    
-    public java.util.List getUserComplexTypeNamesList()
-    {
-      TypesHelper helper = new TypesHelper(xsdSchema);
-      return helper.getUserComplexTypeNamesList();
-    }
-    
-	  protected boolean hasElementChildren(Node parentNode)
-	  {
-	    boolean hasChildrenElements = false;
-	    if (parentNode != null && parentNode.hasChildNodes())
-	    {
-	      NodeList nodes = parentNode.getChildNodes();
-	      for (int i = 0; i < nodes.getLength(); i++)
-	      {
-	        if (nodes.item(i) instanceof Element)
-	        {
-	          hasChildrenElements = true;
-	          break;
-	        }
-	      }
-	    }
-	    return hasChildrenElements;
-	  }
-
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XPathPropertySource.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XPathPropertySource.java
deleted file mode 100644
index 829dc16..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XPathPropertySource.java
+++ /dev/null
@@ -1,149 +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.properties;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.views.properties.IPropertyDescriptor;
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-import org.eclipse.ui.views.properties.TextPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-
-
-public class XPathPropertySource
-  extends BasePropertySource
-  implements IPropertySource
-{
-  /**
-   * 
-   */
-  public XPathPropertySource()
-  {
-    super();
-  }
-  /**
-   * @param viewer
-   * @param xsdSchema
-   */
-  public XPathPropertySource(Viewer viewer, XSDSchema xsdSchema)
-  {
-    super(viewer, xsdSchema);
-// From Field     
-// WorkbenchHelp.setHelp(comp, XSDEditorContextIds.XSDE_UNIQUE_BASE_FIELDS_GROUP);
-//    fieldField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_FIELD_TEXT"));
-//    WorkbenchHelp.setHelp(fieldField, XSDEditorContextIds.XSDE_UNIQUE_BASE_SOURCE);
-
-// From Selector
-// WorkbenchHelp.setHelp(comp, XSDEditorContextIds.XSDE_UNIQUE_BASE_SELECTOR_GROUP);
-// WorkbenchHelp.setHelp(selectorField, XSDEditorContextIds.XSDE_UNIQUE_BASE_SELECTOR);
-// selectorField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_SELECTOR_TEXT"));
-    
-  }
-  /**
-   * @param xsdSchema
-   */
-  public XPathPropertySource(XSDSchema xsdSchema)
-  {
-    super(xsdSchema);
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
-   */
-  public Object getEditableValue()
-  {
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
-   */
-  public IPropertyDescriptor[] getPropertyDescriptors()
-  {
-    List list = new ArrayList();
-    // Create a descriptor and set a category
-    PropertyDescriptor xpathDescriptor =
-    new TextPropertyDescriptor(
-        XSDConstants.XPATH_ATTRIBUTE,
-        XSDConstants.XPATH_ATTRIBUTE);
-    list.add(xpathDescriptor);
-
-    IPropertyDescriptor[] result = new IPropertyDescriptor[list.size()];
-    list.toArray(result);
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
-   */
-  public Object getPropertyValue(Object id)
-  {
-    Object result = null;
-    if (id instanceof String)
-     {
-      result = element.getAttribute((String) id);
-    }
-    if (result == null)
-     {
-      result = "";
-    }
-    return result;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
-   */
-  public boolean isPropertySet(Object id)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
-   */
-  public void resetPropertyValue(Object id)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)
-   */
-  public void setPropertyValue(Object id, Object value)
-  {
-    if (value != null)
-     {
-      if (value instanceof String)
-      {
-        if (XSDDOMHelper.inputEquals(element, XSDConstants.FIELD_ELEMENT_TAG, false))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_FIELD_XPATH_CHANGE"), element);
-        }
-        else if (XSDDOMHelper.inputEquals(element, XSDConstants.SELECTOR_ELEMENT_TAG, false))
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_SELECTOR_XPATH_CHANGE"), element);
-        }
-        
-        element.setAttribute(XSDConstants.XPATH_ATTRIBUTE, (String)value);
-        endRecording(element);
-      }
-    }
-    Runnable delayedUpdate = new Runnable()
-    {
-      public void run()
-      {
-        if (viewer != null)
-          viewer.refresh();
-      }
-    };
-    Display.getCurrent().asyncExec(delayedUpdate);
-    
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDComboBoxPropertyDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDComboBoxPropertyDescriptor.java
deleted file mode 100644
index 1bcfb2d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDComboBoxPropertyDescriptor.java
+++ /dev/null
@@ -1,303 +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.properties;
-
-import java.text.MessageFormat;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.PopupList;
-import org.eclipse.swt.events.FocusAdapter;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.KeyAdapter;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.views.properties.PropertyDescriptor;
-
-public class XSDComboBoxPropertyDescriptor extends PropertyDescriptor
-{
-	private String[] values;
-	
-	public XSDComboBoxPropertyDescriptor(Object id, String displayName, String[] valuesArray) {
-		super(id, displayName);
-		values = valuesArray;
-	}
-	/**
-	 * The <code>ComboBoxPropertyDescriptor</code> implementation of this 
-	 * <code>IPropertyDescriptor</code> method creates and returns a new
-	 * <code>ComboBoxCellEditor</code>.
-	 * <p>
-	 * The editor is configured with the current validator if there is one.
-	 * </p>
-	 */
-	public CellEditor createPropertyEditor(Composite parent) {
-    CellEditor editor = new XSDComboBoxCellEditor(parent, values);
-    //CellEditor editor = new StringComboBoxCellEditor(parent, values);
-		if (getValidator() != null)
-			editor.setValidator(getValidator());
-		return editor;
-	}
-	
-	public class XSDComboBoxCellEditor extends CellEditor
-	{
-		DynamicCellEditor comboBox;
-
-		private String fSelection;
-		protected String[] fItems;
-		protected Object fValue;
-		int selection;
-		Object typeObject;
-		
-		public void createItems(String[] items)
-		{
-			fItems = items;
-		}
-
-		public String[] getComboBoxItems()
-		{
-			return fItems;
-		}
-
-	/**
-	 * Creates a new combo box cell editor with the given choices.
-	 */
-		 public XSDComboBoxCellEditor(Composite parent, String[] items)
-		 {
-			 super(parent);
-			 fSelection = "";
-			 setItems(items);
-//			 fText.setText("");
-		 }
-
-		public void activate() {
-      if (doGetValue() != null)
-      {
-//			  int i = ((Integer)doGetValue()).intValue();
-//			  if (i >= 0)
-//		  	{
-//		  	  comboBox.setText(fItems[i]);
-//		  	}
-        comboBox.setText((String)fValue);
-			}
-		}
-
-		public void deactivate() {
-		  super.deactivate();
-		}
-
-		public void setItems(String[] items) {
-			Assert.isNotNull(items);
-			this.fItems = items;
-			populateComboBoxItems();
-		}
-
-		private void populateComboBoxItems() {
-			if (comboBox != null && fItems != null) {
-				comboBox.removeAll();
-				for (int i = 0; i < fItems.length; i++)
-					comboBox.add(fItems[i], i);
-
-				setValueValid(true);
-				selection = 0;
-			}
-		}
-
-	/**
-	 * Creates the actual UI representation.
-	 */
-
-		protected Control createControl(Composite parent)
-		{
-			comboBox = new DynamicCellEditor(parent, SWT.READ_ONLY |SWT.NONE | SWT.NO_TRIM);
-			comboBox.addKeyListener(new KeyAdapter() {
-				// hook key pressed - see PR 14201  
-				public void keyPressed(KeyEvent e) {
-//					System.out.println("Key e " + e);
-					keyReleaseOccured(e);
-				}
-			});
-
-			comboBox.addSelectionListener(new SelectionAdapter() {
-				public void widgetDefaultSelected(SelectionEvent event) {
-				}
-		
-				public void widgetSelected(SelectionEvent event) {
-//				  System.out.println("combo selected");
-					selection = comboBox.getSelectionIndex();
-					if (!comboBox.isDropped()) // allows user to traverse list using keyboard without applying value
-					applyEditorValueAndDeactivate();
-				}
-			});
-
-			comboBox.addTraverseListener(new TraverseListener() {
-				public void keyTraversed(TraverseEvent e) {
-//				  System.out.println("TRAVERSE e " + e);
-					if (e.detail == SWT.TRAVERSE_ESCAPE || e.detail == SWT.TRAVERSE_RETURN) {
-						e.doit = false;
-					}
-				}
-			});
-			
-      
-			comboBox.addFocusListener(new FocusAdapter() {
-				public void focusLost(FocusEvent e) {
-					XSDComboBoxCellEditor.this.focusLost();
-				}
-				public void focusGained(FocusEvent e) {
-//				  System.out.println("focusGained");
-				}
-			});
-		  setValueValid(true);
-			return comboBox;
-		}
-
-		protected void focusLost() {
-//		  System.out.println("CELLEDITOR FOCUS LOST");
-			if (isActivated()) {
-				applyEditorValueAndDeactivate();
-			}
-		}
-		
-		protected void keyReleaseOccured(KeyEvent keyEvent) {
-			if (keyEvent.character == '\u001b') { // Escape character
-			  comboBox.setText(""); // clear text
-				fireCancelEditor();
-			} else if (keyEvent.character == '\r') { // Return key
-				//fireApplyEditorValue();
-				applyEditorValueAndDeactivate();
-				deactivate();
-			}
-		}
-
-		void applyEditorValueAndDeactivate() {
-			//	must set the selection before getting value
-			selection = comboBox.getSelectionIndex();
-			if (selection < 0)
-			{
-			  deactivate();
-			  return;
-			}
-			// Object newValue = new Integer(selection);
-      Object newValue = fItems[selection];
-			markDirty();
-			boolean isValid = isCorrect(newValue);
-			setValueValid(isValid);
-			if (!isValid) {
-				// try to insert the current value into the error message.
-				setErrorMessage(
-					MessageFormat.format(getErrorMessage(), new Object[] {fItems[selection]})); 
-			}
-			doSetValue(newValue);
-			fireApplyEditorValue();
-			deactivate();
-		}
-
-    protected Object doGetValue() {
-      return fValue;
-      // otherwise limits to set of valid values
-//      Object index = super.doGetValue();
-//      int selection = -1;
-//      if (index instanceof Integer)
-//        selection = ((Integer) index).intValue();
-//      if (selection >= 0)
-//        return fItems[selection];
-//      else if (getControl() instanceof CCombo) {
-//        // retrieve the actual text as the list of valid items doesn't contain the value
-//        return ((CCombo) getControl()).getText();
-//      }
-//      return null;
-    }
-    private boolean fSettingValue = false;
-    protected void doSetValue(Object value) {
-      if (fSettingValue)
-        return;
-      fSettingValue = true;
-      if (value instanceof Integer) {
-        //super.doSetValue(value);
-        fValue = value;
-      }
-      else {
-        String stringValue = value.toString();
-        int selection = -1;
-        for (int i = 0; i < fItems.length; i++)
-          if (fItems[i].equals(stringValue))
-            selection = i;
-        if (selection >= 0)
-          //super.doSetValue(new Integer(selection));
-          fValue = stringValue;
-        else {
-          // super.doSetValue(new Integer(-1));
-          // fValue = new Integer(-1);
-          fValue = stringValue;
-          if (getControl() instanceof CCombo && !stringValue.equals(((CCombo) getControl()).getText())) {
-            // update the Text widget
-            ((CCombo) getControl()).setText(stringValue);
-          }
-        }
-      }
-      fSettingValue = false;
-    }		
-		
-	/**
-		* Returns the cell editor's value.
-		*/
-//		protected Object doGetValue() 
-//		{
-//			return fValue;
-//		}
-
-	/**
-	 * Set the focus to the cell editor's UI representation.
-	 */
-		protected void doSetFocus()
-		{
-//			fButton.setFocus();
-//      System.out.println("doSetFocus() " + moreButton.setFocus());
-      comboBox.setFocus();
-		}
-
-	/**
-	 * Sets the value of the cell editor to the given value.
-	 */
-//		protected void doSetValue(Object value)
-//		{
-//			fValue = value;
-//		}
-
-		protected void fillPopupList(PopupList list) 
-		{
-			String[] labels= new String[fItems.length];
-			for (int i= 0; i < labels.length; i++)
-			{
-				String item= fItems[i];
-				labels[i]= item;
-//				System.out.println(fItems[i]);
-				if (fSelection == null && fValue != null && fValue.equals(item)) 
-				{
-					fSelection = item;
-				}
-			}
-
-			list.setItems(labels);
-			if (fSelection != null) 
-			{
-//				fText.setText(fSelection);
-				list.select(fSelection);
-			}	
-		}
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDPropertySourceProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDPropertySourceProvider.java
deleted file mode 100644
index 78e790b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/XSDPropertySourceProvider.java
+++ /dev/null
@@ -1,285 +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.properties;
-
-import org.eclipse.ui.views.properties.IPropertySource;
-import org.eclipse.ui.views.properties.IPropertySourceProvider;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class XSDPropertySourceProvider implements IPropertySourceProvider
-{
-  XSDSchema xsdSchema;
-  /**
-   * 
-   * @todo Generated comment
-   */
-  public XSDPropertySourceProvider()
-  {
-    super();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.ui.views.properties.IPropertySourceProvider#getPropertySource(java.lang.Object)
-   */
-  public IPropertySource getPropertySource(Object object)
-  {
-    if (object == null) return null;
-    
-    if (object instanceof XSDConcreteComponent)
-    {
-      XSDConcreteComponent component = (XSDConcreteComponent)object;
-      
-      xsdSchema = component.getSchema();
-      
-      if (component instanceof XSDElementDeclaration)
-      {
-        XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)component;
-        if (elementDeclaration.isElementDeclarationReference())
-        {
-          component = elementDeclaration.getResolvedElementDeclaration();
-        }
-      }
-      
-      Element input = component.getElement(); 
-      
-      BasePropertySource bps = (BasePropertySource)getXSDPropertySource(input);
-      if (bps == null) return null;
-      
-      bps.setInput(input);
-      return bps;
-    }
-    return null;
-  }
-  
-  boolean showParent = false;
-  
-  public IPropertySource getXSDPropertySource(Object object)
-  {
-    Element input = (Element)object;
-
-    showParent = false;
-  
-    if (inputEquals(input, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-    {
-      return new ElementPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.ELEMENT_ELEMENT_TAG, true))
-    {
-      return new GroupRefPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.SEQUENCE_ELEMENT_TAG, false) ||
-              inputEquals(input, XSDConstants.CHOICE_ELEMENT_TAG, false) ||
-              inputEquals(input, XSDConstants.ALL_ELEMENT_TAG, false))
-    {
-      return new ModelGroupPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
-    {
-      return new AttributePropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true))
-    {
-      return new AttributeGroupRefPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false))
-    {
-      return new NamePropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true))
-    {
-      return new AttributeGroupRefPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.NOTATION_ELEMENT_TAG, false))
-    {
-      return new NotationPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-    {
-      return new SimpleTypePropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.GROUP_ELEMENT_TAG, false))
-    {
-      return new NamePropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.GROUP_ELEMENT_TAG, true))
-    {
-      return new GroupRefPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.SCHEMA_ELEMENT_TAG, false))
-    {
-      return new SchemaPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-    {
-      return new ComplexTypePropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.DOCUMENTATION_ELEMENT_TAG, false))
-    {
-      return new DocumentationPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.APPINFO_ELEMENT_TAG, false))
-    {
-      return new AppInfoPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
-    {
-      if (input != null && input instanceof Element)
-      {
-        Element parent = (Element)input;
-        XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
-        Element derivedByNode = xsdDOMHelper.getDerivedByElement(parent);
-        if (derivedByNode != null)
-        {
-          if (inputEquals(derivedByNode, XSDConstants.RESTRICTION_ELEMENT_TAG, false) || 
-              inputEquals(derivedByNode, XSDConstants.EXTENSION_ELEMENT_TAG, false))
-          {
-            return new SimpleContentPropertySource(xsdSchema);
-          }
-        }
-        else
-        {
-          return null;
-        }
-      }
-    }
-    else if (inputEquals(input, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-    {
-      if (input != null && input instanceof Element)
-      {
-        Element parent = (Element)input;
-        XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
-        Element derivedByNode = xsdDOMHelper.getDerivedByElement(parent);
-        if (derivedByNode != null)
-        {
-          return new SimpleContentPropertySource(xsdSchema);
-        }
-        else
-        {
-          return null;
-        }
-      }
-    }
-    else if (inputEquals(input, XSDConstants.LIST_ELEMENT_TAG, false))
-    {
-      return new SimpleTypeListPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.UNION_ELEMENT_TAG, false))
-    {
-      return new SimpleTypeUnionPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.RESTRICTION_ELEMENT_TAG, false))
-    {
-      return createRestrictWindow(input, xsdSchema);
-    }
-    else if (XSDDOMHelper.isFacet(input))
-    {
-      if (input != null && input instanceof Element)
-      {
-        Node parent = ((Element)input).getParentNode();
-        if (inputEquals(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false))
-        {
-          return createRestrictWindow(input, xsdSchema);
-        } 
-      }
-    }
-    else if (inputEquals(input, XSDConstants.EXTENSION_ELEMENT_TAG, false))
-    {
-      if (input != null && input instanceof Element)
-      {
-        Node parent = ((Element)input).getParentNode();
-        if (inputEquals(parent, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false)
-            || inputEquals(parent, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
-        {
-          showParent = true;
-          return new SimpleContentPropertySource(xsdSchema);
-        }
-      }
-    }
-    else if (inputEquals(input, XSDConstants.PATTERN_ELEMENT_TAG, false))
-    {
-      return new PatternPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.ENUMERATION_ELEMENT_TAG, false))
-    {
-      return new EnumerationPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.ANY_ELEMENT_TAG, false))
-    {
-      return new AnyElementPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false))
-    {
-      return new AnyAttributePropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.UNIQUE_ELEMENT_TAG, false))
-    {
-      return new NamePropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.KEYREF_ELEMENT_TAG, false))
-    {
-      return new KeyrefPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.SELECTOR_ELEMENT_TAG, false))
-    {
-      return new XPathPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.FIELD_ELEMENT_TAG, false))
-    {
-      return new XPathPropertySource(xsdSchema);
-    }
-    else if (inputEquals(input, XSDConstants.KEY_ELEMENT_TAG, false))
-    {
-      return new NamePropertySource(xsdSchema);
-    }
-    else
-    {
-      return null;
-    }
-    return null;
-  }
-
-  protected IPropertySource createRestrictWindow(Object input, XSDSchema xsdSchema)
-  {
-    // special case where SimpleType restriction is different than SimpleContent restriction
-
-    if (input != null && input instanceof Element)
-    {
-      Node parent = ((Element)input).getParentNode();
-      if (inputEquals(parent, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-      {
-        return new SimpleRestrictPropertySource(xsdSchema);
-      }
-      else if (inputEquals(parent, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
-      {
-        return new SimpleRestrictPropertySource(xsdSchema);
-      }
-      else if (inputEquals(parent, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-      {
-        showParent = true;
-        return new SimpleContentPropertySource(xsdSchema);
-      }
-    }
-    return null;
-  }
-
-
-  protected boolean inputEquals(Object input, String tagname, boolean isRef)
-  {
-    return XSDDOMHelper.inputEquals(input, tagname, isRef);
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSection.java
deleted file mode 100644
index d96ec4b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AbstractSection.java
+++ /dev/null
@@ -1,494 +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.properties.section;
-
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.part.EditorActionBarContributor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xml.core.internal.provisional.NameValidator;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateElementAction;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-//import org.apache.xerces.util.XMLChar;
-
-public class AbstractSection implements ISection, IPropertyChangeListener, Listener, SelectionListener
-{
-    private TabbedPropertySheetWidgetFactory factory;
-    protected IWorkbenchPart part;
-    protected ISelection selection;
-    protected Object input;
-  protected boolean doRefresh = true;
-    XSDSchema xsdSchema;
-  protected boolean isReadOnly = false;
-  private IStatusLineManager statusLine;
-  protected Composite composite;
-  protected int rightMarginSpace;
-  protected int tableMinimumWidth = 50;
- 
-  /**
-   * 
-   */
-  public AbstractSection()
-  {
-    super();
-  }
-  
-  public void createControls(Composite parent,  TabbedPropertySheetPage tabbedPropertySheetPage)
-  {
-    createControls(parent, tabbedPropertySheetPage.getWidgetFactory());
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-   */
-  public void createControls(Composite parent, TabbedPropertySheetWidgetFactory aFactory)
-  {
-        this.factory = aFactory;
-    GC gc = new GC(parent);
-    Point extent = gc.textExtent("  ...  ");
-    rightMarginSpace = extent.x;
-    gc.dispose();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#setInput(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public void setInput(IWorkbenchPart part, ISelection selection)
-  {
-        Assert.isTrue(selection instanceof IStructuredSelection);
-        this.part = part;
-        this.selection = selection;
-        Object input = ((IStructuredSelection)selection).getFirstElement();
-    this.input = input;
-    
-    if (input instanceof XSDConcreteComponent)
-    {
-      xsdSchema = ((XSDConcreteComponent)input).getSchema();
-      
-      Element element = ((XSDConcreteComponent)input).getElement();
-      if (element instanceof IDOMNode)
-      {
-        isReadOnly = false;
-      }
-      else
-      {
-        isReadOnly = true;
-      }
-    }
-    statusLine = getStatusLine();
-    clearErrorMessage();
-
-//      refresh();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#aboutToBeShown()
-   */
-  public void aboutToBeShown()
-  {
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#aboutToBeHidden()
-   */
-  public void aboutToBeHidden()
-  {
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#dispose()
-   */
-  public void dispose()
-  {
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#getMinimumHeight()
-   */
-  public int getMinimumHeight()
-  {
-    return SWT.DEFAULT;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
-   */
-  public boolean shouldUseExtraSpace()
-  {
-    return false;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#refresh()
-   */
-  public void refresh()
-  {
-  }
-
-  public Object getInput()
-  {
-    if (input instanceof Element)
-    {
-      input = xsdSchema.getCorrespondingComponent((Element)input);
-    }
-    return input;
-  }
-  
-  public XSDSchema getSchema()
-  {
-    return xsdSchema;
-  }
-  
-    /**
-     * Get the widget factory.
-     * @return the widget factory.
-     */
-    public TabbedPropertySheetWidgetFactory getWidgetFactory() {
-        return factory;
-    }
-
-    public void propertyChange(PropertyChangeEvent event)
-    {
-    refresh();
-    }
-
-    
-  public void doWidgetDefaultSelected(SelectionEvent e)
-  {}
-  
-  public void doWidgetSelected(SelectionEvent e)
-  {}
-  
-  /**
-   * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(SelectionEvent)
-   */
-  public void widgetDefaultSelected(SelectionEvent e)
-  {
-    if (isListenerEnabled() &&
-        getInput() != null &&
-        !isInDoHandle &&
-        !isReadOnly) 
-    {
-      isInDoHandle = true;
-      doWidgetDefaultSelected(e);
-      isInDoHandle = false;
-    }
-    
-  }
-
-  /**
-   * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
-   */
-  public void widgetSelected(SelectionEvent e)
-  {
-    if (isListenerEnabled() &&
-        getInput() != null &&
-        !isInDoHandle &&
-        !isReadOnly) 
-    {
-      isInDoHandle = true;
-      doWidgetSelected(e);
-      isInDoHandle = false;
-    }
-    
-  }
-  
-  boolean listenerEnabled = true;
-  /**
-   * Get the value of listenerEnabled.
-   * @return value of listenerEnabled.
-   */
-  public boolean isListenerEnabled() 
-  {
-    return listenerEnabled;
-  }
-  
-  /**
-   * Set the value of listenerEnabled.
-   * @param v  Value to assign to listenerEnabled.
-   */
-  public void setListenerEnabled(boolean  v) 
-  {
-    this.listenerEnabled = v;
-  }
-
-  public void handleEvent(Event event)
-  {
-    if (isListenerEnabled() && !isInDoHandle && !isReadOnly) 
-    {
-      isInDoHandle = true;
-      startDelayedEvent(event);
-      isInDoHandle = false;
-    } // end of if ()
-  }
-  
-  public void doHandleEvent(Event event)
-  {
-    
-  }
-  
-  protected DelayedEvent delayedTask;
-  
-  protected void startDelayedEvent(Event e)
-  {
-    if (delayedTask == null ||
-      delayedTask.getEvent() == null)
-    {
-      delayedTask = new DelayedEvent();
-      delayedTask.setEvent(e);
-      Display.getDefault().timerExec(500,delayedTask);
-    }
-    else
-    {
-      Event delayedEvent = delayedTask.getEvent();
-      
-      if (e.widget == delayedEvent.widget &&
-        e.type == delayedEvent.type)
-      {
-        // same event, just different data, delay new event
-        delayedTask.setEvent(null);
-      }
-      delayedTask = new DelayedEvent();
-      delayedTask.setEvent(e);
-      Display.getDefault().timerExec(500,delayedTask);
-    }
-  }
-  
-  class DelayedEvent implements Runnable
-  {
-    protected Event event;
-    
-    /*
-     * @see Runnable#run()
-     */
-    public void run()
-    {
-      if (event != null)
-      {
-        isInDoHandle = true;
-        doHandleEvent(event);
-        isInDoHandle = false;
-        event = null;
-      }
-    }
-    
-    /**
-     * Gets the event.
-     * @return Returns a Event
-     */
-    public Event getEvent()
-    {
-      return event;
-    }
-
-    /**
-     * Sets the event.
-     * @param event The event to set
-     */
-    public void setEvent(Event event)
-    {
-      this.event = event;
-    }
-
-  }
-
-  boolean isInDoHandle;
-  /**
-   * Get the value of isInDoHandle.
-   * @return value of isInDoHandle.
-   */
-  public boolean isInDoHandle() 
-  {
-    return isInDoHandle;
-  }
-
-  
-  protected IEditorPart getActiveEditor()
-  {
-    IWorkbench workbench = XSDEditorPlugin.getPlugin().getWorkbench();
-    IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
-    IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
-//    IEditorPart editorPart = part.getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
-
-    return editorPart;
-  }
-
-  static protected IStatusLineManager getStatusLineManager(IEditorPart editorPart)
-  { 
-    IStatusLineManager result = null;
-    try
-    {                       
-      EditorActionBarContributor contributor = (EditorActionBarContributor)editorPart.getEditorSite().getActionBarContributor();
-      result = contributor.getActionBars().getStatusLineManager();
-    }
-    catch (Exception e)
-    {
-    }  
-    return result;
-  }
-
-  protected XSDDOMHelper domHelper = new XSDDOMHelper();
-  /**
-   * Gets the domHelper.
-   * @return Returns a XSDDomHelper
-   */
-  public XSDDOMHelper getDomHelper()
-  {
-    return domHelper;
-  }
-  
-  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);    
-  }
-
-  protected boolean validateName(String name)
-  {
-    try
-    {
-      return NameValidator.isValid(name);
-    }
-    catch (Exception e)
-    {
-      return false;
-    }
-  }
-
-  // TODO
-  protected boolean validateLanguage(String lang)
-  {
-    return true;
-  }
-
-  protected boolean validatePrefix(String prefix)
-  {
-    return true;//XMLChar.isValidNCName(prefix);
-  }
-
-  
-  protected Action getNewElementAction(String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    CreateElementAction action = new CreateElementAction(label);
-    action.setElementTag(elementTag);
-    action.setAttributes(attributes);
-    action.setParentNode(parent);
-    action.setRelativeNode(relativeNode);
-    action.setXSDSchema(getSchema());
-    action.setSelectionProvider(null);
-    return action;
-  }
-
-  public void setErrorMessage(String message)
-  {
-    if (statusLine != null)
-    {
-      statusLine.setErrorMessage(message);
-      statusLine.update(true);
-    }
-  }
-
-  public void clearErrorMessage()
-  {
-    if (statusLine != null)
-    {
-      statusLine.setErrorMessage(null);
-      statusLine.update(false);
-    }
-  }
-
-  EditorActionBarContributor contributor;
-  protected IStatusLineManager getStatusLine()
-  {
-//    IWorkbench workbench = XSDEditorPlugin.getPlugin().getWorkbench();
-//    IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
-    IEditorPart editorPart = part.getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
-    
-    if (statusLine == null)
-    {
-      try
-      {                       
-        contributor = (EditorActionBarContributor)editorPart.getEditorSite().getActionBarContributor();
-        statusLine = contributor.getActionBars().getStatusLineManager();
-      }
-      catch (Exception e)
-      {
-      }  
-    }
-    return statusLine;
-  }
-  
-  /**
-   * Get the standard label width when labels for sections line up on the left
-   * hand side of the composite. We line up to a fixed position, but if a
-   * string is wider than the fixed position, then we use that widest string.
-   * 
-   * @param parent
-   *            The parent composite used to create a GC.
-   * @param labels
-   *            The list of labels.
-   * @return the standard label width.
-   */
-  protected int getStandardLabelWidth(Composite parent, String[] labels) {
-    int standardLabelWidth = 100;   // STANDARD_LABEL_WIDTH;
-    GC gc = new GC(parent);
-    int indent = gc.textExtent("XXX").x; //$NON-NLS-1$
-    for (int i = 0; i < labels.length; i++) {
-      int width = gc.textExtent(labels[i]).x;
-      if (width + indent > standardLabelWidth) {
-        standardLabelWidth = width + indent;
-      }
-    }
-    gc.dispose();
-    return standardLabelWidth;
-  }
-
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSection.java
deleted file mode 100644
index e756ea7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSection.java
+++ /dev/null
@@ -1,592 +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.properties.section;
-
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDAnnotation;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFacet;
-import org.eclipse.xsd.XSDFactory;
-import org.eclipse.xsd.XSDIdentityConstraintDefinition;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDRedefine;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.XSDXPathDefinition;
-import org.eclipse.xsd.impl.XSDFactoryImpl;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.CharacterData;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class AnnotationSection extends AbstractSection
-{
-  DocumentationWorkbookPage documentationPage;
-  AppInfoWorkbookPage appInfoPage;
-  XSDWorkbook workbook;
-  XSDFactory factory;
-  
-  /**
-   * 
-   */
-  public AnnotationSection()
-  {
-    super();
-    factory = new XSDFactoryImpl();
-  }
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-      super.createControls(parent, factory);
-
-      workbook = new XSDWorkbook(parent, SWT.BOTTOM | SWT.FLAT);
-    
-      documentationPage = new DocumentationWorkbookPage(workbook);
-      appInfoPage = new AppInfoWorkbookPage(workbook);
-
-      documentationPage.activate();
-      appInfoPage.activate();
-      workbook.setSelectedPage(documentationPage);
-    }
-
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-    if (doRefresh)
-    {
-      if (documentationPage.getDocumentationText().isFocusControl() || appInfoPage.getAppInfoText().isFocusControl())
-      {
-        return;
-      }
-      
-      if (isReadOnly)
-      {
-        documentationPage.setEnabled(false);
-        appInfoPage.setEnabled(false);
-      }
-      else
-      {
-        documentationPage.setEnabled(true);
-        appInfoPage.setEnabled(true);
-      }
-      setListenerEnabled(false);
-	    Object input = getInput();
-	    if (input != null)
-	    {
-	      XSDAnnotation xsdAnnotation = getInputXSDAnnotation(false);
-        setInitialText(xsdAnnotation);
-      }
-      setListenerEnabled(true);
-	  }
-	}
-
-  
-  public void doHandleEvent(Event event)
-  {
-    Object input = getInput();
-    if (input != null)
-    {
-      XSDAnnotation xsdAnnotation = getInputXSDAnnotation(true);
-  
-      if (event.widget == documentationPage.getDocumentationText())
-      {
-        documentationPage.doHandleEvent(xsdAnnotation);
-      }
-      else if (event.widget == appInfoPage.getAppInfoText())
-      {
-        appInfoPage.doHandleEvent(xsdAnnotation);
-      }
-    }
-    
-  }
-  
-  protected XSDAnnotation getInputXSDAnnotation(boolean createIfNotExist)
-  {
-    XSDAnnotation xsdAnnotation = null;
-    
-    if (input instanceof XSDAttributeDeclaration)
-    {
-      XSDAttributeDeclaration xsdComp = (XSDAttributeDeclaration)input; 
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDAttributeGroupDefinition)
-    {
-      XSDAttributeGroupDefinition xsdComp = (XSDAttributeGroupDefinition)input;
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDElementDeclaration)
-    {
-      XSDElementDeclaration xsdComp = (XSDElementDeclaration)input; 
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDNotationDeclaration)
-    {
-      XSDNotationDeclaration xsdComp =(XSDNotationDeclaration)input;
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDXPathDefinition)
-    {
-      XSDXPathDefinition xsdComp = (XSDXPathDefinition)input;
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDModelGroup)
-    {
-      XSDModelGroup xsdComp = (XSDModelGroup)input;
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDModelGroupDefinition)
-    {
-      XSDModelGroupDefinition xsdComp = (XSDModelGroupDefinition)input;
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDIdentityConstraintDefinition)
-    {
-      XSDIdentityConstraintDefinition xsdComp = (XSDIdentityConstraintDefinition)input;
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDWildcard)
-    {
-      XSDWildcard xsdComp = (XSDWildcard)input;
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDSchema)
-    {
-      XSDSchema xsdComp = (XSDSchema)input;
-      List list = xsdComp.getAnnotations();
-      if (list.size() > 0)
-      {
-        xsdAnnotation = (XSDAnnotation)list.get(0);
-      }
-      else
-      {
-        if (createIfNotExist && xsdAnnotation == null)
-        {
-          xsdAnnotation = factory.createXSDAnnotation();
-          if (xsdComp.getContents() != null)
-          {
-            xsdComp.getContents().add(0, xsdAnnotation);
-          }
-        }
-      }
-      return xsdAnnotation;
-    }
-    else if (input instanceof XSDFacet)
-    {
-      XSDFacet xsdComp = (XSDFacet)input;
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDTypeDefinition)
-    {
-      XSDTypeDefinition xsdComp = (XSDTypeDefinition)input;
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDInclude)
-    {
-      XSDInclude xsdComp = (XSDInclude)input;
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDImport)
-    {
-      XSDImport xsdComp = (XSDImport)input;
-      xsdAnnotation = xsdComp.getAnnotation();
-      if (createIfNotExist && xsdAnnotation == null)
-      {
-        xsdAnnotation = factory.createXSDAnnotation();
-        xsdComp.setAnnotation(xsdAnnotation);
-      }
-    }
-    else if (input instanceof XSDRedefine)
-    {
-      XSDRedefine xsdComp = (XSDRedefine)input;
-      List list = xsdComp.getAnnotations();
-      if (list.size() > 0)
-      {
-        xsdAnnotation = (XSDAnnotation)list.get(0);
-      }
-      else
-      {
-        if (createIfNotExist && xsdAnnotation == null)
-        {
-// ?
-        }
-      }
-      return xsdAnnotation;
-    }
-    else if (input instanceof XSDAnnotation)
-    {
-      xsdAnnotation = (XSDAnnotation)input;
-    }
-    
-    if (createIfNotExist)
-    {
-      formatAnnotation(xsdAnnotation);
-    }
-
-    return xsdAnnotation;
-  }
-  
-  private void formatAnnotation(XSDAnnotation annotation)
-  {
-    Element element = annotation.getElement();
-    XSDDOMHelper.formatChild(element);
-  }
-  
-
-  public boolean shouldUseExtraSpace()
-  {
-    return true;
-  }
-
-  public void dispose()
-  {
-    factory = null;
-  }
-  
-  private void setInitialText(XSDAnnotation an)
-  {
-    if (documentationPage != null)
-    {
-      documentationPage.setText(""); //$NON-NLS-1$
-    }
-    if (appInfoPage != null)
-    {
-      appInfoPage.setText(""); //$NON-NLS-1$
-    }
-
-    if (an != null)
-    {
-      Element element = an.getElement();
-      try
-      {
-        if (element.hasChildNodes())
-         {
-          // if the element is Text
-          Element docElement = (Element)domHelper.getChildNode(element, XSDConstants.DOCUMENTATION_ELEMENT_TAG);
-          if (docElement != null)
-          {
-            Node node = docElement.getFirstChild();
-            if (node instanceof CharacterData)
-            {
-              documentationPage.setText( ((CharacterData)node).getData());
-            }
-          }
-          
-          Element appInfoElement = (Element)domHelper.getChildNode(element, XSDConstants.APPINFO_ELEMENT_TAG);
-          if (appInfoElement != null)
-          {
-            Node node = appInfoElement.getFirstChild();
-            if (node instanceof CharacterData)
-            {
-              appInfoPage.setText( ((CharacterData)node).getData());
-            }
-          }
-
-        }
-      }
-      catch (Exception e)
-      {
-        
-      }
-    }
-  }
-  
- 
-  class DocumentationWorkbookPage extends XSDWorkbookPage
-  {
-    Text documentationText;
-    Composite page1;
-    
-    public DocumentationWorkbookPage(XSDWorkbook workbook)
-    {
-      super(workbook);
-      this.getTabItem().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_DOCUMENTATION")); 
-    }
-
-    public void setText(String value)
-    {
-      documentationText.setText(value);
-    }
-    
-    public void setEnabled(boolean state)
-    {
-      page1.setEnabled(state);
-    }
-    
-    public String getText()
-    {
-      return documentationText.getText();
-    }
-    
-    public Text getDocumentationText()
-    {
-      return documentationText;
-    }
-    
-    public Control createControl (Composite parent)
-    {
-      page1 = getWidgetFactory().createFlatFormComposite(parent);
-      documentationText = getWidgetFactory().createText(page1, "", SWT.V_SCROLL | SWT.H_SCROLL); //$NON-NLS-1$
-      documentationText.addListener(SWT.Modify, AnnotationSection.this);
-
-      FormData data = new FormData();
-      data.left = new FormAttachment(0, 0);
-      data.right = new FormAttachment(100, 0);
-      data.top = new FormAttachment(0, 0);
-      data.bottom = new FormAttachment(100, 0);
-      documentationText.setLayoutData(data);
-                  
-      return page1;
-    }
-    
-    public void doHandleEvent(XSDAnnotation xsdAnnotation)
-    {
-      if (xsdAnnotation != null)
-      {
-        Element element = xsdAnnotation.getElement();
-        List documentationList = xsdAnnotation.getUserInformation();
-        Element documentationElement = null;
-        if (documentationList.size() > 0)
-        {
-          documentationElement = (Element)documentationList.get(0);
-        }
-        
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_DOCUMENTATION_COMMENT_CHANGE"), element); //$NON-NLS-1$
-        
-        if (documentationElement == null)
-        {
-          documentationElement = xsdAnnotation.createUserInformation(null);
-          element.appendChild(documentationElement);
-          XSDDOMHelper.formatChild(documentationElement);
-          // Defect in model....I create it but the model object doesn't appear to be updated
-          // Notice that it is fine for appinfo
-          xsdAnnotation.updateElement();
-          xsdAnnotation.setElement(element);
-        }
-        
-        String newValue = documentationText.getText();
-        if (documentationElement != null)
-        {
-          try
-          {
-            if (documentationElement.hasChildNodes())
-            {
-            // if the element is Text
-              Node node = documentationElement.getFirstChild();
-              if (node instanceof CharacterData)
-              {
-                ((CharacterData)node).setData(newValue);
-              }
-            }
-            else
-            {
-              if (newValue.length() > 0)
-              {
-                Node childNode = documentationElement.getOwnerDocument().createTextNode(newValue);
-                documentationElement.appendChild(childNode);
-              }
-            }
-          }
-          catch (Exception e)
-          {
-          
-          }
-        }
-        endRecording(element);
-      }    
-    }
-  }
-  
-  class AppInfoWorkbookPage extends XSDWorkbookPage
-  {
-    Text appInfoText;
-    Composite page2;
-    
-    public AppInfoWorkbookPage(XSDWorkbook workbook)
-    {
-      super(workbook);
-      this.getTabItem().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_APP_INFO"));
-    }
-    
-    public void setText(String value)
-    {
-      appInfoText.setText(value);
-    }
-
-    public String getText()
-    {
-      return appInfoText.getText();
-    }
-
-    public Text getAppInfoText()
-    {
-      return appInfoText;
-    }
-
-    public void setEnabled(boolean state)
-    {
-      page2.setEnabled(state);
-    }
-
-    public Control createControl (Composite parent)
-    {
-      page2 = getWidgetFactory().createFlatFormComposite(parent);
-      appInfoText = getWidgetFactory().createText(page2, "", SWT.V_SCROLL | SWT.H_SCROLL); //$NON-NLS-1$
-      appInfoText.addListener(SWT.Modify, AnnotationSection.this);
-      
-      FormData data = new FormData();
-      data.left = new FormAttachment(0, 0);
-      data.right = new FormAttachment(100, 0);
-      //data.top = new FormAttachment(documentationText, +ITabbedPropertyConstants.HSPACE);
-      data.top = new FormAttachment(0, 0);
-      data.bottom = new FormAttachment(100, 0);
-      appInfoText.setLayoutData(data);
-
-      return page2;
-    }
-    
-    public void doHandleEvent(XSDAnnotation xsdAnnotation)
-    {
-      if (xsdAnnotation != null)
-      {
-        Element element = xsdAnnotation.getElement();
-        List appInfoList = xsdAnnotation.getApplicationInformation();
-        
-        Element appInfoElement = null;
-        if (appInfoList.size() > 0)
-        {
-          appInfoElement = (Element)appInfoList.get(0);
-        }
-
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_COMMENT_CHANGE"), element); //$NON-NLS-1$
-        if (appInfoElement == null)
-        {
-          appInfoElement = xsdAnnotation.createApplicationInformation(null);
-          element.appendChild(appInfoElement);
-          XSDDOMHelper.formatChild(appInfoElement);
-        }
-        
-        String newValue = appInfoText.getText();
-        if (appInfoElement != null)
-        {
-          try
-          {
-            if (appInfoElement.hasChildNodes())
-            {
-              // if the element is Text
-              Node node = appInfoElement.getFirstChild();
-              if (node instanceof CharacterData)
-              {
-                ((CharacterData)node).setData(newValue);
-              }
-            }
-            else
-            {
-              if (newValue.length() > 0)
-              {
-                Node childNode = appInfoElement.getOwnerDocument().createTextNode(newValue);
-                appInfoElement.appendChild(childNode);
-              }
-            }
-          }
-          catch (Exception e)
-          {
-
-          }
-          endRecording(element);          
-        }
-      }    
-    }
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSectionDescriptor.java
deleted file mode 100644
index 93bd523..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AnnotationSectionDescriptor.java
+++ /dev/null
@@ -1,109 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDAnnotation;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDFacet;
-import org.eclipse.xsd.XSDIdentityConstraintDefinition;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.XSDXPathDefinition;
-
-public class AnnotationSectionDescriptor extends AbstractSectionDescriptor
-{
-  /**
-   * 
-   */
-  public AnnotationSectionDescriptor()
-  {
-    super();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.annotation";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDAnnotation.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new AnnotationSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.documentation";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDAttributeDeclaration ||
-          object instanceof XSDAttributeGroupDefinition ||
-          object instanceof XSDElementDeclaration ||
-          object instanceof XSDNotationDeclaration ||
-          object instanceof XSDXPathDefinition ||
-          object instanceof XSDModelGroup ||
-          object instanceof XSDModelGroupDefinition ||
-          object instanceof XSDIdentityConstraintDefinition ||
-          object instanceof XSDWildcard ||
-          object instanceof XSDSchema ||
-          object instanceof XSDFacet || 
-          object instanceof XSDTypeDefinition ||
-          object instanceof XSDAnnotation ||
-          object instanceof XSDSchemaDirective)
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewContentProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewContentProvider.java
deleted file mode 100644
index b5ffe41..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewContentProvider.java
+++ /dev/null
@@ -1,289 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDAbstractAdapter;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDAdapterFactoryLabelProvider;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupContent;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-
-
-public class AttributesViewContentProvider implements ITreeContentProvider, ITableLabelProvider, ILabelProvider, INotifyChangedListener
-{
-  IEditorPart editorPart;
-
-  static XSDModelAdapterFactoryImpl xsdModelAdapterFactory = XSDModelAdapterFactoryImpl.getInstance();
-  static XSDAdapterFactoryLabelProvider adapterFactoryLabelProvider = new XSDAdapterFactoryLabelProvider(xsdModelAdapterFactory);  // XSDTextEditor.getLabelProvider();
-  
-  XSDAbstractAdapter elementAdapter;
-  XSDAbstractAdapter ctAdapter;
-  XSDComplexTypeDefinition ct;
-  
-  /**
-   * 
-   */
-  public AttributesViewContentProvider()
-  {
-    super();
-//    if (xsdModelAdapterFactory instanceof IChangeNotifier)
-//    {
-//      ((IChangeNotifier)xsdModelAdapterFactory).addListener(this);
-//    }
-
-  }
-  
-  Viewer attributesViewer;
-  public AttributesViewContentProvider(IEditorPart editorPart, Viewer viewer)
-  {
-    super();
-    this.editorPart = editorPart;
-    this.attributesViewer = viewer;
-  }
-  
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
-   */
-  public Object[] getChildren(Object inputElement)
-  {
-    List list = new ArrayList();
-    ct = null;
-    if (inputElement instanceof XSDElementDeclaration)
-    {
-      XSDElementDeclaration xsdElement = (XSDElementDeclaration)inputElement;
-      
-      if (elementAdapter != null)
-      {
-        elementAdapter.removeListener((INotifyChangedListener)this);
-      }
-      elementAdapter = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(xsdElement, xsdModelAdapterFactory);
-      elementAdapter.addListener((INotifyChangedListener)this);
-
-      if (xsdElement.getAnonymousTypeDefinition() instanceof XSDComplexTypeDefinition)
-      {
-        ct = (XSDComplexTypeDefinition)xsdElement.getAnonymousTypeDefinition();
-      }
-      else
-      {
-        XSDTypeDefinition xsdType = xsdElement.getTypeDefinition();
-        if (xsdType instanceof XSDComplexTypeDefinition)
-        {
-          ct = (XSDComplexTypeDefinition)xsdType;
-        }
-      }
-    }
-    else if (inputElement instanceof XSDComplexTypeDefinition)
-    {
-      ct = (XSDComplexTypeDefinition)inputElement;
-    }
-
-    if (ct != null)
-    {
-      if (ctAdapter != null)
-      {
-        ctAdapter.removeListener((INotifyChangedListener)this);
-      }
-      ctAdapter = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(ct, xsdModelAdapterFactory);
-      ctAdapter.addListener((INotifyChangedListener)this);
-      
-      XSDWildcard wildcard = ct.getAttributeWildcardContent();
-      if (wildcard != null)
-      {
-        list.add(wildcard);
-      }
-      
-      Iterator i = ct.getAttributeContents().iterator();
-      while (i.hasNext())
-      {
-        XSDAttributeGroupContent attributeGroupContent = (XSDAttributeGroupContent)i.next();
-        if (attributeGroupContent instanceof XSDAttributeGroupDefinition)
-        {
-          XSDAttributeGroupDefinition attributeGroupDefinition = (XSDAttributeGroupDefinition)attributeGroupContent;
-          XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(attributeGroupDefinition, xsdModelAdapterFactory);
-          a.removeListener((INotifyChangedListener)this);
- 	        a.addListener((INotifyChangedListener)this);
- 	        list.add(attributeGroupDefinition);
-        }
-        else if (attributeGroupContent instanceof XSDAttributeUse)
-        {
-          XSDAttributeUse attributeUse = (XSDAttributeUse)attributeGroupContent;
-          
-          XSDAttributeDeclaration attribute = attributeUse.getAttributeDeclaration();
-          
-          boolean isRef = XSDDOMHelper.isAttributeRef(ct.getElement(), attribute.getQName(), attribute.getTargetNamespace());
-         
-          if (isRef)
-          {
-            XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(attributeUse, xsdModelAdapterFactory);            
-            a.removeListener((INotifyChangedListener)this);
-   	        a.addListener((INotifyChangedListener)this);
-            list.add(attributeUse);
-          }
-          else
-          {
-            XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(attribute, xsdModelAdapterFactory);            
-            a.removeListener((INotifyChangedListener)this);
-   	        a.addListener((INotifyChangedListener)this);
-            list.add(attribute);
-          }
-        }
-      }
-    }
-    return list.toArray();
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
-   */
-  public Object getParent(Object element)
-  {
-    return null;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
-   */
-  public boolean hasChildren(Object element)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
-   */
-  public Image getColumnImage(Object element, int columnIndex)
-  {
-    if (element instanceof XSDConcreteComponent)
-    {
-	    return adapterFactoryLabelProvider.getImage((XSDConcreteComponent)element);
-    }
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
-   */
-  public String getColumnText(Object element, int columnIndex)
-  {
-    if (element instanceof XSDConcreteComponent)
-    {
-	    XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt((XSDConcreteComponent)element, xsdModelAdapterFactory);
-	    return a.getText((XSDConcreteComponent)element);
-    }
-    return ""; 
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-   */
-  public Image getImage(Object element)
-  {
-    if (element instanceof XSDConcreteComponent)
-    {
-	    return adapterFactoryLabelProvider.getImage((XSDConcreteComponent)element);
-    }
-    return null;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-   */
-  public String getText(Object element)
-  {
-    if (element instanceof XSDConcreteComponent)
-    {
-	    XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt((XSDConcreteComponent)element, xsdModelAdapterFactory);
-	    return a.getText((XSDConcreteComponent)element);
-    }
-    return ""; 
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
-   */
-  public Object[] getElements(Object inputElement)
-  {
-    return getChildren(inputElement);
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
-   */
-  public void dispose()
-  {
-    if (elementAdapter != null)
-    {
-      elementAdapter.removeListener(this);
-    }
-    if (ctAdapter != null)
-    {
-      ctAdapter.removeListener((INotifyChangedListener)this);
-    }
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-   */
-  Viewer viewer;
-  public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
-  {
-//    System.out.println("input changed " + oldInput + "\n" + newInput);
-    this.viewer = viewer;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
-   */
-  public void addListener(ILabelProviderListener listener)
-  {
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
-   */
-  public boolean isLabelProperty(Object element, String property)
-  {
-    return false;
-  }
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
-   */
-  public void removeListener(ILabelProviderListener listener)
-  {
-  }
-
-  public void notifyChanged(Notification notification)
-  {
-    if (attributesViewer != null && !attributesViewer.getControl().isDisposed())
-    {
-      if (attributesViewer instanceof StructuredViewer)
-      {
-        attributesViewer.refresh();
-      }
-    }
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSection.java
deleted file mode 100644
index 0c830ff..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSection.java
+++ /dev/null
@@ -1,419 +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.properties.section;
-
-import java.util.ArrayList;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.SashForm;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.views.properties.PropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.XSDMenuListener;
-import org.eclipse.wst.xsd.ui.internal.actions.AddAttributeAction;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateAttributeAndRequired;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.actions.DeleteAction;
-import org.eclipse.wst.xsd.ui.internal.properties.XSDPropertySourceProvider;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-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 AttributesViewSection extends AbstractSection implements ISelectionChangedListener
-{
-  AttributeTableTreeViewer viewer;
-  AttributesPropertySheetPage propertySheetPage;
-
-  /**
-   * 
-   */
-  public AttributesViewSection()
-  {
-    super();
-  }
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent,	TabbedPropertySheetWidgetFactory factory) {
-		super.createControls(parent, factory);
-		
-		composite =	getWidgetFactory().createFlatFormComposite(parent);
-    SashForm sashForm = new SashForm(composite, SWT.HORIZONTAL);
-
-    FormData data = new FormData();
-    data.top = new FormAttachment(0, 0);
-    data.left = new FormAttachment(0, 0);
-    data.right = new FormAttachment(100, 0);
-    data.bottom = new FormAttachment(100, 0);
-    sashForm.setLayoutData(data);
-    
-    viewer = new AttributeTableTreeViewer(sashForm);
-    propertySheetPage = new AttributesPropertySheetPage();
-    propertySheetPage.createControl(sashForm);
-
-		AttributesViewContentProvider provider = new AttributesViewContentProvider(getActiveEditor(), viewer); 
-		viewer.setContentProvider(provider);
-
-		viewer.setLabelProvider(provider);
-		viewer.addSelectionChangedListener(this);
-
-    propertySheetPage.setPropertySourceProvider(new XSDPropertySourceProvider());
-	}
-
-  public void setInput(IWorkbenchPart part, ISelection selection)
-  {
-    super.setInput(part, selection);
-    if (input instanceof XSDElementDeclaration)
-    {
-      XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)input;
-      if (elementDeclaration.isElementDeclarationReference())
-      {
-        input = elementDeclaration.getResolvedElementDeclaration();
-        
-        isReadOnly = (!(elementDeclaration.getResolvedElementDeclaration().getRootContainer() == xsdSchema));
-      }
-    }
-  }
-  
-	public void selectionChanged(SelectionChangedEvent event)
-	{
-	  propertySheetPage.selectionChanged(part, event.getSelection());
-	}
-	
-	public void selectionChanged(IWorkbenchPart part, ISelection selection)
-	{
-	}
-
-  public void aboutToBeShown()
-  {
-		refresh();
-  }
-	
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-    if (isReadOnly)
-    {
-      composite.setEnabled(false);
-    }
-    else
-    {
-      composite.setEnabled(true);
-    }
-    setListenerEnabled(false);
-	  if (viewer != null)
-	  {
-      viewer.setInput(getInput());
-      viewer.refresh();
-	  }
-    setListenerEnabled(true);
-	}
-	
-  public void dispose()
-  {
-//    if (propertySheetPage != null)
-//    {
-//      propertySheetPage.dispose();
-//      propertySheetPage = null;
-//    }
-//    if (viewer != null)
-//    {
-//      viewer = null;
-//    }
-  }
-
-  public boolean shouldUseExtraSpace()
-  {
-    return true;
-  }
-
-	
-	class AttributeTableTreeViewer extends TreeViewer // ExtendedTableTreeViewer
-	{
-	  public AttributeTableTreeViewer(Composite c)
-	  {
-	    super(c);
-	    
-	    MenuManager menuManager = new MenuManager("#popup");//$NON-NLS-1$
-	    menuManager.setRemoveAllWhenShown(true);
-	    Menu menu = menuManager.createContextMenu(getTree());
-	    getTree().setMenu(menu);
-
-	    XSDAttributeMenuListener menuListener = new XSDAttributeMenuListener(this);
-	    menuManager.addMenuListener(menuListener);
-
-	  }
-	  
-	  public class XSDAttributeMenuListener extends XSDMenuListener
-	  {
-	    public XSDAttributeMenuListener(TreeViewer viewer)
-	    {
-	      super(viewer);
-        selectionProvider = viewer;
-       
-	      deleteAction = new DeleteAction(XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE"), AttributesViewSection.this.getActiveEditor(), getXSDSchema());
-        deleteAction.setSelectionProvider(selectionProvider);
-        selectionProvider.addSelectionChangedListener(deleteAction);
-	    }
-	    
-	    protected XSDSchema getXSDSchema()
-	    {
-        return xsdSchema;
-//        return getSchema();
-//	      XSDConcreteComponent xsdInput = (XSDConcreteComponent)AttributesViewSection.this.getInput();
-//	      return xsdInput.getSchema();
-	    }
-	    
-	    protected Object getSelectedElement()
-	    {
-        XSDComponent xsdInput = (XSDComponent)AttributesViewSection.this.getInput();
-        
-        if (xsdInput instanceof XSDElementDeclaration)
-        {
-          XSDElementDeclaration xsdElement = (XSDElementDeclaration)xsdInput;
-          XSDTypeDefinition xsdType = xsdElement.getType();
-          if (xsdType instanceof XSDComplexTypeDefinition)
-          {
-            XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition)xsdType;
-            return ct;
-          }
-          return xsdElement;
-        }
-        else if (xsdInput instanceof XSDComplexTypeDefinition)
-        {
-          return xsdInput;
-        }
-
-        return null;
-	    }
-      
-      public void menuAboutToShow(IMenuManager manager)
-      {
-        updateXSDSchema();
-        if (xsdSchema == null)
-        {
-          return;
-        }
-
-        Object selectedElementObj = getSelectedElement();
-        
-        Element selectedElement = null;
-
-        if (selectedElementObj instanceof XSDComplexTypeDefinition)
-        {
-          selectedElement = ((XSDComplexTypeDefinition)selectedElementObj).getElement();
-        }
-        
-        addContextItems(manager, selectedElement, null);
-
-        if (!selectionProvider.getSelection().isEmpty())
-        {
-          // Add context menu items for selected element
-//          addContextItems(manager, selectedElement, null);
-          
-          manager.add(new Separator());
-          if (deleteAction != null)
-          {
-            deleteAction.setXSDSchema(getXSDSchema());
-            manager.add(deleteAction);
-          }
-        }
-      }
-	    
-	    protected void addContextItems(IMenuManager manager, Element parent, Node relativeNode)
-	    {
-	      ArrayList attributes = null;
-	      if (XSDDOMHelper.inputEquals(parent, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-	      { //
-	        boolean complexOrSimpleContentExists = false;
-	        boolean anyAttributeExists = false;
-	        Element contentNode = null;
-	        Node anyAttributeNode = null;
-	        NodeList children = parent.getChildNodes();
-	        
-	        for (int i=0; i < children.getLength(); i++)
-	        {
-	          Node child = children.item(i);
-	          if (child != null && child instanceof Element)
-	          {
-	            if (XSDDOMHelper.inputEquals((Element)child, XSDConstants.SEQUENCE_ELEMENT_TAG, false) ||
-	                XSDDOMHelper.inputEquals((Element)child, XSDConstants.ALL_ELEMENT_TAG, false) ||
-	                XSDDOMHelper.inputEquals((Element)child, XSDConstants.CHOICE_ELEMENT_TAG, false) ||
-	                XSDDOMHelper.inputEquals((Element)child, XSDConstants.GROUP_ELEMENT_TAG, true) ||
-	                XSDDOMHelper.inputEquals((Element)child, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false) ||
-	                XSDDOMHelper.inputEquals((Element)child, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-	            {
-	              contentNode = (Element)child;
-
-	              if (XSDDOMHelper.inputEquals((Element)child, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false) ||
-	                  XSDDOMHelper.inputEquals((Element)child, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-	              {
-	                complexOrSimpleContentExists = true;
-	              }
-	            } 
-	            else if (XSDDOMHelper.inputEquals((Element)child, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false))
-	            {
-	              anyAttributeExists = true;
-	              anyAttributeNode = child;
-	            }
-	          }
-	        }
-
-	        if (anyAttributeExists)
-	        {
-	          if (!complexOrSimpleContentExists)
-	          {
-	            attributes = new ArrayList();
-	            attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE,
-	                                            getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-	            attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-	            addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, anyAttributeNode);
-	            attributes = null;
-//	   ARE ATTRIBUTE GROUPS ALLOWED ?
-//	            addCreateElementAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, "_UI_ACTION_ADD_ATTRIBUTE_GROUP", attributes, parent, anyAttributeNode);
-	            addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, anyAttributeNode);
-	            addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, anyAttributeNode);
-	          }
-	        }
-	        else
-	        {
-	          if (!complexOrSimpleContentExists)
-	          {
-	            attributes = new ArrayList();
-	            attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE,
-	                                            getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-	            attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-	            addCreateElementAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), attributes, parent, parent.getLastChild());
-	            attributes = null;
-	            addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), parent, parent.getLastChild());
-	            addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), parent, parent.getLastChild());
-	            attributes = null;
-	            addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, parent, parent.getLastChild());
-	          }
-            else
-            {
-              // new model based add attribute action
-              XSDComplexTypeDefinition xsdCT = (XSDComplexTypeDefinition)getXSDSchema().getCorrespondingComponent(parent);
-              manager.add(new AddAttributeAction(XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"), xsdCT));
-
-              Element derivedByElement = domHelper.getDerivedByElement(contentNode);
-              if (derivedByElement != null)
-              {
-                attributes = null;
-                addCreateElementRefAction(manager, XSDConstants.ATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"), derivedByElement, derivedByElement.getLastChild());
-                addCreateElementRefAction(manager, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"), derivedByElement, derivedByElement.getLastChild());
-                attributes = null;
-                addCreateElementActionIfNotExist(manager, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"), attributes, derivedByElement, derivedByElement.getLastChild());
-              }
-            }
-	        }
-	      }
-	      else if (parent == null) {	      
-	      	XSDElementDeclaration ed = (XSDElementDeclaration)input;      
-	      
-	      	// Add Attribute
-	      	attributes = new ArrayList();
-	      	attributes.add(new DOMAttribute(XSDConstants.NAME_ATTRIBUTE,
-                                          getNewName(parent, XSDConstants.ATTRIBUTE_ELEMENT_TAG, "Attribute", false)));
-	      	attributes.add(new DOMAttribute(XSDConstants.TYPE_ATTRIBUTE, getBuiltInStringQName()));
-	      	manager.add(new CreateAttributeAndRequired(XSDConstants.ATTRIBUTE_ELEMENT_TAG,
-					   XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE"),
-					   attributes,
-					   getXSDSchema(),
-					   selectionProvider,
-					   ed));
-	      	
-	      	// Add Attribute Reference
-	      	attributes = null;
-	      	attributes = new ArrayList();
-	        String ref = getFirstGlobalElementTagName(XSDConstants.ATTRIBUTE_ELEMENT_TAG);
-	        attributes.add(new DOMAttribute(XSDConstants.REF_ATTRIBUTE, ref));
-	      
-	        Action action = new CreateAttributeAndRequired(XSDConstants.ATTRIBUTE_ELEMENT_TAG,
-					   XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_REFERENCE"),
-					   attributes,
-					   getXSDSchema(),
-					   selectionProvider,
-					   ed);
-	        manager.add(action);
-	        action.setEnabled(ref != null);
-
-	        // Add Attribute Group Reference
-	        attributes = null;
-	      	attributes = new ArrayList();
-	        ref = getFirstGlobalElementTagName(XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG);
-	        attributes.add(new DOMAttribute(XSDConstants.REF_ATTRIBUTE, ref));
-	        
-	        action = new CreateAttributeAndRequired(XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG,
-					   XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ATTRIBUTE_GROUP_REF"),
-					   attributes,
-					   getXSDSchema(),
-					   selectionProvider,
-					   ed);
-
-	      	manager.add(action);
-	      	action.setEnabled(ref != null);
-	      	
-	      	// Add Any Attribute
-	      	attributes = null;
-	      	if (getFirstChildNodeIfExists(parent, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false) == null)
-	        {
-	      		action = new CreateAttributeAndRequired(XSDConstants.ANYATTRIBUTE_ELEMENT_TAG,
-						   XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ANY_ATTRIBUTE"),
-						   attributes,
-						   getXSDSchema(),
-						   selectionProvider,
-						   ed);
-	      		manager.add(action);
-	         }
-	      }
-	    }
-	  }
-	}
-	
-	class AttributesPropertySheetPage extends PropertySheetPage implements INotifyChangedListener
-	{
-	  public AttributesPropertySheetPage()
-	  {
-	    super();
-	  }
-	  
-	  public void notifyChanged(Notification notification)
-	  {
-	    System.out.println("Notification");
-	  }
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSectionDescriptor.java
deleted file mode 100644
index 2156ff9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/AttributesViewSectionDescriptor.java
+++ /dev/null
@@ -1,101 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-
-public class AttributesViewSectionDescriptor extends AbstractSectionDescriptor
-{
-  /**
-   * 
-   */
-  public AttributesViewSectionDescriptor()
-  {
-    super();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.attributes";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDElementDeclaration.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new AttributesViewSection();
-  }
-
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDElementDeclaration)
-      {
-// Remove this to fix bug 3870 Element references should have the same properties as elements 
-//        XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)object;
-//        if (elementDeclaration.isElementDeclarationReference())
-//        {
-//          return false;
-//        }
-        return true;
-      }
-      else if (object instanceof XSDComplexTypeDefinition)
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.attributes";
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getAfterSection()
-   */
-  public String getAfterSection()
-  {
-    return "";
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSection.java
deleted file mode 100644
index e5e9ca8..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSection.java
+++ /dev/null
@@ -1,236 +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.properties.section;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.SetBaseTypeAction;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xml.XMLComponentSpecification;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDSetTypeHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class ComplexTypeSection extends AbstractSection
-{
-  private String derivedByChoicesComboValues[] =
-  {
-        "",
-        XSDConstants.RESTRICTION_ELEMENT_TAG,
-        XSDConstants.EXTENSION_ELEMENT_TAG
-  };
-
-  /**
-   * 
-   */
-  public ComplexTypeSection()
-  {
-    super();
-  }
-
-	Text baseTypeCombo;
-	CCombo derivedByCombo;
-	Button button;
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		composite =	getWidgetFactory().createFlatFormComposite(parent);
-		FormData data;
-
-		String textBaseType = XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON");
-		String textDerivedType = XSDEditorPlugin.getXSDString("_UI_LABEL_DERIVED_BY");
-		GC gc = new GC(parent);
-		int xoffset = Math.max(100, gc.textExtent(textBaseType).x + 20); // adds 20 due to borders
-		xoffset = Math.max(xoffset, gc.textExtent(textDerivedType).x + 20); // adds 20 due to borders
-		gc.dispose();
-
-		baseTypeCombo = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
-		CLabel baseTypeLabel = getWidgetFactory().createCLabel(composite, textBaseType); //$NON-NLS-1$ 
-
-    button = getWidgetFactory().createButton(composite, "", SWT.PUSH);
-    button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
-    baseTypeCombo.setEditable(false);
-    baseTypeCombo.addListener(SWT.Modify, this);
-
-		data = new FormData();
-		data.left = new FormAttachment(0, xoffset);
-    data.right = new FormAttachment(button, 0);
-		baseTypeCombo.setLayoutData(data);
-
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(baseTypeCombo, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(button, 0, SWT.CENTER);
-		baseTypeLabel.setLayoutData(data);
-
-    button.addSelectionListener(this);
-		data = new FormData();
-    data.left = new FormAttachment(100, -rightMarginSpace + 2);
-		data.right = new FormAttachment(100,0);
-    data.top = new FormAttachment(baseTypeCombo, 0, SWT.CENTER);
-		button.setLayoutData(data);
-		
-		derivedByCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
-		data = new FormData();
-		data.left = new FormAttachment(0, xoffset);
-		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(baseTypeCombo, +ITabbedPropertyConstants.VSPACE);
-		derivedByCombo.setLayoutData(data);
-		derivedByCombo.setItems(derivedByChoicesComboValues);
-		derivedByCombo.addSelectionListener(this);
-
-		CLabel derivedByLabel = getWidgetFactory().createCLabel(composite, textDerivedType); //$NON-NLS-1$
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(derivedByCombo, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(derivedByCombo, 0, SWT.CENTER);
-		derivedByLabel.setLayoutData(data);
-	}
-
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-	  setListenerEnabled(false);
-    
-    if (isReadOnly)
-    {
-      composite.setEnabled(false);
-    }
-    else
-    {
-      composite.setEnabled(true);
-    }
-
-	  Object input = getInput();
-	  baseTypeCombo.setText(""); //$NON-NLS-1$
-	  
-    if (input instanceof XSDComplexTypeDefinition)
-    {
-      XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)input;
-      Element element = complexType.getElement();
-      Element contentModelElement = getDomHelper().getContentModelFromParent(element);    
-      String baseType = getDomHelper().getBaseType(contentModelElement);
-    
-      derivedByCombo.setText(getDomHelper().getDerivedByName(contentModelElement));
-
-      if (baseType != null)
-      {
-        baseTypeCombo.setText(baseType);
-      }
-    }	  
-	  
-	  setListenerEnabled(true);
-	}
-	
-  /**
-   * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
-   */
-  public void widgetSelected(SelectionEvent e)
-  {
-    XSDComplexTypeDefinition xsdComplexType = (XSDComplexTypeDefinition)getInput();
-    Element ctElement = xsdComplexType.getElement();
-    if (e.widget == button)
-    {
-	    Shell shell = Display.getCurrent().getActiveShell();
-	    Element element = null;
-	    if (xsdComplexType.getContent() != null)
-	    {
-  	    element = ((XSDComplexTypeDefinition)getInput()).getContent().getElement();
-	    }
-	    
-//	    SimpleContentBaseTypeOptionsDialog dialog = new SimpleContentBaseTypeOptionsDialog(shell, element, BASE_TYPE_ID, ((XSDConcreteComponent)getInput()).getSchema());
-//	    dialog.setBlockOnOpen(true);
-//	    dialog.create();
-//	    int result = dialog.open();
-        
-        IFile currentIFile = ((IFileEditorInput)getActiveEditor().getEditorInput()).getFile();
-        
-        Object input = getInput();
-        XSDSchema schema = null;
-        if (input instanceof XSDConcreteComponent) {
-            schema = ((XSDConcreteComponent) input).getSchema();
-        }
-        
-        XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, schema);
-        XSDComponentSelectionDialog dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider);
-        provider.setDialog(dialog);
-        dialog.setBlockOnOpen(true);
-        dialog.create();
-        int result = dialog.open();
-   
-	    if (result == Window.OK)
-	    {
-            XMLComponentSpecification spec = dialog.getSelection();            
-            XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, schema);
-            helper.addImportIfNecessary(element, spec);
-            
-            String typeString = helper.getPrefixedTypeName(spec);
-            String derivedBy = getDomHelper().getDerivedByName(element);
-            SetBaseTypeAction setBaseTypeAction = new SetBaseTypeAction(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_BASE_TYPE")); //$NON-NLS-1$
-            setBaseTypeAction.setXSDSchema(xsdSchema);
-            setBaseTypeAction.setComplexTypeElement(ctElement);
-            setBaseTypeAction.setType(typeString);
-            setBaseTypeAction.setDerivedBy(derivedBy);
-            setBaseTypeAction.performAction();
-
-	    }
-
-//      refresh();
-    }
-    else if (e.widget == derivedByCombo)
-    {
-      Element contentModelElement = getDomHelper().getContentModelFromParent(ctElement);
-      String baseType = getDomHelper().getBaseType(contentModelElement);
-      beginRecording(XSDEditorPlugin.getXSDString("_UI_DERIVEDBY_CHANGE"), ctElement); //$NON-NLS-1$
-      if (contentModelElement != null)
-      {
-        getDomHelper().changeDerivedByType(contentModelElement, derivedByCombo.getText(), baseType);
-      }
-      endRecording(ctElement);
-    }
-  }
-
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
-   */
-  public boolean shouldUseExtraSpace()
-  {
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSectionDescriptor.java
deleted file mode 100644
index 56979a7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ComplexTypeSectionDescriptor.java
+++ /dev/null
@@ -1,82 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-
-public class ComplexTypeSectionDescriptor extends AbstractSectionDescriptor
-{
-  /**
-   * 
-   */
-  public ComplexTypeSectionDescriptor()
-  {
-    super();
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDComplexTypeDefinition.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new ComplexTypeSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.general";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDComplexTypeDefinition)
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-  
-  public String getAfterSection()
-  {
-    return "org.eclipse.wst.xsdeditor.section.name";
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSection.java
deleted file mode 100644
index 266fb24..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSection.java
+++ /dev/null
@@ -1,424 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.AddEnumsAction;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDEnumerationFacet;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDVariety;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class EnumerationsSection extends AbstractSection
-{
-  private EnumerationsTableViewer enumerationsTable;
-  private Button addButton;
-  private Button addManyButton;
-  private Button deleteButton;
-  
-  /**
-   * 
-   */
-  public EnumerationsSection()
-  {
-    super();
-  }
-  
-  public void widgetSelected(SelectionEvent e)
-  {
-    XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
-    Element element = st.getElement();
-    if (e.widget == addButton || e.widget == addManyButton)
-    {
-      XSDDOMHelper helper = new XSDDOMHelper();
-      
-      int variety = st.getVariety().getValue();
-      Node varietyElement = null;
-      if (variety == XSDVariety.ATOMIC)
-      {
-        varietyElement = helper.getChildNode(element, XSDConstants.RESTRICTION_ELEMENT_TAG);
-      }
-      else if (variety == XSDVariety.UNION)
-      {
-        varietyElement = helper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
-      }
-      else if (variety == XSDVariety.LIST)
-      {
-        varietyElement = helper.getChildNode(element, XSDConstants.LIST_ELEMENT_TAG);
-      }
-            
-      if (varietyElement != null)
-      {
-        if (e.widget == addButton)
-        {
-          java.util.List attributes = new ArrayList();
-          
-          List enumList = st.getEnumerationFacets();
-          StringBuffer newName = new StringBuffer("value1"); //$NON-NLS-1$
-          int suffix = 1;
-          for (Iterator i = enumList.iterator(); i.hasNext(); )
-          {
-            XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)i.next();
-            String value = enumFacet.getLexicalValue();
-            if (value != null)
-            {
-              if (value.equals(newName.toString()))
-              {
-                suffix++;
-                newName = new StringBuffer("value" + String.valueOf(suffix)); //$NON-NLS-1$
-              }
-            }
-          }
-          attributes.add(new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, newName.toString()));
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUM"), element); //$NON-NLS-1$
-          Action action = getNewElementAction(XSDConstants.ENUMERATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUM"), attributes, (Element)varietyElement, null);
-          action.run();
-          st.setElement(element);
-
-          endRecording(element);
-          enumerationsTable.refresh();
-          int newItemIndex = enumerationsTable.getTable().getItemCount() - 1;
-          enumerationsTable.editElement(enumerationsTable.getElementAt(newItemIndex), 0);
-          attributes = null;
-        }
-        else if (e.widget == addManyButton)
-        {
-          AddEnumsAction action = new AddEnumsAction(XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUMS")); //$NON-NLS-1$
-          action.setElementTag(XSDConstants.ENUMERATION_ELEMENT_TAG);
-          action.setAttributes(null);
-          action.setParentNode((Element)varietyElement);
-          action.setRelativeNode(null);
-          action.setDescription(XSDEditorPlugin.getXSDString("_UI_ENUMERATIONS_DIALOG_TITLE")); //$NON-NLS-1$
-          action.run();
-          st.setElement(element);
-          enumerationsTable.refresh();
-        }
-      }
-    }
-    else if (e.widget == deleteButton)
-    {
-      StructuredSelection selection = (StructuredSelection)enumerationsTable.getSelection();
-      if (selection != null)
-      {
-        Iterator i = selection.iterator();
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_ENUMERATION"), element); //$NON-NLS-1$
-        while (i.hasNext())
-        {
-          Object obj = i.next();
-          if (obj != null)
-          {
-            if (obj instanceof XSDEnumerationFacet)
-            {
-              XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)obj;
-    
-              // I have to update using DOM
-              XSDDOMHelper.removeNodeAndWhitespace(enumFacet.getElement());            
-              
-            }
-          }
-        }
-        enumerationsTable.refresh();
-        st.setElement(element);
-        endRecording(element);
-      }
-    }
-    else if (e.widget == enumerationsTable.getTable())
-    {
-      StructuredSelection selection = (StructuredSelection)enumerationsTable.getSelection();
-      if (selection.getFirstElement() != null)
-      {
-        deleteButton.setEnabled(true);
-      }
-      else
-      {
-        deleteButton.setEnabled(false);
-      }
-    }
-
-  }
-
-  public void widgetDefaultSelected(SelectionEvent e)
-  {
-    
-  }
-  
-  /**
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-   */
-  public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-  {
-    super.createControls(parent, factory);
-
-    composite = getWidgetFactory().createFlatFormComposite(parent);
-    FormData data;
-
-    enumerationsTable = new EnumerationsTableViewer(getWidgetFactory().createTable(composite, SWT.MULTI | SWT.FULL_SELECTION));
-    enumerationsTable.setInput(getInput());
-    Table table = enumerationsTable.getTable();
-    table.addSelectionListener(this);
-    
-    addButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_REGEX_WIZARD_ADD_BUTTON_LABEL"), SWT.PUSH); //$NON-NLS-1$
-    addManyButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_REGEX_WIZARD_ADD_BUTTON_LABEL") + "...", SWT.PUSH); //$NON-NLS-1$
-    deleteButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_INCLUDE"), SWT.PUSH); //$NON-NLS-1$
-
-    FormData data2 = new FormData();
-    data2.top = new FormAttachment(0, 0);
-    data2.left = new FormAttachment(100, -100);
-    data2.right = new FormAttachment(100, 0);
-//    data2.width = 50;
-    addButton.setLayoutData(data2);
-    addButton.addSelectionListener(this);
-
-    data = new FormData();
-    data.left = new FormAttachment(addButton, 0, SWT.LEFT);
-    data.right = new FormAttachment(100, 0);
-    data.top = new FormAttachment(addButton, 0);
-    addManyButton.setLayoutData(data);
-    addManyButton.addSelectionListener(this);
-
-    data = new FormData();
-    data.left = new FormAttachment(addButton, 0, SWT.LEFT);
-    data.right = new FormAttachment(100, 0);
-    data.top = new FormAttachment(addManyButton, 0);
-    deleteButton.setLayoutData(data);
-    deleteButton.setEnabled(false);
-    deleteButton.addSelectionListener(this);
-
-    data = new FormData();
-    data.top = new FormAttachment(0, 0);
-    data.left = new FormAttachment(0, 0);
-    data.right = new FormAttachment(addButton, 0);
-    data.bottom = new FormAttachment(100, 0);
-    data.width = tableMinimumWidth;
-    table.setLayoutData(data);
-    table.addListener(SWT.Resize, this);
-  }
-  
-  /*
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-   */
-  public void refresh()
-  {
-    Object input = getInput();
-    if (isReadOnly)
-    {
-      composite.setEnabled(false);
-    }
-    else
-    {
-      composite.setEnabled(true);
-    }
-    XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-    
-    Iterator validFacets = st.getValidFacets().iterator();
-    
-    boolean isApplicable = false;
-    while (validFacets.hasNext())
-    {
-      String aValidFacet = (String)validFacets.next();
-      if (aValidFacet.equals(XSDConstants.ENUMERATION_ELEMENT_TAG))
-      {
-        isApplicable = true;
-      }
-    }
-    
-    if (isApplicable)  
-    {
-      addButton.setEnabled(true);
-      addManyButton.setEnabled(true);
-    }
-    else
-    {
-      addButton.setEnabled(false);
-      addManyButton.setEnabled(false);
-    }
-    enumerationsTable.setInput(input);
-  }
-
-  public void handleEvent(Event event)
-  {
-    Table table = enumerationsTable.getTable();
-    if (event.type == SWT.Resize && event.widget == table)
-    {
-      TableColumn tableColumn = table.getColumn(0);
-      tableColumn.setWidth(table.getSize().x);
-    }
-  }
-  
-  public void dispose()
-  {
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
-   */
-  public boolean shouldUseExtraSpace()
-  {
-    return true;
-  }
-
-  
-  class EnumerationsTableViewer extends NavigableTableViewer implements ICellModifier
-  {
-    protected String[] columnProperties = {XSDConstants.ENUMERATION_ELEMENT_TAG};
-
-    protected CellEditor[] cellEditors;
-
-    Table table;
-    
-    public EnumerationsTableViewer(Table table)
-    {
-      super(table);
-      table = getTable();
-
-      table.setLinesVisible(true);
-      
-      setContentProvider(new EnumerationsTableContentProvider());
-      setLabelProvider(new EnumerationsTableLabelProvider());
-      setColumnProperties(columnProperties);
-
-      setCellModifier(this);
-
-      TableColumn column = new TableColumn(table, SWT.NONE, 0);
-      column.setText(columnProperties[0]);
-      column.setAlignment(SWT.LEFT);
-      column.setResizable(true);
- 
-      cellEditors = new CellEditor[1];
-
-      TableLayout layout = new TableLayout();
-      ColumnWeightData data = new ColumnWeightData(100);
-
-      layout.addColumnData(data);
-      cellEditors[0] = new TextCellEditor(table);
-
-      getTable().setLayout(layout);
-      setCellEditors(cellEditors);
-    }
-    
-    public boolean canModify(Object element, String property)
-    {
-      return true;
-    }
-
-    public void modify(Object element, String property, Object value)
-    {
-      if (element instanceof TableItem && (value != null))
-      {
-        TableItem item = (TableItem)element;
-        
-        Element simpleTypeElement = ((XSDSimpleTypeDefinition)getInput()).getElement();
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ENUM_VALUE_CHANGE"), simpleTypeElement); //$NON-NLS-1$
-        
-        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)item.getData();
-        enumFacet.setLexicalValue((String)value);
-        item.setData(enumFacet);
-        item.setText((String)value);
-        endRecording(simpleTypeElement);
-      }
-    }    
-
-    public Object getValue(Object element, String property)
-    {
-      if (element instanceof XSDEnumerationFacet)
-      {
-        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)element;
-        String value = enumFacet.getLexicalValue();
-        if (value == null) value = ""; //$NON-NLS-1$
-        return value;
-      }
-      return ""; //$NON-NLS-1$
-    }
-
-  }
-    
-  class EnumerationsTableContentProvider implements IStructuredContentProvider
-  {
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
-    {
-    }
-
-    public java.lang.Object[] getElements(java.lang.Object inputElement)
-    {
-      java.util.List list = new ArrayList();
-      if (inputElement instanceof XSDSimpleTypeDefinition)
-      {
-        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)inputElement;
-        return st.getEnumerationFacets().toArray();
-      }
-      return list.toArray();
-    }
-
-    public void dispose()
-    {
-    }
-  }
-
-  class EnumerationsTableLabelProvider extends LabelProvider implements ITableLabelProvider
-  {
-    public EnumerationsTableLabelProvider()
-    {
-      
-    }
-    
-    public Image getColumnImage(Object element, int columnIndex)
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDSimpleEnum.gif");
-    }
-    
-    public String getColumnText(Object element, int columnIndex)
-    {
-      if (element instanceof XSDEnumerationFacet)
-      {
-        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)element;
-        String value = enumFacet.getLexicalValue();
-        if (value == null) value = "";
-        return value;
-      }
-      return "";
-    }
-
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSectionDescriptor.java
deleted file mode 100644
index 0af99b0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/EnumerationsSectionDescriptor.java
+++ /dev/null
@@ -1,87 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-
-public class EnumerationsSectionDescriptor extends AbstractSectionDescriptor
-{
-
-  /**
-   * 
-   */
-  public EnumerationsSectionDescriptor()
-  {
-    super();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.enumerations";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDSimpleTypeDefinition.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new EnumerationsSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.enumerations";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDSimpleTypeDefinition)
-      {
-        return true;
-        // return false;  // turn off this tab
-      }
-    }
-    return false;
-  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetViewer.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetViewer.java
deleted file mode 100644
index 1c3faab..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetViewer.java
+++ /dev/null
@@ -1,492 +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.properties.section;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseTrackAdapter;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.properties.XSDComboBoxPropertyDescriptor;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConstrainingFacet;
-import org.eclipse.xsd.XSDMaxExclusiveFacet;
-import org.eclipse.xsd.XSDMaxFacet;
-import org.eclipse.xsd.XSDMaxInclusiveFacet;
-import org.eclipse.xsd.XSDMinExclusiveFacet;
-import org.eclipse.xsd.XSDMinFacet;
-import org.eclipse.xsd.XSDMinInclusiveFacet;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.impl.XSDFactoryImpl;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class FacetViewer extends NavigableTableViewer implements ICellModifier
-{
-  public static final String FACET_NAME = XSDEditorPlugin.getXSDString("_UI_FACET_NAME");  // "Name";
-  public static final String FACET_VALUE = XSDEditorPlugin.getXSDString("_UI_FACET_VALUE"); // "Value";
-  public static final String FACET_OTHER = XSDEditorPlugin.getXSDString("_UI_FACET_FIXED"); // "Fixed";
-
-  protected FacetsTableLabelProvider facetsTableLabelProvider = new FacetsTableLabelProvider();
-  protected FacetsTableContentProvider facetsTableContentProvider = new FacetsTableContentProvider();
-  protected String[] columnProperties = {FACET_NAME, FACET_VALUE, FACET_OTHER};
-  protected CellEditor[] cellEditors;    // these cellEditors are used when non-whitespace facet is selected
-  protected CellEditor[] altCellEditors; // these cellEditors are used when whitespace facet is selected
-  
-  protected String [] whiteSpaceValues = new String[] {"", "preserve", "replace", "collapse" };
-  protected String [] trueFalseValues = new String [] {"", "false", "true" }; 
-  protected FacetsSection facetsSection;
-  /**
-   * @param parent
-   */
-  public FacetViewer(Composite parent, FacetsSection facetsSection)
-  {
-    super(new Table(parent, SWT.FULL_SELECTION | SWT.SINGLE));
-    this.facetsSection = facetsSection;
-    
-    getTable().setLinesVisible(true);
-    getTable().setHeaderVisible(true);
-
-    addSelectionChangedListener(new SelectionChangedListener());
-    getTable().addMouseTrackListener(new MyMouseTrackListener());
-    
-    setContentProvider(facetsTableContentProvider);
-    setLabelProvider(facetsTableLabelProvider);
-    setColumnProperties(columnProperties);
-
-    setCellModifier(this);
-
-    for (int i = 0; i < 3; i++)
-    {
-      TableColumn column = new TableColumn(getTable(), SWT.NONE, i);
-      column.setText(columnProperties[i]);
-      column.setAlignment(SWT.LEFT);
-      column.setResizable(true);
-    }
-    
-    cellEditors = new CellEditor[3];
-    altCellEditors = new CellEditor[3];
-
-    TableLayout layout = new TableLayout();
-    ColumnWeightData data = new ColumnWeightData(60, 120, true);
-    layout.addColumnData(data);
-    cellEditors[0] = null;
-
-    ColumnWeightData data2 = new ColumnWeightData(120, 100, true);
-    layout.addColumnData(data2);
-
-    cellEditors[1] = new TextCellEditor(getTable());
-    XSDComboBoxPropertyDescriptor pd = new XSDComboBoxPropertyDescriptor("combo", "whitespace", whiteSpaceValues);
-    altCellEditors[1] = pd.createPropertyEditor(getTable());
-
-    ColumnWeightData data3 = new ColumnWeightData(60, 80, true);
-    layout.addColumnData(data3);
-
-    XSDComboBoxPropertyDescriptor pd2 = new XSDComboBoxPropertyDescriptor("combo", "other", trueFalseValues);
-    cellEditors[2] = pd2.createPropertyEditor(getTable());
-    altCellEditors[2] = pd2.createPropertyEditor(getTable());
-
-    getTable().setLayout(layout);
-    setCellEditors(cellEditors);
-
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object, java.lang.String)
-   */
-  public boolean canModify(Object element, String property)
-  {
-    return property.equals(FACET_VALUE) || property.equals(FACET_OTHER);
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object, java.lang.String)
-   */
-  public Object getValue(Object element, String property)
-  {
-    int column = 0;
-    if (property.equals(columnProperties[0]))
-    {
-      column = 0;
-    }
-    else if (property.equals(columnProperties[1]))
-    {
-      column = 1;
-    }
-    else if (property.equals(columnProperties[2]))
-    {
-      column = 2;
-    }
-
-    return facetsTableLabelProvider.getColumnText(element, column);
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object, java.lang.String, java.lang.Object)
-   */
-  public void modify(Object element, String property, Object value)
-  {
-    XSDSimpleTypeDefinition xsdSimpleType = (XSDSimpleTypeDefinition)getInput();
-    TableItem item = (TableItem)element;
-    if (item != null)
-    {
-      Object o = item.getData();
-      if (o != null)
-      {
-        if (o instanceof String)
-        {
-          String facet = (String)o;
-         
-          Element simpleTypeElement = xsdSimpleType.getElement();
-          XSDDOMHelper xsdDOMHelper = new XSDDOMHelper();
-          Element derivedByElement = xsdDOMHelper.getDerivedByElement(simpleTypeElement);
-
-          facetsSection.beginRecording(XSDEditorPlugin.getXSDString("_UI_FACET_CHANGE"), simpleTypeElement);
-
-          String prefix = simpleTypeElement.getPrefix();
-          prefix = (prefix == null) ? "" : (prefix + ":");
-          
-          Element childNodeElement = null;
-          DOMAttribute valueAttr = null;
-
-          XSDConstrainingFacet targetFacet = getXSDConstrainingFacet(facet);
-
-          String newValue = "";
-          if (value != null && value instanceof String)
-          {
-            newValue = (String)value;
-          }
-          
-          if (property.equals(columnProperties[1]))
-          {
-            if (targetFacet == null && newValue.length() > 0)
-            {
-              targetFacet = createFacet(facet);
-              childNodeElement = (derivedByElement.getOwnerDocument()).createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + facet);
-              valueAttr = new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, newValue);
-              childNodeElement.setAttribute(valueAttr.getName(), valueAttr.getValue());
-              // add and format child
-              derivedByElement.appendChild(childNodeElement);
-              targetFacet.setElement(childNodeElement);
-              XSDDOMHelper.formatChild(childNodeElement);
-
-//              XSDSchemaHelper.updateElement(xsdSimpleType);
-            }
-            if (targetFacet == null)
-            {
-              facetsSection.endRecording(simpleTypeElement);
-              return;
-            }
-
-            if (newValue.length() > 0)
-            {            
-              targetFacet.setLexicalValue(newValue);
-              
-              if (targetFacet instanceof XSDMaxFacet || targetFacet instanceof XSDMinFacet)
-              {
-                if (targetFacet instanceof XSDMaxFacet)
-                {
-                  if (targetFacet instanceof XSDMaxExclusiveFacet)
-                  {
-                    XSDMaxInclusiveFacet xsdMaxInclusiveFacet = xsdSimpleType.getMaxInclusiveFacet();
-                    if (xsdMaxInclusiveFacet != null)
-                    {
-                      Element xsdMaxInclusiveFacetElement = xsdMaxInclusiveFacet.getElement();
-                      XSDDOMHelper.removeNodeAndWhitespace(xsdMaxInclusiveFacetElement);
-                    }
-                  }
-                  else if (targetFacet instanceof XSDMaxInclusiveFacet)
-                  {
-                    XSDMaxExclusiveFacet xsdMaxExclusiveFacet = xsdSimpleType.getMaxExclusiveFacet();
-                    if (xsdMaxExclusiveFacet != null)
-                    {
-                      Element xsdMaxExclusiveFacetElement = xsdMaxExclusiveFacet.getElement();
-                      XSDDOMHelper.removeNodeAndWhitespace(xsdMaxExclusiveFacetElement);
-                    }
-                  }
-                }
-                else if (targetFacet instanceof XSDMinFacet)
-                {
-                  if (targetFacet instanceof XSDMinExclusiveFacet)
-                  {
-                    XSDMinInclusiveFacet xsdMinInclusiveFacet = xsdSimpleType.getMinInclusiveFacet();
-                    if (xsdMinInclusiveFacet != null)
-                    {
-                      Element xsdMinInclusiveFacetElement = xsdMinInclusiveFacet.getElement();
-                      XSDDOMHelper.removeNodeAndWhitespace(xsdMinInclusiveFacetElement);
-                    }
-                  }
-                  else if (targetFacet instanceof XSDMinInclusiveFacet)
-                  {
-                    XSDMinExclusiveFacet xsdMinExclusiveFacet = xsdSimpleType.getMinExclusiveFacet();
-                    if (xsdMinExclusiveFacet != null)
-                    {
-                      Element xsdMinExclusiveFacetElement = xsdMinExclusiveFacet.getElement();
-                      XSDDOMHelper.removeNodeAndWhitespace(xsdMinExclusiveFacetElement);
-                    }
-                  }
-                }
-              }
-            }
-            else // newValue.length == 0
-            {
-              Element targetFacetElement = targetFacet.getElement();
-              XSDDOMHelper.removeNodeAndWhitespace(targetFacetElement);
-            }
-          }
-          else if (property.equals(columnProperties[2]))
-          {
-            if (targetFacet != null)
-            {
-              if (newValue.length() > 0)
-              {            
-                targetFacet.getElement().setAttribute(XSDConstants.FIXED_ATTRIBUTE, newValue);
-              }
-              else
-              {
-                targetFacet.getElement().removeAttribute(XSDConstants.FIXED_ATTRIBUTE);
-              }
-            }
-          }
-          xsdSimpleType.setElement(simpleTypeElement);
-          //xsdSimpleType.updateElement();
-          facetsSection.endRecording(simpleTypeElement);
-          refresh();
-        }
-      }
-    }
-  }
-
-  
-  private XSDConstrainingFacet getXSDConstrainingFacet(String facetString)
-  {
-    XSDSimpleTypeDefinition xsdSimpleType = (XSDSimpleTypeDefinition)getInput();
-    List list = xsdSimpleType.getFacetContents();
-    if (list == null)
-    {
-      return null;
-    }
-    Iterator iter = list.iterator();
-    XSDConstrainingFacet targetFacet = null;
-    
-    while (iter.hasNext())
-    {
-      XSDConstrainingFacet xsdConstrainingFacet = (XSDConstrainingFacet)iter.next();
-      if (xsdConstrainingFacet.getFacetName().equals(facetString))
-      {
-        targetFacet = xsdConstrainingFacet;
-        break;
-      }
-    }
-    return targetFacet;
-  }
-
-  private XSDConstrainingFacet createFacet(String facet)
-  {
-    XSDFactoryImpl factory = new XSDFactoryImpl();
-    XSDConstrainingFacet xsdFacet = null;
-    if (facet.equals("length")) { xsdFacet = factory.createXSDLengthFacet(); }
-    else if (facet.equals("minLength")) { xsdFacet = factory.createXSDMinLengthFacet(); }
-    else if (facet.equals("maxLength")) { xsdFacet = factory.createXSDMaxLengthFacet(); }
-
-    else if (facet.equals("minInclusive")) { xsdFacet = factory.createXSDMinInclusiveFacet(); }
-    else if (facet.equals("minExclusive")) { xsdFacet = factory.createXSDMinExclusiveFacet(); }
-
-    else if (facet.equals("maxInclusive")) { xsdFacet = factory.createXSDMaxInclusiveFacet(); }
-    else if (facet.equals("maxExclusive")) { xsdFacet = factory.createXSDMaxExclusiveFacet(); }
-
-    else if (facet.equals("totalDigits")) { xsdFacet = factory.createXSDTotalDigitsFacet(); }
-    else if (facet.equals("fractionDigits")) { xsdFacet = factory.createXSDFractionDigitsFacet(); }
-
-    else if (facet.equals("whiteSpace"))   { xsdFacet = factory.createXSDWhiteSpaceFacet(); }
-
-    return xsdFacet;
-  }
-
- /**
-  * Get the tooltip for the facet
-  */
-  public String getToolTip(String facet)
-  {
-    String key = "";
-    if (facet.equals("length")) { key = "_UI_TOOLTIP_LENGTH"; }
-    else if (facet.equals("minLength")) { key = "_UI_TOOLTIP_MIN_LEN"; }
-    else if (facet.equals("maxLength")) { key = "_UI_TOOLTIP_MAX_LEN"; }
-
-    else if (facet.equals("minInclusive")) { key = "_UI_TOOLTIP_MIN_INCLUSIVE"; }
-    else if (facet.equals("minExclusive")) { key = "_UI_TOOLTIP_MIN_EXCLUSIVE"; }
-
-    else if (facet.equals("maxInclusive")) { key = "_UI_TOOLTIP_MAX_INCLUSIVE"; }
-    else if (facet.equals("maxExclusive")) { key = "_UI_TOOLTIP_MAX_EXCLUSIVE"; }
-
-    else if (facet.equals("totalDigits"))   { key = "_UI_TOOLTIP_TOTAL_DIGITS"; }
-    else if (facet.equals("fractionDigits")) { key = "_UI_TOOLTIP_FRACTION_DIGITS"; }
-
-    else if (facet.equals("whiteSpace"))   { key = "_UI_TOOLTIP_WHITE_SPACE"; }
-
-    return (key != null) ? XSDEditorPlugin.getXSDString(key) : "";
-  }
-  
-  /**
-   * This listener detects which row is selected and add a tool tip for that row
-   */
-  public class MyMouseTrackListener extends MouseTrackAdapter
-  {
-    public void mouseHover(MouseEvent e)
-    {
-      TableItem item = getTable().getItem(new Point(e.x, e.y));
-      if (item != null)
-      {
-        Object o = item.getData();
-        if (o != null)
-        {
-          String facetName = (String)o;
-          getTable().setToolTipText(getToolTip(facetName));
-        }
-      }
-    }
-  }
-
-  /**
-   * Based on the selection, detects if it is a white space or not, and add the
-   * corresponding cell editors
-   */
-  public class SelectionChangedListener implements ISelectionChangedListener
-  {
-    public void selectionChanged(SelectionChangedEvent event)
-    {
-      Object o = WindowUtility.getSelection(event.getSelection());
-      if (o != null)
-      {
-        String facet = (String)o;
-        if (facet.equals("whiteSpace"))
-        {
-          setCellEditors(altCellEditors);
-        }
-        else
-        {
-          setCellEditors(cellEditors);
-        }
-      }
-    }
-  }
-
-  
-  class FacetsTableContentProvider implements IStructuredContentProvider
-  {
-    protected String facet;
-    
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
-    {
-    }
-
-    public java.lang.Object[] getElements(java.lang.Object inputElement)
-    {
-      Vector v = new Vector();
-      XSDSimpleTypeDefinition inputXSDSimpleType = (XSDSimpleTypeDefinition)inputElement;
-      XSDSimpleTypeDefinition base = inputXSDSimpleType.getBaseTypeDefinition();
-      
-      if (base != null)
-      {
-        Iterator validFacets = base.getValidFacets().iterator();
-        while (validFacets.hasNext())
-        {
-          String aValidFacet = (String)validFacets.next();
-          if (!(aValidFacet.equals("pattern") || aValidFacet.equals("enumeration")))
-          {
-            v.add(aValidFacet);
-          }
-        }
-      }
-      return v.toArray();
-    }
-
-    public void dispose()
-    {
-    }
-  }
-
-  class FacetsTableLabelProvider extends LabelProvider implements ITableLabelProvider
-  {
-    public Image getColumnImage(Object element, int columnIndex)
-    {
-      return null;
-    }
-    
-    public String getColumnText(Object element, int columnIndex)
-    {
-      if (element instanceof String)
-      {
-        String value = null;
-        XSDConstrainingFacet targetFacet = getXSDConstrainingFacet((String)element);
-        switch (columnIndex)
-        {
-          case 0:
-          {
-            value = (String)element;
-            break;
-          }
-          case 1:
-          {
-            if (targetFacet == null)
-            {
-              value = "";
-            }
-            else
-            {
-              value = targetFacet.getLexicalValue();
-            }
-
-            break;
-          }
-          case 2:
-          {
-            if (targetFacet == null)
-            {
-              value = "";
-            }
-            else
-            {
-              Element elem = targetFacet.getElement();
-              value = elem.getAttribute(XSDConstants.FIXED_ATTRIBUTE);
-              if (value == null) value = "";
-            }
-          }
-        }
-        return value; 
-      }
-      return "";
-    }
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSection.java
deleted file mode 100644
index 55d9587..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSection.java
+++ /dev/null
@@ -1,802 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnWeightData;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.internal.viewers.NavigableTableViewer;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.wst.xsd.ui.internal.wizards.RegexWizard;
-import org.eclipse.xsd.XSDPatternFacet;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDVariety;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-
-public class FacetsSection extends AbstractSection
-{
-  IWorkbenchPart part;
-  ISelection selection;
-  FacetViewer facetViewer;
-  
-  XSDWorkbook workbook;
-  FacetsWorkbookPage facetsWorkbookPage;
-// If you want to add the enumerations tab to this facets tab
-//  EnumsWorkbookPage enumsWorkbookPage;
-  PatternsWorkbookPage patternsWorkbookPage;
-
-  /**
-   * 
-   */
-  public FacetsSection()
-  {
-    super();
-  }
-  
-  /**
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-   */
-  public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-  {
-    super.createControls(parent, factory);
-
-    workbook = new XSDWorkbook(parent, SWT.BOTTOM | SWT.FLAT);
-    
-    facetsWorkbookPage = new FacetsWorkbookPage(workbook, this);
-//    enumsWorkbookPage = new EnumsWorkbookPage(workbook);
-    patternsWorkbookPage = new PatternsWorkbookPage(workbook);
-    facetsWorkbookPage.activate();
-//    enumsWorkbookPage.activate();
-    patternsWorkbookPage.activate();
-    workbook.setSelectedPage(facetsWorkbookPage);
-  }
-  
-  public void selectionChanged(IWorkbenchPart part, ISelection selection)
-  {
-    this.part = part;
-    this.selection = selection;
-  }
-  
-
-  /*
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-   */
-  public void refresh()
-  {
-    Object input = getInput();
-    
-    if (isReadOnly)
-    {
-      facetViewer.getControl().getParent().setEnabled(false);      
-    }
-    else
-    {
-      facetViewer.getControl().getParent().setEnabled(true);
-    }
-
-    if (facetViewer != null)
-    {
-      facetViewer.setInput(input);
-    }
-    
-//    if (enumsWorkbookPage != null)
-//    {
-//      enumsWorkbookPage.setInput(input);
-//    }
-    
-    if (patternsWorkbookPage != null)
-    {
-      patternsWorkbookPage.setInput(input);
-    }
-  }
-
-  public void dispose()
-  {
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
-   */
-  public boolean shouldUseExtraSpace()
-  {
-    return true;
-  }
-  
-
-  /* General Facets Page */
-  
-  class FacetsWorkbookPage extends XSDWorkbookPage
-  {
-    FacetsSection facetsSection;
-    Composite page1;
-    
-    public FacetsWorkbookPage(XSDWorkbook workbook, FacetsSection facetsSection)
-    {
-      super(workbook);
-      this.getTabItem().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_FACETS")); //$NON-NLS-1$
-      this.facetsSection = facetsSection;
-    }
-
-    public Control createControl (Composite parent)
-    {
-      page1 = getWidgetFactory().createFlatFormComposite(parent);
-
-      FormData data = new FormData();
-      data.left = new FormAttachment(0, 0);
-      data.right = new FormAttachment(100, 0);
-      data.top = new FormAttachment(0, 0);
-      data.bottom = new FormAttachment(100, 0);
-      
-      facetViewer = new FacetViewer(page1, facetsSection);
-      facetViewer.setInput(getInput());
-      facetViewer.getControl().setLayoutData(data);
-                  
-      return page1;
-    }
-  }
-
-  /* Enumerations Page */
-  
-//  class EnumsWorkbookPage extends XSDWorkbookPage implements SelectionListener
-//  {
-//    EnumerationsTableViewer enumerationsTable;
-//    Button addButton;
-//    Button deleteButton;
-//    
-//    public EnumsWorkbookPage(XSDWorkbook workbook)
-//    {
-//      super(workbook);
-//      this.getTabItem().setText("Enumerations");
-//    }
-//
-//    public Control createControl (Composite parent)
-//    {
-//      Composite composite = getWidgetFactory().createFlatFormComposite(parent);
-//      FormData data;
-//      
-//      addButton = getWidgetFactory().createButton(composite, "Add", SWT.PUSH);
-//      deleteButton = getWidgetFactory().createButton(composite, "Delete", SWT.PUSH);
-//      enumerationsTable = new EnumerationsTableViewer(getWidgetFactory().createTable(composite, SWT.MULTI | SWT.FULL_SELECTION));
-//      
-//      enumerationsTable.setInput(getInput());
-//      Table table = enumerationsTable.getTable();
-//      table.addSelectionListener(this);
-//
-//      data = new FormData();
-//      data.left = new FormAttachment(deleteButton, 0, SWT.LEFT);
-//      data.right = new FormAttachment(100, 0);
-//      data.top = new FormAttachment(0, 0);
-//      data.bottom = new FormAttachment(deleteButton, 0); //-ITabbedPropertyConstants.VSPACE);
-//      addButton.setLayoutData(data);
-//      addButton.addSelectionListener(this);
-//      
-//      data = new FormData();
-//      data.left = new FormAttachment(table, +ITabbedPropertyConstants.HSPACE);
-//      data.right = new FormAttachment(100, 0);
-//      data.top = new FormAttachment(addButton, 0);
-////      data.bottom = new FormAttachment(deleteButton, +ITabbedPropertyConstants.VSPACE);
-//      deleteButton.setLayoutData(data);
-//      deleteButton.setEnabled(false);
-//      deleteButton.addSelectionListener(this);
-//      
-//      data = new FormData();
-//      data.left = new FormAttachment(0, 0);
-//      data.right = new FormAttachment(85, 0);
-//      data.top = new FormAttachment(0, 0);
-//      data.bottom = new FormAttachment(100, 0);
-//      table.setLayoutData(data);
-//      
-//      return composite;
-//    }
-//    
-//    public void setInput(Object input)
-//    {
-//      enumerationsTable.setInput(input);
-//    }
-//    
-//    public void widgetSelected(SelectionEvent e)
-//    {
-//      XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
-//      Element element = st.getElement();
-//      if (e.widget == addButton)
-//      {
-//        XSDDOMHelper helper = new XSDDOMHelper();
-//
-//        int variety = st.getVariety().getValue();
-//        Node varietyElement = null;
-//        if (variety == XSDVariety.ATOMIC)
-//        {
-//          varietyElement = helper.getChildNode(element, XSDConstants.RESTRICTION_ELEMENT_TAG);
-//        }
-//        else if (variety == XSDVariety.UNION)
-//        {
-//          varietyElement = helper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
-//        }
-//        else if (variety == XSDVariety.LIST)
-//        {
-//          varietyElement = helper.getChildNode(element, XSDConstants.LIST_ELEMENT_TAG);
-//        }
-//              
-//        if (varietyElement != null)
-//        {
-//          java.util.List attributes = new ArrayList();
-//          attributes.add(new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, ""));
-//          beginRecording("Add Enumeration", element);
-//          Action action = getNewElementAction(XSDConstants.ENUMERATION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_ENUM"), attributes, (Element)varietyElement, null);
-//          action.run();
-//          st.setElement(element);
-//
-//          endRecording(element);
-//          enumerationsTable.refresh();
-//          attributes = null;
-//        }
-//      }
-//      else if (e.widget == deleteButton)
-//      {
-//        StructuredSelection selection = (StructuredSelection)enumerationsTable.getSelection();
-//        if (selection != null)
-//        {
-//          Iterator i = selection.iterator();
-//          beginRecording("Delete Enumeration", element);
-//          while (i.hasNext())
-//          {
-//            Object obj = i.next();
-//            if (obj != null)
-//            {
-//              if (obj instanceof XSDEnumerationFacet)
-//              {
-//                XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)obj;
-//      
-//                // I have to update using DOM
-//                XSDDOMHelper.removeNodeAndWhitespace(enumFacet.getElement());            
-//                
-//              }
-//            }
-//          }
-//          enumerationsTable.refresh();
-//          st.setElement(element);
-//          endRecording(element);
-//        }
-//      }
-//      else if (e.widget == enumerationsTable.getTable())
-//      {
-//        StructuredSelection selection = (StructuredSelection)enumerationsTable.getSelection();
-//        if (selection.getFirstElement() != null)
-//        {
-//          deleteButton.setEnabled(true);
-//        }
-//        else
-//        {
-//          deleteButton.setEnabled(false);
-//        }
-//      }
-//      
-//    }
-//
-//    public void widgetDefaultSelected(SelectionEvent e)
-//    {
-//      
-//    }
-//  }
-//  
-//  class EnumerationsTableViewer extends NavigableTableViewer implements ICellModifier
-//  {
-//    protected String[] columnProperties = {"Enumeration"};
-//
-//    protected CellEditor[] cellEditors;
-//
-//    Table table;
-//    
-//    public EnumerationsTableViewer(Table table)
-//    {
-//      super(table);
-//      table = getTable();
-//      
-//      table.setLinesVisible(true);
-//      
-//      setContentProvider(new EnumerationsTableContentProvider());
-//      setLabelProvider(new EnumerationsTableLabelProvider());
-//      setColumnProperties(columnProperties);
-//
-//      setCellModifier(this);
-//
-//      TableColumn column = new TableColumn(table, SWT.NONE, 0);
-//      column.setText(columnProperties[0]);
-//      column.setAlignment(SWT.LEFT);
-// 
-//      cellEditors = new CellEditor[1];
-//
-//      TableLayout layout = new TableLayout();
-//      ColumnWeightData data = new ColumnWeightData(100);
-//      layout.addColumnData(data);
-//      cellEditors[0] = new TextCellEditor(table);
-//
-//      getTable().setLayout(layout);
-//      setCellEditors(cellEditors);
-//    }
-//    
-//    public boolean canModify(Object element, String property)
-//    {
-//      return true;
-//    }
-//
-//    public void modify(Object element, String property, Object value)
-//    {
-//      if (element instanceof TableItem && (value != null))
-//      {
-//        TableItem item = (TableItem)element;
-//        
-//        Element simpleTypeElement = ((XSDSimpleTypeDefinition)getInput()).getElement();
-//        FacetsSection.this.beginRecording(XSDEditorPlugin.getXSDString("_UI_ENUM_VALUE_CHANGE"), simpleTypeElement);
-//        
-//        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)item.getData();
-//        enumFacet.setLexicalValue((String)value);
-//        item.setData(enumFacet);
-//        item.setText((String)value);
-//        FacetsSection.this.endRecording(simpleTypeElement);
-//      }
-//    }    
-//
-//    public Object getValue(Object element, String property)
-//    {
-//      if (element instanceof XSDEnumerationFacet)
-//      {
-//        XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)element;
-//        String value = enumFacet.getLexicalValue();
-//        if (value == null) value = "";
-//        return value;
-//      }
-//      return "";
-//    }
-//
-//  }
-//    
-//  class EnumerationsTableContentProvider implements IStructuredContentProvider
-//  {
-//    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
-//    {
-//    }
-//
-//    public java.lang.Object[] getElements(java.lang.Object inputElement)
-//    {
-//      java.util.List list = new ArrayList();
-//      if (inputElement instanceof XSDSimpleTypeDefinition)
-//      {
-//        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)inputElement;
-//        return st.getEnumerationFacets().toArray();
-//      }
-//      return list.toArray();
-//    }
-//
-//    public void dispose()
-//    {
-//    }
-//  }
-//
-//  class EnumerationsTableLabelProvider extends LabelProvider implements ITableLabelProvider
-//  {
-//    public EnumerationsTableLabelProvider()
-//    {
-//      
-//    }
-//    
-//    public Image getColumnImage(Object element, int columnIndex)
-//    {
-//      return XSDEditorPlugin.getXSDImage("icons/XSDSimpleEnum.gif");
-//    }
-//    
-//    public String getColumnText(Object element, int columnIndex)
-//    {
-//      if (element instanceof XSDEnumerationFacet)
-//      {
-//        XSDEnumerationFacet enum = (XSDEnumerationFacet)element;
-//        String value = enum.getLexicalValue();
-//        if (value == null) value = "";
-//        return value;
-//      }
-//      return "";
-//    }
-//
-//  }
-
-  /* Patterns Page */
-  
-  class PatternsWorkbookPage extends XSDWorkbookPage implements SelectionListener, Listener
-  {
-    PatternsTableViewer patternsTable;
-    Button addButton;
-    Button deleteButton;
-    Button editButton;
-    Composite composite;
-    
-    public PatternsWorkbookPage(XSDWorkbook workbook)
-    {
-      super(workbook);
-      this.getTabItem().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_PATTERNS")); //$NON-NLS-1$
-    }
-
-    public Control createControl (Composite parent)
-    {
-      composite = getWidgetFactory().createFlatFormComposite(parent);
-      FormData data;
-
-      patternsTable = new PatternsTableViewer(getWidgetFactory().createTable(composite, SWT.MULTI | SWT.FULL_SELECTION));
-      patternsTable.setInput(getInput());
-      Table table = patternsTable.getTable();
-      table.addSelectionListener(this);
-
-      addButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_ADD"), SWT.PUSH); //$NON-NLS-1$
-      editButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_EDIT"), SWT.PUSH); //$NON-NLS-1$
-      deleteButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_INCLUDE"), SWT.PUSH); //$NON-NLS-1$
-
-      data = new FormData();
-      data.left = new FormAttachment(100, -100);
-      data.right = new FormAttachment(100, 0);
-      data.top = new FormAttachment(0, 0);
-      addButton.setLayoutData(data);
-      addButton.addSelectionListener(this);
-
-      data = new FormData();
-      data.left = new FormAttachment(addButton, 0, SWT.LEFT);
-      data.right = new FormAttachment(100, 0);
-      data.top = new FormAttachment(addButton, 0);
-      editButton.setLayoutData(data);
-      editButton.setEnabled(false);
-      editButton.addSelectionListener(this);
-      
-      data = new FormData();
-      data.left = new FormAttachment(addButton, 0, SWT.LEFT);
-      data.right = new FormAttachment(100, 0);
-      data.top = new FormAttachment(editButton, 0);
-      deleteButton.setLayoutData(data);
-      deleteButton.setEnabled(false);
-      deleteButton.addSelectionListener(this);
-      
-      data = new FormData();
-      data.top = new FormAttachment(0, 0);
-      data.left = new FormAttachment(0, 0);
-      data.right = new FormAttachment(addButton, 0);
-      data.bottom = new FormAttachment(100, 0);
-      data.width = tableMinimumWidth;
-      table.setLayoutData(data);
-      table.addListener(SWT.Resize, this);
-      
-      return composite;
-    }
-    
-    public void handleEvent(Event event)
-    {
-      Table table = patternsTable.getTable();
-      if (event.type == SWT.Resize && event.widget == table)
-      {
-        TableColumn tableColumn = table.getColumn(0);
-        tableColumn.setWidth(table.getSize().x);
-      }
-    }
-
-    
-    public void setInput(Object input)
-    {
-      patternsTable.setInput(input);
-      if (isReadOnly)
-      {
-        composite.setEnabled(false);
-      }
-      else
-      {
-        composite.setEnabled(true);
-      }
-    }
-    
-    public void widgetSelected(SelectionEvent e)
-    {
-      XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
-      Element element = st.getElement();
-
-      if (e.widget == addButton)
-      {
-        XSDDOMHelper helper = new XSDDOMHelper();
-        
-        int variety = st.getVariety().getValue();
-        Node varietyElement = null;
-        if (variety == XSDVariety.ATOMIC)
-        {
-          varietyElement = helper.getChildNode(element, XSDConstants.RESTRICTION_ELEMENT_TAG);
-        }
-        else if (variety == XSDVariety.UNION)
-        {
-          varietyElement = helper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
-        }
-        else if (variety == XSDVariety.LIST)
-        {
-          varietyElement = helper.getChildNode(element, XSDConstants.LIST_ELEMENT_TAG);
-        }
-              
-        if (varietyElement != null)
-        {
-          Shell shell = Display.getCurrent().getActiveShell();
-
-          String initialValue = ""; //$NON-NLS-1$
-          RegexWizard wizard = new RegexWizard(initialValue);
-
-          WizardDialog wizardDialog = new WizardDialog(shell, wizard);
-          wizardDialog.setBlockOnOpen(true);
-          wizardDialog.create();
-          
-          int result = wizardDialog.open();
-
-          if (result == Window.OK)
-          {
-            String newPattern = wizard.getPattern();
-            
-            java.util.List attributes = new ArrayList();
-            attributes.add(new DOMAttribute(XSDConstants.VALUE_ATTRIBUTE, newPattern));
-            beginRecording(XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_PATTERN"), element); //$NON-NLS-1$
-            Action action = getNewElementAction(XSDConstants.PATTERN_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_PATTERN"), attributes, (Element)varietyElement, null); //$NON-NLS-1$
-            action.run();
-            st.setElement(element);
-            endRecording(element);
-            patternsTable.refresh();
-            attributes = null;
-          }
-        }
-      }
-      else if (e.widget == deleteButton)
-      {
-        StructuredSelection selection = (StructuredSelection)patternsTable.getSelection();
-        if (selection != null)
-        {
-          Iterator i = selection.iterator();
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_ACTION_DELETE_INCLUDE"), element); // Reword ?
-          while (i.hasNext())
-          {
-            Object obj = i.next();
-            if (obj != null)
-            {
-              if (obj instanceof XSDPatternFacet)
-              {
-                XSDPatternFacet patternFacet = (XSDPatternFacet)obj;
-      
-                // I have to update using DOM
-                XSDDOMHelper.removeNodeAndWhitespace(patternFacet.getElement());            
-              }
-            }
-          }
-          st.setElement(element);
-          endRecording(element);
-          patternsTable.refresh();
-          if (patternsTable.getTable().getItemCount() == 0)
-          {
-            editButton.setEnabled(false);
-            deleteButton.setEnabled(false);
-          }
-        }
-      }
-      else if (e.widget == editButton)
-      {
-        StructuredSelection selection = (StructuredSelection)patternsTable.getSelection();
-        if (selection != null)
-        {
-          Object obj = selection.getFirstElement();
-          if (obj instanceof XSDPatternFacet)
-          {
-            XSDPatternFacet pattern = (XSDPatternFacet)obj;
-            String initialValue = pattern.getLexicalValue();
-            if (initialValue == null)
-            {
-              initialValue = ""; //$NON-NLS-1$
-            }
-
-            Shell shell = Display.getCurrent().getActiveShell();
-
-            RegexWizard wizard = new RegexWizard(initialValue);
-
-            WizardDialog wizardDialog = new WizardDialog(shell, wizard);
-            wizardDialog.setBlockOnOpen(true);
-            wizardDialog.create();
-            
-            int result = wizardDialog.open();
-
-            if (result == Window.OK)
-            {
-              String newPattern = wizard.getPattern();
-              beginRecording(XSDEditorPlugin.getXSDString("_UI_PATTERN_VALUE_CHANGE"), element); //$NON-NLS-1$
-              element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, newPattern);
-              pattern.setLexicalValue(newPattern);
-              endRecording(element);
-              patternsTable.refresh();
-            }
-          }
-        }
-      }
-      else if (e.widget == patternsTable.getTable())
-      {
-        StructuredSelection selection = (StructuredSelection)patternsTable.getSelection();
-        if (selection.getFirstElement() != null)
-        {
-          editButton.setEnabled(true);
-          deleteButton.setEnabled(true);
-        }
-        else
-        {
-          editButton.setEnabled(false);
-          deleteButton.setEnabled(false);
-        }
-      }
-      
-    }
-
-    public void widgetDefaultSelected(SelectionEvent e)
-    {
-      
-    }
-  }
-
-  
-  class PatternsTableViewer extends NavigableTableViewer implements ICellModifier
-  {
-    protected String[] columnProperties = {"Pattern"};
-
-    protected CellEditor[] cellEditors;
-
-    Table table;
-    
-    public PatternsTableViewer(Table table)
-    {
-      super(table);
-      table = getTable();
-      
-      table.setLinesVisible(true);
-      
-      setContentProvider(new PatternsTableContentProvider());
-      setLabelProvider(new PatternsTableLabelProvider());
-      setColumnProperties(columnProperties);
-
-      setCellModifier(this);
-
-      TableColumn column = new TableColumn(table, SWT.NONE, 0);
-      column.setText(columnProperties[0]);
-      column.setAlignment(SWT.LEFT);
-      column.setResizable(true);
- 
-      cellEditors = new CellEditor[1];
-
-      TableLayout layout = new TableLayout();
-      ColumnWeightData data = new ColumnWeightData(100);
-      layout.addColumnData(data);
-      cellEditors[0] = new TextCellEditor(table);
-
-      getTable().setLayout(layout);
-      setCellEditors(cellEditors);
-    }
-    
-    public boolean canModify(Object element, String property)
-    {
-      return true;
-    }
-
-    public void modify(Object element, String property, Object value)
-    {
-      if (element instanceof TableItem && (value != null))
-      {
-        TableItem item = (TableItem)element;
-        
-        Element simpleTypeElement = ((XSDSimpleTypeDefinition)getInput()).getElement();
-        FacetsSection.this.beginRecording(XSDEditorPlugin.getXSDString("_UI_PATTERN_VALUE_CHANGE"), simpleTypeElement); //$NON-NLS-1$
-        
-        XSDPatternFacet patternFacet = (XSDPatternFacet)item.getData();
-        patternFacet.setLexicalValue((String)value);
-
-        item.setData(patternFacet);
-        item.setText((String)value);
-        FacetsSection.this.endRecording(simpleTypeElement);
-      }
-    }    
-
-    public Object getValue(Object element, String property)
-    {
-      if (element instanceof XSDPatternFacet)
-      {
-        XSDPatternFacet patternFacet = (XSDPatternFacet)element;
-        String value = patternFacet.getLexicalValue();
-        if (value == null) value = ""; //$NON-NLS-1$
-        return value;
-      }
-      return ""; //$NON-NLS-1$
-    }
-
-  }
-    
-  class PatternsTableContentProvider implements IStructuredContentProvider
-  {
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
-    {
-    }
-
-    public java.lang.Object[] getElements(java.lang.Object inputElement)
-    {
-      java.util.List list = new ArrayList();
-      if (inputElement instanceof XSDSimpleTypeDefinition)
-      {
-        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)inputElement;
-        return st.getPatternFacets().toArray();
-      }
-      return list.toArray();
-    }
-
-    public void dispose()
-    {
-    }
-  }
-
-  class PatternsTableLabelProvider extends LabelProvider implements ITableLabelProvider
-  {
-    public PatternsTableLabelProvider()
-    {
-      
-    }
-    
-    public Image getColumnImage(Object element, int columnIndex)
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDSimplePattern.gif"); //$NON-NLS-1$
-    }
-    
-    public String getColumnText(Object element, int columnIndex)
-    {
-      if (element instanceof XSDPatternFacet)
-      {
-        XSDPatternFacet pattern = (XSDPatternFacet)element;
-        String value = pattern.getLexicalValue();
-        if (value == null) value = ""; //$NON-NLS-1$
-        return value;
-      }
-      return ""; //$NON-NLS-1$
-    }
-
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSectionDescriptor.java
deleted file mode 100644
index c188f7c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/FacetsSectionDescriptor.java
+++ /dev/null
@@ -1,87 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-
-public class FacetsSectionDescriptor extends AbstractSectionDescriptor
-{
-
-  /**
-   * 
-   */
-  public FacetsSectionDescriptor()
-  {
-    super();
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.facets";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDSimpleTypeDefinition.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new FacetsSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.facets";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDSimpleTypeDefinition)
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSection.java
deleted file mode 100644
index 36b5918..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSection.java
+++ /dev/null
@@ -1,282 +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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDParticleContent;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class MinMaxSection extends AbstractSection
-{
-  CCombo minCombo;
-  CCombo maxCombo;
-
-  /**
-   * 
-   */
-  public MinMaxSection()
-  {
-    super();
-  }
-
-
-  public void doHandleEvent(Event event)
-	{
-    if (event.widget == minCombo)
-    {
-      updateMinAttribute();
-	  }
-	  else if (event.widget == maxCombo)
-	  {
-      updateMaxAttribute();
-	  }
-	}
-  
-  public void doWidgetSelected(SelectionEvent e)
-  {
-    if (e.widget == minCombo)
-    {
-      updateMinAttribute();
-    }
-    else if (e.widget == maxCombo)
-    {
-      updateMaxAttribute();
-    }
-  }
-
-  private void updateMinAttribute()
-  {
-    XSDParticle particle = null;
-    Object input = getInput();
-
-    if (input instanceof XSDParticleContent)
-    {
-      particle = getAssociatedParticle((XSDParticleContent)input);
-    }
-    if (particle != null)
-    {
-      Element element = particle.getElement();
-      String newValue = ""; //$NON-NLS-1$
-
-      newValue = minCombo.getText();
-      beginRecording(XSDEditorPlugin.getXSDString("_UI_MINOCCURS_CHANGE"), element); //$NON-NLS-1$        
-      if (newValue.length()==0)
-      {
-        particle.unsetMinOccurs();
-      }
-      try
-      {
-        if (newValue.equals("unbounded") || newValue.equals("*")) //$NON-NLS-1$
-        {
-          particle.setMinOccurs(XSDParticle.UNBOUNDED);
-        }
-        else
-        {
-          int val = Integer.parseInt(newValue);
-          particle.setMinOccurs(val);
-        }
-      }
-      catch (NumberFormatException e)
-      {
-      
-      }
-      finally
-      { 
-        endRecording(element);
-      }
-    }
-  }
-  
-  private void updateMaxAttribute()
-  {
-    XSDParticle particle = null;
-    Object input = getInput();
-
-    if (input instanceof XSDParticleContent)
-    {
-      particle = getAssociatedParticle((XSDParticleContent)input);
-    }
-    if (particle != null)
-    {
-      Element element = particle.getElement();
-      String newValue = "";
-      newValue = maxCombo.getText();
-      beginRecording(XSDEditorPlugin.getXSDString("_UI_MAXOCCURS_CHANGE"), element); //$NON-NLS-1$
-      if (newValue.length()==0)
-      {
-        particle.unsetMaxOccurs();
-      }
-      try
-      {
-        if (newValue.equals("unbounded") || newValue.equals("*")) //$NON-NLS-1$
-        {
-          particle.setMaxOccurs(XSDParticle.UNBOUNDED);
-        }
-        else
-        {
-          int val = Integer.parseInt(newValue);
-            particle.setMaxOccurs(val);
-        }
-      }
-      catch (NumberFormatException e)
-      {
-        
-      }
-      finally
-      {
-        endRecording(element);
-      }
-    }    
-  }
-  
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-
-	public void createControls(Composite parent,TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		composite =	getWidgetFactory().createFlatFormComposite(parent);
-		FormData data;
-
-    minCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
-    data = new FormData();
-    data.left = new FormAttachment(0, 100);
-    data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-    data.top = new FormAttachment(0, 0);
-    minCombo.setLayoutData(data);
-    minCombo.add("0"); //$NON-NLS-1$
-    minCombo.add("1"); //$NON-NLS-1$
-    minCombo.addListener(SWT.Modify, this);
-    minCombo.addSelectionListener(this);
-    
-		CLabel minLabel = getWidgetFactory().createCLabel(composite, XSDConstants.MINOCCURS_ATTRIBUTE + ":");
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(minCombo, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(minCombo, 0, SWT.CENTER);
-		minLabel.setLayoutData(data);
-
-    maxCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
-    data = new FormData();
-    data.left = new FormAttachment(0, 100);
-    data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-    data.top = new FormAttachment(minCombo, +ITabbedPropertyConstants.VSPACE);
-    maxCombo.setLayoutData(data);
-    maxCombo.add("0"); //$NON-NLS-1$
-    maxCombo.add("1"); //$NON-NLS-1$
-    maxCombo.add("unbounded"); //$NON-NLS-1$
-    maxCombo.addListener(SWT.Modify, this);
-    maxCombo.addSelectionListener(this);
-    
-		CLabel maxLabel = getWidgetFactory().createCLabel(composite, XSDConstants.MAXOCCURS_ATTRIBUTE + ":");
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(maxCombo, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(maxCombo, 0, SWT.CENTER);
-		maxLabel.setLayoutData(data);
-	}
-
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-    if (doRefresh)
-    {
-      if (isReadOnly)
-      {
-        composite.setEnabled(false);
-      }
-      else
-      {
-        composite.setEnabled(true);
-      }
-
-  	  setListenerEnabled(false);
-      boolean refreshMinText = true;
-      boolean refreshMaxText = true;
-      if (minCombo.isFocusControl())
-      {
-        refreshMinText = false;
-      }
-      if (maxCombo.isFocusControl())
-      {
-        refreshMaxText = false;
-      }
-      if (refreshMinText)
-      {
-        minCombo.setText(""); //$NON-NLS-1$
-      }
-      if (refreshMaxText)
-      {
-        maxCombo.setText(""); //$NON-NLS-1$
-      }
-  	  Object input = getInput();
-  	  if (input != null)
-  	  {
-  	    if (input instanceof XSDParticleContent)
-  	    {
-  		    XSDParticle particle = getAssociatedParticle((XSDParticleContent)input);
-  		    if (particle != null)
-  		    {
-  //  	      minText.setText(String.valueOf(particle.getMinOccurs()));
-  //	        maxText.setText(String.valueOf(particle.getMaxOccurs()));
-            Element element = particle.getElement();
-  		      if (element != null)
-  		      {
-  		        String min = element.getAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
-  		        String max = element.getAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
-  		        if (min != null && refreshMinText)
-  		        {
-  		          minCombo.setText(min);
-  		        }
-  		        if (max != null && refreshMaxText)
-  		        {
-  		          maxCombo.setText(max);
-  		        }
-  		      }
-  		    }
-  	    }
-  	  }
-  	  setListenerEnabled(true);
-    }
-	}
-	
-  public boolean shouldUseExtraSpace()
-  {
-    return false;
-  }
-
-  private XSDParticle getAssociatedParticle(XSDParticleContent particleContent)
-  {
-    XSDConcreteComponent xsdComp = particleContent.getContainer();
-    if (xsdComp instanceof XSDParticle)
-    {
-      return (XSDParticle)xsdComp;
-    }
-    return null;
-  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSectionDescriptor.java
deleted file mode 100644
index b82b234..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/MinMaxSectionDescriptor.java
+++ /dev/null
@@ -1,145 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDWildcard;
-
-public class MinMaxSectionDescriptor extends AbstractSectionDescriptor
-{
-  /**
-   * 
-   */
-  public MinMaxSectionDescriptor()
-  {
-    super();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.minmax";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDElementDeclaration.class);
-    list.add(XSDModelGroup.class);
-    list.add(XSDWildcard.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new MinMaxSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.general";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-//      if (object instanceof XSDElementDeclaration)
-//      {
-//        Element element = ((XSDElementDeclaration)object).getElement();
-//        Object parentNode = element.getParentNode();
-//        // minOccurs and maxOccurs apply to non-global elements
-//        boolean isGlobalElement = XSDDOMHelper.inputEquals(parentNode, XSDConstants.SCHEMA_ELEMENT_TAG, false);
-//        return !isGlobalElement;
-//      }
-//      if (object instanceof XSDParticle)
-//      {
-//        XSDParticle particle = (XSDParticle)object;
-//        Element element = particle.getElement();
-//        if (inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-//        {
-//          return true;
-//        }
-//        else if (inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, true))
-//        {
-//          return false;
-//        }
-//        else
-//        {
-//          return true;
-//        }
-//      }
-      if (object instanceof XSDModelGroup)
-      {
-        return true;
-      }
-      else if (object instanceof XSDElementDeclaration)
-      {
-        XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)object;
-        if (xsdElementDeclaration.isGlobal())
-        {
-          return false;
-        }
-        else
-        {
-          return true;
-        }
-      }
-      else if (object instanceof XSDWildcard)
-      {
-        XSDWildcard wildcard = (XSDWildcard)object;
-        if (wildcard.getContainer() instanceof XSDComplexTypeDefinition ||
-            wildcard.getContainer() instanceof XSDAttributeGroupDefinition)
-        {
-          return false;
-        }
-        else
-        {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  
-  public String getAfterSection()
-  {
-    return "org.eclipse.wst.wsdleditor.section.reference";
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSection.java
deleted file mode 100644
index bfc6f8a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSection.java
+++ /dev/null
@@ -1,144 +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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDModelGroup;
-import org.w3c.dom.Element;
-
-public class ModelGroupSection extends AbstractSection
-{
-  CCombo modelGroupCombo;
-  private String[] modelGroupComboValues = { "sequence", "choice", "all" }; //$NON-NLS-1$
-  
-  /**
-   * 
-   */
-  public ModelGroupSection()
-  {
-    super();
-  }
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		composite = getWidgetFactory().createFlatFormComposite(parent);
-		FormData data;
-
-		modelGroupCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
-		data = new FormData();
-		data.left = new FormAttachment(0, 100);
-		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(0, 0);
-		modelGroupCombo.setLayoutData(data);
-		modelGroupCombo.addSelectionListener(this);
-		modelGroupCombo.setItems(modelGroupComboValues);
-
-		CLabel cLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_KIND")); //$NON-NLS-1$
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(modelGroupCombo, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(modelGroupCombo, 0, SWT.CENTER);
-		cLabel.setLayoutData(data);
-
-	}
- 	
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-	  setListenerEnabled(false);
-    if (isReadOnly)
-    {
-      composite.setEnabled(false);
-    }
-    else
-    {
-      composite.setEnabled(true);
-    }
-	  Object input = getInput();
-	  if (input != null)
-	  {
-      if (input instanceof XSDModelGroup)
-	    {
-	      XSDModelGroup particle = (XSDModelGroup)input;
-	      String modelType = particle.getCompositor().getName();
-	      modelGroupCombo.setText(modelType);
-	    }
-	  }
-	  setListenerEnabled(true);
-	}
-
-  public void widgetSelected(SelectionEvent e)
-  {
-    if (e.widget == modelGroupCombo)
-    {
-      Object input = getInput();
-	    if (input instanceof XSDModelGroup)
-	    {
-	      XSDModelGroup particle = (XSDModelGroup)input;
-
-        Element element = particle.getElement();
-        Element parent = (Element)element.getParentNode();
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_SCOPE_CHANGE"), parent); //$NON-NLS-1$
-//        changeContentModel(parent, modelGroupCombo.getText());
-        particle.setCompositor(XSDCompositor.get(modelGroupCombo.getText()));      
-        endRecording(parent);
-        refresh();
-	    }
-    }
-  }
-
-//  private void changeContentModel(Element parent, String contentModel)
-//  {
-//    Document doc = parent.getOwnerDocument();
-//    XSDDOMHelper domHelper = getDomHelper();
-//  
-//    String prefix = parent.getPrefix();
-//    prefix = prefix == null ? "" : prefix + ":";
-//    
-//    Element contentModelElement = domHelper.getContentModelFromParent(parent);
-//  
-//    if (contentModelElement.getLocalName().equals(contentModel))
-//    {
-//      return; // it's already the content model 
-//    }
-//  
-//    Element newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + contentModel);
-//  
-//    if (contentModelElement.hasChildNodes())
-//    {        
-//      NodeList nodes = contentModelElement.getChildNodes();
-//      // use clones so we don't have a refresh problem
-//      for (int i = 0; i < nodes.getLength(); i++)
-//      {
-//        Node node = nodes.item(i);
-//        newNode.appendChild(node.cloneNode(true)); 
-//      }
-//    }
-//    parent.replaceChild(newNode, contentModelElement);
-//  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSectionDescriptor.java
deleted file mode 100644
index 2f91552..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ModelGroupSectionDescriptor.java
+++ /dev/null
@@ -1,84 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDModelGroup;
-
-public class ModelGroupSectionDescriptor extends AbstractSectionDescriptor
-{
-  /**
-   * 
-   */
-  public ModelGroupSectionDescriptor()
-  {
-    super();
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.modelgroup";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDModelGroup.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new ModelGroupSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.general";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDModelGroup)
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-  
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSection.java
deleted file mode 100644
index 28c9abf..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSection.java
+++ /dev/null
@@ -1,427 +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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDComponent;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class NameSection extends AbstractSection
-{
-  /**
-   * 
-   */
-  public NameSection()
-  {
-    super();
-  }
-  
-	Text nameText;
-
-	
-  public void doHandleEvent(Event event) 
-  {
-    if (event.widget == nameText)
-	  {
-			Object input = getInput();
-      String newValue = nameText.getText();
-	    if (input instanceof XSDNamedComponent)
-	    {
-	      XSDNamedComponent namedComponent = (XSDNamedComponent)input;
-	      if (newValue.length() > 0)
-	      {
-	        namedComponent.setName(newValue);
-          doReferentialIntegrityCheck(namedComponent, newValue);
-	      }
-	      else
-	      {
-          // TODO: Show error message
-	      }
-	    }
-//	    else if (input instanceof XSDParticle)
-//	    {
-//	      XSDParticle xsdParticle = (XSDParticle)input;
-//	      if (newValue.length() > 0)
-//	      {
-//	        doReferentialIntegrityCheck(xsdParticle, newValue);
-//	      }
-//	      else
-//	      {
-//	        // TODO: Show error message
-//	      }
-//	    }
-      else if (input instanceof XSDAttributeDeclaration)
-      {
-        XSDAttributeDeclaration attribute = (XSDAttributeDeclaration)input;
-	      if (newValue.length() > 0)
-	      {
-	        doReferentialIntegrityCheck(attribute, newValue);
-	        attribute.setName(newValue);
-	      }
-	      else
-	      {
-	        // TODO: Show error message
-	      }
-      }
-	    else if (input instanceof XSDAttributeUse)
-      {
-        XSDAttributeUse attributeUse = (XSDAttributeUse)input;
-        XSDAttributeDeclaration attribute = attributeUse.getAttributeDeclaration();
-	      if (newValue.length() > 0)
-	      {
-	        doReferentialIntegrityCheck(attribute, newValue);
-	        attribute.setName(newValue);
-	        attributeUse.setAttributeDeclaration(attribute);
-	      }
-	      else
-	      {
-          // TODO: Show error message
-	      }
-      }
-	  }
-	}
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		composite =	getWidgetFactory().createFlatFormComposite(parent);
-		FormData data;
-
-		nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
-		data = new FormData();
-		data.left = new FormAttachment(0, 100);
-		// data.right = new FormAttachment(95, 0);
-    data.right = new FormAttachment(100, -rightMarginSpace -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(0, 0);
-		nameText.setLayoutData(data);
-		nameText.addListener(SWT.Modify, this);
-
-		CLabel nameLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_NAME")); //$NON-NLS-1$
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(nameText, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(nameText, 0, SWT.CENTER);
-		nameLabel.setLayoutData(data);
-	}
-
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-    if (nameText.isFocusControl())
-    {
-      return;
-    }
-    setListenerEnabled(false);
-    nameText.setEditable(true);
-    if (isReadOnly)
-    {
-      composite.setEnabled(false);
-    }
-    else
-    {
-      composite.setEnabled(true);
-    }
-	  Object input = getInput();
-	  nameText.setText(""); //$NON-NLS-1$
-	  if (input != null)
-	  {
-	    if (input instanceof XSDComplexTypeDefinition || input instanceof XSDSimpleTypeDefinition)
-	    {
-	      XSDTypeDefinition type = (XSDTypeDefinition)input;
-	      
-	      Element element = type.getElement();
-        String name = element.getAttribute(XSDConstants.NAME_ATTRIBUTE);
-        if (name == null) name = "";
-        
-        boolean isAnonymousType = checkForAnonymousType(element);
-        if (isAnonymousType)
-        {
-          nameText.setText("**anonymous**"); //$NON-NLS-1$
-          nameText.setEditable(false);
-        }
-        else
-        {
-          nameText.setText(name);
-          nameText.setEditable(true);
-        }
-	    }
-	    else if (input instanceof XSDNamedComponent)
-	    {
-	      XSDNamedComponent namedComponent = (XSDNamedComponent)input;
-          String name = namedComponent.getName();
-	      if (name != null)
-	      {
-	        nameText.setText(name);
-	      }
-	    }
-      else if (input instanceof XSDAttributeDeclaration)
-      {
-        XSDAttributeDeclaration attribute = (XSDAttributeDeclaration)input;
-        //String name = attribute.getName();
-        Element element = attribute.getElement();
-        String name = element.getAttribute(XSDConstants.NAME_ATTRIBUTE);
-        if (name != null)
-	      {
-	        nameText.setText(name);
-	      }
-      }
-	    else if (input instanceof XSDAttributeUse)
-      {
-        XSDAttributeUse attributeUse = (XSDAttributeUse)input;
-        XSDAttributeDeclaration attribute = attributeUse.getAttributeDeclaration();
-        String name = attribute.getName();
-        if (name != null)
-	      {
-	        nameText.setText(name);
-	      }
-      }
-//	    else if (input instanceof Element)
-//	    {
-//	      String name = ((Element)input).getAttribute(XSDConstants.NAME_ATTRIBUTE);
-//	      if (name == null) name = "";
-//	      nameText.setText(name);
-//	    }
-	  }
-	  setListenerEnabled(true);
-	}
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
-   */
-  public boolean shouldUseExtraSpace()
-  {
-    return false;
-  }
-
-	private void doReferentialIntegrityCheck(XSDComponent xsdComponent, String newValue)
-	{
-    }
-/*    
-    Element element = xsdComponent.getElement();
-    if (XSDDOMHelper.inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-    {
-      if (validateName(newValue))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_NAME_CHANGE"), element); //$NON-NLS-1$
-        element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-        if (xsdComponent instanceof XSDNamedComponent)
-        {
-          ((XSDNamedComponent)xsdComponent).setName(newValue);
-        }
-        
-        // now rename any references to this element
-       
-        if (xsdSchema != null)
-        {
-          XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-          if (comp != null && comp instanceof XSDElementDeclaration && comp.getContainer().equals(xsdSchema))
-          {
-            GlobalElementRenamer renamer = new GlobalElementRenamer((XSDNamedComponent)comp, newValue);
-            renamer.visitSchema(xsdSchema);
-          }
-        }        
-        endRecording(element);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-    {
-      if (validateName(newValue))
-      {
-	      beginRecording(XSDEditorPlugin.getXSDString("_UI_COMPLEXTYPE_NAME_CHANGE"), element); //$NON-NLS-1$
-	      if (newValue.length() > 0)
-	      {
-	        // now rename any references to this type
-	        if (xsdSchema != null)
-	        {
-	          XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-	          if (comp != null && comp instanceof XSDComplexTypeDefinition && comp.getContainer().equals(xsdSchema))
-	          {
-	            GlobalSimpleOrComplexTypeRenamer renamer = new GlobalSimpleOrComplexTypeRenamer((XSDNamedComponent)comp, newValue);
-	            renamer.visitSchema(xsdSchema);
-	          }
-	        }
-	        element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-	        ((XSDNamedComponent)xsdComponent).setName(newValue);
-	      }
-	      else
-	      {
-	        element.removeAttribute(XSDConstants.NAME_ATTRIBUTE);
-	      }
-      endRecording(element);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-    {
-      beginRecording(XSDEditorPlugin.getXSDString("_UI_SIMPLETYPE_NAME_CHANGE"), element);
-      if (validateName(newValue))
-      {
-        // now rename any references to this type
-        if (newValue.length() > 0)
-        {
-          if (xsdSchema != null)
-          {
-            XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-            if (comp != null && comp instanceof XSDSimpleTypeDefinition && comp.getContainer().equals(xsdSchema))
-            {
-              GlobalSimpleOrComplexTypeRenamer renamer = new GlobalSimpleOrComplexTypeRenamer((XSDNamedComponent)comp, newValue);
-              renamer.visitSchema(xsdSchema);
-            }
-          }
-//          element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-        }
-        else
-        {
-          element.setAttribute(XSDConstants.NAME_ATTRIBUTE, "");
-        }
-      }
-      endRecording(element);
-
-    }
-    else if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
-    {  
-      beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_NAME_CHANGE"), element); //$NON-NLS-1$
-      // now rename any references to this element
-      if (xsdSchema != null)
-       {
-        XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-        if (comp != null && comp instanceof XSDAttributeDeclaration && comp.getContainer().equals(xsdSchema))
-        {
-          GlobalAttributeRenamer renamer = new GlobalAttributeRenamer((XSDNamedComponent)comp, newValue);
-          renamer.visitSchema(xsdSchema);
-        }
-      }
-      // element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-      endRecording(element);
-    }
-    else if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false))
-    {  
-      beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTEGROUP_NAME_CHANGE"), element); //$NON-NLS-1$
-      ((XSDNamedComponent)xsdComponent).setName(newValue);
-      // now rename any references to this element
-      if (xsdSchema != null)
-      {
-        XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-        if (comp != null && comp instanceof XSDAttributeGroupDefinition && comp.getContainer().equals(xsdSchema))
-        {
-          GlobalAttributeGroupRenamer renamer = new GlobalAttributeGroupRenamer((XSDNamedComponent)comp, newValue);
-          renamer.visitSchema(xsdSchema);
-        }
-      }
-      endRecording(element);
-    }
-    else if (XSDDOMHelper.inputEquals(element, XSDConstants.UNIQUE_ELEMENT_TAG, false))
-    {
-      if (validateName(newValue))
-       {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_UNIQUE_NAME_CHANGE"), element); //$NON-NLS-1$
-        if (newValue.length() > 0)
-        {
-          element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-        }
-        else
-        {
-          element.setAttribute(XSDConstants.NAME_ATTRIBUTE, ""); //$NON-NLS-1$
-        }
-        endRecording(element);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(element, XSDConstants.KEY_ELEMENT_TAG, false))
-    {
-      if (validateName(newValue))
-      {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_KEY_NAME_CHANGE"), element); //$NON-NLS-1$
-        if (newValue.length() > 0)
-        {
-          element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-        }
-        else
-        {
-          element.setAttribute(XSDConstants.NAME_ATTRIBUTE, ""); //$NON-NLS-1$
-        }
-        endRecording(element);
-      }
-    }
-    else if (XSDDOMHelper.inputEquals(element, XSDConstants.GROUP_ELEMENT_TAG, false))
-    {
-      if (validateName(newValue))
-       {
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_NAME_CHANGE"), element); //$NON-NLS-1$
-        // now rename any references to this element
-        if (xsdSchema != null)
-         {
-          XSDConcreteComponent comp = xsdSchema.getCorrespondingComponent(element);
-          if (comp != null && comp instanceof XSDModelGroupDefinition && comp.getContainer().equals(xsdSchema))
-          {
-            GlobalGroupRenamer renamer = new GlobalGroupRenamer((XSDNamedComponent)comp, newValue);
-            renamer.visitSchema(xsdSchema);
-          }
-        }
-        element.setAttribute(XSDConstants.NAME_ATTRIBUTE, newValue);
-        endRecording(element);
-      }
-      
-    }
-    
-
-
-	}*/
-
-  boolean checkForAnonymousType(Element element)
-  {
-    Object parentElement = (Object)element.getParentNode();
-    boolean isAnonymous = false;
-    if (parentElement != null)
-    {
-      if (XSDDOMHelper.inputEquals(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-      {
-        if (XSDDOMHelper.inputEquals(parentElement, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-        {
-          isAnonymous = true; 
-        }
-      }
-      else if (XSDDOMHelper.inputEquals(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-      {
-        if (XSDDOMHelper.inputEquals(parentElement, XSDConstants.RESTRICTION_ELEMENT_TAG, false) ||
-            XSDDOMHelper.inputEquals(parentElement, XSDConstants.ELEMENT_ELEMENT_TAG, false) ||
-            XSDDOMHelper.inputEquals(parentElement, XSDConstants.UNION_ELEMENT_TAG, false) ||
-            XSDDOMHelper.inputEquals(parentElement, XSDConstants.LIST_ELEMENT_TAG, false) ||
-            XSDDOMHelper.inputEquals(parentElement, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
-        {
-          isAnonymous = true;
-        }
-      }
-    }
-    return isAnonymous;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSectionDescriptor.java
deleted file mode 100644
index e4349ea..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NameSectionDescriptor.java
+++ /dev/null
@@ -1,168 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class NameSectionDescriptor extends AbstractSectionDescriptor implements ISectionDescriptor
-{
-  /**
-   * 
-   */
-  public NameSectionDescriptor()
-  {
-    super();
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.name";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDNamedComponent.class);
-    list.add(XSDAttributeUse.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new NameSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.general";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDNamedComponent)
-      {
-        XSDNamedComponent namedComponent = (XSDNamedComponent)object;
-        Element element = namedComponent.getElement();
-        
-        if (inputEquals(element, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false) ||
-            inputEquals(element, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-        {
-          return false;
-        }
-        
-        // don't want to show editable name section for ref's
-        // need to show ref section with a combobox
-        
-        if (namedComponent instanceof XSDElementDeclaration)
-        {
-          if (((XSDElementDeclaration)namedComponent).isElementDeclarationReference())
-          {
-            return false;
-          }
-          else
-          {
-            return true;
-          }
-        }
-        else if (namedComponent instanceof XSDAttributeDeclaration)
-        {
-          if (((XSDAttributeDeclaration)namedComponent).isAttributeDeclarationReference())
-          {
-            return false;
-          }
-          else
-          {
-            return true;
-          }
-        }
-
-        if (element != null)
-        {
-          if (inputEquals(element, element.getLocalName(), true))
-          {
-            return false;
-          }
-          else
-          {
-            return true;
-          }
-        }
-      }
-//      else if (object instanceof XSDParticle)
-//      {
-//        XSDParticle particle = (XSDParticle)object;
-//        Element element = particle.getElement();
-//        if (inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-//        {
-//          return true;
-//        }
-//        else if (inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, true))
-//        {
-//          return false;
-//        }
-//        else
-//        {
-//          return false;
-//        }
-//      }
-      else if (object instanceof XSDAttributeUse)
-      {
-        XSDAttributeUse attributeUse = (XSDAttributeUse)object;
-        Element element = attributeUse.getElement();
-        if (inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
-        {
-          return true;
-        }
-        else
-        {
-          return false;
-        }
-      }
-
-    }
-
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationDescriptor.java
deleted file mode 100644
index f86fe2d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationDescriptor.java
+++ /dev/null
@@ -1,87 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDImport;
-
-public class NamespaceAndSchemaLocationDescriptor extends AbstractSectionDescriptor
-{
-	  NamespaceAndSchemaLocationSection namespaceAndSchemaLocationSection;
-	  /**
-	   * 
-	   */
-	  public NamespaceAndSchemaLocationDescriptor()
-	  {
-	    super();
-	    namespaceAndSchemaLocationSection = new NamespaceAndSchemaLocationSection();
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-	   */
-	  public String getId()
-	  {
-	    return "org.eclipse.wst.xsdeditor.section.namespaceAndSchemaLocationSection";
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-	   */
-	  public List getInputTypes()
-	  {
-	    List list = new ArrayList();
-	    list.add(XSDConcreteComponent.class);
-	    return list;
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-	   */
-	  public ISection getSectionClass()
-	  {
-	    return namespaceAndSchemaLocationSection;
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-	   */
-	  public String getTargetTab()
-	  {
-	    return "org.eclipse.wst.xmlwebservices.general";
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-	   */
-	  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-	  {
-	    Object object = null;	    
-	    
-	    if (selection instanceof StructuredSelection)
-	    {
-	      StructuredSelection structuredSelection = (StructuredSelection)selection;
-	      object = structuredSelection.getFirstElement();
-	      if (object instanceof XSDImport) {
-		    return true;
-	      }
-	    }
-	    
-	    return false;
-	  }
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationSection.java
deleted file mode 100644
index 7d4d06f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceAndSchemaLocationSection.java
+++ /dev/null
@@ -1,360 +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.properties.section;
-
-import java.util.Map;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.wst.common.ui.internal.viewers.ResourceFilter;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.XSDExternalFileCleanup;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaHelper;
-import org.eclipse.wst.xsd.ui.internal.wizards.XSDSelectIncludeFileWizard;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.impl.XSDImportImpl;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class NamespaceAndSchemaLocationSection extends CommonDirectivesSection
-{
-	Text namespaceText, prefixText;
-  protected String oldPrefixValue;
-	  
-	public NamespaceAndSchemaLocationSection()
-  {
-		super();
-	}
-	
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		Composite composite = getWidgetFactory().createFlatFormComposite(parent);
-
-		CLabel namespaceLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_NAMESPACE")); //$NON-NLS-1$
-    namespaceText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
-		namespaceText.setEditable(false);
-
-    FormData data = new FormData();
-    data.left = new FormAttachment(0, 0);
-    data.right = new FormAttachment(namespaceText, +ITabbedPropertyConstants.HSPACE);
-    data.top = new FormAttachment(namespaceText, 0, SWT.CENTER);
-    namespaceLabel.setLayoutData(data);
-    
-    data = new FormData();
-    data.left = new FormAttachment(0, 110);
-    data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-    data.top = new FormAttachment(0, 0);
-    namespaceText.setLayoutData(data);
-    
-		CLabel prefixLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_PREFIX")); //$NON-NLS-1$				
-		prefixText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
-		prefixText.setEditable(true);
-    prefixText.addListener(SWT.Modify, this);
-
-    data = new FormData();
-    data.left = new FormAttachment(0, 0);
-    data.right = new FormAttachment(prefixText, 0);
-    data.top = new FormAttachment(prefixText, 0, SWT.CENTER);
-    prefixLabel.setLayoutData(data);  
-    
-		data = new FormData();
-		data.left = new FormAttachment(0, 110);
-		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(namespaceText, +ITabbedPropertyConstants.VSPACE);
-		prefixText.setLayoutData(data);
-   
-		// Create Schema Location Label
-		CLabel schemaLocationLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_LOCATION")); //$NON-NLS-1$
-    schemaLocationText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
-
-		// Create Wizard Button
-		wizardButton = getWidgetFactory().createButton(composite, "", SWT.NONE); //$NON-NLS-1$
-    wizardButton.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
-		FormData buttonFormData = new FormData();
-		buttonFormData.left = new FormAttachment(100, -rightMarginSpace + 2);
-		buttonFormData.right = new FormAttachment(100, 0);
-		buttonFormData.top = new FormAttachment(schemaLocationText, 0, SWT.CENTER);
-		wizardButton.setLayoutData(buttonFormData);
-		wizardButton.addSelectionListener(this);
-		
-		// Create Schema Location Text
-		schemaLocationText.setEditable(true);
-		FormData schemaLocationData = new FormData();
-		schemaLocationData.left = new FormAttachment(0, 110);
-		schemaLocationData.right = new FormAttachment(wizardButton, 0);
-		schemaLocationData.top = new FormAttachment(prefixText, +ITabbedPropertyConstants.VSPACE);
-		schemaLocationText.setLayoutData(schemaLocationData);
-		schemaLocationText.addListener(SWT.Modify, this);
-    
-    data = new FormData();
-    data.left = new FormAttachment(0, 0);
-    data.right = new FormAttachment(schemaLocationText, 0);
-    data.top = new FormAttachment(schemaLocationText, 0, SWT.CENTER);
-    schemaLocationLabel.setLayoutData(data);
-    
-    // error text
-    errorText = new StyledText(composite, SWT.FLAT);
-    errorText.setEditable(false);
-    errorText.setEnabled(false);
-    errorText.setText("");
-    
-    data = new FormData();
-    data.left = new FormAttachment(schemaLocationText, 0, SWT.LEFT);
-    data.right = new FormAttachment(100, 0);
-    data.top = new FormAttachment(schemaLocationText, 0);
-    errorText.setLayoutData(data);
-  }
-	
-	public void widgetSelected(SelectionEvent event)
-  {
-		if (event.widget == wizardButton)
-    {
-      setListenerEnabled(false);
-			Shell shell = Display.getCurrent().getActiveShell();
-		    
-			IFile currentIFile = ((IFileEditorInput)getActiveEditor().getEditorInput()).getFile();
-			ViewerFilter filter = new ResourceFilter(new String[] { ".xsd" }, //$NON-NLS-1$ 
-		            new IFile[] { currentIFile },
-		            null);
-		      
-			XSDSelectIncludeFileWizard fileSelectWizard = 
-			   new XSDSelectIncludeFileWizard(xsdSchema, 
-                                        false,
-			                                  XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_SCHEMA"), //$NON-NLS-1$
-			                                  XSDEditorPlugin.getXSDString("_UI_FILEDIALOG_SELECT_XML_DESC"), //$NON-NLS-1$
-			                                  filter,
-			                                  (IStructuredSelection) selection);
-
-			WizardDialog wizardDialog = new WizardDialog(shell, fileSelectWizard);
-			wizardDialog.create();
-			wizardDialog.setBlockOnOpen(true);
-			int result = wizardDialog.open();
-			  
-		  String value = schemaLocationText.getText();
-      prefixText.removeListener(SWT.Modify, this);
-		  if (result == Window.OK)
-		  {
-        errorText.setText("");
-        IFile selectedIFile = fileSelectWizard.getResultFile();
-        String schemaFileString = value;
-        if (selectedIFile != null) 
-        {
-          schemaFileString = URIHelper.getRelativeURI(selectedIFile.getLocation(), currentIFile.getLocation());
-        }
-        else
-        {
-          schemaFileString = fileSelectWizard.getURL();
-        }
-
-        String namespace = fileSelectWizard.getNamespace();
-        if (namespace == null) namespace = "";
-
-        XSDSchema externalSchema = fileSelectWizard.getExternalSchema();
-        handleSchemaLocationChange(schemaFileString, namespace, externalSchema);
-		  }
-      setListenerEnabled(true);
-      prefixText.addListener(SWT.Modify, this);
-		}
-	}
-
-  protected void handleSchemaLocationChange(String schemaFileString, String namespace, XSDSchema externalSchema)
-  {
-    XSDConcreteComponent comp = (XSDConcreteComponent)getInput();
-    if (comp instanceof XSDImport)
-    {
-      XSDImport xsdImport = (XSDImport)comp;
-      Element importElement = comp.getElement();
-      
-      beginRecording(XSDEditorPlugin.getXSDString("_UI_IMPORT_CHANGE"), importElement);
-
-      xsdImport.setNamespace(namespace);
-      xsdImport.setSchemaLocation(schemaFileString);
-      xsdImport.setResolvedSchema(externalSchema);
-      
-      java.util.Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-      
-//      System.out.println("changed Import Map is " + map.values());
-//      System.out.println("changed import Map keys are " + map.keySet());
-
-      // Referential integrity on old import
-      // How can we be sure that if the newlocation is the same as the oldlocation
-      // the file hasn't changed
-      
-      XSDSchema referencedSchema = xsdImport.getResolvedSchema();
-      if (referencedSchema != null)
-      {
-        XSDExternalFileCleanup cleanHelper = new XSDExternalFileCleanup(referencedSchema);
-        cleanHelper.visitSchema(xsdSchema);
-      }
-
-      Element schemaElement = getSchema().getElement();
-
-      // update the xmlns in the schema element first, and then update the import element next
-      // so that the last change will be in the import element.  This keeps the selection
-      // on the import element
-      TypesHelper helper = new TypesHelper(externalSchema);
-      String prefix = helper.getPrefix(namespace, false);
-      
-      if (map.containsKey(prefix))
-      {
-        prefix = null;
-      }
-
-      if (prefix == null || (prefix !=null && prefix.length() == 0))
-      {
-        StringBuffer newPrefix = new StringBuffer("pref");  //$NON-NLS-1$
-        int prefixExtension = 1;
-        while (map.containsKey(newPrefix.toString()) && prefixExtension < 100)
-        {
-          newPrefix = new StringBuffer("pref" + String.valueOf(prefixExtension));
-          prefixExtension++;
-        }
-        prefix = newPrefix.toString();
-      }
-
-      if (namespace.length() > 0)
-      {
-        // if ns already in map, use its corresponding prefix
-        if (map.containsValue(namespace))
-        {
-          TypesHelper typesHelper = new TypesHelper(xsdSchema);
-          prefix = typesHelper.getPrefix(namespace, false);
-        }
-        else // otherwise add to the map
-        {
-          schemaElement.setAttribute("xmlns:"+prefix, namespace);
-        }
-        prefixText.setText(prefix);
-      }
-      else
-      {
-        prefixText.setText("");
-        namespaceText.setText("");
-      }
-        
-      endRecording(importElement);
-      
-//      System.out.println("changed Import Map is " + map.values());
-//      System.out.println("changed import Map keys are " + map.keySet());
-
-    }        
-    refresh();
-  }
-  
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-		if (doRefresh)
-		{
-      errorText.setText("");
-			setListenerEnabled(false);
-
-			Element element = null;
-			if (input instanceof XSDImport) { 
-				element = ((XSDImportImpl) input).getElement();
-				
-				String namespace = element.getAttribute("namespace"); //$NON-NLS-1$
-				String schemaLocation = element.getAttribute("schemaLocation"); //$NON-NLS-1$
-				
-				TypesHelper helper = new TypesHelper(xsdSchema);
-		        String prefix = helper.getPrefix(element.getAttribute(XSDConstants.NAMESPACE_ATTRIBUTE), false);
-
-				if (namespace == null) {
-					namespace = ""; //$NON-NLS-1$
-				}
-				if (prefix == null) {
-					prefix = ""; //$NON-NLS-1$
-				}
-				if (schemaLocation == null) {
-					schemaLocation = ""; //$NON-NLS-1$
-				}
-				
-				namespaceText.setText(namespace);
-				prefixText.setText(prefix);
-				schemaLocationText.setText(schemaLocation);
-        oldPrefixValue = prefixText.getText();
-			}
-
-			setListenerEnabled(true);
-		}
-	}
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
-   */
-  public boolean shouldUseExtraSpace()
-  {
-    return true;
-  }
-
-  public void doHandleEvent(Event event)
-  {
-    super.doHandleEvent(event);
-    if (event.type == SWT.Modify)
-    {
-      if (event.widget == prefixText)
-      {
-        if (validatePrefix(prefixText.getText()) && schemaLocationText.getText().trim().length() > 0)
-        {
-          Element element = ((XSDConcreteComponent)getInput()).getElement();
-          Map map = getSchema().getQNamePrefixToNamespaceMap();
-
-          if (map.containsKey(prefixText.getText()))
-          {
-            setErrorMessage(XSDEditorPlugin.getXSDString("_ERROR_LABEL_PREFIX_EXISTS"));
-          }
-          else
-          {
-            beginRecording(XSDEditorPlugin.getXSDString("_UI_PREFIX_CHANGE"), element);
-            
-            Element schemaElement = getSchema().getElement();
-            schemaElement.removeAttribute("xmlns:"+oldPrefixValue);
-            schemaElement.setAttribute("xmlns:" + prefixText.getText(), namespaceText.getText());
-            XSDSchemaHelper.updateElement(getSchema());
-
-            clearErrorMessage();
-            oldPrefixValue = prefixText.getText();
-            endRecording(element);  
-
-//            System.out.println("Map is " + map.values());
-//            System.out.println("Map keys are " + map.keySet());
-          }
-        }
-      }
-    }
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSection.java
deleted file mode 100644
index f32b09c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSection.java
+++ /dev/null
@@ -1,192 +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.properties.section;
-
-import java.util.Iterator;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDProcessContents;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class NamespaceProcessContentsSection extends AbstractSection
-{
-  CCombo namespaceCombo;
-  CCombo processContentsCombo;
-  
-  private String[] namespaceComboValues = {
-      "",               //$NON-NLS-1$
-      "##any",          //$NON-NLS-1$
-      "##other",        //$NON-NLS-1$
-      "##targetNamespace", //$NON-NLS-1$
-      "##local" //$NON-NLS-1$
-  };
-
-  /**
-   * 
-   */
-  public NamespaceProcessContentsSection()
-  {
-    super();
-  }
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent,TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		Composite composite =	getWidgetFactory().createFlatFormComposite(parent);
-		FormData data;
-		
-
-		namespaceCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
-		data = new FormData();
-		data.left = new FormAttachment(0, 100);
-		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(0, 0);
-		namespaceCombo.setLayoutData(data);
-//		Iterator list = XSDNamespaceConstraintCategory.VALUES.iterator();
-//		while (list.hasNext())
-//		{
-//		  namespaceCombo.add(((XSDNamespaceConstraintCategory)list.next()).getName());
-//		}
-		namespaceCombo.setItems(namespaceComboValues);
-		namespaceCombo.addSelectionListener(this);
-
-		CLabel namespaceLabel = getWidgetFactory().createCLabel(composite, XSDConstants.NAMESPACE_ATTRIBUTE);
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(namespaceCombo, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(namespaceCombo, 0, SWT.CENTER);
-		namespaceLabel.setLayoutData(data);
-
-		processContentsCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
-		data = new FormData();
-		data.left = new FormAttachment(0, 100);
-		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(namespaceCombo, +ITabbedPropertyConstants.VSPACE);
-		processContentsCombo.setLayoutData(data);
-		Iterator list = XSDProcessContents.VALUES.iterator();
-		processContentsCombo.add(""); //$NON-NLS-1$
-		while (list.hasNext())
-		{
-		  processContentsCombo.add(((XSDProcessContents)list.next()).getName());
-		}
-		processContentsCombo.addSelectionListener(this);
-
-		CLabel processContentsLabel = getWidgetFactory().createCLabel(composite, XSDConstants.PROCESSCONTENTS_ATTRIBUTE);
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(processContentsCombo, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(processContentsCombo, 0, SWT.CENTER);
-		processContentsLabel.setLayoutData(data);
-	}
-
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-//	  namespaceCombo.removeSelectionListener(this);
-//	  processContentsCombo.removeSelectionListener(this);
-	  namespaceCombo.setText(""); //$NON-NLS-1$
-	  processContentsCombo.setText(""); //$NON-NLS-1$
-	  Object input = getInput();
-	  if (input != null)
-	  {
-	    if (input instanceof XSDWildcard)
-	    {
-	      XSDWildcard wildcard = (XSDWildcard)input;
-	      if (wildcard.isSetLexicalNamespaceConstraint())
-	      {
-	        namespaceCombo.setText(wildcard.getStringLexicalNamespaceConstraint());
-	      }
-	      else
-	      {
-	        namespaceCombo.setText("");
-	      }
-	      if (wildcard.isSetProcessContents())
-	      {
-	        XSDProcessContents pc = wildcard.getProcessContents();
-	        processContentsCombo.setText(pc.getName());
-	      }
-	    }
-	  }
-	}
-	
-  public boolean shouldUseExtraSpace()
-  {
-    return false;
-  }
-
-  public void widgetSelected(SelectionEvent e)
-  {
-    XSDConcreteComponent concreteComponent = (XSDConcreteComponent)getInput();
-    Element element = concreteComponent.getElement();
-    if (concreteComponent instanceof XSDWildcard)
-    {
-      XSDWildcard wildcard =  (XSDWildcard)concreteComponent;
-      if (e.widget == namespaceCombo)
-      {
-        String newValue = namespaceCombo.getText();
-        boolean removeAttribute = false;
-        if (newValue.length() == 0)
-        {
-          removeAttribute = true;
-        }
-
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_NAMESPACE_CHANGE"), element); //$NON-NLS-1$
-        if (removeAttribute)
-        {
-          wildcard.unsetLexicalNamespaceConstraint();
-        }
-        else
-        {
-          wildcard.setStringLexicalNamespaceConstraint(newValue);
-        }
-        endRecording(element);
-      }
-      else if (e.widget == processContentsCombo)
-      {
-        String newValue = processContentsCombo.getText();
-        boolean removeAttribute = false;
-        if (newValue.length() == 0)
-        {
-          removeAttribute = true;
-        }
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_PROCESSCONTENTS_CHANGE"), element); //$NON-NLS-1$
-        if (removeAttribute)
-        {
-          wildcard.unsetProcessContents();
-        }
-        else
-        {
-          wildcard.setProcessContents(XSDProcessContents.get(processContentsCombo.getItem(processContentsCombo.getSelectionIndex())));
-        }
-        endRecording(element);
-      }
-    }
-    refresh();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSectionDescriptor.java
deleted file mode 100644
index 87608c9..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceProcessContentsSectionDescriptor.java
+++ /dev/null
@@ -1,84 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDWildcard;
-
-public class NamespaceProcessContentsSectionDescriptor extends AbstractSectionDescriptor
-{
-  /**
-   * 
-   */
-  public NamespaceProcessContentsSectionDescriptor()
-  {
-    super();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.namespaceprocesscontents";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDWildcard.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new NamespaceProcessContentsSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.general";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDWildcard)
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSection.java
deleted file mode 100644
index 468106e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSection.java
+++ /dev/null
@@ -1,430 +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.properties.section;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Map;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xml.core.internal.document.DocumentImpl;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.XSDEditNamespacesAction;
-import org.eclipse.wst.xsd.ui.internal.refactor.rename.TargetNamespaceChangeHandler;
-import org.eclipse.wst.xsd.ui.internal.util.TypesHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaHelper;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-public class NamespaceSection extends AbstractSection
-{
-	  IWorkbenchPart part;
-	  Text prefixText;
-	  Text targetNamespaceText;
-    Button editButton;
-    StyledText errorText;
-    Color red;
-	  
-	  /**
-	   * 
-	   */
-	  public NamespaceSection()
-	  {
-	    super();
-	  }
-
-		/**
-		 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-		 */
-		public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-		{
-			super.createControls(parent, factory);
-			Composite composite = getWidgetFactory().createFlatFormComposite(parent);
-      
-			// Create Prefix Label
-			CLabel prefixLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_PREFIX")); //$NON-NLS-1$
-
-      int leftCoordinate = getStandardLabelWidth(composite, 
-          new String[] {XSDEditorPlugin.getXSDString("_UI_LABEL_TARGET_NAME_SPACE"), XSDEditorPlugin.getXSDString("_UI_LABEL_SCHEMA_PREFIX")});
-      
-			// Create Prefix Text
-			prefixText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
-			FormData prefixTextData = new FormData();
-			// prefixTextData.left = new FormAttachment(0, 115);
-      prefixTextData.left = new FormAttachment(0, leftCoordinate);
-			prefixTextData.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-			prefixText.setLayoutData(prefixTextData);
-			prefixText.addListener(SWT.Modify, this);		    
-		    
-			FormData data = new FormData();
-			data.left = new FormAttachment(0, 0);
-			data.right = new FormAttachment(prefixText, -ITabbedPropertyConstants.HSPACE);
-      data.top = new FormAttachment(prefixText, 0, SWT.CENTER);
-			prefixLabel.setLayoutData(data);
-
-			// Create TargetNamespace Label
-			CLabel targetNamespaceLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_TARGET_NAME_SPACE")); //$NON-NLS-1$
-      
-      // Create TargetNamespace Text
-      targetNamespaceText = getWidgetFactory().createText(composite, "", SWT.NONE); //$NON-NLS-1$
-      
-			FormData tnsLabelData = new FormData();
-			tnsLabelData.left = new FormAttachment(0, 0);
-      tnsLabelData.right = new FormAttachment(targetNamespaceText, -ITabbedPropertyConstants.HSPACE); 
-			tnsLabelData.top = new FormAttachment(targetNamespaceText, 0, SWT.CENTER);
-			targetNamespaceLabel.setLayoutData(tnsLabelData);
-
-      FormData tnsTextData = new FormData();
-      // tnsTextData.left = new FormAttachment(0, 115);
-      tnsTextData.left = new FormAttachment(0, leftCoordinate);
-      tnsTextData.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-      tnsTextData.top = new FormAttachment(prefixText, +ITabbedPropertyConstants.VSPACE);
-      targetNamespaceText.setLayoutData(tnsTextData);
-      targetNamespaceText.addListener(SWT.Modify, this);
-      
-      // Advanced Button
-      editButton = getWidgetFactory().createButton(composite, XSDEditorPlugin.getXSDString("_UI_SECTION_ADVANCED_ATTRIBUTES") + "...", SWT.PUSH);
-
-      FormData buttonFormData = new FormData();
-      buttonFormData.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-      buttonFormData.top = new FormAttachment(targetNamespaceText, +ITabbedPropertyConstants.VSPACE);
-      editButton.setLayoutData(buttonFormData);
-      editButton.addSelectionListener(this);
-
-      // error text
-      errorText = new StyledText(composite, SWT.FLAT);
-      errorText.setEditable(false);
-      errorText.setEnabled(false);
-      errorText.setText("");
-      
-      data = new FormData();
-      data.left = new FormAttachment(targetNamespaceText, 0, SWT.LEFT);
-      data.right = new FormAttachment(100, 0);
-      data.top = new FormAttachment(editButton, 0);
-      errorText.setLayoutData(data);
-    }
-
-		/*
-		 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-		 */
-		public void refresh()
-		{
-      if (doRefresh)
-      {
-        // hack...open bug against properties
-        if (prefixText.isDisposed() || targetNamespaceText.isDisposed())
-        {
-          return;
-        }
-        if (prefixText.isFocusControl() || targetNamespaceText.isFocusControl())
-        {
-          return;
-        }
-
-        setListenerEnabled(false);
-	    	 
-			  Element element = xsdSchema.getElement();
-	    	
-        if (element != null)
-        {
-  		    // Handle prefixText
-  			  TypesHelper helper = new TypesHelper(xsdSchema);
-    		  String aPrefix = helper.getPrefix(element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE), false);
-        
-          if (aPrefix != null && aPrefix.length() > 0)
-  	      {
-  	  	  	prefixText.setText(aPrefix);
-  	  	  }
-  	  	  else
-          {
-  			  	prefixText.setText(""); //$NON-NLS-1$
-  			  }
-  	    	 
-  				// Handle TargetNamespaceText
-  				String tns = element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
-  			  if (tns != null && tns.length() > 0)
-          {
-   	        targetNamespaceText.setText(tns);
-   	      }
-  			  else
-          {
-  				  targetNamespaceText.setText(""); //$NON-NLS-1$
-  			  }
-          errorText.setText("");
-        }
-				setListenerEnabled(true);
-			}
-		}
-		
-		public void doHandleEvent(Event event)
-		{
-          errorText.setText("");
-          String prefixValue = prefixText.getText();
-          String tnsValue = targetNamespaceText.getText();
-          if (tnsValue.trim().length() == 0)
-          {
-            if (prefixValue.trim().length() > 0)
-            {
-              errorText.setText(XSDEditorPlugin.getXSDString("_ERROR_TARGET_NAMESPACE_AND_PREFIX"));
-              int length = errorText.getText().length();
-              red = new Color(null, 255, 0, 0);
-              StyleRange style = new StyleRange(0, length, red, targetNamespaceText.getBackground());
-              errorText.setStyleRange(style);
-              return;
-            }
-          }
-
-		  if (event.widget == prefixText)
-		  {
-            updateNamespaceInfo(prefixValue, tnsValue);
-		  }
-		  else if (event.widget == targetNamespaceText)
-          {
-            updateNamespaceInfo(prefixValue, tnsValue);
-		  }
-		}
-		
-		public void doWidgetSelected(SelectionEvent e) {
-			if (e.widget == editButton) {
-				XSDEditNamespacesAction nsAction = new XSDEditNamespacesAction(XSDEditorPlugin.getXSDString("_UI_ACTION_EDIT_NAMESPACES"), xsdSchema.getElement(), null, xsdSchema); //$NON-NLS-1$ 
-				nsAction.run();
-				refresh();				
-			}			
-		}
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
-	   */
-	  public boolean shouldUseExtraSpace()
-	  {
-	    return true;
-	  }
-
-	  private void updateNamespaceInfo(String newPrefix, String newTargetNamespace)
-	  {
-	    Element element = xsdSchema.getElement();
-	    DocumentImpl doc = (DocumentImpl)element.getOwnerDocument();
-
-	    String modelTargetNamespace = xsdSchema.getTargetNamespace();
-	    String oldNamespace = xsdSchema.getTargetNamespace();
-	    
-	    TypesHelper helper = new TypesHelper(xsdSchema);
-   		String oldPrefix = helper.getPrefix(element.getAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE), false);
-	    
-	    if (modelTargetNamespace == null)
-	    {
-	      modelTargetNamespace = ""; //$NON-NLS-1$
-	    }
-	        
-	    String targetNamespace = newTargetNamespace.trim(); 
-	    String prefix = newPrefix.trim();
-
-	    if (!validatePrefix(prefix) || !validateTargetNamespace(targetNamespace))
-	    {
-	      return;
-	    }
-	        
-	    if (prefix.length() > 0 && targetNamespace.length() == 0)
-	    {
-	       // can't have blank targetnamespace and yet specify a prefix
-	       return;
-	    }
-
-	    doc.getModel().beginRecording(this, XSDEditorPlugin.getXSDString("_UI_TARGETNAMESPACE_CHANGE")); //$NON-NLS-1$
-	    String xsdForXSDPrefix = xsdSchema.getSchemaForSchemaQNamePrefix();
-	    Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-
-//	 For debugging
-//	        System.out.println("1. SW Map is " + map.values());
-//	        System.out.println("1. SW Map keys are " + map.keySet());
-
-	    // Check if prefix is blank
-	    // if it is, then make sure we have a prefix 
-	    // for schema for schema
-	    if (prefix.length() == 0)
-	    {
-	      // if prefix for schema for schema is blank
-	      // then set it to value specified in preference
-	      // and update ALL nodes with this prefix
-	      if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
-	      {
-	        // get preference prefix
-	        xsdForXSDPrefix = XSDEditorPlugin.getPlugin().getXMLSchemaPrefix();
-	        // get a unique prefix by checking what's in the map
-
-	        xsdForXSDPrefix = getUniqueSchemaForSchemaPrefix(xsdForXSDPrefix, map);
-	        element.setAttribute("xmlns:" + xsdForXSDPrefix, XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001); //$NON-NLS-1$
-
-	        updateAllNodes(element, xsdForXSDPrefix);
-	            
-	        // remove the old xmlns attribute for the schema for schema
-	        if (element.getAttribute("xmlns") != null && //$NON-NLS-1$
-	            element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001)) //$NON-NLS-1$
-	        {
-	          element.removeAttribute("xmlns"); //$NON-NLS-1$
-	        }
-	      }
-	    }
-
-	    if (targetNamespace.length() > 0 ||
-	       (targetNamespace.length() == 0 && prefix.length() == 0))
-	    {
-	      // clean up the old prefix for this schema
-	      if (oldPrefix != null && oldPrefix.length() > 0)
-	      {
-	        element.removeAttribute("xmlns:"+oldPrefix); //$NON-NLS-1$
-//	            element.setAttribute("xmlns:" + prefix, targetNamespace);
-//	            java.util.Map prefixToNameSpaceMap = xsdSchema.getQNamePrefixToNamespaceMap();
-//	            prefixToNameSpaceMap.remove(oldPrefix);
-	      }
-	      else // if no prefix
-	      {
-	        if (element.getAttribute("xmlns") != null) //$NON-NLS-1$
-	        {
-	          if (!element.getAttribute("xmlns").equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001)) //$NON-NLS-1$
-	           {
-	            element.removeAttribute("xmlns"); //$NON-NLS-1$
-	          }
-	        }
-	      }
-	    }
-
-	    if (targetNamespace.length() > 0)
-	    {
-	      if (!modelTargetNamespace.equals(targetNamespace))
-	      {
-	        element.setAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE, targetNamespace);
-	      }
-	      // now set the new xmlns:prefix attribute
-	      if (prefix.length() > 0)
-	      {
-	        element.setAttribute("xmlns:" + prefix, targetNamespace); //$NON-NLS-1$
-	      }
-	      else
-	      {
-	        element.setAttribute("xmlns", targetNamespace); //$NON-NLS-1$
-	      }
-	      // set the targetNamespace attribute
-	    }
-	    else // else targetNamespace is blank
-	    {
-	      if (prefix.length() == 0)
-	      {
-	        element.removeAttribute(XSDConstants.TARGETNAMESPACE_ATTRIBUTE);
-	      }
-	    }
-
-//	    System.out.println("1.5 SW Map is " + map.values());
-//	    System.out.println("1.5 SW Map keys are " + map.keySet());
-	    
-	    // do our own referential integrity
-	    TargetNamespaceChangeHandler targetNamespaceChangeHandler = new TargetNamespaceChangeHandler(xsdSchema, oldNamespace, targetNamespace);
-	    targetNamespaceChangeHandler.resolve();
-	    
-	    XSDSchemaHelper.updateElement(xsdSchema);
-	    
-	    doc.getModel().endRecording(this);
-
-//	 For debugging
-//	        map = xsdSchema.getQNamePrefixToNamespaceMap();
-//	        System.out.println("2. SW Map is " + map.values());
-//	        System.out.println("2. SW Map keys are " + map.keySet());
-	  }
-
-	  private String getUniqueSchemaForSchemaPrefix(String xsdForXSDPrefix, Map map)
-	  {
-	    if (xsdForXSDPrefix == null || (xsdForXSDPrefix != null && xsdForXSDPrefix.trim().length() == 0))
-	     {       
-	      xsdForXSDPrefix = "xsd"; //$NON-NLS-1$
-	    }
-	    // ensure prefix is unique
-	    int prefixExtension = 1;
-	    while (map.containsKey(xsdForXSDPrefix) && prefixExtension < 100)
-	     {
-	      xsdForXSDPrefix = xsdForXSDPrefix + String.valueOf(prefixExtension);
-	      prefixExtension++;
-	    }
-	    return xsdForXSDPrefix;
-	  }
-	  
-	  private void updateAllNodes(Element element, String prefix)
-	  {
-	    element.setPrefix(prefix);
-	    NodeList list = element.getChildNodes();
-	    if (list != null)
-	    {
-	      for (int i=0; i < list.getLength(); i++)
-	      {
-	        Node child = list.item(i);
-	        if (child != null && child instanceof Element)
-	        {
-	          child.setPrefix(prefix);
-	          if (child.hasChildNodes())
-	          {
-	            updateAllNodes((Element)child, prefix);
-	          }
-	        }
-	      }
-	    }   
-	  }
-	  
-	  private boolean validateTargetNamespace(String ns)
-	  {
-	    // will allow blank namespace !!
-	    if (ns.equals(""))
-	     {
-	      return true;
-	    }
-	    
-	    String errorMessage = null;
-      try
-      {
-        URI testURI = new URI(ns);
-        testURI.isAbsolute();
-      }
-      catch (URISyntaxException e)
-      {
-	      errorMessage = XSDEditorPlugin.getXSDString("_WARN_INVALID_TARGET_NAMESPACE"); //$NON-NLS-1$
-	    }
-	    
-	    if (errorMessage == null || errorMessage.length() == 0)
-	     {
-	      return true;
-	    }
-	    return false;
-	  }
-    
-    public void dispose()
-    {
-      super.dispose();
-      if (red != null)
-      {
-        red.dispose();
-        red = null;
-      }
-    }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSectionDescriptor.java
deleted file mode 100644
index 69f2d15..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/NamespaceSectionDescriptor.java
+++ /dev/null
@@ -1,86 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.impl.XSDSchemaImpl;
-
-public class NamespaceSectionDescriptor extends AbstractSectionDescriptor
-{
-	  NamespaceSection namespaceSection;
-	  /**
-	   * 
-	   */
-	  public NamespaceSectionDescriptor()
-	  {
-	    super();
-	    namespaceSection = new NamespaceSection();
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-	   */
-	  public String getId()
-	  {
-	    return "org.eclipse.wst.xsdeditor.section.namespaceSection";
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-	   */
-	  public List getInputTypes()
-	  {
-	    List list = new ArrayList();
-	    list.add(XSDConcreteComponent.class);
-	    return list;
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-	   */
-	  public ISection getSectionClass()
-	  {
-	    return namespaceSection;
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-	   */
-	  public String getTargetTab()
-	  {
-	    return "org.eclipse.wst.xmlwebservices.general";
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-	   */
-	  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-	  {
-	    Object object = null;
-	    if (selection instanceof StructuredSelection)
-	    {
-	      StructuredSelection structuredSelection = (StructuredSelection)selection;
-	      object = structuredSelection.getFirstElement();
-	      if (object instanceof XSDSchemaImpl) {
-	      	return true;
-	      }
-	    }
-	    
-	    return false;
-	  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSection.java
deleted file mode 100644
index 2b934bc..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSection.java
+++ /dev/null
@@ -1,108 +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.properties.section;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.views.properties.PropertySheetPage;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.properties.XSDPropertySourceProvider;
-import org.eclipse.xsd.XSDElementDeclaration;
-
-public class OtherAttributesSection extends AbstractSection
-{
-  PropertySheetPage propertySheetPage;
-  
-  /**
-   * 
-   */
-  public OtherAttributesSection()
-  {
-    super();
-  }
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		composite = getWidgetFactory().createFlatFormComposite(parent);
-		FormData data = new FormData();
-		data.left = new FormAttachment(0, 0);
-    data.right = new FormAttachment(100, 0);
-		data.top = new FormAttachment(0, 0);
-		data.bottom = new FormAttachment(100, 0);
-
-    propertySheetPage = new PropertySheetPage();
-		propertySheetPage.createControl(composite);
-    propertySheetPage.setPropertySourceProvider(new XSDPropertySourceProvider());
-    propertySheetPage.getControl().setLayoutData(data);
-	}
-	
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-    if (doRefresh)
-    {
-      if (isReadOnly)
-      {
-        composite.setEnabled(false);
-      }
-      else
-      {
-        composite.setEnabled(true);
-      }
-    }
-    propertySheetPage.refresh();
-	}
-
-  public void dispose()
-  {
-    super.dispose();
-    if (propertySheetPage != null)
-    {
-      propertySheetPage.dispose();
-      propertySheetPage = null;
-    }
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
-   */
-  public boolean shouldUseExtraSpace()
-  {
-    return true;
-  }
-  
-  public void setInput(IWorkbenchPart part, ISelection selection)
-  {
-    super.setInput(part, selection);
-    if (input instanceof XSDElementDeclaration)
-    {
-      XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)input;
-      if (elementDeclaration.isElementDeclarationReference())
-      {
-        input = elementDeclaration.getResolvedElementDeclaration();
-        
-        isReadOnly = (!(elementDeclaration.getResolvedElementDeclaration().getRootContainer() == xsdSchema));
-      }
-    }
-    // update property sheet because of new input change
-    propertySheetPage.selectionChanged(part, selection);
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSectionDescriptor.java
deleted file mode 100644
index ce3808b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/OtherAttributesSectionDescriptor.java
+++ /dev/null
@@ -1,143 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDAnnotation;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDEnumerationFacet;
-import org.eclipse.xsd.XSDIdentityConstraintCategory;
-import org.eclipse.xsd.XSDIdentityConstraintDefinition;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDPatternFacet;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-
-public class OtherAttributesSectionDescriptor extends AbstractSectionDescriptor
-{
-  /**
-   * 
-   */
-  public OtherAttributesSectionDescriptor()
-  {
-    super();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.otherattributes";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDConcreteComponent.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new OtherAttributesSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.other";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDConcreteComponent)
-      {
-      	if (object instanceof XSDAttributeGroupDefinition ||
-      	    object instanceof XSDAttributeUse ||
-      	    object instanceof XSDAttributeDeclaration ||
-      	    object instanceof XSDEnumerationFacet ||
-      	    object instanceof XSDPatternFacet ||
-      	    object instanceof XSDSimpleTypeDefinition ||
-      	    object instanceof XSDAnnotation ||
-            object instanceof XSDWildcard ||
-            object instanceof XSDSchemaDirective)
-      	{
-     	    return false;
-      	}
-        else if (object instanceof XSDModelGroup)
-        {
-          return false;
-        }
-        else if (object instanceof XSDElementDeclaration)
-        {
-//        Remove this to fix bug 3870 Element references should have the same properties as elements 
-//          if (((XSDElementDeclaration)object).isElementDeclarationReference())
-//          {
-//            return false;
-//          }
-          return true;
-        }
-        else if (object instanceof XSDModelGroupDefinition)
-        {
-          if (((XSDModelGroupDefinition)object).isModelGroupDefinitionReference())
-          {
-            return false;
-          }
-          return false;
-        }
-        else if (object instanceof XSDIdentityConstraintDefinition)
-        {
-          XSDIdentityConstraintDefinition constraint = (XSDIdentityConstraintDefinition)object;
-          XSDIdentityConstraintCategory category = constraint.getIdentityConstraintCategory();
-          if (category.getValue() == XSDIdentityConstraintCategory.KEYREF)
-          {
-            return true;
-          }
-          else
-          {
-            return false;
-          }
-        }
-        return true;
-      }
-    }
-    return false;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSection.java
deleted file mode 100644
index 9a0255c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSection.java
+++ /dev/null
@@ -1,165 +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.properties.section;
-
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.wizards.RegexWizard;
-import org.eclipse.xsd.XSDPatternFacet;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class PatternSection extends AbstractSection
-{
-  /**
-   * 
-   */
-  public PatternSection()
-  {
-    super();
-  }
-  
-  Text patternText;
-  Button button;
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-
-		super.createControls(parent, factory);
-		Composite composite = getWidgetFactory().createFlatFormComposite(parent);
-		FormData data;
-
-		patternText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
-		CLabel nameLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_VALUE") + ":"); //$NON-NLS-1$
-    button = getWidgetFactory().createButton(composite, "", SWT.PUSH); //$NON-NLS-1$
-    button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
-    
-    patternText.addListener(SWT.Modify, this);
-
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(patternText, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(button, 0, SWT.CENTER);
-		nameLabel.setLayoutData(data);
-
-    button.addSelectionListener(this);
-		data = new FormData();
-		data.left = new FormAttachment(100, -rightMarginSpace + 2);
-		data.right = new FormAttachment(100,0);
-		data.top = new FormAttachment(patternText, 0, SWT.CENTER);
-		button.setLayoutData(data);
-
-    data = new FormData();
-    data.left = new FormAttachment(0, 100);
-    data.right = new FormAttachment(button, 0);
-    patternText.setLayoutData(data);
-	}
-
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-	  setListenerEnabled(false);
-	  Object input = getInput();
-	  patternText.setText(""); //$NON-NLS-1$
-	  if (input != null)
-	  {
-	    Element element = null;
-	    if (input instanceof XSDPatternFacet)
-	    {
-	      element = ((XSDPatternFacet)input).getElement();
-	    }
-	    if (element != null)
-	    {
-        String result = element.getAttribute(XSDConstants.VALUE_ATTRIBUTE);
-        if (result != null)
-        {
-          patternText.setText(result);
-        }
-	    }
-	  }
-	  setListenerEnabled(true);
-	}
-
-  /**
-   * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
-   */
-  public void widgetSelected(SelectionEvent e)
-  {
-    if (e.widget == button)
-    {
-	    Shell shell = Display.getCurrent().getActiveShell();
-	    Element element = ((XSDPatternFacet)getInput()).getElement();
-
-      String initialValue = element.getAttribute(XSDConstants.VALUE_ATTRIBUTE);
-      if (initialValue == null)
-      {
-        initialValue = ""; //$NON-NLS-1$
-      }
-      RegexWizard wizard = new RegexWizard(initialValue);
-
-      WizardDialog wizardDialog = new WizardDialog(shell, wizard);
-      wizardDialog.setBlockOnOpen(true);
-      wizardDialog.create();
-      
-      int result = wizardDialog.open();
-
-      if (result == Window.OK)
-      {
-        String newPattern = wizard.getPattern();
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_PATTERN_VALUE_CHANGE"), element); //$NON-NLS-1$
-        element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, newPattern);
-        ((XSDPatternFacet)getInput()).setLexicalValue(newPattern);
-        endRecording(element);
-      }
-
-      refresh();
-    }
-  }
-  
-  public void doHandleEvent(Event event)
-  {
-	  if (event.widget == patternText)
-	  {
-		  XSDPatternFacet pattern = (XSDPatternFacet)getInput();
-		  
-      String newValue = patternText.getText();
-      if (newValue.length() > 0)
-      {
-        pattern.setLexicalValue(newValue);
-      }
-	  }
-
-  }
-
-  public boolean shouldUseExtraSpace()
-  {
-    return false;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSectionDescriptor.java
deleted file mode 100644
index 68219c7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/PatternSectionDescriptor.java
+++ /dev/null
@@ -1,85 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDPatternFacet;
-
-public class PatternSectionDescriptor extends AbstractSectionDescriptor
-{
-  /**
-   * 
-   */
-  public PatternSectionDescriptor()
-  {
-    super();
-  }
-  
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.pattern";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDPatternFacet.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new PatternSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.general";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDPatternFacet)
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSection.java
deleted file mode 100644
index 574d548..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSection.java
+++ /dev/null
@@ -1,288 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-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.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDParticleContent;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class ReferenceSection extends AbstractSection
-{
-  protected CCombo componentNameCombo; 
-  Button button;
-  IEditorPart editorPart;
-  CLabel refLabel;
-  
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		composite = getWidgetFactory().createFlatFormComposite(parent);
-		FormData data;
-
-    componentNameCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
-    componentNameCombo.addSelectionListener(this);
-		data = new FormData();
-		data.left = new FormAttachment(0, 100);
-		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(0, 1);
-		componentNameCombo.setLayoutData(data);
-
-		refLabel = getWidgetFactory().createCLabel(composite, XSDConstants.REF_ATTRIBUTE + ":");  //$NON-NLS-1$
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(componentNameCombo, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(componentNameCombo, 0, SWT.CENTER);
-		refLabel.setLayoutData(data);
-	}
-
-  public void setInput(IWorkbenchPart part, ISelection selection)
-  {
-    super.setInput(part, selection);
-    
-    Object obj = getInput();
-    TypesHelper helper = new TypesHelper(xsdSchema);
-    List items = new ArrayList();
-    if (obj instanceof XSDElementDeclaration)
-    {
-      XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)obj;
-      if (elementDeclaration.isElementDeclarationReference())
-      {
-        items = helper.getGlobalElements();
-//            minimumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MINIMUM"));
-//            WorkbenchHelp.setHelp(minimumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MINIMUM);
-//            maximumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MAXIMUM"));
-//            WorkbenchHelp.setHelp(maximumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MAXIMUM);
-      }
-    }
-    else if (obj instanceof XSDAttributeDeclaration)
-    {
-      items = helper.getGlobalAttributes();
-    }
-    else if (obj instanceof XSDModelGroupDefinition)
-    {
-      XSDModelGroupDefinition group = (XSDModelGroupDefinition)obj;
-      if (group.isModelGroupDefinitionReference())
-      {
-        items = helper.getModelGroups();
-          // Need tooltip for Group Ref
-//            minimumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MINIMUM"));
-//            WorkbenchHelp.setHelp(minimumField, XSDEditorContextIds.XSDE_GROUP_REF_MINIMUM);
-//            maximumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MAXIMUM"));
-//            WorkbenchHelp.setHelp(maximumField, XSDEditorContextIds.XSDE_GROUP_REF_MAXIMUM);
-      }
-    }
-    else if (obj instanceof XSDNamedComponent)
-    {
-      XSDNamedComponent namedComponent = (XSDNamedComponent)obj;
-      Element element = namedComponent.getElement();
-      if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true))
-      {
-        items = helper.getGlobalAttributeGroups();
-//      WorkbenchHelp.setHelp(client, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_REF_DESIGN_VIEW);
-//      WorkbenchHelp.setHelp(refCombo, XSDEditorContextIds.XSDE_ATTRIBUTE_GROUP_REF_NAME);
-      }
-      else if (XSDDOMHelper.inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, true))
-      {
-        items = helper.getGlobalElements();
-//          minimumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MINIMUM"));
-//          WorkbenchHelp.setHelp(minimumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MINIMUM);
-//          maximumField.setToolTipText(XSDEditorPlugin.getXSDString("_UI_TOOLTIP_ELEMENT_MAXIMUM"));
-//          WorkbenchHelp.setHelp(maximumField, XSDEditorContextIds.XSDE_ELEMENT_REF_MAXIMUM);
-      }
-    }
-    else if (obj instanceof XSDAttributeUse)
-    {
-      XSDAttributeUse attributeUse = (XSDAttributeUse)obj;
-      Element element = attributeUse.getElement();
-      if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true))
-      {
-        items = helper.getGlobalAttributes();
-//      WorkbenchHelp.setHelp(client, XSDEditorContextIds.XSDE_ATTRIBUTE_REF_DESIGN_VIEW);
-//      WorkbenchHelp.setHelp(refCombo, XSDEditorContextIds.XSDE_ATTRIBUTE_REF_NAME);      
-      }
-    }      
-    items.add(0, "");
-    int size = items.size();
-    String [] st = new String[size];
-    System.arraycopy(items.toArray(), 0, st, 0, size);
-    componentNameCombo.setItems(st);
-      
-    st = null;
-  }
-	
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-    if (doRefresh)
-    {
-  	  setListenerEnabled(false);  
-  //	  componentNameCombo.removeListener(SWT.Modify, this);
-  	  Object input = getInput();
-      if (isReadOnly)
-      {
-        composite.setEnabled(false);
-      }
-      else
-      {
-        composite.setEnabled(true);
-      }
-
-  	  if (input instanceof XSDNamedComponent)
-  	  {
-        XSDNamedComponent namedComponent = (XSDNamedComponent)getInput();
-        Element element = namedComponent.getElement();
-        if (element != null)
-        {
-          String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
-          if (attrValue == null)
-          {
-            attrValue = "";
-          }
-          componentNameCombo.setText(attrValue);
-        }
-  	  }
-      else if (input instanceof XSDParticleContent)
-      {
-        XSDParticleContent particle = (XSDParticleContent)input;
-        Element element = particle.getElement();
-        String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
-        if (attrValue == null)
-        {
-          attrValue = "";
-        }
-        componentNameCombo.setText(attrValue);
-      }
-  	  else if (input instanceof XSDAttributeUse)
-  	  {
-  	    XSDAttributeUse attributeUse = (XSDAttributeUse)getInput();
-  	    Element element = attributeUse.getElement();
-        String attrValue = element.getAttribute(XSDConstants.REF_ATTRIBUTE);
-        if (attrValue == null)
-        {
-          attrValue = "";
-        }
-        componentNameCombo.setText(attrValue);
-  	  }
-  	  
-      setListenerEnabled(true);
-  //    componentNameCombo.addListener(SWT.Modify, this);
-    }
-	}
-
-	
-  public void widgetSelected(SelectionEvent e)
-  {
-	  Object input = getInput();
-    if (e.widget == componentNameCombo)
-    {
-      String newValue = componentNameCombo.getText();
-		  if (input instanceof XSDNamedComponent)
-		  {
-	      XSDNamedComponent namedComponent = (XSDNamedComponent)getInput();
-	      Element element = namedComponent.getElement();
-	      
-	      if (namedComponent instanceof XSDElementDeclaration)
-	      {
-	        beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_REF_CHANGE"), element); //$NON-NLS-1$
-	        element.setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
-	        endRecording(element);
-	      }
-			  else if (namedComponent instanceof XSDAttributeDeclaration)
-			  {
-	        beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTEGROUP_REF_CHANGE"), element); //$NON-NLS-1$
-	        element.setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
-	        endRecording(element);
-
-			  }
-	  	  else if (namedComponent instanceof XSDAttributeGroupDefinition)
-	  	  {
-	        beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTEGROUP_REF_CHANGE"), element); //$NON-NLS-1$
-	        // element.setAttribute(XSDConstants.REF_ATTRIBUTE, (String) value);
-	        XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition)namedComponent;
-	        Iterator iter = xsdSchema.getAttributeGroupDefinitions().iterator();
-	        while (iter.hasNext())
-	        {
-	          XSDAttributeGroupDefinition def = (XSDAttributeGroupDefinition)iter.next();
-	          if (def.getQName(xsdSchema).equals(componentNameCombo.getText()))
-	          {
-	            attrGroup.setResolvedAttributeGroupDefinition(def);
-	            attrGroup.setName(componentNameCombo.getText());
-	            break;
-	          }
-	        }  
-	        endRecording(element);
-	  	  }
-        else if (namedComponent instanceof XSDModelGroupDefinition)
-        {
-          beginRecording(XSDEditorPlugin.getXSDString("_UI_GROUP_REF_CHANGE"), element); //$NON-NLS-1$
-          element.setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
-          endRecording(element);
-        }
-		  }
-		  else if (input instanceof XSDAttributeUse)
-		  {
-		    XSDAttributeUse attributeUse = (XSDAttributeUse)getInput();
-		    Element element = attributeUse.getElement();
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ATTRIBUTE_USE_CHANGE"), element); //$NON-NLS-1$
-        Iterator iter = xsdSchema.getAttributeDeclarations().iterator();
-        while (iter.hasNext())
-        {
-          XSDAttributeDeclaration attr = (XSDAttributeDeclaration)iter.next();
-          if (attr.getQName(xsdSchema).equals(newValue))
-          {
-            attributeUse.setAttributeDeclaration(attr);
-            element.setAttribute(XSDConstants.REF_ATTRIBUTE, newValue);
-            break;
-          }
-        }  
-
-        endRecording(element);
-		  }
-    }
-  }
-  
-  public void setEditorPart(IEditorPart editorPart)
-  {
-    this.editorPart = editorPart;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSectionDescriptor.java
deleted file mode 100644
index 8c11abb..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ReferenceSectionDescriptor.java
+++ /dev/null
@@ -1,173 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class ReferenceSectionDescriptor extends AbstractSectionDescriptor implements ISectionDescriptor
-{
-  ReferenceSection referenceSection;
-  
-  /**
-   * 
-   */
-  public ReferenceSectionDescriptor()
-  {
-    super();
-    this.referenceSection = new ReferenceSection();
-  }
-
-
-  /**
-   * 
-   */
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.wsdleditor.section.reference";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDNamedComponent.class);
-    list.add(XSDElementDeclaration.class);
-    list.add(XSDModelGroupDefinition.class);
-    list.add(XSDAttributeDeclaration.class);
-    list.add(XSDAttributeUse.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return referenceSection;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.general";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    if (part != null)
-    {
-      referenceSection.setEditorPart(part.getSite()
-            .getWorkbenchWindow()
-              .getActivePage()
-                .getActiveEditor());
-    }
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDNamedComponent)
-      {
-        XSDNamedComponent namedComponent = (XSDNamedComponent)object;
-        Element element = namedComponent.getElement();
-        if (element == null)
-        {
-          return false;
-        }
-        if (inputEquals(element, element.getLocalName(), true))
-        {
-          return true;
-        }
-        else
-        {
-          return false;
-        }
-      }
-      else if (object instanceof XSDElementDeclaration)
-      {
-        XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)object;
-        if (elementDeclaration.isElementDeclarationReference())
-        {
-          return true;
-        }
-        else
-        {
-          return false;
-        }
-      }
-      else if (object instanceof XSDAttributeDeclaration)
-      {
-        XSDAttributeDeclaration attr = (XSDAttributeDeclaration)object;
-        if (attr.isAttributeDeclarationReference())
-        {
-          return true;
-        }
-        else
-        {
-          return false;
-        }
-      }
-      else if (object instanceof XSDModelGroupDefinition)
-      {
-        XSDModelGroupDefinition group = (XSDModelGroupDefinition)object;
-        if (group.isModelGroupDefinitionReference())
-        {
-          return true;
-        }
-        else
-        {
-          return false;
-        }
-      }
-      else if (object instanceof XSDAttributeUse)
-      {
-        XSDAttributeUse attributeUse = (XSDAttributeUse)object;
-        Element element = attributeUse.getElement();
-        if (inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true))
-        {
-          return true;
-        }
-        else
-        {
-          return false;
-        }
-      }
-      
-    }
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationDescriptor.java
deleted file mode 100644
index ca2200d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SchemaLocationDescriptor.java
+++ /dev/null
@@ -1,88 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDRedefine;
-
-public class SchemaLocationDescriptor extends AbstractSectionDescriptor
-{
-	  SchemaLocationSection schemaLocationSection;
-	  /**
-	   * 
-	   */
-	  public SchemaLocationDescriptor()
-	  {
-	    super();
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-	   */
-	  public String getId()
-	  {
-	    return "org.eclipse.wst.xsdeditor.section.schemaLocationSection";
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-	   */
-	  public List getInputTypes()
-	  {
-	    List list = new ArrayList();
-	    list.add(XSDConcreteComponent.class);
-	    return list;
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-	   */
-	  public ISection getSectionClass()
-	  {
-	    return schemaLocationSection;
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-	   */
-	  public String getTargetTab()
-	  {
-	    return "org.eclipse.wst.xmlwebservices.general";
-	  }
-
-	  /* (non-Javadoc)
-	   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-	   */
-	  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-	  {
-	    Object object = null;	    
-	    
-	    if (selection instanceof StructuredSelection)
-	    {
-	      StructuredSelection structuredSelection = (StructuredSelection)selection;
-	      object = structuredSelection.getFirstElement();
-	      if (object instanceof XSDInclude || object instanceof XSDRedefine) {
-		    schemaLocationSection = new SchemaLocationSection();
-	      	return true;
-	      }
-	    }
-	    
-	    return false;
-	  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentBaseTypeOptionsDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentBaseTypeOptionsDialog.java
deleted file mode 100644
index 2aa1a50..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleContentBaseTypeOptionsDialog.java
+++ /dev/null
@@ -1,158 +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.properties.section;
-
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class SimpleContentBaseTypeOptionsDialog extends TypesDialog
-{
-  /**
-   * @param parentShell
-   * @param element
-   * @param id
-   * @param xsdSchema
-   */
-  public SimpleContentBaseTypeOptionsDialog(Shell parentShell, Element element, Object id, XSDSchema xsdSchema)
-  {
-    super(parentShell, element, id, xsdSchema);
-    showAnonymous = false;
-  }
-  
-	protected void ok()
-	{
-		TableItem[] items = table.getItems();
-		int selection = table.getSelectionIndex();
-		if (items != null && items.length > 0 && selection >= 0)
-		 {
-		  typeObject = items[selection].getData();
-		}
-	}
-
-  
-  public void handleSetInput()
-  {
-    XSDDOMHelper domHelper = new XSDDOMHelper();
-    typeSection.getSimpleType().setSelection(false);
-    typeSection.getUserSimpleType().setSelection(false);
-    typeSection.getUserComplexType().setSelection(false);
-    showAnonymous = false;
-    if (element != null)
-    {
-      String derivedBy = domHelper.getDerivedByName(element);
-      String baseType = domHelper.getBaseType(element);
-      boolean derivedByRestriction = true;
-      
-      if (XSDDOMHelper.inputEquals(element, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-      {
-        typeSection.getSimpleType().setEnabled(false);
-        typeSection.getUserSimpleType().setEnabled(false);
-        typeSection.getUserComplexType().setSelection(true);
-
-        previousType = 3;
-      }
-      else if (XSDDOMHelper.inputEquals(element, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
-      {
-        typeSection.getSimpleType().setEnabled(false);
-        typeSection.getUserSimpleType().setEnabled(false);
-
-        if (derivedBy.equals("restriction"))
-        {
-          typeSection.getSimpleType().setEnabled(false);
-          typeSection.getUserSimpleType().setEnabled(false);
-          typeSection.getUserComplexType().setEnabled(true);
-        }
-        else if (derivedBy.equals("extension"))
-        {
-          derivedByRestriction = false;
-          typeSection.getSimpleType().setEnabled(true);
-          typeSection.getUserSimpleType().setEnabled(true);
-          typeSection.getUserComplexType().setEnabled(true);
-        }
-      }
-        
-      if (derivedBy != null)
-      {
-          if (baseType != null && !baseType.equals(""))
-          {
-            Element parent = (Element)element.getParentNode();
-            XSDConcreteComponent component = null;
-            if (parent != null)
-            {
-              component = xsdSchema.getCorrespondingComponent(parent);
-            }
-            XSDTypeDefinition baseTypeDefinition = null;
-            if (component instanceof XSDComplexTypeDefinition)
-            {
-              XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)component;
-              baseTypeDefinition = complexType.getBaseTypeDefinition();
-            }               
-
-            if (typeSection.getBuiltInTypeNamesList(xsdSchema).contains(baseType) && !derivedByRestriction)
-            {
-              typeSection.getSimpleType().setSelection(true);
-              populateBuiltInType();
-              int i = typeSection.getBuiltInTypeNamesList(xsdSchema).indexOf(baseType);
-              table.setSelection(i);
-              previousType = 1;
-            }
-            else if (baseTypeDefinition instanceof XSDSimpleTypeDefinition && !derivedByRestriction)
-            {
-              typeSection.getUserSimpleType().setSelection(true);
-              populateUserSimpleType();
-              int i = typeSection.getUserSimpleTypeNamesList(xsdSchema).indexOf(baseType);
-              if (showAnonymous)
-               {
-                table.setSelection(i + 1);
-              }
-              else
-               {
-                table.setSelection(i);
-              }
-              previousType = 2;
-            }
-            else if (baseTypeDefinition instanceof XSDComplexTypeDefinition)
-            {
-              typeSection.getUserComplexType().setSelection(true);
-              populateUserComplexType();
-              int i = typeSection.getUserComplexTypeNamesList(xsdSchema).indexOf(baseType);
-              if (showAnonymous)
-               {
-                table.setSelection(i + 1);
-              }
-              else
-               {
-                table.setSelection(i);
-              }
-              previousType = 3;
-            }
-          }
-          else
-          {
-            typeSection.getUserComplexType().setSelection(true);
-            populateUserComplexType();
-            table.setSelection(0);
-          }
-        }
-
-    }
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSection.java
deleted file mode 100644
index c69a73a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSection.java
+++ /dev/null
@@ -1,570 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.actions.CreateElementAction;
-import org.eclipse.wst.xsd.ui.internal.actions.DOMAttribute;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDSetTypeHelper;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDVariety;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class SimpleTypeSection extends AbstractSection
-{
-  CCombo varietyCombo;
-  Text typesText;
-  CLabel typesLabel;
-  Button button;
-
-  /**
-   * 
-   */
-  public SimpleTypeSection()
-  {
-    super();
-  }
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		composite = getWidgetFactory().createFlatFormComposite(parent);
-		FormData data;
-
-		varietyCombo = getWidgetFactory().createCCombo(composite, SWT.FLAT);
-		CLabel label = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_VARIETY")); //$NON-NLS-1$
-    
-		List list = XSDVariety.VALUES;	
-		Iterator iter = list.iterator();
-		while (iter.hasNext())
-		{
-		  varietyCombo.add(((XSDVariety)iter.next()).getName());
-		}
-    varietyCombo.addSelectionListener(this);
-
-		data = new FormData();
-		data.left = new FormAttachment(0, 100);
-		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(0, 0);
-		varietyCombo.setLayoutData(data);
-
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(varietyCombo, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(varietyCombo, 0, SWT.CENTER);
-		label.setLayoutData(data);
-    
-    typesText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
-    typesLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
-    button = getWidgetFactory().createButton(composite, "", SWT.PUSH); //$NON-NLS-1$
-    button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
-    
-    typesText.addListener(SWT.Modify, this);
-
-    data = new FormData();
-    data.left = new FormAttachment(0, 100);
-    data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-    data.top = new FormAttachment(button, 0, SWT.CENTER);
-    typesText.setLayoutData(data);
-
-    data = new FormData();
-    data.left = new FormAttachment(0, 0);
-    data.right = new FormAttachment(typesText, -ITabbedPropertyConstants.HSPACE);
-    data.top = new FormAttachment(button, 0, SWT.CENTER);
-    typesLabel.setLayoutData(data);
-
-    button.addSelectionListener(this);
-    data = new FormData();
-    data.left = new FormAttachment(typesText, 0);
-    data.right = new FormAttachment(100,0);
-    data.top = new FormAttachment(varietyCombo, +ITabbedPropertyConstants.VSPACE);
-    button.setLayoutData(data);
-	}
-
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-	  setListenerEnabled(false);
-    if (isReadOnly)
-    {
-      composite.setEnabled(false);
-    }
-    else
-    {
-      composite.setEnabled(true);
-    }
-	  Object input = getInput();
-	  varietyCombo.setText(""); //$NON-NLS-1$
-    typesText.setText(""); //$NON-NLS-1$
-    typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
-	  if (input != null)
-	  {
-	    if (input instanceof XSDSimpleTypeDefinition)
-	    {
-	      XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-        
-        Element simpleTypeElement = st.getElement();
-        Element element = null;
-	      String variety = st.getVariety().getName();
-        
-        int intVariety = st.getVariety().getValue();
-        
-	      if (variety != null)
-	      {
-          varietyCombo.setText(variety);
-          if (intVariety == XSDVariety.ATOMIC)
-          {
-            element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.RESTRICTION_ELEMENT_TAG);
-//            if (element == null)
-//            {
-//              element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.EXTENSION_ELEMENT_TAG);
-//              if (element == null) return;
-//            }
-            
-            if (element == null)
-            {
-              varietyCombo.setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE")); // "Select a simple type variety"); //$NON-NLS-1$            
-            }
-            else
-            {
-              String result = element.getAttribute(XSDConstants.BASE_ATTRIBUTE);
-              if (result == null)
-              {
-                typesText.setText("**anonymous**"); //$NON-NLS-1$
-              }
-              else
-              {
-                typesText.setText(result);
-              }
-            }
-            typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
-          }
-          else if (intVariety == XSDVariety.LIST)
-          {
-            element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.LIST_ELEMENT_TAG);
-            if (element != null)
-            {
-              String result = element.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
-              if (result == null)
-              {
-                typesText.setText("**anonymous**"); //$NON-NLS-1$
-              }
-              else
-              {
-                typesText.setText(result);
-              }
-            }
-            typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_ITEM_TYPE")); //$NON-NLS-1$
-          }
-          else if (intVariety == XSDVariety.UNION)
-          {
-            Element unionElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.UNION_ELEMENT_TAG);
-            if (unionElement != null)
-            {
-              String memberTypes = unionElement.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
-              if (memberTypes != null)
-              {
-                typesText.setText(memberTypes);
-              }
-            }
-            typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
-          }
-	      }
-	    }
-	  }
-	  setListenerEnabled(true);
-	}
-
-  /**
-   * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
-   */
-  public void widgetSelected(SelectionEvent e)
-  {
-	  Object input = getInput();
-    if (e.widget == varietyCombo)
-    {
-  	  if (input != null)
-  	  {
-  	    if (input instanceof XSDSimpleTypeDefinition)
-  	    {
-  	      XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-          Element parent = st.getElement();
-          
-  	      String variety = varietyCombo.getText();
-  	      if (variety.equals(XSDVariety.ATOMIC_LITERAL.getName()))
-          {
-            typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON")); //$NON-NLS-1$
-            st.setVariety(XSDVariety.ATOMIC_LITERAL);
-            addCreateElementActionIfNotExist(XSDConstants.RESTRICTION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_RESTRICTION"), parent, null); //$NON-NLS-1$
-          }
-  	      else if (variety.equals(XSDVariety.UNION_LITERAL.getName()))
-  	      {
-            typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
-            st.setVariety(XSDVariety.UNION_LITERAL);
-            addCreateElementActionIfNotExist(XSDConstants.UNION_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_UNION"), parent, null); //$NON-NLS-1$
-          }
-  	      else if (variety.equals(XSDVariety.LIST_LITERAL.getName()))
-  	      {
-            typesLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_ITEM_TYPE")); //$NON-NLS-1$
-            st.setVariety(XSDVariety.LIST_LITERAL);
-            addCreateElementActionIfNotExist(XSDConstants.LIST_ELEMENT_TAG, XSDEditorPlugin.getXSDString("_UI_ACTION_ADD_LIST"), parent, null); //$NON-NLS-1$
-          }
-  	    }
-  	  }
-    }
-    else if (e.widget == button)
-    {
-      Shell shell = Display.getCurrent().getActiveShell();
-      Element element = ((XSDConcreteComponent)input).getElement();
-      Dialog dialog = null;
-      String property = "";
-      Element secondaryElement = null;
-      
-      IFile currentIFile = ((IFileEditorInput)getActiveEditor().getEditorInput()).getFile();
-
-      XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, xsdSchema);
-      dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider);
-      provider.setDialog((XSDComponentSelectionDialog) dialog);
-      
-      if (input instanceof XSDSimpleTypeDefinition)
-      {
-        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-        Element simpleTypeElement = st.getElement();
-        if (st.getVariety() == XSDVariety.LIST_LITERAL)
-        {
-          Element listElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.LIST_ELEMENT_TAG);
-//          dialog = new TypesDialog(shell, listElement, XSDConstants.ITEMTYPE_ATTRIBUTE, xsdSchema);
-//          dialog.showComplexTypes = false;
-          provider.showComplexTypes(false);
-          
-          secondaryElement = listElement;
-          property = XSDConstants.ITEMTYPE_ATTRIBUTE;
-        }
-        else if (st.getVariety() == XSDVariety.ATOMIC_LITERAL)
-        {
-          Element derivedByElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.RESTRICTION_ELEMENT_TAG);
-          if (derivedByElement == null)
-          {
-            derivedByElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.EXTENSION_ELEMENT_TAG);
-            if (derivedByElement == null) return;
-          }
-          if (derivedByElement != null)
-          {
-//            dialog = new TypesDialog(shell, derivedByElement, XSDConstants.BASE_ATTRIBUTE, xsdSchema);
-//            dialog.showComplexTypes = false;
-              provider.showComplexTypes(false);
-
-              secondaryElement = derivedByElement;
-              property = XSDConstants.BASE_ATTRIBUTE;
-          }
-          else
-          {
-            return;
-          }
-        }
-        else if (st.getVariety() == XSDVariety.UNION_LITERAL)
-        {
-          SimpleContentUnionMemberTypesDialog unionDialog = new SimpleContentUnionMemberTypesDialog(shell, st);
-          unionDialog.setBlockOnOpen(true);
-          unionDialog.create();
-          
-          int result = unionDialog.open();
-          if (result == Window.OK)
-          {
-            String newValue = unionDialog.getResult();
-            beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES_CHANGE"), element); //$NON-NLS-1$
-            Element unionElement = (Element)domHelper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
-            unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
-
-            if (newValue.length() > 0)
-            {
-              unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
-            }
-            else
-            {
-              unionElement.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);  
-            }
-            endRecording(unionElement);
-            if (doRefresh)
-            {
-              refresh();
-            }
-          }
-          return;
-        }
-        else
-        {
-//          dialog = new TypesDialog(shell, element, "type", xsdSchema); //$NON-NLS-1$
-            property = "type";
-        }
-      }
-      else
-      {
-//        dialog = new TypesDialog(shell, element, "type", xsdSchema); //$NON-NLS-1$
-          property = "type";
-      }
-      beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element); //$NON-NLS-1$
-      dialog.setBlockOnOpen(true);
-      dialog.create();
-      int result = dialog.open();
-      
-      if (result == Window.OK)
-      {
-          if (secondaryElement == null) {
-              secondaryElement = element;
-          }
-          XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, xsdSchema);
-          helper.setType(secondaryElement, property, ((XSDComponentSelectionDialog) dialog).getSelection());          
-
-        XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
-        st.setElement(element);
-        updateSimpleTypeFacets();
-      }
-      endRecording(element);
-    }
-    if (doRefresh)
-    {
-      refresh();
-    }
-  }
-
-  public boolean shouldUseExtraSpace()
-  {
-    return false;
-  }
-
-  
-  protected boolean addCreateElementActionIfNotExist(String elementTag, String label, Element parent, Node relativeNode)
-  {
-    XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
-    List attributes = new ArrayList();
-    String reuseType = null;
-    
-    beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_VARIETY_CHANGE"), parent); //$NON-NLS-1$
-    if (elementTag.equals(XSDConstants.RESTRICTION_ELEMENT_TAG))
-    {
-      Element listNode = getFirstChildNodeIfExists(parent, XSDConstants.LIST_ELEMENT_TAG, false);
-      if (listNode != null)
-      {
-        reuseType = listNode.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
-        XSDDOMHelper.removeNodeAndWhitespace(listNode);
-      }
-
-      Element unionNode = getFirstChildNodeIfExists(parent, XSDConstants.UNION_ELEMENT_TAG, false);
-      if (unionNode != null)
-      {
-        String memberAttr = unionNode.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
-        if (memberAttr != null)
-        {
-          StringTokenizer stringTokenizer = new StringTokenizer(memberAttr);
-          reuseType = stringTokenizer.nextToken();
-        }
-        XSDDOMHelper.removeNodeAndWhitespace(unionNode);
-      }
-
-      if (reuseType == null)
-      {
-        reuseType = getBuiltInStringQName();        
-      }
-      attributes.add(new DOMAttribute(XSDConstants.BASE_ATTRIBUTE, reuseType));
-      st.setItemTypeDefinition(null);
-    }
-    else if (elementTag.equals(XSDConstants.LIST_ELEMENT_TAG))
-    {
-      Element restrictionNode = getFirstChildNodeIfExists(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false);
-      if (restrictionNode != null)
-      {
-        reuseType = restrictionNode.getAttribute(XSDConstants.BASE_ATTRIBUTE);
-        XSDDOMHelper.removeNodeAndWhitespace(restrictionNode);
-      }
-      Element unionNode = getFirstChildNodeIfExists(parent, XSDConstants.UNION_ELEMENT_TAG, false);
-      if (unionNode != null)
-      {
-        String memberAttr = unionNode.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
-        if (memberAttr != null)
-        {
-          StringTokenizer stringTokenizer = new StringTokenizer(memberAttr);
-          reuseType = stringTokenizer.nextToken();
-        }
-        XSDDOMHelper.removeNodeAndWhitespace(unionNode);
-      }
-      attributes.add(new DOMAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, reuseType));
-    }
-    else if (elementTag.equals(XSDConstants.UNION_ELEMENT_TAG))
-    {
-      Element listNode = getFirstChildNodeIfExists(parent, XSDConstants.LIST_ELEMENT_TAG, false);
-      if (listNode != null)
-      {
-        reuseType = listNode.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
-        XSDDOMHelper.removeNodeAndWhitespace(listNode);
-      }
-      Element restrictionNode = getFirstChildNodeIfExists(parent, XSDConstants.RESTRICTION_ELEMENT_TAG, false);
-      if (restrictionNode != null)
-      {
-        reuseType = restrictionNode.getAttribute(XSDConstants.BASE_ATTRIBUTE);
-        XSDDOMHelper.removeNodeAndWhitespace(restrictionNode);
-      }
-      attributes.add(new DOMAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, reuseType));
-      st.setItemTypeDefinition(null);
-    }
-    
-    if (getFirstChildNodeIfExists(parent, elementTag, false) == null)
-    {
-      Action action = addCreateElementAction(elementTag,label,attributes,parent,relativeNode);
-      action.run();
-    }
-
-    st.setElement(parent);
-//    st.updateElement();
-    endRecording(parent);
-    return true;
-  }
-
-  protected Action addCreateElementAction(String elementTag, String label, List attributes, Element parent, Node relativeNode)
-  {
-    CreateElementAction action = new CreateElementAction(label);
-    action.setElementTag(elementTag);
-    action.setAttributes(attributes);
-    action.setParentNode(parent);
-    action.setRelativeNode(relativeNode);
-    return action;
-  }
-
-  
-  protected Element getFirstChildNodeIfExists(Node parent, String elementTag, boolean isRef)
-  {
-    NodeList children = parent.getChildNodes();
-    Element targetNode = null;
-    for (int i=0; i < children.getLength(); i++)
-    {
-      Node child = children.item(i);
-      if (child != null && child instanceof Element)
-      {
-        if (XSDDOMHelper.inputEquals((Element)child, elementTag, isRef))
-        {
-          targetNode = (Element)child;
-          break;
-        }
-      }
-    }
-    return targetNode;
-  }
-
-  protected String getBuiltInStringQName()
-  {
-    String stringName = "string"; //$NON-NLS-1$
-    
-    if (getSchema() != null)
-    {
-      String schemaForSchemaPrefix = getSchema().getSchemaForSchemaQNamePrefix();
-      if (schemaForSchemaPrefix != null && schemaForSchemaPrefix.length() > 0)
-      {
-        String prefix = getSchema().getSchemaForSchemaQNamePrefix();
-        if (prefix != null && prefix.length() > 0)
-        {
-          stringName = prefix + ":" + stringName; //$NON-NLS-1$
-        }
-      }
-    }
-    return stringName;
-  }
-
-  private void updateSimpleTypeFacets()
-  {
-    XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
-    Element simpleTypeElement = st.getElement();
-    Element derivedByElement = getDomHelper().getDerivedByElement(simpleTypeElement);
-    if (derivedByElement != null)
-    {
-      List nodesToRemove = new ArrayList();
-      NodeList childList = derivedByElement.getChildNodes();
-      int length = childList.getLength();
-      for (int i = 0; i < length; i++)
-      {
-        Node child = childList.item(i);
-        if (child instanceof Element)
-        {
-          Element elementChild = (Element)child;
-          if (!(elementChild.getLocalName().equals("pattern") || elementChild.getLocalName().equals("enumeration") || //$NON-NLS-1$
-               XSDDOMHelper.inputEquals(elementChild, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false) ||
-               XSDDOMHelper.inputEquals(elementChild, XSDConstants.ANNOTATION_ELEMENT_TAG, false) ||
-               XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false) ||
-               XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTE_ELEMENT_TAG, true) ||
-               XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, false) ||
-               XSDDOMHelper.inputEquals(elementChild, XSDConstants.ATTRIBUTEGROUP_ELEMENT_TAG, true) ||
-               XSDDOMHelper.inputEquals(elementChild, XSDConstants.ANYATTRIBUTE_ELEMENT_TAG, false)
-               ))
-          {
-            nodesToRemove.add(child);
-          }
-        }
-      }
-      Iterator iter = nodesToRemove.iterator();
-      while (iter.hasNext())
-      {
-        Element facetToRemove = (Element)iter.next();
-        String facetName = facetToRemove.getLocalName();
-        Iterator it = st.getValidFacets().iterator();
-        boolean doRemove = true;
-        while (it.hasNext())
-        {
-          String aValidFacet = (String)it.next();
-          if (aValidFacet.equals(facetName))
-          {
-            doRemove = false;
-            break;
-          }
-        }
-        if (doRemove)
-        {
-          XSDDOMHelper.removeNodeAndWhitespace(facetToRemove);
-        }
-      }
-    }
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSectionDescriptor.java
deleted file mode 100644
index bd02dee..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeSectionDescriptor.java
+++ /dev/null
@@ -1,91 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-
-public class SimpleTypeSectionDescriptor extends AbstractSectionDescriptor
-{
-
-  /**
-   * 
-   */
-  public SimpleTypeSectionDescriptor()
-  {
-    super();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.simpletype";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDSimpleTypeDefinition.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new SimpleTypeSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.general";
-  }
-  
-  public String getAfterSection()
-  {
-    return "org.eclipse.wst.xsdeditor.section.name";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDSimpleTypeDefinition)
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSection.java
deleted file mode 100644
index a4496dc..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSection.java
+++ /dev/null
@@ -1,185 +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.properties.section;
-
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class SimpleTypeUnionSection extends AbstractSection
-{
-  Text memberTypesText;
-  Button button;
-
-  /**
-   * 
-   */
-  public SimpleTypeUnionSection()
-  {
-    super();
-  }
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		composite = getWidgetFactory().createFlatFormComposite(parent);
-		FormData data;
-
-		memberTypesText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
-		CLabel label = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES")); //$NON-NLS-1$
-    button = getWidgetFactory().createButton(composite, "...", SWT.PUSH); //$NON-NLS-1$
-    
-    memberTypesText.addListener(SWT.Modify, this);
-//    memberTypesText.addSelectionListener(this);
-
-		data = new FormData();
-		data.left = new FormAttachment(0, 100);
-		data.right = new FormAttachment(95, 0);
-		data.top = new FormAttachment(button, 0, SWT.CENTER);
-		memberTypesText.setLayoutData(data);
-
-
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(memberTypesText, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(button, 0, SWT.CENTER);
-		label.setLayoutData(data);
-
-    button.addSelectionListener(this);
-		data = new FormData();
-		data.left = new FormAttachment(memberTypesText, +ITabbedPropertyConstants.HSPACE);
-		data.right = new FormAttachment(100,0);
-		// data.top = new FormAttachment(typeCombo, 0, SWT.CENTER);
-		data.top = new FormAttachment(0,0);
-		button.setLayoutData(data);
-		
-	}
-
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-	  setListenerEnabled(false);
-	  Object input = getInput();
-    if (isReadOnly)
-    {
-      composite.setEnabled(false);
-    }
-    else
-    {
-      composite.setEnabled(true);
-    }
-	  memberTypesText.setText(""); //$NON-NLS-1$
-	  if (input != null)
-	  {
-	    Element element = null;
-	    if (input instanceof XSDSimpleTypeDefinition)
-	    {
-	      XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-	      element = st.getElement();
-        Element unionElement = (Element)domHelper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
-        String memberTypes = unionElement.getAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
-        if (memberTypes != null)
-        {
-          memberTypesText.setText(memberTypes);
-        }
-	      
-//        StringBuffer buf = new StringBuffer();	      
-//	      if (st.getMemberTypeDefinitions().size() > 0)
-//	      {
-//	        for (Iterator i = st.getMemberTypeDefinitions().iterator(); i.hasNext(); )
-//	        {
-//	          String name = ((XSDSimpleTypeDefinition)i.next()).getQName(getSchema());
-//	          if (name != null)
-//	          {
-//	            buf.append(name);
-//	            buf.append(" ");
-//	          }
-//	        }
-//	      }
-//	      memberTypesText.setText(buf.toString());
-	    }
-	  }
-	  setListenerEnabled(true);
-	}
-
-  /**
-   * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
-   */
-  public void widgetSelected(SelectionEvent e)
-  {
-    if (e.widget == button)
-    {
-	    Shell shell = Display.getCurrent().getActiveShell();
-      
-	    XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)getInput();
-	    Element element = st.getElement();
-      SimpleContentUnionMemberTypesDialog dialog = new SimpleContentUnionMemberTypesDialog(shell, st);
-      dialog.setBlockOnOpen(true);
-      dialog.create();
-      
-      int result = dialog.open();
-      if (result == Window.OK)
-      {
-        String newValue = dialog.getResult();
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_LABEL_MEMBERTYPES_CHANGE"), element); //$NON-NLS-1$
-        Element unionElement = (Element)domHelper.getChildNode(element, XSDConstants.UNION_ELEMENT_TAG);
-        unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
-
-        if (newValue.length() > 0)
-        {
-          unionElement.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, newValue);
-        }
-        else
-        {
-          unionElement.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);  
-        }
-        endRecording(unionElement);
-
-      }
-
-      refresh();
-    }
-  }
-  
-  public void doHandleEvent(Event event)
-  {
-	  if (event.widget == memberTypesText)
-	  {
-	  }
-
-  }
-
-  public boolean shouldUseExtraSpace()
-  {
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSectionDescriptor.java
deleted file mode 100644
index b1338ae..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/SimpleTypeUnionSectionDescriptor.java
+++ /dev/null
@@ -1,73 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-
-public class SimpleTypeUnionSectionDescriptor extends AbstractSectionDescriptor
-{
-  /**
-   * 
-   */
-  public SimpleTypeUnionSectionDescriptor()
-  {
-    super();
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.simpletypeunion";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDSimpleTypeDefinition.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new SimpleTypeUnionSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.general";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TextChangeHelper.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TextChangeHelper.java
deleted file mode 100644
index 0df6ffa..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TextChangeHelper.java
+++ /dev/null
@@ -1,102 +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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-
-public abstract class TextChangeHelper implements Listener
-{
-	private boolean nonUserChange;
-
-	/**
-	 * Marks the start of a programmatic change to the widget contents.
-	 * Clients must call startNonUserChange() before directly setting 
-	 * the widget contents to avoid unwanted lifecycle events.
-	 * @throws IllegalArgumentException if a programmatic change is 
-	 * already in progress.
-	 */
-	public void startNonUserChange() {
-		if (nonUserChange)
-			throw new IllegalStateException("we already started a non user change");//$NON-NLS-1$
-		nonUserChange = true;
-	}
-
-	/**
-	 * Clients who call startNonUserChange() should call 
-	 * finishNonUserChange() as soon as possible after the change is done.
-	 * @throws IllegalArgumentException if no change is in progress.
-	 */
-	public void finishNonUserChange() {
-		if (!nonUserChange)
-			throw new IllegalStateException("we are not in a non user change");//$NON-NLS-1$
-		nonUserChange = false;
-	}
-
-	/**
-	 * Returns true if a programmatic change is in progress.
-	 */
-	public boolean isNonUserChange() {
-		return nonUserChange;
-	}
-
-	/**
-	 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
-	 */
-	public void handleEvent(Event event) {
-		switch (event.type) {
-			case SWT.KeyDown :
-				if (event.character == SWT.CR)
-					textChanged((Control)event.widget);
-				break;
-			case SWT.FocusOut :
-				textChanged((Control)event.widget);
-				break;
-		}
-	}
-
-	/**
-	 * Abstract method notified when a text field has been changed.
-	 * @param control
-	 */
-	public abstract void textChanged(Control control);
-
-	/**
-	 * Registers this helper with the given control to listen for events
-	 * which indicate that a change is in progress (or done).
-	 */
-	public void startListeningTo(Control control) {
-		control.addListener(SWT.FocusOut, this);
-		control.addListener(SWT.Modify, this);
-	}
-
-	/**
-	 * Registers this helper with the given control to listen for the
-	 * Enter key.  When Enter is pressed, the change is considered done 
-	 * (this is only appropriate for single-line Text widgets).
-	 */
-	public void startListeningForEnter(Control control) {
-		// NOTE: KeyDown rather than KeyUp, because of similar usage in CCombo. 
-		control.addListener(SWT.KeyDown, this);
-	}
-
-	/**
-	 * Unregisters this helper from a control previously passed to
-	 * startListeningTo() and/or startListeningForEnter().
-	 */
-	public void stopListeningTo(Control control) {
-		control.removeListener(SWT.FocusOut, this);
-		control.removeListener(SWT.Modify, this);
-		control.removeListener(SWT.KeyDown, this);
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesDialog.java
deleted file mode 100644
index 1454b4d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesDialog.java
+++ /dev/null
@@ -1,721 +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.properties.section;
-
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
-import org.eclipse.swt.widgets.Text;
-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.ViewUtility;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.wst.xsd.ui.internal.widgets.TypeSection;
-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.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-
-public class TypesDialog extends Dialog implements SelectionListener, Listener
-{
-  XSDSchema xsdSchema;
-  String property;
-
-  /**
-   * @param parentShell
-   */
-  public TypesDialog(Shell parentShell, Element element, Object id, XSDSchema xsdSchema)
-  {
-    super(parentShell);
-    setShellStyle(getShellStyle() | SWT.RESIZE);
-    this.element = element;
-    this.property = (String)id;
-    this.element = element;
-    this.xsdSchema = xsdSchema;
-
-    if (XSDDOMHelper.inputEquals(element, XSDConstants.ELEMENT_ELEMENT_TAG, false))
-    {
-      showComplexTypes = true;
-    }
-    else if (XSDDOMHelper.inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false) ||
-      XSDDOMHelper.inputEquals(element, XSDConstants.LIST_ELEMENT_TAG, false) ||
-      XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
-    {
-      showComplexTypes = false;
-    }
-  }
-
-  String type;
-  Object typeObject;
-  Text textField;
-  Table table;
-  TableColumn tableColumn;
-  Element element;
-  
-  boolean showComplexTypes = true;
-  TypeSection typeSection;
-  boolean showAnonymous = true;
-  String previousStringType = "";
-  boolean isAnonymous;
-  int previousType;
-
-  protected void configureShell(Shell shell)
-  {
-    super.configureShell(shell);
-  }
-
-  protected void buttonPressed(int buttonId)
-  {
-    if (buttonId == Dialog.OK)
-    {
-      type = table.getItem(table.getSelectionIndex()).getText();
-      ok();
-    }
-    super.buttonPressed(buttonId);
-  }
-
-  public Object getTypeObject() { return typeObject; }
-  public String getType() { return type; }
-
-  //
-  // Create the controls
-  //
-  public Control createDialogArea(Composite parent)
-  {
-    Composite client = (Composite)super.createDialogArea(parent);
-    getShell().setText(XSDEditorPlugin.getXSDString("_UI_LABEL_AVAILABLE_TYPES"));
-
-    typeObject = null;
-    
-    GridLayout gl = new GridLayout(1, true);
-//    gl.marginHeight = 0;
-//    gl.marginWidth = 0;
-//    gl.horizontalSpacing = 0;
-//    gl.verticalSpacing = 0;
-    client.setLayout(gl);
-
-    GridData gd = new GridData();
-    gd.grabExcessHorizontalSpace = true;
-    gd.grabExcessVerticalSpace = true;
-    gd.horizontalAlignment = GridData.FILL;
-    gd.verticalAlignment = GridData.FILL;
-    gd.horizontalIndent = 0;
-    client.setLayoutData(gd);
-    
-    typeSection = new TypeSection(client);
-    typeSection.setShowUserComplexType(showComplexTypes);
-
-    typeSection.createClient(client);
-    typeSection.getSimpleType().setSelection(false);
-    typeSection.getSimpleType().addSelectionListener(this);
-    typeSection.getUserSimpleType().addSelectionListener(this);
-    if (showComplexTypes)
-    {
-      typeSection.getUserComplexType().addSelectionListener(this);
-    }
-
-    textField = ViewUtility.createTextField(client, 50);
-    textField.addListener(SWT.Modify, this);
-    ViewUtility.createVerticalFiller(client, 0);
-
-    table = new Table(client,
-                      SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL); 
-    table.setHeaderVisible(false);
-    table.setLinesVisible(true);
-    table.addSelectionListener(this);
-    
-    GridData gd2 = new GridData();
-    gd2.grabExcessHorizontalSpace = true;
-    gd2.grabExcessVerticalSpace = true;
-    gd2.horizontalAlignment = GridData.FILL;
-    gd2.verticalAlignment = GridData.FILL;
-    gd2.heightHint = 200;
-    table.setLayoutData(gd2);
-    table.addListener(SWT.Resize, this);
-    
-    tableColumn = new TableColumn(table, SWT.LEFT);
-//    tableColumn.setImage(XSDEditorPlugin.getXSDImage("icons/XSDElement.gif"));
-    tableColumn.setResizable(true);
-    tableColumn.setWidth(200);
-
-    // Fill table and select input type
-    handleSetInput();
-
-    return client;
-  }
-  
-  public void handleEvent(Event event)
-  {
-  	if (event.type == SWT.Resize && event.widget == table) {
-  		tableColumn.setWidth(table.getSize().x);
-  	}
-  	else if (event.type == SWT.Modify && event.widget == textField) {
-  		boolean showAll = false;
-  		String inputString = textField.getText();
-  		
-  		if (inputString.equals("")) {
-  			showAll = true;
-  		}
-  		else {
-  			inputString = insertString("*", ".", inputString);
-  			inputString = insertString("?", ".", inputString);
-  			inputString = inputString + ".*";
-  		}
-  		
-  		try {
-  			if (typeSection.getSimpleType().getSelection())
-  			{
-  				if (showAll) {
-  					populateBuiltInType();
-  				}
-  				else {
-  					populateBuiltInType(inputString);
-  				}
-  			}
-  			else if (typeSection.getUserComplexType().getSelection())
-  			{
-  				if (showAll) {
-  					populateUserComplexType();
-  				}
-  				else {
-  					populateUserComplexType(inputString);
-  				}
-  			}
-  			else if (typeSection.getUserSimpleType().getSelection())
-  			{
-  				if (showAll) {
-  					populateUserSimpleType();
-  				}
-  				else {
-  					populateUserSimpleType(inputString);
-  				}
-  			}
-  		}
-  		catch (Exception e) {
-  			// Do nothing
-  		}
-  	}
-  	
-  	setEnabledState();
-  }
-  
-  private void setEnabledState() {
-  	if (table.getSelectionIndex() != -1) {
-  		this.getButton(IDialogConstants.OK_ID).setEnabled(true);
-  	}
-  	else {
-  		this.getButton(IDialogConstants.OK_ID).setEnabled(false);
-  	}
-  }
-  
-  private String insertString(String target, String newString, String string) {
-  	StringBuffer stringBuffer = new StringBuffer(string);
-  	
-  	int index = stringBuffer.indexOf(target);
-  	while (index != -1) {
-  		stringBuffer = stringBuffer.insert(index, newString);
-  		index = stringBuffer.indexOf(target, index + newString.length() + target.length());
-  	}
-  	
-  	return stringBuffer.toString();
-  }
-  
-  public void widgetSelected(SelectionEvent e)
-  {
-    if (e.widget == typeSection.getSimpleType() && typeSection.getSimpleType().getSelection())
-    {
-    	if (textField.getText().equals("")) {
-    		populateBuiltInType();
-    	}
-    	else {
-    		populateBuiltInType(textField.getText());
-    	}
-    }
-    else if (e.widget == typeSection.getUserComplexType() && typeSection.getUserComplexType().getSelection())
-    {
-    	if (textField.getText().equals("")) {
-    		populateUserComplexType();
-    	}
-    	else {
-    		populateUserComplexType(textField.getText());
-    	}
-    }
-    else if (e.widget == typeSection.getUserSimpleType() && typeSection.getUserSimpleType().getSelection())
-    {
-    	if (textField.getText().equals("")) {
-    		populateUserSimpleType();
-    	}
-    	else {
-    		populateUserSimpleType(textField.getText());
-    	}
-    }
-    setEnabledState();
-  }
-  
-	public void widgetDefaultSelected(SelectionEvent e)
-  {
-  }
-
-  protected void ok()
-  {
-    TableItem[] items = table.getItems();
-    int selection = table.getSelectionIndex();
-    if (items != null && items.length > 0 && selection >= 0)
-    {
-      typeObject = items[selection].getData();
-    }
-//    System.out.println("typeObject is " + typeObject);
-
-//    beginRecording(XSDEditorPlugin.getXSDString("_UI_ELEMENT_TYPE_CHANGE"), element);
-//    beginRecording(XSDEditorPlugin.getXSDString("_UI_TYPE_CHANGE"), element);
-//    doSetValue(typeObject);
-//    applyEditorValueAndDeactivate();
-//    dialog.close();
-
-    if (!XSDDOMHelper.inputEquals(element, XSDConstants.UNION_ELEMENT_TAG, false))
-    {
-	    if (typeObject.equals("**anonymous**"))
-	    {
-	      if (typeSection.getUserSimpleType().getSelection())
-	      {
-//	        if (!previousStringType.equals("**anonymous**"))
-	        {
-	          updateElementToAnonymous(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-	        }
-	      }
-	      else
-	      {
-//	        if (!previousStringType.equals("**anonymous**"))
-	        {
-	          updateElementToAnonymous(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-	        }
-	      }
-	      // element.removeAttribute(XSDConstants.TYPE_ATTRIBUTE);
-	      element.removeAttribute(property);
-	    }
-	    else
-	    {
-	      XSDDOMHelper.updateElementToNotAnonymous(element);
-	      //element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, typeObject.toString());
-	      element.setAttribute(property, typeObject.toString());
-	    }
-    }
-//    endRecording(element);
-
-    //implement dispose();
-//    table.removeAll();
-//    table.dispose();
-  }
-
-	
-  public void handleSetInput()
-  {
-    table.removeAll();
-    isAnonymous = checkForAnonymousType(element);
-    // Attr attr = element.getAttributeNode(XSDConstants.TYPE_ATTRIBUTE);
-    Attr attr = element.getAttributeNode(property);
-    if (attr != null)
-    {
-      String value = attr.getValue();
-      if (typeSection.getBuiltInTypeNamesList(xsdSchema).contains(value))
-      {
-        typeSection.getSimpleType().setSelection(true);
-        populateBuiltInType();
-        int i = typeSection.getBuiltInTypeNamesList(xsdSchema).indexOf(value);
-        table.setSelection(i);
-        previousType = 1;
-      }
-      else if (typeSection.getUserSimpleTypeNamesList(xsdSchema).contains(value))
-      {
-        typeSection.getUserSimpleType().setSelection(true);
-        populateUserSimpleType();
-        int i = typeSection.getUserSimpleTypeNamesList(xsdSchema).indexOf(value);
-        if (showAnonymous)
-        {
-          table.setSelection(i + 1);
-        }
-        else
-        {
-          table.setSelection(i);
-        }
-        previousType = 2;
-      }
-      else if (typeSection.getUserComplexTypeNamesList(xsdSchema).contains(value))
-      {
-        typeSection.getUserComplexType().setSelection(true);
-        populateUserComplexType();
-        int i = typeSection.getUserComplexTypeNamesList(xsdSchema).indexOf(value);
-        if (showAnonymous)
-         {
-          table.setSelection(i + 1);
-        }
-        else
-         {
-          table.setSelection(i);
-        }
-        previousType = 3;
-      }
-      else // if it is type="" for an empty list of simple types
-        {
-        typeSection.getUserSimpleType().setSelection(true);
-        populateUserSimpleType();
-        previousType = 2;
-      }
-    }
-    else
-    {
-      if (isAnonymous)
-      {
-        if (isSTAnonymous(element))
-        {
-          typeSection.getUserSimpleType().setSelection(true);
-          populateUserSimpleType();
-          previousType = 2;
-        }
-        else
-        {
-          typeSection.getUserComplexType().setSelection(true);
-          populateUserComplexType();
-          previousType = 3;
-        }
-        table.setSelection(0); // anonymous
-        //        typeSection.getTypeList().setText("**anonymous**");
-      }
-      else
-      {
-        typeSection.getSimpleType().setSelection(true);
-        populateBuiltInType();
-        table.setSelection(0);
-        
-        //        typeSection.getTypeList().setEnabled(true);
-        //        typeSection.getSimpleType().setSelection(true);
-        //        typeSection.populateBuiltInType(xsdSchema);
-        //        typeSection.getTypeList().setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE"));
-        previousType = 1;
-      }
-    }
-    if (table.getSelection() != null && table.getSelection().length > 0)
-    {
-      previousStringType = (table.getSelection()[0]).getText();
-    }
-  }
-  
-  public void populateBuiltInType()
-  {
-    table.removeAll();
-    List items = getBuiltInTypeNamesList();
-    for (int i = 0; i < items.size(); i++)
-    {
-      TableItem item = new TableItem(table, SWT.NONE);
-      item.setText(items.get(i).toString());
-      item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
-      item.setData(items.get(i));
-    }
-  }
-
-  public void populateBuiltInType(String fragment)
-  {
-    table.removeAll();
-    List items = getBuiltInTypeNamesList();
-    fragment = fragment.toLowerCase();
-	Pattern regex = Pattern.compile(fragment);
-	
-    for (int i = 0; i < items.size(); i++)
-    {
-    	String itemString = items.get(i).toString().toLowerCase();
-    	Matcher m = regex.matcher(itemString);
-
-    	if (itemString.startsWith(fragment) || m.matches()) {
-    		TableItem item = new TableItem(table, SWT.NONE);
-    		item.setText(items.get(i).toString());
-    		item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
-    		item.setData(items.get(i));
-    	}
-    }
-    
-    table.select(0);
-  }
-
-  public void populateUserComplexType()
-  {
-    table.removeAll();
-    if (showAnonymous)
-    {
-      TableItem anonymousItem = new TableItem(table, SWT.NONE);
-      anonymousItem.setText("**anonymous**");
-      anonymousItem.setData("**anonymous**");
-    }
-    List items = getUserComplexTypeNamesList();
-    for (int i = 0; i < items.size(); i++)
-    {
-      TableItem item = new TableItem(table, SWT.NONE);
-//      System.out.println("item " + i + " is " + item);
-      item.setText(items.get(i).toString());
-      item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif"));
-      item.setData(items.get(i));
-    }
-  }
-  
-  public void populateUserComplexType(String fragment)
-  {
-    table.removeAll();
-    fragment = fragment.toLowerCase();
-    Pattern regex = java.util.regex.Pattern.compile(fragment);
-    
-    if (showAnonymous)
-    {
-    	Matcher m = regex.matcher("**anonymous**");
-    	if ("**anonymous**".startsWith(fragment) || m.matches()) {
-    		TableItem anonymousItem = new TableItem(table, SWT.NONE);
-    		anonymousItem.setText("**anonymous**");
-    		anonymousItem.setData("**anonymous**");
-    	}
-    }
-    List items = getUserComplexTypeNamesList();
-    for (int i = 0; i < items.size(); i++)
-    {
-    	String itemString = items.get(i).toString().toLowerCase();
-    	Matcher m = regex.matcher(itemString);
-    	
-    	if (itemString.startsWith(fragment) || m.matches()) {
-    		TableItem item = new TableItem(table, SWT.NONE);
-    		item.setText(items.get(i).toString());
-    		item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif"));
-    		item.setData(items.get(i));
-    	}
-    }
-    
-    table.select(0);
-  }
-
-  public void populateUserSimpleType()
-  {
-    table.removeAll();
-    if (showAnonymous)
-     {
-      TableItem anonymousItem = new TableItem(table, SWT.NONE);
-      anonymousItem.setText("**anonymous**");
-      anonymousItem.setData("**anonymous**");
-    }
-    List items = getUserSimpleTypeNamesList();
-    for (int i = 0; i < items.size(); i++)
-     {
-      TableItem item = new TableItem(table, SWT.NONE);
-      item.setText(items.get(i).toString());
-      item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
-      item.setData(items.get(i));
-    }
-  }
-
-  public void populateUserSimpleType(String fragment)
-  {
-    table.removeAll();
-    fragment = fragment.toLowerCase();
-    Pattern regex = java.util.regex.Pattern.compile(fragment);
-    
-    if (showAnonymous)
-     {
-    	Matcher m = regex.matcher("**anonymous**");
-    	if ("**anonymous**".startsWith(fragment) || m.matches())  {
-    		TableItem anonymousItem = new TableItem(table, SWT.NONE);
-    		anonymousItem.setText("**anonymous**");
-    		anonymousItem.setData("**anonymous**");
-    	}
-    }
-    List items = getUserSimpleTypeNamesList();
-    for (int i = 0; i < items.size(); i++)
-     {
-    	String itemString = items.get(i).toString().toLowerCase();
-    	Matcher m = regex.matcher(itemString);
-    	
-    	if (itemString.startsWith(fragment) || m.matches()) {
-    		TableItem item = new TableItem(table, SWT.NONE);
-    		item.setText(items.get(i).toString());
-    		item.setImage(XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif"));
-    		item.setData(items.get(i));
-    	}
-    }
-    
-    table.select(0);
-  }
-  
-  boolean checkForAnonymousType(Element element)
-  {
-    /*
-     * Using Ed's model to check boolean isAnonymous = false;
-     * 
-     * XSDConcreteComponent component =
-     * getXSDSchema().getCorrespondingComponent(element); if (component
-     * instanceof XSDElementDeclaration) { XSDElementDeclaration xsdElem =
-     * (XSDElementDeclaration)component; isAnonymous =
-     * xsdElem.isSetAnonymousTypeDefinition(); } return isAnonymous;
-     */
-    XSDDOMHelper helper = new XSDDOMHelper();
-    boolean isAnonymous = false;
-    Node aNode =
-    helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-    if (aNode != null)
-     {
-      return true;
-    }
-    aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-    if (aNode != null)
-     {
-      isAnonymous = true;
-    }
-    return isAnonymous;
-  }
-
-  void updateElementToAnonymous(Element element, String xsdType)
-  {
-    String prefix = element.getPrefix();
-    prefix = (prefix == null) ? "" : (prefix + ":");
-    XSDDOMHelper.updateElementToNotAnonymous(element);
-    Element childNode = null;
-    if (xsdType.equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-    {
-      childNode = element.getOwnerDocument().createElementNS(
-          XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001,
-          prefix + XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-    }
-    else if (xsdType.equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG))
-    {
-      childNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-      
-      Element restrictionNode = element.getOwnerDocument().createElementNS(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, prefix + XSDConstants.RESTRICTION_ELEMENT_TAG);
-      restrictionNode.setAttribute(XSDConstants.BASE_ATTRIBUTE, prefix + "string");
-      childNode.appendChild(restrictionNode);      
-    }
-    if (childNode != null)
-    {
-      XSDDOMHelper helper = new XSDDOMHelper();
-      Node annotationNode = helper.getChildNode(element, XSDConstants.ANNOTATION_ELEMENT_TAG);
-      if (annotationNode == null)
-      {
-        Node firstChild = element.getFirstChild();
-        element.insertBefore(childNode, firstChild);
-      }
-      else
-      {
-        Node nextSibling = annotationNode.getNextSibling();
-        element.insertBefore(childNode, nextSibling);
-      }
-      XSDDOMHelper.formatChild(childNode);
-    }
-  }
-
-  boolean isSTAnonymous(Element element)
-  {
-    XSDDOMHelper helper = new XSDDOMHelper();
-    Node aNode = helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-    if (aNode != null)
-    {
-      if (XSDDOMHelper.inputEquals(aNode, XSDConstants.SIMPLETYPE_ELEMENT_TAG, false))
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  boolean isCTAnonymous(Element element)
-  {
-    XSDDOMHelper helper = new XSDDOMHelper();
-    Node aNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-    if (aNode != null)
-     {
-      if (XSDDOMHelper.inputEquals(aNode, XSDConstants.COMPLEXTYPE_ELEMENT_TAG, false))
-       {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  XSDTypeDefinition getAnonymousTypeDefinition(Element element)
-  {
-    XSDDOMHelper helper = new XSDDOMHelper();
-    Node typeDefinitionNode =
-    helper.getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-    if (typeDefinitionNode == null)
-     {
-      typeDefinitionNode = helper.getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-    }
-    if (typeDefinitionNode != null)
-     {
-      XSDConcreteComponent component =
-      xsdSchema.getCorrespondingComponent(typeDefinitionNode);
-      if (component instanceof XSDTypeDefinition)
-       {
-        return (XSDTypeDefinition) component;
-      }
-    }
-    return null;
-  }
-  
-  public java.util.List getBuiltInTypeNamesList()
-  {
-    TypesHelper helper = new TypesHelper(xsdSchema);
-    return helper.getBuiltInTypeNamesList();
-  }
-
-  public java.util.List getUserSimpleTypeNamesList()
-  {
-    TypesHelper helper = new TypesHelper(xsdSchema);
-    return helper.getUserSimpleTypeNamesList();
-  }
-  
-  public java.util.List getUserComplexTypeNamesList()
-  {
-    TypesHelper helper = new TypesHelper(xsdSchema);
-    return helper.getUserComplexTypeNamesList();
-  }
-  
-  protected boolean hasElementChildren(Node parentNode)
-  {
-    boolean hasChildrenElements = false;
-    if (parentNode != null && parentNode.hasChildNodes())
-    {
-      NodeList nodes = parentNode.getChildNodes();
-      for (int i = 0; i < nodes.getLength(); i++)
-      {
-        if (nodes.item(i) instanceof Element)
-        {
-          hasChildrenElements = true;
-          break;
-        }
-      }
-    }
-    return hasChildrenElements;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSection.java
deleted file mode 100644
index 3381d16..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSection.java
+++ /dev/null
@@ -1,359 +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.properties.section;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDComponentSelectionProvider;
-import org.eclipse.wst.xsd.ui.internal.dialogs.types.xsd.XSDSetTypeHelper;
-import org.eclipse.wst.xsd.ui.internal.widgets.TypeSection;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-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;
-
-public class TypesSection extends AbstractSection
-{
-  Text typeCombo;
-  Button button;
-
-  String type;
-  Object typeObject;
-  CLabel typeLabel;
-  Table table;
-  TypeSection typeSection;
-  boolean showAnonymous = true;
-  String previousStringType = "";
-  boolean isAnonymous;
-  int previousType;
-  boolean showComplexTypes = true;
-  
-  /**
-   * 
-   */
-  public TypesSection()
-  {
-    super();
-  }
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		composite = getWidgetFactory().createFlatFormComposite(parent);
-    
-		FormData data;
-
-		typeCombo = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
-    typeCombo.setEditable(false);
-		typeCombo.addListener(SWT.Modify, this);
-    
-    button = getWidgetFactory().createButton(composite, "", SWT.PUSH); //$NON-NLS-1$
-    button.setImage(XSDEditorPlugin.getXSDImage("icons/browsebutton.gif")); //$NON-NLS-1$
-
-    typeLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_LABEL_TYPE") + ":"); //$NON-NLS-1$
-
-    button.addSelectionListener(this);
-		FormData data2 = new FormData();
-		data2.left = new FormAttachment(100, -rightMarginSpace + 2);
-		data2.right = new FormAttachment(100,0);
-		data2.top = new FormAttachment(typeCombo, 0, SWT.CENTER);
-		button.setLayoutData(data2);
-
-    data = new FormData();
-    data.left = new FormAttachment(0, 100);
-    data.right = new FormAttachment(button, 0);
-    typeCombo.setLayoutData(data);
-	}
-
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-	  Object input = getInput();
-    if (isReadOnly)
-    {
-      composite.setEnabled(false);
-    }
-    else
-    {
-      composite.setEnabled(true);
-    }
-	  typeCombo.setText(""); //$NON-NLS-1$
-	  if (input != null)
-	  {
-	    Element element = null;
-	    if (input instanceof XSDElementDeclaration)
-	    {
-        XSDElementDeclaration xsdElem = (XSDElementDeclaration)input;
-	      element = xsdElem.getElement();
-        XSDTypeDefinition typeDef = xsdElem.getTypeDefinition();
-        boolean isAnonymous = xsdElem.isAbstract();
-
-        if (isAnonymous)
-        {
-          typeCombo.setText("**anonymous**"); //$NON-NLS-1$
-        }
-        else
-        {
-          String typeName = ""; //$NON-NLS-1$
-          if (typeDef != null)
-          {
-            typeName = typeDef.getQName(getSchema());
-            if (typeName == null)
-            {
-              typeName = ""; //$NON-NLS-1$
-            }
-            typeCombo.setText(typeName);
-          }
-          else
-          {
-            typeCombo.setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE")); //$NON-NLS-1$
-          }
-        }
-	    }
-	    else if (input instanceof XSDAttributeDeclaration)
-	    {
-	      element = ((XSDAttributeDeclaration)input).getElement();
-	    }
-      else if (input instanceof XSDAttributeUse)
-      {
-        XSDAttributeUse attributeUse = (XSDAttributeUse)input;
-        XSDAttributeDeclaration attribute = attributeUse.getAttributeDeclaration();
-        element = attribute.getElement();
-      }
-	    else if (input instanceof Element)
-	    {
-	      element = (Element)input;
-	    }
-//      else if (input instanceof XSDSimpleTypeDefinition)
-//      {
-//	      XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-//	      Element simpleTypeElement = st.getElement();
-//        if (st.getVariety() == XSDVariety.LIST_LITERAL)
-//        {
-//	        element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.LIST_ELEMENT_TAG);
-//          String result = element.getAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
-//          if (result == null)
-//          {
-//            typeCombo.setText("**anonymous**");
-//          }
-//          else
-//          {
-//            typeCombo.setText(result);
-//          }
-//          typeLabel.setText("Item Type:");
-//        }
-//        else if (st.getVariety() == XSDVariety.ATOMIC_LITERAL)
-//        {
-//          typeLabel.setText("Base Type:");
-//	        element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.RESTRICTION_ELEMENT_TAG);
-//	        if (element == null)
-//	        {
-//	          element = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.EXTENSION_ELEMENT_TAG);
-//	          if (element == null) return;
-//	        }
-//
-//          String result = element.getAttribute(XSDConstants.BASE_ATTRIBUTE);
-//          if (result == null)
-//          {
-//            typeCombo.setText("");
-//          }
-//          else
-//          {
-//            typeCombo.setText(result);
-//          }
-//        }
-//        return;
-//      }
-      
-      typeLabel.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_TYPE") + ":"); //$NON-NLS-1$
-	    if (element != null)
-	    {
-        boolean isAnonymous = checkForAnonymousType(element);
-        String result = element.getAttribute(XSDConstants.TYPE_ATTRIBUTE);
-	      if (isAnonymous)
-	      {
-	        typeCombo.setText("**anonymous**"); //$NON-NLS-1$
-	      }
-	      if (result != null && result.equals("")) //$NON-NLS-1$
-	      {
-	        typeCombo.setText(XSDEditorPlugin.getXSDString("_UI_NO_TYPE")); //$NON-NLS-1$
-	      }
-	      else if (result != null)
-	      {
-	        typeCombo.setText(result);
-	      }
-
-	    }
-	  }
-	}
-
-  /**
-   * @see org.eclipse.swt.events.SelectionListener#widgetSelected(SelectionEvent)
-   */
-  public void widgetSelected(SelectionEvent e)
-  {
-    if (e.widget == button)
-    {
-/*        
-	    Shell shell = Display.getCurrent().getActiveShell();
-	    Object input = getInput();
-	    Element element = ((XSDConcreteComponent)getInput()).getElement();
-	    TypesDialog dialog;
-
-//	    if (input instanceof XSDSimpleTypeDefinition)
-//	    {
-//	      XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-//	      Element simpleTypeElement = st.getElement();
-//	      if (st.getVariety() == XSDVariety.LIST_LITERAL)
-//	      {
-//	        Element listElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.LIST_ELEMENT_TAG);
-//	        dialog = new TypesDialog(shell, listElement, XSDConstants.ITEMTYPE_ATTRIBUTE, xsdSchema);
-//          dialog.showComplexTypes = false;
-//        }
-//        else if (st.getVariety() == XSDVariety.ATOMIC_LITERAL)
-//        {
-//          Element derivedByElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.RESTRICTION_ELEMENT_TAG);
-//          if (derivedByElement == null)
-//          {
-//            derivedByElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.EXTENSION_ELEMENT_TAG);
-//            if (derivedByElement == null) return;
-//          }
-//          if (derivedByElement != null)
-//          {
-//            dialog = new TypesDialog(shell, derivedByElement, XSDConstants.BASE_ATTRIBUTE, xsdSchema);
-//          }
-//          else
-//          {
-//            return;
-//          }
-//        }
-//        else
-//        {
-//          dialog = new TypesDialog(shell, element, "type", xsdSchema);
-//        }
-//	    }
-//	    else
-//	    {
-	      dialog = new TypesDialog(shell, element, "type", xsdSchema); //$NON-NLS-1$
-//	    }
-
-	    dialog.setBlockOnOpen(true);
-	    dialog.create();
-	    int result = dialog.open();
-	    
-	    if (result == Window.OK)
-	    {
-	      Object typeObject = dialog.getType();
-//		    if (input instanceof XSDSimpleTypeDefinition)
-//		    {
-//		      XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition)input;
-//		      Element simpleTypeElement = st.getElement();
-//	        Element listElement = (Element)domHelper.getChildNode(simpleTypeElement, XSDConstants.LIST_ELEMENT_TAG);
-//
-//  	      beginRecording("ItemType Change", element);
-//          listElement.setAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, (String)typeObject);
-//          endRecording(element);
-//		    }
-	    }
-*/        
-        Shell shell = Display.getCurrent().getActiveShell();
-        IFile currentIFile = ((IFileEditorInput)getActiveEditor().getEditorInput()).getFile();
-        
-        Object input = getInput();
-        XSDSchema schema = null;
-        if (input instanceof XSDConcreteComponent) {
-            schema = ((XSDConcreteComponent) input).getSchema();
-        }
-        
-        XSDComponentSelectionProvider provider = new XSDComponentSelectionProvider(currentIFile, schema);
-        XSDComponentSelectionDialog dialog = new XSDComponentSelectionDialog(shell, XSDEditorPlugin.getXSDString("_UI_LABEL_SET_TYPE"), provider);  // TODO: Externalize This
-        if (input instanceof XSDAttributeDeclaration)
-        {
-          provider.showComplexTypes(false);
-        }
-        provider.setDialog(dialog);
-        
-        dialog.setBlockOnOpen(true);
-        dialog.create();
-
-        if (dialog.open() == Window.OK) {
-            Element element = ((XSDConcreteComponent)getInput()).getElement();
-            XSDSetTypeHelper helper = new XSDSetTypeHelper(currentIFile, schema);
-            helper.setType(element, "type", dialog.getSelection());
-        }        
-
-//      refresh();
-    }
-  }
-
-  
-  
-  boolean checkForAnonymousType(Element element)
-  {
-    /* Using Ed's model to check
-     boolean isAnonymous = false;
-
-     XSDConcreteComponent component = getXSDSchema().getCorrespondingComponent(element);
-     if (component instanceof XSDElementDeclaration)
-     {
-     XSDElementDeclaration xsdElem = (XSDElementDeclaration)component;
-     isAnonymous = xsdElem.isSetAnonymousTypeDefinition();
-     }
-     return isAnonymous;
-     */
-
-    boolean isAnonymous = false;
-
-    Node aNode = getDomHelper().getChildNode(element, XSDConstants.SIMPLETYPE_ELEMENT_TAG);
-    if (aNode != null)
-     {
-      return true;
-    }
-    aNode = getDomHelper().getChildNode(element, XSDConstants.COMPLEXTYPE_ELEMENT_TAG);
-    if (aNode != null)
-     {
-      isAnonymous = true;
-    }
-    return isAnonymous;
-  }
-
-  public boolean shouldUseExtraSpace()
-  {
-    return false;
-  }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSectionDescriptor.java
deleted file mode 100644
index 3e9b8bf..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/TypesSectionDescriptor.java
+++ /dev/null
@@ -1,120 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class TypesSectionDescriptor extends AbstractSectionDescriptor
-{
-  /**
-   * 
-   */
-  public TypesSectionDescriptor()
-  {
-    super();
-  }
-
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getId()
-   */
-  public String getId()
-  {
-    return "org.eclipse.wst.xsdeditor.section.types";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDElementDeclaration.class);
-    list.add(XSDAttributeDeclaration.class);
-    list.add(XSDAttributeUse.class);
-    list.add(XSDSimpleTypeDefinition.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new TypesSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.general";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDElementDeclaration)
-      {
-        XSDElementDeclaration elementDeclaration = (XSDElementDeclaration)object;
-        if (elementDeclaration.isElementDeclarationReference())
-        {
-          return false;
-        }
-        return true;
-      }
-      else if (object instanceof XSDAttributeDeclaration)
-      {
-        XSDAttributeDeclaration attr = (XSDAttributeDeclaration)object;
-        if (attr.isAttributeDeclarationReference())
-        {
-          return false;
-        }
-        return true;
-      }
-      else if (object instanceof XSDAttributeUse)
-      {
-        XSDAttributeUse attributeUse = (XSDAttributeUse)object;
-        Element element = attributeUse.getElement();
-        if (inputEquals(element, XSDConstants.ATTRIBUTE_ELEMENT_TAG, false))
-        {
-          return true;
-        }
-        else
-        {
-          return false;
-        }
-      }
-    }
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSection.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSection.java
deleted file mode 100644
index d72ed50..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSection.java
+++ /dev/null
@@ -1,118 +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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertyConstants;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDEnumerationFacet;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class ValueSection extends AbstractSection
-{
-  Text valueText;
-  /**
-   * 
-   */
-  public ValueSection()
-  {
-    super();
-  }
-
-	/**
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
-	 */
-	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
-	{
-		super.createControls(parent, factory);
-		Composite composite =	getWidgetFactory().createFlatFormComposite(parent);
-		FormData data;
-
-		valueText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
-		data = new FormData();
-		data.left = new FormAttachment(0, 100);
-		data.right = new FormAttachment(100, 0);
-		data.top = new FormAttachment(0, 0);
-		valueText.setLayoutData(data);
-		valueText.addListener(SWT.Modify, this);
-
-		CLabel valueLabel = getWidgetFactory().createCLabel(composite, XSDEditorPlugin.getXSDString("_UI_VALUE") + ":"); //$NON-NLS-1$
-		data = new FormData();
-		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(valueText, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(valueText, 0, SWT.CENTER);
-		valueLabel.setLayoutData(data);
-		
-//		listener.startListeningForEnter(valueText);
-//		listener.startListeningTo(valueText);
-	}
-
-	/*
-	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
-	 */
-	public void refresh()
-	{
-	  setListenerEnabled(false);
-	  Object input = getInput();
-	  valueText.setText(""); //$NON-NLS-1$
-	  if (input != null)
-	  {
-	    if (input instanceof XSDEnumerationFacet)
-	    {
-	      XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)input;
-	      Element element = enumFacet.getElement();
-        String value = element.getAttribute(XSDConstants.VALUE_ATTRIBUTE);
-        
-        if (value != null)
-        {
-          valueText.setText(value);
-        }
-	    }
-	  }
-	  setListenerEnabled(true);
-	}
-	
-  public void doHandleEvent(Event event)
-  {
-    if (event.widget == valueText)
-    {
-      Object input = getInput();
-	    if (input instanceof XSDEnumerationFacet)
-	    {
-	      XSDEnumerationFacet enumFacet = (XSDEnumerationFacet)input;
-	      Element element = enumFacet.getElement();
-        
-        beginRecording(XSDEditorPlugin.getXSDString("_UI_ENUM_VALUE_CHANGE"), element); //$NON-NLS-1$
-        String value = valueText.getText();
-        element.setAttribute(XSDConstants.VALUE_ATTRIBUTE, value);
-        endRecording(element);
-	    }
-    }
-  }
-
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISection#shouldUseExtraSpace()
-   */
-  public boolean shouldUseExtraSpace()
-  {
-    return false;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSectionDescriptor.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSectionDescriptor.java
deleted file mode 100644
index e8f0b48..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/ValueSectionDescriptor.java
+++ /dev/null
@@ -1,82 +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.properties.section;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISection;
-import org.eclipse.xsd.XSDEnumerationFacet;
-
-public class ValueSectionDescriptor extends AbstractSectionDescriptor
-{
-  /**
-   * 
-   */
-  public ValueSectionDescriptor()
-  {
-    super();
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getInputTypes()
-   */
-  public List getInputTypes()
-  {
-    List list = new ArrayList();
-    list.add(XSDEnumerationFacet.class);
-    return list;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getSectionClass()
-   */
-  public ISection getSectionClass()
-  {
-    return new ValueSection();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#getTargetTab()
-   */
-  public String getTargetTab()
-  {
-    return "org.eclipse.wst.xmlwebservices.general";
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-   */
-  public boolean appliesTo(IWorkbenchPart part, ISelection selection)
-  {
-    Object object = null;
-    if (selection instanceof StructuredSelection)
-    {
-      StructuredSelection structuredSelection = (StructuredSelection)selection;
-      object = structuredSelection.getFirstElement();
-      if (object instanceof XSDEnumerationFacet)
-      {
-        return true;
-      }
-    }
-    return false;
-  }
-  
-  public String getAfterSection()
-  {
-    return "org.eclipse.wst.xsdeditor.section.name";
-  }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/WindowUtility.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/WindowUtility.java
deleted file mode 100644
index 9cc0e4d..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/WindowUtility.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
-* Copyright (c) 2004, 2005 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.properties.section;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.swt.widgets.Shell;
-
-class WindowUtility
-{
-	public static Object getSelection(ISelection selection)
-	{
-		if (selection == null)
-		{
-			return null;
-		} // end of if ()
-
-		Object result = null;
-		if (selection instanceof IStructuredSelection)
-		{
-			 IStructuredSelection es= (IStructuredSelection)selection;
-			 Iterator i= es.iterator();
-			 if (i.hasNext())
-			 {
-				 result= i.next();
-			 }
-		}                     
-		return result;
-	}
-
-	public static List getSelectionList(ISelection selection)
-	{
-		List result = null;
-		if (selection != null)
-		{
-			if (selection instanceof IStructuredSelection)
-			{
-				IStructuredSelection es= (IStructuredSelection)selection;
-				result = new Vector();
-				for (Iterator i= es.iterator(); i.hasNext(); )
-				{
-					result.add(i.next());
-				}
-			}
-		}                     
-		return result;
-	} 
-
-	public static void openErrorCreatingFile(Shell shell, IResource resource)
-	{                   
-		 String title = null;
-		 String briefMessage = null;
-		 String reason = null;
-		 String details = null;
-
-//	KCPort TODO
-//		 title = B2BGUIPlugin.getInstance().getString("_UI_ERROR_CREATING_FILE_TITLE");
-//		 briefMessage = B2BGUIPlugin.getInstance().getString("_UI_ERROR_CREATING_FILE_SHORT_DESC", resource.getName());
-//		 details = B2BGUIPlugin.getInstance().getString("_UI_ERROR_CREATING_FILE_LONG_DESC", resource.getLocation().toOSString()); 
-//      
-//		 IResource parent = resource.getParent();     
-//		 if (parent != null) 
-//		 {                   
-//			 if (parent.isReadOnly())
-//			 {
-//				 reason = B2BGUIPlugin.getInstance().getString("_UI_PARENT_FOLDER_IS_READ_ONLY", parent.getName());     
-//			 }
-//			 else
-//			 {
-//				 // on windows the isReadOnly() = false for read only shared directory... so we give a hint
-//				 reason = B2BGUIPlugin.getInstance().getString("_UI_UNKNOWN_ERROR_WITH_HINT", parent.getName());  
-//			 }
-//		 } 
-//
-//		 if (reason == null)
-//		 {
-//			 reason = B2BGUIPlugin.getInstance().getString("_UI_UNKNOWN_ERROR");
-//		 }
-
-		 openError(shell, title, briefMessage, reason, details);
-	}      
-
-	public static void openError(Shell shell, String title, String briefMessage, String reason, String detailedMessage)
-	{
-		ErrorDialog.openError(shell, title, briefMessage, createStatus(reason, detailedMessage));                                  
-	}      
-
-	private static IStatus createStatus(String reason, String msg)
-	{
-// KCPort TODO
-//	  String pluginId = B2BGUIPlugin.getInstance().getDescriptor().getUniqueIdentifier();
-	  String pluginId = "";
-		MultiStatus multiStatus = new MultiStatus(pluginId, 0, reason, null);
-		Status status = new Status(IStatus.ERROR, pluginId, 0, msg, null);
-		multiStatus.add(status);
-		return multiStatus;
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionDescriptorProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionDescriptorProvider.java
deleted file mode 100644
index 54acd8c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionDescriptorProvider.java
+++ /dev/null
@@ -1,57 +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.properties.section;
-
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptorProvider;
-
-
-public class XSDSectionDescriptorProvider implements ISectionDescriptorProvider
-{
-  /**
-   * 
-   */
-  public XSDSectionDescriptorProvider()
-  {
-    super();
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.common.ui.properties.internal.provisional.ISectionDescriptorProvider#getSectionDescriptors()
-   */
-  public ISectionDescriptor[] getSectionDescriptors()
-  {
-    ISectionDescriptor[] descriptors = new ISectionDescriptor[18];
-    descriptors[0] = new NameSectionDescriptor();
-    descriptors[1] = new TypesSectionDescriptor();
-    descriptors[2] = new OtherAttributesSectionDescriptor();
-    descriptors[3] = new AttributesViewSectionDescriptor();
-    descriptors[4] = new ModelGroupSectionDescriptor();
-    descriptors[5] = new NamespaceProcessContentsSectionDescriptor();
-    descriptors[6] = new ReferenceSectionDescriptor();
-    descriptors[7] = new ComplexTypeSectionDescriptor();
-    descriptors[8] = new ValueSectionDescriptor();
-    descriptors[9] = new PatternSectionDescriptor();
-    descriptors[10] = new AnnotationSectionDescriptor();
-    descriptors[11] = new SimpleTypeSectionDescriptor();
-    descriptors[12] = new FacetsSectionDescriptor();
-    descriptors[13] = new EnumerationsSectionDescriptor();
-    descriptors[14] = new NamespaceSectionDescriptor();
-    descriptors[15] = new SchemaLocationDescriptor();
-    descriptors[16] = new NamespaceAndSchemaLocationDescriptor();
-    descriptors[17] = new MinMaxSectionDescriptor();
-    
-//  descriptors[18] = new SimpleTypeUnionSectionDescriptor();
-//  descriptors[19] = new FixedDefaultSectionDescriptor();    
-    return descriptors;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionLabelProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionLabelProvider.java
deleted file mode 100644
index 77bebed..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionLabelProvider.java
+++ /dev/null
@@ -1,178 +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.properties.section;
-
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.util.Assert;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.XSDEditor;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.w3c.dom.Element;
-
-
-public class XSDSectionLabelProvider extends LabelProvider
-{
-  /**
-   * 
-   */
-  public XSDSectionLabelProvider()
-  {
-    super();
-  }
-
-	/**
-	 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-	 */
-	public Image getImage(Object object)
-	{
-		if (object == null || object.equals(StructuredSelection.EMPTY)) {
-			return null;
-		}
-    Image result = null;           
-    if (object instanceof StructuredSelection)
-    {
-      Object selected = ((StructuredSelection)object).getFirstElement();
-      
-      if (selected instanceof XSDConcreteComponent)
-      {
-        IWorkbench workbench = XSDEditorPlugin.getPlugin().getWorkbench();
-        IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
-        IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
-        if (editorPart instanceof XSDEditor)
-        {
-          return ((XSDEditor)editorPart).getLabelProvider().getImage((XSDConcreteComponent)selected);
-        }
-      }
-      
-//      selected  = typeMapper.remapObject(selected);
-//      ModelAdapter modelAdapter = adapterFactory.getAdapter(selected);
-//      if (modelAdapter != null)
-//      {
-//        result = (Image)modelAdapter.getProperty(selected, ModelAdapter.IMAGE_PROPERTY);     
-//      }
-    }
-    return result;
-	}
-
-	/**
-	 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-	 */
-	public String getText(Object object)
-	{
-		if (object == null || object.equals(StructuredSelection.EMPTY))
-    {
-			return "No items selected";
-		}
-    
-    String result = null;
-
-    boolean isReference = false;
-    Object selected = null;
-    if (object instanceof StructuredSelection)
-    {
-      selected = ((StructuredSelection)object).getFirstElement();
-      
-      if (selected instanceof XSDConcreteComponent)
-      {
-        if (selected instanceof XSDElementDeclaration)
-        {
-          XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)selected;
-          if (xsdElementDeclaration.isElementDeclarationReference())
-          {
-            isReference = true;
-          }
-        }
-        else if (selected instanceof XSDAttributeDeclaration)
-        {
-          if (((XSDAttributeDeclaration)selected).isAttributeDeclarationReference())
-          {
-            isReference = true;
-          }
-        }
-        else if (selected instanceof XSDModelGroupDefinition)
-        {
-          if (((XSDModelGroupDefinition)selected).isModelGroupDefinitionReference())
-          {
-            isReference = true;
-          }
-        }
-        StringBuffer sb = new StringBuffer();
-        Element element = ((XSDConcreteComponent)selected).getElement();
-        if (element != null)
-        {
-          sb.append(((XSDConcreteComponent)selected).getElement().getLocalName());
-          
-          if (isReference)
-          {
-            sb.append(" ");
-            sb.append(XSDEditorPlugin.getXSDString("_UI_PAGE_HEADING_REFERENCE"));
-          }
-          
-          if (!(element instanceof IDOMNode))
-          {
-            sb.append(" (" + XSDEditorPlugin.getXSDString("_UI_LABEL_READ_ONLY") + ")");   //$NON-NLS-1$
-          }
-          return sb.toString();
-        }
-        else
-        {
-          return "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_READ_ONLY") + ")";  //$NON-NLS-1$
-        }
-      }
-
-//      selected  = typeMapper.remapObject(selected);
-//      
-//       ModelAdapter modelAdapter = adapterFactory.getAdapter(selected);
-//       if (modelAdapter != null)
-//       {                       
-//         // result = (String)modelAdapter.getProperty(selected, ModelAdapter.LABEL_PROPERTY);
-//         result = ((WSDLElement)selected).getElement().getLocalName();
-//       }
-      if (object instanceof Element)
-      {
-        return ((Element)object).getLocalName();
-      }
-    }
-    else if (object instanceof TextSelection)
-    {
-    }
-    
-
-    return result;
-	}
-
-	/**
-	 * Determine if a multiple object selection has been passed to the 
-	 * label provider. If the objects is a IStructuredSelection, see if 
-	 * all the objects in the selection are the same and if so, we want
-	 * to provide labels for the common selected element.
-	 * @param objects a single object or a IStructuredSelection.
-	 * @param multiple first element in the array is true if there is multiple
-	 * unequal selected elements in a IStructuredSelection.
-	 * @return the object to get labels for.
-	 */
-	private Object getObject(Object objects, boolean multiple[]) {
-		Assert.isNotNull(objects);
-		Object object = null;
-		return object;
-	}
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDTabbedPropertySheetPage.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDTabbedPropertySheetPage.java
deleted file mode 100644
index 97810d0..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDTabbedPropertySheetPage.java
+++ /dev/null
@@ -1,180 +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.properties.section;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.text.TextSelection;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.part.IPageSite;
-import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySheetPageContributor;
-import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage;
-import org.eclipse.wst.xsd.ui.internal.XSDSelectionManager;
-import org.eclipse.wst.xsd.ui.internal.graph.model.Category;
-import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter;
-import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.ProcessingInstruction;
-import org.w3c.dom.Text;
-
-public class XSDTabbedPropertySheetPage extends TabbedPropertySheetPage
-  implements ISelectionChangedListener, INotifyChangedListener 
-{
-  XSDSchema xsdSchema;
-  private XSDSelectionManager selectionManager;
-  private XSDModelAdapterFactoryImpl adapterFactory;
-  /**
-   * @param tabbedPropertySheetPageContributor
-   */
-  public XSDTabbedPropertySheetPage(ITabbedPropertySheetPageContributor tabbedPropertySheetPageContributor)
-  {
-    super(tabbedPropertySheetPageContributor);
-  }
-  
-  public void init(IPageSite pageSite)
-  {
-  	super.init(pageSite);
-  	getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(this);
-  }
-
-  public void setXSDSchema(XSDSchema xsdSchema)
-  {
-    this.xsdSchema = xsdSchema;
-  }
-  
-  public void setXSDModelAdapterFactory(XSDModelAdapterFactoryImpl adapterFactory) {
-    // disconnect from old one
-    if (adapterFactory != null) {
-      adapterFactory.removeListener(this);
-    }
-
-    this.adapterFactory = adapterFactory;
-
-    // connect to new one
-    if (adapterFactory != null) {
-      adapterFactory.addListener(this);
-    }
-  }
-  
-  public void setSelectionManager(XSDSelectionManager newSelectionManager)
-  { 
-    // disconnect from old one
-    if (selectionManager != null)
-    {                                                        
-      selectionManager.removeSelectionChangedListener(this);  
-    }
-
-    selectionManager = newSelectionManager;
-
-    // connect to new one
-    if (selectionManager != null)
-    {
-      selectionManager.addSelectionChangedListener(this);  
-    }
-  }    
-
-  public void selectionChanged(IWorkbenchPart part, ISelection selection)
-  {
-    // override for category
-    if (selection != null)
-    {
-      if (selection instanceof IStructuredSelection)
-      {
-        IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-        if (structuredSelection.isEmpty())
-        {
-          return;
-        }
-        Object obj = structuredSelection.getFirstElement();
-        if (obj instanceof Element)
-        {
-          try
-          {
-            Object modelObject = xsdSchema.getCorrespondingComponent((Element) obj);
-            if (modelObject != null)
-            {
-              obj = modelObject;
-              selection = new StructuredSelection(obj);
-            }
-          }
-          catch (Exception e)
-          {
-          }
-        }
-        else if (obj instanceof Text)
-        {
-        	Node parent = ((Text)obj).getParentNode();
-          Object modelObject = xsdSchema.getCorrespondingComponent(parent);
-          if (modelObject != null)
-          {
-            obj = modelObject;
-            selection = new StructuredSelection(obj);
-          }
-        }
-        else if (obj instanceof CategoryAdapter)
-        {
-          selection = new StructuredSelection(((CategoryAdapter)obj).getXSDSchema());
-        }
-        else if (obj instanceof Category)
-        {
-          selection = new StructuredSelection(((Category)obj).getXSDSchema());
-        }
-        else if (obj instanceof ProcessingInstruction)
-        {
-        	selection = new StructuredSelection(xsdSchema);
-        }
-      }
-      else if (selection instanceof TextSelection)
-      {
-        return;
-      }
-    }
-    super.selectionChanged(part, selection);
-  }
-	
-  public void selectionChanged(SelectionChangedEvent event)
-  {
-    if (!event.getSelection().isEmpty())
-    {
-      selectionChanged(getSite().getWorkbenchWindow().getActivePage().getActivePart(), event.getSelection());
-      //super.selectionChanged(getSite().getWorkbenchWindow().getActivePage().getActivePart(), event.getSelection());
-    }
-  }
-  
-  public void dispose()
-  {
-    if (selectionManager != null)
-    {
-      selectionManager.removeSelectionChangedListener(this);
-    }
-    if (adapterFactory != null)
-    {
-      adapterFactory.removeListener(this);
-    }
-    getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(this);
-    super.dispose();
-  }
-  
-  public void notifyChanged(Notification notification)
-  {
-    if (getCurrentTab() != null)
-    {
-      refresh();
-    }
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbook.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbook.java
deleted file mode 100644
index 9c43704..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbook.java
+++ /dev/null
@@ -1,97 +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.properties.section;
-
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Composite;
-
-public class XSDWorkbook {
-  private CTabFolder tabFolder;
-  private CTabItem selectedTab;
-/**
- * Workbook constructor comment.
- */
-public XSDWorkbook(Composite parent, int style) {
-  tabFolder = new CTabFolder(parent, style);
-
-  tabFolder.addSelectionListener(new SelectionAdapter() {
-    public void widgetSelected(SelectionEvent event) {
-      CTabItem newSelectedTab = (CTabItem) event.item;
-      if (selectedTab == newSelectedTab) // Do nothing if the selection did not change.
-        return;
-
-      if (selectedTab != null && (!selectedTab.isDisposed())) {
-        XSDWorkbookPage selectedPage = getWorkbookPage(selectedTab);
-        if (!selectedPage.deactivate()) {
-          // tabFolder.setSelection(new CTabItem[] {selectedTab});
-          tabFolder.setSelection(selectedTab);
-          return;
-        }
-      }
-
-      selectedTab = newSelectedTab;
-      XSDWorkbookPage newSelectedPage = getWorkbookPage(newSelectedTab);
-      if (newSelectedPage != null)
-      newSelectedPage.activate();
-
-    }
-  });
-
-}
-public XSDWorkbookPage getSelectedPage() {
-
-  int index = tabFolder.getSelectionIndex();
-  if (index == -1) // When can this be -1
-    return null;
-
-  CTabItem selectedItem = tabFolder.getItem(index);
-
-  return (XSDWorkbookPage)selectedItem.getData();
-}
-public CTabFolder getTabFolder() {
-
-  return tabFolder;
-
-}
-protected XSDWorkbookPage getWorkbookPage(CTabItem item) {
-
-  try {
-    return (XSDWorkbookPage) item.getData();
-  } catch (ClassCastException e) {
-    return null;
-  }
-}
-public XSDWorkbookPage[] getWorkbookPages() {
-
-  CTabItem[] tabItems = tabFolder.getItems();
-  int nItems = tabItems.length;
-  XSDWorkbookPage[] workbookPages = new XSDWorkbookPage[nItems];
-  for (int i = 0; i < nItems; i++)
-    workbookPages[i] = getWorkbookPage(tabItems[i]);
-  return workbookPages;
-}
-public void setSelectedPage (XSDWorkbookPage workbookPage)
-{
-  CTabItem newSelectedTab = workbookPage.getTabItem();
-
-  if (selectedTab == newSelectedTab)
-    return;
-
-  selectedTab = newSelectedTab;
-  workbookPage.activate();
-  // tabFolder.setSelection(new CTabItem[] {newSelectedTab});
-  tabFolder.setSelection(newSelectedTab);
-
-}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbookPage.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbookPage.java
deleted file mode 100644
index f865afa..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDWorkbookPage.java
+++ /dev/null
@@ -1,51 +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.properties.section;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabItem;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-
-public abstract class XSDWorkbookPage {
-  public CTabItem tabItem;
-/**
- * WorkbookPage constructor comment.
- */
-public XSDWorkbookPage(XSDWorkbook parent) {
-  CTabFolder folder = parent.getTabFolder();
-  tabItem = new CTabItem(folder,SWT.NONE);
-  tabItem.setData(this);
-}
-public void activate() {
-
-  if (tabItem.getControl() == null)
-    tabItem.setControl(createControl(tabItem.getParent()));
-      
-}
-protected abstract Control createControl (Composite parent);
-public boolean deactivate() {
-  return true;
-}
-public void dispose() {
-
-  if (tabItem == null)
-    return;
-
-  CTabItem oldItem = tabItem;
-  tabItem = null;
-  oldItem.dispose();
-}
-public CTabItem getTabItem() {
-  return tabItem;
-}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/CategoryAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/CategoryAdapter.java
deleted file mode 100644
index 3182e9a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/CategoryAdapter.java
+++ /dev/null
@@ -1,168 +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.provider;
-
-import java.util.Collection;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.IChangeNotifier;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.xsd.XSDSchema;
-
-
-public class CategoryAdapter // extends ItemProvider
-  implements ILabelProvider, IChangeNotifier, ITreeContentProvider
-{
-  
-  protected String text;
-
-  /**
-   * This is the image returned by {@link #getImage getImage(Object)}.
-   */
-  protected Image image;
-
-  /**
-   * This is the parent returned by {@link #getParent getParent(Object)}.
-   */
-  protected Object parent;
-
-  public CategoryAdapter(String label, Image image, Collection children, XSDSchema xsdSchema, int groupType)
-  {
-//    super(label, image, xsdSchema);
-    this.text = label;
-    this.image = image;
-    this.parent = xsdSchema;
-    this.xsdSchema = xsdSchema;
-    this.children = children;
-    this.groupType = groupType;
-  }
-  
-  public final static int ATTRIBUTES = 1;
-  public final static int ELEMENTS = 2;
-  public final static int TYPES = 3;
-  public final static int GROUPS = 5;
-  public final static int DIRECTIVES = 6;
-  public final static int NOTATIONS = 7;
-  public final static int ATTRIBUTE_GROUPS = 8;
-  public final static int IDENTITY_CONSTRAINTS = 9;
-  public final static int ANNOTATIONS = 10;
-                                 
-  protected int groupType;
-  Collection children;
-  XSDSchema xsdSchema;
-  
-  public XSDSchema getXSDSchema()
-  {
-    return xsdSchema;
-  }
-  
-  public int getGroupType()
-  {
-    return groupType;
-  }   
-
-//  public boolean hasChildren(Object o)
-//  {
-//    return !children.isEmpty();
-//  }
-
-//  public Collection getChildren(Object o)
-//  {
-//    return children;
-//  }
-  
-  public Image getImage(Object element)
-  {
-    return image;
-  }
-  
-  public String getText(Object object)
-  {
-    // return object.toString();
-    return text;
-  }
-  
-  public void addListener(ILabelProviderListener listener)
-  {
-    
-  }
-  
-  public boolean isLabelProperty(Object element, String property)
-  {
-    return false;
-  }
-
-  public void removeListener(ILabelProviderListener listener)
-  {
-    
-  }
-
-  public void fireNotifyChanged(Notification notification)
-  {
-    
-  }
-
-  /**
-   * This adds another listener.
-   */
-  public void addListener(INotifyChangedListener notifyChangedListener)
-  {
-    
-  }
-
-  /**
-   * This removes a listener.
-   */
-  public void removeListener(INotifyChangedListener notifyChangedListener)
-  {
-    
-  }
-
-  public void dispose()
-  {
-    
-  }
-  
-  public Object[] getElements(Object inputElement)
-  {
-    return getChildren(inputElement);
-  }
-
-  public Object[] getChildren(Object parentElement)
-  {
-    return children.toArray();
-  }
-  
-  public void setChildren(Collection list)
-  {
-    children = list;
-  }
-
-  public Object getParent(Object element)
-  {
-    return xsdSchema;
-  }
-  
-  public boolean hasChildren(Object element)
-  {
-    return true;
-  }
-
-  public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
-  {
-    
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAbstractAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAbstractAdapter.java
deleted file mode 100644
index 8233c5e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAbstractAdapter.java
+++ /dev/null
@@ -1,165 +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.provider;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.impl.AdapterImpl;
-import org.eclipse.emf.edit.provider.ChangeNotifier;
-import org.eclipse.emf.edit.provider.IChangeNotifier;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
-
-public class XSDAbstractAdapter extends AdapterImpl
-  implements ITreeContentProvider, ILabelProvider, IChangeNotifier
-{
-
-  protected AdapterFactory adapterFactory;
-  /**
-   * 
-   */
-  public XSDAbstractAdapter(AdapterFactory adapterFactory)
-  {
-    super();
-    this.adapterFactory = adapterFactory;
-  }
-  
-  /**
-   * The adapter factory is used as the type key.
-   * This returns true, only if this adapter was created by the given factory.
-   */
-  public boolean isAdapterForType(Object type)
-  {
-    return type == adapterFactory;
-  }
-
-  public Image getImage(Object element)
-  {
-    return null;
-  }
-  
-  public String getText(Object object)
-  {
-    return object.toString();
-  }
-  
-  public void addListener(ILabelProviderListener listener)
-  {
-    
-  }
-  
-  public boolean isLabelProperty(Object element, String property)
-  {
-    return false;
-  }
-
-  public void removeListener(ILabelProviderListener listener)
-  {
-    
-  }
-  
-  public Object[] getChildren(Object parentElement)
-  {
-    List list = new ArrayList();
-    return list.toArray();
-  }
-  
-  public boolean hasChildren(Object object)
-  {
-    return false;
-  }
-
-  public Object getParent(Object object)
-  {
-    return null;
-  }
-
-  public Object[] getElements(Object inputElement)
-  {
-    return getChildren(inputElement);
-  }
-
-  public void dispose()
-  {
-    
-  }
-  
-  public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
-  {
-    
-  }
-
-  /**
-   * This is used to implement {@link IChangeNotifier}.
-   */
-  protected IChangeNotifier changeNotifier;
-
-  
-  public void notifyChanged(Notification msg)
-  {                        
-    if (msg.getEventType() != Notification.RESOLVE)
-    {        
-      fireNotifyChanged(msg);
-    }
-  }  
-
-  /**
-   * This calls {@link org.eclipse.emf.edit.provider.INotifyChangedListener#notifyChanged notifyChanged} for each listener.
-   */
-  public void fireNotifyChanged(Notification notification)
-  {
-    if (changeNotifier != null)
-    {
-      changeNotifier.fireNotifyChanged(notification);
-    }
-
-    if (adapterFactory instanceof IChangeNotifier)
-    {
-      IChangeNotifier changeNotifier = (IChangeNotifier)adapterFactory;
-      changeNotifier.fireNotifyChanged(notification);
-    }
-  }
-
-
-  /**
-   * This adds another listener.
-   */
-  public void addListener(INotifyChangedListener notifyChangedListener)
-  {
-    if (changeNotifier == null)
-    {
-      changeNotifier = new ChangeNotifier();
-    }
-    changeNotifier.addListener(notifyChangedListener);
-   
-  }
-
-  /**
-   * This removes a listener.
-   */
-  public void removeListener(INotifyChangedListener notifyChangedListener)
-  {
-    if (changeNotifier != null)
-    {
-      changeNotifier.removeListener(notifyChangedListener);
-    }
-   
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAdapterFactoryLabelProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAdapterFactoryLabelProvider.java
deleted file mode 100644
index 6cf228e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAdapterFactoryLabelProvider.java
+++ /dev/null
@@ -1,143 +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.provider;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.edit.provider.IChangeNotifier;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.swt.graphics.Image;
-
-public class XSDAdapterFactoryLabelProvider implements ILabelProvider, INotifyChangedListener, ITableLabelProvider {
-	protected XSDModelAdapterFactoryImpl adapterFactory;
-	protected Collection labelProviderListeners;
-
-	/**
-	 * 
-	 */
-	public XSDAdapterFactoryLabelProvider(XSDModelAdapterFactoryImpl adapterFactory) {
-		this.adapterFactory = adapterFactory;
-		labelProviderListeners = new ArrayList();
-	}
-
-	/**
-	 * Return the wrapped AdapterFactory.
-	 */
-	public AdapterFactory getAdapterFactory() {
-		return adapterFactory;
-	}
-
-	/**
-	 * Set the wrapped AdapterFactory.
-	 */
-	public void setAdapterFactory(XSDModelAdapterFactoryImpl adapterFactory) {
-		if (this.adapterFactory instanceof IChangeNotifier) {
-			((IChangeNotifier) this.adapterFactory).removeListener(this);
-		}
-
-		if (adapterFactory instanceof IChangeNotifier) {
-			((IChangeNotifier) adapterFactory).addListener(this);
-		}
-
-		this.adapterFactory = adapterFactory;
-	}
-
-	/**
-	 * Since we won't ever generate these notifications, we can just ignore
-	 * this.
-	 */
-	public void addListener(ILabelProviderListener listener) {
-		labelProviderListeners.add(listener);
-	}
-
-	/**
-	 * Since we won't ever add listeners, we can just ignore this.
-	 */
-	public void removeListener(ILabelProviderListener listener) {
-		labelProviderListeners.remove(listener);
-	}
-
-	/**
-	 * This discards the content provider and removes this as a listener to
-	 * the {@link #adapterFactory}.
-	 */
-	public void dispose() {
-		if (this.adapterFactory instanceof IChangeNotifier) {
-			((IChangeNotifier) adapterFactory).removeListener(this);
-		}
-	}
-
-	/**
-	 * This always returns true right now.
-	 */
-	public boolean isLabelProperty(Object object, String id) {
-		return true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
-	 */
-	public Image getImage(Object object) {
-		ILabelProvider labelProvider = (ILabelProvider) adapterFactory.adapt(object, ILabelProvider.class);
-
-		return labelProvider != null ? labelProvider.getImage(object) : null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
-	 */
-	public String getText(Object object) {
-		// Get the adapter from the factory.
-		//
-		ILabelProvider labelProvider = (ILabelProvider) adapterFactory.adapt(object, ILabelProvider.class);
-
-		return labelProvider != null ? labelProvider.getText(object) : object == null ? "" : object.toString();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.emf.edit.provider.INotifyChangedListener#notifyChanged(org.eclipse.emf.common.notify.Notification)
-	 */
-	public void notifyChanged(Notification notification) {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
-	 *      int)
-	 */
-	public Image getColumnImage(Object element, int columnIndex) {
-		return getImage(element);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object,
-	 *      int)
-	 */
-	public String getColumnText(Object element, int columnIndex) {
-		return getText(element);
-	}
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAnnotationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAnnotationAdapter.java
deleted file mode 100644
index b57a4c5..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAnnotationAdapter.java
+++ /dev/null
@@ -1,83 +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.provider;
-
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAnnotation;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class XSDAnnotationAdapter extends XSDAbstractAdapter
-{
-  public XSDAnnotationAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-
-  public Image getImage(Object element)
-  {
-    return XSDEditorPlugin.getPlugin().getImage("icons/XSDAnnotate.gif");
-  }
-  
-  public String getText(Object object)
-  {
-    XSDAnnotation xsdAnnotation = ((XSDAnnotation)object);
-    String result = "";
-    List userInformation = xsdAnnotation.getUserInformation();
-    if (!userInformation.isEmpty())
-    {
-      Element element = (Element)userInformation.get(0);
-      if (element.hasAttribute(XSDConstants.SOURCE_ATTRIBUTE))
-      {
-        result = element.getAttribute(XSDConstants.SOURCE_ATTRIBUTE);
-      }
-      else
-      {
-        org.w3c.dom.Node text = element.getFirstChild(); 
-        while (text instanceof Element)
-        {
-          text = ((Element)text).getFirstChild();
-        }
-        if (text != null && text.getNodeValue() != null)
-        {
-          result = text.getNodeValue();
-          result = result.trim();
-          if (result.length() > 50)
-          {
-            result = result.substring(0, 50) + "...";
-          }
-        }
-      }
-    }
-
-    return result;
-  }
-  
-  public Object[] getChildren(Object parentElement)
-  {
-    return null;  
-  }
-  
-  public boolean hasChildren(Object object)
-  {
-    return true;
-  }
-
-  public Object getParent(Object object)
-  {
-    XSDAnnotation element = (XSDAnnotation)object;
-    return element.getContainer();
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeDeclarationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeDeclarationAdapter.java
deleted file mode 100644
index 330925f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeDeclarationAdapter.java
+++ /dev/null
@@ -1,113 +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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-public class XSDAttributeDeclarationAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDAttributeDeclarationAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-
-  public Image getImage(Object object)
-  {
-    XSDAttributeDeclaration xsdAttributeDeclaration = ((XSDAttributeDeclaration)object);
-    XSDAttributeDeclaration resolvedAttributeDeclaration = xsdAttributeDeclaration.getResolvedAttributeDeclaration();
-    
-    if (resolvedAttributeDeclaration.getContainer() == null)
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
-    }
-    // if (xsdAttributeDeclaration.getResolvedAttributeDeclaration() == xsdAttributeDeclaration)
-    if (xsdAttributeDeclaration.isAttributeDeclarationReference())
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDAttributeRef.gif");
-    }
-    else
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
-    }
-    
-//    return 
-//    XSDEditorPlugin.getPlugin().getIconImage
-//     (resolvedAttributeDeclaration.getContainer() == null ?
-//        "full/obj16/XSDAttributeUnresolved" :
-//          xsdAttributeDeclaration.getResolvedAttributeDeclaration() == xsdAttributeDeclaration ?
-//          "full/obj16/XSDAttributeDeclaration" :
-//          "full/obj16/XSDAttributeUse");
-  }
-
-  public String getText(Object object)
-  {
-    XSDAttributeDeclaration xsdAttributeDeclaration = ((XSDAttributeDeclaration)object);
-    XSDAttributeDeclaration resolvedAttributeDeclaration = xsdAttributeDeclaration.getResolvedAttributeDeclaration();
-    String name =
-      xsdAttributeDeclaration != resolvedAttributeDeclaration ?
-        xsdAttributeDeclaration.getQName() :
-        xsdAttributeDeclaration.getName();
-
-    StringBuffer result = new StringBuffer();
-    if (name == null)
-    {
-      result.append("'absent'");
-    }
-    else
-    {
-      result.append(name);
-    }
-
-    if (resolvedAttributeDeclaration.getAnonymousTypeDefinition() == null && resolvedAttributeDeclaration.getTypeDefinition() != null)
-    {
-      result.append(" : ");
-      result.append(resolvedAttributeDeclaration.getTypeDefinition().getQName(xsdAttributeDeclaration));
-    }
-
-    return result.toString();
-  }
-
-  public Object[] getChildren(Object parentElement)
-  {
-    XSDAttributeDeclaration xsdAttributeDeclaration = (XSDAttributeDeclaration)parentElement;
-    List list = new ArrayList();
-    
-    XSDTypeDefinition type = xsdAttributeDeclaration.getAnonymousTypeDefinition();
-    if (type != null)
-    {
-      list.add(type);
-    }
-    return list.toArray();
-  }
-  
-  public boolean hasChildren(Object object)
-  {
-    return true;
-  }
-
-  public Object getParent(Object object)
-  {
-    XSDAttributeDeclaration element = (XSDAttributeDeclaration)object;
-    return element.getContainer();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeGroupDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeGroupDefinitionAdapter.java
deleted file mode 100644
index a45588e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeGroupDefinitionAdapter.java
+++ /dev/null
@@ -1,96 +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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDWildcard;
-
-
-public class XSDAttributeGroupDefinitionAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDAttributeGroupDefinitionAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-
-  public Image getImage(Object object)
-  {
-    XSDAttributeGroupDefinition xsdAttributeGroupDefinition = ((XSDAttributeGroupDefinition)object);
-
-    if (xsdAttributeGroupDefinition.isAttributeGroupDefinitionReference())
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDAttributeGroupRef.gif");
-    }
-    else
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDAttributeGroup.gif");
-    }
-  }
-
-  public String getText(Object object)
-  {
-    XSDAttributeGroupDefinition xsdAttributeGroupDefinition = ((XSDAttributeGroupDefinition)object);
-    String result =  
-      xsdAttributeGroupDefinition.isAttributeGroupDefinitionReference() ?
-        xsdAttributeGroupDefinition.getQName() :
-        xsdAttributeGroupDefinition.getName();
-    return result == null ? "'absent'" : result;
-  }
-
-  public Object[] getChildren(Object parentElement)
-  {
-    XSDAttributeGroupDefinition xsdAttributeGroup = (XSDAttributeGroupDefinition)parentElement;
-    List list = new ArrayList();
-    list.addAll(xsdAttributeGroup.getContents());   
-//    Iterator i = xsdAttributeGroup.getContents().iterator();
-//    while (i.hasNext())
-//    {
-//      XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent)i.next();
-//      if (attrGroupContent instanceof XSDAttributeUse)
-//      {
-//        list.add(((XSDAttributeUse)attrGroupContent).getAttributeDeclaration());
-//      }
-//      else
-//      {
-//        list.add(attrGroupContent);
-//      }
-//    }
-    
-    XSDWildcard wildcard = xsdAttributeGroup.getAttributeWildcardContent();
-    if (wildcard != null)
-    {
-      list.add(wildcard);
-    }
-    return list.toArray();
-  }
-  
-  public boolean hasChildren(Object object)
-  {
-    return true;
-  }
-
-  public Object getParent(Object object)
-  {
-    XSDAttributeGroupDefinition element = (XSDAttributeGroupDefinition)object;
-    return element.getContainer();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeUseAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeUseAdapter.java
deleted file mode 100644
index 5c8c127..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDAttributeUseAdapter.java
+++ /dev/null
@@ -1,90 +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.provider;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeUse;
-
-public class XSDAttributeUseAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDAttributeUseAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-  
-  protected XSDAttributeDeclaration getDelegate(XSDAttributeUse xsdAttributeUse)
-  {
-    return xsdAttributeUse.getContent();
-  }
-  
-  /**
-   * This returns XSDAttributeUse.gif.
-   */
-  public Image getImage(Object object)
-  {
-    XSDAttributeUse xsdAttributeUse = ((XSDAttributeUse)object);
-    
-    XSDAttributeDeclaration xsdAttributeDeclaration = getDelegate(xsdAttributeUse);
-    if (xsdAttributeDeclaration.isAttributeDeclarationReference())
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDAttributeRef.gif");
-    }
-    else
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDAttribute.gif");
-    }
-    //return XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDAttributeUse");  
-    
-  }
-
-  public String getText(Object object)
-  {
-    return getText(object, true);
-  }
-
-  public String getText(Object object, boolean showType)
-  {
-    XSDAttributeUse xsdAttributeUse = ((XSDAttributeUse)object);
-    XSDAttributeDeclaration xsdAttributeDeclaration = getDelegate(xsdAttributeUse);
-    if (xsdAttributeDeclaration.isAttributeDeclarationReference())
-    {
-      return xsdAttributeDeclaration.getResolvedAttributeDeclaration().getName();
-    }
-    StringBuffer result  = new StringBuffer();
-    if (xsdAttributeDeclaration != null)
-    {
-      result.append(xsdAttributeDeclaration.getName());
-    }
-
-    if (xsdAttributeUse.isSetConstraint())
-    {
-      if (result.length() != 0)
-      {
-        result.append("  ");
-      }
-      result.append('<');
-      result.append(xsdAttributeUse.getConstraint());
-      result.append("=\"");
-      result.append(xsdAttributeUse.getLexicalValue());
-      result.append("\">");
-    }
-
-    return result.toString();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDComplexTypeDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDComplexTypeDefinitionAdapter.java
deleted file mode 100644
index 38f7351..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDComplexTypeDefinitionAdapter.java
+++ /dev/null
@@ -1,182 +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.provider;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.xsd.XSDComplexTypeContent;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-
-public class XSDComplexTypeDefinitionAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDComplexTypeDefinitionAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-
-  public Image getImage(Object object)
-  {
-    return XSDEditorPlugin.getXSDImage("icons/XSDComplexType.gif");
-//    XSDComplexTypeDefinition xsdComplexTypeDefinition = ((XSDComplexTypeDefinition)object);
-//    return 
-//      XSDEditorPlugin.getPlugin().getIconImage
-//        (xsdComplexTypeDefinition.getContainer() == null ?
-//          "full/obj16/XSDComplexTypeDefinitionUnresolved" :
-//          "full/obj16/XSDComplexTypeDefinition");
-  }
-  
-  public String getText(Object object)
-  {
-    return getText(object, true);
-  }
-  
-  public String getText(Object object, boolean showType)
-  {
-    XSDComplexTypeDefinition xsdComplexTypeDefinition = ((XSDComplexTypeDefinition)object);
-
-    StringBuffer result = new StringBuffer();
-    
-    result.append
-     (xsdComplexTypeDefinition.getName() == null ? 
-        // xsdComplexTypeDefinition.getAliasName() :
-        "local type" :
-        xsdComplexTypeDefinition.getName());
-
-    if (showType)
-    {
-      XSDTypeDefinition baseTypeDefinition = xsdComplexTypeDefinition.getBaseTypeDefinition();
-      if (baseTypeDefinition != null && 
-            baseTypeDefinition != xsdComplexTypeDefinition.getContent() &&
-            baseTypeDefinition.getName() != null &&
-            !XSDConstants.isURType(baseTypeDefinition))
-      {
-        result.append(" : ");
-        result.append(baseTypeDefinition.getQName(xsdComplexTypeDefinition));
-      }
-    }
-
-    return result.toString();
-  }
-
-  public Object[] getChildren(Object parentElement)
-  {
-    XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition)parentElement;
-    List list = new ArrayList();
-    
-    if (xsdComplexTypeDefinition.getContent() != null)
-    {
-      XSDComplexTypeContent xsdComplexTypeContent = xsdComplexTypeDefinition.getContent();
-      if (xsdComplexTypeContent instanceof XSDParticle)
-      {
-        list.add(((XSDParticle)xsdComplexTypeContent).getContent());
-      }
-    }
-    
-//    if (((XSDModelAdapterFactoryImpl)adapterFactory).getShowInherited())
-//    {
-//      if (xsdComplexTypeDefinition.getSyntheticParticle() != null)
-//      {
-//        XSDTypeDefinition type = xsdComplexTypeDefinition.getBaseTypeDefinition();
-//        list.addAll(XSDChildUtility.getModelChildren(type));
-//      }
-//      if (xsdComplexTypeDefinition.getSyntheticWildcard() != null)
-//      {
-//        list.add(xsdComplexTypeDefinition.getSyntheticWildcard());
-//      }
-//    }
-    
-//    List attributes = xsdComplexTypeDefinition.getAttributeContents();
-//    if (attributes.size() > 0)
-//    {
-//      list.addAll(attributes);
-//    }
-
-//  list = new ArrayList();
-    if (((XSDModelAdapterFactoryImpl)adapterFactory).getShowInherited())
-    {
-      if (xsdComplexTypeDefinition.getDerivationMethod().getName().equals("extension"))
-      {
-        XSDTypeDefinition type = xsdComplexTypeDefinition.getBaseTypeDefinition();
-        Iterator iter = XSDChildUtility.getModelChildren(type).iterator();
-        boolean cont = true;
-        while (cont)
-        {
-          while (iter.hasNext())
-          {
-            list.add(0, iter.next());
-          }
-          
-          if (type instanceof XSDComplexTypeDefinition)
-          {
-            XSDComplexTypeDefinition ctd = (XSDComplexTypeDefinition)type;
-            type = ctd.getBaseTypeDefinition();
-                      
-            // defect 264957 - workbench hangs when modifying complex content
-            // Since we don't filter out the current complexType from
-            // the combobox, we can potentially have an endless loop
-            if (ctd == type)
-            {
-              cont = false;
-              break;
-            }
-
-            if (ctd.getDerivationMethod().getName().equals("extension"))
-            {
-              iter = XSDChildUtility.getModelChildren(type).iterator();
-            }
-            else
-            {
-              cont = false;
-            }
-          }
-          else
-          {
-            cont = false;
-          }
-        }
-
-      }
-
-          
-//          list.addAll(XSDChildUtility.getModelChildren(baseType));
-      }
-
-//    list.addAll(XSDChildUtility.getModelChildren(xsdComplexTypeDefinition));
-
-    return list.toArray();
- 
-  }
-  
-  public boolean hasChildren(Object object)
-  {
-    return true;
-  }
-
-  public Object getParent(Object object)
-  {
-    XSDComplexTypeDefinition element = (XSDComplexTypeDefinition)object;
-    return element.getContainer();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDContentProvider.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDContentProvider.java
deleted file mode 100644
index c00e2ff..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDContentProvider.java
+++ /dev/null
@@ -1,228 +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.provider;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.edit.provider.IChangeNotifier;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.StructuredViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticleContent;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDWildcard;
-import org.w3c.dom.Node;
-
-public class XSDContentProvider implements ITreeContentProvider, INotifyChangedListener
-{
-  XSDModelAdapterFactoryImpl xsdModelAdapterFactory;
-
-  public XSDContentProvider(XSDModelAdapterFactoryImpl xsdModelAdapterFactoryImpl)
-  {
-    this.xsdModelAdapterFactory = xsdModelAdapterFactoryImpl;
-    
-    if (xsdModelAdapterFactory instanceof IChangeNotifier)
-    {
-      ((IChangeNotifier)xsdModelAdapterFactory).addListener(this);
-    }
-  }
-  
-  /*
-   * @see ITreeContentProvider#getChildren(Object)
-   */
-  public Object[] getChildren(Object parentElement)
-  {
-    XSDConcreteComponent xsdComp = null;
-    List list = null;
-    
-    // root/input is structuredmodel
-    if (parentElement instanceof IDOMModel) {
-		IDOMDocument domDoc = ((IDOMModel) parentElement).getDocument();
-		if (domDoc != null) {
-			XSDModelAdapter modelAdapter = (XSDModelAdapter) domDoc.getExistingAdapter(XSDModelAdapter.class);
-			/*
-			 * ISSUE: Didn't want to go through initializing
-			 * schema if it does not already exist, so just
-			 * attempted to get existing adapter. If doesn't
-			 * exist, just don't bother working.
-			 */
-			if (modelAdapter != null)
-				xsdComp = modelAdapter.getSchema();
-			if (xsdComp != null) {
-		      xsdModelAdapterFactory.adapt(xsdComp, xsdModelAdapterFactory);
-
-		      list = new ArrayList();
-		      list.add(xsdComp);
-		      return list.toArray();
-			}
-		}
-    }
-    else if (parentElement instanceof XSDConcreteComponent)
-    {
-      xsdComp = (XSDConcreteComponent)parentElement;
-      list = new ArrayList();
-    }
-    else if (parentElement instanceof ITreeItemContentProvider)
-    {
-      return ((ITreeItemContentProvider)parentElement).getChildren(parentElement).toArray();
-    }
-    else if (parentElement instanceof ITreeContentProvider)
-    {
-      return ((ITreeContentProvider)parentElement).getChildren(parentElement);
-    }
-    
-    if (xsdComp != null)
-    {
-      XSDAbstractAdapter a = (XSDAbstractAdapter)xsdModelAdapterFactory.adapt(xsdComp, xsdModelAdapterFactory);
-      
-      if (xsdComp instanceof XSDElementDeclaration || xsdComp instanceof XSDModelGroup || xsdComp instanceof XSDWildcard)
-      {
-        xsdModelAdapterFactory.adapt(((XSDParticleContent)xsdComp).getContainer(), xsdModelAdapterFactory);
-      }
-
-      if (a != null)
-      {
- 	    Object [] obj = a.getChildren(xsdComp);
- 	    if (obj != null)
- 	    {
- 	      list = Arrays.asList(obj);
- 	    }
- 	  }
-    }
-    
-    list =  list != null ? list : Collections.EMPTY_LIST;
-    return list.toArray();
-  }
-
-  /*
-   * @see ITreeContentProvider#getParent(Object)
-   */
-  public Object getParent(Object element)
-  {
-    if (element instanceof Node)
-    {
-      return ((Node)element).getParentNode();
-    }
-    else if (element instanceof XSDConcreteComponent)
-    {
-      return ((XSDConcreteComponent)element).getContainer();
-    }
-    return null;
-  }
-
-  /*
-   * @see ITreeContentProvider#hasChildren(Object)
-   */
-  public boolean hasChildren(Object element)
-  {
-    Object[] children = getChildren(element);
-    return children != null && children.length > 0;   
-  }
-
-  /*
-   * @see IStructuredContentProvider#getElements(Object)
-   */
-  public Object[] getElements(Object inputElement)
-  {
-    return getChildren(inputElement);
-  }
-
-  public void notifyChanged(Notification notification)
-  {
-    if (viewer != null)
-    {
-      if (viewer instanceof StructuredViewer)
-      {
-        if (notification.getFeature() instanceof EAttribute)
-        {
-          ((StructuredViewer)viewer).update(notification.getNotifier(), null);
-        }
-        else
-        {
-          ((StructuredViewer)viewer).refresh(notification.getNotifier());
-        }
-      }
-      else
-      {
-        viewer.refresh();
-      }
-    }
-
-  }
-
-  /*
-   * @see IContentProvider#dispose()
-   */
-  public void dispose()
-  {
-    viewer = null;
-    xsdModelAdapterFactory.removeListener(this);
-  }
-  
-  protected Viewer viewer = null;
-
-  /*
-   * @see IContentProvider#inputChanged(Viewer, Object, Object)
-   */
-  public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
-  {
-    this.viewer = viewer;
-  }
-  
-	/**
-	 * Gets the xsd schema from document
-	 * 
-	 * @param document
-	 * @return XSDSchema or null of one does not exist yet for document
-	 */
-	private XSDSchema getXSDSchema(IDocument document) {
-		XSDSchema schema = null;
-		IStructuredModel model = StructuredModelManager.getModelManager().getExistingModelForRead(document);
-		if (model != null) {
-			try {
-				if (model instanceof IDOMModel) {
-					IDOMDocument domDoc = ((IDOMModel) model).getDocument();
-					if (domDoc != null) {
-						XSDModelAdapter modelAdapter = (XSDModelAdapter) domDoc.getExistingAdapter(XSDModelAdapter.class);
-						/*
-						 * ISSUE: Didn't want to go through initializing
-						 * schema if it does not already exist, so just
-						 * attempted to get existing adapter. If doesn't
-						 * exist, just don't bother working.
-						 */
-						if (modelAdapter != null)
-							schema = modelAdapter.getSchema();
-					}
-				}
-			}
-			finally {
-				model.releaseFromRead();
-			}
-		}
-		return schema;
-	}
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDElementDeclarationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDElementDeclarationAdapter.java
deleted file mode 100644
index f273ccf..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDElementDeclarationAdapter.java
+++ /dev/null
@@ -1,183 +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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class XSDElementDeclarationAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDElementDeclarationAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-
-  public Image getImage(Object element)
-  {
-    XSDElementDeclaration xsdElementDeclaration = ((XSDElementDeclaration)element);
-    
-    if (!xsdElementDeclaration.isElementDeclarationReference())
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDElement.gif");
-    }
-    else
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDElementRef.gif");
-    }
-  }
-  
-  public String getText(Object object)
-  {
-    XSDElementDeclaration xsdElementDeclaration = ((XSDElementDeclaration)object);
-    XSDElementDeclaration resolvedElementDeclaration = xsdElementDeclaration.getResolvedElementDeclaration();
-    String name = 
-      xsdElementDeclaration != resolvedElementDeclaration ?
-        xsdElementDeclaration.getQName() :
-        xsdElementDeclaration.getName();
-
-    StringBuffer result = new StringBuffer();
-    if (name == null)
-    {
-      result.append("'absent'");
-    }
-    else
-    {
-      result.append(name);
-    }
-    
-    if (!xsdElementDeclaration.isGlobal())
-    {
-      Element element = xsdElementDeclaration.getElement();
-      boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
-      boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
-
-      if (hasMinOccurs || hasMaxOccurs)
-      {
-	      result.append(" ["); 
-		    if (hasMinOccurs)
-	      {
-	        int min = ((XSDParticle)xsdElementDeclaration.getContainer()).getMinOccurs();
-	  	    if (min == XSDParticle.UNBOUNDED)
-	  	    {
-	  	      result.append("*");
-	  	    }
-	  	    else
-	  	    {
-	  	      result.append(String.valueOf(min));
-	  	    }
-	      }
-        else // print default
-        {
-          int min = ((XSDParticle)xsdElementDeclaration.getContainer()).getMinOccurs();
-          result.append(String.valueOf(min));
-        }
-	      if (hasMaxOccurs)
-	      {
-	        int max = ((XSDParticle)xsdElementDeclaration.getContainer()).getMaxOccurs();
-	  	    result.append("..");
-	  	    if (max == XSDParticle.UNBOUNDED)
-	  	    {
-	  	      result.append("*");
-	  	    }
-	  	    else
-	  	    {
-	  	      result.append(String.valueOf(max));
-	  	    }
-	      }
-        else // print default
-        {
-          result.append("..");
-          int max = ((XSDParticle)xsdElementDeclaration.getContainer()).getMaxOccurs();
-          result.append(String.valueOf(max));
-         
-        }
-	      result.append("]");
-      }
-    }
-    
-    if (resolvedElementDeclaration.getAnonymousTypeDefinition() == null && resolvedElementDeclaration.getTypeDefinition() != null)
-    {
-      result.append(" : ");
-      result.append(resolvedElementDeclaration.getTypeDefinition().getQName(xsdElementDeclaration));
-    }
-
-    return result.toString();
-  }
-  
-  public Object[] getChildren(Object parentElement)
-  {
-    XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)parentElement;
-    List list = new ArrayList();
-    XSDTypeDefinition type = null;
-    if (xsdElementDeclaration.isElementDeclarationReference())
-    {
-      if (((XSDModelAdapterFactoryImpl)adapterFactory).getShowReferences())
-      {
-        type = xsdElementDeclaration.getResolvedElementDeclaration().getTypeDefinition();
-      }
-    }
-    else
-    {
-      type = xsdElementDeclaration.getAnonymousTypeDefinition();
-      if (type == null)
-      {
-        if (((XSDModelAdapterFactoryImpl)adapterFactory).getShowReferences())
-        {
-          type = xsdElementDeclaration.getTypeDefinition();
-        }
-      }
-    }
-
-    if (type != null && type instanceof XSDComplexTypeDefinition)
-    {
-      XSDComplexTypeDefinition ctType = (XSDComplexTypeDefinition)type;
-      if (ctType != null)
-      {
-        list.add(ctType);
-      }
-    }
-
-//    if (xsdElementDeclaration.getIdentityConstraintDefinitions() != null)
-//    {
-//      list.addAll(xsdElementDeclaration.getIdentityConstraintDefinitions());
-//    }
-    
-//    return XSDChildUtility.getModelChildren(xsdElementDeclaration.getResolvedElementDeclaration()).toArray();
-    return list.toArray();
-  
-  }
-  
-  public boolean hasChildren(Object object)
-  {
-    return true;
-  }
-
-  public Object getParent(Object object)
-  {
-    XSDElementDeclaration element = (XSDElementDeclaration)object;
-    return element.getContainer();
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelAdapterFactoryImpl.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelAdapterFactoryImpl.java
deleted file mode 100644
index 4b64fce..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelAdapterFactoryImpl.java
+++ /dev/null
@@ -1,359 +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.provider;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.edit.provider.ChangeNotifier;
-import org.eclipse.emf.edit.provider.Disposable;
-import org.eclipse.emf.edit.provider.IChangeNotifier;
-import org.eclipse.emf.edit.provider.IDisposable;
-import org.eclipse.emf.edit.provider.INotifyChangedListener;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.xsd.XSDAnnotation;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDRedefine;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.util.XSDAdapterFactory;
-import org.eclipse.xsd.util.XSDSwitch;
-
-public class XSDModelAdapterFactoryImpl extends XSDAdapterFactory
-  implements IChangeNotifier, IDisposable
-{
-  static XSDModelAdapterFactoryImpl instance;
-  
-  public static XSDModelAdapterFactoryImpl getInstance()
-  {
-    if (instance == null)
-    {
-      instance = new XSDModelAdapterFactoryImpl();
-    }                                         
-    return instance;
-  }
-  
-  protected IChangeNotifier changeNotifier = new ChangeNotifier();
-  
-  protected Disposable disposable = new Disposable();
-  
-  protected Collection supportedTypes = new ArrayList();
-  
-  protected boolean showReferences = false;
-  protected boolean showInherited = false;
-  
-  /**
-   * 
-   */
-  public XSDModelAdapterFactoryImpl()
-  {
-    super();
-    supportedTypes.add(ILabelProvider.class);
-  }
-
-  public void setShowReferences(boolean b)
-  {
-    showReferences = b;
-  }
-  
-  public boolean getShowReferences()
-  {
-    return showReferences;
-  }
-  
-  public void setShowInherited(boolean b)
-  {
-    showInherited= b;
-  }
-  
-  public boolean getShowInherited()
-  {
-    return showInherited;
-  }
-  
-  protected XSDSwitch modelSwitch = new XSDSwitch()
-  {
-      public Object caseXSDAnnotation(XSDAnnotation object)
-      {
-        return createXSDAnnotationAdapter();
-      }
-      public Object caseXSDAttributeDeclaration(XSDAttributeDeclaration object)
-      {
-        return createXSDAttributeDeclarationAdapter();
-      }
-      public Object caseXSDAttributeGroupDefinition(XSDAttributeGroupDefinition object)
-      {
-        return createXSDAttributeGroupDefinitionAdapter();
-      }
-      public Object caseXSDAttributeUse(XSDAttributeUse object)
-      {
-        return createXSDAttributeUseAdapter();
-      }
-      public Object caseXSDComplexTypeDefinition(XSDComplexTypeDefinition object)
-      {
-        return createXSDComplexTypeDefinitionAdapter();
-      }
-      public Object caseXSDElementDeclaration(XSDElementDeclaration object)
-      {
-        return createXSDElementDeclarationAdapter();
-      }
-      public Object caseXSDModelGroup(XSDModelGroup object)
-      {
-        return createXSDModelGroupAdapter();
-      }
-      public Object caseXSDModelGroupDefinition(XSDModelGroupDefinition object)
-      {
-        return createXSDModelGroupDefinitionAdapter();
-      }
-      public Object caseXSDNotationDeclaration(XSDNotationDeclaration object)
-      {
-        return createXSDNotationDeclarationAdapter();
-      }
-      public Object caseXSDParticle(XSDParticle object)
-      {
-        return createXSDParticleAdapter();
-      }
-//      public Object caseXSDParticleContent(XSDParticleContent object)
-//      {
-//        return createXSDParticleContentAdapter();
-//      }
-      public Object caseXSDSchema(XSDSchema object)
-      {
-        return createXSDSchemaAdapter();
-      }
-      public Object caseXSDImport(XSDImport object)
-      {
-        // return createXSDImportAdapter();
-        return createXSDSchemaDirectiveAdapter();
-      }
-      public Object caseXSDInclude(XSDInclude object)
-      {
-        // return createXSDIncludeAdapter();
-        return createXSDSchemaDirectiveAdapter();
-      }
-      public Object caseXSDRedefine(XSDRedefine object)
-      {
-        // return createXSDRedefineAdapter();
-        return createXSDSchemaDirectiveAdapter();
-      }
-      public Object caseXSDSimpleTypeDefinition(XSDSimpleTypeDefinition object)
-      {
-        return createXSDSimpleTypeDefinitionAdapter();
-      
-      }
-      public Object caseXSDWildcard(XSDWildcard object)
-      {
-        return createXSDWildcardAdapter();
-      }
-      public Object defaultCase(EObject object)
-      {
-        return createEObjectAdapter();
-      }
-  };
-
-  public Adapter createAdapter(Notifier target)
-  {
-    Adapter adapter = null;
-    if (target instanceof EObject)
-    {
-      adapter = (Adapter)modelSwitch.doSwitch((EObject)target);
-    }
-    return adapter;
-  }
-
-  /* create adapters */
-  
-  public Adapter createXSDAnnotationAdapter()
-  {
-    return new XSDAnnotationAdapter(this);
-  }
-
-  public Adapter createXSDAttributeDeclarationAdapter()
-  {
-    return new XSDAttributeDeclarationAdapter(this);
-  }
-
-  public Adapter createXSDAttributeGroupDefinitionAdapter()
-  {
-    return new XSDAttributeGroupDefinitionAdapter(this);
-  }
-
-  public Adapter createXSDAttributeUseAdapter()
-  {
-    return new XSDAttributeUseAdapter(this);
-  }
-
-  public Adapter createXSDComplexTypeDefinitionAdapter()
-  {
-	return new XSDComplexTypeDefinitionAdapter(this); 
-  }
-
-  public Adapter createXSDElementDeclarationAdapter()
-  {
-    return new XSDElementDeclarationAdapter(this);
-  }
-
-  public Adapter createXSDModelGroupAdapter()
-  {
-    return new XSDModelGroupAdapter(this);
-  }
-
-
-  public Adapter createXSDModelGroupDefinitionAdapter()
-  {
-    return new XSDModelGroupDefinitionAdapter(this);
-  }
-
-  public Adapter createXSDNotationDeclarationAdapter()
-  {
-    return new XSDNotationDeclarationAdapter(this);
-  }
-
-  public Adapter createXSDWildcardAdapter()
-  {
-    return new XSDWildcardAdapter(this);
-  }
-  
-  public Adapter createXSDParticleAdapter()
-  {
-    return new XSDParticleAdapter(this);
-  }
-//
-//  protected XSDParticleContentAdapter xsdParticleContentAdapter;
-//  public Adapter createXSDParticleContentAdapter()
-//  {
-//    if (xsdParticleContentAdapter == null)
-//    {
-//      xsdParticleContentAdapter = new XSDParticleContentAdapter(this);
-//    }
-//    return xsdParticleContentAdapter;
-//  }
-
-  public Adapter createXSDSchemaAdapter()
-  {
-    return new XSDSchemaAdapter(this);
-  }
-  
-  public Adapter createXSDSchemaDirectiveAdapter()
-  {
-    return new XSDSchemaDirectiveAdapter(this);
-  }
-
-  public Adapter createXSDSimpleTypeDefinitionAdapter()
-  {
-    return new XSDSimpleTypeDefinitionAdapter(this);
-  }
-
-  public Adapter createEObjectAdapter()
-  {
-    return null;
-  }
-
-  public boolean isFactoryForType(Object type)
-  {
-    return super.isFactoryForType(type) || supportedTypes.contains(type);
-  }
-
-  /**
-   * This implementation substitutes the factory itself as the key for the adapter.
-   */
-  public Adapter adapt(Notifier notifier, Object type)
-  {
-    return super.adapt(notifier, this);
-  }
-
-  public Object adapt(Object object, Object type)
-  {
-    // This is a kludge to deal with enumerators, which crash the doSwitch.
-    //
-    if (object instanceof EObject && ((EObject)object).eClass() == null)
-    {
-      return null;
-    }
-
-    if (isFactoryForType(type))
-    {
-      Object adapter = super.adapt(object, type);
-      if (!(type instanceof Class) || (((Class)type).isInstance(adapter)))
-      {
-        return adapter;
-      }
-    }
-
-    return null;
-  }
-
-  public Adapter adaptNew(Notifier object, Object type)
-  {
-    Adapter result = super.adaptNew(object, type);
-    disposable.add(result);
-    return result;
-  }
-
-  /**
-   * This adds a listener.
-   */
-  public void addListener(INotifyChangedListener notifyChangedListener)
-  {
-    changeNotifier.addListener(notifyChangedListener);
-  }
-
-  /**
-   * This removes a listener.
-   */
-  public void removeListener(INotifyChangedListener notifyChangedListener)
-  {
-    changeNotifier.removeListener(notifyChangedListener);
-  }
-
-  /**
-   * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
-   */
-  public void fireNotifyChanged(Notification notification)
-  {
-    Display display = Display.getDefault();
-    if (display != null)
-    {
-      if (display.getThread() == Thread.currentThread ())
-      {
-        changeNotifier.fireNotifyChanged(notification);
-      }
-    }
-
-//    if (parentAdapterFactory != null)
-//    {
-//      parentAdapterFactory.fireNotifyChanged(notification);
-//    }
-  }
-
-  public void dispose()
-  {
-    instance = null;
-    disposable.dispose();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupAdapter.java
deleted file mode 100644
index c8535b6..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupAdapter.java
+++ /dev/null
@@ -1,162 +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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.graph.XSDChildUtility;
-import org.eclipse.xsd.XSDCompositor;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class XSDModelGroupAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDModelGroupAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-
-  public Image getImage(Object element)
-  {
-    XSDModelGroup xsdModelGroup = ((XSDModelGroup)element);
-    if (XSDCompositor.CHOICE_LITERAL == xsdModelGroup.getCompositor())
-    {
-      // return XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDModelGroupChoice");
-      return XSDEditorPlugin.getXSDImage("icons/XSDChoice.gif");
-    }
-    else if (XSDCompositor.ALL_LITERAL == xsdModelGroup.getCompositor())
-    {
-      // return XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDModelGroupAll");
-      return XSDEditorPlugin.getXSDImage("icons/XSDAll.gif");
-    }
-    else 
-    {
-      // return XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDModelGroupSequence");
-      return XSDEditorPlugin.getXSDImage("icons/XSDSequence.gif");
-    }
-  }
-  
-  public String getText(Object object)
-  {
-    XSDModelGroup xsdModelGroup = ((XSDModelGroup)object);
-    
-    StringBuffer result = new StringBuffer();
-    String name = xsdModelGroup.getCompositor().getName();
-    if (name != null)
-    {
-      result.append(name);
-    }
-    
-    Element element = xsdModelGroup.getElement();
-    
-    if (element != null)
-    {
-      boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
-      boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
-      
-      if (hasMinOccurs || hasMaxOccurs)
-      {
-        XSDConcreteComponent comp = xsdModelGroup.getContainer();
-        boolean isParticle = (comp instanceof XSDParticle);
-        if (isParticle)
-        {
-          result.append(" [");
-        }
-  	    if (hasMinOccurs)
-  	    {
-          if (isParticle)
-          {
-  	        int min = ((XSDParticle)comp).getMinOccurs();
-  		      if (min == XSDParticle.UNBOUNDED)
-  		      {
-  		        result.append("*");
-            } 
-  		      else
-  		      {
-  		        result.append(String.valueOf(min));
-            }
-  		    }
-  	    }
-        else // print default
-        {
-          if (isParticle)
-          {
-            int min = ((XSDParticle)comp).getMinOccurs();
-            result.append(String.valueOf(min));
-          }
-        }
-  	    if (hasMaxOccurs)
-  	    {
-          if (isParticle)
-          {
-    	      int max = ((XSDParticle)comp).getMaxOccurs();
-  		      result.append("..");
-  		      if (max == XSDParticle.UNBOUNDED)
-  		      {
-  		        result.append("*");
-  		      }
-  		      else
-  		      {
-  		        result.append(String.valueOf(max));
-            }
-  		    }
-  	    }
-        else // print default
-        {
-          if (isParticle)
-          {
-            result.append("..");
-            int max = ((XSDParticle)comp).getMaxOccurs();
-            result.append(String.valueOf(max));
-          }
-        }
-        if (isParticle)
-        {
-    	    result.append("]");
-        }
-      }
-    }
-    return result.toString();
-  }
-  
-  public Object[] getChildren(Object parentElement)
-  {
-    XSDModelGroup xsdModelGroup = (XSDModelGroup)parentElement;
-    List list = new ArrayList();
-    // list.addAll(xsdModelGroup.getContents());
-    list.addAll(XSDChildUtility.getModelChildren(xsdModelGroup));
-    return list.toArray();
-  }
-  
-  public boolean hasChildren(Object object)
-  {
-    return true;
-  }
-
-  public Object getParent(Object object)
-  {
-    XSDModelGroup element = (XSDModelGroup)object;
-    return element.getContainer();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupDefinitionAdapter.java
deleted file mode 100644
index 93e551c..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDModelGroupDefinitionAdapter.java
+++ /dev/null
@@ -1,95 +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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-
-
-public class XSDModelGroupDefinitionAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDModelGroupDefinitionAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-
-  public Image getImage(Object object)
-  {
-    XSDModelGroupDefinition xsdModelGroupDefinition = ((XSDModelGroupDefinition)object);
-
-    if (xsdModelGroupDefinition.isModelGroupDefinitionReference())
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDGroupRef.gif");
-    }
-    else
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDGroup.gif");
-    }
-  }
-  
-  public String getText(Object object)
-  {
-    XSDModelGroupDefinition xsdModelGroupDefinition = ((XSDModelGroupDefinition)object);
-    String result = 
-      xsdModelGroupDefinition.isModelGroupDefinitionReference() ?
-        xsdModelGroupDefinition.getQName() :
-        xsdModelGroupDefinition.getName();
-    return result == null ? "'absent'" : result;
-  }
-  
-  boolean hasChildren = false;
-  
-  public Object[] getChildren(Object parentElement)
-  {
-    XSDModelGroupDefinition xsdModelGroupDefinition = (XSDModelGroupDefinition)parentElement;
-    List list = new ArrayList();
-    if (xsdModelGroupDefinition.isModelGroupDefinitionReference())
-    {
-      if (((XSDModelAdapterFactoryImpl)adapterFactory).getShowReferences())
-      {
-        list.add(xsdModelGroupDefinition.getResolvedModelGroupDefinition().getModelGroup());
-        hasChildren = true;
-      }
-    }
-    else
-    {
-      if (xsdModelGroupDefinition.getModelGroup() != null)
-      {
-        list.add(xsdModelGroupDefinition.getModelGroup());
-        hasChildren = true;
-      }
-    }
-    
-    return list.toArray();
- 
-  }
-  
-  public boolean hasChildren(Object object)
-  {
-    return hasChildren;
-  }
-
-  public Object getParent(Object object)
-  {
-    XSDModelGroupDefinition element = (XSDModelGroupDefinition)object;
-    return element.getContainer();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDNotationDeclarationAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDNotationDeclarationAdapter.java
deleted file mode 100644
index 3c89274..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDNotationDeclarationAdapter.java
+++ /dev/null
@@ -1,44 +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.provider;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDNotationDeclaration;
-
-
-public class XSDNotationDeclarationAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDNotationDeclarationAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-  
-  public Image getImage(Object object)
-  {
-    // return XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDNotationDeclaration");
-    return XSDEditorPlugin.getXSDImage("icons/XSDNotation.gif");
-  }
-
-  public String getText(Object object)
-  {
-    XSDNotationDeclaration xsdNotationDeclaration = ((XSDNotationDeclaration)object);
-    String result = xsdNotationDeclaration.getName();
-    return result == null ? "" : result;
-  }
-
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDParticleAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDParticleAdapter.java
deleted file mode 100644
index c37e8a7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDParticleAdapter.java
+++ /dev/null
@@ -1,61 +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.provider;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationWrapper;
-import org.eclipse.wst.xsd.ui.internal.graph.model.XSDModelAdapterFactory;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDParticleContent;
-import org.eclipse.xsd.XSDWildcard;
-
-
-public class XSDParticleAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDParticleAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-
-  // hack to notify outline and graph view of minOccurs and maxOccurs changes
-  public void notifyChanged(Notification msg) 
-  {
-    XSDParticle xsdParticle = (XSDParticle)msg.getNotifier();
-    XSDParticleContent xsdParticleContent = xsdParticle.getContent();
-    if (xsdParticleContent != null)
-    {
-      if (xsdParticleContent instanceof XSDElementDeclaration)
-      {
-        fireNotifyChanged(new NotificationWrapper((XSDElementDeclaration)xsdParticleContent, msg));
-        XSDModelAdapterFactory.getAdapter(xsdParticleContent).firePropertyChanged(xsdParticleContent, null);
-      }
-      else if (xsdParticleContent instanceof XSDModelGroup)
-      {
-        fireNotifyChanged(new NotificationWrapper((XSDModelGroup)xsdParticleContent, msg));
-        XSDModelAdapterFactory.getAdapter(xsdParticleContent).firePropertyChanged(xsdParticleContent, null);
-      }
-      else if (xsdParticleContent instanceof XSDWildcard)
-      {
-        fireNotifyChanged(new NotificationWrapper((XSDWildcard)xsdParticleContent, msg));
-        XSDModelAdapterFactory.getAdapter(xsdParticleContent).firePropertyChanged(xsdParticleContent, null);
-      }
-    }
-    // super.notifyChanged(msg);
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaAdapter.java
deleted file mode 100644
index 4836bc7..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaAdapter.java
+++ /dev/null
@@ -1,379 +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.provider;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.common.notify.impl.NotificationImpl;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDNotationDeclaration;
-import org.eclipse.xsd.XSDPackage;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-
-
-public class XSDSchemaAdapter extends XSDAbstractAdapter {
-	protected XSDPackage xsdPackage;
-
-	/**
-	 * @param adapterFactory
-	 */
-	public XSDSchemaAdapter(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-		xsdPackage = XSDPackage.eINSTANCE;
-	}
-
-	public Image getImage(Object element) {
-		return XSDEditorPlugin.getXSDImage("icons/XSDFile.gif");
-	}
-
-	public String getText(Object element) {
-		XSDSchema xsdSchema = (XSDSchema) element;
-		String result = xsdSchema.getSchemaLocation();
-		if (result == null) {
-			return "";
-		}
-		else {
-			return URI.createURI(result).lastSegment();
-		}
-	}
-
-	List children;
-	private CategoryAdapter fDirectivesCategory;
-	private CategoryAdapter fElementsCategory;
-	private CategoryAdapter fAttributesCategory;
-	private CategoryAdapter fAttributeGroupsCategory;
-	private CategoryAdapter fTypesCategory;
-	private CategoryAdapter fGroupsCategory;
-	private CategoryAdapter fNotationsCategory;
-
-	/**
-	 * Create all the category adapters
-	 * 
-	 * @param xsdSchema
-	 */
-	private void createCategoryAdapters(XSDSchema xsdSchema) {
-		List directivesList = getDirectives(xsdSchema);
-		List elementsList = getGlobalElements(xsdSchema);
-		List attributeGroupList = getAttributeGroupList(xsdSchema);
-		List attributesList = getAttributeList(xsdSchema);
-		List groups = getGroups(xsdSchema);
-		List notations = getNotations(xsdSchema);
-		List types = getComplexTypes(xsdSchema);
-		types.addAll(getSimpleTypes(xsdSchema));
-
-		fDirectivesCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_Elements_label"),
-					XSDEditorPlugin.getXSDString("_UI_GRAPH_DIRECTIVES"), XSDEditorPlugin.getPlugin().getIconImage("obj16/directivesheader"), directivesList, xsdSchema, CategoryAdapter.DIRECTIVES);
-		fElementsCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_Elements_label"),
-					XSDEditorPlugin.getXSDString("_UI_GRAPH_ELEMENTS"), XSDEditorPlugin.getPlugin().getIconImage("obj16/elementsheader"), elementsList, xsdSchema, CategoryAdapter.ELEMENTS);
-		fAttributesCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_Attributes_label"),
-					XSDEditorPlugin.getXSDString("_UI_GRAPH_ATTRIBUTES"), XSDEditorPlugin.getPlugin().getIconImage("obj16/attributesheader"), attributesList, xsdSchema, CategoryAdapter.ATTRIBUTES);
-		fAttributeGroupsCategory = new CategoryAdapter(// XSDEditPlugin.getString("_UI_AttributeGroups_label"),
-					XSDEditorPlugin.getXSDString("_UI_GRAPH_ATTRIBUTE_GROUPS"), XSDEditorPlugin.getPlugin().getIconImage("obj16/attributegroupsheader"), attributeGroupList, xsdSchema, CategoryAdapter.ATTRIBUTE_GROUPS);
-		fTypesCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_Types_label"),
-					XSDEditorPlugin.getXSDString("_UI_GRAPH_TYPES"), XSDEditorPlugin.getPlugin().getIconImage("obj16/typesheader"), types, xsdSchema, CategoryAdapter.TYPES);
-		fGroupsCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_ModelGroups_label"),
-					XSDEditorPlugin.getXSDString("_UI_GRAPH_GROUPS"), XSDEditorPlugin.getPlugin().getIconImage("obj16/groupsheader"), groups, xsdSchema, CategoryAdapter.GROUPS);
-		fNotationsCategory = new CategoryAdapter( // XSDEditPlugin.getString("_UI_Notations_label"),
-					XSDEditorPlugin.getXSDString("_UI_GRAPH_NOTATIONS"), XSDEditorPlugin.getPlugin().getIconImage("obj16/notationsheader"), notations, xsdSchema, CategoryAdapter.NOTATIONS);
-	}
-
-	public void setTarget(Notifier newTarget) {
-		super.setTarget(newTarget);
-
-		XSDSchema xsdSchema = ((XSDSchema) newTarget);
-		createCategoryAdapters(xsdSchema);
-	}
-
-	public Object[] getChildren(Object parentElement) {
-		XSDSchema xsdSchema = ((XSDSchema) parentElement);
-
-		children = new ArrayList();
-
-		// just set categoryadapters' children if category adapters are
-		// already created
-		if (fDirectivesCategory != null) {
-			List directivesList = getDirectives(xsdSchema);
-			List elementsList = getGlobalElements(xsdSchema);
-			List attributeGroupList = getAttributeGroupList(xsdSchema);
-			List attributesList = getAttributeList(xsdSchema);
-			List groups = getGroups(xsdSchema);
-			List notations = getNotations(xsdSchema);
-			List types = getComplexTypes(xsdSchema);
-			types.addAll(getSimpleTypes(xsdSchema));
-
-			fDirectivesCategory.setChildren(directivesList);
-			fElementsCategory.setChildren(elementsList);
-			fAttributesCategory.setChildren(attributesList);
-			fAttributeGroupsCategory.setChildren(attributeGroupList);
-			fTypesCategory.setChildren(types);
-			fGroupsCategory.setChildren(groups);
-			fNotationsCategory.setChildren(notations);
-
-			// children.add
-			// (new CategoryAdapter
-			// ( //XSDEditPlugin.getString("_UI_IdentityConstraints_label"),
-			// "Identity Constraints",
-			// XSDEditorPlugin.getPlugin().getIconImage("full/obj16/XSDIdentityConstraintDefinitionKey"),
-			// xsdSchema.getIdentityConstraintDefinitions(), xsdSchema,
-			// CategoryAdapter.IDENTITY_CONSTRAINTS));
-			// children.add
-			// (new CategoryAdapter
-			// ( // XSDEditPlugin.getString("_UI_Annotations_label"),
-			// "Annotations",
-			// XSDEditorPlugin.getPlugin().getIconImage("obj16/annotationsheader"),
-			// xsdSchema.getAnnotations(), xsdSchema,
-			// CategoryAdapter.ANNOTATIONS));
-		}
-		else {
-			createCategoryAdapters(xsdSchema);
-		}
-
-		children.add(fDirectivesCategory);
-		children.add(fElementsCategory);
-		children.add(fAttributesCategory);
-		children.add(fAttributeGroupsCategory);
-		children.add(fTypesCategory);
-		children.add(fGroupsCategory);
-		children.add(fNotationsCategory);
-
-		return children.toArray();
-	}
-
-	public boolean hasChildren(Object object) {
-		return true;
-	}
-
-	public Object getParent(Object object) {
-		return null;
-	}
-
-	public void notifyChanged(final Notification msg) {
-		class CategoryNotification extends NotificationImpl {
-			protected Object category;
-
-			public CategoryNotification(Object category) {
-				super(msg.getEventType(), msg.getOldValue(), msg.getNewValue(), msg.getPosition());
-				this.category = category;
-			}
-
-			public Object getNotifier() {
-				return category;
-			}
-
-			public Object getFeature() {
-				return msg.getFeature();
-			}
-		}
-
-		if (children == null) {
-			getChildren(target);
-		}
-
-		if (msg.getFeature() == xsdPackage.getXSDSchema_Contents()) {
-			CategoryAdapter adapter = (CategoryAdapter) children.get(0);
-			XSDSchema xsdSchema = adapter.getXSDSchema();
-			adapter.setChildren(getDirectives(xsdSchema));
-			this.fireNotifyChanged(new CategoryNotification(adapter));
-			return;
-		}
-		else if (msg.getFeature() == xsdPackage.getXSDSchema_ElementDeclarations()) {
-			CategoryAdapter adapter = (CategoryAdapter) children.get(1);
-			XSDSchema xsdSchema = adapter.getXSDSchema();
-			adapter.setChildren(getGlobalElements(xsdSchema));
-			this.fireNotifyChanged(new CategoryNotification(adapter));
-			return;
-		}
-		else if (msg.getFeature() == xsdPackage.getXSDSchema_AttributeDeclarations()) {
-			CategoryAdapter adapter = (CategoryAdapter) children.get(2);
-			XSDSchema xsdSchema = adapter.getXSDSchema();
-			adapter.setChildren(getAttributeList(xsdSchema));
-			this.fireNotifyChanged(new CategoryNotification(adapter));
-			return;
-		}
-		else if (msg.getFeature() == xsdPackage.getXSDSchema_AttributeGroupDefinitions()) {
-			CategoryAdapter adapter = (CategoryAdapter) children.get(3);
-			XSDSchema xsdSchema = adapter.getXSDSchema();
-			adapter.setChildren(getAttributeGroupList(xsdSchema));
-			this.fireNotifyChanged(new CategoryNotification(adapter));
-			return;
-		}
-		else if (msg.getFeature() == xsdPackage.getXSDSchema_TypeDefinitions()) {
-			CategoryAdapter adapter = (CategoryAdapter) children.get(4);
-			XSDSchema xsdSchema = adapter.getXSDSchema();
-			List types = getComplexTypes(xsdSchema);
-			types.addAll(getSimpleTypes(xsdSchema));
-
-			adapter.setChildren(types);
-			this.fireNotifyChanged(new CategoryNotification(adapter));
-			return;
-		}
-		else if (msg.getFeature() == xsdPackage.getXSDSchema_ModelGroupDefinitions()) {
-			CategoryAdapter adapter = (CategoryAdapter) children.get(5);
-			XSDSchema xsdSchema = adapter.getXSDSchema();
-			adapter.setChildren(getGroups(xsdSchema));
-			this.fireNotifyChanged(new CategoryNotification(adapter));
-			return;
-		}
-		else if (msg.getFeature() == xsdPackage.getXSDSchema_NotationDeclarations()) {
-			CategoryAdapter adapter = (CategoryAdapter) children.get(6);
-			XSDSchema xsdSchema = adapter.getXSDSchema();
-			adapter.setChildren(getNotations(xsdSchema));
-			this.fireNotifyChanged(new CategoryNotification(adapter));
-			return;
-		}
-		// else if (msg.getFeature() ==
-		// xsdPackage.getXSDSchema_IdentityConstraintDefinitions())
-		// {
-		// this.fireNotifyChanged(new CategoryNotification(children.get(7)));
-		// return;
-		// }
-		else if (msg.getFeature() == xsdPackage.getXSDSchema_Annotations()) {
-			// this.fireNotifyChanged(new
-			// CategoryNotification(children.get(7)));
-			return;
-		}
-		else if (msg.getFeature() == xsdPackage.getXSDSchema_SchemaLocation()) {
-			this.fireNotifyChanged(msg);
-			return;
-		}
-
-		super.notifyChanged(msg);
-	}
-
-	protected List getDirectives(XSDSchema schema) {
-		List list = new ArrayList();
-		for (Iterator i = schema.getContents().iterator(); i.hasNext();) {
-			Object o = i.next();
-			if (o instanceof XSDSchemaDirective) {
-				list.add(o);
-			}
-		}
-		return list;
-	}
-
-	protected List getAttributeGroupList(XSDSchema xsdSchema) {
-		List attributeGroupList = new ArrayList();
-		for (Iterator i = xsdSchema.getAttributeGroupDefinitions().iterator(); i.hasNext();) {
-			XSDAttributeGroupDefinition attrGroup = (XSDAttributeGroupDefinition) i.next();
-			if (attrGroup.getRootContainer() == xsdSchema) {
-				attributeGroupList.add(attrGroup);
-			}
-		}
-		return attributeGroupList;
-	}
-
-	protected List getAttributeList(XSDSchema xsdSchema) {
-		List attributesList = new ArrayList();
-		for (Iterator iter = xsdSchema.getAttributeDeclarations().iterator(); iter.hasNext();) {
-			Object o = iter.next();
-			if (o instanceof XSDAttributeDeclaration) {
-				XSDAttributeDeclaration attr = (XSDAttributeDeclaration) o;
-				if (attr != null) {
-					if (attr.getTargetNamespace() != null) {
-						if (!(attr.getTargetNamespace().equals("http://www.w3.org/2001/XMLSchema-instance"))) {
-							if (attr.getRootContainer() == xsdSchema) {
-								attributesList.add(attr);
-							}
-						}
-					}
-					else {
-						if (attr.getRootContainer() == xsdSchema) {
-							attributesList.add(attr);
-						}
-					}
-				}
-			}
-		}
-		return attributesList;
-	}
-
-	protected List getGlobalElements(XSDSchema schema) {
-		List elements = schema.getElementDeclarations();
-		List list = new ArrayList();
-		for (Iterator i = elements.iterator(); i.hasNext();) {
-			XSDElementDeclaration elem = (XSDElementDeclaration) i.next();
-			if (elem.getRootContainer() == schema) {
-				list.add(elem);
-			}
-		}
-		return list;
-	}
-
-	protected List getComplexTypes(XSDSchema schema) {
-		List allTypes = schema.getTypeDefinitions();
-		List list = new ArrayList();
-		for (Iterator i = allTypes.iterator(); i.hasNext();) {
-			XSDTypeDefinition td = (XSDTypeDefinition) i.next();
-			if (td instanceof XSDComplexTypeDefinition) {
-				XSDComplexTypeDefinition ct = (XSDComplexTypeDefinition) td;
-				if (ct.getRootContainer() == schema) {
-					list.add(ct);
-				}
-			}
-		}
-		return list;
-	}
-
-	protected List getSimpleTypes(XSDSchema schema) {
-		List allTypes = schema.getTypeDefinitions();
-		List list = new ArrayList();
-		for (Iterator i = allTypes.iterator(); i.hasNext();) {
-			XSDTypeDefinition td = (XSDTypeDefinition) i.next();
-			if (td instanceof XSDSimpleTypeDefinition) {
-				XSDSimpleTypeDefinition st = (XSDSimpleTypeDefinition) td;
-				if (st.getRootContainer() == schema) {
-					list.add(st);
-				}
-			}
-		}
-		return list;
-	}
-
-	protected List getGroups(XSDSchema schema) {
-		List groups = schema.getModelGroupDefinitions();
-		List list = new ArrayList();
-		for (Iterator i = groups.iterator(); i.hasNext();) {
-			XSDModelGroupDefinition group = (XSDModelGroupDefinition) i.next();
-			if (group.getRootContainer() == schema) {
-				list.add(group);
-			}
-		}
-		return list;
-	}
-
-	protected List getNotations(XSDSchema schema) {
-		List notations = schema.getNotationDeclarations();
-		List list = new ArrayList();
-		for (Iterator i = notations.iterator(); i.hasNext();) {
-			XSDNotationDeclaration notation = (XSDNotationDeclaration) i.next();
-			if (notation.getRootContainer() == schema) {
-				list.add(notation);
-			}
-		}
-		return list;
-	}
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaDirectiveAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaDirectiveAdapter.java
deleted file mode 100644
index 47cf912..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSchemaDirectiveAdapter.java
+++ /dev/null
@@ -1,102 +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.provider;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDInclude;
-import org.eclipse.xsd.XSDRedefine;
-import org.eclipse.xsd.XSDSchemaDirective;
-
-public class XSDSchemaDirectiveAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDSchemaDirectiveAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-
-  
-  public Image getImage(Object object)
-  {
-    if (object instanceof XSDImport)
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDImport.gif");
-    }
-    else if (object instanceof XSDInclude)
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDInclude.gif");
-    }
-    else if (object instanceof XSDRedefine)
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDRedefine.gif");
-    }
-    return null;
-  }
-
-  public String getText(Object object)
-  {
-    XSDSchemaDirective directive = (XSDSchemaDirective)object;
-    String result = directive.getSchemaLocation();
-    if (result == null) result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED") + ")";
-    if (result.equals("")) result = "(" + XSDEditorPlugin.getXSDString("_UI_LABEL_NO_LOCATION_SPECIFIED")+ ")";
-    return result;
-    
-//    XSDImport xsdImport = ((XSDImport)object);
-//    String result = xsdImport.getSchemaLocation();
-//    return result == null ? "" : result;
-    
-//    XSDInclude xsdInclude = ((XSDInclude)object);
-//    String result = xsdInclude.getSchemaLocation();
-//    return result == null ? "" : result;
-    
-//    XSDRedefine xsdRedefine = ((XSDRedefine)object);
-//    String result = xsdRedefine.getSchemaLocation();
-//    return result == null ? "" : result;
-
-
-  }
-
-  public Object[] getChildren(Object parentElement)
-  {
-    List list = new ArrayList();
-    if (parentElement instanceof XSDRedefine)
-    {
-      XSDRedefine redefine = (XSDRedefine)parentElement;
-      list = redefine.getContents();
-      if (list == null)
-      {
-        list = new ArrayList();
-      }
-    }
-    return list.toArray();
-  }
-  
-  public boolean hasChildren(Object object)
-  {
-    return false;
-  }
-
-  public Object getParent(Object object)
-  {
-    return null;
-    
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSimpleTypeDefinitionAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSimpleTypeDefinitionAdapter.java
deleted file mode 100644
index 299bd3f..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDSimpleTypeDefinitionAdapter.java
+++ /dev/null
@@ -1,188 +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.provider;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDVariety;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class XSDSimpleTypeDefinitionAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDSimpleTypeDefinitionAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-
-  public Image getImage(Object object)
-  {
-    XSDSimpleTypeDefinition xsdSimpleTypeDefinition = ((XSDSimpleTypeDefinition)object);
-    
-    if (xsdSimpleTypeDefinition.getContainer() == null)
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
-    }
-    
-    if (XSDVariety.LIST_LITERAL == xsdSimpleTypeDefinition.getVariety())
-    {
-      // return XSDEditorPlugin.getXSDImage("icons/XSDSimpleList.gif");
-      return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_list_obj");
-    }
-    else if (XSDVariety.UNION_LITERAL == xsdSimpleTypeDefinition.getVariety())
-    {
-      //return XSDEditorPlugin.getXSDImage("icons/XSDSimpleUnion.gif");
-      return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_union_obj");
-    }
-    else if (XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety())
-    {
-      // return XSDEditorPlugin.getXSDImage("icons/XSDSimpleRestrict.gif");
-      Element stElement = xsdSimpleTypeDefinition.getElement();
-      XSDDOMHelper domHelper = new XSDDOMHelper();
-      if (domHelper.getChildNode(stElement, XSDConstants.RESTRICTION_ELEMENT_TAG) != null)
-      {
-        return XSDEditorPlugin.getPlugin().getIconImage("obj16/smpl_restrict_obj");
-      }
-      return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
-    }
-    else if (xsdSimpleTypeDefinition.isSetVariety())
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
-    }
-    else
-    {
-      return XSDEditorPlugin.getXSDImage("icons/XSDSimpleType.gif");
-    }
-    
-//    return 
-//      XSDEditorPlugin.getPlugin().getIconImage
-//        (xsdSimpleTypeDefinition.getContainer() == null ?
-//           "full/obj16/XSDSimpleTypeDefinitionUnresolved" :
-//           XSDVariety.LIST_LITERAL == xsdSimpleTypeDefinition.getVariety() ? 
-//             "full/obj16/XSDSimpleTypeDefinitionList" :  
-//              XSDVariety.UNION_LITERAL == xsdSimpleTypeDefinition.getVariety() ? 
-//                "full/obj16/XSDSimpleTypeDefinitionUnion" :
-//                  xsdSimpleTypeDefinition.isSetVariety() ?
-//                    "full/obj16/XSDSimpleTypeDefinitionAtomic"  :
-//                    "full/obj16/XSDSimpleTypeDefinition");
-  }
-  
-  public String getText(Object object)
-  {
-    return getText(object, true);
-  }
- 
-  public String getText(Object object, boolean showType)
-  {
-    XSDSimpleTypeDefinition xsdSimpleTypeDefinition = ((XSDSimpleTypeDefinition)object);
-
-    StringBuffer result = new StringBuffer();
-
-    result.append
-      (xsdSimpleTypeDefinition.getName() == null ? 
-         // xsdSimpleTypeDefinition.getAliasName() :
-         "local type" :
-         xsdSimpleTypeDefinition.getName());
-
-    if (showType)
-    {
-      XSDSimpleTypeDefinition baseTypeDefinition = xsdSimpleTypeDefinition.getBaseTypeDefinition();
-      if (baseTypeDefinition != null && XSDVariety.ATOMIC_LITERAL == xsdSimpleTypeDefinition.getVariety())
-      {
-        if (baseTypeDefinition.getName() != null && 
-              !xsdSimpleTypeDefinition.getContents().contains(baseTypeDefinition) &&
-              !XSDConstants.isAnySimpleType(baseTypeDefinition)) 
-        {
-          result.append(" : ");
-          result.append(baseTypeDefinition.getQName(xsdSimpleTypeDefinition));
-        }
-      }
-      else
-      {
-        XSDSimpleTypeDefinition itemTypeDefinition = xsdSimpleTypeDefinition.getItemTypeDefinition();
-        if (itemTypeDefinition != null)
-        {
-          if (itemTypeDefinition.getName() != null) 
-          {
-            result.append(" : ");
-            result.append(itemTypeDefinition.getQName(xsdSimpleTypeDefinition));
-          }
-        }
-        else 
-        {
-          List memberTypeDefinitions = xsdSimpleTypeDefinition.getMemberTypeDefinitions();
-          if (!memberTypeDefinitions.isEmpty())
-          {
-            boolean first = true;
-            for (Iterator members = memberTypeDefinitions.iterator(); members.hasNext(); )
-            {
-              XSDSimpleTypeDefinition memberTypeDefinition = (XSDSimpleTypeDefinition)members.next();
-              if (memberTypeDefinition.getName() != null) 
-              {
-                if (first)
-                {
-                  result.append(" : ");
-                  first = false;
-                }
-                else
-                {
-                  result.append(" | ");
-                }
-                result.append(memberTypeDefinition.getQName(xsdSimpleTypeDefinition));
-              }
-              else
-              {
-                break;
-              }
-            }
-          } 
-          else if (result.length() == 0)
-          {
-            result.append("'absent'");
-          }
-        }
-      }
-    }
-
-    return result.toString();
-  }
-
-  public Object[] getChildren(Object parentElement)
-  {
-    List list = new ArrayList();
-    return list.toArray();
-  
-  }
-  
-  public boolean hasChildren(Object object)
-  {
-    return true;
-  }
-
-  public Object getParent(Object object)
-  {
-    XSDSimpleTypeDefinition element = (XSDSimpleTypeDefinition)object;
-    return element.getContainer();
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDWildcardAdapter.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDWildcardAdapter.java
deleted file mode 100644
index b219f6b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/provider/XSDWildcardAdapter.java
+++ /dev/null
@@ -1,112 +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.provider;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDWildcard;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-public class XSDWildcardAdapter extends XSDAbstractAdapter
-{
-
-  /**
-   * @param adapterFactory
-   */
-  public XSDWildcardAdapter(AdapterFactory adapterFactory)
-  {
-    super(adapterFactory);
-  }
-
-  public Image getImage(Object object)
-  {
-    XSDWildcard xsdWildcard = (XSDWildcard)object;
-    return XSDEditorPlugin.getXSDImage
-      (xsdWildcard.eContainer() instanceof XSDParticle ?
-        "icons/XSDAny.gif" :
-        "icons/XSDAnyAttribute.gif");
-  }
-  
-  public String getText(Object object)
-  {
-    XSDWildcard xsdWildcard = ((XSDWildcard)object);
-    
-    StringBuffer result = new StringBuffer();
-    Element element = xsdWildcard.getElement();
-    
-    if (element != null)
-    {
-      result.append(element.getNodeName());
-      boolean hasMinOccurs = element.hasAttribute(XSDConstants.MINOCCURS_ATTRIBUTE);
-      boolean hasMaxOccurs = element.hasAttribute(XSDConstants.MAXOCCURS_ATTRIBUTE);
-      
-      if (hasMinOccurs || hasMaxOccurs)
-      {
-        result.append(" [");   //$NON-NLS-1$
-        if (hasMinOccurs)
-        {
-          
-          int min = ((XSDParticle)xsdWildcard.getContainer()).getMinOccurs();
-          if (min == XSDParticle.UNBOUNDED)
-          {
-            result.append("*");
-          }
-          else
-          {
-            result.append(String.valueOf(min));
-          }
-        }
-        else // print default
-        {
-          int min = ((XSDParticle)xsdWildcard.getContainer()).getMinOccurs();
-          result.append(String.valueOf(min));
-        }
-        if (hasMaxOccurs)
-        {
-          int max = ((XSDParticle)xsdWildcard.getContainer()).getMaxOccurs();
-          result.append("..");
-          if (max == XSDParticle.UNBOUNDED)
-          {
-            result.append("*");
-          }
-          else
-          {
-            result.append(String.valueOf(max));
-          }
-        }
-        else // print default
-        {
-          result.append("..");
-          int max = ((XSDParticle)xsdWildcard.getContainer()).getMaxOccurs();
-          result.append(String.valueOf(max));
-        }
-        result.append("]");
-      }
-    }
-    return result.toString();
-
-  }
-
-  public boolean hasChildren(Object object)
-  {
-    return false;
-  }
-
-  public Object getParent(Object object)
-  {
-    XSDWildcard xsdWildcard = (XSDWildcard)object;
-    return xsdWildcard.getContainer();
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/BaseCleanup.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/BaseCleanup.java
deleted file mode 100644
index 3a3da3b..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/BaseCleanup.java
+++ /dev/null
@@ -1,105 +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.refactor.rename;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.eclipse.wst.xsd.ui.internal.util.XSDDOMHelper;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDNamedComponent;
-import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
-
-public abstract class BaseCleanup extends XSDVisitor
-{
-  /**
-   * @see org.eclipse.wst.xsd.ui.internal.refactor.XSDVisitor#visitSchema(XSDSchema)
-   */
-  public void visitSchema(XSDSchema schema)
-  {
-    super.visitSchema(schema);
-    
-    // now remove all children that were queued up for removal
-    
-    for (Iterator iter = childrenToRemove.iterator(); iter.hasNext(); )
-    {
-      Element domElement = (Element) iter.next();
-      XSDDOMHelper.removeNodeAndWhitespace(domElement);
-//      domElement.getParentNode().removeChild(domElement);
-    }
-  }
-
-
-  protected ArrayList messages = new ArrayList();
-
-  public ArrayList getMessages()
-  {
-  	return messages;
-  }
-  
-
-  protected void addMessage(String msg, XSDConcreteComponent component)
-  {
-////    ErrorMessage message = new ErrorMessage();
-//    
-//    XSDConcreteComponent currComp = component;
-//    while (!(currComp instanceof XSDSchemaContent) && currComp.getContainer() != null)
-//    {
-//      currComp = currComp.getContainer();
-//    }
-//
-//    Element domElement = currComp.getElement();
-//    Node parent = domElement;
-//    while (!(parent instanceof NodeImpl) && parent != null)
-//    {
-//      parent = parent.getParentNode();
-//    }
-//    if (parent instanceof NodeImpl)
-//    {
-//      // message.setModelObject(currComp.getElement());
-//			message.setTargetObject(currComp.getElement());
-//    }
-//    message.setLocalizedMessage(msg);
-//  ???
-//    addMessage(message);
-  }
-    
-
-// // protected void addMessage(ErrorMessage message)
-//	protected void addMessage(Message message)
-//  {
-//    messages.add(message);
-//  }
-  
-
-  protected ArrayList childrenToRemove = new ArrayList();
-  
-
-  protected String getNamedComponentName(XSDConcreteComponent concrete)
-  {
-    String name = null;
-    if (concrete instanceof XSDNamedComponent)
-    {
-      name = ((XSDNamedComponent)concrete).getName();
-    }
-    
-    XSDConcreteComponent comp = concrete;
-    while (comp != null && name == null)
-    {
-      comp = comp.getContainer();
-      if (comp instanceof XSDNamedComponent)
-      {
-        name = ((XSDNamedComponent)comp).getName();
-      }
-    }
-    return name != null ? name : "";
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDExternalFileCleanup.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDExternalFileCleanup.java
deleted file mode 100644
index e96619e..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/refactor/rename/XSDExternalFileCleanup.java
+++ /dev/null
@@ -1,298 +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.refactor.rename;
-
-import java.text.MessageFormat;
-import java.util.Iterator;
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupContent;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDAttributeUse;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDConcreteComponent;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaContent;
-import org.eclipse.xsd.XSDSchemaDirective;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class XSDExternalFileCleanup extends BaseCleanup
-{
-  /**
-   * Constructor for XSDExternalFileCleanup.
-   */
-  public XSDExternalFileCleanup(String oldFilename)
-  {
-    super();
-    this.oldFilename = oldFilename;
-  }
-  
-  protected XSDSchema deletedSchema;
-  public XSDExternalFileCleanup(XSDSchema deletedSchema)
-  {
-    this.deletedSchema = deletedSchema;
-  }
-
-  protected String oldFilename;
-  
-  /**
-   * @see org.eclipse.wst.xsd.ui.internal.refactor.XSDVisitor#visitElementDeclaration(XSDElementDeclaration)
-   */
-  public void visitElementDeclaration(XSDElementDeclaration element)
-  {
-    boolean addMessage = true;
-    String schemaLocation = element.getSchema().getSchemaLocation();
-    if (schemaLocation!= null)
-    {
-      if (!schemaLocation.equals(schema.getSchemaLocation()))
-      {
-        addMessage = false;
-      }
-    }
-    if (element.isElementDeclarationReference())
-    {
-      if (isFromDeletedSchema(element.getResolvedElementDeclaration()))
-      {
-        if (addMessage)
-        {
-          // String msg = XSDPlugin.getSchemaString("_INFO_REMOVE_ELEMENT_REFERENCE") + " <" + getNamedComponentName(element.getContainer()) + ">";
-					String msg = "_INFO_REMOVE_ELEMENT_REFERENCE" + " <" + getNamedComponentName(element.getContainer()) + ">";
-          addMessage(msg, element.getContainer());
-        }
-        childrenToRemove.add(element.getElement());
-//        Element domElement = element.getElement();
-//        domElement.getParentNode().removeChild(domElement);     
-      }
-    }
-    else if (removeType(element))
-    {
-      String msg = "";
-      if (element.isGlobal())
-      {
-      	// String pattern = XSDPlugin.getSchemaString("_INFO_RESET_GLOBAL_ELEMENT");
-				String pattern = "_INFO_RESET_GLOBAL_ELEMENT";
-        Object args[] = {element.getName()};
-        msg = MessageFormat.format(pattern, args);
-      }
-      else
-      {
-      	// msg = XSDPlugin.getSchemaString("_INFO_RESET_ELEMENT");
-				msg = "_INFO_RESET_ELEMENT";
-      	// msg += "<" + element.getName() + "> " + XSDPlugin.getSchemaString("_UI_TO_TYPE_STRING");
-				msg += "<" + element.getName() + "> " + "_UI_TO_TYPE_STRING";
-      }
-      if (addMessage)
-      {
-        addMessage(msg, element);
-      }
-    }
-
-
-    super.visitElementDeclaration(element);
-  }
-
-  protected void resetTypeToString(Element element)
-  {
-    String prefix = element.getPrefix();
-    prefix = (prefix == null) ? "" : (prefix + ":");
-    
-    element.setAttribute(XSDConstants.TYPE_ATTRIBUTE, prefix + "string"); 
-  }
-  
-  protected boolean removeType(XSDElementDeclaration element)
-  {
-  	if (removeType(element.getTypeDefinition()))
-  	{
-      resetTypeToString(element.getElement());
-  	  return true;
-  	}
-  	return false;
-  }
-  
-  protected boolean isFromDeletedSchema(XSDConcreteComponent component)
-  {
-    if (component == null)
-    {
-      return false;
-    }
-    XSDConcreteComponent root = component.getRootContainer();
-
-    boolean isFromDeletedSchema = false;
-    if (deletedSchema.getContents() != null)
-    {
-      Iterator contents = deletedSchema.getContents().iterator();
-      while (contents.hasNext())
-      {
-        XSDSchemaContent content = (XSDSchemaContent)contents.next();
-        if (content instanceof XSDSchemaDirective)
-        {
-          XSDSchema aSchema = ((XSDSchemaDirective)content).getResolvedSchema();
-          if (root != null && root.equals(aSchema))
-          {
-            isFromDeletedSchema = true;
-          }
-        }
-      }
-    }
-    if (root != null && root.equals(deletedSchema))
-    {
-      isFromDeletedSchema = true;
-    }
-    return isFromDeletedSchema;
-  }
-      
-  /**
-   * Remove the type from the element if it belongs to the external file
-   */
-  protected boolean removeType(XSDTypeDefinition typeDef)
-  {
-    if (typeDef == null)
-    {
-      return false;
-    }
-    return isFromDeletedSchema(typeDef);
-  }
-
-  /**
-   * @see org.eclipse.wst.xsd.utility.XSDVisitor#visitComplexTypeDefinition(XSDComplexTypeDefinition)
-   */
-  public void visitComplexTypeDefinition(XSDComplexTypeDefinition type)
-  {
-    super.visitComplexTypeDefinition(type);
-    if (type.getAttributeContents() != null)
-    {
-      for (Iterator iter = type.getAttributeContents().iterator(); iter.hasNext(); )
-      {
-        XSDAttributeGroupContent attrGroupContent = (XSDAttributeGroupContent) iter.next();
-        if (attrGroupContent instanceof XSDAttributeUse)
-        {
-          XSDAttributeUse attrUse = (XSDAttributeUse) attrGroupContent;
-          XSDAttributeDeclaration attrDecl = attrUse.getContent();
-          
-          // now is this a reference?
-          if (attrDecl.isAttributeDeclarationReference())
-          {
-            if (isFromDeletedSchema(attrDecl.getResolvedAttributeDeclaration()))
-            {
-              String name = getNamedComponentName(type);
-              // String msg = XSDPlugin.getSchemaString("_INFO_REMOVE_ATTRIBUTE_REFERENCE") +
-							String msg = "_INFO_REMOVE_ATTRIBUTE_REFERENCE" +
-                       " <" + name + ">";
-              addMessage(msg, attrDecl.getContainer());
-              
-              childrenToRemove.add(attrDecl.getElement());
-            }
-          }
-          // otherwise check the type of the attribute and see if it is from the deleted schema
-          else
-          {
-            if (removeType(attrDecl.getTypeDefinition()))
-            {
-              // reset the type of the attribute decl to string
-              // String msg = XSDPlugin.getSchemaString("_INFO_RESET_ATTRIBUTE") +
-							String msg = "_INFO_RESET_ATTRIBUTE" +
-                          " <" + attrDecl.getName() + "> " +
-                          // XSDPlugin.getSchemaString("_UI_TO_TYPE_STRING");
-							            "_UI_TO_TYPE_STRING";
-              addMessage(msg, attrDecl);
-              resetTypeToString(attrDecl.getElement());
-
-            }
-          }
-        }
-        else if (attrGroupContent instanceof XSDAttributeGroupDefinition)
-        {
-          XSDAttributeGroupDefinition attrGroupDef = (XSDAttributeGroupDefinition) attrGroupContent;
-          
-          if (isFromDeletedSchema(attrGroupDef.getResolvedAttributeGroupDefinition()))
-          {
-          	// remove the attribute group reference
-            String name = getNamedComponentName(type);
-            // String msg = XSDPlugin.getSchemaString("_INFO_REMOVE_ATTRIBUTE_GROUP_REFERENCE") + " <" + name + ">";
-						String msg = "_INFO_REMOVE_ATTRIBUTE_GROUP_REFERENCE" + " <" + name + ">";
-
-            addMessage(msg, attrGroupDef.getContainer());
-            
-            childrenToRemove.add(attrGroupDef.getElement());
-          }
-        }
-      }
-    }
-
-    // For the complex type with simple content case, see the visitComplexTypeDefinition method
-    XSDTypeDefinition base = type.getBaseTypeDefinition();
-    if (base instanceof XSDSimpleTypeDefinition)
-    {
-      XSDSimpleTypeDefinition baseType = (XSDSimpleTypeDefinition)base;
-      if (isFromDeletedSchema(baseType))
-      {
-        // String msg = XSDPlugin.getSchemaString("_INFO_RESET_COMPLEX_TYPE") +
-				String msg = "_INFO_RESET_COMPLEX_TYPE" +
-                " <" + getNamedComponentName(type) + "> " +
-                // XSDPlugin.getSchemaString("_UI_DERIVATION");
-				        "_UI_DERIVATION";
-        addMessage(msg, type);
-      
-        type.setBaseTypeDefinition(schema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
-      }
-    }
-  }
-
-  /**
-   * @see org.eclipse.wst.xsd.utility.XSDVisitor#visitModelGroupDefinition(XSDModelGroupDefinition)
-   */
-  public void visitModelGroupDefinition(XSDModelGroupDefinition modelGroup)
-  {
-    super.visitModelGroupDefinition(modelGroup);
-    if (modelGroup.isModelGroupDefinitionReference())
-    {
-      if (isFromDeletedSchema(modelGroup.getResolvedModelGroupDefinition()))
-      {
-        String name = getNamedComponentName(modelGroup);
-        // String msg = XSDPlugin.getSchemaString("_INFO_REMOVE_GROUP_REFERENCE") + " <" + name + ">";
-				String msg = "_INFO_REMOVE_GROUP_REFERENCE" + " <" + name + ">";
-        addMessage(msg, modelGroup.getContainer());
-        childrenToRemove.add(modelGroup.getElement());
-      }
-    }      
-  }
-
-  /**
-   * @see org.eclipse.wst.xsd.utility.XSDVisitor#visitSimpleTypeDefinition(XSDSimpleTypeDefinition)
-   */
-  public void visitSimpleTypeDefinition(XSDSimpleTypeDefinition type)
-  {
-    super.visitSimpleTypeDefinition(type);
-    XSDSimpleTypeDefinition baseType = type.getBaseTypeDefinition();
-    if (isFromDeletedSchema(baseType))
-    {
-      // String msg = XSDPlugin.getSchemaString("_INFO_RESET_SIMPLE_TYPE") +
-			String msg = "_INFO_RESET_SIMPLE_TYPE" +
-              " <" + getNamedComponentName(type) + "> " +
-              // XSDPlugin.getSchemaString("_UI_DERIVATION");
-			        "_UI_DERIVATION";
-      addMessage(msg, type);
-      
-
-    // This will set the simple Type base to string 
-    // For the complex type with simple content case, see the visitComplexTypeDefinition method
-
-      type.getFacetContents().clear();
-      type.getFacets().clear();
-      type.setBaseTypeDefinition(schema.getSchemaForSchema().resolveSimpleTypeDefinition("string"));
-    }
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java
deleted file mode 100644
index 006cfd6..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/TypesHelper.java
+++ /dev/null
@@ -1,714 +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.util;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import org.eclipse.xsd.XSDAttributeDeclaration;
-import org.eclipse.xsd.XSDAttributeGroupDefinition;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDImport;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSchemaContent;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.impl.XSDImportImpl;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-public class TypesHelper
-{
-  XSDSchema xsdSchema;
-  Vector list = new Vector();
-
-  public TypesHelper(XSDSchema xsdSchema)
-  {
-    this.xsdSchema = xsdSchema;
-  }
-
-  public void updateExternalImportGlobals()
-  {
-    if (xsdSchema != null)
-    {
-      Iterator contents = xsdSchema.getContents().iterator();
-      while (contents.hasNext())
-      {
-        XSDSchemaContent content = (XSDSchemaContent) contents.next();
-        if (content instanceof XSDImportImpl)
-        {
-          XSDImportImpl anImport = (XSDImportImpl) content;
-          try
-          {
-            if (anImport.getSchemaLocation() != null)
-            {
-              anImport.importSchema();
-            }
-          }
-          catch (Exception e)
-          {
-            
-          }
-        }
-      }
-    }
-  }
-
-
-  private Vector addExternalImportedGlobalElements(Vector items)
-  {
-    if (xsdSchema != null)
-    {
-      Iterator contents = xsdSchema.getContents().iterator();
-      while (contents.hasNext())
-      {
-        XSDSchemaContent content = (XSDSchemaContent) contents.next();
-        if (content instanceof XSDImportImpl)
-        {
-          XSDImportImpl anImport = (XSDImportImpl) content;
-
-          XSDSchema impSchema = anImport.getResolvedSchema();
-
-          try
-          {
-            if (impSchema == null)
-            {
-              impSchema = anImport.importSchema();
-            }
-          }
-          catch (Exception e)
-          {
-            
-          }
-
-          if (impSchema != null)
-          {
-            Iterator i = impSchema.getElementDeclarations().iterator();
-            while (i.hasNext())
-            {
-              XSDElementDeclaration anElement = (XSDElementDeclaration) i.next();
-              if (anElement.getName() != null)
-              {
-                items.addAll(getPrefixedNames(anElement.getTargetNamespace(), anElement.getName()));
-              }
-            }
-          }
-        }
-      }
-    }
-    return items;
-  }
-
-  private Vector addExternalImportedAttributes(Vector items)
-  {
-    if (xsdSchema != null)
-    {
-      Iterator contents = xsdSchema.getContents().iterator();
-      while (contents.hasNext())
-      {
-        XSDSchemaContent content = (XSDSchemaContent) contents.next();
-        if (content instanceof XSDImportImpl)
-        {
-          XSDImportImpl anImport = (XSDImportImpl) content;
-
-          XSDSchema impSchema = anImport.getResolvedSchema();
-
-          try
-          {
-            if (impSchema == null)
-            {
-              impSchema = anImport.importSchema();
-            }
-          }
-          catch (Exception e)
-          {
-            
-          }
-
-          if (impSchema != null)
-          {
-            Iterator i = impSchema.getAttributeDeclarations().iterator();
-            while (i.hasNext())
-            {
-              XSDAttributeDeclaration attrib = (XSDAttributeDeclaration) i.next();
-              if (attrib.getName() != null)
-              {
-                items.addAll(getPrefixedNames(attrib.getTargetNamespace(), attrib.getName()));
-              }
-            }
-          }
-        }
-      }
-    }
-    return items;
-  }
-
-  private Vector addExternalImportedAttributeGroups(Vector items)
-  {
-    if (xsdSchema != null)
-    {
-      Iterator contents = xsdSchema.getContents().iterator();
-      while (contents.hasNext())
-      {
-        XSDSchemaContent content = (XSDSchemaContent) contents.next();
-        if (content instanceof XSDImportImpl)
-        {
-          XSDImportImpl anImport = (XSDImportImpl) content;
-
-          XSDSchema impSchema = anImport.getResolvedSchema();
-
-          try
-          {
-            if (impSchema == null)
-            {
-              impSchema = anImport.importSchema();
-            }
-          }
-          catch (Exception e)
-          {
-            
-          }
-
-          if (impSchema != null)
-          {
-            Iterator i = impSchema.getAttributeGroupDefinitions().iterator();
-            while (i.hasNext())
-            {
-              XSDAttributeGroupDefinition attrib = (XSDAttributeGroupDefinition) i.next();
-              if (attrib.getName() != null)
-              {
-                items.addAll(getPrefixedNames(attrib.getTargetNamespace(), attrib.getName()));
-              }
-            }
-          }
-        }
-      }
-    }
-    return items;
-  }
-
-  private Vector addExternalImportedGroups(Vector items)
-  {
-    if (xsdSchema != null)
-    {
-      Iterator contents = xsdSchema.getContents().iterator();
-      while (contents.hasNext())
-      {
-        XSDSchemaContent content = (XSDSchemaContent) contents.next();
-        if (content instanceof XSDImportImpl)
-        {
-          XSDImportImpl anImport = (XSDImportImpl) content;
-
-          XSDSchema impSchema = anImport.getResolvedSchema();
-
-          try
-          {
-            if (impSchema == null)
-            {
-              impSchema = anImport.importSchema();
-            }
-          }
-          catch (Exception e)
-          {
-          }
-
-          if (impSchema != null)
-          {
-            Iterator i = impSchema.getModelGroupDefinitions().iterator();
-            while (i.hasNext())
-            {
-              XSDModelGroupDefinition aGroup = (XSDModelGroupDefinition) i.next();
-              if (aGroup.getName() != null)
-              {
-                items.addAll(getPrefixedNames(aGroup.getTargetNamespace(), aGroup.getName()));
-              }
-            }
-          }
-        }
-      }
-    }
-    return items;
-  }
-
-  public java.util.List getBuiltInTypeNamesList()
-  {
-    Vector items = new Vector();
-    if (xsdSchema != null)
-    {
-      String xsdForXSDPrefix = xsdSchema.getSchemaForSchemaQNamePrefix();
-      if (xsdForXSDPrefix != null && xsdForXSDPrefix.length() > 0)
-      {
-        xsdForXSDPrefix = xsdForXSDPrefix + ":";
-      }
-      else
-      {
-        xsdForXSDPrefix = "";
-      }
-
-      for (int i = 0; i < XSDDOMHelper.dataType.length; i++)
-      {
-        items.add(xsdForXSDPrefix + XSDDOMHelper.dataType[i][0]);
-      }
-    }
-    return items;
-  }
-  
-  public java.util.List getBuiltInTypeNamesList2()
-  {
-    List result = new ArrayList();
-    if (xsdSchema != null)
-    {
-      List prefixes = getPrefixesForNamespace(xsdSchema.getSchemaForSchemaNamespace());
-      for (int i = 0; i < XSDDOMHelper.dataType.length; i++)
-      {
-        for (Iterator j = prefixes.iterator(); j.hasNext();)
-        {
-          String prefix = (String) j.next();
-          String localName = XSDDOMHelper.dataType[i][0]; 
-          String prefixedName = (prefix != null && prefix.length() > 0) ? prefix + ":" + localName : localName; 
-          result.add(prefixedName);
-        }
-      }
-    }
-    return result;
-  }
-
-  public java.util.List getUserSimpleTypeNamesList()
-  {
-    Vector items = new Vector();
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      Iterator i = xsdSchema.getTypeDefinitions().iterator();
-      while (i.hasNext())
-      {
-        XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
-        if (typeDefinition instanceof XSDSimpleTypeDefinition)
-        {
-          items.addAll(getPrefixedNames(typeDefinition.getTargetNamespace(), typeDefinition.getName()));
-          //System.out.println(typeDefinition.getQName(xsdSchema));
-          //items.add(typeDefinition.getQName(xsdSchema));
-        }
-      }
-      items.add(getPrefix(xsdSchema.getSchemaForSchemaNamespace(), true) + "anyType");
-      
-      //      items = addExternalImportedUserSimpleTypes(items);
-      items = (Vector) sortList(items);
-    }
-    return items;
-  }
-
-  public java.util.List getUserComplexTypeNamesList()
-  {
-    Vector items = new Vector();
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      Iterator i = xsdSchema.getTypeDefinitions().iterator();
-      while (i.hasNext())
-      {
-        XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
-        if (typeDefinition instanceof XSDComplexTypeDefinition)
-        {
-			    items.addAll(getPrefixedNames(typeDefinition.getTargetNamespace(), typeDefinition.getName()));         
-        }
-      }
-      items = (Vector) sortList(items);
-    }
-    return items;
-  }
-  
-  public java.util.List getUserSimpleTypes()
-  {
-    Vector items = new Vector();
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      Iterator i = xsdSchema.getTypeDefinitions().iterator();
-      while (i.hasNext())
-      {
-        XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
-        if (typeDefinition instanceof XSDSimpleTypeDefinition)
-        {
-          items.add(typeDefinition);
-          //System.out.println(typeDefinition.getQName(xsdSchema));
-          //items.add(typeDefinition.getQName(xsdSchema));
-        }
-      }
-      // We need to add the anyType
-//      items.add(getPrefix(xsdSchema.getSchemaForSchemaNamespace(), true) + "anyType");
-      
-      //      items = addExternalImportedUserSimpleTypes(items);
-      //items = (Vector) sortList(items);
-    }
-    return items;
-  }
-
-  public String getPrefix(String ns, boolean withColon)
-  {
-    String key = "";
-
-    if (xsdSchema != null)
-    {
-      Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-      Iterator iter = map.keySet().iterator();
-      while (iter.hasNext())
-      {
-        Object keyObj = iter.next();
-        Object value = map.get(keyObj);
-        if (value != null && value.toString().equals(ns))
-        {
-          if (keyObj != null)
-          {
-            key = keyObj.toString();
-          }
-          else
-          {
-            key = "";
-          }
-          break;
-        }
-      }
-      if (!key.equals(""))
-      {
-        if (withColon)
-        {
-          key = key + ":";
-        }
-      }
-    }
-    return key;
-  }
-
-  public java.util.List getUserComplexTypes()
-  {
-    Vector items = new Vector();
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      Iterator i = xsdSchema.getTypeDefinitions().iterator();
-      while (i.hasNext())
-      {
-        XSDTypeDefinition typeDefinition = (XSDTypeDefinition) i.next();
-        if (typeDefinition instanceof XSDComplexTypeDefinition)
-        {
-			    items.add(typeDefinition);         
-        }
-      }
-    }
-    return items;
-  }
-  
-  public java.util.List getGlobalElements()
-  {
-    Vector items = new Vector();
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      if (xsdSchema.getElementDeclarations() != null)
-      {
-        Iterator i = xsdSchema.getElementDeclarations().iterator();
-        while (i.hasNext())
-        {
-          XSDElementDeclaration elementDeclaration = (XSDElementDeclaration) i.next();
-          String name = elementDeclaration.getQName(xsdSchema);
-          if (name != null)
-          {
-            items.add(name);
-          }
-        }
-      }
-      //      items = addExternalImportedGlobalElements(items);
-      items = (Vector) sortList(items);
-    }
-    return items;
-  }
-
-  public String getGlobalElement(XSDSchema relativeComponent)
-  {
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      if (xsdSchema.getElementDeclarations() != null)
-      {
-        Iterator i = xsdSchema.getElementDeclarations().iterator();
-        while (i.hasNext()) // just get the first one
-        {
-          XSDElementDeclaration elementDeclaration = (XSDElementDeclaration) i.next();
-          if (elementDeclaration.getQName(relativeComponent) != null)
-          {
-            return elementDeclaration.getQName(relativeComponent);
-          }
-        }
-      }
-
-      Vector items = new Vector();
-      items = addExternalImportedGlobalElements(items);
-      if (items != null && items.size() > 0)
-      {
-        return items.get(0).toString();
-      }
-    }
-    return null; // for disabling menu
-  }
-
-  public java.util.List getGlobalAttributes()
-  {
-    Vector items = new Vector();
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      if (xsdSchema.getAttributeDeclarations() != null)
-      {
-        Iterator i = xsdSchema.getAttributeDeclarations().iterator();
-        while (i.hasNext())
-        {
-          XSDAttributeDeclaration attributeDeclaration = (XSDAttributeDeclaration) i.next();
-          if (attributeDeclaration.getTargetNamespace() == null || (attributeDeclaration.getTargetNamespace() != null && !attributeDeclaration.getTargetNamespace().equals(XSDConstants.SCHEMA_INSTANCE_URI_2001)))
-          {
-            String name = attributeDeclaration.getQName(xsdSchema);
-            if (name != null)
-            {
-              items.add(name);
-            }
-          }
-        }
-      }
-      //      items = addExternalImportedAttributes(items);
-      items = (Vector) sortList(items);
-    }
-    return items;
-  }
-
-  public String getGlobalAttribute(XSDSchema relativeComponent)
-  {
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      if (xsdSchema.getAttributeDeclarations() != null)
-      {
-        Iterator i = xsdSchema.getAttributeDeclarations().iterator();
-        while (i.hasNext()) // just get the first one
-        {
-          XSDAttributeDeclaration attributeDeclaration = (XSDAttributeDeclaration) i.next();
-          // Filter out attributes from the schema namespace
-          if (!(attributeDeclaration.getTargetNamespace().equals(XSDConstants.SCHEMA_INSTANCE_URI_2001)))
-          {
-            if (attributeDeclaration.getQName(relativeComponent) != null)
-            {
-              return attributeDeclaration.getQName(relativeComponent);
-            }
-          }
-        }
-      }
-
-      Vector items = new Vector();
-      items = addExternalImportedAttributes(items);
-      if (items != null && items.size() > 0)
-      {
-        return items.get(0).toString();
-      }
-    }
-    return null; // for disabling menu
-  }
-
-  public java.util.List getGlobalAttributeGroups()
-  {
-    Vector items = new Vector();
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      if (xsdSchema.getAttributeGroupDefinitions() != null)
-      {
-        Iterator i = xsdSchema.getAttributeGroupDefinitions().iterator();
-        while (i.hasNext())
-        {
-          XSDAttributeGroupDefinition attributeGroupDefinition = (XSDAttributeGroupDefinition) i.next();
-          String name = attributeGroupDefinition.getQName(xsdSchema);
-          if (name != null)
-          {
-            items.add(name);
-          }
-        }
-      }
-      //      items = addExternalImportedAttributeGroups(items);
-      items = (Vector) sortList(items);
-    }
-    return items;
-  }
-
-  public String getGlobalAttributeGroup(XSDSchema relativeComponent)
-  {
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      if (xsdSchema.getAttributeGroupDefinitions() != null)
-      {
-        Iterator i = xsdSchema.getAttributeGroupDefinitions().iterator();
-        while (i.hasNext()) // just get the first one
-        {
-          XSDAttributeGroupDefinition attributeGroupDefinition = (XSDAttributeGroupDefinition) i.next();
-          if (attributeGroupDefinition.getQName(relativeComponent) != null)
-          {
-            return attributeGroupDefinition.getQName(relativeComponent);
-          }
-        }
-      }
-
-      Vector items = new Vector();
-      items = addExternalImportedAttributeGroups(items);
-      if (items != null && items.size() > 0)
-      {
-        return items.get(0).toString();
-      }
-    }
-    return null; // for disabling menu
-  }
-
-  public java.util.List getModelGroups()
-  {
-    Vector items = new Vector();
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      if (xsdSchema.getModelGroupDefinitions() != null)
-      {
-        Iterator i = xsdSchema.getModelGroupDefinitions().iterator();
-        while (i.hasNext())
-        {
-          XSDModelGroupDefinition modelGroupDefinition = (XSDModelGroupDefinition) i.next();
-          String name = modelGroupDefinition.getQName(xsdSchema);
-          if (name != null)
-          {
-            items.add(name);
-          }
-        }
-      }
-      //      items = addExternalImportedGroups(items);
-      items = (Vector) sortList(items);
-    }
-    return items;
-  }
-
-  public static java.util.List sortList(java.util.List types)
-  {
-    try
-    {
-      java.util.Collections.sort(types); // performance?  n*log(n)
-    }
-    catch (Exception e)
-    {
-//      XSDEditorPlugin.getPlugin().getMsgLogger().write("Sort failed");
-    }
-    return types;
-  }
-
-  public String getModelGroup(XSDSchema relativeComponent)
-  {
-    if (xsdSchema != null)
-    {
-      updateExternalImportGlobals();
-      if (xsdSchema.getModelGroupDefinitions() != null)
-      {
-        Iterator i = xsdSchema.getModelGroupDefinitions().iterator();
-        while (i.hasNext()) // just get the first one
-        {
-          XSDModelGroupDefinition modelGroupDefinition = (XSDModelGroupDefinition) i.next();
-          if (modelGroupDefinition.getQName(relativeComponent) != null)
-          {
-            return modelGroupDefinition.getQName(relativeComponent);
-          }
-        }
-      }
-
-      Vector items = new Vector();
-      items = addExternalImportedGroups(items);
-      if (items != null && items.size() > 0)
-      {
-        return items.get(0).toString();
-      }
-    }
-    return null; // for disabling menu
-  }
-
-  public void updateMapAfterDelete(XSDImport deletedNode)
-  {
-    String ns = deletedNode.getNamespace();
-    if (ns != null)
-    {
-      String prefix = getPrefix(ns, false);
-      if (prefix != null)
-      {
-        prefix = prefix.trim();
-      }
-      String xmlnsAttr = (prefix == "") ? "xmlns" : "xmlns:" + prefix;
-
-      if (prefix == "")
-      {
-        prefix = null;
-      }
-
-      if (xsdSchema != null)
-      {
-        Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-        map.remove(prefix);
-        Element schemaElement = xsdSchema.getElement();
-        schemaElement.removeAttribute(xmlnsAttr);
-      }
-    }
-  }
-
-  public List getPrefixedNames(String namespace, String localName)
-  {
-    List list = new ArrayList();
-    if (namespace == null)
-    {
-      namespace = "";    			
-    }
-    if (xsdSchema != null && localName != null)
-    {
-      List prefixes = getPrefixesForNamespace(namespace);
-      for (Iterator i = prefixes.iterator(); i.hasNext(); )
-      {
-      	String prefix = (String)i.next();
-      	if (prefix == null) prefix = "";
-        String prefixedName = prefix.length() > 0 ? prefix + ":" + localName : localName;
-        list.add(prefixedName);               
-      }
-      if (prefixes.size() == 0)
-      {
-        list.add(localName);
-      }
-    }
-    return list;
-  }
-  
-  protected List getPrefixesForNamespace(String namespace)
-  {
-    List list = new ArrayList();
-    Map map = xsdSchema.getQNamePrefixToNamespaceMap();
-    for (Iterator iter = map.keySet().iterator(); iter.hasNext();)
-    {
-      String prefix = (String) iter.next();
-      Object value = map.get(prefix);
-      if (value != null && value.toString().equals(namespace))
-      {
-       list.add(prefix);
-      }
-    }
-    return list;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java
deleted file mode 100644
index 3e71a8a..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/ViewUtility.java
+++ /dev/null
@@ -1,429 +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.util;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.Text;
-
-public class ViewUtility
-{
-  private static Font font;
-
-  public static Font getFont()
-  {
-    if (font == null)
-    {              
-      font = new Font(Display.getCurrent(), "ms sans serif", 8, SWT.NORMAL);  
-    }
-    return font;
-  }
-
-  public static void setFont(Font newFont)
-  {
-    font = newFont;
-  }
-
-  public static void setComposite(Composite comp)
-  {
-    // deprecated.  Remove later
-  }
-  public static Composite createComposite(Composite parent, int numColumns)
-  {
-    Composite composite = new Composite(parent, SWT.NONE);
-
-    composite.setFont(getFont());
-
-    GridLayout layout = new GridLayout();
-    layout.numColumns = numColumns;
-    composite.setLayout(layout);
-
-    GridData data = new GridData();
-    data.verticalAlignment = GridData.FILL;
-    data.horizontalAlignment = GridData.FILL;
-    composite.setLayoutData(data);
-    return composite;
-  }
-
-  public static Composite createComposite(Composite parent, int numColumns, boolean horizontalFill)
-  {
-    if (!horizontalFill)
-    {
-      createComposite(parent, numColumns);
-    }
-
-    Composite composite = new Composite(parent, SWT.NONE);
-
-    composite.setFont(getFont());
-
-    GridLayout layout = new GridLayout();
-    layout.numColumns = numColumns;
-    composite.setLayout(layout);
-
-    GridData data = new GridData();
-    data.verticalAlignment = GridData.FILL;
-    data.horizontalAlignment = GridData.FILL;
-    data.grabExcessHorizontalSpace = true;
-    composite.setLayoutData(data);
-
-    return composite;
-  }
-
-  public static Composite createComposite(Composite parent, int numColumns, boolean horizontalFill, boolean verticalFill)
-  {
-    if (!horizontalFill && !verticalFill)
-    {
-      createComposite(parent, numColumns);
-    }
-
-    Composite composite = new Composite(parent, SWT.NONE);
-
-    composite.setFont(getFont());
-
-    GridLayout layout = new GridLayout();
-    layout.numColumns = numColumns;
-    composite.setLayout(layout);
-
-    GridData data = new GridData();
-    data.verticalAlignment = GridData.FILL;
-    data.horizontalAlignment = GridData.FILL;
-    data.grabExcessHorizontalSpace = true;
-    data.grabExcessVerticalSpace = true;
-    composite.setLayoutData(data);
-
-    return composite;
-  }
-
-  public static Label createHorizontalFiller(Composite parent, int horizontalSpan) 
-  {
-    Label label = new Label(parent, SWT.LEFT);
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    data.horizontalSpan = horizontalSpan;
-    label.setLayoutData(data);
-    return label;
-  }
-
-  /**
-   * Helper method for creating labels.
-   */
-  public static Label createLabel(Composite parent, String text) 
-  {
-    Label label = new Label(parent, SWT.LEFT);
-    label.setText(text);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    label.setLayoutData(data);
-    return label;
-  }
-
-	public Label createLabel(Composite parent, int style, String text)
-	{
-		Label label = new Label(parent, style);
-//		setColor(label);
-		label.setText(text);
-
-		GridData data = new GridData();
-		data.horizontalAlignment = GridData.FILL;
-		label.setLayoutData(data);
-		return label;
-	}
-  
-  public static Label createLabel(Composite parent, String text, int alignment)
-  {
-    Label label = new Label(parent, SWT.LEFT);
-    label.setText(text);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    data.verticalAlignment = alignment;
-    label.setLayoutData(data);
-    return label;
-  }
-
-  /**
-   * Helper method for creating buttons.
-   */
-  public static Button createPushButton(Composite parent, String label) 
-  {
-    Button button = new Button(parent, SWT.PUSH);
-    button.setText(label);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    button.setLayoutData(data);
-
-    return button;
-  }
-
-  public static Table createTable(Composite parent)
-  {
-    Table table = new Table(parent, SWT.SINGLE | SWT.BORDER);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    data.grabExcessHorizontalSpace = true;
-    table.setLayoutData(data);
-
-    return table;
-  }
-
-  /**
-   * Create radio button
-   */
-  public static Button createRadioButton(Composite parent, String label)
-  {
-    Button button = new Button(parent, SWT.RADIO);
-    button.setText(label);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    button.setLayoutData(data);
-
-    return button;
-  }
-
-  /**
-   * Helper method for creating check box
-   */
-  public static Button createCheckBox(Composite parent, String label) 
-  {
-    Button button = new Button(parent, SWT.CHECK);
-    button.setText(label);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    button.setLayoutData(data);
-    return button;
-  }
-
-  public static Combo createComboBox(Composite parent)
-  {
-    return createComboBox(parent, true);
-  }
-
-  public static Combo createComboBox(Composite parent, boolean isReadOnly)
-  {
-    int style = isReadOnly == true ? SWT.READ_ONLY : SWT.DROP_DOWN;
-
-    Combo combo = new Combo(parent, style);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    data.grabExcessHorizontalSpace = true;
-    combo.setLayoutData(data);
-    return combo;
-  }
-
-  public static List createListBox(Composite parent, int width, boolean isMultiSelect)
-  {
-    int style = isMultiSelect ? SWT.MULTI : SWT.SINGLE;
-    List list = new List(parent, style | SWT.BORDER);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    data.grabExcessHorizontalSpace = true;
-    data.widthHint = width;
-    list.setLayoutData(data);
-
-    return list;
-  }
-
-  public static List createListBox(Composite parent, int style)
-  {
-    List list = new List(parent, style);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    data.verticalAlignment = GridData.FILL;
-    data.grabExcessHorizontalSpace = true;
-    data.grabExcessVerticalSpace = true;
-    list.setLayoutData(data);
-
-    return list;
-  }
-
-	public Text createTextField(Composite parent)
-	{
-		Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
-		GridData data = new GridData();
-		data.horizontalAlignment = GridData.FILL;
-		data.verticalAlignment = GridData.FILL;
-		data.grabExcessHorizontalSpace = true;
-		text.setLayoutData(data);
-//		text.addKeyListener(keyboardHandler);
-		return text;
-	}
-  
-  public static Text createTextField(Composite parent, int width)
-  {
-    Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    data.grabExcessHorizontalSpace = true;
-    data.widthHint = width;
-    text.setLayoutData(data);
-
-    return text;
-  }
-
-  /**
-   * <code>createWrappedMultiTextField</code> creates a wrapped multitext field
-   *
-   * @param parent a <code>Composite</code> value
-   * @param width an <code>int</code> value
-   * @param numLines an <code>int</code> value representing number of characters in height
-   * @param verticalFill a <code>boolean</code> value
-   * @return a <code>Text</code> value
-   */
-  public static Text createWrappedMultiTextField(Composite parent, int width, int numLines, boolean verticalFill)
-  {
-    Text text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    data.grabExcessHorizontalSpace = true;
-    if (verticalFill)
-    {
-      data.verticalAlignment = GridData.FILL;
-      data.grabExcessVerticalSpace = true;
-    }      
-    data.widthHint = width;
-    FontData[] fontData = getFont().getFontData();
-    // hack for now where on Windows, only 1 fontdata exists
-    data.heightHint = numLines * fontData[0].getHeight();
-    text.setLayoutData(data);
-
-    return text;
-  }
-
-  public static Text createMultiTextField(Composite parent, int width, int height, boolean verticalFill)
-  {
-    Text text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    data.grabExcessHorizontalSpace = true;
-    if (verticalFill)
-    {
-      data.verticalAlignment = GridData.FILL;
-      data.grabExcessVerticalSpace = true;
-    }      
-    data.widthHint = width;
-    data.heightHint = height;
-    text.setLayoutData(data);
-
-    return text;
-  }
-
-  public static Group createGroup(Composite parent, int numColumns, String text, boolean verticalFill) 
-  {
-    Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
-    group.setText(text);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    data.grabExcessHorizontalSpace = true;
-    if (verticalFill)
-    {
-      data.verticalAlignment = GridData.FILL;
-      data.grabExcessVerticalSpace = true;
-    }      
-    group.setLayoutData(data);
-
-    GridLayout layout = new GridLayout();
-    layout.numColumns = numColumns;
-    group.setLayout(layout);
-    return group;
-  }
-
- public static Group createGroup(Composite parent, int numColumns, String text, boolean verticalFill, int alignment) 
-  {
-    Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
-    group.setText(text);
-
-    GridData data = new GridData();
-    data.horizontalAlignment = GridData.FILL;
-    data.grabExcessHorizontalSpace = true;
-    data.verticalAlignment = alignment;
-    if (verticalFill)
-    {
-      data.verticalAlignment = GridData.FILL;
-      data.grabExcessVerticalSpace = true;
-    }      
-    group.setLayoutData(data);
-
-    GridLayout layout = new GridLayout();
-    layout.numColumns = numColumns;
-    group.setLayout(layout);
-    return group;
-  }
-
-  public static Label createVerticalFiller(Composite parent, int verticalSpan) 
-  {
-    Label label = new Label(parent, SWT.LEFT);
-    label.setFont(getFont());
-
-    GridData data = new GridData();
-    data.verticalAlignment = GridData.FILL;
-    data.verticalSpan = verticalSpan;
-    label.setLayoutData(data);
-
-    return label;
-  }
-
-  /**
-   * Creates a grid data object that occupies vertical and horizontal
-   * space.
-   */
-  static public GridData createFill()
-  {
-    GridData gd= new GridData();
-    gd.horizontalAlignment= GridData.FILL;
-    gd.grabExcessHorizontalSpace= true;
-    gd.verticalAlignment= GridData.FILL;
-    gd.grabExcessVerticalSpace= true;
-    return gd;
-  }
-  /**
-   * Creates a grid data object that occupies horizontal space.
-   */
-  static public GridData createHorizontalFill()
-  {
-    GridData gd= new GridData();
-    gd.horizontalAlignment= GridData.FILL;
-    gd.grabExcessHorizontalSpace= true;
-    return gd;
-  }
-  /**
-   * Creates a grid data object that occupies vertical space.
-   */
-  static public GridData createVerticalFill()
-  {
-    GridData gd= new GridData();
-    gd.verticalAlignment= GridData.FILL;
-    gd.grabExcessVerticalSpace= true;
-    return gd;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java
deleted file mode 100644
index 8d18a11..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDDOMHelper.java
+++ /dev/null
@@ -1,1136 +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.util;
-
-import java.util.ArrayList;
-
-import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
-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.xsd.util.XSDConstants;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-
-public class XSDDOMHelper
-{
-  public static final int LENGTH_FACET        =  1;
-  public static final int MIN_LENGTH_FACET    =  2;
-  public static final int MAX_LENGTH_FACET    =  3;
-  public static final int PATTERN_FACET       =  4;
-  public static final int ENUM_FACET          =  5;
-  public static final int WHITE_SPACE_FACET   =  6;
-
-  public static final int MAX_INCLUSIVE_FACET =  7;
-  public static final int MAX_EXCLUSIVE_FACET =  8;
-  public static final int MIN_INCLUSIVE_FACET =  9;
-  public static final int MIN_EXCLUSIVE_FACET =  10;
-
-  public static final int TOTAL_DIGITS_FACET     = 11;
-  public static final int FRACTION_DIGITS_FACET  = 12;
-
-  public static final int N_FACETS            = 13;
-
-  public static String[][] dataType =
-  {
-    //
-    // Table format:
-    // Type
-    //  Length, MinLength, MaxLength, Pattern, Enumeration,whiteSpace
-    //  MaxInclusive, MaxExclusive, MinInclusive, MinExclusive, TotalDigits, FractionDigits
-    //
-
-    // 0
-    { "anySimpleType",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 1
-    { "anyType",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-
-    // 2
-    { "anyURI",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 3
-    { "base64Binary",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 4
-    { "boolean",
-        "N", "N", "N", "Y", "N", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 5
-    { "byte",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 6
-    { "date",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "N", "N",
-    },
-
-    // 7
-    { "dateTime",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "N", "N",
-    },
-
-    // 8
-    { "decimal",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-
-    // 9
-    { "double",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "N", "N",
-    },
-
-    // 10
-    { "duration",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "N", "N",
-    },
-
-    // 11
-    { "ENTITY",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 12
-    { "ENTITIES",
-        "Y", "Y", "Y", "N", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 13
-    { "float",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "N", "N",
-    },
-
-    // 14
-    { "gDay",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "N", "N",
-    },
-
-    // 15
-    { "gMonth",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "N", "N",
-    },
-
-    // 16
-    { "gMonthDay",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "N", "N",
-    },
-
-    // 17
-    { "gYear",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "N", "N",
-    },
-
-    // 18
-    { "gYearMonth",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "N", "N",
-    },
-
-    // 19
-    { "hexBinary",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 20
-    { "ID",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 21
-    { "IDREF",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 22
-    { "IDREFS",
-        "Y", "Y", "Y", "N", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 23
-    { "int",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 24
-    { "integer",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 25
-    { "language",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 26
-    { "long",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 27
-    { "Name",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-
-    // 28
-    { "NCName",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 29
-    { "negativeInteger",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 30
-    { "NMTOKEN",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 31
-    { "NMTOKENS",
-        "Y", "Y", "Y", "N", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 32
-    { "nonNegativeInteger",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 33
-    { "nonPositiveInteger",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 34
-    { "normalizedString",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-
-    },
-
-    // 35
-    { "NOTATION",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-
-    },
-
-    // 36
-    { "positiveInteger",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 37
-    { "QName",
-        "N", "N", "N", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 38
-    { "short",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 39
-    { "string",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 40
-    { "time",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "N", "N",
-    },
-
-    // 41
-    { "token",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-        "N", "N", "N", "N", "N", "N",
-    },
-
-    // 42
-    { "unsignedByte",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 43
-    { "unsignedInt",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 44
-    { "unsignedLong",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-    // 45
-    { "unsignedShort",
-        "N", "N", "N", "Y", "Y", "Y",
-        "Y", "Y", "Y", "Y", "Y", "Y",
-    },
-
-  };
-
-  public static String XMLSchemaURI = "http://www.w3.org/2001/XMLSchema";
-
-  /**
-   * Constructor for XSDDOMHelper.
-   */
-  public XSDDOMHelper()
-  {
-    super();
-  }
-
-  public Node getChildNode(Element parent, String childName)
-  {
-/*    NodeList nodeList = parent.getElementsByTagNameNS(XMLSchemaURI, childName);
-    if (nodeList.getLength() > 0)
-      return nodeList.item(0);
-    return null;
-*/
-    NodeList list = null;
-    if (parent != null)
-    {
-      list = parent.getChildNodes();
-    }
-
-    if (list != null)
-    {
-      // Performance issue perhaps?
-      for (int i = 0; i < list.getLength(); i++)
-      {
-        if (list.item(i) instanceof Element)
-        {
-          if (list.item(i).getLocalName().equals(childName))
-          {
-            return list.item(i);
-          }
-        }
-      }
-    }
-    return null;
-  }
-
-  public static String SIMPLE_TYPE = "Simple";
-  public static String USER_SIMPLE_TYPE = "simpleType";
-  public static String USER_COMPLEX_TYPE = "complexType";
-/*
-  public void setElementType(Element element, String type)
-  {
-    Document doc = element.getOwnerDocument();
-    if (type.equals(SIMPLE_TYPE))
-    {
-      removeChild(element, USER_SIMPLE_TYPE);
-      removeChild(element, USER_COMPLEX_TYPE);
-      element.setAttribute("type","xsd:string");
-      return;
-    }
-    else if (type.equals(USER_SIMPLE_TYPE))
-    {
-      removeChild(element, USER_COMPLEX_TYPE);
-    }
-    else
-    {
-      removeChild(element, USER_SIMPLE_TYPE);
-    }
-    element.removeAttribute("type");
-    element.appendChild(doc.createElement("xsd:"+type));
-  }
-
-  public String getElementType(Element element)
-  {
-    String tagName = element.getLocalName();
-
-    if (tagName.equals(XSDConstants.ELEMENT_ELEMENT_TAG) ||
-        tagName.equals(XSDConstants.ATTRIBUTE_ELEMENT_TAG))
-    {
-      if (element.hasAttribute("type"))
-      {
-        return SIMPLE_TYPE;
-      }
-      NodeList nodes = element.getElementsByTagNameNS(XMLSchemaURI, USER_SIMPLE_TYPE);
-      if (nodes.getLength() > 0)
-      {
-        return USER_SIMPLE_TYPE;
-      }
-      nodes = element.getElementsByTagNameNS(XMLSchemaURI, USER_COMPLEX_TYPE);
-      if (nodes.getLength() > 0)
-      {
-        return USER_COMPLEX_TYPE;
-      }
-    }
-    return "";
-  }
-*/
-  public void removeDerivedByElement(Element element)
-  {
-    removeChild(element, XSDConstants.RESTRICTION_ELEMENT_TAG);
-    removeChild(element, XSDConstants.EXTENSION_ELEMENT_TAG);
-  }
-
-  public String getBaseType(Element element) // for SimpleContent and ComplexContent
-  {
-    Node restrictionChild = getChildNode(element, "restriction");
-    Node extensionChild = getChildNode(element, "extension");
-    String baseType = "";
-    if (restrictionChild != null)
-    {
-      if (restrictionChild instanceof Element)
-      {
-        baseType = ((Element)restrictionChild).getAttribute("base");
-//        String prefix = element.getPrefix();
-//        if (prefix != null && prefix.length() > 0)
-//        {
-//          baseType = baseType.substring(baseType.indexOf(prefix) + prefix.length() + 1);
-//        }
-      }
-    }
-    else if (extensionChild != null) // should be one or the other
-    {
-      if (extensionChild instanceof Element)
-      {
-        baseType = ((Element)extensionChild).getAttribute("base");
-//        String prefix = element.getPrefix();
-//        if (prefix != null && prefix.length() > 0)
-//        {
-//          baseType = baseType.substring(baseType.indexOf(prefix) + prefix.length() + 1);
-//        }
-      }
-    }
-    return baseType;
-  }
-
-  public void setDerivedByBaseType(Element element, String derivedByType, String type)
-  {
-    Document doc = element.getOwnerDocument();
-
-    Element derivedByElement = getDerivedByElement(element);
-    if (derivedByElement != null)
-    {
-      derivedByElement.setAttribute("base", type);
-    }
-    else  // there really should be one already...base is required.
-    {
-      Element newElement = doc.createElement(derivedByType);
-      newElement.setAttribute("base", type);
-      element.appendChild(newElement);
-    }
-  }
-
-  public void changeDerivedByType(Element element, String derivedByType, String type)
-  {
-    Document doc = element.getOwnerDocument();
-
-    String prefix = element.getPrefix();
-    prefix = prefix == null ? "" : prefix + ":";
-
-    Element derivedByElement = getDerivedByElement(element);
-    
-    if (derivedByElement != null && derivedByElement.getLocalName().equals(derivedByType))
-    {
-    	return; // it's already the derived by type
-    }
-    Element newNode;
-  	if (derivedByType.equals("restriction"))
-  	{
-    	newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.RESTRICTION_ELEMENT_TAG);
-    }
-    else
-    {
-    	newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.EXTENSION_ELEMENT_TAG);
-    }
-	
-    newNode.setAttribute("base", type);
-
-    if (derivedByElement != null)
-    {
-      if (derivedByElement.hasChildNodes())
-      {        
-        NodeList nodes = derivedByElement.getChildNodes();
-        // use clones so we don't have a refresh problem
-        for (int i = 0; i < nodes.getLength(); i++)
-        {
-          Node node = nodes.item(i);       
-          newNode.appendChild(node.cloneNode(true));
-        }
-      }
-	  element.replaceChild(newNode, derivedByElement);
-    }
-    else 
-	{
-		Element parent = (Element) element.getParentNode();				// get back to complexType
-        NodeList nodes = parent.getChildNodes();
-		ArrayList nodeSaveList = new ArrayList();
-		
-		// save children. (nodes turns out to be the same object as parent;
-		// deleting them from parent will delete them from nodes.)
-        for (int i = 0; i < nodes.getLength(); i++)			
-        {
-          Node node = nodes.item(i);      
-		  nodeSaveList.add(node);
-        }
-
-        // remove children so we can surround them by complexContent
-        for (int i = 0; i < nodeSaveList.size(); i++)			
-        {
-          Node node = (Node) nodeSaveList.get(i);      
-          parent.removeChild(node);
-        }
-		
-		// build a complexContent element
-		Element complexContent = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + XSDConstants.COMPLEXCONTENT_ELEMENT_TAG);
-		parent.appendChild(complexContent);					// insert into complexType
-		complexContent.appendChild(newNode);				// insert derivation type
-        for (int i = 0; i < nodeSaveList.size(); i++)			// insert children previously of complexType
-        {
-          Node node = (Node) nodeSaveList.get(i);       
-          newNode.appendChild(node.cloneNode(true));
-        }
-		
-		parent.appendChild(complexContent);
-		formatChild(complexContent);
-    }
-  }
-
-  public void setSimpleContentType(Element element, String type)
-  {
-    String contentTypeName = element.getLocalName();
-
-    if (contentTypeName.equals(XSDConstants.UNION_ELEMENT_TAG))
-    {
-      element.setAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE, type);
-    }
-    else if (contentTypeName.equals(XSDConstants.LIST_ELEMENT_TAG))
-    {
-      element.setAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE, type);
-    }
-    else if (contentTypeName.equals(XSDConstants.RESTRICTION_ELEMENT_TAG))
-    {
-      element.setAttribute(XSDConstants.BASE_ATTRIBUTE, type);
-    }
-  }
-
-  public void removeSimpleTypeContent(Element element)
-  {
-    String contentTypeName = element.getLocalName();
-    if (contentTypeName.equals(XSDConstants.UNION_ELEMENT_TAG))
-    {
-      element.removeAttribute(XSDConstants.MEMBERTYPES_ATTRIBUTE);
-    }
-    else if (contentTypeName.equals(XSDConstants.LIST_ELEMENT_TAG))
-    {
-      element.removeAttribute(XSDConstants.ITEMTYPE_ATTRIBUTE);
-    }
-    else if (contentTypeName.equals(XSDConstants.RESTRICTION_ELEMENT_TAG))
-    {
-      element.removeAttribute(XSDConstants.BASE_ATTRIBUTE);
-    }
-  }
-
-  public String getDerivedByName(Element element)
-  {
-    Node restrictionChild = getChildNode(element, "restriction");
-    Node extensionChild = getChildNode(element, "extension");
-    if (restrictionChild != null)
-    {
-      return "restriction";
-    }
-    if (extensionChild != null)
-    {
-      return "extension";
-    }
-    return "";
-  }
-
-  /**
-   * Get the derived by node given the complexContent or simpleContent node
-   */
-  public Element getDerivedByElement(Element element)
-  {
-    Node restrictionChild = getChildNode(element, "restriction");
-    Node extensionChild = getChildNode(element, "extension");
-    if (restrictionChild != null)
-    {
-      if (restrictionChild instanceof Element)
-      {
-        return (Element)restrictionChild;
-      }
-    }
-    
-    if (extensionChild != null)
-    {
-      if (extensionChild instanceof Element)
-      {
-        return (Element)extensionChild;
-      }
-    }
-    return null;
-  }
-
-  /**
-   * Get the derived by node given the ComplexType node
-   * Returns the first one, if say, the INVALID schema has more than one
-   */
-  public Element getDerivedByElementFromComplexType(Element element)
-  {
-    NodeList nl = element.getChildNodes();
-    int j = 0;
-    for (j = 0; j < nl.getLength(); j++)
-    {
-      Node aNode = nl.item(j);
-      if (inputEquals(aNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-      {
-        break; 
-      }
-      else if (inputEquals(aNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
-      {
-        break;
-      }
-    }
-    Element derivedByNode = getDerivedByElement((Element)nl.item(j));
-    return derivedByNode;
-  }
-
-  /**
-   * Get the content model given the ComplexType node
-   * Returns the first one, if say, the INVALID schema has more than one
-   */
-  public Element getContentModelFromParent(Element element)
-  {
-    NodeList nl = element.getChildNodes();
-    int j = 0;
-    boolean modelExists = false;
-    int length = nl.getLength();
-    for (j = 0; j < length; j++)
-    {
-      Node aNode = nl.item(j);
-      if (inputEquals(aNode, XSDConstants.COMPLEXCONTENT_ELEMENT_TAG, false))
-      {
-        modelExists = true;
-        break; 
-      }
-      else if (inputEquals(aNode, XSDConstants.SIMPLECONTENT_ELEMENT_TAG, false))
-      {
-        modelExists = true;
-        break;
-      }
-      else if (inputEquals(aNode, XSDConstants.SEQUENCE_ELEMENT_TAG, false))
-      {
-        modelExists = true;
-        break;
-      }
-      else if (inputEquals(aNode, XSDConstants.CHOICE_ELEMENT_TAG, false))
-      {
-        modelExists = true;
-        break;
-      }
-      else if (inputEquals(aNode, XSDConstants.ALL_ELEMENT_TAG, false))
-      {
-        modelExists = true;
-        break;
-      }
-    }
-    if (!modelExists)
-    {
-      return null;
-    }
-
-    Element derivedByNode = (Element)nl.item(j);
-    return derivedByNode;
-  }
-
-  /**
-   * 
-   */
-  public void changeContentModel(Element complexTypeElement, String contentModel, Element sequenceChoiceOrAllElement)
-  {
-    Document doc = complexTypeElement.getOwnerDocument();
-
-    String prefix = complexTypeElement.getPrefix();
-    prefix = prefix == null ? "" : prefix + ":";
-    
-    Element contentModelElement = getContentModelFromParent(complexTypeElement);
-
-    if (contentModelElement.getLocalName().equals(contentModel))
-    {
-      return; // it's already the content model 
-    }
-    Element newNode;
-    newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + contentModel);
-
-    if (contentModelElement.hasChildNodes())
-    {        
-      NodeList nodes = contentModelElement.getChildNodes();
-      // use clones so we don't have a refresh problem
-      for (int i = 0; i < nodes.getLength(); i++)
-      {
-        Node node = nodes.item(i);
-        if (node instanceof Element)
-        {
-          if (node.getLocalName().equals(XSDConstants.ANNOTATION_ELEMENT_TAG))
-          {
-            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)))
-            {
-              newNode.appendChild(node.cloneNode(true));
-            }
-          }
-          else if (node.getLocalName().equals(XSDConstants.RESTRICTION_ELEMENT_TAG) ||
-                    node.getLocalName().equals(XSDConstants.EXTENSION_ELEMENT_TAG))
-          {
-            newNode.appendChild(node.cloneNode(true));
-            if (sequenceChoiceOrAllElement != null)
-            {
-              node.appendChild(sequenceChoiceOrAllElement);
-            }
-          }
-          else
-          {
-            removeNodeAndWhitespace(node);
-          }
-        }
-        else
-        {
-          newNode.appendChild(node.cloneNode(true)); 
-        }
-      }
-    }
-    complexTypeElement.replaceChild(newNode, contentModelElement);
-  }
-
-  public Element cloneElement(Element parent, Element sourceNode)
-  {
-    Document doc = parent.getOwnerDocument();
-    String prefix = parent.getPrefix();
-    prefix = prefix == null ? "" : prefix + ":";
-    
-    Element newNode = doc.createElementNS(XSDDOMHelper.XMLSchemaURI, prefix + sourceNode.getLocalName());
-
-    if (sourceNode.hasChildNodes())
-    {        
-      NodeList nodes = sourceNode.getChildNodes();
-      // use clones so we don't have a refresh problem
-      for (int i = 0; i < nodes.getLength(); i++)
-      {
-        Node node = nodes.item(i);
-        newNode.appendChild(node.cloneNode(true));
-      }
-    }
-    return newNode;
-//    parent.replaceChild(newNode, sourceNode);
-  }
-
-  public boolean hasElementChildren(Element parentNode)
-  {
-    boolean hasChildrenElements = false;
-    if (parentNode != null && parentNode.hasChildNodes())
-    {
-      NodeList nodes = parentNode.getChildNodes();
-      for (int i = 0; i < nodes.getLength(); i++)
-      {
-        if (nodes.item(i) instanceof Element)
-        {
-          hasChildrenElements = true;
-          break;
-        }
-      }
-    }
-    return hasChildrenElements;
-  }
-
-  public void removeChild(Element node, String childName)
-  {
-    Node child = getChildNode(node,childName);
-    if (child != null)
-    {
-      node.removeChild(child);
-    }
-  }
-
-  public static boolean isFacet(Object obj)
-  {
-    if (XSDDOMHelper.inputEquals(obj, XSDConstants.LENGTH_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(obj, XSDConstants.MINLENGTH_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(obj, XSDConstants.MAXLENGTH_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(obj, XSDConstants.WHITESPACE_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(obj, XSDConstants.MAXINCLUSIVE_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(obj, XSDConstants.MAXEXCLUSIVE_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(obj, XSDConstants.MININCLUSIVE_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(obj, XSDConstants.MINEXCLUSIVE_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(obj, XSDConstants.TOTALDIGITS_ELEMENT_TAG, false) ||
-        XSDDOMHelper.inputEquals(obj, XSDConstants.FRACTIONDIGITS_ELEMENT_TAG, false))
-    {
-      return true;
-    }
-    return false;
-  }
-
-  public static void removeNodeAndWhitespace(Node node)
-  {
-    Node parentNode = node.getParentNode();
-    
-    Node nextElement = getNextElementNode(node);
-    Node previousElement = getPreviousElementNode(node);
-
-    Node nextSibling = node.getNextSibling();
-    if (nextSibling instanceof Text)
-    {
-      parentNode.removeChild(nextSibling);
-    }
-
-    if (parentNode != null)
-    {
-		  parentNode.removeChild(node);
-    }
-
-    if (nextElement != null)
-    {
-			formatChild(nextElement);
-    }
-
-		if (previousElement != null)
-		{
-			formatChild(previousElement);
-		}
-  }
-
-	public static void formatChild(Node 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 static Node getLastElementNode(Node parent)
-  {
-    Node lastChild = parent.getLastChild();
-    
-    while (!(lastChild instanceof Element) && lastChild != null)
-    {
-      lastChild = lastChild.getPreviousSibling();
-    }
-    return lastChild;
-  }
-
-  public static Node getNextElementNode(Node node)
-  {
-    Node next = node.getNextSibling();
-    
-    while (!(next instanceof Element) && next != null)
-    {
-      next = next.getNextSibling();
-    }
-    if (next instanceof Text)
-    {
-    	return null;
-    }
-    return next;
-  }
-
-	public static Node getPreviousElementNode(Node node)
-	{
-		Node previous = node.getPreviousSibling();
-    
-		while (!(previous instanceof Element) && previous != null)
-		{
-			previous = previous.getPreviousSibling();
-		}
-    if (previous instanceof Text)
-    {
-      return null;
-    }
-    return previous;
-	}
-
-  public static void moveNode(Node referenceNode, Node nodeToMove, boolean isBefore)
-  {
-    // this assumes that the referenceNode and node to move have the same parent
-    Node parent = referenceNode.getParentNode();
-
-    // Get reference nodes next and previous text strings
-    String referenceNodeNextString = "";
-    String referenceNodePreviousString = "";
-    if (referenceNode != null)
-    {
-      Node referenceNodeNextSibling = referenceNode.getNextSibling();
-      Node referenceNodePreviousSibling = referenceNode.getPreviousSibling();
-      if (referenceNodeNextSibling instanceof Text)
-      {
-        referenceNodeNextString = ((Text)referenceNodeNextSibling).getData();
-      }
-      if (referenceNodePreviousSibling instanceof Text)
-      {
-        referenceNodePreviousString = ((Text)referenceNodePreviousSibling).getData();
-      }
-    }
-    // Get the dragged node's next and previous text strings
-    Node nodeToMoveNextSibling = nodeToMove.getNextSibling();
-    Node nodeToMovePreviousSibling = nodeToMove.getPreviousSibling();
-    Node nodeToMoveNextText = null;
-    String nodeToMoveNextString = "";
-    String nodeToMovePreviousString = "";
-    if (nodeToMoveNextSibling instanceof Text)
-    {
-      nodeToMoveNextText = (Text)nodeToMoveNextSibling;
-      nodeToMoveNextString = ((Text)nodeToMoveNextSibling).getData();
-    }
-    if (nodeToMovePreviousSibling instanceof Text)
-    {
-      nodeToMovePreviousString = ((Text)nodeToMovePreviousSibling).getData();
-    }
-
-    // Get the last element's next and previous text strings
-    Node lastElement = getLastElementNode(parent);
-    Node lastElementNextSibling = lastElement.getNextSibling();
-    Node lastElementPreviousSibling = lastElement.getPreviousSibling();
-    String lastElementNextString = "";
-    String lastElementPreviousString = "";		
-    if (lastElementNextSibling instanceof Text)
-    {
-      lastElementNextString = ((Text)lastElementNextSibling).getData();
-    }
-    if (lastElementPreviousSibling instanceof Text)
-    {
-      lastElementPreviousString = ((Text)lastElementPreviousSibling).getData();
-    }
-
-    boolean isLastElement = false; // whether the last element is dragged/moved
-    if (lastElement == nodeToMove)
-    {
-      isLastElement = true;
-    }
-		
-    // defect 221056 this test is required or else the node will
-    // be removed from the tree and the insert will fail
-    if (referenceNode != nodeToMove)
-    {
-      parent.removeChild(nodeToMove);
-      if (referenceNode != null)
-      {
-        if (!isBefore)
-        {
-          referenceNode = getNextElementNode(referenceNode);
-//        referenceNode = referenceNode.getNextSibling();
-        }
-      }
-
-      if (referenceNode != null)
-      {
-        insertBefore(nodeToMove, referenceNode);
-      }
-      else
-      {
-        parent.appendChild(nodeToMove);
-      }
-
-      Node newLastElement = getLastElementNode(parent);
-      if (referenceNode != null)
-      {
-        if (referenceNode != newLastElement) 
-        {
-          if (!isLastElement)
-          {
-            setTextData(referenceNode, nodeToMoveNextString, nodeToMovePreviousString);
-          }
-        }
-        setTextData(nodeToMove, referenceNodeNextString, referenceNodePreviousString);
-      }
-      // Remove the empty space left by the dragged node
-      if (nodeToMoveNextText != null)
-      {
-    	  parent.removeChild(nodeToMoveNextText);
-      }
-      // special case for the last element
-      if ((newLastElement == nodeToMove) || isLastElement)
-      {
-        setTextData(newLastElement, lastElementNextString, lastElementPreviousString);
-      }
-    }
-  }
-
-  public static void setTextData(Node target, String nextText, String previousText)
-  {
-    Node parent = target.getParentNode();
-    Node nextSibling = target.getNextSibling();
-    Node previousSibling = target.getPreviousSibling();
-    if (nextSibling instanceof Text)
-    {
-      ((Text)nextSibling).setData(nextText);	
-    }
-    if (nextSibling == null || nextSibling instanceof Element)
-    {
-      Text textNode = parent.getOwnerDocument().createTextNode("");
-      textNode.setData(nextText);
-      if (nextSibling != null)
-      {
-        parent.insertBefore(textNode, nextSibling);
-      }
-      else
-      {
-        parent.insertBefore(textNode, getNextElementNode(target));
-      }
-    }				
-
-    if (previousSibling instanceof Text)
-    {
-      ((Text)previousSibling).setData(previousText);
-    }
-    if (previousSibling == null || previousSibling instanceof Element)
-    {
-      Text textNode = parent.getOwnerDocument().createTextNode("");
-      textNode.setData(previousText);
-      parent.insertBefore(textNode, target);
-    }				
-  }
-
-  public static void insertBefore(Node nodeToInsert, Node referenceNode)
-  {
-    // this assumes that the referenceNode and node to move have the same parent
-    Node parent = referenceNode.getParentNode();
-    parent.insertBefore(nodeToInsert, referenceNode);
-  }
-
-  public static boolean inputEquals(Object input, String tagname, boolean isRef)
-  {
-    if (input instanceof Element)
-    {
-      Element element = (Element) input;
-      if (element.getLocalName().equals(tagname))
-      {
-        boolean refPresent = element.hasAttribute("ref");
-
-        return refPresent == isRef;
-      }
-    }
-    return false;
-  }
-
-  public static void updateElementToNotAnonymous(Element element)
-  {
-    if (element != null)
-    {
-      NodeList children = element.getChildNodes();
-      if (children != null)
-      {
-        for (int i = 0; i < children.getLength(); i++)
-        {
-          Node node = (Node)children.item(i);
-          if (node instanceof Element)
-          {
-            if (node.getLocalName().equals(XSDConstants.SIMPLETYPE_ELEMENT_TAG) ||
-                node.getLocalName().equals(XSDConstants.COMPLEXTYPE_ELEMENT_TAG))
-            {
-              XSDDOMHelper.removeNodeAndWhitespace(node);
-              i=0;
-            }
-          }
-        }
-      }
-    }
-  }
-  
-  public static boolean isAttributeRef(Element ct, String attrName, String ns)
-  {
-    NodeList list = ct.getChildNodes();
-    int length = list.getLength();
-    for (int i = 0; i < length; i++)
-    {
-      if (list.item(i) instanceof Element)
-      {
-        Element aChild = (Element)list.item(i);
-        if (aChild.getLocalName().equals(XSDConstants.ATTRIBUTE_ELEMENT_TAG))
-        {
-          if (aChild.hasAttribute(XSDConstants.REF_ATTRIBUTE))
-          {
-            String refValue = aChild.getAttribute(XSDConstants.REF_ATTRIBUTE);
-            if (refValue.equals(attrName))
-            {
-              return true;
-            }
-          }
-        }
-      }
-      
-    }
-    
-    return false;
-  }
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaHelper.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaHelper.java
deleted file mode 100644
index a57e619..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/XSDSchemaHelper.java
+++ /dev/null
@@ -1,72 +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.util;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.emf.ecore.EReference;
-import org.eclipse.xsd.XSDConcreteComponent;
-
-// TODO: KC remove this
-
-public class XSDSchemaHelper
-{
-  /**
-   * Constructor for XSDSchemaHelper.
-   */
-  public XSDSchemaHelper()
-  {
-    super();
-  }
-  
-  public static void updateElement(XSDConcreteComponent concreteComp)
-  {
-    try
-    {
-      concreteComp.updateElement();
-    }
-    catch (Exception e)
-    {
-      for (Iterator containments = concreteComp.eClass().getEAllReferences().iterator(); containments.hasNext(); )
-      {
-        EReference eReference = (EReference)containments.next();
-        if (eReference.isContainment())
-        {
-          if (eReference.isMany())
-          {
-            for (Iterator objects = ((Collection)concreteComp.eGet(eReference)).iterator(); objects.hasNext(); )
-            {
-              XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)objects.next();
-              try
-              {
-                xsdConcreteComponent.updateElement();
-              }
-              catch (Exception ex) {}
-            }
-          }
-          else
-          {
-            XSDConcreteComponent xsdConcreteComponent = (XSDConcreteComponent)concreteComp.eGet(eReference);
-            if (xsdConcreteComponent != null)
-            {
-              try
-              {
-                xsdConcreteComponent.updateElement();
-              }
-              catch (Exception ex) {}
-            }
-          }
-        }
-      }
-    }
-  }    
-}
diff --git a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/SetBaseTypeDialog.java b/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/SetBaseTypeDialog.java
deleted file mode 100644
index 21c32ab..0000000
--- a/bundles/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/widgets/SetBaseTypeDialog.java
+++ /dev/null
@@ -1,178 +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.widgets;
-
-import java.util.ArrayList;
-
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-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.ViewUtility;
-import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.util.XSDConstants;
-import org.w3c.dom.Element;
-
-
-
-public class SetBaseTypeDialog extends Dialog implements SelectionListener
-{
-  protected Combo baseTypeCombo;
-  protected Combo derivedByCombo;
-  protected XSDSchema xsdSchema;
-  protected Element element;  // the complex type element
-  private String type = "";
-  private String derivedByString = "";
-  
-  /**
-   * Constructor for SetBaseTypeDialog.
-   * @param arg0
-   */
-  public SetBaseTypeDialog(Shell arg0, XSDSchema xsdSchema, Element element)
-  {
-    super(arg0);
-    this.xsdSchema = xsdSchema;
-    this.element = element;
-  }
-
-  protected void configureShell(Shell shell)
-  {
-    super.configureShell(shell);
-    shell.setText(XSDEditorPlugin.getXSDString("_UI_LABEL_SET_BASE_TYPE"));
-  }
-
-
-  protected void buttonPressed(int buttonId)
-  {
-    if (buttonId == Dialog.OK)
-    {
-      type = baseTypeCombo.getText();
-      derivedByString = derivedByCombo.getText();
-    }
-    super.buttonPressed(buttonId);
-  }
-  
-  public String getBaseType()
-  {
-    return type;
-  }
-
-  public String getDerivedBy()
-  {
-    return derivedByString;
-  }
-  
-  public void setCurrentBaseType(String type)
-  {
-    this.type = type;
-  }
-  
-  public void setCurrentDerivedBy(String derivedByString)
-  {
-    this.derivedByString = derivedByString;
-  }
-
-  //
-  // Create the controls
-  //
-  public Control createDialogArea(Composite parent)
-  {
-    Composite nameComposite = (Composite)super.createDialogArea(parent);
-    GridLayout layout = (GridLayout)nameComposite.getLayout();
-    layout.numColumns = 2;
-    nameComposite.setLayout(layout); 
-
-    ViewUtility.createLabel(nameComposite, XSDEditorPlugin.getXSDString("_UI_LABEL_BASE_TYPE_WITH_COLON"));
-    baseTypeCombo = ViewUtility.createComboBox(nameComposite, true); // readonly
-    baseTypeCombo.addSelectionListener(this);
-    
-    ViewUtility.createLabel(nameComposite, XSDEditorPlugin.getXSDString("_UI_LABEL_DERIVED_BY")); 
-    derivedByCombo = ViewUtility.createComboBox(nameComposite, true); // readonly
-
-    derivedByCombo.add(XSDConstants.EXTENSION_ELEMENT_TAG);
-    derivedByCombo.add(XSDConstants.RESTRICTION_ELEMENT_TAG);
-    derivedByCombo.setText(derivedByString);
-    initializeBaseTypeCombo();
-
-    if (type.equals(""))
-    {
-      derivedByCombo.setText("");
-      derivedByCombo.setEnabled(false);
-    }
-        
-    return nameComposite;
-  }
-
-  private void initializeBaseTypeCombo()
-  {
-    ArrayList list = new ArrayList();
-    TypesHelper helper = new TypesHelper(xsdSchema);
-
-    String prefix = helper.getPrefix(xsdSchema.getTargetNamespace(), true);
-
-    list.add("");
-    list.addAll(helper.getBuiltInTypeNamesList());
-    list.addAll(helper.getUserSimpleTypeNamesList());
-    list.addAll(helper.getUserComplexTypeNamesList());
-
-    // remove the current CT from the list
-    list.remove(prefix + element.getAttribute("name"));
-
-    baseTypeCombo.removeAll();
-    for (int i = 0; i < list.size(); i++)
-    {
-      baseTypeCombo.add(list.get(i).toString());
-    }
-    baseTypeCombo.setText(type);
-    handleBaseTypeComboChange();
-  }
-  
-  private void handleBaseTypeComboChange()
-  {
-    String tempChoice = baseTypeCombo.getText();
-    TypesHelper helper = new TypesHelper(xsdSchema);
-    if (helper.getBuiltInTypeNamesList().contains(tempChoice) ||
-        helper.getUserSimpleTypeNamesList().contains(tempChoice))
-    {
-      derivedByCombo.setText(XSDConstants.EXTENSION_ELEMENT_TAG);
-      derivedByCombo.setEnabled(false);
-    }
-    else if (helper.getUserComplexTypeNamesList().contains(tempChoice))
-    {
-      derivedByCombo.setEnabled(true); 
-    }
-    else
-    {
-      derivedByCombo.setText("");
-      derivedByCombo.setEnabled(false); 
-    }
-  }
-
-  public void widgetSelected(SelectionEvent e)
-  {
-    if (e.widget == baseTypeCombo)
-    {
-      handleBaseTypeComboChange();
-    }
-    
-  }
-
-  public void widgetDefaultSelected(SelectionEvent e)
-  {
-    
-  }
-}