mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
[java, compilation-charts] Add disposable parameter to manage resource lifecycle
GitOrigin-RevId: 4435085cf1b3c1b072ef4730cffb72f7052bf08a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e9cfc590d4
commit
e041d31e84
@@ -45,7 +45,7 @@ class CompilationChartsProjectActivity : ProjectActivity {
|
||||
val title = event.buildDescriptor.title.lowercase()
|
||||
if (title.contains("up-to-date") || title.startsWith("worksheet")) return@BuildProgressListener
|
||||
|
||||
CompilationChartsBuildEvent(project, view, buildId).also { chartEvent ->
|
||||
CompilationChartsBuildEvent(project, view, buildId, disposable).also { chartEvent ->
|
||||
handler.addState(chartEvent)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
package com.intellij.java.compiler.charts
|
||||
|
||||
import com.intellij.java.compiler.charts.CompilationChartsViewModel.Modules.EventKey
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.jetbrains.rd.framework.impl.RdList
|
||||
import com.jetbrains.rd.framework.impl.RdMap
|
||||
import com.jetbrains.rd.framework.impl.RdProperty
|
||||
@@ -14,7 +15,7 @@ import java.util.function.Predicate
|
||||
import kotlin.math.roundToLong
|
||||
|
||||
|
||||
class CompilationChartsViewModel(val lifetime: Lifetime) {
|
||||
class CompilationChartsViewModel(val lifetime: Lifetime, val disposable: Disposable) {
|
||||
val modules: Modules = Modules(Long.MAX_VALUE, 0, RdMap())
|
||||
val statistics: Statistics = Statistics()
|
||||
val cpuMemory: RdProperty<CpuMemoryStatisticsType> = RdProperty(CpuMemoryStatisticsType.MEMORY)
|
||||
|
||||
@@ -9,17 +9,18 @@ import com.intellij.execution.ui.ExecutionConsole
|
||||
import com.intellij.icons.AllIcons
|
||||
import com.intellij.java.compiler.charts.CompilationChartsBundle
|
||||
import com.intellij.java.compiler.charts.CompilationChartsViewModel
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.actionSystem.ActionGroup
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.rd.createLifetime
|
||||
import javax.swing.Icon
|
||||
import javax.swing.JComponent
|
||||
|
||||
class CompilationChartsBuildEvent(project: Project, val view: BuildViewManager, val buildId: Any) :
|
||||
class CompilationChartsBuildEvent(project: Project, val view: BuildViewManager, val buildId: Any, disposable: Disposable) :
|
||||
AbstractBuildEvent(Any(), buildId, System.currentTimeMillis(), CompilationChartsBundle.message("charts.tab.name")),
|
||||
PresentableBuildEvent {
|
||||
|
||||
private val console: CompilationChartsExecutionConsole by lazy { CompilationChartsExecutionConsole(project) }
|
||||
private val console: CompilationChartsExecutionConsole by lazy { CompilationChartsExecutionConsole(project, disposable) }
|
||||
|
||||
override fun getPresentationData(): BuildEventPresentationData = CompilationChartsPresentationData(console)
|
||||
|
||||
@@ -33,8 +34,8 @@ class CompilationChartsBuildEvent(project: Project, val view: BuildViewManager,
|
||||
override fun consoleToolbarActions(): ActionGroup? = null
|
||||
}
|
||||
|
||||
private class CompilationChartsExecutionConsole(project: Project) : ExecutionConsole {
|
||||
val vm: CompilationChartsViewModel = CompilationChartsViewModel(this.createLifetime())
|
||||
private class CompilationChartsExecutionConsole(project: Project, disposable: Disposable) : ExecutionConsole {
|
||||
val vm: CompilationChartsViewModel = CompilationChartsViewModel(this.createLifetime(), disposable)
|
||||
private val _component: CompilationChartsView by lazy {
|
||||
CompilationChartsView(project, vm)
|
||||
}
|
||||
|
||||
@@ -7,8 +7,11 @@ import com.intellij.java.compiler.charts.CompilationChartsViewModel.CpuMemorySta
|
||||
import com.intellij.java.compiler.charts.CompilationChartsViewModel.CpuMemoryStatisticsType.CPU
|
||||
import com.intellij.java.compiler.charts.CompilationChartsViewModel.CpuMemoryStatisticsType.MEMORY
|
||||
import com.intellij.java.compiler.charts.ui.CompilationChartsModuleInfo.CompilationChartsUsageInfo
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.editor.colors.EditorColorsListener
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.ui.components.JBPanelWithEmptyText
|
||||
import com.intellij.ui.components.Magnificator
|
||||
import com.intellij.util.concurrency.AppExecutorUtil
|
||||
@@ -119,12 +122,16 @@ class CompilationChartsDiagramsComponent(
|
||||
usageInfo = CompilationChartsUsageInfo(this, charts, zoom)
|
||||
addMouseMotionListener(usageInfo)
|
||||
|
||||
ApplicationManager.getApplication().getMessageBus().connect(vm.disposable)
|
||||
.subscribe(EditorColorsManager.TOPIC, EditorColorsListener { scheme -> smartDraw(true, false) })
|
||||
|
||||
putClientProperty(Magnificator.CLIENT_PROPERTY_KEY, object : Magnificator {
|
||||
override fun magnify(magnification: Double, at: Point): Point = zoom.adjust(viewport, at.x, magnification)
|
||||
})
|
||||
|
||||
AppExecutorUtil.createBoundedScheduledExecutorService("Compilation charts component", 1)
|
||||
.scheduleWithFixedDelay({ if (hasNewData()) smartDraw() }, 0, Settings.Refresh.timeout, Settings.Refresh.unit)
|
||||
.also { feature -> Disposer.register(vm.disposable) { -> feature.cancel(true) } }
|
||||
}
|
||||
|
||||
internal fun cleanCache() {
|
||||
|
||||
Reference in New Issue
Block a user