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.calltree.CallTree; import com.jetbrains.actionscript.profiler.file.CpuSnapshotFileType; import com.jetbrains.actionscript.profiler.model.ProfileData; import org.jetbrains.annotations.NotNull; import javax.swing.tree.DefaultMutableTreeNode; import java.text.DateFormat; import java.util.Date; /** * @author: Fedor.Korotkov */ public class CPUSnapshotNode extends DefaultMutableTreeNode implements NavigatableDataProducer { private final String runConfigurationName; private final Module module; private final Date date; private final CallTree callTree; private Navigatable navigatableCache; public CPUSnapshotNode(String name, Module module, Date date, CallTree tree) { this.runConfigurationName = name; this.module = module; this.date = date; this.callTree = tree; setUserObject(getTitle()); } private String getTitle() { return "CPU " + DateFormat.getTimeInstance(DateFormat.SHORT).format(date); } @Override public Navigatable getNavigatable() { if (navigatableCache == null) { final String name = runConfigurationName + " " + getTitle(); VirtualFile virtualFile = new LightVirtualFile(name, new CpuSnapshotFileType(), ""){ @NotNull @Override public String getPath() { return getName(); } }; virtualFile.putUserData(ProfileData.CALL_TREE_KEY, callTree); navigatableCache = new OpenFileDescriptor(module.getProject(), virtualFile); } return navigatableCache; } }