Skip to content

Commit 03d6ca1

Browse files
authored
Remove some listener events from the removed Outline view (#7801)
Without this change, exceptions are thrown as various file and caret listeners try to interact with an outline view that is not created.
1 parent 72caf42 commit 03d6ca1

File tree

1 file changed

+50
-62
lines changed

1 file changed

+50
-62
lines changed

flutter-idea/src/io/flutter/preview/PreviewView.java

Lines changed: 50 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,12 @@
99
import com.google.common.collect.Maps;
1010
import com.google.common.collect.Sets;
1111
import com.intellij.icons.AllIcons;
12-
import com.intellij.ide.CommonActionsManager;
13-
import com.intellij.ide.DefaultTreeExpander;
14-
import com.intellij.ide.TreeExpander;
1512
import com.intellij.openapi.actionSystem.*;
1613
import com.intellij.openapi.application.ApplicationManager;
1714
import com.intellij.openapi.components.PersistentStateComponent;
1815
import com.intellij.openapi.components.Storage;
1916
import com.intellij.openapi.editor.Caret;
2017
import com.intellij.openapi.editor.Editor;
21-
import com.intellij.openapi.editor.event.CaretEvent;
22-
import com.intellij.openapi.editor.event.CaretListener;
2318
import com.intellij.openapi.fileEditor.*;
2419
import com.intellij.openapi.project.Project;
2520
import com.intellij.openapi.ui.SimpleToolWindowPanel;
@@ -28,17 +23,14 @@
2823
import com.intellij.openapi.util.text.StringUtil;
2924
import com.intellij.openapi.vfs.VirtualFile;
3025
import com.intellij.openapi.wm.ToolWindow;
31-
import com.intellij.openapi.wm.ex.ToolWindowEx;
3226
import com.intellij.ui.*;
33-
import com.intellij.ui.content.Content;
3427
import com.intellij.ui.content.ContentFactory;
3528
import com.intellij.ui.content.ContentManager;
3629
import com.intellij.ui.speedSearch.SpeedSearchUtil;
3730
import com.intellij.ui.treeStructure.Tree;
3831
import com.intellij.util.messages.MessageBusConnection;
3932
import io.flutter.FlutterUtils;
4033
import io.flutter.dart.FlutterDartAnalysisServer;
41-
import io.flutter.dart.FlutterOutlineListener;
4234
import io.flutter.editor.PropertyEditorPanel;
4335
import io.flutter.inspector.InspectorGroupManagerService;
4436
import io.flutter.settings.FlutterSettings;
@@ -62,10 +54,6 @@
6254
import javax.swing.tree.TreeNode;
6355
import javax.swing.tree.TreePath;
6456
import java.awt.*;
65-
import java.awt.event.MouseAdapter;
66-
import java.awt.event.MouseEvent;
67-
import java.beans.PropertyChangeEvent;
68-
import java.beans.PropertyChangeListener;
6957
import java.util.List;
7058
import java.util.*;
7159

@@ -106,34 +94,34 @@ public class PreviewView implements PersistentStateComponent<PreviewViewState> {
10694
private final EventStream<List<FlutterOutline>> activeOutlines;
10795

10896
private final WidgetEditToolbar widgetEditToolbar;
109-
private final FlutterOutlineListener outlineListener = new FlutterOutlineListener() {
110-
@Override
111-
public void outlineUpdated(@NotNull String filePath, @NotNull FlutterOutline outline, @Nullable String instrumentedCode) {
112-
113-
final String filePathOrUri = flutterAnalysisServer.getAnalysisService().getLocalFileUri(currentFilePath);
114-
if (Objects.equals(filePathOrUri, filePath)) {
115-
ApplicationManager.getApplication().invokeLater(() -> updateOutline(outline));
116-
}
117-
}
118-
};
119-
120-
private final CaretListener caretListener = new CaretListener() {
121-
@Override
122-
public void caretPositionChanged(CaretEvent e) {
123-
final Caret caret = e.getCaret();
124-
if (caret != null) {
125-
ApplicationManager.getApplication().invokeLater(() -> applyEditorSelectionToTree(caret));
126-
}
127-
}
128-
129-
@Override
130-
public void caretAdded(@NotNull CaretEvent e) {
131-
}
132-
133-
@Override
134-
public void caretRemoved(@NotNull CaretEvent e) {
135-
}
136-
};
97+
//private final FlutterOutlineListener outlineListener = new FlutterOutlineListener() {
98+
// @Override
99+
// public void outlineUpdated(@NotNull String filePath, @NotNull FlutterOutline outline, @Nullable String instrumentedCode) {
100+
//
101+
// final String filePathOrUri = flutterAnalysisServer.getAnalysisService().getLocalFileUri(currentFilePath);
102+
// if (Objects.equals(filePathOrUri, filePath)) {
103+
// ApplicationManager.getApplication().invokeLater(() -> updateOutline(outline));
104+
// }
105+
// }
106+
//};
107+
108+
//private final CaretListener caretListener = new CaretListener() {
109+
// @Override
110+
// public void caretPositionChanged(CaretEvent e) {
111+
// final Caret caret = e.getCaret();
112+
// if (caret != null) {
113+
// ApplicationManager.getApplication().invokeLater(() -> applyEditorSelectionToTree(caret));
114+
// }
115+
// }
116+
//
117+
// @Override
118+
// public void caretAdded(@NotNull CaretEvent e) {
119+
// }
120+
//
121+
// @Override
122+
// public void caretRemoved(@NotNull CaretEvent e) {
123+
// }
124+
//};
137125

138126
private final TreeSelectionListener treeSelectionListener = this::handleTreeSelectionEvent;
139127
private PropertyEditorPanel propertyEditPanel;
@@ -216,9 +204,9 @@ public void initToolWindow(@NotNull ToolWindow toolWindow) {
216204
//
217205
//windowPanel.setToolbar(widgetEditToolbar.getToolbar().getComponent());
218206
//
219-
//final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
220-
//
221-
//tree = new OutlineTree(rootNode);
207+
final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode();
208+
209+
tree = new OutlineTree(rootNode);
222210
//tree.setCellRenderer(new OutlineTreeCellRenderer());
223211
//tree.expandAll();
224212
//
@@ -340,15 +328,15 @@ private void jumpToOutlineInEditor(FlutterOutline outline, boolean focusEditor)
340328
final int offset = outline.getDartElement() != null ? outline.getDartElement().getLocation().getOffset() : outline.getOffset();
341329
final int editorOffset = getOutlineOffsetConverter().getConvertedFileOffset(offset);
342330

343-
if (currentFile != null) {
344-
currentEditor.getCaretModel().removeCaretListener(caretListener);
345-
try {
346-
new OpenFileDescriptor(project, currentFile.getValue(), editorOffset).navigate(focusEditor);
347-
}
348-
finally {
349-
currentEditor.getCaretModel().addCaretListener(caretListener);
350-
}
351-
}
331+
//if (currentFile != null) {
332+
// currentEditor.getCaretModel().removeCaretListener(caretListener);
333+
// try {
334+
// new OpenFileDescriptor(project, currentFile.getValue(), editorOffset).navigate(focusEditor);
335+
// }
336+
// finally {
337+
// currentEditor.getCaretModel().addCaretListener(caretListener);
338+
// }
339+
//}
352340
}
353341

354342
// TODO: Add parent relationship info to FlutterOutline instead of this O(n^2) traversal.
@@ -517,7 +505,7 @@ private void addOutlinesCoveredByRange(List<FlutterOutline> covered, int start,
517505

518506
private void setSelectedFile(VirtualFile newFile) {
519507
if (currentFile.getValue() != null) {
520-
flutterAnalysisServer.removeOutlineListener(currentFilePath, outlineListener);
508+
//flutterAnalysisServer.removeOutlineListener(currentFilePath, outlineListener);
521509
currentFile.setValue(null);
522510
currentFilePath = null;
523511
}
@@ -548,19 +536,19 @@ else if (windowPanel.isToolbarVisible()) {
548536
if (newFile != null) {
549537
currentFile.setValue(newFile);
550538
currentFilePath = FileUtil.toSystemDependentName(newFile.getPath());
551-
flutterAnalysisServer.addOutlineListener(currentFilePath, outlineListener);
539+
//flutterAnalysisServer.addOutlineListener(currentFilePath, outlineListener);
552540
}
553541
}
554542

555543
private void setSelectedEditor(FileEditor newEditor) {
556-
if (currentEditor != null) {
557-
currentEditor.getCaretModel().removeCaretListener(caretListener);
558-
}
559-
if (newEditor instanceof TextEditor) {
560-
currentFileEditor = newEditor;
561-
currentEditor = ((TextEditor)newEditor).getEditor();
562-
currentEditor.getCaretModel().addCaretListener(caretListener);
563-
}
544+
//if (currentEditor != null) {
545+
// currentEditor.getCaretModel().removeCaretListener(caretListener);
546+
//}
547+
//if (newEditor instanceof TextEditor) {
548+
// currentFileEditor = newEditor;
549+
// currentEditor = ((TextEditor)newEditor).getEditor();
550+
// currentEditor.getCaretModel().addCaretListener(caretListener);
551+
//}
564552
}
565553

566554
private void applyEditorSelectionToTree(Caret caret) {

0 commit comments

Comments
 (0)