Как удалить вкладку Startup / Configuration из плагина Intellij, расширяющего RunConfigurationBase

#intellij-idea #intellij-plugin

#intellij-идея #intellij-плагин

Вопрос:

Я создаю пользовательский плагин IntelliJ (следуя руководству IntelliJ), который реализует пользовательскую конфигурацию запуска. Мой плагин «запустит» содержимое открытого файла в редакторе на удаленном сервере и отобразит результат в IntelliJ (своего рода игровая площадка для скриптов). Я использовал дизайнер графического интерфейса IntelliJ для создания формы, и она отображается в конфигурации Edit Run, однако она отображается на 2 вкладках (Конфигурация и Запуск / Конфигурация) .. ни одна из которых я явно не определяю, я предполагаю, что они получены из моего расширения RunConfigurationBase?.

 public class RunConfigurationImpl extends RunConfigurationBase {

    public RunConfigurationImpl(Project project, ConfigurationFactory factory, String name) {
        super(project, factory, name);
    }

    @NotNull
    @Override
    public SettingsEditor<? extends RunConfiguration> getConfigurationEditor() {
        return new SettingsEditorImpl();
    }

    @Nullable
    @Override
    public SettingsEditor<ConfigurationPerRunnerSettings> getRunnerSettingsEditor(ProgramRunner runner) {
        return null;
    }

    @Override
    public void checkConfiguration() throws RuntimeConfigurationException {
    }

    @Nullable
    @Override
    public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment executionEnvironment) throws ExecutionException {
        return null;
    }
}
  

Первая вкладка в порядке (Конфигурация)..
введите описание изображения здесь

Однако я не хочу снова указывать одни и те же поля на вкладке Startup / Connection, на самом деле, я рад просто избавиться от этой вкладки — или, на самом деле, мне все равно, от какой вкладки я избавлюсь, я просто хочу, чтобы поля отображались один раз.

Есть какие-либо указания на то, как избавиться от этой вкладки?

введите описание изображения здесь

Ответ №1:

Смотрите, com.intellij.execution.configurations.RunConfiguration#getRunnerSettingsEditor он возвращается null по умолчанию, поэтому оставьте его null , не переопределяйте его.

Комментарии:

1. К сожалению, это не помогает. Моя вкладка Startup / Connection все еще там. Для начала я не переопределял getRunnerSettingsEditor, но я сделал это с возвратом null (в случае, если RUNNERSETTINGBASE был). Я добавил точки останова, чтобы увидеть, что мой метод также вызывается.

2. Хорошо, что такое com.intellij.execution.runners. ProgramRunner#getSettingsEditor в вашем случае? Это тоже должно быть null .

3. Василий — Да! Спасибо! Проблема заключалась в том, что getSettingsEditor() от моего programmrunnerimpl возвращал экземпляр моего SettingsEditor. Когда возвращается значение null с этим, вкладка исчезает! Если вы хотите обновить свой ответ, чтобы включить возврат null для обоих (?) RunConfiguration и getRunnerSettingsEditor от Programmrunner(), я рад проголосовать и отметить как правильный ответ!

Ответ №2:

Это консолидация ответа Василия и последующих комментариев.

Чтобы удалить вкладку Startup / Connection в пользовательском интерфейсе конфигурации запуска, убедитесь, что null возвращается из методов, getRunnerSettingsEditor() настраиваемых классами, которые расширяют com.intellij.execution.configurations.RunConfiguration и com.intellij.execution.runners.ProgramRunner

По умолчанию абстрактные классы API возвращают null для этих методов, поэтому убедитесь, что вы их не переопределяете.