aboutsummaryrefslogtreecommitdiffstats
path: root/eclipse/plugins/com.android.ide.eclipse.traceview
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.traceview')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.traceview/.classpath2
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.traceview/META-INF/MANIFEST.MF4
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.traceview/src/com/android/ide/eclipse/traceview/editors/TraceviewEditor.java64
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) {
+
+ }
+ }
+
+ // -----
+
}