diff --git a/third_party/gradlew.bat b/third_party/gradlew.bat
index aa5f10b06..24c62d56f 100644
--- a/third_party/gradlew.bat
+++ b/third_party/gradlew.bat
@@ -1,82 +1,82 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-@rem SPDX-License-Identifier: Apache-2.0
-@rem
-
-@if "%DEBUG%"=="" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables, and ensure extensions are enabled
-setlocal EnableExtensions
-
-set DIRNAME=%~dp0
-if "%DIRNAME%"=="" set DIRNAME=.
-@rem This is normally unused
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if %ERRORLEVEL% equ 0 goto execute
-
-echo. 1>&2
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
-echo. 1>&2
-echo Please set the JAVA_HOME variable in your environment to match the 1>&2
-echo location of your Java installation. 1>&2
-
-"%COMSPEC%" /c exit 1
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo. 1>&2
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
-echo. 1>&2
-echo Please set the JAVA_HOME variable in your environment to match the 1>&2
-echo location of your Java installation. 1>&2
-
-"%COMSPEC%" /c exit 1
-
-:execute
-@rem Setup the command line
-
-
-
-@rem Execute Gradle
-@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
-@rem which allows us to clear the local environment before executing the java command
-endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel
-
-:exitWithErrorLevel
-@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
-"%COMSPEC%" /c exit %ERRORLEVEL%
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables, and ensure extensions are enabled
+setlocal EnableExtensions
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+"%COMSPEC%" /c exit 1
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+"%COMSPEC%" /c exit 1
+
+:execute
+@rem Setup the command line
+
+
+
+@rem Execute Gradle
+@rem endlocal doesn't take effect until after the line is parsed and variables are expanded
+@rem which allows us to clear the local environment before executing the java command
+endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel
+
+:exitWithErrorLevel
+@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
+"%COMSPEC%" /c exit %ERRORLEVEL%
diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/ui/DartRemoteDebugConfigurationEditor.form b/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/ui/DartRemoteDebugConfigurationEditor.form
index 95e035c0f..6ca16b20f 100644
--- a/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/ui/DartRemoteDebugConfigurationEditor.form
+++ b/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/ui/DartRemoteDebugConfigurationEditor.form
@@ -31,7 +31,7 @@
-
+
diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/ui/DartRemoteDebugConfigurationEditor.java b/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/ui/DartRemoteDebugConfigurationEditor.java
index 53b84e3fc..ab33e4fcc 100644
--- a/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/ui/DartRemoteDebugConfigurationEditor.java
+++ b/third_party/src/main/java/com/jetbrains/lang/dart/ide/runner/server/ui/DartRemoteDebugConfigurationEditor.java
@@ -1,11 +1,13 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.jetbrains.lang.dart.ide.runner.server.ui;
+import com.intellij.openapi.application.ModalityState;
+import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.options.SettingsEditor;
+import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectRootManager;
-import com.intellij.openapi.ui.TextComponentAccessor;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
@@ -13,12 +15,14 @@
import com.intellij.psi.search.FilenameIndex;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScopesCore;
-import com.intellij.ui.ComboboxWithBrowseButton;
import com.intellij.ui.SimpleListCellRenderer;
import com.intellij.ui.components.JBLabel;
+import com.intellij.util.concurrency.AppExecutorUtil;
+import com.jetbrains.lang.dart.DartBundle;
import com.jetbrains.lang.dart.DartFileType;
import com.jetbrains.lang.dart.ide.runner.server.DartRemoteDebugConfiguration;
import com.jetbrains.lang.dart.ide.runner.server.DartRemoteDebugParameters;
+import com.jetbrains.lang.dart.ui.BasicComboBoxWithBrowseButton;
import com.jetbrains.lang.dart.util.PubspecYamlUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -32,50 +36,55 @@
public class DartRemoteDebugConfigurationEditor extends SettingsEditor {
private JPanel myMainPanel;
- private ComboboxWithBrowseButton myDartProjectCombo;
+ private BasicComboBoxWithBrowseButton myDartProjectCombo;
private JBLabel myHintLabel;
+ private final Project myProject;
private final SortedSet myComboItems = new TreeSet<>();
public DartRemoteDebugConfigurationEditor(final @NotNull Project project) {
+ myProject = project;
+ myDartProjectCombo.addBrowseFolderListener(DartBundle.message("button.browse.dialog.title.select.dart.project.path"),
+ myProject,
+ FileChooserDescriptorFactory.createSingleFolderDescriptor()
+ .withTitle(DartBundle.message("button.browse.dialog.title.select.dart.project.path")),
+ this::resolveNameAndPath,
+ this::applySelectedProjectPath);
initDartProjectsCombo(project);
myHintLabel.setCopyable(true);
}
private void initDartProjectsCombo(final @NotNull Project project) {
- myDartProjectCombo.getComboBox().setRenderer(SimpleListCellRenderer.create("", NameAndPath::getPresentableText));
+ myDartProjectCombo.setRenderer(SimpleListCellRenderer.create("", NameAndPath::getPresentableText));
- if (!project.isDefault()) {
+ if (project.isDefault()) return;
+
+ ReadAction.nonBlocking(() -> {
+ SortedSet items = new TreeSet<>();
for (VirtualFile pubspecFile : FilenameIndex.getVirtualFilesByName(PUBSPEC_YAML, GlobalSearchScope.projectScope(project))) {
- myComboItems.add(new NameAndPath(PubspecYamlUtil.getDartProjectName(pubspecFile), pubspecFile.getParent().getPath()));
+ ProgressManager.checkCanceled();
+ items.add(new NameAndPath(PubspecYamlUtil.getDartProjectName(pubspecFile), pubspecFile.getParent().getPath()));
}
- if (myComboItems.isEmpty()) {
+ if (items.isEmpty()) {
for (VirtualFile contentRoot : ProjectRootManager.getInstance(project).getContentRoots()) {
+ ProgressManager.checkCanceled();
if (FileTypeIndex.containsFileOfType(DartFileType.INSTANCE, GlobalSearchScopesCore.directoryScope(project, contentRoot, true))) {
- myComboItems.add(new NameAndPath(null, contentRoot.getPath()));
+ items.add(new NameAndPath(null, contentRoot.getPath()));
}
}
}
- }
-
- myDartProjectCombo.getComboBox().setModel(new DefaultComboBoxModel<>(myComboItems.toArray()));
-
- myDartProjectCombo.addBrowseFolderListener(
- project,
- FileChooserDescriptorFactory.createSingleFolderDescriptor(),
- new TextComponentAccessor<>() {
- @Override
- public String getText(final JComboBox combo) {
- final Object item = combo.getSelectedItem();
- return item instanceof NameAndPath ? ((NameAndPath)item).myPath : "";
- }
-
- @Override
- public void setText(final JComboBox combo, final @NotNull String path) {
- setSelectedProjectPath(FileUtil.toSystemIndependentName(path));
+ return items;
+ })
+ .finishOnUiThread(ModalityState.any(), items -> {
+ final Object selectedItem = myDartProjectCombo.getSelectedItem();
+ myComboItems.addAll(items);
+ myDartProjectCombo.setModel(new DefaultComboBoxModel<>(myComboItems.toArray(NameAndPath[]::new)));
+ if (selectedItem != null) {
+ myDartProjectCombo.setSelectedItem(selectedItem);
}
- });
+ })
+ .submit(AppExecutorUtil.getAppExecutorService());
}
@Override
@@ -92,23 +101,34 @@ protected void resetEditorFrom(final @NotNull DartRemoteDebugConfiguration confi
private void setSelectedProjectPath(final @NotNull String projectPath) {
if (projectPath.isEmpty()) return;
+ ReadAction.nonBlocking(() -> resolveNameAndPath(projectPath))
+ .finishOnUiThread(ModalityState.any(), this::applySelectedProjectPath)
+ .submit(AppExecutorUtil.getAppExecutorService());
+ }
+
+ private @NotNull NameAndPath resolveNameAndPath(final @NotNull String projectPath) {
final VirtualFile pubspecFile = LocalFileSystem.getInstance().findFileByPath(projectPath + "/" + PUBSPEC_YAML);
final String projectName = pubspecFile == null ? null : PubspecYamlUtil.getDartProjectName(pubspecFile);
- final NameAndPath item = new NameAndPath(projectName, projectPath);
+ return new NameAndPath(projectName, projectPath);
+ }
+ private void applySelectedProjectPath(final @NotNull NameAndPath item) {
if (!myComboItems.contains(item)) {
myComboItems.add(item);
- myDartProjectCombo.getComboBox().setModel(new DefaultComboBoxModel(myComboItems.toArray()));
+ myDartProjectCombo.setModel(new DefaultComboBoxModel<>(myComboItems.toArray(NameAndPath[]::new)));
}
-
- myDartProjectCombo.getComboBox().setSelectedItem(item);
+ myDartProjectCombo.setSelectedItem(item);
}
@Override
protected void applyEditorTo(final @NotNull DartRemoteDebugConfiguration config) {
final DartRemoteDebugParameters params = config.getParameters();
- final Object selectedItem = myDartProjectCombo.getComboBox().getSelectedItem();
- params.setDartProjectPath(selectedItem instanceof NameAndPath ? ((NameAndPath)selectedItem).myPath : "");
+ final Object selectedItem = myDartProjectCombo.getSelectedItem();
+ params.setDartProjectPath(selectedItem == null ? "" : selectedItem.toString().trim());
+ }
+
+ private void createUIComponents() {
+ myDartProjectCombo = new BasicComboBoxWithBrowseButton<>();
}
private static class NameAndPath implements Comparable {
@@ -126,7 +146,7 @@ public String getPresentableText() {
@Override
public String toString() {
- return getPresentableText();
+ return myPath;
}
@Override
diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/projectWizard/DartGeneratorPeer.form b/third_party/src/main/java/com/jetbrains/lang/dart/projectWizard/DartGeneratorPeer.form
index 556e7e6c3..9c21a6f39 100644
--- a/third_party/src/main/java/com/jetbrains/lang/dart/projectWizard/DartGeneratorPeer.form
+++ b/third_party/src/main/java/com/jetbrains/lang/dart/projectWizard/DartGeneratorPeer.form
@@ -25,7 +25,7 @@
-
+
diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/projectWizard/DartGeneratorPeer.java b/third_party/src/main/java/com/jetbrains/lang/dart/projectWizard/DartGeneratorPeer.java
index 0001b0c28..71acf4257 100644
--- a/third_party/src/main/java/com/jetbrains/lang/dart/projectWizard/DartGeneratorPeer.java
+++ b/third_party/src/main/java/com/jetbrains/lang/dart/projectWizard/DartGeneratorPeer.java
@@ -4,8 +4,10 @@
import com.intellij.icons.AllIcons;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.ide.util.projectWizard.SettingsStep;
+import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
-import com.intellij.openapi.ui.ComboBox;
+import com.intellij.openapi.application.ModalityState;
+import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.openapi.ui.ValidationInfo;
import com.intellij.openapi.util.Disposer;
@@ -14,18 +16,18 @@
import com.intellij.openapi.util.text.HtmlChunk;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.platform.ProjectGeneratorPeer;
-import com.intellij.platform.WebProjectGenerator;
import com.intellij.ui.ColorUtil;
-import com.intellij.ui.ComboboxWithBrowseButton;
import com.intellij.ui.DocumentAdapter;
import com.intellij.ui.JBColor;
import com.intellij.ui.components.JBCheckBox;
import com.intellij.ui.components.JBLabel;
import com.intellij.ui.components.JBList;
import com.intellij.uiDesigner.core.GridConstraints;
+import com.intellij.util.concurrency.AppExecutorUtil;
import com.intellij.util.ui.AsyncProcessIcon;
import com.jetbrains.lang.dart.DartBundle;
import com.jetbrains.lang.dart.sdk.DartSdkUtil;
+import com.jetbrains.lang.dart.ui.BasicComboBoxWithBrowseButton;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -36,12 +38,12 @@
import java.util.List;
import java.util.stream.IntStream;
-public class DartGeneratorPeer implements ProjectGeneratorPeer {
+public class DartGeneratorPeer implements ProjectGeneratorPeer, Disposable {
private static final String DART_PROJECT_TEMPLATE = "DART_PROJECT_TEMPLATE";
private static final String CREATE_SAMPLE_UNCHECKED = "CREATE_SAMPLE_UNCHECKED";
private JPanel myMainPanel;
- private ComboboxWithBrowseButton mySdkPathComboWithBrowse;
+ private BasicComboBoxWithBrowseButton mySdkPathComboWithBrowse;
private JBLabel myVersionLabel;
private JPanel myTemplatesPanel;
@@ -56,17 +58,20 @@ public class DartGeneratorPeer implements ProjectGeneratorPeer myDartCreateTemplates;// not-null means that it's been already calculated
- private String myDartCreateTemplatesSdkPath; //used to expire the above cache if the sdk is changed an alternative would be to use the same cache method as com.jetbrains.lang.dart.sdk.DartSdkUtil.getSdkVersion
+ private String myDartCreateTemplatesSdkPath; //used to expire the above cache if the sdk is changed
+
+ private String mySdkPathValidationError;
public DartGeneratorPeer() {
// set initial values before initDartSdkControls() because listeners should not be triggered on initialization
- mySdkPathComboWithBrowse.getComboBox().setEditable(true);
- //mySdkPathComboWithBrowse.getComboBox().getEditor().setItem(...); initial sdk path will be correctly taken from known paths history
+ mySdkPathComboWithBrowse.setEditable(true);
// now setup controls
- DartSdkUtil.initDartSdkControls(null, mySdkPathComboWithBrowse, myVersionLabel);
+ DartSdkUtil.initDartSdkControls(null, mySdkPathComboWithBrowse, myVersionLabel, this);
- myCreateSampleProjectCheckBox.addActionListener(e -> myTemplatesList.setEnabled(myCreateSampleProjectCheckBox.isSelected()));
+ myCreateSampleProjectCheckBox.addActionListener(e -> {
+ myTemplatesList.setEnabled(myCreateSampleProjectCheckBox.isSelected());
+ });
String selectedTemplateName = PropertiesComponent.getInstance().getValue(DART_PROJECT_TEMPLATE);
myCreateSampleProjectCheckBox.setSelected(!CREATE_SAMPLE_UNCHECKED.equals(selectedTemplateName));
@@ -92,56 +97,62 @@ public Component getListCellRendererComponent(JList list, Object value, int inde
myCreateSampleProjectCheckBox.setEnabled(false);
myTemplatesList.setEnabled(false);
- final JTextComponent editorComponent = (JTextComponent)mySdkPathComboWithBrowse.getComboBox().getEditor().getEditorComponent();
- editorComponent.getDocument().addDocumentListener(new DocumentAdapter() {
+ final JTextComponent editorComponent = (JTextComponent)mySdkPathComboWithBrowse.getEditor().getEditorComponent();
+ final DocumentAdapter listener = new DocumentAdapter() {
@Override
protected void textChanged(final @NotNull DocumentEvent e) {
- if(e.getType() == DocumentEvent.EventType.INSERT){
- onSdkPathChanged();
- }
+ onSdkPathChanged();
}
- });
+ };
+ editorComponent.getDocument().addDocumentListener(listener);
+ Disposer.register(this, () -> editorComponent.getDocument().removeDocumentListener(listener));
onSdkPathChanged();
}
private void onSdkPathChanged() {
- String sdkPath = mySdkPathComboWithBrowse.getComboBox().getEditor().getItem().toString().trim();
+ final String sdkPath = mySdkPathComboWithBrowse.getEditor().getItem().toString().trim();
// If the sdk path has changed, recalculate the create template options
if (myDartCreateTemplatesSdkPath != null && !myDartCreateTemplatesSdkPath.equals(sdkPath)) {
clearTemplates();
}
- String errorMessage = DartSdkUtil.getErrorMessageIfWrongSdkRootPath(sdkPath);
- if (errorMessage != null) {
- clearTemplates();
- return;
- }
- if (myDartCreateCalcStarted) {
- if (myDartCreateTemplates != null) {
- showTemplates(myDartCreateTemplates);
- }
- else {
- // Calculation in progress, just wait.
- myLoadingTemplatesPanel.setVisible(true);
- myLoadedTemplatesPanel.setVisible(false);
- }
- }
- else {
- myDartCreateCalcStarted = true;
- startLoadingTemplates();
- }
+ ReadAction.nonBlocking(() -> DartSdkUtil.getErrorMessageIfWrongSdkRootPath(sdkPath))
+ .finishOnUiThread(ModalityState.any(), errorMessage -> {
+ mySdkPathValidationError = errorMessage;
+ if (myIntellijLiveValidationEnabled) {
+ validateInIntelliJ();
+ }
+
+ if (errorMessage != null) {
+ clearTemplates();
+ return;
+ }
+
+ if (myDartCreateCalcStarted) {
+ if (myDartCreateTemplates != null) {
+ showTemplates(myDartCreateTemplates);
+ }
+ else {
+ // Calculation in progress, just wait.
+ myLoadingTemplatesPanel.setVisible(true);
+ myLoadedTemplatesPanel.setVisible(false);
+ }
+ }
+ else {
+ myDartCreateCalcStarted = true;
+ startLoadingTemplates();
+ }
+ })
+ .submit(AppExecutorUtil.getAppExecutorService());
}
- // Clears myTemplateList which is required when an invalid Dart SDK directory
- // is selected
private void clearTemplates() {
myDartCreateTemplates = null;
myDartCreateTemplatesSdkPath = null;
myDartCreateCalcStarted = false;
myLoadingTemplatesPanel.setVisible(false);
- // myLoadedTemplatesPanel should be visible to show the default text
myLoadedTemplatesPanel.setVisible(true);
myCreateSampleProjectCheckBox.setEnabled(false);
myTemplatesList.setEnabled(false);
@@ -155,23 +166,26 @@ private void startLoadingTemplates() {
myLoadedTemplatesPanel.setVisible(false);
final AsyncProcessIcon asyncProcessIcon = new AsyncProcessIcon("Dart project templates loading");
- myLoadingTemplatesPanel.add(asyncProcessIcon, new GridConstraints()); // defaults are ok: row = 0, column = 0
+ myLoadingTemplatesPanel.add(asyncProcessIcon, new GridConstraints());// defaults are ok: row = 0, column = 0
asyncProcessIcon.resume();
+ final String comboSdkPath = mySdkPathComboWithBrowse.getEditor().getItem().toString().trim();
+ final String sdkPath = FileUtil.toSystemIndependentName(comboSdkPath);
+
ApplicationManager.getApplication().executeOnPooledThread(() -> {
- final String comboSdkPath = mySdkPathComboWithBrowse.getComboBox().getEditor().getItem().toString().trim();
- final String sdkPath =
- FileUtil.toSystemIndependentName(comboSdkPath);
DartProjectTemplate.loadTemplatesAsync(sdkPath, templates -> {
- asyncProcessIcon.suspend();
- myLoadingTemplatesPanel.remove(asyncProcessIcon);
- Disposer.dispose(asyncProcessIcon);
+ ApplicationManager.getApplication().invokeLater(() -> {
+ asyncProcessIcon.suspend();
+ myLoadingTemplatesPanel.remove(asyncProcessIcon);
+ Disposer.dispose(asyncProcessIcon);
- myDartCreateTemplates = templates;
- myDartCreateTemplatesSdkPath = comboSdkPath;
+ myDartCreateTemplates = templates;
+ myDartCreateTemplatesSdkPath = comboSdkPath;
- // it's better to call onSdkPathChanged() but not showTemplates() directly as sdk path could have been changed during this long calculation
- onSdkPathChanged();
+ // it's better to call onSdkPathChanged() but not showTemplates()
+ // directly as sdk path could have been changed during this long calculation
+ onSdkPathChanged();
+ }, ModalityState.any());
});
});
}
@@ -183,6 +197,7 @@ private void showTemplates(final List templates) {
currentModel.getSize() == templates.size() &&
IntStream.range(0, templates.size()).allMatch(i -> templates.get(i).getName().equals(currentModel.getElementAt(i).getName()))) {
// already showing the right list
+
return;
}
@@ -236,7 +251,7 @@ public void buildUI(final @NotNull SettingsStep settingsStep) {
@Override
public @NotNull DartProjectWizardData getSettings() {
- final String sdkPath = FileUtil.toSystemIndependentName(mySdkPathComboWithBrowse.getComboBox().getEditor().getItem().toString().trim());
+ final String sdkPath = FileUtil.toSystemIndependentName(mySdkPathComboWithBrowse.getEditor().getItem().toString().trim());
final DartProjectTemplate template = myCreateSampleProjectCheckBox.isSelected() ? myTemplatesList.getSelectedValue() : null;
PropertiesComponent.getInstance().setValue(DART_PROJECT_TEMPLATE, template == null ? CREATE_SAMPLE_UNCHECKED : template.getName());
@@ -245,10 +260,8 @@ public void buildUI(final @NotNull SettingsStep settingsStep) {
@Override
public @Nullable ValidationInfo validate() {
- final String sdkPath = mySdkPathComboWithBrowse.getComboBox().getEditor().getItem().toString().trim();
- final String message = DartSdkUtil.getErrorMessageIfWrongSdkRootPath(sdkPath);
- if (message != null) {
- return new ValidationInfo(message, mySdkPathComboWithBrowse);
+ if (mySdkPathValidationError != null) {
+ return new ValidationInfo(mySdkPathValidationError, mySdkPathComboWithBrowse);
}
if (myCreateSampleProjectCheckBox.isSelected()) {
@@ -284,16 +297,17 @@ public boolean validateInIntelliJ() {
}
private void enableIntellijLiveValidation() {
- final JTextComponent editorComponent = (JTextComponent)mySdkPathComboWithBrowse.getComboBox().getEditor().getEditorComponent();
- editorComponent.getDocument().addDocumentListener(new DocumentAdapter() {
+ final JTextComponent editorComponent = (JTextComponent)mySdkPathComboWithBrowse.getEditor().getEditorComponent();
+ final DocumentAdapter listener = new DocumentAdapter() {
@Override
protected void textChanged(final @NotNull DocumentEvent e) {
validateInIntelliJ();
}
- });
+ };
+ editorComponent.getDocument().addDocumentListener(listener);
+ Disposer.register(this, () -> editorComponent.getDocument().removeDocumentListener(listener));
myCreateSampleProjectCheckBox.addActionListener(e -> validateInIntelliJ());
-
myTemplatesList.addListSelectionListener(e -> validateInIntelliJ());
}
@@ -303,21 +317,10 @@ public boolean isBackgroundJobRunning() {
}
@Override
- public void addSettingsStateListener(final @NotNull WebProjectGenerator.SettingsStateListener stateListener) {
- final JTextComponent editorComponent = (JTextComponent)mySdkPathComboWithBrowse.getComboBox().getEditor().getEditorComponent();
- editorComponent.getDocument().addDocumentListener(new DocumentAdapter() {
- @Override
- protected void textChanged(final @NotNull DocumentEvent e) {
- stateListener.stateChanged(validate() == null);
- }
- });
-
- myCreateSampleProjectCheckBox.addActionListener(e -> stateListener.stateChanged(validate() == null));
-
- myTemplatesList.addListSelectionListener(e -> stateListener.stateChanged(validate() == null));
+ public void dispose() {
}
private void createUIComponents() {
- mySdkPathComboWithBrowse = new ComboboxWithBrowseButton(new ComboBox<>());
+ mySdkPathComboWithBrowse = new BasicComboBoxWithBrowseButton<>();
}
}
diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartConfigurable.form b/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartConfigurable.form
index b7d960a61..94d6f7d22 100644
--- a/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartConfigurable.form
+++ b/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartConfigurable.form
@@ -25,7 +25,7 @@
-
+
diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartConfigurable.java b/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartConfigurable.java
index 28082202a..469d0fb3e 100644
--- a/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartConfigurable.java
+++ b/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartConfigurable.java
@@ -5,17 +5,20 @@
import com.intellij.icons.AllIcons;
import com.intellij.ide.actions.ShowSettingsUtilImpl;
import com.intellij.ide.util.PropertiesComponent;
+import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
-import com.intellij.openapi.progress.ProgressManager;
+import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.options.Configurable.NoScroll;
import com.intellij.openapi.options.SearchableConfigurable;
+import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.ComboBox;
import com.intellij.openapi.ui.Messages;
+import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.util.NlsContexts;
import com.intellij.openapi.util.NlsSafe;
@@ -23,7 +26,10 @@
import com.intellij.openapi.util.text.HtmlBuilder;
import com.intellij.openapi.util.text.HtmlChunk;
import com.intellij.openapi.util.text.StringUtil;
+import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.IdeFocusManager;
+import com.intellij.psi.PsiFile;
+import com.intellij.psi.PsiManager;
import com.intellij.ui.*;
import com.intellij.ui.components.JBCheckBox;
import com.intellij.ui.components.JBLabel;
@@ -33,12 +39,12 @@
import com.intellij.util.ui.UIUtil;
import com.jetbrains.lang.dart.DartBundle;
import com.jetbrains.lang.dart.flutter.FlutterUtil;
+import com.jetbrains.lang.dart.lsp.DartLspConstants;
+import com.jetbrains.lang.dart.lsp.LspMethod;
+import com.jetbrains.lang.dart.ui.BasicComboBoxWithBrowseButton;
import com.redhat.devtools.lsp4ij.LanguageServerManager;
import com.redhat.devtools.lsp4ij.ServerStatus;
import org.jetbrains.annotations.Nls;
-import com.jetbrains.lang.dart.lsp.LspMethod;
-import com.jetbrains.lang.dart.lsp.DartLspConstants;
-import java.util.stream.Collectors;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -50,8 +56,9 @@
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.ExpandVetoException;
import java.util.*;
+import java.util.stream.Collectors;
-public final class DartConfigurable implements SearchableConfigurable, NoScroll {
+public final class DartConfigurable implements SearchableConfigurable, NoScroll, Disposable {
public static final int WEBDEV_PORT_DEFAULT = 53322;
private static final String WEBDEV_PORT_PROPERTY_NAME = "dart.webdev.port";
@@ -61,7 +68,7 @@ public final class DartConfigurable implements SearchableConfigurable, NoScroll
private JBCheckBox myEnableDartSupportCheckBox;
private JPanel mySettingsPanel;
- private ComboboxWithBrowseButton mySdkPathComboWithBrowse;
+ private BasicComboBoxWithBrowseButton mySdkPathComboWithBrowse;
private JBLabel myVersionLabel;
private JBCheckBox myCheckSdkUpdateCheckBox;
// disabled and unchecked, shown in UI instead of myCheckSdkUpdateCheckBox if selected Dart SDK is a part of a Flutter SDK
@@ -113,10 +120,10 @@ private void initEnableDartSupportCheckBox() {
}
private void initDartSdkControls() {
- DartSdkUtil.initDartSdkControls(myProject, mySdkPathComboWithBrowse, myVersionLabel);
+ DartSdkUtil.initDartSdkControls(myProject, mySdkPathComboWithBrowse, myVersionLabel, this);
- final JTextComponent sdkEditor = (JTextComponent)mySdkPathComboWithBrowse.getComboBox().getEditor().getEditorComponent();
- sdkEditor.getDocument().addDocumentListener(new DocumentAdapter() {
+ final JTextComponent sdkEditor = (JTextComponent)mySdkPathComboWithBrowse.getEditor().getEditorComponent();
+ final DocumentAdapter listener = new DocumentAdapter() {
@Override
protected void textChanged(final @NotNull DocumentEvent e) {
final String sdkHomePath = getTextFromCombo(mySdkPathComboWithBrowse);
@@ -130,7 +137,9 @@ protected void textChanged(final @NotNull DocumentEvent e) {
updateControlsEnabledState();
updateErrorLabel();
}
- });
+ };
+ sdkEditor.getDocument().addDocumentListener(listener);
+ Disposer.register(this, () -> sdkEditor.getDocument().removeDocumentListener(listener));
myCheckSdkUpdateCheckBox.addActionListener(e -> {
final boolean enabled = myCheckSdkUpdateCheckBox.isSelected() && myCheckSdkUpdateCheckBox.isEnabled();
@@ -264,8 +273,8 @@ public boolean isModified() {
return false;
}
- private static @NotNull String getTextFromCombo(final @NotNull ComboboxWithBrowseButton combo) {
- return FileUtilRt.toSystemIndependentName(combo.getComboBox().getEditor().getItem().toString().trim());
+ private static @NotNull String getTextFromCombo(final @NotNull ComboBox> combo) {
+ return FileUtilRt.toSystemIndependentName(combo.getEditor().getItem().toString().trim());
}
@Override
@@ -283,9 +292,9 @@ public void reset() {
// reset UI
myEnableDartSupportCheckBox.setSelected(myDartSupportEnabledInitial);
@NlsSafe String sdkInitialPath = mySdkInitial == null ? "" : FileUtilRt.toSystemDependentName(mySdkInitial.getHomePath());
- mySdkPathComboWithBrowse.getComboBox().getEditor().setItem(sdkInitialPath);
+ mySdkPathComboWithBrowse.getEditor().setItem(sdkInitialPath);
if (!sdkInitialPath.isEmpty()) {
- ensureComboModelContainsCurrentItem(mySdkPathComboWithBrowse.getComboBox());
+ ensureComboModelContainsCurrentItem(mySdkPathComboWithBrowse);
}
final DartSdkUpdateOption sdkUpdateOption = DartSdkUpdateOption.getDartSdkUpdateOption();
@@ -384,6 +393,14 @@ public void apply() {
public void disposeUIResources() {
mySdkInitial = null;
myModulesWithDartSdkLibAttachedInitial.clear();
+ Disposer.dispose(this);
+ }
+
+ @Override
+ public void dispose() {
+ // No-op: this class implements Disposable solely to act as a parent node in the Disposer tree.
+ // All actual resource cleanup (e.g., DocumentListeners) is handled by child Disposables
+ // registered with this instance and triggered via Disposer.dispose(this) in disposeUIResources().
}
private void updateControlsEnabledState() {
@@ -437,7 +454,7 @@ private void updateErrorLabel() {
}
private void createUIComponents() {
- mySdkPathComboWithBrowse = new ComboboxWithBrowseButton(new ComboBox<>());
+ mySdkPathComboWithBrowse = new BasicComboBoxWithBrowseButton<>();
final CheckboxTree.CheckboxTreeCellRenderer checkboxTreeCellRenderer = new CheckboxTree.CheckboxTreeCellRenderer() {
@Override
diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartSdkUtil.java b/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartSdkUtil.java
index 95bb21340..c95dba4d3 100644
--- a/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartSdkUtil.java
+++ b/third_party/src/main/java/com/jetbrains/lang/dart/sdk/DartSdkUtil.java
@@ -1,24 +1,27 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.jetbrains.lang.dart.sdk;
+import com.intellij.openapi.Disposable;
import com.intellij.ide.util.PropertiesComponent;
+import com.intellij.openapi.application.ModalityState;
+import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.ui.ComponentWithBrowseButton;
-import com.intellij.openapi.ui.TextComponentAccessor;
+import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.NlsContexts;
import com.intellij.openapi.util.NlsSafe;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.Strings;
-import com.intellij.ui.ComboboxWithBrowseButton;
import com.intellij.ui.DocumentAdapter;
import com.intellij.ui.components.JBLabel;
import com.intellij.util.ArrayUtilRt;
import com.intellij.util.SmartList;
+import com.intellij.util.concurrency.AppExecutorUtil;
import com.intellij.util.system.CpuArch;
import com.jetbrains.lang.dart.DartBundle;
+import com.jetbrains.lang.dart.ui.BasicComboBoxWithBrowseButton;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -64,11 +67,26 @@ public static boolean isDartSdkHome(final @Nullable String path) {
}
public static void initDartSdkControls(final @Nullable Project project,
- final @NotNull ComboboxWithBrowseButton dartSdkPathComponent,
- final @NotNull JBLabel versionLabel) {
- dartSdkPathComponent.getComboBox().setEditable(true);
- addKnownPathsToCombo(dartSdkPathComponent.getComboBox(), DART_SDK_KNOWN_PATHS, DartSdkUtil::isDartSdkHome);
- if (getItemFromCombo(dartSdkPathComponent.getComboBox()).isEmpty()) {
+ final @NotNull BasicComboBoxWithBrowseButton dartSdkCombo,
+ final @NotNull JBLabel versionLabel,
+ final @NotNull Disposable parentDisposable) {
+ dartSdkCombo.addBrowseFolderListener(DartBundle.message("button.browse.dialog.title.select.dart.sdk.path"),
+ project,
+ FileChooserDescriptorFactory.createSingleFolderDescriptor()
+ .withTitle(DartBundle.message("button.browse.dialog.title.select.dart.sdk.path")),
+ path -> {
+ if (!path.isEmpty() && !isDartSdkHome(path)) {
+ final String probablySdkPath = path + "/dart-sdk";
+ if (isDartSdkHome(probablySdkPath)) {
+ return probablySdkPath;
+ }
+ }
+ return path;
+ },
+ path -> dartSdkCombo.getEditor().setItem(FileUtil.toSystemDependentName(path)));
+
+ addKnownPathsToCombo(dartSdkCombo, DART_SDK_KNOWN_PATHS, DartSdkUtil::isDartSdkHome);
+ if (getItemFromCombo(dartSdkCombo).isEmpty()) {
// Suggest default path according to https://dart.dev/get-dart.
// No need to check folder presence here; even if it doesn't exist - that's the best we can suggest
@NlsSafe String path = SystemInfo.isMac ? CpuArch.isArm64() ? "/opt/homebrew/opt/dart/libexec"
@@ -77,52 +95,34 @@ public static void initDartSdkControls(final @Nullable Project project,
: SystemInfo.isLinux ? "/usr/lib/dart"
: null;
if (path != null) {
- dartSdkPathComponent.getComboBox().getEditor().setItem(path);
+ dartSdkCombo.getEditor().setItem(path);
}
}
- final String sdkHomePath = getItemFromCombo(dartSdkPathComponent.getComboBox());
- final String sdkVersion = getSdkVersion(sdkHomePath);
- versionLabel.setText(sdkVersion == null ? "" : sdkVersion);
+ updateVersionLabelAsync(dartSdkCombo, versionLabel, parentDisposable);
- final TextComponentAccessor textComponentAccessor = new TextComponentAccessor<>() {
+ final JTextComponent editorComponent = (JTextComponent)dartSdkCombo.getEditor().getEditorComponent();
+ final DocumentAdapter listener = new DocumentAdapter() {
@Override
- public String getText(final JComboBox component) {
- return getItemFromCombo(component);
- }
-
- @Override
- public void setText(final @NotNull JComboBox component, final @NotNull String text) {
- if (!text.isEmpty() && !isDartSdkHome(text)) {
- final String probablySdkPath = text + "/dart-sdk";
- if (isDartSdkHome(probablySdkPath)) {
- component.getEditor().setItem(FileUtil.toSystemDependentName(probablySdkPath));
- return;
- }
- }
-
- component.getEditor().setItem(FileUtil.toSystemDependentName(text));
+ protected void textChanged(final @NotNull DocumentEvent e) {
+ updateVersionLabelAsync(dartSdkCombo, versionLabel, parentDisposable);
}
};
+ editorComponent.getDocument().addDocumentListener(listener);
+ Disposer.register(parentDisposable, () -> editorComponent.getDocument().removeDocumentListener(listener));
+ }
- var descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor().withTitle(DartBundle.message("button.browse.dialog.title.select.dart.sdk.path"));
- var browseFolderListener = new ComponentWithBrowseButton.BrowseFolderActionListener<>(dartSdkPathComponent, project, descriptor, textComponentAccessor);
- dartSdkPathComponent.addActionListener(browseFolderListener);
-
- final JTextComponent editorComponent = (JTextComponent)dartSdkPathComponent.getComboBox().getEditor().getEditorComponent();
- editorComponent.getDocument().addDocumentListener(new DocumentAdapter() {
- @Override
- protected void textChanged(final @NotNull DocumentEvent e) {
- final String sdkHomePath = getItemFromCombo(dartSdkPathComponent.getComboBox());
- if(e.getType() == DocumentEvent.EventType.INSERT){
- final String sdkVersion = getSdkVersion(sdkHomePath);
- versionLabel.setText(sdkVersion == null ? "" : sdkVersion);
- }
- }
- });
+ private static void updateVersionLabelAsync(final @NotNull BasicComboBoxWithBrowseButton dartSdkCombo,
+ final @NotNull JBLabel versionLabel,
+ final @NotNull Disposable parentDisposable) {
+ final String sdkHomePath = getItemFromCombo(dartSdkCombo);
+ ReadAction.nonBlocking(() -> getSdkVersion(sdkHomePath))
+ .expireWith(parentDisposable)
+ .finishOnUiThread(ModalityState.any(), version -> versionLabel.setText(version == null ? "" : version))
+ .submit(AppExecutorUtil.getAppExecutorService());
}
- private static @NotNull String getItemFromCombo(final @NotNull JComboBox combo) {
+ private static @NotNull String getItemFromCombo(final @NotNull JComboBox combo) {
return combo.getEditor().getItem().toString().trim();
}
@@ -134,7 +134,7 @@ protected void textChanged(final @NotNull DocumentEvent e) {
return null;
}
- private static void addKnownPathsToCombo(final @NotNull JComboBox combo,
+ private static void addKnownPathsToCombo(final @NotNull JComboBox combo,
final @NotNull String propertyKey,
final @NotNull Predicate super String> pathChecker) {
final SmartList validPathsForUI = new SmartList<>();
diff --git a/third_party/src/main/java/com/jetbrains/lang/dart/ui/BasicComboBoxWithBrowseButton.java b/third_party/src/main/java/com/jetbrains/lang/dart/ui/BasicComboBoxWithBrowseButton.java
new file mode 100644
index 000000000..be9f1518f
--- /dev/null
+++ b/third_party/src/main/java/com/jetbrains/lang/dart/ui/BasicComboBoxWithBrowseButton.java
@@ -0,0 +1,60 @@
+// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+package com.jetbrains.lang.dart.ui;
+
+import com.intellij.icons.AllIcons;
+import com.intellij.openapi.application.ModalityState;
+import com.intellij.openapi.application.ReadAction;
+import com.intellij.openapi.fileChooser.FileChooser;
+import com.intellij.openapi.fileChooser.FileChooserDescriptor;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.ui.ComboBox;
+import com.intellij.openapi.util.NlsContexts;
+import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.ui.components.fields.ExtendableTextField;
+import com.intellij.util.concurrency.AppExecutorUtil;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import javax.swing.plaf.basic.BasicComboBoxEditor;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+public class BasicComboBoxWithBrowseButton extends ComboBox {
+ private final ExtendableTextField myEditor = new ExtendableTextField();
+
+ public BasicComboBoxWithBrowseButton() {
+ setEditable(true);
+ myEditor.setBorder(null);
+ setEditor(new BasicComboBoxEditor() {
+ @Override
+ protected ExtendableTextField createEditorComponent() {
+ return myEditor;
+ }
+ });
+ }
+
+ public void addBrowseFolderListener(@Nullable @NlsContexts.DialogTitle String title,
+ @Nullable Project project,
+ @NotNull FileChooserDescriptor descriptor,
+ @NotNull Function backgroundResolver,
+ @NotNull Consumer edtConsumer) {
+ myEditor.addExtension(
+ ExtendableTextField.Extension.create(
+ AllIcons.General.OpenDisk,
+ AllIcons.General.OpenDiskHover,
+ title,
+ () -> {
+ FileChooser.chooseFile(descriptor, project, this, null, file -> {
+ String path = FileUtil.toSystemIndependentName(file.getPath());
+ ReadAction.nonBlocking(() -> backgroundResolver.apply(path))
+ .finishOnUiThread(ModalityState.any(), edtConsumer)
+ .submit(AppExecutorUtil.getAppExecutorService());
+ });
+ }));
+ }
+
+ @NotNull
+ public ExtendableTextField getEditorComponent() {
+ return myEditor;
+ }
+}
diff --git a/third_party/src/main/resources/messages/DartBundle.properties b/third_party/src/main/resources/messages/DartBundle.properties
index 88e1cf3cc..6fe1c1bb7 100644
--- a/third_party/src/main/resources/messages/DartBundle.properties
+++ b/third_party/src/main/resources/messages/DartBundle.properties
@@ -380,6 +380,7 @@ progress.title.loading.coverage.data=Loading coverage data\u2026
progress.title.activating.coverage.package=Activating coverage package\u2026
dialog.title.select.working.directory=Select Working Directory
button.browse.dialog.title.select.dart.sdk.path=Select Dart SDK Path
+button.browse.dialog.title.select.dart.project.path=Select Dart Project Path
label.text.name=Name:
dialog.title.extract.local.variable=Extract Local Variable
dialog.title.rename.0=Rename {0}
@@ -497,4 +498,4 @@ notification.group.dart.analysis.issue=Dart analysis issue
code.changes.by.dart.analysis.server=Code Changes by the Dart Analysis Server
dart.inlay.hints.closing.labels.name=Closing Labels
-dart.inlay.hints.closing.labels.description=Show labels at the end of code blocks to identify which structure is being closed
\ No newline at end of file
+dart.inlay.hints.closing.labels.description=Show labels at the end of code blocks to identify which structure is being closed
diff --git a/third_party/tool/baseline/251/verifier-baseline.txt b/third_party/tool/baseline/251/verifier-baseline.txt
index 23e85bf64..2f2860927 100644
--- a/third_party/tool/baseline/251/verifier-baseline.txt
+++ b/third_party/tool/baseline/251/verifier-baseline.txt
@@ -1,36 +1,7 @@
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.$$$setupUI$$$() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.applyEditorTo(DartRemoteDebugConfiguration) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.initDartProjectsCombo(Project) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.myDartProjectCombo : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.setSelectedProjectPath(String) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.()
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.addSettingsStateListener(WebProjectGenerator.SettingsStateListener) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.createUIComponents() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.enableIntellijLiveValidation() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.getSettings() : DartProjectWizardData
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$startLoadingTemplates$2(AsyncProcessIcon) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.mySdkPathComboWithBrowse : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.onSdkPathChanged() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.validate() : ValidationInfo
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.createUIComponents() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.getTextFromCombo(ComboboxWithBrowseButton) : String
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.initDartSdkControls() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.mySdkPathComboWithBrowse : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.reset() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil.initDartSdkControls(Project, ComboboxWithBrowseButton, JBLabel) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.(ComboboxWithBrowseButton, JBLabel)
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.textChanged(DocumentEvent) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.val$dartSdkPathComponent : ComboboxWithBrowseButton
* Deprecated constructor com.intellij.codeInsight.template.TemplateContextType.(java.lang.String id, java.lang.String presentableName, java.lang.Class baseContextType) is invoked in com.jetbrains.lang.dart.ide.template.DartTemplateContextType.(String, String, Class)
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.base.DartRunConfigurationBase.writeExternal(Element) : void
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.server.DartRemoteDebugConfiguration.writeExternal(Element) : void
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.server.webdev.DartWebdevConfiguration.writeExternal(Element) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.addSettingsStateListener(WebProjectGenerator.SettingsStateListener) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$addSettingsStateListener$6(WebProjectGenerator.SettingsStateListener, ActionEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$addSettingsStateListener$7(WebProjectGenerator.SettingsStateListener, ListSelectionEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.(DartGeneratorPeer, WebProjectGenerator.SettingsStateListener)
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.textChanged(DocumentEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.val$stateListener : WebProjectGenerator.SettingsStateListener
* Deprecated method com.google.dart.server.generated.AnalysisServer.analysis_getReachableSources(java.lang.String arg0, com.google.dart.server.GetReachableSourcesConsumer arg1) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.google.dart.server.generated.AnalysisServer.analysis_updateOptions(org.dartlang.analysis.server.protocol.AnalysisOptions arg0) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.google.dart.server.generated.AnalysisServer.completion_registerLibraryPaths(java.util.List arg0) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
@@ -39,15 +10,14 @@
* Deprecated method com.intellij.codeInsight.template.TemplateContextType.isInContext(com.intellij.psi.PsiFile file, int offset) : boolean is overridden in class com.jetbrains.lang.dart.ide.template.DartTemplateContextType
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.analyzer.DartAnalysisServerErrorHandler.handleError(String, String, boolean, String, String) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.actions.DartEditorNotificationsProvider.EnableDartSupportForModule.run() : void
-* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView.showNotification(NotificationType, String, String, Icon, boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView$3.hyperlinkActivated(Notification, HyperlinkEvent) : void
+* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView.showNotification(NotificationType, String, String, Icon, boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.pubServer.PubServerService.PubServeOutputListener.showNotificationIfNeeded(boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.sdk.DartSdkUpdateChecker.notifySdkUpdateAvailable(Project, String, String, String) : void
* Deprecated method com.intellij.openapi.actionSystem.ActionPlaces.isMainMenuOrActionSearch(java.lang.String place) : boolean is invoked in com.jetbrains.lang.dart.ide.runner.actions.DartPopFrameAction.update(AnActionEvent) : void
* Deprecated method com.intellij.openapi.actionSystem.UiCompatibleDataProvider.getData(java.lang.String dataId) : java.lang.Object is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsViewPanel.popupInvoked(Component, int, int) : void
* Deprecated method com.intellij.openapi.startup.StartupManager.runWhenProjectIsInitialized(java.lang.Runnable arg0) : void is invoked in com.jetbrains.lang.dart.projectWizard.DartModuleBuilder.runWhenNonModalIfModuleNotDisposed(Runnable, Module) : void
* Deprecated method com.intellij.openapi.vfs.VirtualFileManager.addVirtualFileListener(com.intellij.openapi.vfs.VirtualFileListener arg0, com.intellij.openapi.Disposable arg1) : void is invoked in com.jetbrains.lang.dart.pubServer.PubServerManager.(Project)
-* Deprecated method com.intellij.platform.ProjectGeneratorPeer.addSettingsStateListener(com.intellij.platform.WebProjectGenerator.SettingsStateListener listener) : void is overridden in class com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer
* Deprecated method com.intellij.psi.search.FilenameIndex.getFilesByName(com.intellij.openapi.project.Project project, java.lang.String name, com.intellij.psi.search.GlobalSearchScope scope) : com.intellij.psi.PsiFile[] is invoked in com.jetbrains.lang.dart.ide.runner.server.vmService.DartVmServiceDebugProcess.lambda$guessRemoteProjectRoot$2(String, VirtualFile) : PsiFile[]
* Experimental API class com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures is referenced in com.jetbrains.lang.dart.lsp.DartLanguageServerFactory.createClientFeatures() : LSPClientFeatures. This class can be changed in a future release leading to incompatibilities
* Experimental API class com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures is referenced in com.jetbrains.lang.dart.lsp.DartLauncherBuilder.(LSPClientFeatures). This class can be changed in a future release leading to incompatibilities
@@ -61,10 +31,10 @@
* Experimental API method com.intellij.openapi.vfs.newvfs.events.VFilePropertyChangeEvent.isRename() : boolean is invoked in com.jetbrains.lang.dart.DartFileListener.prepareChange(List) : AsyncFileListener.ChangeApplier. This method can be changed in a future release leading to incompatibilities
* Experimental API method com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures.createLauncherBuilder() : org.eclipse.lsp4j.jsonrpc.Launcher.Builder is overridden in class com.jetbrains.lang.dart.lsp.DartLspClientFeatures. This method can be changed in a future release leading to incompatibilities
* Experimental API method com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures.getProject() : com.intellij.openapi.project.Project is invoked in com.jetbrains.lang.dart.lsp.DartLauncherBuilder.createMessageProducer(InputStream, MessageJsonHandler, MessageIssueHandler) : MessageProducer. This method can be changed in a future release leading to incompatibilities
+* Internal class com.intellij.psi.impl.include.FileIncludeInfo is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider$1.visitXmlTag(XmlTag) : void. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.psi.impl.include.FileIncludeInfo is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider.getIncludeInfos(FileContent) : FileIncludeInfo[]. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.psi.impl.include.FileIncludeInfo is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider.getIncludeInfos(XmlFile) : FileIncludeInfo[]. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.psi.impl.include.FileIncludeInfo is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider.resolveIncludedFile(FileIncludeInfo, PsiFile) : PsiFileSystemItem. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
-* Internal class com.intellij.psi.impl.include.FileIncludeInfo is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider$1.visitXmlTag(XmlTag) : void. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.psi.impl.include.FileIncludeProvider is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.psi.impl.include.FileIncludeProvider is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider.(). This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.util.PlatformUtils is referenced in com.jetbrains.lang.dart.sdk.DartSdkLibUtil.isIdeWithMultipleModuleSupport() : boolean. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
diff --git a/third_party/tool/baseline/252/verifier-baseline.txt b/third_party/tool/baseline/252/verifier-baseline.txt
index 23e85bf64..2f2860927 100644
--- a/third_party/tool/baseline/252/verifier-baseline.txt
+++ b/third_party/tool/baseline/252/verifier-baseline.txt
@@ -1,36 +1,7 @@
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.$$$setupUI$$$() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.applyEditorTo(DartRemoteDebugConfiguration) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.initDartProjectsCombo(Project) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.myDartProjectCombo : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.setSelectedProjectPath(String) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.()
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.addSettingsStateListener(WebProjectGenerator.SettingsStateListener) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.createUIComponents() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.enableIntellijLiveValidation() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.getSettings() : DartProjectWizardData
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$startLoadingTemplates$2(AsyncProcessIcon) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.mySdkPathComboWithBrowse : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.onSdkPathChanged() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.validate() : ValidationInfo
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.createUIComponents() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.getTextFromCombo(ComboboxWithBrowseButton) : String
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.initDartSdkControls() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.mySdkPathComboWithBrowse : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.reset() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil.initDartSdkControls(Project, ComboboxWithBrowseButton, JBLabel) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.(ComboboxWithBrowseButton, JBLabel)
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.textChanged(DocumentEvent) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.val$dartSdkPathComponent : ComboboxWithBrowseButton
* Deprecated constructor com.intellij.codeInsight.template.TemplateContextType.(java.lang.String id, java.lang.String presentableName, java.lang.Class baseContextType) is invoked in com.jetbrains.lang.dart.ide.template.DartTemplateContextType.(String, String, Class)
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.base.DartRunConfigurationBase.writeExternal(Element) : void
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.server.DartRemoteDebugConfiguration.writeExternal(Element) : void
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.server.webdev.DartWebdevConfiguration.writeExternal(Element) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.addSettingsStateListener(WebProjectGenerator.SettingsStateListener) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$addSettingsStateListener$6(WebProjectGenerator.SettingsStateListener, ActionEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$addSettingsStateListener$7(WebProjectGenerator.SettingsStateListener, ListSelectionEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.(DartGeneratorPeer, WebProjectGenerator.SettingsStateListener)
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.textChanged(DocumentEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.val$stateListener : WebProjectGenerator.SettingsStateListener
* Deprecated method com.google.dart.server.generated.AnalysisServer.analysis_getReachableSources(java.lang.String arg0, com.google.dart.server.GetReachableSourcesConsumer arg1) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.google.dart.server.generated.AnalysisServer.analysis_updateOptions(org.dartlang.analysis.server.protocol.AnalysisOptions arg0) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.google.dart.server.generated.AnalysisServer.completion_registerLibraryPaths(java.util.List arg0) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
@@ -39,15 +10,14 @@
* Deprecated method com.intellij.codeInsight.template.TemplateContextType.isInContext(com.intellij.psi.PsiFile file, int offset) : boolean is overridden in class com.jetbrains.lang.dart.ide.template.DartTemplateContextType
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.analyzer.DartAnalysisServerErrorHandler.handleError(String, String, boolean, String, String) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.actions.DartEditorNotificationsProvider.EnableDartSupportForModule.run() : void
-* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView.showNotification(NotificationType, String, String, Icon, boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView$3.hyperlinkActivated(Notification, HyperlinkEvent) : void
+* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView.showNotification(NotificationType, String, String, Icon, boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.pubServer.PubServerService.PubServeOutputListener.showNotificationIfNeeded(boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.sdk.DartSdkUpdateChecker.notifySdkUpdateAvailable(Project, String, String, String) : void
* Deprecated method com.intellij.openapi.actionSystem.ActionPlaces.isMainMenuOrActionSearch(java.lang.String place) : boolean is invoked in com.jetbrains.lang.dart.ide.runner.actions.DartPopFrameAction.update(AnActionEvent) : void
* Deprecated method com.intellij.openapi.actionSystem.UiCompatibleDataProvider.getData(java.lang.String dataId) : java.lang.Object is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsViewPanel.popupInvoked(Component, int, int) : void
* Deprecated method com.intellij.openapi.startup.StartupManager.runWhenProjectIsInitialized(java.lang.Runnable arg0) : void is invoked in com.jetbrains.lang.dart.projectWizard.DartModuleBuilder.runWhenNonModalIfModuleNotDisposed(Runnable, Module) : void
* Deprecated method com.intellij.openapi.vfs.VirtualFileManager.addVirtualFileListener(com.intellij.openapi.vfs.VirtualFileListener arg0, com.intellij.openapi.Disposable arg1) : void is invoked in com.jetbrains.lang.dart.pubServer.PubServerManager.(Project)
-* Deprecated method com.intellij.platform.ProjectGeneratorPeer.addSettingsStateListener(com.intellij.platform.WebProjectGenerator.SettingsStateListener listener) : void is overridden in class com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer
* Deprecated method com.intellij.psi.search.FilenameIndex.getFilesByName(com.intellij.openapi.project.Project project, java.lang.String name, com.intellij.psi.search.GlobalSearchScope scope) : com.intellij.psi.PsiFile[] is invoked in com.jetbrains.lang.dart.ide.runner.server.vmService.DartVmServiceDebugProcess.lambda$guessRemoteProjectRoot$2(String, VirtualFile) : PsiFile[]
* Experimental API class com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures is referenced in com.jetbrains.lang.dart.lsp.DartLanguageServerFactory.createClientFeatures() : LSPClientFeatures. This class can be changed in a future release leading to incompatibilities
* Experimental API class com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures is referenced in com.jetbrains.lang.dart.lsp.DartLauncherBuilder.(LSPClientFeatures). This class can be changed in a future release leading to incompatibilities
@@ -61,10 +31,10 @@
* Experimental API method com.intellij.openapi.vfs.newvfs.events.VFilePropertyChangeEvent.isRename() : boolean is invoked in com.jetbrains.lang.dart.DartFileListener.prepareChange(List) : AsyncFileListener.ChangeApplier. This method can be changed in a future release leading to incompatibilities
* Experimental API method com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures.createLauncherBuilder() : org.eclipse.lsp4j.jsonrpc.Launcher.Builder is overridden in class com.jetbrains.lang.dart.lsp.DartLspClientFeatures. This method can be changed in a future release leading to incompatibilities
* Experimental API method com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures.getProject() : com.intellij.openapi.project.Project is invoked in com.jetbrains.lang.dart.lsp.DartLauncherBuilder.createMessageProducer(InputStream, MessageJsonHandler, MessageIssueHandler) : MessageProducer. This method can be changed in a future release leading to incompatibilities
+* Internal class com.intellij.psi.impl.include.FileIncludeInfo is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider$1.visitXmlTag(XmlTag) : void. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.psi.impl.include.FileIncludeInfo is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider.getIncludeInfos(FileContent) : FileIncludeInfo[]. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.psi.impl.include.FileIncludeInfo is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider.getIncludeInfos(XmlFile) : FileIncludeInfo[]. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.psi.impl.include.FileIncludeInfo is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider.resolveIncludedFile(FileIncludeInfo, PsiFile) : PsiFileSystemItem. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
-* Internal class com.intellij.psi.impl.include.FileIncludeInfo is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider$1.visitXmlTag(XmlTag) : void. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.psi.impl.include.FileIncludeProvider is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.psi.impl.include.FileIncludeProvider is referenced in com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider.(). This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
* Internal class com.intellij.util.PlatformUtils is referenced in com.jetbrains.lang.dart.sdk.DartSdkLibUtil.isIdeWithMultipleModuleSupport() : boolean. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
diff --git a/third_party/tool/baseline/253/verifier-baseline.txt b/third_party/tool/baseline/253/verifier-baseline.txt
index a9c0ceab7..378bc8d92 100644
--- a/third_party/tool/baseline/253/verifier-baseline.txt
+++ b/third_party/tool/baseline/253/verifier-baseline.txt
@@ -1,55 +1,25 @@
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.$$$setupUI$$$() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.applyEditorTo(DartRemoteDebugConfiguration) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.initDartProjectsCombo(Project) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.myDartProjectCombo : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.setSelectedProjectPath(String) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.()
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.addSettingsStateListener(WebProjectGenerator.SettingsStateListener) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.createUIComponents() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.enableIntellijLiveValidation() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.getSettings() : DartProjectWizardData
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$startLoadingTemplates$2(AsyncProcessIcon) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.mySdkPathComboWithBrowse : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.onSdkPathChanged() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.validate() : ValidationInfo
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.createUIComponents() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.getTextFromCombo(ComboboxWithBrowseButton) : String
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.initDartSdkControls() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.mySdkPathComboWithBrowse : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.reset() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil.initDartSdkControls(Project, ComboboxWithBrowseButton, JBLabel) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.(ComboboxWithBrowseButton, JBLabel)
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.textChanged(DocumentEvent) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.val$dartSdkPathComponent : ComboboxWithBrowseButton
* Deprecated constructor com.intellij.codeInsight.template.TemplateContextType.(java.lang.String id, java.lang.String presentableName, java.lang.Class baseContextType) is invoked in com.jetbrains.lang.dart.ide.template.DartTemplateContextType.(String, String, Class)
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.base.DartRunConfigurationBase.writeExternal(Element) : void
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.server.DartRemoteDebugConfiguration.writeExternal(Element) : void
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.server.webdev.DartWebdevConfiguration.writeExternal(Element) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.addSettingsStateListener(WebProjectGenerator.SettingsStateListener) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$addSettingsStateListener$6(WebProjectGenerator.SettingsStateListener, ActionEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$addSettingsStateListener$7(WebProjectGenerator.SettingsStateListener, ListSelectionEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.(DartGeneratorPeer, WebProjectGenerator.SettingsStateListener)
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.textChanged(DocumentEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.val$stateListener : WebProjectGenerator.SettingsStateListener
* Deprecated method com.google.dart.server.generated.AnalysisServer.analysis_getReachableSources(java.lang.String arg0, com.google.dart.server.GetReachableSourcesConsumer arg1) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.google.dart.server.generated.AnalysisServer.analysis_updateOptions(org.dartlang.analysis.server.protocol.AnalysisOptions arg0) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.google.dart.server.generated.AnalysisServer.completion_registerLibraryPaths(java.util.List arg0) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.google.dart.server.generated.AnalysisServer.execution_setSubscriptions(java.util.List arg0) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.intellij.codeInsight.daemon.DaemonCodeAnalyzer.restart() : void is invoked in com.jetbrains.lang.dart.analyzer.DartServerData.lambda$forceFileAnnotation$5(Project) : void
-* Deprecated method com.intellij.codeInsight.daemon.DaemonCodeAnalyzer.restart() : void is invoked in com.jetbrains.lang.dart.sdk.DartConfigurable.lambda$apply$5(boolean) : void
+* Deprecated method com.intellij.codeInsight.daemon.DaemonCodeAnalyzer.restart() : void is invoked in com.jetbrains.lang.dart.sdk.DartConfigurable.lambda$apply$6(boolean) : void
* Deprecated method com.intellij.codeInsight.daemon.impl.PsiElementListNavigator.openTargets(com.intellij.openapi.editor.Editor e, T[] targets, java.lang.String title, java.lang.String findUsagesTitle, javax.swing.ListCellRenderer listRenderer) : void is invoked in com.jetbrains.lang.dart.ide.actions.DartServerGotoSuperHandler.invoke(Project, Editor, PsiFile) : void
* Deprecated method com.intellij.codeInsight.template.TemplateContextType.isInContext(com.intellij.psi.PsiFile file, int offset) : boolean is overridden in class com.jetbrains.lang.dart.ide.template.DartTemplateContextType
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.analyzer.DartAnalysisServerErrorHandler.handleError(String, String, boolean, String, String) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.actions.DartEditorNotificationsProvider.EnableDartSupportForModule.run() : void
-* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView.showNotification(NotificationType, String, String, Icon, boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView$3.hyperlinkActivated(Notification, HyperlinkEvent) : void
+* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView.showNotification(NotificationType, String, String, Icon, boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.pubServer.PubServerService.PubServeOutputListener.showNotificationIfNeeded(boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.sdk.DartSdkUpdateChecker.notifySdkUpdateAvailable(Project, String, String, String) : void
* Deprecated method com.intellij.openapi.actionSystem.ActionPlaces.isMainMenuOrActionSearch(java.lang.String place) : boolean is invoked in com.jetbrains.lang.dart.ide.runner.actions.DartPopFrameAction.update(AnActionEvent) : void
* Deprecated method com.intellij.openapi.actionSystem.UiCompatibleDataProvider.getData(java.lang.String dataId) : java.lang.Object is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsViewPanel.popupInvoked(Component, int, int) : void
* Deprecated method com.intellij.openapi.startup.StartupManager.runWhenProjectIsInitialized(java.lang.Runnable arg0) : void is invoked in com.jetbrains.lang.dart.projectWizard.DartModuleBuilder.runWhenNonModalIfModuleNotDisposed(Runnable, Module) : void
* Deprecated method com.intellij.openapi.vfs.VirtualFileManager.addVirtualFileListener(com.intellij.openapi.vfs.VirtualFileListener arg0, com.intellij.openapi.Disposable arg1) : void is invoked in com.jetbrains.lang.dart.pubServer.PubServerManager.(Project)
-* Deprecated method com.intellij.platform.ProjectGeneratorPeer.addSettingsStateListener(com.intellij.platform.WebProjectGenerator.SettingsStateListener listener) : void is overridden in class com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer
* Deprecated method com.intellij.psi.search.FilenameIndex.getFilesByName(com.intellij.openapi.project.Project project, java.lang.String name, com.intellij.psi.search.GlobalSearchScope scope) : com.intellij.psi.PsiFile[] is invoked in com.jetbrains.lang.dart.ide.runner.server.vmService.DartVmServiceDebugProcess.lambda$guessRemoteProjectRoot$2(String, VirtualFile) : PsiFile[]
* Deprecated method com.intellij.ui.CheckboxTreeBase.CheckboxTreeCellRendererBase.getCheckbox() : javax.swing.JCheckBox is invoked in com.jetbrains.lang.dart.sdk.DartConfigurable$2.customizeRenderer(JTree, Object, boolean, boolean, boolean, int, boolean) : void
* Experimental API class com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures is referenced in com.jetbrains.lang.dart.lsp.DartLanguageServerFactory.createClientFeatures() : LSPClientFeatures. This class can be changed in a future release leading to incompatibilities
diff --git a/third_party/tool/baseline/261/verifier-baseline.txt b/third_party/tool/baseline/261/verifier-baseline.txt
index e19361bc0..47e8ac737 100644
--- a/third_party/tool/baseline/261/verifier-baseline.txt
+++ b/third_party/tool/baseline/261/verifier-baseline.txt
@@ -1,48 +1,19 @@
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.$$$setupUI$$$() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.applyEditorTo(DartRemoteDebugConfiguration) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.initDartProjectsCombo(Project) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.myDartProjectCombo : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.ide.runner.server.ui.DartRemoteDebugConfigurationEditor.setSelectedProjectPath(String) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.()
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.addSettingsStateListener(WebProjectGenerator.SettingsStateListener) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.createUIComponents() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.enableIntellijLiveValidation() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.getSettings() : DartProjectWizardData
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$startLoadingTemplates$2(AsyncProcessIcon) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.mySdkPathComboWithBrowse : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.onSdkPathChanged() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.validate() : ValidationInfo
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.createUIComponents() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.getTextFromCombo(ComboboxWithBrowseButton) : String
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.initDartSdkControls() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.mySdkPathComboWithBrowse : ComboboxWithBrowseButton
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartConfigurable.reset() : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil.initDartSdkControls(Project, ComboboxWithBrowseButton, JBLabel) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.(ComboboxWithBrowseButton, JBLabel)
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.textChanged(DocumentEvent) : void
-* Deprecated class com.intellij.ui.ComboboxWithBrowseButton is referenced in com.jetbrains.lang.dart.sdk.DartSdkUtil$2.val$dartSdkPathComponent : ComboboxWithBrowseButton
* Deprecated constructor com.intellij.codeInsight.template.TemplateContextType.(java.lang.String id, java.lang.String presentableName, java.lang.Class baseContextType) is invoked in com.jetbrains.lang.dart.ide.template.DartTemplateContextType.(String, String, Class)
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.base.DartRunConfigurationBase.writeExternal(Element) : void
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.server.DartRemoteDebugConfiguration.writeExternal(Element) : void
* Deprecated constructor com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters.() is invoked in com.jetbrains.lang.dart.ide.runner.server.webdev.DartWebdevConfiguration.writeExternal(Element) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.addSettingsStateListener(WebProjectGenerator.SettingsStateListener) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$addSettingsStateListener$6(WebProjectGenerator.SettingsStateListener, ActionEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer.lambda$addSettingsStateListener$7(WebProjectGenerator.SettingsStateListener, ListSelectionEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.(DartGeneratorPeer, WebProjectGenerator.SettingsStateListener)
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.textChanged(DocumentEvent) : void
-* Deprecated interface com.intellij.platform.WebProjectGenerator.SettingsStateListener is referenced in com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer$4.val$stateListener : WebProjectGenerator.SettingsStateListener
* Deprecated method com.google.dart.server.generated.AnalysisServer.analysis_getReachableSources(java.lang.String arg0, com.google.dart.server.GetReachableSourcesConsumer arg1) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.google.dart.server.generated.AnalysisServer.analysis_updateOptions(org.dartlang.analysis.server.protocol.AnalysisOptions arg0) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.google.dart.server.generated.AnalysisServer.completion_registerLibraryPaths(java.util.List arg0) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.google.dart.server.generated.AnalysisServer.execution_setSubscriptions(java.util.List arg0) : void is overridden in class com.google.dart.server.internal.remote.RemoteAnalysisServerImpl
* Deprecated method com.intellij.codeInsight.daemon.DaemonCodeAnalyzer.restart() : void is invoked in com.jetbrains.lang.dart.analyzer.DartServerData.lambda$forceFileAnnotation$5(Project) : void
-* Deprecated method com.intellij.codeInsight.daemon.DaemonCodeAnalyzer.restart() : void is invoked in com.jetbrains.lang.dart.sdk.DartConfigurable.lambda$apply$5(boolean) : void
+* Deprecated method com.intellij.codeInsight.daemon.DaemonCodeAnalyzer.restart() : void is invoked in com.jetbrains.lang.dart.sdk.DartConfigurable.lambda$apply$6(boolean) : void
* Deprecated method com.intellij.codeInsight.daemon.impl.PsiElementListNavigator.openTargets(com.intellij.openapi.editor.Editor e, T[] targets, java.lang.String title, java.lang.String findUsagesTitle, javax.swing.ListCellRenderer listRenderer) : void is invoked in com.jetbrains.lang.dart.ide.actions.DartServerGotoSuperHandler.invoke(Project, Editor, PsiFile) : void
* Deprecated method com.intellij.codeInsight.template.TemplateContextType.isInContext(com.intellij.psi.PsiFile file, int offset) : boolean is overridden in class com.jetbrains.lang.dart.ide.template.DartTemplateContextType
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.analyzer.DartAnalysisServerErrorHandler.handleError(String, String, boolean, String, String) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.actions.DartEditorNotificationsProvider.EnableDartSupportForModule.run() : void
-* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView.showNotification(NotificationType, String, String, Icon, boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView$3.hyperlinkActivated(Notification, HyperlinkEvent) : void
+* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.ide.errorTreeView.DartProblemsView.showNotification(NotificationType, String, String, Icon, boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.pubServer.PubServerService.PubServeOutputListener.showNotificationIfNeeded(boolean) : void
* Deprecated method com.intellij.notification.Notification.setListener(com.intellij.notification.NotificationListener listener) : com.intellij.notification.Notification is invoked in com.jetbrains.lang.dart.sdk.DartSdkUpdateChecker.notifySdkUpdateAvailable(Project, String, String, String) : void
* Deprecated method com.intellij.openapi.actionSystem.ActionPlaces.isMainMenuOrActionSearch(java.lang.String place) : boolean is invoked in com.jetbrains.lang.dart.ide.runner.actions.DartPopFrameAction.update(AnActionEvent) : void
@@ -53,7 +24,6 @@
* Deprecated method com.intellij.openapi.application.ReadAction.compute(com.intellij.openapi.util.ThrowableComputable action) : T is invoked in com.jetbrains.lang.dart.ide.runner.server.vmService.DartVmServiceDebugProcess.guessRemoteProjectRoot(ElementList) : void
* Deprecated method com.intellij.openapi.startup.StartupManager.runWhenProjectIsInitialized(java.lang.Runnable arg0) : void is invoked in com.jetbrains.lang.dart.projectWizard.DartModuleBuilder.runWhenNonModalIfModuleNotDisposed(Runnable, Module) : void
* Deprecated method com.intellij.openapi.vfs.VirtualFileManager.addVirtualFileListener(com.intellij.openapi.vfs.VirtualFileListener arg0, com.intellij.openapi.Disposable arg1) : void is invoked in com.jetbrains.lang.dart.pubServer.PubServerManager.(Project)
-* Deprecated method com.intellij.platform.ProjectGeneratorPeer.addSettingsStateListener(com.intellij.platform.WebProjectGenerator.SettingsStateListener listener) : void is overridden in class com.jetbrains.lang.dart.projectWizard.DartGeneratorPeer
* Deprecated method com.intellij.psi.search.FilenameIndex.getFilesByName(com.intellij.openapi.project.Project project, java.lang.String name, com.intellij.psi.search.GlobalSearchScope scope) : com.intellij.psi.PsiFile[] is invoked in com.jetbrains.lang.dart.ide.runner.server.vmService.DartVmServiceDebugProcess.lambda$guessRemoteProjectRoot$2(String, VirtualFile) : PsiFile[]
* Deprecated method com.intellij.ui.CheckboxTreeBase.CheckboxTreeCellRendererBase.getCheckbox() : javax.swing.JCheckBox is invoked in com.jetbrains.lang.dart.sdk.DartConfigurable$2.customizeRenderer(JTree, Object, boolean, boolean, boolean, int, boolean) : void
* Deprecated method com.intellij.xdebugger.XDebuggerManager.startSession(com.intellij.execution.runners.ExecutionEnvironment arg0, com.intellij.xdebugger.XDebugProcessStarter arg1) : com.intellij.xdebugger.XDebugSession is invoked in com.jetbrains.lang.dart.ide.runner.DartRunner.doExecuteDartDebug(RunProfileState, ExecutionEnvironment, String) : RunContentDescriptor
@@ -66,7 +36,6 @@
* Experimental API class com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures is referenced in com.jetbrains.lang.dart.lsp.DartLspClientFeatures.createLauncherBuilder() : Launcher.Builder. This class can be changed in a future release leading to incompatibilities
* Experimental API constructor com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures.() is invoked in com.jetbrains.lang.dart.lsp.DartLspClientFeatures.(). This constructor can be changed in a future release leading to incompatibilities
* Experimental API method com.intellij.openapi.command.CoroutinesKt.writeCommandAction(com.intellij.openapi.project.Project project, java.lang.String commandName, kotlin.jvm.functions.Function0 action, kotlin.coroutines.Continuation $completion) : java.lang.Object is invoked in com.jetbrains.lang.dart.analyzer.DartAnalysisServerImpl.lsp_workspaceApplyEdit$1.invokeSuspend(Object) : Object. This method can be changed in a future release leading to incompatibilities
-* Experimental API method com.intellij.openapi.components.ComponentManagerEx.getServiceAsync(java.lang.Class keyClass, kotlin.coroutines.Continuation $completion) : java.lang.Object is invoked in com.jetbrains.lang.dart.ide.actions.DartPubActionBase.Companion.showPubOutputConsole(Module, GeneralCommandLine, OSProcessHandler, VirtualFile, String, Continuation) : Object. This method can be changed in a future release leading to incompatibilities
* Experimental API method com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures.createLauncherBuilder() : org.eclipse.lsp4j.jsonrpc.Launcher.Builder is overridden in class com.jetbrains.lang.dart.lsp.DartLspClientFeatures. This method can be changed in a future release leading to incompatibilities
* Experimental API method com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures.getProject() : com.intellij.openapi.project.Project is invoked in com.jetbrains.lang.dart.lsp.DartLauncherBuilder.createMessageProducer(InputStream, MessageJsonHandler, MessageIssueHandler) : MessageProducer. This method can be changed in a future release leading to incompatibilities
* Internal class com.intellij.util.PlatformUtils is referenced in com.jetbrains.lang.dart.sdk.DartSdkLibUtil.isIdeWithMultipleModuleSupport() : boolean. This class is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
@@ -76,8 +45,6 @@
* Internal field com.intellij.execution.testframework.sm.runner.states.TestStateInfo.Magnitude.ERROR_INDEX : com.intellij.execution.testframework.sm.runner.states.TestStateInfo.Magnitude is accessed in com.jetbrains.lang.dart.ide.runner.test.DartTestRerunner.computeTestNameRegexp() : String. This field is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the field is not supposed to be used in client code.
* Internal field com.intellij.execution.testframework.sm.runner.states.TestStateInfo.Magnitude.FAILED_INDEX : com.intellij.execution.testframework.sm.runner.states.TestStateInfo.Magnitude is accessed in com.jetbrains.lang.dart.ide.runner.test.DartTestRerunner.computeTestNameRegexp() : String. This field is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the field is not supposed to be used in client code.
* Internal field com.intellij.execution.testframework.sm.runner.states.TestStateInfo.Magnitude.TERMINATED_INDEX : com.intellij.execution.testframework.sm.runner.states.TestStateInfo.Magnitude is accessed in com.jetbrains.lang.dart.ide.runner.test.DartTestRerunner.computeTestNameRegexp() : String. This field is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the field is not supposed to be used in client code.
-* Internal interface com.intellij.openapi.components.ComponentManagerEx is referenced in com.jetbrains.lang.dart.ide.actions.DartPubActionBase.Companion.showPubOutputConsole(Module, GeneralCommandLine, OSProcessHandler, VirtualFile, String, Continuation) : Object. This interface is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the class is not supposed to be used in client code.
-* Internal method com.intellij.openapi.components.ComponentManagerEx.getServiceAsync(java.lang.Class keyClass, kotlin.coroutines.Continuation $completion) : java.lang.Object is invoked in com.jetbrains.lang.dart.ide.actions.DartPubActionBase.Companion.showPubOutputConsole(Module, GeneralCommandLine, OSProcessHandler, VirtualFile, String, Continuation) : Object. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the method is not supposed to be used in client code.
* Internal method com.intellij.ui.IconManager.loadRasterizedIcon(java.lang.String arg0, java.lang.String arg1, java.lang.ClassLoader arg2, int arg3, int arg4) : javax.swing.Icon is invoked in icons.DartIcons.load(String, String, int, int) : Icon. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the method is not supposed to be used in client code.
* Internal method com.intellij.util.net.NetKt.loopbackSocketAddress(int port) : java.net.InetSocketAddress is invoked in com.jetbrains.lang.dart.pubServer.PubServerService.connectToProcess(AsyncPromise, int, OSProcessHandler, Consumer) : void. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the method is not supposed to be used in client code.
* Internal method com.intellij.util.PlatformUtils.getPlatformPrefix() : java.lang.String is invoked in com.jetbrains.lang.dart.sdk.DartSdkLibUtil.isIdeWithMultipleModuleSupport() : boolean. This method is marked with @org.jetbrains.annotations.ApiStatus.Internal annotation or @com.intellij.openapi.util.IntellijInternalApi annotation and indicates that the method is not supposed to be used in client code.
diff --git a/third_party/tool/update_baselines.bat b/third_party/tool/update_baselines.bat
new file mode 100644
index 000000000..1368bc621
--- /dev/null
+++ b/third_party/tool/update_baselines.bat
@@ -0,0 +1,46 @@
+@echo off
+setlocal enabledelayedexpansion
+
+:: Script to create or update baselines based on current verification reports.
+:: Run this from the repository root.
+
+if not exist "third_party" (
+ echo Error: This script must be run from the repository root directory.
+ exit /b 1
+)
+
+echo Running plugin verification...
+if exist "third_party\build\reports\pluginVerifier" (
+ rd /s /q "third_party\build\reports\pluginVerifier"
+)
+
+pushd third_party
+call gradlew.bat verifyPlugin
+popd
+
+set "versions=251 252 253 261"
+
+for %%v in (%versions%) do (
+ echo Processing baseline for %%v...
+ set "BASELINE=third_party\tool\baseline\%%v\verifier-baseline.txt"
+ set "REPORT="
+
+ :: Find the first report.md in a directory matching the version using PowerShell for robustness
+ for /f "usebackq delims=" %%f in (`powershell -NoProfile -Command "Get-ChildItem -Path 'third_party\build\reports\pluginVerifier' -Filter 'report.md' -Recurse | Where-Object { $_.FullName -match '-%%v\.' } | Select-Object -ExpandProperty FullName -First 1"`) do (
+ set "REPORT=%%f"
+ )
+
+ if defined REPORT (
+ echo Extracting issues from !REPORT!
+ if not exist "third_party\tool\baseline\%%v" mkdir "third_party\tool\baseline\%%v"
+
+ :: Extract lines starting with * and sort them (case-sensitive)
+ powershell -NoProfile -Command "Get-Content -LiteralPath '!REPORT!' | Where-Object { $_ -match '^\*' } | Sort-Object -CaseSensitive | Set-Content -LiteralPath '!BASELINE!'"
+
+ echo Updated baseline at !BASELINE!
+ ) else (
+ echo Warning: Report does not exist for version %%v. Skipping.
+ )
+)
+
+echo Done updating baselines.