📄 logfileoperations.java
字号:
/* * (C) 2001 by Argonne National Laboratory * See COPYRIGHT in top-level directory. *//* * @author Anthony Chan */package viewer.first;import java.awt.Window;import javax.swing.JTextField;import java.util.List;import java.io.File;import java.io.FileNotFoundException;import logformat.slog2.input.InputLog;import viewer.common.SwingWorker;import viewer.common.Dialogs;import viewer.common.TopWindow;import viewer.common.Parameters;import viewer.common.PreferenceFrame;import viewer.common.LogFileChooser;import viewer.convertor.ConvertorDialog;import viewer.legends.LegendFrame;import viewer.timelines.TimelineFrame;public class LogFileOperations{ private LogFileChooser file_chooser; private InputLog slog_ins; private PreferenceFrame pptys_frame; private LegendFrame legend_frame; private TimelineFrame timeline_frame; public LogFileOperations( boolean isApplet ) { file_chooser = new LogFileChooser( isApplet ); slog_ins = null; legend_frame = null; timeline_frame = null; } public void init() { /* Initialization */ Parameters.initSetupFile(); Parameters.readFromSetupFile( TopWindow.First.getWindow() ); Parameters.initStaticClasses(); pptys_frame = new PreferenceFrame(); pptys_frame.setVisible( false ); } private static InputLog createInputLog( Window window, String pathname ) { String logname = pathname.trim(); if ( logname != null && logname.length() > 0 ) { File logfile = new File( logname ); if ( ! logfile.exists() ) { Dialogs.error( window, "File Not Found when initializing " + logname + "." ); return null; } if ( logfile.isDirectory() ) { Dialogs.error( window, logname + " is a directory." ); return null; } if ( ! logfile.canRead() ) { Dialogs.error( window, "File " + logname + " cannot be read." ); return null; } InputLog slog = null; try { slog = new InputLog( logname ); } catch ( NullPointerException nperr ) { Dialogs.error( window, "NullPointerException when initializing " + logname + "!" ); return null; } catch ( Exception err ) { Dialogs.error( window, "EOFException when initializing " + logname + "!" ); return null; } return slog; } else { if ( logname == null ) Dialogs.error( window, "Null pathname!" ); else // if ( logname.length() == 0 ) Dialogs.error( window, "pathname is empty!" ); return null; } } /* This disposes all the windows and InputLog related resources. */ public void disposeLogFileAndResources() { if ( slog_ins != null ) { TopWindow.Legend.disposeAll(); slog_ins.close(); slog_ins = null; legend_frame = null; timeline_frame = null; } } public String selectLogFile() { int istat; istat = file_chooser.showOpenDialog( TopWindow.First.getWindow() ); if ( istat == LogFileChooser.APPROVE_OPTION ) { File selected_file, selected_dir; selected_file = file_chooser.getSelectedFile(); if ( selected_file != null ) { selected_dir = selected_file.getParentFile(); if ( selected_dir != null ) file_chooser.setCurrentDirectory( selected_dir ); return selected_file.getPath(); } } else Dialogs.info( TopWindow.First.getWindow(), "No file chosen", null ); return null; } public String convertLogFile( String filename ) { return ConvertorDialog.convertLogFile( TopWindow.First.getWindow(), file_chooser, filename ); } /* this.disposeLogFileAndResources() has to be called before this.openLogFile() can be invoked. */ public List openLogFile( JTextField logname_txtfld ) { String filename, new_filename, err_msg; filename = logname_txtfld.getText(); slog_ins = LogFileOperations.createInputLog( TopWindow.First.getWindow(), filename ); if ( slog_ins == null ) { Dialogs.error( TopWindow.First.getWindow(), "Null InputLog!" ); return null; } if ( ! slog_ins.isSLOG2() ) { slog_ins = null; if ( Dialogs.confirm( TopWindow.First.getWindow(), filename + " is NOT a SLOG-2 file!\n" + "Do you want to convert it to SLOG-2 format " + "readable by this viewer?" ) ) { new_filename = ConvertorDialog.convertLogFile( TopWindow.First.getWindow(), file_chooser, filename ); // Since ConvertorDialog can return null if ConvertorPanel's // Cancel button is clicked, needs to check for null return. // But don't check for new_filename.length()==0, so subsequent // createInputLog() can emit a warning message for zero-length. if ( new_filename != null ) { logname_txtfld.setText( new_filename ); return openLogFile( logname_txtfld ); } else return null; } else return null; } err_msg = null; if ( (err_msg = slog_ins.getCompatibleHeader() ) != null ) { if ( ! Dialogs.confirm( TopWindow.First.getWindow(), err_msg + "Check the following version history " + "for compatibility.\n\n" + logformat.slog2.Const.VERSION_HISTORY + "\n" + "Do you still want to continue reading " + "the logfile ?" ) ) { slog_ins = null; return null; } } slog_ins.initialize(); legend_frame = new LegendFrame( slog_ins ); legend_frame.pack(); TopWindow.layoutIdealLocations(); legend_frame.setVisible( true ); return (List) slog_ins.getLineIDMapList(); } /* public void createTimelineWindow( int view_ID ) { if ( slog_ins != null && view_ID >= 0 ) { timeline_frame = new TimelineFrame( slog_ins, view_ID ); timeline_frame.pack(); TopWindow.layoutIdealLocations(); timeline_frame.setVisible( true ); timeline_frame.init(); } } */ /* The following works as if no thread is used! public void createTimelineWindow( final int view_ID ) { if ( slog_ins != null && view_ID >= 0 ) { Runnable create_timeline_thread = new Runnable() { public void run() { timeline_frame = new TimelineFrame( slog_ins, view_ID ); timeline_frame.pack(); TopWindow.layoutIdealLocations(); timeline_frame.setVisible( true ); timeline_frame.init(); } }; SwingUtilities.invokeLater( create_timeline_thread ); } } */ public void createTimelineWindow( final int view_ID ) { if ( slog_ins != null && view_ID >= 0 ) { SwingWorker create_timeline_worker = new SwingWorker() { public Object construct() { timeline_frame = new TimelineFrame( slog_ins, view_ID ); return null; // returned value is not needed } public void finished() { timeline_frame.pack(); TopWindow.layoutIdealLocations(); timeline_frame.setVisible( true ); timeline_frame.init(); } }; create_timeline_worker.start(); } } public void showLegendWindow() { if ( slog_ins != null && legend_frame != null ) { legend_frame.pack(); TopWindow.layoutIdealLocations(); legend_frame.setVisible( true ); } } public void showPreferenceWindow() { if ( pptys_frame != null ) { pptys_frame.pack(); TopWindow.layoutIdealLocations(); pptys_frame.setVisible( true ); pptys_frame.toFront(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -