⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 viewporttime.java

📁 fortran并行计算包
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* *  (C) 2001 by Argonne National Laboratory *      See COPYRIGHT in top-level directory. *//* *  @author  Anthony Chan */package viewer.zoomable;import java.util.List;import java.util.ArrayList;import java.util.Iterator;import java.util.Stack;import java.net.URL;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import base.drawable.TimeBoundingBox;import viewer.common.Const;import viewer.common.CustomCursor;import viewer.common.Routines;import viewer.common.Parameters;public class ViewportTime extends JViewport                          implements TimeListener,                                     ComponentListener,                                     MouseInputListener,                                     KeyListener//                                     HierarchyBoundsListener{    private static final Color   INFO_LINE_COLOR  = Color.green;    private static final Color   INFO_AREA_COLOR  = new Color(255,255,  0,64);    private static final Color   ZOOM_LINE_COLOR  = Color.white;    private static final Color   ZOOM_AREA_COLOR  = new Color(132,112,255,96);    private static final Color   FOCUS_LINE_COLOR = Color.red;    private   Point                     view_pt;    // view_img is both a Component and ScrollableView object    private   ScrollableView            view_img      = null;    private   ModelTime                 time_model    = null;    private   ToolBarStatus             toolbar       = null;    private   TimeBoundingBox           vport_timebox = null;    protected CoordPixelImage           coord_xform   = null;    private   TimeBoundingBox           zoom_timebox  = null;    private   TimeBoundingBox           info_timebox  = null;    // info_dialogs list is used to keep track of all InfoDialog boxes.    private   List                      info_dialogs;    private   InfoDialogActionListener  info_action_listener;    private   InfoDialogWindowListener  info_window_listener;    protected boolean                   isLeftMouseClick4Zoom;    private   JRadioButton              zoom_btn;    private   JRadioButton              hand_btn;    public ViewportTime( final ModelTime in_model )    {        time_model             = in_model;        view_pt                = new Point( 0, 0 );        isLeftMouseClick4Zoom  = false;   // default to Scroll with left mouse        zoom_btn               = null;        hand_btn               = null;        /*            For resizing of the viewport => resizing of the ScrollableView        */        addComponentListener( this );        /*            HierarchyBoundsListener is for the case when this class            is moved but NOT resized.  That it checks for situation            to reinitialize the size of ScrollableView when the             scrollable image's size is reset for some obscure reason.            However, defining getPreferredSize() of ScrollableView            seems to make HierarchyBoundsListener of this class            unnecessary.        */        // addHierarchyBoundsListener( this );        // setDebugGraphicsOptions( DebugGraphics.LOG_OPTION );        vport_timebox       = new TimeBoundingBox();    }    public void setView( Component view )    {        super.setView( view );        // Assume "view" has implemented the ComponentListener interface        Dimension min_sz = view.getMinimumSize();        if ( min_sz != null )            setMinimumSize( min_sz );        Dimension max_sz = view.getMaximumSize();        if ( max_sz != null )            setMaximumSize( max_sz );        Dimension pref_sz = view.getPreferredSize();        if ( pref_sz != null )            setPreferredSize( pref_sz );        view_img     = (ScrollableView) view;        coord_xform  = new CoordPixelImage( (ScrollableObject) view_img );        super.addMouseListener( this );        super.addMouseMotionListener( this );        super.addKeyListener( this );        info_dialogs = new ArrayList();        info_action_listener = new InfoDialogActionListener( this,                                                             info_dialogs );        info_window_listener = new InfoDialogWindowListener( this,                                                             info_dialogs );    }    public void setToolBarStatus( ToolBarStatus  in_toolbar )    {        toolbar = in_toolbar;    }    //  For Debugging Profiling    public Dimension getMinimumSize()    {        Dimension min_sz = super.getMinimumSize();        if ( Debug.isActive() )            Debug.println( "ViewportTime: min_size = " + min_sz );        return min_sz;    }    //  For Debugging Profiling    public Dimension getMaximumSize()    {        Dimension max_sz = super.getMaximumSize();        if ( Debug.isActive() )            Debug.println( "ViewportTime: max_size = " + max_sz );        return max_sz;    }    //  For Debugging Profiling    public Dimension getPreferredSize()    {        Dimension pref_sz = super.getPreferredSize();        if ( Debug.isActive() )            Debug.println( "ViewportTime: pref_size = " + pref_sz );        return pref_sz;    }    protected void setYaxisViewPosition( int new_y_view_pos )    {        view_pt.y   = new_y_view_pos;    }    protected int  getXaxisViewPosition()    {        return view_pt.x;    }    /*        timeChanged() is invoked by ModelTime's fireTimeChanged();        Since ModelTime is the Model for the scroll_bar, timeChanged()        will be called everytime when scroll_bar is moved/changed.     */    public void timeChanged( TimeEvent evt )    {        if ( Debug.isActive() ) {            Debug.println( "ViewportTime: timeChanged()'s START: " );            Debug.println( "time_evt = " + evt );        }        if ( view_img != null ) {            // view_img.checkToXXXXView() assumes constant image size            view_img.checkToZoomView();            view_img.checkToScrollView();            if ( Debug.isActive() )                Debug.println( "ViewportTime:timeChanged()'s view_img = "                             + view_img );            view_pt.x = view_img.getXaxisViewPosition();            super.setViewPosition( view_pt );            /*               calling view.repaint() to ensure the view is repainted               after setViewPosition is called.               -- apparently, super.repaint(), the RepaintManager, has invoked                   ( (Component) view_img ).repaint();               -- JViewport.setViewPosition() may have invoked super.repaint()            */            this.repaint();        }        if ( Debug.isActive() ) {            if ( view_img != null ) {                Debug.println( "ViewportTime: "                             + "view_img.getXaxisViewPosition() = "                             + view_pt.x );                Debug.println( "ViewportTime: [after] getViewPosition() = "                             + super.getViewPosition() );            }            Debug.println( "ViewportTime: timeChanged()'s END: " );        }    }    public void componentResized( ComponentEvent evt )    {        if ( Debug.isActive() ) {            Debug.println( "ViewportTime: componentResized()'s START: " );            Debug.println( "comp_evt = " + evt );        }        if ( view_img != null ) {            /*               Instead of informing the view by ComponentEvent, i.e.               doing addComponentListener( (ComponentListener) view ),               ( (ComponentListener) view ).componentResized() is called               directly here to ensure that view is resized before                super.setViewPosition() is called on view.  This is done               to ensure the correct sequence of componentResized().               This also means the "view" does NOT need to implement               ComponentListener interface.            */            view_img.componentResized( this );            /*               It is very IMPORTANT to do setPreferredSize() for JViewport               with custom JComponent view.  If PreferredSize is NOT set,               the top-level container, JFrame, will have difficulty to               compute the size final display window when calling               Window.pack().  The consequence will be the initial               view of JViewport has its getViewPosition() set to (0,0)               in view coordinates during program starts up.               Apparently, Window.pack() uses PreferredSize to compute               window size.            */            this.setPreferredSize( getSize() );            if ( Debug.isActive() )                Debug.println( "ViewportTime: componentResized()'s view_img = "                             + view_img );            view_pt.x = view_img.getXaxisViewPosition();            super.setViewPosition( view_pt );            /*               calling view.repaint() to ensure the view is repainted               after setViewPosition is called.               -- apparently, this.repaint(), the RepaintManager, has invoked                   ( (Component) view_img ).repaint();               -- JViewport.setViewPosition() may have invoked super.repaint()            */            this.repaint();        }        if ( Debug.isActive() ) {            if ( view_img != null ) {                Debug.println( "ViewportTime: "                             + "view_img.getXaxisViewPosition() = "                             + view_pt.x );                Debug.println( "ViewportTime: [after] getViewPosition() = "                             + super.getViewPosition() );            }            Debug.println( "ViewportTime: componentResized()'s END: " );        }    }    public void componentMoved( ComponentEvent evt )     {        if ( Debug.isActive() ) {            Debug.println( "ViewportTime: componentMoved()'s START: " );            Debug.println( "comp_evt = " + evt );            Debug.println( "ViewportTime: componentMoved()'s END: " );        }    }    public void componentHidden( ComponentEvent evt )     {        if ( Debug.isActive() ) {            Debug.println( "ViewportTime: componentHidden()'s START: " );            Debug.println( "comp_evt = " + evt );            Debug.println( "ViewportTime: componentHidden()'s END: " );        }    }    public void componentShown( ComponentEvent evt )     {        if ( Debug.isActive() ) {            Debug.println( "ViewportTime: componentShown()'s START: " );            Debug.println( "comp_evt = " + evt );            Debug.println( "ViewportTime: componentShown()'s END: " );        }    }    private void drawShadyTimeBoundingBox( Graphics g,                                           final TimeBoundingBox timebox,                                           Color line_color, Color area_color )    {        double      line_time;        int         x1_pos, x2_pos;        if ( vport_timebox.overlaps( timebox ) ) {            line_time = timebox.getEarliestTime();            if ( coord_xform.contains( line_time ) ) {                x1_pos = coord_xform.convertTimeToPixel( line_time );                g.setColor( line_color );                g.drawLine( x1_pos, 0, x1_pos, this.getHeight() );            }            else                x1_pos = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -