diff options
Diffstat (limited to 'src/library/scala/collection/mutable/ObservableBuffer.scala')
-rw-r--r-- | src/library/scala/collection/mutable/ObservableBuffer.scala | 40 |
1 files changed, 12 insertions, 28 deletions
diff --git a/src/library/scala/collection/mutable/ObservableBuffer.scala b/src/library/scala/collection/mutable/ObservableBuffer.scala index 40e8bf3641..7cda49d2fa 100644 --- a/src/library/scala/collection/mutable/ObservableBuffer.scala +++ b/src/library/scala/collection/mutable/ObservableBuffer.scala @@ -1,5 +1,4 @@ -/* TODO: Reintegrate -* /* __ *\ +/* __ *\ ** ________ ___ / / ___ Scala API ** ** / __/ __// _ | / / / _ | (c) 2003-2009, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | ** @@ -12,8 +11,7 @@ package scala.collection.mutable - -//import Predef.UnsupportedOperationException +import script._ /** This class is typically used as a mixin. It adds a subscription * mechanism to the <code>Buffer</code> class into which this abstract @@ -25,42 +23,29 @@ package scala.collection.mutable */ trait ObservableBuffer[A, This <: ObservableBuffer[A, This]] extends Buffer[A] - with Publisher[Message[(Location, A)] - with Undoable, This] + with Publisher[Message[A] with Undoable, This] { self: This => - abstract override def +(element: A): Buffer[A] = { - super.+(element) - publish(new Include((End, element)) with Undoable { + abstract override def +=(element: A): this.type = { + super.+=(element) + publish(new Include(End, element) with Undoable { def undo() { trimEnd(1) } }) this } - abstract override def +:(element: A): Buffer[A] = { - super.+:(element); - publish(new Include((Start, element)) with Undoable { + abstract override def +:(element: A): this.type = { + super.+:(element) + publish(new Include(Start, element) with Undoable { def undo() { trimStart(1) } }) this } - abstract override def insertAll(n: Int, iter: Iterable[A]): Unit = { - super.insertAll(n, iter) - var i = n - val it = iter.elements - while (it.hasNext) { - publish(new Include((Index(i), it.next)) with Undoable { - def undo { remove(i) } - }) - i = i + 1 - } - } - abstract override def update(n: Int, newelement: A): Unit = { val oldelement = apply(n) super.update(n, newelement) - publish(new Update((Index(n), newelement)) with Undoable { + publish(new Update(Index(n), newelement) with Undoable { def undo { update(n, oldelement) } }) } @@ -68,7 +53,7 @@ trait ObservableBuffer[A, This <: ObservableBuffer[A, This]] abstract override def remove(n: Int): A = { val oldelement = apply(n) super.remove(n) - publish(new Remove((Index(n), oldelement)) with Undoable { + publish(new Remove(Index(n), oldelement) with Undoable { def undo { insert(n, oldelement) } }) oldelement @@ -80,5 +65,4 @@ trait ObservableBuffer[A, This <: ObservableBuffer[A, This]] def undo { throw new UnsupportedOperationException("cannot undo") } }) } -} -*/ +}
\ No newline at end of file |