package com.jetbrains.actionscript.profiler.ui.node;
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.pom.Navigatable;
import com.intellij.testFramework.LightVirtualFile;
import com.jetbrains.actionscript.profiler.base.NavigatableDataProducer;
import com.jetbrains.actionscript.profiler.file.LiveObjectsFileType;
import com.jetbrains.actionscript.profiler.livetable.LiveModelController;
import com.jetbrains.actionscript.profiler.model.ProfileData;
import com.jetbrains.actionscript.profiler.model.ProfilingManager;
import org.jetbrains.annotations.NotNull;
import javax.swing.tree.DefaultMutableTreeNode;
/**
* @author: Fedor.Korotkov
*/
public class LiveObjectsNode extends DefaultMutableTreeNode implements NavigatableDataProducer {
private final String runConfigurationName;
private final Module module;
private final ProfilingManager profilingManager;
private final LiveModelController liveModelController;
private Navigatable navigatableCache;
public LiveObjectsNode(String runConfigurationName, Module module, ProfilingManager profilingManager, LiveModelController liveModelController) {
super("Live Objects");
this.runConfigurationName = runConfigurationName;
this.module = module;
this.profilingManager = profilingManager;
this.liveModelController = liveModelController;
}
@Override
public Navigatable getNavigatable() {
if (navigatableCache == null) {
final VirtualFile virtualFile = new LightVirtualFile(runConfigurationName, new LiveObjectsFileType(), ""){
@NotNull
@Override
public String getPath() {
return getName();
}
};
virtualFile.putUserData(ProfileData.CONTROLLER, liveModelController);
virtualFile.putUserData(ProfileData.PROFILING_MANAGER, profilingManager);
navigatableCache = new OpenFileDescriptor(module.getProject(), virtualFile);
}
return navigatableCache;
}
}