diff --git a/images/intellij.platform.images.iml b/images/intellij.platform.images.iml
index c938c62f6ed2..f88108111ee2 100644
--- a/images/intellij.platform.images.iml
+++ b/images/intellij.platform.images.iml
@@ -46,5 +46,6 @@
+
\ No newline at end of file
diff --git a/images/resources/META-INF/plugin.xml b/images/resources/META-INF/plugin.xml
index 6373ec0c5a16..fa982181d129 100644
--- a/images/resources/META-INF/plugin.xml
+++ b/images/resources/META-INF/plugin.xml
@@ -50,6 +50,7 @@
description="Show action for changing background in the editor toolbar"/>
+
diff --git a/images/src/org/intellij/images/scientific/action/CopyImageAction.kt b/images/src/org/intellij/images/scientific/action/CopyImageAction.kt
index 5aaa55c7d755..e5b6a5e0ace5 100644
--- a/images/src/org/intellij/images/scientific/action/CopyImageAction.kt
+++ b/images/src/org/intellij/images/scientific/action/CopyImageAction.kt
@@ -7,6 +7,7 @@ import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.actionSystem.PlatformDataKeys
import com.intellij.openapi.project.DumbAwareAction
import org.intellij.images.scientific.ScientificUtils
+import org.intellij.images.scientific.statistics.ScientificImageActionsCollector
class CopyImageAction : DumbAwareAction() {
override fun actionPerformed(e: AnActionEvent) {
@@ -16,6 +17,7 @@ class CopyImageAction : DumbAwareAction() {
return
}
provider.performCopy(dataContext)
+ ScientificImageActionsCollector.logCopyImageAction(this)
}
override fun update(e: AnActionEvent) {
diff --git a/images/src/org/intellij/images/scientific/action/GrayscaleImageAction.kt b/images/src/org/intellij/images/scientific/action/GrayscaleImageAction.kt
index 3b05a8175e67..abb4b7256de3 100644
--- a/images/src/org/intellij/images/scientific/action/GrayscaleImageAction.kt
+++ b/images/src/org/intellij/images/scientific/action/GrayscaleImageAction.kt
@@ -9,6 +9,7 @@ import com.intellij.openapi.vfs.writeBytes
import org.intellij.images.editor.ImageDocument.IMAGE_DOCUMENT_DATA_KEY
import org.intellij.images.scientific.ScientificUtils.DEFAULT_IMAGE_FORMAT
import org.intellij.images.scientific.ScientificUtils.ORIGINAL_IMAGE_KEY
+import org.intellij.images.scientific.statistics.ScientificImageActionsCollector
import java.awt.image.BufferedImage
import java.io.ByteArrayOutputStream
import javax.imageio.ImageIO
@@ -25,6 +26,7 @@ class GrayscaleImageAction : DumbAwareAction() {
imageFile.writeBytes(byteArrayOutputStream.toByteArray())
val document = e.getData(IMAGE_DOCUMENT_DATA_KEY) ?: return
document.value = grayscaleImage
+ ScientificImageActionsCollector.logGrayscaleImageAction(this)
}
private fun applyGrayscale(image: BufferedImage): BufferedImage {
diff --git a/images/src/org/intellij/images/scientific/action/InvertChannelsAction.kt b/images/src/org/intellij/images/scientific/action/InvertChannelsAction.kt
index c1e604a4bdd7..95221e9616a7 100644
--- a/images/src/org/intellij/images/scientific/action/InvertChannelsAction.kt
+++ b/images/src/org/intellij/images/scientific/action/InvertChannelsAction.kt
@@ -9,6 +9,7 @@ import com.intellij.openapi.vfs.writeBytes
import org.intellij.images.editor.ImageDocument.IMAGE_DOCUMENT_DATA_KEY
import org.intellij.images.scientific.ScientificUtils.DEFAULT_IMAGE_FORMAT
import org.intellij.images.scientific.ScientificUtils.ORIGINAL_IMAGE_KEY
+import org.intellij.images.scientific.statistics.ScientificImageActionsCollector
import java.awt.image.BufferedImage
import java.io.ByteArrayOutputStream
import javax.imageio.ImageIO
@@ -25,6 +26,7 @@ class InvertChannelsAction : DumbAwareAction() {
imageFile.writeBytes(byteArrayOutputStream.toByteArray())
val document = e.getData(IMAGE_DOCUMENT_DATA_KEY) ?: return
document.value = invertedImage
+ ScientificImageActionsCollector.logInvertChannelsAction(this)
}
diff --git a/images/src/org/intellij/images/scientific/action/RestoreOriginalImageAction.kt b/images/src/org/intellij/images/scientific/action/RestoreOriginalImageAction.kt
index 7564da5c7d82..081a244f4d75 100644
--- a/images/src/org/intellij/images/scientific/action/RestoreOriginalImageAction.kt
+++ b/images/src/org/intellij/images/scientific/action/RestoreOriginalImageAction.kt
@@ -9,6 +9,7 @@ import com.intellij.openapi.vfs.writeBytes
import org.intellij.images.editor.ImageDocument.IMAGE_DOCUMENT_DATA_KEY
import org.intellij.images.scientific.ScientificUtils.DEFAULT_IMAGE_FORMAT
import org.intellij.images.scientific.ScientificUtils.ORIGINAL_IMAGE_KEY
+import org.intellij.images.scientific.statistics.ScientificImageActionsCollector
import java.io.ByteArrayOutputStream
import javax.imageio.ImageIO
@@ -23,5 +24,6 @@ class RestoreOriginalImageAction : DumbAwareAction() {
imageFile.writeBytes(byteArrayOutputStream.toByteArray())
val document = e.getData(IMAGE_DOCUMENT_DATA_KEY) ?: return
document.value = originalImage
+ ScientificImageActionsCollector.logRestoreOriginalImageAction(this)
}
}
\ No newline at end of file
diff --git a/images/src/org/intellij/images/scientific/action/SaveImageAction.kt b/images/src/org/intellij/images/scientific/action/SaveImageAction.kt
index fcd6518a2745..081ccf6ccd82 100644
--- a/images/src/org/intellij/images/scientific/action/SaveImageAction.kt
+++ b/images/src/org/intellij/images/scientific/action/SaveImageAction.kt
@@ -11,6 +11,7 @@ import com.intellij.openapi.project.DumbAwareAction
import com.intellij.openapi.vfs.VirtualFileManager
import org.intellij.images.ImagesBundle
import org.intellij.images.scientific.ScientificUtils
+import org.intellij.images.scientific.statistics.ScientificImageActionsCollector
import java.io.IOException
import java.nio.file.Files
@@ -36,6 +37,7 @@ internal class SaveImageAction : DumbAwareAction() {
catch (e: IOException) {
logger.warn("Failed to save image", e)
}
+ ScientificImageActionsCollector.logSaveImageAction(this)
}
override fun update(e: AnActionEvent) {
diff --git a/images/src/org/intellij/images/scientific/statistics/ScientificImageActionsCollector.kt b/images/src/org/intellij/images/scientific/statistics/ScientificImageActionsCollector.kt
new file mode 100644
index 000000000000..d7d805e508e3
--- /dev/null
+++ b/images/src/org/intellij/images/scientific/statistics/ScientificImageActionsCollector.kt
@@ -0,0 +1,38 @@
+package org.intellij.images.scientific.statistics
+
+import com.intellij.internal.statistic.eventLog.EventLogGroup
+import com.intellij.internal.statistic.eventLog.events.EventFields
+import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector
+import org.intellij.images.scientific.action.*
+
+object ScientificImageActionsCollector : CounterUsagesCollector() {
+ private val GROUP = EventLogGroup("scientific.image.actions", 1)
+
+ private val copyImageAction = GROUP.registerEvent("copy_image_action", EventFields.Class("action_handler"))
+ private val saveImageAction = GROUP.registerEvent("save_image_action", EventFields.Class("action_handler"))
+ private val restoreOriginalImageAction = GROUP.registerEvent("restore_original_image_action", EventFields.Class("action_handler"))
+ private val invertChannelsAction = GROUP.registerEvent("invert_channels_action", EventFields.Class("action_handler"))
+ private val grayscaleImageAction = GROUP.registerEvent("grayscale_image_action", EventFields.Class("action_handler"))
+
+ override fun getGroup(): EventLogGroup = GROUP
+
+ fun logCopyImageAction(action: CopyImageAction) {
+ copyImageAction.log(action::class.java)
+ }
+
+ internal fun logSaveImageAction(action: SaveImageAction) {
+ saveImageAction.log(action::class.java)
+ }
+
+ fun logRestoreOriginalImageAction(action: RestoreOriginalImageAction) {
+ restoreOriginalImageAction.log(action::class.java)
+ }
+
+ fun logInvertChannelsAction(action: InvertChannelsAction) {
+ invertChannelsAction.log(action::class.java)
+ }
+
+ fun logGrayscaleImageAction(action: GrayscaleImageAction) {
+ grayscaleImageAction.log(action::class.java)
+ }
+}
\ No newline at end of file