aboutsummaryrefslogtreecommitdiff
path: root/js/components/tools-properties/rect-properties.reel/rect-properties.js
blob: 1e717f88cdcfd07a433d3b54b1565460b7d5825b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/* <copyright>
This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
(c) Copyright 2011 Motorola Mobility, Inc.  All Rights Reserved.
</copyright> */

var Montage = require("montage/core/core").Montage,
    ToolProperties = require("js/components/tools-properties/tool-properties").ToolProperties;

exports.RectProperties = Montage.create(ToolProperties, {
    base:       { value: null },
    lockButton: { value: null, enumerable: false},
    TLRadiusControl: { value: null, enumerable: false },
    TRRadiusControl: { value: null, enumerable: false },
    BLRadiusControl: { value: null, enumerable: false },
    BRRadiusControl: { value: null, enumerable: false },

    _unlocked: { value: false, enumerable: false},

    _subPrepare: {
        value: function() {
            this.lockButton.addEventListener("click", this, false);

            this._setBindings([this.TRRadiusControl, this.BLRadiusControl, this.BRRadiusControl]);
            this._setCap([this.TLRadiusControl,this.TRRadiusControl, this.BLRadiusControl, this.BRRadiusControl]);

        }
    },

    handleClick: {
        value: function(event) {
            this._unlocked = !this._unlocked;

            this.TRRadiusControl.enabled = this.BLRadiusControl.enabled = this.BRRadiusControl.enabled = this._unlocked;

            if(this._unlocked) {
                this.lockButton.classList.remove("LockToolUp");
                this.lockButton.classList.add("UnLockToolUp");
                this._removeBindings([this.TRRadiusControl, this.BLRadiusControl, this.BRRadiusControl]);
            } else {
                this.lockButton.classList.remove("UnLockToolUp");
                this.lockButton.classList.add("LockToolUp");
                this._setBindings([this.TRRadiusControl, this.BLRadiusControl, this.BRRadiusControl]);
            }
        }
    },

    // Public API
    use3D: {
        get: function() { return this.base._use3D; }
    },
    
    strokeSize: {
        get: function() { return this.base._strokeSize; }
    },

    strokeStyle : {
        get: function() { return this.base._strokeStyle.options[this.base._strokeStyle.value].text; }
    },

    strokeStyleIndex : {
        get: function() { return this.base._strokeStyle.options[this.base._strokeStyle.value].value; }
    },

    strokeMaterial: {
        get: function() { return this.base._strokeMaterial.options[this.base._strokeMaterial.value].value; }
    },

    fillMaterial: {
        get: function() { return this.base._fillMaterial.options[this.base._fillMaterial.value].value; }
    },

    _setBindings: {
        value: function(els) {
            var that = this;
            els.forEach(function(el) {
                Object.defineBinding(el, "value", {
                    boundObject: that.TLRadiusControl,
                    boundObjectPropertyPath: "value",
                    boundValueMutator: function(value) {
                        if (typeof value === "string") {
                            return parseFloat(value);
                        }

                        return value;
                    }
                });

                Object.defineBinding(el, "units", {
                    boundObject: that.TLRadiusControl,
                    boundObjectPropertyPath: "units"
                });
            });
        }
    },

    _removeBindings: {
        value: function(els) {
            els.forEach(function(el) {
                Object.deleteBindings(el);
            });
        }
    },

    _setCap: {
        value: function(els) {
            var that = this;
            els.forEach(function(el) {
                el.addEventListener("change", that, false);
            });
        }
    },

    handleChange: {
        value: function(event) {
            var hotTxt = event.currentTarget;
            if(hotTxt.units === "%") {
                if(hotTxt.value > 50) {
                    hotTxt.maxValue = 50;
                }
                return hotTxt.value;
            }
            
        }
    }


});