summaryrefslogtreecommitdiff
path: root/src/library/scala/collection/mutable/ObservableBuffer.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/scala/collection/mutable/ObservableBuffer.scala')
-rw-r--r--src/library/scala/collection/mutable/ObservableBuffer.scala40
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