diff --git a/platform/platform-api/resources/messages/IdeBundle.properties b/platform/platform-api/resources/messages/IdeBundle.properties
index 1ab7adce1355b..5282cf11ef934 100644
--- a/platform/platform-api/resources/messages/IdeBundle.properties
+++ b/platform/platform-api/resources/messages/IdeBundle.properties
@@ -1416,6 +1416,7 @@ add.byte.order.mark.to=Add byte order mark to {0}
remove.BOM=Remove BOM
add.BOM=Add BOM
removing.BOM=Removing BOM
+recapture.trace = Re-Capture Trace
# suppress inspection "UnusedProperty"
notification.group.failed.to.remove.bom=Failed to remove BOM
notification.title.was.unable.to.remove.bom.in=Was unable to remove BOM in {0} {0,choice,1#file|2#files}
diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/actions/SherlockCaptureAction.java b/platform/platform-impl/src/com/intellij/openapi/editor/actions/SherlockCaptureAction.java
new file mode 100644
index 0000000000000..2030ae042ebcc
--- /dev/null
+++ b/platform/platform-impl/src/com/intellij/openapi/editor/actions/SherlockCaptureAction.java
@@ -0,0 +1,38 @@
+/***
+ * Copyright 2024 Google LLC
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***/
+package com.intellij.openapi.editor.actions;
+
+import com.intellij.ide.IdeBundle;
+import com.intellij.openapi.actionSystem.*;
+import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.jetbrains.annotations.NotNull;
+
+public final class SherlockCaptureAction extends AnAction {
+ private static final Logger LOG = Logger.getInstance(SherlockCaptureAction.class);
+
+ public SherlockCaptureAction() {
+ super(IdeBundle.messagePointer("recapture.trace"));
+ }
+
+ @Override
+ public void actionPerformed(@NotNull AnActionEvent e) {
+ VirtualFile file = e.getData(CommonDataKeys.VIRTUAL_FILE);
+ String fileExtension = file.getExtension();
+ if (file != null && ("perfetto".equals(fileExtension) || "pftrace".equals(fileExtension))) {
+ LOG.info("Clicked on Re-capture button");
+ }
+ }
+}
diff --git a/platform/platform-resources/src/idea/LangActions.xml b/platform/platform-resources/src/idea/LangActions.xml
index 5162d018f04f1..56bda9e6b8e36 100644
--- a/platform/platform-resources/src/idea/LangActions.xml
+++ b/platform/platform-resources/src/idea/LangActions.xml
@@ -888,6 +888,12 @@
+
+
+
+
+
+