Example usage for com.intellij.openapi.options SettingsEditorGroup getEditors

List of usage examples for com.intellij.openapi.options SettingsEditorGroup getEditors

Introduction

In this page you can find the example usage for com.intellij.openapi.options SettingsEditorGroup getEditors.

Prototype

public List<Pair<String, SettingsEditor<T>>> getEditors() 

Source Link

Usage

From source file:com.intellij.execution.impl.ConfigurationSettingsEditor.java

License:Apache License

private void init() {
    if (myCompound == null) {
        myCompound = new SettingsEditorGroup<RunnerAndConfigurationSettings>();
        Disposer.register(this, myCompound);
        if (myConfigurationEditor instanceof SettingsEditorGroup) {
            SettingsEditorGroup<RunConfiguration> group = (SettingsEditorGroup<RunConfiguration>) myConfigurationEditor;
            List<Pair<String, SettingsEditor<RunConfiguration>>> editors = group.getEditors();
            for (Pair<String, SettingsEditor<RunConfiguration>> pair : editors) {
                myCompound.addEditor(pair.getFirst(), new ConfigToSettingsWrapper(pair.getSecond()));
            }//  w  ww  .  ja v  a2  s  .  com
        } else {
            myCompound.addEditor(ExecutionBundle.message("run.configuration.configuration.tab.title"),
                    new ConfigToSettingsWrapper(myConfigurationEditor));
        }

        myRunnersComponent = new RunnersEditorComponent();
        ProgramRunner[] runners = RunnerRegistry.getInstance().getRegisteredRunners();

        final Executor[] executors = ExecutorRegistry.getInstance().getRegisteredExecutors();
        for (final Executor executor : executors) {
            for (ProgramRunner runner : runners) {
                if (runner.canRun(executor.getId(), myConfiguration)) {
                    JComponent perRunnerSettings = createCompositePerRunnerSettings(executor, runner);
                    if (perRunnerSettings != null) {
                        myRunnersComponent.addExecutorComponent(executor, perRunnerSettings);
                    }
                }
            }
        }

        if (myRunnerEditors.size() > 0) {
            myCompound.addEditor(ExecutionBundle.message("run.configuration.startup.connection.rab.title"),
                    new CompositeSettingsEditor<RunnerAndConfigurationSettings>(getFactory()) {
                        @Override
                        public CompositeSettingsBuilder<RunnerAndConfigurationSettings> getBuilder() {
                            return new CompositeSettingsBuilder<RunnerAndConfigurationSettings>() {
                                @NotNull
                                @Override
                                public Collection<SettingsEditor<RunnerAndConfigurationSettings>> getEditors() {
                                    return myRunnerEditors;
                                }

                                @NotNull
                                @Override
                                public JComponent createCompoundEditor(@NotNull Disposable disposable) {
                                    return myRunnersComponent.getComponent();
                                }
                            };
                        }
                    });
        }
    }
}