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

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

Introduction

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

Prototype

CompositeSettingsBuilder

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()));
            }/*from www . j  a v  a2 s . co  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();
                                }
                            };
                        }
                    });
        }
    }
}