package com.intellij.flex.uiDesigner;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.ServiceDescriptor;
import com.intellij.openapi.extensions.ExtensionPoint;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.xml.XmlFile;
import org.jetbrains.annotations.NotNull;
import org.picocontainer.MutablePicoContainer;
final class Tests {
public static final int GET_STAGE_OFFSET = 120;
public static void changeDesignerServicesImplementation() {
final ExtensionPoint<ServiceDescriptor> extensionPoint = DesignerApplicationManager.getExtensionPoint();
for (ServiceDescriptor extension : extensionPoint.getExtensions()) {
if (extension.serviceInterface.equals(SocketInputHandler.class.getName())) {
extension.serviceImplementation = TestSocketInputHandler.class.getName();
}
else if (extension.serviceInterface.equals(Client.class.getName())) {
extension.serviceImplementation = TestClient.class.getName();
}
}
}
public static void changeDesignerServiceImplementation(Class serviceInterface, Class serviceImplementation) {
final ExtensionPoint<ServiceDescriptor> extensionPoint = DesignerApplicationManager.getExtensionPoint();
final String interfaceName = serviceInterface.getName();
for (ServiceDescriptor extension : extensionPoint.getExtensions()) {
if (extension.serviceInterface.equals(interfaceName)) {
extension.serviceImplementation = serviceImplementation.getName();
}
}
}
public static void changeServiceImplementation(Class key, Class implementation) {
MutablePicoContainer picoContainer = (MutablePicoContainer)ApplicationManager.getApplication().getPicoContainer();
picoContainer.unregisterComponent(key.getName());
picoContainer.registerComponentImplementation(key.getName(), implementation);
}
@NotNull
public static XmlFile virtualToPsi(Project project, VirtualFile file) {
XmlFile psiFile = (XmlFile)PsiManager.getInstance(project).findFile(file);
assert psiFile != null;
return psiFile;
}
}