#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 для этих методов, поэтому убедитесь, что вы их не переопределяете.