001 package org.shiftone.jrat.provider.tree.ui;
002
003 import org.shiftone.jrat.provider.tree.ui.hierarchy.HierarchyModelBuilder;
004 import org.shiftone.jrat.provider.tree.ui.hierarchy.HierarchyPanel;
005 import org.shiftone.jrat.provider.tree.ui.summary.MethodSummaryModel;
006 import org.shiftone.jrat.provider.tree.ui.summary.SummaryPanel;
007 import org.shiftone.jrat.provider.tree.ui.summary.SummaryTableModel;
008 import org.shiftone.jrat.provider.tree.ui.trace.TracePanel;
009 import org.shiftone.jrat.util.log.Logger;
010
011 import javax.swing.*;
012 import java.awt.*;
013 import java.util.Properties;
014 import java.util.Set;
015
016 /**
017 * @author jeff@shiftone.org (Jeff Drost)
018 */
019 public class TraceViewPanel extends JPanel {
020
021 private static final Logger LOG = Logger.getLogger(TraceViewPanel.class);
022 private final JTabbedPane tabbedPane = new JTabbedPane();
023
024 public TraceViewPanel(
025 TraceTreeNode node,
026 Set allMethodKeys,
027 long sessionStartMs,
028 long sessionEndMs,
029 Properties systemProperties,
030 String hostName,
031 String hostAddress) {
032
033 setLayout(new BorderLayout());
034
035 //tabbedPane.setTabPlacement(JTabbedPane.BOTTOM);
036
037 add(tabbedPane, BorderLayout.CENTER);
038
039 long start = System.currentTimeMillis();
040
041 MethodSummaryModel methodSummaryModel = new MethodSummaryModel(node);
042
043 {
044 SummaryTableModel summaryTableModel = new SummaryTableModel(methodSummaryModel);
045 tabbedPane.addTab("Summary",
046 new SummaryPanel(summaryTableModel,
047 methodSummaryModel.getTotalMethodDuration(),
048 sessionStartMs, sessionEndMs,
049 systemProperties,
050 hostName, hostAddress));
051 }
052 {
053 tabbedPane.addTab("Trace", new TracePanel(node));
054 }
055 {
056 HierarchyModelBuilder builder = new HierarchyModelBuilder(methodSummaryModel, allMethodKeys);
057 tabbedPane.addTab("Hierarchy", new HierarchyPanel(builder.getModel()));
058 }
059
060 LOG.info("loaded in " + (System.currentTimeMillis() - start) + " ms");
061
062 }
063
064
065 }