/**
 * Silex, live web creation
 * http://projects.silexlabs.org/?/silex/
 *
 * Copyright (c) 2012 Silex Labs
 * http://www.silexlabs.org/
 *
 * Silex is available under the GPL license
 * http://www.silexlabs.org/silex/silex-licensing/
 */

/**
 * @fileoverview A controller listens to a view element,
 *      and call the main {silex.controller.Controller} controller's methods
 *
 */
import {SilexTasks} from '../service/silex-tasks';
import {Model} from '../types';
import {View} from '../types';

import {ControllerBase} from './controller-base';

/**
 * @param view  view class which holds the other views
 */
export class InsertMenuController extends ControllerBase {
  constructor(model: Model, view: View) {

super(model, view);
  }

  /**
   * create a page
   */
  createPage(successCbk?: (() => any), cancelCbk?: (() => any)) {
    this.tracker.trackAction('controller-events', 'request', 'insert.page', 0);
    this.getUserInputPageName(
        '', (name, displayName) => {
          if (name) {
            // undo checkpoint
            this.undoCheckPoint();

            // create the page model
            this.model.page.createPage(name, displayName);

            // update view
            if (successCbk) {
              successCbk();
            }
            this.tracker.trackAction(
                'controller-events', 'success', 'insert.page', 1);
          } else {
            if (cancelCbk) {
              cancelCbk();
            }
            this.tracker.trackAction(
                'controller-events', 'cancel', 'insert.page', 0);
          }
        });
  }
}
