Text editor
Version 2.0

DESIGN


COMPONENT: class TextEditor

A simple text editor.  See program specification for details.

Public method:

o void run()

    Runs the editor. 
    
    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 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 execution of the commands is delegated to the Buffer object.

Collaborator: Buffer.


COMPONENT: class Buffer

A buffer for a simple text editor.  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 current line to the end line.

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_line() 
  void move_to_previous_line() 
  void insert(const string & new_line)
  void erase()
  bool open(const string & new_file_name)
  bool save(const string & new_file_name)
  
    Executes the corresponding editor command on the buffer.  See program specification for details.  he methods Topen and save return 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 list.  Maintains the index of the current line, the index of the line currently displayed at the top of the window, iterators to both of those lines, the name of the file and the window height.
             
