package org.codinjutsu.tools.jenkins.logic; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; import com.intellij.util.messages.MessageBus; import com.intellij.util.messages.MessageBusConnection; import org.codinjutsu.tools.jenkins.model.Jenkins; import org.codinjutsu.tools.jenkins.view.BrowserPanel; public class BrowserPanelAuthenticationHandler implements AuthenticationNotifier, Disposable { private final BrowserPanel browser; private MessageBusConnection connection; public BrowserPanelAuthenticationHandler(final Project project ) { browser = BrowserPanel.getInstance(project); init(); } private void init() { final MessageBus myBus = ApplicationManager.getApplication().getMessageBus(); connection = myBus.connect(); connection.subscribe(AuthenticationNotifier.USER_LOGGED_IN, this); } public static BrowserPanelAuthenticationHandler getInstance(Project project) { return ServiceManager.getService(project, BrowserPanelAuthenticationHandler.class); } @Override public void emptyConfiguration(){ browser.handleEmptyConfiguration(); } @Override public void afterLogin(Jenkins jenkinsWorkspace) { browser.updateWorkspace(jenkinsWorkspace); browser.postAuthenticationInitialization(); browser.initScheduledJobs(); } @Override public void loginCancelled() { browser.setJobsUnavailable(); } @Override public void loginFailed(Exception ex) { browser.notifyErrorJenkinsToolWindow(ex.getLocalizedMessage()); } @Override public void dispose() { connection.disconnect(); } }