# Source: core/object-controller.js

    /**
     * @module montage/core/object-controller
     * @requires montage/core/core
     */

    var Montage = require("./core").Montage;

    /**
     * @class ObjectController
     * @classdesc Generic object controller.
     * @extends Montage
     */
    exports.ObjectController = Montage.specialize( /** @lends ObjectController# */ {

        /**
         * @type {Property}
         * @default null
         */
        objectPrototype: {
            enumerable: false,
            value: null
        },

        /**
         * @function
         * @returns new this.objectPrototype()
         */
        newObject: {
            enumerable: false,
            value: function () {
                return new this.objectPrototype();
            }
        },

        /**
         * @function
         * @param {Property} content TODO
         * @returns itself
         */
        initWithContent: {
            value: function (content) {
                this.content = content;
                return this;
            }
        },

        /**
         * @type {Property}
         * @default null
         */
        content: {
            enumerable: false,
            value: null
        },

        objectDescriptorModuleId:require("./core")._objectDescriptorModuleIdDescriptor,

        objectDescriptor:require("./core")._objectDescriptorDescriptor,

        blueprintModuleId:require("./core")._blueprintModuleIdDescriptor,

        blueprint:require("./core")._blueprintDescriptor

    });