IJPL-215635 fix: update separators in the processes popup when the user closes analyzing banner

GitOrigin-RevId: 21117e2dd3d969f1a4bb1facfee83b4fcc45aefe
This commit is contained in:
Ilia Malakhov
2025-11-18 18:07:48 +00:00
committed by intellij-monorepo-bot
parent bfda838e41
commit 57c56eb8da
3 changed files with 21 additions and 15 deletions
@@ -15,13 +15,13 @@ import java.awt.Component
import javax.swing.JPanel
// Places analyzing progress indicator on top, adds a banner under it
internal class AnalyzingBannerDecorator(private val panel: JPanel, revalidatePanel: Runnable) {
internal class AnalyzingBannerDecorator(private val panel: JPanel, onBannerClose: Runnable) {
// component of analyzing progress,
// placed above banner
private var analyzingComponent: Component? = null
private val banner: Component = createBanner(revalidatePanel)
private val banner: Component = createBanner(onBannerClose)
fun indicatorAdded(indicator: ProgressComponent) {
@@ -55,7 +55,10 @@ final class ProcessPopup {
}
myTasksFinishedDecorator = new TasksFinishedDecorator(myIndicatorPanel);
myAnalyzingBannerDecorator = new AnalyzingBannerDecorator(myIndicatorPanel, () -> revalidateAll());
myAnalyzingBannerDecorator = new AnalyzingBannerDecorator(myIndicatorPanel, () -> {
SeparatorDecorator.placeSeparators(myIndicatorPanel);
revalidateAll();
});
mySeparatorDecorator = new SeparatorDecorator(myIndicatorPanel);
myContentPanel = new JBScrollPane(myIndicatorPanel, VERTICAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER);
@@ -14,28 +14,31 @@ import javax.swing.JPanel
*/
internal class SeparatorDecorator(private val panel: JPanel) {
fun indicatorAdded() {
placeSeparators()
placeSeparators(panel)
}
fun indicatorRemoved() {
placeSeparators()
placeSeparators(panel)
}
fun handlePopupClose() {
placeSeparators()
placeSeparators(panel)
}
private fun placeSeparators() {
var previousComponentIsIndicator = false
companion object {
@JvmStatic
fun placeSeparators(panel: JPanel) {
var previousComponentIsIndicator = false
for (component in panel.components) {
if (isProgressIndicator(component)) {
component.updateSeparator(isShown = previousComponentIsIndicator)
previousComponentIsIndicator = true
}
else {
previousComponentIsIndicator = false
for (component in panel.components) {
if (isProgressIndicator(component)) {
component.updateSeparator(isShown = previousComponentIsIndicator)
previousComponentIsIndicator = true
}
else {
previousComponentIsIndicator = false
}
}
}
}