Example usage for com.intellij.openapi.options CompositeSettingsEditor CompositeSettingsEditor

List of usage examples for com.intellij.openapi.options CompositeSettingsEditor CompositeSettingsEditor

Introduction

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

Prototype

public CompositeSettingsEditor(Factory<Settings> factory) 

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  . j a  v  a 2  s  . c o m
        } 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();
                                }
                            };
                        }
                    });
        }
    }
}