Bug 577378: [Ltk-Model] Improve extensible element/source struct content
provider
- Make use of source struct content provider also for root element
Change-Id: I3d5df37582b925016e590983e11e34981f334241
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ExtModelContentProvider.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ExtModelContentProvider.java
index bc61bcf..912f2d6 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ExtModelContentProvider.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/util/ExtModelContentProvider.java
@@ -147,9 +147,7 @@
protected @NonNull SourceStructElement<?, ?>[] getElements(final @Nullable SourceUnitModelInfo modelInfo) {
if (modelInfo != null) {
- final var children= modelInfo.getSourceElement()
- .getSourceChildren(getContent().getContentFilter());
- return children.toArray(new @NonNull SourceStructElement[children.size()]);
+ return getChildren(modelInfo.getSourceElement());
}
return NO_CHILDREN;
}
@@ -162,10 +160,7 @@
return parent;
}
- protected boolean hasChildren(@Nullable SourceStructElement<?, ?> element) {
- if (skipToForeignElement(element)) {
- element= ((EmbeddingForeignElement<?, ?>)element).getForeignElement();
- }
+ protected boolean hasChildren(@Nullable final SourceStructElement<?, ?> element) {
SourceStructContentProvider provider;
if (element != null) {
if ((provider= getSourceStructContentProvider(element.getModelTypeId())) != null) {
@@ -178,10 +173,7 @@
return false;
}
- protected @NonNull SourceStructElement<?, ?>[] getChildren(@Nullable SourceStructElement<?, ?> element) {
- if (skipToForeignElement(element)) {
- element= ((EmbeddingForeignElement<?, ?>)element).getForeignElement();
- }
+ protected @NonNull SourceStructElement<?, ?>[] getChildren(@Nullable final SourceStructElement<?, ?> element) {
SourceStructContentProvider provider;
if (element != null) {
try {
@@ -220,7 +212,11 @@
@Override
public boolean hasChildren(final Object element) {
if (element instanceof SourceStructElement) {
- return hasChildren((SourceStructElement<?, ?>)element);
+ var sourceElement= (SourceStructElement<?, ?>)element;
+ if (skipToForeignElement(sourceElement)) {
+ sourceElement= ((EmbeddingForeignElement<?, ?>)element).getForeignElement();
+ }
+ return hasChildren(sourceElement);
}
return false;
}
@@ -228,7 +224,11 @@
@Override
public @NonNull Object[] getChildren(final Object element) {
if (element instanceof SourceStructElement) {
- return getChildren((SourceStructElement<?, ?>)element);
+ var sourceElement= (SourceStructElement<?, ?>)element;
+ if (skipToForeignElement(sourceElement)) {
+ sourceElement= ((EmbeddingForeignElement<?, ?>)element).getForeignElement();
+ }
+ return getChildren(sourceElement);
}
return NO_CHILDREN;
}