/****
 *
 * Implementation of edit-menu.h.
 *
 * The implementation is partially stubbed in that it supplies only dummy
 * parameter values to model functions.
 *
 */

#include "edit-menu.h"


EditMenu::EditMenu(Name* n, Edit* e) : View(NULL, e) {
    /*
     * For convenience, save a copy of the model as a downcast value.
     */
    this->e = e;

    /*
     * Make the window of this an IV pulldown menu.
     */
    w = pm = new PulldownMenu(n->ConstConvert());
}

EditMenu::~EditMenu() {
}

void EditMenu::Compose() {
    /*
     * Insert the six menu items, passing each the File model for subsequent
     * access in menu item Do functions.
     */
    pm->Include(new UndoMenuItem(e));
    pm->Include(new RedoMenuItem(e));
    pm->Include(new RepeatMenuItem(e));
    pm->Include(new CutMenuItem(e));
    pm->Include(new CopyMenuItem(e));
    pm->Include(new PasteMenuItem(e));
    pm->Include(new EditDeleteMenuItem(e));
    pm->Include(new SelectAllMenuItem(e));
}

UndoMenuItem::UndoMenuItem(Edit* e) : MenuItem("Undo") {
    this->e = e;
}

RedoMenuItem::RedoMenuItem(Edit* e) : MenuItem("Redo") {
    this->e = e;
}

RepeatMenuItem::RepeatMenuItem(Edit* e) : MenuItem("Repeat") {
    this->e = e;
}

CutMenuItem::CutMenuItem(Edit* e) : MenuItem("Cut") {
    this->e = e;
}

CopyMenuItem::CopyMenuItem(Edit* e) : MenuItem("Copy") {
    this->e = e;
}

PasteMenuItem::PasteMenuItem(Edit* e) : MenuItem("Paste") {
    this->e = e;
}

EditDeleteMenuItem::EditDeleteMenuItem(Edit* e) : MenuItem("Delete") {
    this->e = e;
}

SelectAllMenuItem::SelectAllMenuItem(Edit* e) : MenuItem("SelectAll") {
    this->e = e;
}

void UndoMenuItem::Do() {
    e->Undo();
}

void RedoMenuItem::Do() {
    e->Redo();
}

void RepeatMenuItem::Do() {
    e->Repeat(0);
}

void CutMenuItem::Do() {
    e->Cut();
}

void CopyMenuItem::Do() {
    e->Copy();
}

void PasteMenuItem::Do() {
    e->Paste();
}

void EditDeleteMenuItem::Do() {
    e->Delete();
}

void SelectAllMenuItem::Do() {
    e->SelectAll();
}