📄 statlinepanel.java
字号:
/* * (C) 2001 by Argonne National Laboratory * See COPYRIGHT in top-level directory. *//* * @author Anthony Chan */package viewer.histogram;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.event.*;import base.drawable.TimeBoundingBox;import base.statistics.BufForTimeAveBoxes;import logformat.slog2.LineIDMap;import viewer.common.Const;import viewer.common.Dialogs;import viewer.common.Parameters;import viewer.zoomable.Debug;import viewer.zoomable.ModelTime;import viewer.zoomable.YaxisMaps;import viewer.zoomable.YaxisTree;import viewer.zoomable.ScrollbarTime;import viewer.zoomable.ModelTimePanel;import viewer.zoomable.RulerTime;import viewer.zoomable.ViewportTime;import viewer.zoomable.ViewportTimeYaxis;import viewer.zoomable.ViewportTimePanel;import viewer.zoomable.RowAdjustments;public class StatlinePanel extends JPanel{ private Window root_window; private TimeBoundingBox timebox; private BufForTimeAveBoxes buf4statboxes; private StatlineToolBar toolbar; private StatBoxStatusPanel status_panel; private BoundedRangeModel y_model; private YaxisMaps y_maps; private YaxisTree y_tree; private JScrollPane y_scroller; private JScrollBar y_scrollbar; private ModelTime time_model; private ScrollbarTime time_scrollbar; private ModelTimePanel time_display_panel; private RulerTime time_ruler; private ViewportTime time_ruler_vport; private ViewportTimePanel time_ruler_panel; private CanvasStatline stat_canvas; private ViewportTimeYaxis stat_canvas_vport; private ViewportTimePanel stat_canvas_panel; private SummaryStateComboBox summary_state_combobox; private RowAdjustments row_adjs; private String err_msg; public StatlinePanel( final Window parent_window, final TimeBoundingBox times, final LineIDMap lineIDmap, final BufForTimeAveBoxes statboxes ) { super(); root_window = parent_window; timebox = times; buf4statboxes = statboxes; /* Initialize the YaxisMaps through the initialization of YaxisTree */ String[] y_colnames = lineIDmap.getColumnLabels(); y_maps = new YaxisMaps( lineIDmap ); y_tree = new YaxisTree( y_maps.getTreeRoot() ); y_maps.setTreeView( y_tree ); /* done YaxisMaps initialization */ /* y_scroller for y_tree needs to be created before stat_canvas, so y_model can be extracted to be used for the creation of stat_canvas */ y_scroller = new JScrollPane( y_tree, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS ); y_scrollbar = y_scroller.getVerticalScrollBar(); y_model = y_scrollbar.getModel(); /* Initialize the ModelTime */ if ( Parameters.HISTOGRAM_ZERO_ORIGIN ) time_model = new ModelTime( root_window, 0.0d, timebox.getDuration() ); else time_model = new ModelTime( root_window, timebox.getEarliestTime(), timebox.getLatestTime() ); this.setLayout( new BorderLayout() ); /* Setting up the CENTER panel to store various time-related GUIs */ JPanel center_panel = new JPanel(); center_panel.setLayout( new BoxLayout( center_panel, BoxLayout.Y_AXIS ) ); /* The Time Ruler */ time_ruler = new RulerTime( time_model ); time_ruler_vport = new ViewportTime( time_model ); time_ruler_vport.setView( time_ruler ); time_ruler_panel = new ViewportTimePanel( time_ruler_vport ); if ( Parameters.HISTOGRAM_ZERO_ORIGIN ) time_ruler_panel.setBorderTitle( " Duration (seconds) ", TitledBorder.RIGHT, TitledBorder.BOTTOM, Const.FONT, Color.red ); else time_ruler_panel.setBorderTitle( " Time (seconds) ", TitledBorder.RIGHT, TitledBorder.BOTTOM, Const.FONT, Color.red ); time_ruler_vport.initLeftMouseToZoom( false ); /* Propagation of AdjustmentEvent originating from scroller: scroller -----> time_model -----> viewport -----> view adj time paint viewport is between time_model and view because viewport is what user sees. */ time_model.addTimeListener( time_ruler_vport ); /* Since there is NOT a specific ViewportTime/ViewTimePanel for RulerTime, so we need to set PreferredSize of RulerTime here. Since CanvasTime's has its MaximumSize set to MAX, CanvasTime's ViewportTimePanel will become space hungary. As we want RulerTime to be fixed height during resize of the top level window, So it becomes CRUCIAL to set Preferred Height of RulerTime's ViewportTimePanel equal to its Minimum Height and Maximum Height. */ Insets ruler_panel_insets = time_ruler_panel.getInsets(); int ruler_panel_height = ruler_panel_insets.top + time_ruler.getJComponentHeight() + ruler_panel_insets.bottom; time_ruler_panel.setPreferredSize( new Dimension( 100, ruler_panel_height ) ); /* The StatLine Canvas */ stat_canvas = new CanvasStatline( time_model, buf4statboxes, y_model, y_maps, y_colnames ); stat_canvas_vport = new ViewportTimeYaxis( time_model, y_model, y_tree ); stat_canvas_vport.setView( stat_canvas ); stat_canvas_panel = new ViewportTimePanel( stat_canvas_vport ); stat_canvas_panel.setBorderTitle( " Statistics ", TitledBorder.RIGHT, TitledBorder.TOP, null, Color.blue ); stat_canvas_vport.initLeftMouseToZoom( true ); /* Inform "stat_canvas_vport" time has been changed */ time_model.addTimeListener( stat_canvas_vport ); /* The View's Time Display Panel */ time_display_panel = new ModelTimePanel( time_model ); time_model.setParamDisplay( time_display_panel ); time_display_panel.addViewportTime( time_ruler_vport ); time_display_panel.addViewportTime( stat_canvas_vport ); JPanel canvas_lmouse; canvas_lmouse = stat_canvas_vport.createLeftMouseModePanel( BoxLayout.X_AXIS ); canvas_lmouse.setToolTipText( "Operation for left mouse button click on Statistics canvas" ); time_display_panel.add( canvas_lmouse ); /* The Horizontal "Time" ScrollBar */ time_scrollbar = new ScrollbarTime( time_model ); time_scrollbar.setEnabled( true ); time_model.setScrollBar( time_scrollbar ); center_panel.add( time_display_panel ); center_panel.add( stat_canvas_panel ); center_panel.add( time_scrollbar ); center_panel.add( time_ruler_panel ); /* Setting up the LEFT panel to store various Y-axis related GUIs */ JPanel left_panel = new JPanel(); left_panel.setLayout( new BoxLayout( left_panel, BoxLayout.Y_AXIS ) );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -