X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Fviews%2Fspeech_balloons%2Felement.js.coffee;h=8eee1f50e39f0b4621d4f207487413605deb6220;hb=90145be2e5cfabdee7dd032b64d4654249d9bcb3;hp=92b7e67fcb06998df9dd6beef5be8fb3cbe26571;hpb=b922609711ac4713a21d2e64cac393765c0917e9;p=pettanr%2Fpettanr.git diff --git a/app/assets/javascripts/views/speech_balloons/element.js.coffee b/app/assets/javascripts/views/speech_balloons/element.js.coffee index 92b7e67f..8eee1f50 100644 --- a/app/assets/javascripts/views/speech_balloons/element.js.coffee +++ b/app/assets/javascripts/views/speech_balloons/element.js.coffee @@ -6,23 +6,48 @@ class Pettanr.Views.SpeechBalloon.Element extends Backbone.View @element = options.element @root = options.root @spot = options.spot + @add_element() - render: () -> - attr = {style: @style()} - @balloon = new Pettanr.Views.Balloon.Element({ - element: @element, + add_element: () -> + @add_balloon() + @add_speech() + + add_balloon: () -> + @balloon = @element.get('balloon') + @set_style() + klass = @balloon_class() + @balloon_view = new klass({ + parent: this, + element: @balloon, root: @root, spot: @spot }) - @speech = new Pettanr.Views.Speech.Element({ - element: @element, + + add_speech: () -> + @speech = @element.get('speech') + klass = @speech_class() + @speech_view = new klass({ + parent: this, + element: @speech, root: @root, spot: @spot }) - this.$el.attr(@attr) - this.$el.html(@img.render().el) + + clear: () -> + this + + render: () -> + this.$el.html('') + this.$el.append(@balloon_view.clear().el) + this.$el.append(@speech_view.render().el) + @set_style() + @balloon_view.render() this + set_style: () -> + attr = {style: Pettanr.to_style(@style())} + this.$el.attr(attr) + style: () -> { width: Pettanr.to_s(@balloon.get('width')) + 'px', @@ -32,3 +57,57 @@ class Pettanr.Views.SpeechBalloon.Element extends Backbone.View 'z-index': @element.get('z') } + balloon_class: () -> + Pettanr.Views.Balloon.Element + + speech_class: () -> + Pettanr.Views.Speech.Element + +class Pettanr.Views.SpeechBalloon.Element.Edit extends Pettanr.Views.SpeechBalloon.Element + + initialize: (options) -> + super(options) + @listenTo(@element, 'sort', @set_style) + @listenTo(@element, 'active', @active) + @listenTo(@element, 'inactive', @inactive) + + render: () -> + super() + @listenTo(@balloon, 'input:r', @input_r) + @listenTo(@balloon, 'input:x', @set_style) + @listenTo(@balloon, 'input:y', @set_style) + @listenTo(@balloon, 'input:width', @set_style) + @listenTo(@balloon, 'input:height', @set_style) + bln = @balloon + this.$el.draggable { + stop: (event, ui) -> + left = Math.floor($(@).position().left) + top = Math.floor($(@).position().top) + bln.set({x: left, y: top}, {silent: true}) + bln.trigger('move') + } + this + + set_style: () -> + super() + + input_r: () -> + @trigger('input:r') + + active: () -> + $('.ui-resizable-handle', this.el).map -> + $(@).css('display', 'block') + + inactive: () -> + $('.ui-resizable-handle', this.el).map -> + $(@).css('display', 'none') + + element_class: (element) -> + Pettanr.Views[element.singular()].Element.Edit + + balloon_class: () -> + Pettanr.Views.Balloon.Element.Edit + + speech_class: () -> + Pettanr.Views.Speech.Element.Edit +