client/js/renderer/baserepresentation.js
author rougeronj
Wed, 03 Jun 2015 17:27:46 +0200
changeset 471 e0c7be5dc02c
parent 435 e529b633c339
permissions -rw-r--r--
Add a router to handle fragment identifier Set up a listener of the router in the scene to update it Start Backbone.history (eventlistener of the router) when all the project is loaded Include router.js to all the test file
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
     1
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     2
define(['jquery', 'underscore'], function ($, _) {
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
     3
    'use strict';
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     4
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     5
    /* Rkns.Renderer._BaseRepresentation Class */
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     6
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     7
    /* In Renkan, a "Representation" is a sort of ViewModel (in the MVVM paradigm) and bridges the gap between
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     8
     * models (written with Backbone.js) and the view (written with Paper.js)
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
     9
     * Renkan's representations all inherit from Rkns.Renderer._BaseRepresentation '*/
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    10
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    11
    var _BaseRepresentation = function(_renderer, _model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    12
        if (typeof _renderer !== "undefined") {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    13
            this.renderer = _renderer;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    14
            this.renkan = _renderer.renkan;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    15
            this.project = _renderer.renkan.project;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    16
            this.options = _renderer.renkan.options;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    17
            this.model = _model;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    18
            if (this.model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    19
                var _this = this;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    20
                this._changeBinding = function() {
435
e529b633c339 Add shape management, correction on shape manip[ulation on the client, correct 404 error on space creation, increment version
ymh <ymh.work@gmail.com>
parents: 434
diff changeset
    21
                    _this.redraw({change: true});
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    22
                };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    23
                this._removeBinding = function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    24
                    _renderer.removeRepresentation(_this);
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 396
diff changeset
    25
                    _.defer(function() {
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    26
                        _renderer.redraw();
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 396
diff changeset
    27
                    });
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    28
                };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    29
                this._selectBinding = function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    30
                    _this.select();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    31
                };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    32
                this._unselectBinding = function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    33
                    _this.unselect();
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    34
                };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    35
                this.model.on("change", this._changeBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    36
                this.model.on("remove", this._removeBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    37
                this.model.on("select", this._selectBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    38
                this.model.on("unselect", this._unselectBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    39
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    40
        }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    41
    };
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    42
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    43
    /* Rkns.Renderer._BaseRepresentation Methods */
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    44
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    45
    _(_BaseRepresentation.prototype).extend({
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    46
        _super: function(_func) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    47
            return _BaseRepresentation.prototype[_func].apply(this, Array.prototype.slice.call(arguments, 1));
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    48
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    49
        redraw: function() {},
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    50
        moveTo: function() {},
396
b51c25ef4292 add timeout to buttons
ymh <ymh.work@gmail.com>
parents: 293
diff changeset
    51
        show: function() { return "BaseRepresentation.show"; },
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    52
        hide: function() {},
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    53
        select: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    54
            if (this.model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    55
                this.model.trigger("selected");
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    56
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    57
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    58
        unselect: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    59
            if (this.model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    60
                this.model.trigger("unselected");
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    61
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    62
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    63
        highlight: function() {},
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    64
        unhighlight: function() {},
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    65
        mousedown: function() {},
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    66
        mouseup: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    67
            if (this.model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    68
                this.model.trigger("clicked");
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    69
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    70
        },
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    71
        destroy: function() {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    72
            if (this.model) {
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    73
                this.model.off("change", this._changeBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    74
                this.model.off("remove", this._removeBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    75
                this.model.off("select", this._selectBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    76
                this.model.off("unselect", this._unselectBinding );
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    77
            }
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    78
        }
433
e457ec945e50 replace underscore par lodash
ymh <ymh.work@gmail.com>
parents: 396
diff changeset
    79
    }).value();
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    80
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    81
    /* End of Rkns.Renderer._BaseRepresentation Class */
293
fba23fde14ba Correct jshint errors and force it on build
ymh <ymh.work@gmail.com>
parents: 284
diff changeset
    82
284
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    83
    return _BaseRepresentation;
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    84
fa8035885814 build renderer with require js
cavaliet
parents:
diff changeset
    85
});