@@ -3,8 +3,13 @@ package org.digma.intellij.plugin.ui.mainapp
33import com.intellij.openapi.components.service
44import com.intellij.openapi.project.Project
55import com.intellij.openapi.util.Disposer
6+ import com.intellij.openapi.vcs.ex.fastCompareLines
67import com.intellij.ui.jcef.JBCefApp
78import com.intellij.util.ui.JBUI
9+ import kotlinx.coroutines.CoroutineScope
10+ import kotlinx.coroutines.Dispatchers
11+ import kotlinx.coroutines.launch
12+ import org.digma.intellij.plugin.errorreporting.ErrorReporter
813import org.digma.intellij.plugin.reload.ReloadService
914import org.digma.intellij.plugin.ui.insights.InsightsService
1015import org.digma.intellij.plugin.ui.jcef.DownloadHandlerAdapter
@@ -16,22 +21,62 @@ import org.digma.intellij.plugin.ui.panels.DisposablePanel
1621import org.digma.intellij.plugin.ui.panels.ReloadablePanel
1722import org.digma.intellij.plugin.ui.tests.TestsUpdater
1823import java.awt.BorderLayout
24+ import java.awt.GraphicsEnvironment
1925import java.awt.Insets
26+ import java.beans.PropertyChangeEvent
27+ import java.beans.PropertyChangeListener
2028import javax.swing.JComponent
2129import javax.swing.JLabel
30+ import javax.swing.Timer
31+
2232
2333class MainAppPanel (private val project : Project ) : DisposablePanel(), ReloadablePanel {
2434
2535 private var jCefComponent: JCefComponent ? = null
2636
2737 private var parentDisposable = Disposer .newDisposable()
2838
39+ private var graphicsChanged = false ;
40+
41+ private var screensNumber = GraphicsEnvironment .getLocalGraphicsEnvironment().screenDevices.size;
42+
43+
2944 init {
3045 jCefComponent = build()
46+
3147 service<ReloadService >().register(this , MainAppService .getInstance(project))
3248 Disposer .register(MainAppService .getInstance(project)) {
3349 dispose()
3450 }
51+
52+ // val timer = Timer(1000) {
53+ //
54+ //
55+ // if (graphicsChanged){
56+ // graphicsChanged= false;
57+ // System.gc();
58+ //
59+ // val screenDevices = GraphicsEnvironment.getLocalGraphicsEnvironment().screenDevices
60+ // GraphicsEnvironment.getLocalGraphicsEnvironment().screenDevices
61+ // var newScreenNumber = screenDevices.size;
62+ // System.out.println("screens:"+ newScreenNumber);
63+ //
64+ // if (screensNumber!=newScreenNumber) {
65+ // screensNumber= newScreenNumber;
66+ //
67+ // try {
68+ // System.out.println("reloading ui");
69+ // service<ReloadService>().reload()
70+ // } catch (e: Throwable) {
71+ // ErrorReporter.getInstance().reportError("ReloadAction.actionPerformed", e)
72+ // }
73+ // }
74+ //
75+ //
76+ //
77+ // }
78+ // }
79+ // timer.start()
3580 }
3681
3782
@@ -41,6 +86,44 @@ class MainAppPanel(private val project: Project) : DisposablePanel(), Reloadable
4186
4287 val jcefUiComponent: JComponent = jCefComponent?.getComponent() ? : JLabel (" JCEF not supported" )
4388
89+ jcefUiComponent.addPropertyChangeListener(" graphicsConfiguration" ,{ evt: PropertyChangeEvent ->
90+
91+ System .out .println (" Property changed:" + evt.propertyName + " old: " + evt.oldValue + " new: " + evt.newValue)
92+
93+ if (evt.propertyName== " graphicsConfiguration" && evt.oldValue!= null && evt.newValue!= null ) {
94+
95+ System .out .println (" graphicsConfiguration changed:" + " old: " + evt.oldValue + " new: " + evt.newValue)
96+
97+ CoroutineScope (Dispatchers .Main ).launch {
98+ if (graphicsChanged) {
99+ graphicsChanged = false ;
100+ System .gc();
101+ Thread .sleep(1500 );
102+
103+
104+ val screenDevices = GraphicsEnvironment .getLocalGraphicsEnvironment().screenDevices
105+ GraphicsEnvironment .getLocalGraphicsEnvironment().screenDevices
106+ var newScreenNumber = screenDevices.size;
107+ System .out .println (" screens:" + newScreenNumber);
108+
109+ if (screensNumber != newScreenNumber) {
110+ screensNumber = newScreenNumber;
111+
112+ try {
113+ System .out .println (" reloading ui" );
114+ service<ReloadService >().reload()
115+ } catch (e: Throwable ) {
116+ ErrorReporter .getInstance().reportError(" ReloadAction.actionPerformed" , e)
117+ }
118+ }
119+
120+ }
121+
122+ graphicsChanged = true ;
123+
124+ }
125+ }});
126+ // jcefUiComponent.addPropertyChangeListener("painting", PropertyChangeListener )
44127 layout = BorderLayout ()
45128 border = JBUI .Borders .empty()
46129 add(jcefUiComponent, BorderLayout .CENTER )
0 commit comments