package krasa.frameswitcher;
import com.intellij.openapi.components.ProjectComponent;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.WindowManager;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
public class FrameSwitcherProjectComponent implements ProjectComponent {
private final Logger LOG = Logger.getInstance("#" + getClass().getCanonicalName());
private Project project;
private FrameSwitcherApplicationComponent applicationComponent;
private WindowFocusGainedAdapter focusGainedAdapter;
public FrameSwitcherProjectComponent(Project project) {
this.project = project;
applicationComponent = FrameSwitcherApplicationComponent.getInstance();
}
public void initComponent() {
}
public void disposeComponent() {
}
@NotNull
public String getComponentName() {
return "FrameSwitcherProjectComponent";
}
public void projectOpened() {
JFrame frame = WindowManager.getInstance().getFrame(project);
focusGainedAdapter = new WindowFocusGainedAdapter(project, frame, applicationComponent.getProjectFocusMonitor());
frame.addWindowFocusListener(focusGainedAdapter);
focusGainedAdapter.windowGainedFocus(null);
if (applicationComponent.getRemoteSender() != null) {
applicationComponent.getRemoteSender().projectOpened(project);
}
}
public void projectClosed() {
if (applicationComponent.getRemoteSender() != null) {
applicationComponent.getRemoteSender().sendProjectClosed(project);
}
ProjectFocusMonitor projectFocusMonitor = applicationComponent.getProjectFocusMonitor();
projectFocusMonitor.projectClosed(project);
if (focusGainedAdapter != null) {
JFrame frame = focusGainedAdapter.getFrame();
frame.removeWindowFocusListener(focusGainedAdapter);
}
}
}