function ControleFormaAcaoViewModel() {

    var mSelf = this;

    mSelf._pilhaFormas = ko.observableArray([]);

    mSelf.Push = function (forma) {

        if (mSelf._pilhaFormas().length >= 10) { //Serão controlados apenas 10 passos na edição da forma
        
            var formaAntiga = mSelf._pilhaFormas()[0];

            mSelf._pilhaFormas.remove(formaAntiga);
        }

        mSelf._pilhaFormas.push(forma);
    };

    mSelf.Pop = function () {

        if (mSelf._pilhaFormas().length > 1) {

            var formaRemover = mSelf._pilhaFormas()[mSelf._pilhaFormas().length - 1];

            mSelf._pilhaFormas.remove(formaRemover);
        }
    };

    mSelf.GetFormaPilha = function () {

        if (mSelf._pilhaFormas().length > 0)
            return mSelf._pilhaFormas()[mSelf._pilhaFormas().length - 1];

        return null;
    };

    mSelf.LimparPilha = function () {

        mSelf._pilhaFormas.removeAll();
    };
}