changed examples, added listener methods

This commit is contained in:
Kevin Jahns
2014-08-19 21:09:23 +02:00
parent 9a1b0b7ced
commit 92e23b7007
50 changed files with 1229 additions and 526 deletions

View File

@@ -30,7 +30,7 @@ class JsonYatta
#
# @result JsonType
#
getRootElement: ()->
getSharedObject: ()->
@root_element
#
@@ -77,6 +77,9 @@ class JsonYatta
val : (name, content, mutable)->
@root_element.val(name, content, mutable)
on: ()->
@root_element.on arguments...
#
# @see JsonType.value
#

View File

@@ -39,7 +39,7 @@ class TextYatta
#
# @result Word
#
getRootElement: ()->
getSharedObject: ()->
@root_element.val()
#
@@ -72,31 +72,34 @@ class TextYatta
# @see JsonType.val
#
val: ()->
@getRootElement().val()
@getSharedObject().val()
#
# @see Word.insertText
#
insertText: (pos, content)->
@getRootElement().insertText pos, content
@getSharedObject().insertText pos, content
#
# @see Word.deleteText
#
deleteText: (pos, length)->
@getRootElement().deleteText pos, length
@getSharedObject().deleteText pos, length
#
# @see Word.bind
#
bind: (textarea)->
@getRootElement().bind textarea
@getSharedObject().bind textarea
#
# @see Word.replaceText
#
replaceText: (text)->
@getRootElement().replaceText text
@getSharedObject().replaceText text
on: ()->
@root_element.on arguments...
module.exports = TextYatta

View File

@@ -32,25 +32,35 @@ module.exports = (HB)->
# @param {String} event Name of the event.
# @param {Function} f f is executed in case the event fires.
#
on: (event, f)->
on: (events, f)->
@event_listeners ?= {}
@event_listeners[event] ?= []
@event_listeners[event].push f
if events.constructor isnt [].constructor
events = [events]
for e in events
@event_listeners[e] ?= []
@event_listeners[e].push f
deleteListener: (events, f)->
if events.constructor isnt [].constructor
events = [events]
for e in events
if @event_listeners?[e]?
@event_listeners[e] = @event_listeners[e].filter (g)->
f isnt g
#
# Fire an event.
# TODO: Do something with timeouts. You don't want this to fire for every operation (e.g. insert).
#
callEvent: (event, args)->
callEvent: (event, args...)->
if @event_listeners?[event]?
for f in @event_listeners[event]
f.call @, event, args
f.call @, event, args...
#
# Set the parent of this operation.
#
setParent: (o)->
@parent = o
setParent: (@parent)->
#
# Get the parent of this operation.

View File

@@ -77,7 +77,10 @@ module.exports = (HB)->
uid_end.op_number = "_#{uid_end.op_number}_RM_#{@name}_end"
beg = HB.addOperation(new types.Delimiter uid_beg, undefined, uid_end).execute()
end = HB.addOperation(new types.Delimiter uid_end, beg, undefined).execute()
@map_manager.map[@name] = HB.addOperation(new ReplaceManager undefined, uid_r, beg, end).execute()
@map_manager.map[@name] = HB.addOperation(new ReplaceManager undefined, uid_r, beg, end)
@map_manager.map[@name].setParent @map_manager, @name
@map_manager.map[@name].execute()
@map_manager.callEvent 'addProperty', @name
super
#
@@ -165,8 +168,6 @@ module.exports = (HB)->
o = o.next_cl
if not o.isDeleted()
position -= 1
o
#
@@ -199,6 +200,16 @@ module.exports = (HB)->
HB.addOperation(op).execute()
#
# Add change listeners for parent.
#
setParent: (parent, property_name)->
@on 'insert', (event, op)=>
if op.next_cl instanceof types.Delimiter
@parent.callEvent 'change', property_name
@on 'change', (event)=>
@parent.callEvent 'change', property_name
super parent
#
# Get the value of this Word
# @return {String}
#

View File

@@ -140,7 +140,9 @@ module.exports = (HB)->
#
setReplaceManager: (op)->
@saveOperation 'replace_manager', op
@validateSavedOperations
@validateSavedOperations()
@on ['insert', 'delete'], ()=>
@replace_manager?.callEvent 'change'
#
# Bind this Word to a textfield.