Package org.sonar.ide.intellij.ui

Source Code of org.sonar.ide.intellij.ui.SonarModuleConfiguration

package org.sonar.ide.intellij.ui;

import com.intellij.openapi.module.Module;
import com.intellij.openapi.options.BaseConfigurable;
import com.intellij.openapi.options.ConfigurationException;
import org.apache.commons.lang.StringUtils;
import org.jdesktop.swingx.JXBusyLabel;
import org.jetbrains.annotations.Nls;
import org.sonar.ide.intellij.component.SonarModuleComponent;
import org.sonar.ide.intellij.listener.RefreshProjectListListener;
import org.sonar.ide.intellij.model.ProjectComboBoxModel;
import org.sonar.ide.intellij.model.SonarProject;
import org.sonar.ide.intellij.utils.SonarUtils;
import org.sonar.ide.intellij.worker.RefreshProjectListWorker;
import org.sonar.wsclient.Sonar;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

public class SonarModuleConfiguration extends BaseConfigurable implements RefreshProjectListListener
{
    private JLabel lblHost;
    private JTextField txtHost;
    private JButton btnRefreshProjects;
    private JTextField txtUser;
    private JLabel lblUser;
    private JLabel lblPassword;
    private JPasswordField txtPassword;
    private JLabel lblUseProxy;
    private JCheckBox useProxyBox;
    private JLabel lblProject;
    private JComboBox cmbProject;
    private JPanel pnlMain;
    private JXBusyLabel lblRefreshingProjects;

    private ProjectComboBoxModel projectComboBoxModel;

    private SonarModuleComponent sonarModuleComponent;

    public SonarModuleConfiguration(Module module)
    {
        sonarModuleComponent = module.getComponent(SonarModuleComponent.class);
        projectComboBoxModel = new ProjectComboBoxModel();
        cmbProject.setModel(projectComboBoxModel);

        btnRefreshProjects.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                startRefreshProjects();
            }
        });
        cmbProject.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                setModified(true);
            }
        });


        txtHost.setText(sonarModuleComponent.getState().host);
        txtUser.setText(sonarModuleComponent.getState().user);
        txtPassword.setText(sonarModuleComponent.getState().password);
        useProxyBox.setSelected(sonarModuleComponent.getState().useProxy);


        if (!StringUtils.isEmpty(txtHost.getText()))
        {
            startRefreshProjects();
        }
    }

    private void startRefreshProjects()
    {
        lblRefreshingProjects.setBusy(true);
        btnRefreshProjects.setEnabled(false);
        txtHost.setEnabled(false);
        txtUser.setEnabled(false);
        txtPassword.setEnabled(false);
        useProxyBox.setEnabled(false);
        cmbProject.setEnabled(false);

        Sonar sonarConn = SonarUtils.getSonar(txtHost.getText(), txtUser.getText(), new String(
                txtPassword.getPassword()),
                                              useProxyBox.isSelected());
        RefreshProjectListWorker refreshProjectListWorker = new RefreshProjectListWorker(sonarConn);
        refreshProjectListWorker.addListener(this);
        refreshProjectListWorker.execute();
    }

    @Override
    public void doneRefreshProjects(final List<SonarProject> newProjectList)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                if (newProjectList != null)
                {
                    projectComboBoxModel.refreshProjectList(newProjectList, sonarModuleComponent.getState().projectKey);
                }
                lblRefreshingProjects.setBusy(false);
                btnRefreshProjects.setEnabled(true);
                txtHost.setEnabled(true);
                txtUser.setEnabled(true);
                txtPassword.setEnabled(true);
                useProxyBox.setEnabled(true);
                cmbProject.setEnabled(true);
            }
        });
    }

    @Nls
    @Override
    public String getDisplayName()
    {
        return "Sonar Configuration";
    }

    @Override
    public String getHelpTopic()
    {
        return null;
    }

    @Override
    public JComponent createComponent()
    {
        return pnlMain;
    }

    @Override
    public void apply() throws ConfigurationException
    {
        if (cmbProject.getSelectedItem() != null)
        {
            sonarModuleComponent.getState().host = txtHost.getText();
            sonarModuleComponent.getState().user = txtUser.getText();
            sonarModuleComponent.getState().password = new String(txtPassword.getPassword());
            sonarModuleComponent.getState().projectKey =
                    ((SonarProject) (cmbProject.getSelectedItem())).getResource().getKey();
            sonarModuleComponent.getState().useProxy = useProxyBox.isSelected();
            sonarModuleComponent.getState().configured = true;
        }
    }

    @Override
    public void reset()
    {
    }

    @Override
    public void disposeUIResources()
    {
    }
}
TOP

Related Classes of org.sonar.ide.intellij.ui.SonarModuleConfiguration

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.