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

📄 framereadingtask.java

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 JAVA
字号:
import java.io.*;public class FrameReadingTask{    private ViewFrameChooser       frame_chooser  = null;    private SLOG_ProxyInputStream  slog           = null;    private int                    frame_idx      = 0;    private int                    connect_idx    = 0;    private int                    view_idx       = 0;    private SLOG_Frame             slog_frame     = null;    private PlotData               slog_plotdata  = null;    private SwingWorker            read_worker;    private final int              max_prog_idx   = 100;    private final int              min_prog_idx   = 0;    private int                    cur_prog_idx   = min_prog_idx;    private String                 status_str = "";    private boolean                plotdata_ready = false;    private static int             ONE_SECOND     = 1000;    private final  int             refresh_intvl  = ONE_SECOND / 10;    public FrameReadingTask(       ViewFrameChooser       in_chooser,                             final SLOG_ProxyInputStream  in_slog,                             final int                    in_frame_idx,                             final int                    in_connect_idx,                             final int                    in_view_idx )    {        frame_chooser = in_chooser;        slog          = in_slog;        frame_idx     = in_frame_idx;        connect_idx   = in_connect_idx;        view_idx      = in_view_idx;    }    public void Start()    {        read_worker = new SwingWorker()        {            public Object construct()            {                plotdata_ready = false;                ReadFrame();                ConvertFrameToPlotData();                return( slog_plotdata );            }            public void finished()            {                slog_plotdata = ( PlotData ) get();                plotdata_ready = true;                frame_chooser.DisplayFrame();            }        };        read_worker.start();    }    private void ReadFrame()    {        SetCurProgIdx( min_prog_idx );        SLOG_DirEntry dir_entry = slog.GetDir().EntryAt( frame_idx );        try {            SetStatusFieldText( "Reading Frame from Logfile" );            slog_frame = slog.GetFrame( dir_entry.fptr2framehdr );        } catch ( IOException ioerr ) {            String err_msg = new String( "FrameReadingTask: "                                       + "IO Error in slog.GetFrame()" );            SetStatusFieldText( err_msg );            System.err.println( err_msg );            new ErrorDialog( null, err_msg );        }    }     private void ConvertFrameToPlotData()    {        SetCurProgIdx( max_prog_idx * 5 / 10 );        //  Artifical code to slow the code segment down        //  for ( int ii = 0; ii < 100000; ii++ ) System.out.print( "" );        if ( slog_frame != null ) {            SetStatusFieldText( "Converting Selected Frame to Plotting data" );            try {                slog_plotdata = new PlotData( slog, slog_frame,                                              connect_idx, view_idx );            } catch ( RuntimeException rterr ) {                String err_msg = new String( "FrameReadingTask: "                                           + "Runtime Error in "                                           + "PlatData[] constructor" );                SetStatusFieldText( err_msg );                System.err.println( err_msg );                new ErrorDialog( null, err_msg );            }        }        else {            String err_msg = new String( "FrameReadingTask: "                                       + "slog.GetFrame() returns NULL" );            SetStatusFieldText( err_msg );            System.err.println( err_msg );            new ErrorDialog( null, err_msg );        }        SetCurProgIdx( max_prog_idx - 1 );        SetStatusFieldText( "Ending...." );    }     public void Stop()    {        read_worker.interrupt();    }    public boolean Finished()    {    return ( plotdata_ready );   }    private void SetStatusFieldText( String str )    {          try {            status_str = str;            // put this thread to sleep to let event-dispatching thread            // to refresh spawning GUI             Thread.sleep( refresh_intvl );            // Thread.yield();        } catch ( InterruptedException interrupt ) {}    }    private void SetCurProgIdx( int idx )    {        try {            cur_prog_idx = idx;            // put this thread to sleep to let event-dispatching thread            // to refresh spawning GUI             Thread.sleep( refresh_intvl );            // Thread.yield();        } catch ( InterruptedException interrupt ) {}    }    public String GetMessage()    {   return status_str;   }    public int GetMinProgIdx()    {   return min_prog_idx;    }    public int GetMaxProgIdx()    {    return max_prog_idx;   }    public int GetCurProgIdx()    {    return cur_prog_idx;   }    public PlotData GetPlotData()    {    return slog_plotdata;   }}

⌨️ 快捷键说明

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