From bbe85f25338285e1c29768692fdc96ef57030f8f Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 12 Dec 2013 18:08:06 +0400 Subject: [PATCH] Stop sending requests if tool window isn't visible --- .../internal/KotlinInternalToolWindowFactory.java | 4 ++-- .../plugin/internal/codewindow/BytecodeToolWindow.java | 10 ++++++++-- .../internal/resolvewindow/ResolveToolWindow.java | 10 +++++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/internal/KotlinInternalToolWindowFactory.java b/idea/src/org/jetbrains/jet/plugin/internal/KotlinInternalToolWindowFactory.java index d5ecea2847a..cd9cd2c12f8 100644 --- a/idea/src/org/jetbrains/jet/plugin/internal/KotlinInternalToolWindowFactory.java +++ b/idea/src/org/jetbrains/jet/plugin/internal/KotlinInternalToolWindowFactory.java @@ -29,7 +29,7 @@ public class KotlinInternalToolWindowFactory implements ToolWindowFactory { public void createToolWindowContent(Project project, ToolWindow toolWindow) { ContentManager contentManager = toolWindow.getContentManager(); ContentFactory contentFactory = ContentFactory.SERVICE.getInstance(); - contentManager.addContent(contentFactory.createContent(new ResolveToolWindow(project), "Resolve", false)); - contentManager.addContent(contentFactory.createContent(new BytecodeToolWindow(project), "Bytecode", false)); + contentManager.addContent(contentFactory.createContent(new ResolveToolWindow(project, toolWindow), "Resolve", false)); + contentManager.addContent(contentFactory.createContent(new BytecodeToolWindow(project, toolWindow), "Bytecode", false)); } } diff --git a/idea/src/org/jetbrains/jet/plugin/internal/codewindow/BytecodeToolWindow.java b/idea/src/org/jetbrains/jet/plugin/internal/codewindow/BytecodeToolWindow.java index 516f41023b4..458106f681e 100644 --- a/idea/src/org/jetbrains/jet/plugin/internal/codewindow/BytecodeToolWindow.java +++ b/idea/src/org/jetbrains/jet/plugin/internal/codewindow/BytecodeToolWindow.java @@ -65,6 +65,10 @@ public class BytecodeToolWindow extends JPanel implements Disposable { public class UpdateBytecodeToolWindowTask extends LongRunningReadTask { @Override protected Location prepareRequestInfo() { + if (!toolWindow.isVisible()) { + return null; + } + Location location = Location.fromEditor(FileEditorManager.getInstance(myProject).getSelectedTextEditor(), myProject); if (location.getEditor() == null) { return null; @@ -169,12 +173,15 @@ public class BytecodeToolWindow extends JPanel implements Disposable { private final Editor myEditor; private final Alarm myUpdateAlarm; private final Project myProject; + private final ToolWindow toolWindow; private UpdateBytecodeToolWindowTask currentTask = null; - public BytecodeToolWindow(Project project) { + public BytecodeToolWindow(Project project, ToolWindow toolWindow) { super(new BorderLayout()); myProject = project; + this.toolWindow = toolWindow; + myEditor = EditorFactory.getInstance().createEditor( EditorFactory.getInstance().createDocument(""), project, JavaFileType.INSTANCE, true); add(myEditor.getComponent()); @@ -245,7 +252,6 @@ public class BytecodeToolWindow extends JPanel implements Disposable { byteCodeLine++; } - if (byteCodeStartLine == -1 || byteCodeEndLine == -1) { return new Pair(0, 0); } diff --git a/idea/src/org/jetbrains/jet/plugin/internal/resolvewindow/ResolveToolWindow.java b/idea/src/org/jetbrains/jet/plugin/internal/resolvewindow/ResolveToolWindow.java index 71bc405a3e1..14b885ca8a3 100644 --- a/idea/src/org/jetbrains/jet/plugin/internal/resolvewindow/ResolveToolWindow.java +++ b/idea/src/org/jetbrains/jet/plugin/internal/resolvewindow/ResolveToolWindow.java @@ -23,6 +23,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.EditorFactory; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.wm.ToolWindow; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.util.PsiTreeUtil; @@ -76,6 +77,10 @@ public class ResolveToolWindow extends JPanel implements Disposable { private class UpdateResolveToolWindowTask extends LongRunningReadTask { @Override protected Location prepareRequestInfo() { + if (!toolWindow.isVisible()) { + return null; + } + Location location = Location.fromEditor(FileEditorManager.getInstance(myProject).getSelectedTextEditor(), myProject); if (location.getEditor() == null || location.getJetFile() == null) { return null; @@ -154,13 +159,16 @@ public class ResolveToolWindow extends JPanel implements Disposable { private UpdateResolveToolWindowTask currentTask = null; private final Project myProject; + private final ToolWindow toolWindow; - public ResolveToolWindow(Project project) { + public ResolveToolWindow(Project project, ToolWindow toolWindow) { super(new BorderLayout()); myProject = project; + this.toolWindow = toolWindow; myEditor = EditorFactory.getInstance() .createEditor(EditorFactory.getInstance().createDocument(""), project, JetFileType.INSTANCE, true); add(myEditor.getComponent()); + myUpdateAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD, this); myUpdateAlarm.addRequest(new Runnable() { @Override