OSDN Git Service

4e79625b95ee8f5edfa4807235b29b2add40db05
[pettanr/pettanr.git] / app / assets / javascripts / views / speech_balloons / element.js.coffee
1 class Pettanr.Views.SpeechBalloon.Element extends Pettanr.View\r
2   tagName: 'div'\r
3   className: 'pettanr-comic-balloon'\r
4   \r
5   initialize: (options) ->\r
6     @element = options.element\r
7     @root = options.root\r
8     @spot = options.spot\r
9     @balloon = @element.get('balloon')\r
10     klass = @balloon_class()\r
11     @balloon_view = new klass({\r
12       parent: this, \r
13       element: @balloon, \r
14       root: @root,\r
15       spot: @spot\r
16     })\r
17     @speech = @element.get('speech')\r
18     klass = @speech_class()\r
19     @speech_view = new klass({\r
20       parent: this, \r
21       element: @speech, \r
22       root: @root,\r
23       spot: @spot\r
24     })\r
25   \r
26   render: () ->\r
27     this.$el.html('')\r
28     @balloon.get_parent('system_picture', this, {\r
29       success: (system_picture) =>\r
30         @balloon_view.system_picture = system_picture\r
31         this.$el.append(@balloon_view.render().el)\r
32         @balloon_view.init_picture()\r
33     })\r
34     this.$el.append(@speech_view.render().el)\r
35     @set_style()\r
36     this\r
37   \r
38   set_style: () ->\r
39     attr = {style: Pettanr.to_style(@style())}\r
40     this.$el.attr(attr)\r
41   \r
42   style: () ->\r
43     {\r
44       width: Pettanr.to_s(@balloon.get('width')) + 'px', \r
45       height: Pettanr.to_s(@balloon.get('height')) + 'px',\r
46       top: Pettanr.to_s(@balloon.get('y')) + 'px',\r
47       left: Pettanr.to_s(@balloon.get('x')) + 'px',\r
48       'z-index': @element.get('z')\r
49     }\r
50   \r
51   balloon_class: () ->\r
52     Pettanr.Views.Balloon.Element\r
53   \r
54   speech_class: () ->\r
55     Pettanr.Views.Speech.Element\r
56   \r
57 class Pettanr.Views.SpeechBalloon.Element.Edit extends Pettanr.Views.SpeechBalloon.Element\r
58   \r
59   initialize: (options) ->\r
60     super(options)\r
61     @listenTo(@element, 'sort', @set_style)\r
62     @listenTo(@element, 'active', @active)\r
63     @listenTo(@element, 'inactive', @inactive)\r
64     @listenTo(@balloon, 'input:r', @input_r)\r
65     @listenTo(@balloon, 'input:x', @set_style)\r
66     @listenTo(@balloon, 'input:y', @set_style)\r
67     @listenTo(@balloon, 'input:width', @set_style)\r
68     @listenTo(@balloon, 'input:height', @set_style)\r
69   \r
70   render: () ->\r
71     super()\r
72     bln = @balloon\r
73     this.$el.draggable {\r
74       stop: (event, ui) ->\r
75         left = Math.floor($(@).position().left)\r
76         top = Math.floor($(@).position().top)\r
77         bln.set({x: left, y: top}, {silent: true})\r
78         bln.trigger('move')\r
79     }\r
80     this\r
81   \r
82   set_style: () ->\r
83     super()\r
84   \r
85   input_r: () ->\r
86     @trigger('input:r')\r
87   \r
88   active: () ->\r
89     $('.ui-resizable-handle', this.el).map ->\r
90       $(@).css('display', 'block')\r
91   \r
92   inactive: () ->\r
93     $('.ui-resizable-handle', this.el).map ->\r
94       $(@).css('display', 'none')\r
95   \r
96   element_class: (element) ->\r
97     Pettanr.Views[element.singular()].Element.Edit\r
98   \r
99   balloon_class: () ->\r
100     Pettanr.Views.Balloon.Element.Edit\r
101   \r
102   speech_class: () ->\r
103     Pettanr.Views.Speech.Element.Edit\r
104   \r