All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.com.ibm.as400.util.commtrace.FormatDisplay Maven / Gradle / Ivy

The newest version!
///////////////////////////////////////////////////////////////////////////////
//                                                                             
// JTOpen (IBM Toolbox for Java - OSS version)                                 
//                                                                             
// Filename: FormatDisplay.java
//                                                                             
// The source code contained herein is licensed under the IBM Public License   
// Version 1.0, which has been approved by the Open Source Initiative.         
// Copyright (C) 2002 International Business Machines Corporation and     
// others. All rights reserved.                                                
//                                                                             
///////////////////////////////////////////////////////////////////////////////

package com.ibm.as400.util.commtrace;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.FileDialog;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Writer;
import java.util.Properties;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

import com.ibm.as400.access.AS400;
import com.ibm.as400.access.Trace;
import com.ibm.as400.vaccess.FileFilter;
import com.ibm.as400.vaccess.IFSFileDialog;

/**
 * FormatDisplay is used to format traces. The actual formatting is done by the Format class.
* FormatDisplay is also used to display formatted traces from disk.
*/ class FormatDisplay extends WindowAdapter implements Runnable { private final String ALL = "*ALL", YES = "*YES", NO = "*NO", CLASS="FormatDisplay"; private AS400 sys; // The system we are connected to private Thread fmtThread=null; // This thread private Format fmt=null; // The format object. Our interface to the trace private Find find=null; // The find dialog to search our text area private String filterIPaddr_, // The filter arguments passed to the class filterIPaddr2_, filterPort_, filterBdcst_; private String currPage="", // The current page lastPage="", // The previously viewed page slastPage="",// The oldest page path=null, // The path of the file we are displaying file=null, // The name of the file we are displaying filename=null, // The path that contains the file to be traced, and the name of the file outfile=null; // The name of the file to save to private int nextRecLen = 0,index=0; /** Run a local display operation */ public final static int OPEN = 1; /** Run a remote display operation */ public final static int OPENRMT = 2; /** Run a format operation and displays the output */ public final static int FMT = 3; private final static String SAVEEXT = ".bin"; // The extension to append to our formatted trace output private int ifsrecs=0, // The number of records in this commtrace recsdisp=0, // The number of records displayed so far page=0, // The page we are showing. 0 - current, 1 - lastPage, 2 - slastPage oper; // The operation to be run // Format Menubar items private JMenuItem fsave, // File Menu fclose, ffind, // Edit Menu fcopy, fclear, fcut, fpaste; private JButton next, prev; private JComboBox numberList_; private JLabel msg; private JTextArea formattrace; private JFrame l; /** * Creates a FormatDisplay and performs the specified operation. * @param filterIPaddr The IP address filter. * @param filterIPaddr2 The IP address filter. * @param filterPort The port filter. * @param filterBdcst The broadcast filter. * @param oper The operation to be performed. */ public FormatDisplay(String filterIPaddr, String filterIPaddr2, String filterPort, String filterBdcst,int oper) { filterIPaddr_ = filterIPaddr; filterIPaddr2_ = filterIPaddr2; filterPort_ = filterPort; filterBdcst_ = filterBdcst; this.oper = oper; FileDialog fd; if(oper==FMT) { // Ask the user for the file to format fd = new FileDialog(CommTrace.getMainFrame(),ResourceBundleLoader_ct.getText("FormatDialog"),FileDialog.LOAD); fd.show(); // Show the dialog String path = fd.getDirectory(); filename = fd.getFile(); // If the didn't specify a file return if(path==null || filename==null) { return; } filename = path + filename; } else if(oper==OPEN || oper==OPENRMT) { open(); } } /** * Displays a formatted trace. Used to display a file remotely. * @param path * @param file * @param sys * @param oper */ public FormatDisplay(String path,String file,AS400 sys,int oper) { this.oper = oper; this.sys = sys; // The path and file that the user just remotely formatted if available this.path = path; this.file = file; if(oper==OPENRMT || oper==OPEN) { open(); } } /** * Runs the specified FormatDisplay operation. */ public void run() { // True until we have formatted/displayed the file the user specified boolean fmt=true; Thread myThread = Thread.currentThread(); while(fmtThread==myThread) { if(fmt) { if(oper==FMT) { if(filename==null) { // The user didn't select a file return; } // Display file dialog so user can specify a place to save the trace FileDialog fd = new FileDialog(CommTrace.getMainFrame(),ResourceBundleLoader_ct.getText("SaveAs"),FileDialog.SAVE); fd.setFile(filename + SAVEEXT); fd.show(); String outpath = fd.getDirectory(); String outfilename = fd.getFile(); if(outfilename==null) { // User didn't sepecify a file return; } outfile = outpath + outfilename; // Initalize the format object FormatProperties prop = new FormatProperties(); prop.setProgress(FormatProperties.TRUE); // Set the filter properties that the user specified if(!filterIPaddr_.equals(ALL)) { prop.setIPAddress(filterIPaddr_); if (Trace.isTraceOn() && Trace.isTraceInformationOn()) { Trace.log(Trace.INFORMATION,CLASS + ".run() " + "Filtering on IP address"); } } if(!filterIPaddr2_.equals(ALL)) { prop.setSecondIPAddress(filterIPaddr2_); if (Trace.isTraceOn() && Trace.isTraceInformationOn()) { Trace.log(Trace.INFORMATION,CLASS + ".run() " + "Filtering on IP address"); } } if(!filterPort_.equals(ALL)) { prop.setPort(filterPort_); if (Trace.isTraceOn() && Trace.isTraceInformationOn()) { Trace.log(Trace.INFORMATION,CLASS + ".run() " + "Filtering on port number"); } } if(filterBdcst_.equals(NO)) { prop.setBroadcast(filterBdcst_); if (Trace.isTraceOn() && Trace.isTraceInformationOn()) { Trace.log(Trace.INFORMATION,CLASS + ".run() " + "Filtering broadcast records"); } } this.fmt = new Format(prop,outfile,filename); // Create the format long strtime = System.currentTimeMillis(); // Record start time of trace this.fmt.toLclBinFile(); // Format and output to the file specified long endtime = System.currentTimeMillis(); // Record end time of trace if (Trace.isTraceOn() && Trace.isTraceInformationOn()) { Trace.log(Trace.INFORMATION,CLASS + ".run() " + "Format Start/End/Total Time:" + strtime + "/" + endtime + "/" + (endtime - strtime)); } this.fmt.openLclFile(); // Open the outfile for display showOutput(); // Display the output fmt = false; // We are done with the user operation. } else if(oper==OPEN || oper==OPENRMT) { showOutput(); fmt=false; // We are done with the user operation } } else { try { // Idle until the thread is ended Thread.sleep(1000); } catch (InterruptedException e) { // the VM doesn't want us to sleep anymore, // so get back to work } } } this.fmt.close(); // Close the Format before exiting } /** * Creates a frame and displays the output. */ private void showOutput() { if (Trace.isTraceOn() && Trace.isTraceInformationOn()) { Trace.log(Trace.INFORMATION,CLASS + ".showOutput() " + "Showing Output"); } ObjectInputStream ser; l = new JFrame("Comm Trace"); formattrace = new JTextArea("",10,80); JMenuBar formatmb = new JMenuBar(); JMenu ffile = new JMenu(ResourceBundleLoader_ct.getText("File")); JMenu fedit = new JMenu(ResourceBundleLoader_ct.getText("Edit")); JScrollPane p = new JScrollPane(formattrace); // Navigation JPanel north = new JPanel(); north.setLayout(new GridLayout(0,1)); JPanel nav = new JPanel(); GridBagLayout gridbag = new GridBagLayout(); nav.setLayout(gridbag); GridBagConstraints c = new GridBagConstraints(); c.anchor=GridBagConstraints.EAST; c.gridwidth=3; c.gridheight=3; // Create the Show Label JLabel lshow = new JLabel(ResourceBundleLoader_ct.getText("Show")); gridbag.setConstraints(lshow,c); nav.add(lshow); // Create the TextField which allows the user to enter the number of // records they want displayed at a time c.anchor=GridBagConstraints.CENTER; c.gridwidth=GridBagConstraints.RELATIVE; String[] numberStrings = { "10", "50", "100", "1000", "10000" }; // Create the combo box, select item at index 4. numberList_ = new JComboBox(numberStrings); numberList_.setSelectedIndex(2); gridbag.setConstraints(numberList_,c); nav.add(numberList_); // Create the frames label c.anchor=GridBagConstraints.CENTER; c.gridwidth=GridBagConstraints.REMAINDER; JLabel lframes = new JLabel(ResourceBundleLoader_ct.getText("ShowDescription")); gridbag.setConstraints(lframes,c); nav.add(lframes); // Create the message description label c.anchor=GridBagConstraints.WEST; c.gridwidth=GridBagConstraints.RELATIVE; c.gridheight=GridBagConstraints.RELATIVE; JLabel msgdesc = new JLabel(ResourceBundleLoader_ct.getText("DisplayDescription")); gridbag.setConstraints(msgdesc,c); nav.add(msgdesc); // Create the message label c.gridwidth=GridBagConstraints.REMAINDER; msg = new JLabel(ResourceBundleLoader_ct.getText("Prolog")); gridbag.setConstraints(msg,c); nav.add(msg); // Create the previous button c.anchor=GridBagConstraints.CENTER; c.gridwidth=GridBagConstraints.RELATIVE; c.gridheight=GridBagConstraints.REMAINDER; prev = new JButton(ResourceBundleLoader_ct.getText("Prev")); prev.addActionListener(new CommTraceDisplayListener(this)); gridbag.setConstraints(prev,c); nav.add(prev); // Create the Next button c.anchor=GridBagConstraints.WEST; c.gridwidth=GridBagConstraints.REMAINDER; next = new JButton(ResourceBundleLoader_ct.getText("Next")); next.addActionListener(new CommTraceDisplayListener(this)); gridbag.setConstraints(next,c); nav.add(next); north.add(nav); String record = ResourceBundleLoader_ct.getText("Record"); String mac = ResourceBundleLoader_ct.getText("MACAddress"); StringBuffer Banner1 = new StringBuffer(); Banner1.append(record); Banner1.append(" "); Banner1.append(ResourceBundleLoader_ct.getText("Data")); Banner1.append(" "); Banner1.append(record); Banner1.append(" "); Banner1.append(ResourceBundleLoader_ct.getText("Destination")); Banner1.append(" "); Banner1.append(ResourceBundleLoader_ct.getText("Source")); Banner1.append(" "); Banner1.append(ResourceBundleLoader_ct.getText("Frame")); StringBuffer Banner2 = new StringBuffer(); Banner2.append(ResourceBundleLoader_ct.getText("Number")); Banner2.append(" "); Banner2.append(ResourceBundleLoader_ct.getText("S/R")); Banner2.append(" "); Banner2.append(ResourceBundleLoader_ct.getText("Length")); Banner2.append(" "); Banner2.append(ResourceBundleLoader_ct.getText("Timer")); Banner2.append(" "); Banner2.append(mac); Banner2.append(" "); Banner2.append(mac); Banner2.append(" "); Banner2.append(ResourceBundleLoader_ct.getText("Format")); String Banner3 = "------ --- ------ ------------ -------------- -------------- ------"; // Banner JPanel ban = new JPanel(); ban.setLayout(new GridLayout(3,1)); JLabel banner = new JLabel(Banner1.toString()), banner2 = new JLabel(Banner2.toString()), banner3 = new JLabel(Banner3); banner.setFont(new Font("Monospaced", Font.PLAIN, 12)); banner2.setFont(new Font("Monospaced", Font.PLAIN, 12)); banner3.setFont(new Font("Monospaced", Font.PLAIN, 12)); ban.add(banner); ban.add(banner2); ban.add(banner3); // Format Menu Bar // File Menu fsave = new JMenuItem(ResourceBundleLoader_ct.getText("Save"),KeyEvent.VK_S); // Create the menu and its key binding fsave.setAccelerator(KeyStroke.getKeyStroke( // Bind the key binding to the menu item KeyEvent.VK_S, ActionEvent.CTRL_MASK)); // Disable save if they are displaying a previously traced file if(oper==OPEN || oper==OPENRMT) { fsave.setEnabled(false); } fclose = new JMenuItem(ResourceBundleLoader_ct.getText("Close"),KeyEvent.VK_W); fclose.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_W, ActionEvent.CTRL_MASK)); // Edit Menu ffind = new JMenuItem(ResourceBundleLoader_ct.getText("Find"),KeyEvent.VK_F); ffind.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_F, ActionEvent.CTRL_MASK)); fcopy = new JMenuItem(ResourceBundleLoader_ct.getText("Copy"),KeyEvent.VK_C); fcopy.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_C, ActionEvent.CTRL_MASK)); fclear = new JMenuItem(ResourceBundleLoader_ct.getText("Clear")); fcut = new JMenuItem(ResourceBundleLoader_ct.getText("Cut"),KeyEvent.VK_X); fcut.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_X, ActionEvent.CTRL_MASK)); fpaste = new JMenuItem(ResourceBundleLoader_ct.getText("Paste"),KeyEvent.VK_V); fpaste.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_V, ActionEvent.CTRL_MASK)); // Add the menu items and their action listener ffile.add(fsave); fsave.addActionListener(new CommTraceDisplayListener(this)); ffile.add(fclose); fclose.addActionListener(new CommTraceDisplayListener(this)); fedit.add(ffind); ffind.addActionListener(new CommTraceDisplayListener(this)); fedit.add(fcopy); fcopy.addActionListener(new CommTraceDisplayListener(this)); fedit.add(fclear); fclear.addActionListener(new CommTraceDisplayListener(this)); fedit.add(fcut); fcut.addActionListener(new CommTraceDisplayListener(this)); fedit.add(fpaste); fpaste.addActionListener(new CommTraceDisplayListener(this)); // Disable cut and past fcut.setEnabled(false); fpaste.setEnabled(false); formatmb.add(ffile); formatmb.add(fedit); l.setJMenuBar(formatmb); formattrace.enableInputMethods(true); // Need a monospaced font otherwise formatting will not look correct formattrace.setFont(new Font("Monospaced", Font.PLAIN, 12)); if(fmt==null) { // If format is null we were never initialized so just return if (Trace.isTraceOn() && Trace.isTraceInformationOn()) { Trace.log(Trace.ERROR, CLASS + ".showOutput() " + "initialization failed"); } return; } showRecs(1); // Read in and display the prolog msg.setText("Prolog");// Viewing the prolog recsdisp=0; ifsrecs=fmt.getIntFromFile(); // Get the total number of records that this trace contains l.getContentPane().add(p,BorderLayout.CENTER); l.getContentPane().add(north,BorderLayout.SOUTH); l.getContentPane().add(ban,BorderLayout.NORTH); l.setBackground(Color.black); l.setForeground(Color.white); l.addWindowListener(this); l.setSize(800,600); l.setVisible(true); } /** * Displays numrecs in the TextArea. * @param numrecs the number of records to show. * @return returns false when there are no more records to display. */ public boolean showRecs(int numrecs) { int tcprecs = fmt.getNumberOfTCPRecords(); // Display the wait cursor ((Component) l).setCursor(new Cursor(Cursor.WAIT_CURSOR)); if(page==0) { // If we are supposed to view a new page if(oper==OPEN || oper==OPENRMT) { // We are reading the data in from a stream int end = recsdisp+numrecs; if(end>ifsrecs) { msg.setText(recsdisp + "-" + ifsrecs + " " + ResourceBundleLoader_ct.getText("of") + " " + ifsrecs + " " + ResourceBundleLoader_ct.getText("possible")); } else { msg.setText(recsdisp + "-" + (recsdisp+numrecs) + " " + ResourceBundleLoader_ct.getText("of") + " " + ifsrecs + " " + ResourceBundleLoader_ct.getText("possible")); } recsdisp = end; if(lastPage.equals("")) { // Save the page we are currently viewing lastPage = formattrace.getText(); } else { slastPage = lastPage; lastPage = formattrace.getText(); } formattrace.setText(null); // Clear the TextArea for(int i=0;itcprecs) { msg.setText(recsdisp + "-" + (tcprecs) + " " + ResourceBundleLoader_ct.getText("of") + " " + tcprecs); } else { msg.setText(recsdisp + "-" + (end) + " " + ResourceBundleLoader_ct.getText("of") + " " + tcprecs); } recsdisp = end; if(lastPage.equals("")) { // Save the page we are currently viewing lastPage = formattrace.getText(); } else { slastPage = lastPage; lastPage = formattrace.getText(); } formattrace.setText(null); // Clear the TextArea for(int i=0;iifsrecs) { msg.setText(recsdisp + "-" + ifsrecs + " " + ResourceBundleLoader_ct.getText("of") + " " + ifsrecs + " " + ResourceBundleLoader_ct.getText("possible")); } else { msg.setText(recsdisp-numrecs + "-" + (recsdisp) + " " + ResourceBundleLoader_ct.getText("of") + " " + ifsrecs + " " + ResourceBundleLoader_ct.getText("possible")); } if(recsdisp>=ifsrecs) { // Display the default cursor ((Component) l).setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); page=0; // User is viewing current page return false; } } else { // User is attempting to view past the end of the available // number of records if(recsdisp>tcprecs) { msg.setText(recsdisp + "-" + (tcprecs) + " " + ResourceBundleLoader_ct.getText("of") + " " + tcprecs); } else { msg.setText(recsdisp-numrecs + "-" + (recsdisp) + " " + ResourceBundleLoader_ct.getText("of") + " " + tcprecs); } if(recsdisp>=tcprecs) { // Display the default cursor ((Component) l).setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); page=0; // User is viewing current page return false; } } page=0; // User is viewing current page } else if(page==2) { // The user wants to view the 2nd to last page formattrace.setText(lastPage); msg.setText(ResourceBundleLoader_ct.getText("PreviousPage")); page=1; // User is viewing 2nd to last page } // Display the default cursor ((Component) l).setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); return true; } /** Show the previous page. */ public void showPrev() { if(page==0) { currPage = formattrace.getText(); formattrace.setText(lastPage); msg.setText(ResourceBundleLoader_ct.getText("PreviousPage")); page=1; } else if(page==1) { formattrace.setText(slastPage); msg.setText(ResourceBundleLoader_ct.getText("PreviousPage") + " 2"); page=2; } else if(page==2) { CommTrace.error(l,"Not Found","Only the two previous pages are stored"); } } /** * Opens a formatted file for reading.
* Can be either a local file or a remote IFS file. */ public void open() { if(oper==OPEN) { // Display file dialog so user can specify a file to open FileDialog fd = new FileDialog(CommTrace.getMainFrame(),ResourceBundleLoader_ct.getText("OpenDialog"),FileDialog.LOAD); fd.show(); String path = fd.getDirectory(); String file = fd.getFile(); if(path == null || file == null) { // User cancled the FileDialog return; } fmt = new Format(); fmt.openLclFile(path + file); outfile = path + file; } else if(oper==OPENRMT) { if((path.length() > 0) && (file.length() > 0)) { fmt = new Format(sys); fmt.openIFSFile(path+"/" + file + FormatRemote.EXT); } else { IFSFileDialog fd = new IFSFileDialog((new JFrame()), ResourceBundleLoader_ct.getText("FiletoView"), sys); FileFilter [] filterList = {new FileFilter(ResourceBundleLoader_ct.getText("AllFiles"), "*.*"), new FileFilter(ResourceBundleLoader_ct.getText("CommTraceFiles"), "*.bin")}; fd.setFileFilter(filterList, 0); fd.setDirectory(path); fd.setFileName(file); String fullpath=""; if (fd.showDialog() == IFSFileDialog.OK) { fullpath = fd.getAbsolutePath(); // get fully qualified file fmt = new Format(sys); fmt.openIFSFile(fullpath); } } } } /** * Saves the output from the trace to the user specified location as ASCII * text. * @return true if save is successful */ public boolean save() { // Display file dialog so user can specify a place to save the trace FileDialog fd = new FileDialog(l,ResourceBundleLoader_ct.getText("SaveAs"),FileDialog.SAVE); if(filename==null) { int index; String file = outfile; if((index = outfile.indexOf('.'))!=-1) { file = outfile.substring(0,index); } fd.setFile(file + ".txt"); } else { fd.setFile(filename + ".txt"); } fd.show(); String path = fd.getDirectory(); String file = fd.getFile(); Writer out; // Set the cursor to a wait cursor ((Component)l).setCursor(new Cursor(Cursor.WAIT_CURSOR)); try { out = new BufferedWriter(new FileWriter(path + file)); // Opens an output stream on the local file } catch (IOException e) { if (Trace.isTraceOn() && Trace.isTraceErrorOn()) { Trace.log(Trace.ERROR,CLASS + ".save() " + "Error opening " + path + file,e); } return false; } try { Format fmtlcl = new Format(); fmtlcl.openLclFile(outfile); String prolog = fmtlcl.getRecFromFile(); out.write(prolog); int numrecs = fmtlcl.getIntFromFile(); int recPrinted=0; String rec; while((rec = fmtlcl.getRecFromFile())!=null) { if(recPrinted%5==0) { out.write(fmt.addBanner()); } out.write(rec); recPrinted++; } fmtlcl.close(); } catch (IOException e) { if (Trace.isTraceOn() && Trace.isTraceErrorOn()) { Trace.log(Trace.ERROR,CLASS + ".save() " + "Error writing to " + path + file,e); } return false; } try { out.close(); } catch (IOException e) { if (Trace.isTraceOn() && Trace.isTraceErrorOn()) { Trace.log(Trace.ERROR,CLASS + ".save() " + "Error closing " + path + file,e); } return false; } // Set the cursor back to the default cursor ((Component)l).setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); return true; } /** Add the end banner. */ private String addEndBanner() { return("\n* * * * * * * * * * * * * " + ResourceBundleLoader_ct.getText("EOCP") + " * * * * * * * * * * * * *\n"); } /** * Closes the output window and ends the thread. */ public void close() { if (Trace.isTraceOn() && Trace.isTraceInformationOn()) { Trace.log(Trace.INFORMATION,CLASS + ".close()"); } if(l!=null) { l.setVisible(false); } if(fmt!=null) { fmt.close(); } fmtThread=null; } /** * Sets the correct window invisible based on the user input. * Called by the JVM when the user attempts to close our window. */ public void windowClosing(WindowEvent e) { if (e.getSource() == l) { close(); } } /** * Creates a Find object to search our TextArea. */ public void find() { if(find==null || find.isClosed()) { find = new Find(formattrace); } else { find.toFront(); } } /** Copies the selected text. */ public void copy() { formattrace.copy(); } /** Clears the text area. */ public void clear() { formattrace.setText(""); } /** Cuts the selected text. */ public void cut() { formattrace.cut(); } /** Pastes the copied text into the text area. */ public void paste() { formattrace.paste(); } /** * Returns the thread this object executes under. * @return Thread */ public Thread getThread() { return fmtThread; } /** * Sets the thread to execute under. * @param tr */ public void setThread(Thread tr) { fmtThread = tr; } /** * Returns the JComboBox with which the user selects the number of records to display. * @return JComboBox */ public JComboBox getNumberList() { return numberList_; } /** * Returns the Save Menu Item. * @return JMenuItem */ public JMenuItem getSaveMenuItem() { return fsave; } /** * Returns the Close Menu Item. * @return JMenuItem */ public JMenuItem getCloseMenuItem() { return fclose; } /** * Returns the Find Menu Item. * @return JMenuItem */ public JMenuItem getFindMenuItem() { return ffind; } /** * Returns the Copy Menu Item. * @return JMenuItem */ public JMenuItem getCopyMenuItem() { return fcopy; } /** * Returns the Clear Menu Item. * @return JMenuItem */ public JMenuItem getClearMenuItem() { return fclear; } /** * Returns the Cut Menu Item. * @return JMenuItem */ public JMenuItem getCutMenuItem() { return fcut; } /** * Returns the Paste Menu Item. * @return JMenuItem */ public JMenuItem getPasteMenuItem() { return fpaste; } /** * Returns the Next Button. * @return JButton */ public JButton getNextButton() { return next; } /** * Returns the Previous Button. * @return JButton */ public JButton getPrevButton() { return prev; } /** * Returns the main frame for the Display of records. * @return JFrame */ public JFrame getDisplayFrame() { return l; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy