Source: suxess/mockup-editor/mockupEditor.js

/**
 * Created by z on 27.11.2015.
 */
'use strict';

/**
 *
 * @param angularApi
 * @param domAttributes
 * @constructor
 */
SUXESS.MockupEditor = function ( angularApi, domAttributes ) {

    SUXESS.Renderable.call( this, domAttributes );

    this._angApi = angularApi;

    this._tools = [];
    this._canvas = null;
    this._toolbar = null;

    this._layerManager = new SUXESS.LayerManager();

    this._elementProperties = new SUXESS.ElementProperties();
    this._layerManager.setElProperties( this._elementProperties );

    this.initializeEditor();

};


SUXESS.MockupEditor.prototype = Object.create( SUXESS.Renderable.prototype );
SUXESS.MockupEditor.constructor = SUXESS.MockupEditor;

/**
 *
 * @param tool
 */
SUXESS.MockupEditor.prototype.addTool = function ( tool ) {

    this._tools.push(tool);
    this._toolbar.addChild(tool);

};

/**
 *
 * @param e
 */
SUXESS.MockupEditor.prototype.addElement = function (e) {

    this._layerManager.addElement(e);
    this._canvas.addChild(e);

};

/**
 *
 */
SUXESS.MockupEditor.prototype.initializeEditor = function () {

    this._toolbar = new SUXESS.Renderable({ class: ['toolbar'] });
    this.addChild(this._toolbar);

    var canvasContainer = new SUXESS.Renderable({ class: ['canvas-container'] });
    this._canvas = new SUXESS.Canvas();
    canvasContainer.addChild(this._canvas);
    this.addChild(canvasContainer);

    //this.addTool(new SUXESS.ImageTool(this));
    //this.addTool(new SUXESS.RectangleTool(this));

    this._toolbar.addChild(this._elementProperties);
    this._toolbar.addChild(this._layerManager);

};

/**
 *
 */
SUXESS.MockupEditor.prototype.getElements = function () {

    return this._layerManager.getElements();

};

/**
 *
 * @returns {SUXESS.Canvas|*}
 */
SUXESS.MockupEditor.prototype.getCanvas = function () {

    return this._canvas;

};

/**
 *
 * @returns {Array}
 */
SUXESS.MockupEditor.prototype.getState = function () {

    var elements = this._layerManager.getElements();
    var a = [];

    for(var i = 0; i < elements.length; i++){

        a.push(elements[i].getState());

    }

    return a;

};

/**
 *
 * @param elems
 */
SUXESS.MockupEditor.prototype.loadState = function (elems) {

    for(var i = 0; i < elems.length; i++) {

        var e = new SUXESS.Element();

        e.setState(elems[i]);

        this.addElement(e);

    }

};

/**
 *
 * @returns {SUXESS.ElementProperties|*}
 */
SUXESS.MockupEditor.prototype.getElementProperties = function () {

    return this._elementProperties;

};