1 19 20 21 package ca.mcgill.sable.soot.attributes; 22 23 import java.util.*; 24 25 import org.eclipse.core.resources.*; 26 import org.eclipse.jdt.core.*; 27 import org.eclipse.jface.text.source.IVerticalRulerInfo; 28 import org.eclipse.ui.PartInitException; 29 import org.eclipse.ui.texteditor.AbstractTextEditor; 30 import org.eclipse.ui.texteditor.ITextEditor; 31 import org.eclipse.ui.part.*; 32 33 import ca.mcgill.sable.soot.SootPlugin; 34 35 36 public class SootAttributeJavaSelectAction extends SootAttributeSelectAction { 37 38 public SootAttributeJavaSelectAction(ResourceBundle bundle, String prefix, ITextEditor editor, IVerticalRulerInfo rulerInfo) { 39 super(bundle, prefix, editor, rulerInfo); 40 } 41 42 45 public ArrayList getMarkerLinks(){ 46 SootAttributesHandler handler = SootPlugin.getDefault().getManager().getAttributesHandlerForFile((IFile)getResource(getEditor())); 47 ArrayList links = handler.getJavaLinks(getLineNumber()+1); 48 Iterator it = links.iterator(); 49 50 return links; 51 } 52 53 protected int getLinkLine(LinkAttribute la){ 54 return la.getJavaLink(); 55 } 56 57 58 public void findClass(String className){ 59 setLinkToEditor(getEditor()); 60 String resource = removeExt(getResource(getEditor()).getName()); 61 62 String ext = getResource(getEditor()).getFileExtension(); 63 64 IProject proj = getResource(getEditor()).getProject(); 65 String slashedClassName = className.replaceAll("\\.", System.getProperty("file.separator")); 66 String classNameToFind = slashedClassName+"."+ext; 67 IJavaProject jProj = JavaCore.create(proj); 68 try { 69 70 IPackageFragmentRoot [] roots = jProj.getAllPackageFragmentRoots(); 71 for (int i = 0; i < roots.length; i++){ 72 if (!(roots[i].getResource() instanceof IContainer)) continue; 73 IResource fileToFind = ((IContainer)roots[i].getResource()).findMember(classNameToFind); 74 if (fileToFind == null) continue; 75 76 if (!fileToFind.equals(resource)){ 77 try { 78 setLinkToEditor((AbstractTextEditor)SootPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(new FileEditorInput((IFile)fileToFind), fileToFind.getName())); 79 } 80 catch (PartInitException e){ 81 } 82 } 83 } 84 } 85 catch (JavaModelException e){ 86 setLinkToEditor(getEditor()); 87 } 88 89 } 90 } 91 | Popular Tags |