diff options
author | pfullbright | 2011-01-20 21:49:48 +0000 |
---|---|---|
committer | pfullbright | 2011-01-20 21:49:48 +0000 |
commit | f144f3beaa055d40afeaa7529ca730db730d95cf (patch) | |
tree | 9ecb5303609d6a7018ecb2d9fd7ea65265bf4367 /jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse | |
parent | dced8c69af13de9d7bf3eff5e6f19a452991d949 (diff) | |
download | webtools.dali-f144f3beaa055d40afeaa7529ca730db730d95cf.tar.gz webtools.dali-f144f3beaa055d40afeaa7529ca730db730d95cf.tar.xz webtools.dali-f144f3beaa055d40afeaa7529ca730db730d95cf.zip |
attempted to add content assist for @XmlSchema - waiting on bug 326610
Diffstat (limited to 'jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse')
3 files changed, 77 insertions, 11 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/XmlSchema.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/XmlSchema.java index 5409f66620..0014e3b831 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/XmlSchema.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/context/XmlSchema.java @@ -9,6 +9,7 @@ ******************************************************************************/ package org.eclipse.jpt.jaxb.core.context; +import org.eclipse.jpt.jaxb.core.context.java.JavaContextNode; import org.eclipse.jpt.utility.internal.iterables.ListIterable; /** @@ -24,7 +25,7 @@ import org.eclipse.jpt.utility.internal.iterables.ListIterable; * @since 3.0 */ public interface XmlSchema - extends JaxbContextNode { + extends JavaContextNode { /** * Return the specified namespace or "" (default value) diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java index 5d62edf7fb..924c8fde7b 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java @@ -27,6 +27,9 @@ import org.eclipse.jpt.jaxb.core.resource.java.XmlAccessorOrderAnnotation; import org.eclipse.jpt.jaxb.core.resource.java.XmlAccessorTypeAnnotation; import org.eclipse.jpt.jaxb.core.resource.java.XmlJavaTypeAdapterAnnotation; import org.eclipse.jpt.jaxb.core.resource.java.XmlSchemaTypeAnnotation; +import org.eclipse.jpt.utility.Filter; +import org.eclipse.jpt.utility.internal.CollectionTools; +import org.eclipse.jpt.utility.internal.iterables.EmptyIterable; import org.eclipse.jpt.utility.internal.iterables.ListIterable; import org.eclipse.jst.j2ee.model.internal.validation.ValidationCancelledException; import org.eclipse.wst.validation.internal.provisional.core.IMessage; @@ -252,10 +255,34 @@ public class GenericJavaPackageInfo protected CompilationUnit buildASTRoot() { return this.resourcePackage.getJavaResourceCompilationUnit().buildASTRoot(); } + + + // **************** content assist **************************************** + + @Override + public Iterable<String> javaCompletionProposals( + int pos, Filter<String> filter, CompilationUnit astRoot) { + Iterable<String> result = super.javaCompletionProposals(pos, filter, astRoot); + if (! CollectionTools.isEmpty(result)) { + return result; + } + + result = this.xmlSchema.javaCompletionProposals(pos, filter, astRoot); + if (! CollectionTools.isEmpty(result)) { + return result; + } + + return EmptyIterable.instance(); + } // **************** validation ******************************************** + @Override + public TextRange getValidationTextRange(CompilationUnit astRoot) { + return this.resourcePackage.getNameTextRange(astRoot); + } + public void validate(List<IMessage> messages, IReporter reporter) { if (reporter.isCancelled()) { throw new ValidationCancelledException(); @@ -271,21 +298,17 @@ public class GenericJavaPackageInfo this.validate(messages, reporter, this.buildASTRoot()); } } - - @Override - public TextRange getValidationTextRange(CompilationUnit astRoot) { - return this.resourcePackage.getNameTextRange(astRoot); - } - + @Override public void validate(List<IMessage> messages, IReporter reporter, CompilationUnit astRoot) { super.validate(messages, reporter, astRoot); + for (XmlJavaTypeAdapter adapter : getXmlJavaTypeAdapters()) { adapter.validate(messages, reporter, astRoot); } } - - + + /** * xml schema type container */ diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlSchema.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlSchema.java index 99aaae30ec..f82fbe025f 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlSchema.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaXmlSchema.java @@ -9,18 +9,24 @@ ******************************************************************************/ package org.eclipse.jpt.jaxb.core.internal.context.java; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jpt.core.utility.TextRange; import org.eclipse.jpt.jaxb.core.context.JaxbPackageInfo; import org.eclipse.jpt.jaxb.core.context.XmlNs; import org.eclipse.jpt.jaxb.core.context.XmlNsForm; import org.eclipse.jpt.jaxb.core.context.XmlSchema; -import org.eclipse.jpt.jaxb.core.internal.context.AbstractJaxbContextNode; import org.eclipse.jpt.jaxb.core.resource.java.JavaResourcePackage; import org.eclipse.jpt.jaxb.core.resource.java.XmlNsAnnotation; import org.eclipse.jpt.jaxb.core.resource.java.XmlSchemaAnnotation; +import org.eclipse.jpt.utility.Filter; +import org.eclipse.jpt.utility.internal.CollectionTools; +import org.eclipse.jpt.utility.internal.StringTools; +import org.eclipse.jpt.utility.internal.iterables.EmptyIterable; +import org.eclipse.jpt.utility.internal.iterables.FilteringIterable; import org.eclipse.jpt.utility.internal.iterables.ListIterable; public class GenericJavaXmlSchema - extends AbstractJaxbContextNode + extends AbstractJavaContextNode implements XmlSchema { protected String specifiedNamespace; @@ -212,6 +218,42 @@ public class GenericJavaXmlSchema } + // **************** content assist **************************************** + + @Override + public Iterable<String> javaCompletionProposals( + int pos, Filter<String> filter, CompilationUnit astRoot) { + Iterable<String> result = super.javaCompletionProposals(pos, filter, astRoot); + if (! CollectionTools.isEmpty(result)) { + return result; + } + + if (namespaceTouches(pos, astRoot)) { + return namespaceProposals(filter); + } + + return EmptyIterable.instance(); + } + + protected boolean namespaceTouches(int pos, CompilationUnit astRoot) { + return getXmlSchemaAnnotation().namespaceTouches(pos, astRoot); + } + + protected Iterable<String> namespaceProposals(Filter<String> filter) { + return StringTools.convertToJavaStringLiterals( + new FilteringIterable<String>( + getJaxbProject().getSchemaLibrary().getSchemaLocations().keySet(), filter)); + } + + + // **************** validation ******************************************** + + @Override + public TextRange getValidationTextRange(CompilationUnit astRoot) { + return getXmlSchemaAnnotation().getTextRange(astRoot); + } + + /** * xml ns prefix container adapter */ |