diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.traceview')
3 files changed, 66 insertions, 4 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.traceview/.classpath b/eclipse/plugins/com.android.ide.eclipse.traceview/.classpath index 1df80d6..176babf 100644 --- a/eclipse/plugins/com.android.ide.eclipse.traceview/.classpath +++ b/eclipse/plugins/com.android.ide.eclipse.traceview/.classpath @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src"/> - <classpathentry kind="lib" path="libs/traceview.jar"/> + <classpathentry kind="lib" path="libs/traceview.jar" sourcepath="/traceview"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="output" path="bin"/> diff --git a/eclipse/plugins/com.android.ide.eclipse.traceview/META-INF/MANIFEST.MF b/eclipse/plugins/com.android.ide.eclipse.traceview/META-INF/MANIFEST.MF index 623076a..ab9a5c2 100644 --- a/eclipse/plugins/com.android.ide.eclipse.traceview/META-INF/MANIFEST.MF +++ b/eclipse/plugins/com.android.ide.eclipse.traceview/META-INF/MANIFEST.MF @@ -9,7 +9,9 @@ Require-Bundle: org.eclipse.ui, org.eclipse.ui.ide, com.android.ide.eclipse.ddms;bundle-version="10.0.0", org.eclipse.core.filesystem, - org.eclipse.core.resources + org.eclipse.core.resources, + org.eclipse.jdt.core, + org.eclipse.jdt.ui Bundle-ActivationPolicy: lazy Bundle-ClassPath: ., libs/traceview.jar diff --git a/eclipse/plugins/com.android.ide.eclipse.traceview/src/com/android/ide/eclipse/traceview/editors/TraceviewEditor.java b/eclipse/plugins/com.android.ide.eclipse.traceview/src/com/android/ide/eclipse/traceview/editors/TraceviewEditor.java index c0c0963..161f33b 100644 --- a/eclipse/plugins/com.android.ide.eclipse.traceview/src/com/android/ide/eclipse/traceview/editors/TraceviewEditor.java +++ b/eclipse/plugins/com.android.ide.eclipse.traceview/src/com/android/ide/eclipse/traceview/editors/TraceviewEditor.java @@ -17,13 +17,25 @@ package com.android.ide.eclipse.traceview.editors; import com.android.traceview.ColorController; import com.android.traceview.DmTraceReader; +import com.android.traceview.MethodData; import com.android.traceview.ProfileView; import com.android.traceview.SelectionController; import com.android.traceview.TimeLineView; import com.android.traceview.TraceReader; import com.android.traceview.TraceUnits; +import com.android.traceview.ProfileView.MethodHandler; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.jdt.core.IMethod; +import org.eclipse.jdt.core.search.IJavaSearchConstants; +import org.eclipse.jdt.core.search.SearchEngine; +import org.eclipse.jdt.core.search.SearchMatch; +import org.eclipse.jdt.core.search.SearchParticipant; +import org.eclipse.jdt.core.search.SearchPattern; +import org.eclipse.jdt.core.search.SearchRequestor; +import org.eclipse.jdt.ui.JavaUI; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.graphics.Color; @@ -38,7 +50,7 @@ import org.eclipse.ui.ide.FileStoreEditorInput; import org.eclipse.ui.part.EditorPart; import org.eclipse.ui.part.FileEditorInput; -public class TraceviewEditor extends EditorPart { +public class TraceviewEditor extends EditorPart implements MethodHandler { private Composite mParent; private String mFilename; @@ -122,7 +134,7 @@ public class TraceviewEditor extends EditorPart { new TimeLineView(sashForm1, reader, selectionController); // Create the profile view - new ProfileView(sashForm1, reader, selectionController); + new ProfileView(sashForm1, reader, selectionController).setMethodHandler(this); mParent.layout(); } @@ -132,4 +144,52 @@ public class TraceviewEditor extends EditorPart { mParent.setFocus(); } + private static class TraceSearchRequestor extends SearchRequestor { + private MethodData mMethod; + + public TraceSearchRequestor(MethodData method) { + mMethod = method; + } + + @Override + public void acceptSearchMatch(SearchMatch match) throws CoreException { + Object element = match.getElement(); + if (element instanceof IMethod) { + IMethod method = (IMethod) element; + if (method.getSignature().equals(mMethod.getSignature())) { + JavaUI.openInEditor(method); + } + } + } + } + + // ---- MethodHandler methods + + public void handleMethod(MethodData method) { + // it's a bit complicated to convert the signature we have with what the + // search engine require, so we'll search by name only and test the signature + // when we get the result(s). + String methodName = method.getMethodName(); + String className = method.getClassName().replaceAll("/", "."); //$NON-NLS-1$ //$NON-NLS-21$ + String fqmn = className + "." + methodName; //$NON-NLS-1$ + + try { + SearchEngine se = new SearchEngine(); + se.search(SearchPattern.createPattern( + fqmn, + IJavaSearchConstants.METHOD, + IJavaSearchConstants.DECLARATIONS, + SearchPattern.R_EXACT_MATCH + | SearchPattern.R_CASE_SENSITIVE), + new SearchParticipant[] { SearchEngine .getDefaultSearchParticipant() }, + SearchEngine.createWorkspaceScope(), + new TraceSearchRequestor(method), + new NullProgressMonitor()); + } catch (CoreException e) { + + } + } + + // ----- + } |