📄 viewframechooser.java
字号:
import java.util.Date;import java.util.Enumeration;import java.io.*;import java.awt.*;import java.awt.event.*;import java.net.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.border.*;import javax.swing.text.*;public class ViewFrameChooser extends JFrame implements DocumentListener, ActionListener, TimeInterface{ private Graph_Pane stat_preview = null; private int Npreview; private int Nset; private int Nconnect = 2; private String[] connect_names = { "Disconnected States", "Connected States" }; private int connect_idx = 1; private JRadioButton[] connect_btns; private int Nview; private String[] view_names; private int view_idx; private JRadioButton[] view_btns; private int Nframe; private int frame_idx; private JLabel frame_idx_tag; private JTextField frame_idx_fld; private JButton prev_btn; private JButton display_btn; private JButton next_btn; private JButton close_btn; Mainwin init_win; SLOG_ProxyInputStream slog = null; SLOG_Frame slog_frame = null; PlotData slog_plotdata = null; private FrameDisplay frame_display = null; // private ProgressMonitor progress_mntr = null; private ProgressDialog progress_mntr = null; private FrameReadingTask task = null; private Timer timer = null; public ViewFrameChooser( final SLOG_ProxyInputStream in_slog, final String[] in_view_names ) { super(); slog = in_slog; SLOG_Statistics slog_statistics = slog.GetStatistics(); SLOG_Profile slog_profile = slog.GetProfile(); SLOG_Dir slog_dir = slog.GetDir(); int in_Nframe = slog_dir.NumOfFrames(); if ( in_Nframe > 0 ) { Nframe = in_Nframe; frame_idx = 0; } else return; if ( in_view_names.length > 0 ) { Nview = in_view_names.length; view_idx = 1; view_names = new String[ Nview ]; for ( int ii = 0; ii < Nview; ii++ ) view_names[ ii ] = new String( in_view_names[ ii ] ); } else return; Npreview = slog_statistics.GetNumOfBins(); Nset = slog_statistics.GetNumOfSets(); String pview_legends[] = new String[ Nset ]; Color pview_colors[] = new Color[ Nset ]; double pview_vals[][] = new double[ Nset ][ Npreview ]; Enumeration statsets = slog_statistics.GetEnumerationOfSets(); Enumeration profile = slog_profile.GetEnumerationOfEntries(); SLOG_StatSet statset; String color_name; int idx = 0; while ( statsets.hasMoreElements() ) { statset = ( SLOG_StatSet ) statsets.nextElement(); pview_legends[ idx ] = new String( statset.label ); color_name = slog_profile.GetColor( statset.intvltype ); pview_colors[ idx ] = ColorUtil.getColor( color_name ); for ( int ii = 0; ii < Npreview; ii++ ) pview_vals[ idx ][ ii ] = statset.bins[ ii ]; idx++; } // top_panel consists 3 subpanels: // view_panel, idx_panel( text field ), btn_panel( buttons ) setTitle( "View & Frame Selector" ); // setSize( 300, 200 ); setBackground( Color.gray ); getContentPane().setLayout( new GridBagLayout() ); GridBagConstraints constraint = new GridBagConstraints(); // Specify stat_preview panel Border bdr1 = BorderFactory.createEmptyBorder (4, 4, 2, 4); Border bdr2 = BorderFactory.createLoweredBevelBorder(); Border bdr3 = BorderFactory.createCompoundBorder( bdr1, bdr2 ); JPanel top_panel = new JPanel(); top_panel.setBorder( bdr3 ); top_panel.setLayout( new GridBagLayout() ); stat_preview = new Graph_Pane( this, "Event Count vs Time", pview_vals, pview_legends, pview_colors, slog_dir.StartTime(), slog_dir.EndTime() ); constraint.fill = GridBagConstraints.NONE; constraint.gridwidth = 1; constraint.gridheight = 1; constraint.gridx = 0; constraint.gridy = 0; top_panel.add( stat_preview, constraint ); stat_preview.setTimeListener( this ); constraint.fill = GridBagConstraints.BOTH; constraint.gridwidth = 2; constraint.gridheight = 1; constraint.gridx = 0; constraint.gridy = 0; getContentPane().add( top_panel, constraint ); UpdateGraphTimeMarker(); // Specify connect_panel JPanel connect_panel = new JPanel(); connect_panel.setBorder( new TitledBorder( new EtchedBorder(), "Connectivity Options" ) ); connect_btns = new JRadioButton[ Nconnect ]; ButtonGroup connect_group = new ButtonGroup(); for ( int ii = 0; ii < Nconnect; ii++ ) { connect_btns[ ii ] = new JRadioButton( connect_names[ ii ] ); // connect_btns[ ii ].addActionListener( this ); connect_group.add( connect_btns[ ii ] ); connect_panel.add( connect_btns[ ii ] ); } connect_btns[ connect_idx ].doClick(); // Temporary disable the Connected States Button // connect_btns[ Nconnect - 1 ].setEnabled( false ); // constraint.fill = GridBagConstraints.HORIZONTAL; constraint.gridwidth = 1; constraint.gridheight = 1; constraint.gridx = 0; constraint.gridy = 1; getContentPane().add( connect_panel, constraint ); // Specify view_panel JPanel view_panel = new JPanel(); view_panel.setBorder( new TitledBorder( new EtchedBorder(), "View Options" ) ); view_btns = new JRadioButton[ Nview ]; ButtonGroup view_group = new ButtonGroup(); for ( int ii = 0; ii < Nview; ii++ ) { view_btns[ ii ] = new JRadioButton( view_names[ ii ] ); // view_btns[ ii ].addActionListener( this ); view_group.add( view_btns[ ii ] ); view_panel.add( view_btns[ ii ] ); } view_btns[ view_idx ].doClick(); constraint.fill = GridBagConstraints.HORIZONTAL; constraint.gridwidth = 1; constraint.gridheight = 1; constraint.gridx = 1; constraint.gridy = 1; getContentPane().add( view_panel, constraint ); // Specify idx_panel( text field ) JPanel idx_panel = new JPanel(); idx_panel.setBorder( new TitledBorder( new EtchedBorder(), "Frame Information" ) ); idx_panel.setLayout( new GridBagLayout() ); constraint.fill = GridBagConstraints.HORIZONTAL; JLabel info_tag = new JLabel( " Number of Frames = " ); constraint.gridx = 0; constraint.gridy = 0; idx_panel.add( info_tag, constraint ); JLabel info_value = new JLabel( Integer.toString( Nframe ) ); constraint.gridx = 1; constraint.gridy = 0; idx_panel.add( info_value, constraint ); frame_idx_fld = new JTextField( 10 ); frame_idx_fld.setHorizontalAlignment( JTextField.CENTER ); frame_idx_fld.setText( Integer.toString( frame_idx ) ); frame_idx_tag = new JLabel( " Current Frame = " ); frame_idx_tag.setLabelFor( frame_idx_fld ); constraint.gridx = 0; constraint.gridy = 1; idx_panel.add( frame_idx_tag, constraint ); constraint.gridx = 1; constraint.gridy = 1; idx_panel.add( frame_idx_fld, constraint ); constraint.fill = GridBagConstraints.BOTH; constraint.gridwidth = 1; constraint.gridheight = 1; constraint.gridx = 0; constraint.gridy = 2; getContentPane().add( idx_panel, constraint ); // Specify btn_panel( buttons ) JPanel btn_panel = new JPanel(); btn_panel.setBorder( new TitledBorder( new EtchedBorder(), "Frame Operations" ) ); btn_panel.setLayout( new FlowLayout() ); Dimension btn_dim = new Dimension( 90, 50 ); URL icon_URL; ImageIcon back_arrow_icon = null; icon_URL = getURL( "images/prev_arrow.gif" ); if ( icon_URL != null ) back_arrow_icon = new ImageIcon( icon_URL ); prev_btn = new JButton( "Previous", back_arrow_icon ); prev_btn.setVerticalTextPosition( AbstractButton.BOTTOM ); prev_btn.setHorizontalTextPosition( AbstractButton.CENTER ); // prev_btn.setPreferredSize( btn_dim ); prev_btn.setToolTipText( "Decrement the frame index counter" ); prev_btn.setEnabled( false ); // prev_btn.addActionListener( this ); btn_panel.add( prev_btn ); ImageIcon load_arrow_icon = null; icon_URL = getURL( "images/load_arrow.gif" ); if ( icon_URL != null ) load_arrow_icon = new ImageIcon( icon_URL ); display_btn = new JButton( "Display", load_arrow_icon ); display_btn.setVerticalTextPosition( AbstractButton.BOTTOM ); display_btn.setHorizontalTextPosition( AbstractButton.CENTER ); // display_btn.setPreferredSize( btn_dim ); display_btn.setPreferredSize( prev_btn.getPreferredSize() ); display_btn.setToolTipText( "Read the requested frame " + "and Display it" ); display_btn.setEnabled( false ); // display_btn.addActionListener( this ); btn_panel.add( display_btn ); ImageIcon next_arrow_icon = null; icon_URL = getURL( "images/next_arrow.gif" ); if ( icon_URL != null ) next_arrow_icon = new ImageIcon( icon_URL ); next_btn = new JButton( "Next", next_arrow_icon ); next_btn.setVerticalTextPosition( AbstractButton.BOTTOM ); next_btn.setHorizontalTextPosition( AbstractButton.CENTER ); // next_btn.setPreferredSize( btn_dim ); next_btn.setPreferredSize( prev_btn.getPreferredSize() ); next_btn.setToolTipText( "Increment the frame index counter" ); next_btn.setEnabled( false ); // next_btn.addActionListener( this ); btn_panel.add( next_btn ); constraint.fill = GridBagConstraints.BOTH; constraint.gridwidth = 1; constraint.gridheight = 1; constraint.gridx = 1; constraint.gridy = 2; getContentPane().add( btn_panel, constraint ); // Specify the various components for this Action Listener for ( int ii = 0; ii < Nconnect; ii++ ) connect_btns[ ii ].addActionListener( this ); for ( int ii = 0; ii < Nview; ii++ ) view_btns[ ii ].addActionListener( this ); prev_btn.addActionListener( this ); display_btn.addActionListener( this ); next_btn.addActionListener( this ); // Specify the "close" button/* close_btn = new JButton( "Close" ); close_btn.setToolTipText( "Close this window" ); close_btn.addActionListener( this ); constraint.fill = GridBagConstraints.EAST; constraint.gridwidth = 2; constraint.gridheight = 1; constraint.gridx = 0; constraint.gridy = 3; getContentPane().add( close_btn, constraint );*/ frame_idx_fld.getDocument().addDocumentListener( this ); FrameButtonsIdxFldEnabled( frame_idx_fld.getText() ); EnableViewConnectivitySwitches(); addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { closePreview(); } } ); } // Set Frame Buttons according to the frame_idx and Nframe public void EnableFrameButtonsIdxFld() { frame_idx_fld.setEnabled( true ); if ( frame_idx >= 0 && frame_idx < Nframe ) { if ( frame_idx > 0 ) prev_btn.setEnabled( true ); else prev_btn.setEnabled( false ); display_btn.setEnabled( true ); if ( frame_idx < Nframe-1 ) next_btn.setEnabled( true ); else next_btn.setEnabled( false ); } else { prev_btn.setEnabled( false ); display_btn.setEnabled( false ); next_btn.setEnabled( true ); } } public void DisableFrameButtonsIdxFld() { frame_idx_fld.setEnabled( false ); prev_btn.setEnabled( false ); display_btn.setEnabled( false ); next_btn.setEnabled( false ); } private void FrameButtonsIdxFldEnabled( String str ) { if ( str.length() > 0 ) { try { frame_idx = Integer.parseInt( str ); EnableFrameButtonsIdxFld(); return; } catch ( NumberFormatException nerr ) { System.err.println( "Invalid number format" ); } } DisableFrameButtonsIdxFld(); } public void changedUpdate( DocumentEvent event ) { FrameButtonsIdxFldEnabled( frame_idx_fld.getText() ); UpdateGraphTimeMarker(); } public void insertUpdate( DocumentEvent event ) { changedUpdate( event ); } public void removeUpdate( DocumentEvent event ) { changedUpdate( event ); } private void EnableViewConnectivitySwitches() { switch ( connect_idx ) { case 0: view_btns[ 0 ].setEnabled( true ); view_btns[ 1 ].setEnabled( true ); view_btns[ 2 ].setEnabled( true ); break; case 1: view_btns[ 0 ].setEnabled( true ); view_btns[ 1 ].setEnabled( true ); view_btns[ 2 ].setEnabled( false ); break; default: view_btns[ 0 ].setEnabled( false );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -