Package com.dci.intellij.dbn.connection.config.ui

Source Code of com.dci.intellij.dbn.connection.config.ui.GlobalConnectionSettingsForm

package com.dci.intellij.dbn.connection.config.ui;

import com.dci.intellij.dbn.browser.ui.ModuleListCellRenderer;
import com.dci.intellij.dbn.common.options.ui.ConfigurationEditorForm;
import com.dci.intellij.dbn.connection.ConnectionBundle;
import com.dci.intellij.dbn.connection.ConnectionHandler;
import com.dci.intellij.dbn.connection.GlobalConnectionSettings;
import com.dci.intellij.dbn.connection.ModuleConnectionBundle;
import com.dci.intellij.dbn.connection.ProjectConnectionBundle;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.project.Project;

import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JPanel;
import java.awt.CardLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.HashSet;
import java.util.Set;

public class GlobalConnectionSettingsForm extends ConfigurationEditorForm<GlobalConnectionSettings> implements ItemListener {
    private Set<String> cachedPanelIds = new HashSet<String>();

    private JPanel mainPanel;
    private JPanel connectionsPanel;
    private JComboBox modulesComboBox;

    public GlobalConnectionSettingsForm(GlobalConnectionSettings connectionSettings) {
        super(connectionSettings);
        Project project = connectionSettings.getProject();

        updateModulesChooser(project);
        modulesComboBox.setRenderer(new ModuleListCellRenderer());
        modulesComboBox.addItemListener(this);
        switchSettingsPanel(ProjectConnectionBundle.getInstance(project));
    }

    public JPanel getComponent() {
        return mainPanel;
    }

    public void applyChanges() throws ConfigurationException {
        Project project = getConfiguration().getProject();
        ProjectConnectionBundle projectConnectionManager = ProjectConnectionBundle.getInstance(project);
        projectConnectionManager.apply();

        ModuleManager moduleManager = ModuleManager.getInstance(project);
        Module[] modules = moduleManager.getModules();
        for (Module module : modules) {
            ModuleConnectionBundle.getInstance(module).apply();
        }
    }

    public void resetChanges() {
        Project project = getConfiguration().getProject();
        ProjectConnectionBundle projectConnectionManager = ProjectConnectionBundle.getInstance(project);
        projectConnectionManager.reset();

        ModuleManager moduleManager = ModuleManager.getInstance(project);
        Module[] modules = moduleManager.getModules();
        for (Module module : modules) {
            ModuleConnectionBundle.getInstance(module).reset();
        }
    }

    private void updateModulesChooser(Project project) {
        modulesComboBox.addItem(ProjectConnectionBundle.getInstance(project));

        Module[] modules = ModuleManager.getInstance(project).getModules();
        for (Module module : modules) {
            modulesComboBox.addItem(ModuleConnectionBundle.getInstance(module));
        }
    }

    public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED) {
            ConnectionBundle connectionBundle = (ConnectionBundle) e.getItem();
            switchSettingsPanel(connectionBundle);
        }
    }

    private void switchSettingsPanel(ConnectionBundle connectionBundle) {
        String id = connectionBundle.toString();
        if (!cachedPanelIds.contains(id)) {
            JComponent connectionsSetupPanel = connectionBundle.createComponent();
            connectionsPanel.add(connectionsSetupPanel, id);
            cachedPanelIds.add(id);
        }
        CardLayout cardLayout = (CardLayout) connectionsPanel.getLayout();
        cardLayout.show(connectionsPanel, id);
    }

    public void focusConnectionSettings(ConnectionHandler connectionHandler) {
        ConnectionBundle connectionBundle = connectionHandler.getConnectionBundle();
        modulesComboBox.setSelectedItem(connectionBundle);
        ConnectionBundleSettingsForm settingsEditor = connectionBundle.getSettingsEditor();
        if (settingsEditor != null) {
            settingsEditor.selectConnection(connectionHandler);
        }
    }
}
TOP

Related Classes of com.dci.intellij.dbn.connection.config.ui.GlobalConnectionSettingsForm

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.