📄 rowadjustments.java
字号:
/* * (C) 2001 by Argonne National Laboratory * See COPYRIGHT in top-level directory. *//* * @author Anthony Chan */package viewer.zoomable;import java.awt.Font;import java.awt.Component;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ComponentEvent;import java.awt.event.ComponentAdapter;import javax.swing.JPanel;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JTextField;import javax.swing.BoxLayout;import javax.swing.BorderFactory;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import viewer.common.Const;import viewer.common.Routines;import viewer.common.Parameters;import viewer.common.LabeledTextField;public class RowAdjustments{ private static final Font FONT = Const.FONT; private static final String ROW_COUNT_RESIZE = "Row"; private static final String ROW_HEIGHT_RESIZE = "Height"; private ViewportTimeYaxis canvas_vport; private YaxisTree tree_view; private JComboBox combo_ROW_RESIZE; private ScaledSlider slider_VIS_ROW_HEIGHT; private LabeledTextField fld_VIS_ROW_HEIGHT; private ScaledSlider slider_VIS_ROW_COUNT; private LabeledTextField fld_VIS_ROW_COUNT; private JButton fitall_btn; private JPanel combo_panel; private JPanel txtfld_panel; private JPanel slider_panel; private JPanel misc_panel; private Diagnosis debug; public RowAdjustments( ViewportTimeYaxis y_vport, YaxisTree y_tree ) { canvas_vport = y_vport; tree_view = y_tree; debug = new Diagnosis(); debug.setActive( false ); combo_ROW_RESIZE = new JComboBox(); combo_ROW_RESIZE.setFont( FONT ); combo_ROW_RESIZE.setEditable( false ); combo_ROW_RESIZE.addItem( ROW_COUNT_RESIZE ); combo_ROW_RESIZE.addItem( ROW_HEIGHT_RESIZE ); combo_ROW_RESIZE.setToolTipText( "Display mode for row adjustment control" ); combo_ROW_RESIZE.addActionListener( new ResizeModeActionListener() ); // For constant row height during timeline canvas resizing slider_VIS_ROW_HEIGHT = new ScaledSlider( ScaledSlider.VERTICAL ); slider_VIS_ROW_HEIGHT.setLabelFormat( Const.INTEGER_FORMAT ); slider_VIS_ROW_HEIGHT.setInverted( true ); slider_VIS_ROW_HEIGHT.addChangeListener( new RowHeightSliderListener() ); fld_VIS_ROW_HEIGHT = new LabeledTextField( "Row Height", Const.INTEGER_FORMAT ); fld_VIS_ROW_HEIGHT.setToolTipText( "Row height of timeline in pixel." ); fld_VIS_ROW_HEIGHT.setHorizontalAlignment( JTextField.CENTER ); fld_VIS_ROW_HEIGHT.setEditable( true ); fld_VIS_ROW_HEIGHT.addActionListener( new RowHeightTextListener() ); // For constant visible row count during timeline canvas resizing slider_VIS_ROW_COUNT = new ScaledSlider( ScaledSlider.VERTICAL ); slider_VIS_ROW_COUNT.setLabelFormat( Const.INTEGER_FORMAT ); slider_VIS_ROW_COUNT.setInverted( false ); slider_VIS_ROW_COUNT.addChangeListener( new RowCountSliderListener() ); fld_VIS_ROW_COUNT = new LabeledTextField( "Row Count", "###0.0#" ); // Const.INTEGER_FORMAT ); fld_VIS_ROW_COUNT.setToolTipText( "Visible row count in canvas during timeline window resizing." ); fld_VIS_ROW_COUNT.setHorizontalAlignment( JTextField.CENTER ); fld_VIS_ROW_COUNT.setEditable( true ); fld_VIS_ROW_COUNT.addActionListener( new RowCountTextListener() ); combo_panel = new JPanel(); combo_panel.setLayout( new BoxLayout( combo_panel, BoxLayout.X_AXIS ) ); // combo_panel.setBorder( BorderFactory.createEtchedBorder() ); combo_panel.add( combo_ROW_RESIZE ); txtfld_panel = new JPanel(); txtfld_panel.setLayout( new BoxLayout( txtfld_panel, BoxLayout.X_AXIS ) ); txtfld_panel.setBorder( BorderFactory.createEtchedBorder() ); slider_panel = new JPanel(); slider_panel.setLayout( new BoxLayout( slider_panel, BoxLayout.X_AXIS ) ); slider_panel.addComponentListener( new SliderComponentListener() ); fitall_btn = new JButton( "Fit All Rows" ); fitall_btn.setFont( FONT ); fitall_btn.setBorder( BorderFactory.createRaisedBevelBorder() ); fitall_btn.setToolTipText( "Compute the optimal row height that fits all the rows " + "in the Timeline canvas" ); fitall_btn.addActionListener( new ButtonActionListener() ); fitall_btn.setAlignmentX( Component.LEFT_ALIGNMENT ); misc_panel = new JPanel(); misc_panel.setLayout( new BoxLayout( misc_panel, BoxLayout.Y_AXIS ) ); // misc_panel.setBorder( BorderFactory.createEtchedBorder() ); misc_panel.setBorder( BorderFactory.createEmptyBorder(1,1,1,1) ); misc_panel.add( fitall_btn ); } public void initYLabelTreeSize() { int avail_screen_height; int row_height; int row_count; tree_view.setRootVisible( Parameters.Y_AXIS_ROOT_VISIBLE ); avail_screen_height = (int) ( Routines.getScreenSize().height * Parameters.SCREEN_HEIGHT_RATIO ); row_count = tree_view.getRowCount(); row_height = avail_screen_height / row_count; tree_view.setRowHeight( row_height ); tree_view.setVisibleRowCount( row_count ); } public void initSlidersAndTextFields() { int row_count = tree_view.getRowCount(); int row_height = tree_view.getRowHeight(); if ( debug.isActive() ) { debug.println( "initSliders: START" ); debug.println( "initSliders: N=" + row_count + ", h=" + row_height ); } // Assume SliderComponentListener will resize the Timeline canvas // to the size = row_height * row_count slider_VIS_ROW_HEIGHT.setMinLabel( 0 ); slider_VIS_ROW_HEIGHT.setMaxLabel( row_height * row_count ); if ( row_count > 1 ) { slider_VIS_ROW_COUNT.setMinLabel( 1 ); slider_VIS_ROW_COUNT.setMaxLabel( row_count ); } else { slider_VIS_ROW_COUNT.setMinLabel( 0 ); slider_VIS_ROW_COUNT.setMaxLabel( 1 ); } if ( Parameters.ROW_RESIZE_MODE.equals( ROW_COUNT_RESIZE ) ) { combo_ROW_RESIZE.setSelectedItem( ROW_COUNT_RESIZE ); // Set one the component, e.g. fld_VIS_ROW_COUNT, then Invoke // fld_VIS_ROW_COUNT's listener to set other 3 components. i.e. // slider_VIS_ROW_COUNT, fld_VIS_ROW_HEIGHT,& slider_VIS_ROW_HEIGHT fld_VIS_ROW_COUNT.setDouble( (double) row_count ); fld_VIS_ROW_COUNT.fireActionPerformed(); } else if ( Parameters.ROW_RESIZE_MODE.equals( ROW_HEIGHT_RESIZE ) ) { combo_ROW_RESIZE.setSelectedItem( ROW_HEIGHT_RESIZE ); // Set one the component, e.g. fld_VIS_ROW_HEIGHT, then Invoke // fld_VIS_ROW_HEIGHT's listener to set other 3 components. i.e. // slider_VIS_ROW_HEIGHT, fld_VIS_ROW_COUNT,& slider_VIS_ROW_COUNT fld_VIS_ROW_HEIGHT.setDouble( (double) row_height ); fld_VIS_ROW_HEIGHT.fireActionPerformed(); } if ( debug.isActive() ) debug.println( "initSliders: END" ); } public JPanel getComboBoxPanel() { return combo_panel; } public JPanel getTextFieldPanel() { return txtfld_panel; } public JPanel getSliderPanel() { return slider_panel; } public JPanel getMiscPanel() { return misc_panel; } private void initPanelsToRowHeightMode() { txtfld_panel.removeAll(); txtfld_panel.add( fld_VIS_ROW_HEIGHT ); txtfld_panel.revalidate(); txtfld_panel.repaint(); slider_panel.removeAll(); slider_panel.add( slider_VIS_ROW_HEIGHT ); slider_panel.revalidate(); slider_panel.repaint(); } private void initPanelsToRowCountMode() { txtfld_panel.removeAll(); txtfld_panel.add( fld_VIS_ROW_COUNT ); txtfld_panel.revalidate(); txtfld_panel.repaint(); slider_panel.removeAll(); slider_panel.add( slider_VIS_ROW_COUNT ); slider_panel.revalidate(); slider_panel.repaint(); } private class ResizeModeActionListener implements ActionListener { public void actionPerformed( ActionEvent evt ) { if ( debug.isActive() ) debug.println( "ResizeModeActionListener: START" ); String resize_mode = (String) combo_ROW_RESIZE.getSelectedItem(); if ( resize_mode.equals( ROW_COUNT_RESIZE ) ) { Parameters.ROW_RESIZE_MODE = ROW_COUNT_RESIZE; initPanelsToRowCountMode(); } else if ( resize_mode.equals( ROW_HEIGHT_RESIZE ) ) { Parameters.ROW_RESIZE_MODE = ROW_HEIGHT_RESIZE; initPanelsToRowHeightMode(); } if ( debug.isActive() ) debug.println( "ResizeModeActionListener: END" ); } } public void updateSlidersAfterTreeExpansion() { String resize_mode = (String) combo_ROW_RESIZE.getSelectedItem(); if ( resize_mode.equals( ROW_COUNT_RESIZE ) ) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -