[433112] The parent of a schema should be the resource
diff --git a/features/org.eclipse.xsd.edit-feature/feature.xml b/features/org.eclipse.xsd.edit-feature/feature.xml
index 22311d7..dc2d42b 100644
--- a/features/org.eclipse.xsd.edit-feature/feature.xml
+++ b/features/org.eclipse.xsd.edit-feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.xsd.edit"
       label="%featureName"
-      version="2.7.0.qualifier"
+      version="2.8.0.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.xsd.license"
       license-feature-version="2.7.0.qualifier">
diff --git a/features/org.eclipse.xsd.editor-feature/feature.xml b/features/org.eclipse.xsd.editor-feature/feature.xml
index 3d2fa19..af51af0 100644
--- a/features/org.eclipse.xsd.editor-feature/feature.xml
+++ b/features/org.eclipse.xsd.editor-feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.xsd.editor"
       label="%featureName"
-      version="2.7.0.qualifier"
+      version="2.8.0.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.xsd.license"
       license-feature-version="2.7.0.qualifier">
diff --git a/plugins/org.eclipse.xsd.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.xsd.edit/META-INF/MANIFEST.MF
index d51ac88..eeb6a04 100644
--- a/plugins/org.eclipse.xsd.edit/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.xsd.edit/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.xsd.edit; singleton:=true
-Bundle-Version: 2.6.0.qualifier
+Bundle-Version: 2.7.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.xsd.provider.XSDEditPlugin$Implementation
 Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDItemProviderAdapter.java b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDItemProviderAdapter.java
index 353959c..86746e3 100644
--- a/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDItemProviderAdapter.java
+++ b/plugins/org.eclipse.xsd.edit/src/org/eclipse/xsd/provider/XSDItemProviderAdapter.java
@@ -87,7 +87,8 @@
   @Override
   public Object getParent(Object object)
   {
-    EObject parent = ((EObject)object).eContainer();
+    EObject eObject = (EObject)object;
+    EObject parent = eObject.eContainer();
     if (parent != null)
     {
       EObject grandParent = parent.eContainer();
@@ -97,6 +98,10 @@
         return grandParent;
       }
     }
+    if (parent == null)
+    {
+      return eObject.eResource();
+    }
     return parent;
   }
 
diff --git a/plugins/org.eclipse.xsd.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.xsd.editor/META-INF/MANIFEST.MF
index 95574e6..eede910 100644
--- a/plugins/org.eclipse.xsd.editor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.xsd.editor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.xsd.editor; singleton:=true
-Bundle-Version: 2.6.0.qualifier
+Bundle-Version: 2.7.0.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.xsd.presentation.XSDEditorPlugin$Implementation
 Bundle-Vendor: %providerName
diff --git a/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDEditor.java b/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDEditor.java
index 8820a5a..9f830e4 100644
--- a/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDEditor.java
+++ b/plugins/org.eclipse.xsd.editor/src/org/eclipse/xsd/presentation/XSDEditor.java
@@ -29,7 +29,6 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.xml.sax.helpers.DefaultHandler;
-
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IMarker;
@@ -104,7 +103,7 @@
 import org.eclipse.ui.views.properties.IPropertySource;
 import org.eclipse.ui.views.properties.PropertySheet;
 import org.eclipse.ui.views.properties.PropertySheetPage;
-
+import org.eclipse.emf.common.command.AbstractCommand;
 import org.eclipse.emf.common.command.BasicCommandStack;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.common.command.CommandStack;
@@ -132,6 +131,7 @@
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.domain.IEditingDomainProvider;
 import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
 import org.eclipse.emf.edit.provider.IDisposable;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.IItemPropertySource;
@@ -150,7 +150,6 @@
 import org.eclipse.emf.edit.ui.provider.PropertySource;
 import org.eclipse.emf.edit.ui.util.EditUIUtil;
 import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
-
 import org.eclipse.xsd.XSDAttributeDeclaration;
 import org.eclipse.xsd.XSDAttributeGroupDefinition;
 import org.eclipse.xsd.XSDAttributeUse;
@@ -194,14 +193,14 @@
   protected AdapterFactoryEditingDomain editingDomain;
 
   /**
-   * This is the adapter factory used for providing the syntactive views of the model.
+   * This is the adapter factory used for providing the syntactic views of the model.
    */
-  protected XSDItemProviderAdapterFactory syntacticAdapterFactory;
+  protected ComposedAdapterFactory syntacticAdapterFactory;
 
   /**
    * This is the adapter factory used for providing the semantic views of the model.
    */
-  protected XSDItemProviderAdapterFactory semanticAdapterFactory;
+  protected ComposedAdapterFactory semanticAdapterFactory;
 
   /**
    * This is the content outline page.
@@ -322,8 +321,10 @@
 
     // Create an adapter factory that yields item providers.
     //
-    syntacticAdapterFactory = new XSDItemProviderAdapterFactory();
-    semanticAdapterFactory = new XSDSemanticItemProviderAdapterFactory();
+    syntacticAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+    syntacticAdapterFactory.addAdapterFactory(new XSDItemProviderAdapterFactory());
+    semanticAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+    semanticAdapterFactory.addAdapterFactory(new XSDSemanticItemProviderAdapterFactory());
 
     // Create the command stack that will notify this editor as commands are executed.
     //
@@ -351,7 +352,10 @@
                     setSelectionToViewer(mostRecentCommand.getAffectedObjects());
                   }
 
-                  handleStructuredModelChange();
+                  if (!(mostRecentCommand instanceof AbstractCommand.NonDirtying))
+                  {
+                    handleStructuredModelChange();
+                  }
 
                   updateActions();
 
@@ -495,11 +499,25 @@
         {
           public void run()
           {
+            Viewer viewer = currentViewer;
+            if (viewer == sourceViewer)
+            {
+              if (contentOutlineViewer != null && !contentOutlineViewer.getControl().isDisposed())
+              {
+                viewer = contentOutlineViewer;
+              }
+            }
+
             // Try to select the items in the current content viewer of the editor.
             //
-            if (currentViewer != null)
+            if (viewer != null)
             {
-              currentViewer.setSelection(new StructuredSelection(collection.toArray()), true);
+              StructuredSelection selection = new StructuredSelection(collection.toArray());
+              viewer.setSelection(selection, true);
+              if (currentViewer == sourceViewer)
+              {
+                handleContentOutlineSelectionForTextEditor(selection, true);
+              }
             }
           }
         };