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