KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > hibernate > eclipse > mapper > extractor > JavaTypeHandler


1 /**
2  *
3  */

4 package org.hibernate.eclipse.mapper.extractor;
5
6 import org.eclipse.jdt.core.IJavaElement;
7 import org.eclipse.jdt.core.IJavaProject;
8 import org.eclipse.jdt.core.IType;
9 import org.eclipse.jdt.core.JavaModelException;
10 import org.eclipse.jdt.core.eval.IEvaluationContext;
11 import org.eclipse.jdt.internal.ui.text.java.JavaCompletionProposal;
12 import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
13 import org.eclipse.jface.text.contentassist.ICompletionProposal;
14 import org.hibernate.eclipse.mapper.extractor.HBMXMLResultCollector.Settings;
15 import org.w3c.dom.Attr JavaDoc;
16 import org.w3c.dom.Node JavaDoc;
17
18 class JavaTypeHandler implements HBMInfoHandler {
19     
20     /**
21      *
22      */

23     protected final HBMInfoExtractor extractor;
24
25     /**
26      * @param extractor
27      */

28     JavaTypeHandler(HBMInfoExtractor extractor) {
29         this.extractor = extractor;
30     }
31
32     public ICompletionProposal[] attributeCompletionProposals(IJavaProject project, Node JavaDoc node, String JavaDoc attributeName, String JavaDoc start, int offset) {
33         Settings settings = new Settings();
34         settings.setAcceptClasses(true);
35         settings.setAcceptInterfaces(true);
36         settings.setAcceptPackages(true);
37         settings.setAcceptTypes(true);
38         return handleTypes(project, settings,this.extractor.getPackageName(node), start, offset);
39     }
40     
41     protected ICompletionProposal[] handleTypes(IJavaProject javaProject, Settings settings, String JavaDoc packageName, String JavaDoc start, int offset) {
42         
43             if (javaProject != null) {
44                 IEvaluationContext context = javaProject.newEvaluationContext();
45                 if(packageName!=null) {
46                     context.setPackageName(packageName);
47                 }
48                 
49                 
50                 HBMXMLResultCollector rc = new HBMXMLResultCollector(javaProject);
51                 //rc.reset(offset, javaProject, null);
52
rc.setAccepts(settings);
53                 try {
54                     // cannot send in my own document as it won't compile as
55
// java - so we just send in
56
// the smallest snippet possible
57
context.codeComplete(start, start.length(), rc);
58                 } catch (JavaModelException jme) {
59                     // TODO: handle/report!
60
jme.printStackTrace();
61                 }
62                 IJavaCompletionProposal[] results = rc.getJavaCompletionProposals();
63                 this.extractor.transpose(start, offset, results);
64                 return results;
65             }
66         return new JavaCompletionProposal[0];
67     }
68     
69     public IJavaElement getJavaElement(IJavaProject project, Node JavaDoc currentNode, Attr JavaDoc currentAttrNode) {
70         return getNearestTypeJavaElement(project, currentNode);
71     }
72
73     public IJavaElement getNearestTypeJavaElement(IJavaProject project, Node JavaDoc currentNode) {
74         String JavaDoc nearestType = extractor.getNearestType(currentNode);
75         if(nearestType!=null) {
76             try {
77                 IType type = project.findType(nearestType);
78                 return type;
79             } catch (JavaModelException e) {
80                 //ignore
81
}
82         }
83         return null;
84     }
85
86 }
Popular Tags