File Viewer


DESIGN


COMPONENT: class FileViewer

A simple file viewer.  See program specification for details.

Public method:

o void run()

    Runs the viewer.  
    
    Implementation: A simple loop that displays the buffer, the menu of commands, reads a command and executes it.  The displaying is delegated to private method display.

Private method:

o void display()

    Displays the buffer and menu of commands, including an error message (if any), the name of the file and the three lines of dashes.  See program specification for details.  

Implementation: Holds the lines of text in a Buffer object.  The displaying of the buffer contents and the execution of the commands is delegated to the Buffer object.

Collaborator: Buffer.


COMPONENT: class Buffer

A buffer for a simple file viewer.  Holds the lines of text and executes commands on them.  Displays the contents of the buffer.  See program specification for details on commands.

Public methods:
          
o Buffer() 

    (Compiler-generated.) Creates an empty buffer and sets the index of the top line to 0. 

o void display() const

    Displays the contents of buffer.
    
o const string & get_file_name() const

    Returns the name of the file.

o void move_to_next_page() 
  void move_to_previous_page() 
  bool open(const string & file_name)
  
    Executes the corresponding file viewer command on the buffer.  See program specification for details.  The method open returns true if successful.
    
o void set_window_height(int h)

    Self-explanatory.

Implementation:  Stores each line of text as a string and all the lines in a vector.  Maintains the index of the line currently displayed at the top of the window, as well as the name of the file and the window height.
             
