[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);
+ }
}
}
};