aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/labs/observe/simpleobservable.js
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/labs/observe/simpleobservable.js')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/labs/observe/simpleobservable.js129
1 files changed, 0 insertions, 129 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/labs/observe/simpleobservable.js b/contexts/data/lib/closure-library/closure/goog/labs/observe/simpleobservable.js
deleted file mode 100644
index acc3a84..0000000
--- a/contexts/data/lib/closure-library/closure/goog/labs/observe/simpleobservable.js
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2012 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview An implementation of {@code Observable} that can be
- * used as base class or composed into another class that wants to
- * implement {@code Observable}.
- */
-
-goog.provide('goog.labs.observe.SimpleObservable');
-
-goog.require('goog.Disposable');
-goog.require('goog.array');
-goog.require('goog.asserts');
-goog.require('goog.labs.observe.Notice');
-goog.require('goog.labs.observe.Observable');
-goog.require('goog.labs.observe.Observer');
-goog.require('goog.object');
-
-
-
-/**
- * A simple implementation of {@code goog.labs.observe.Observable} that can
- * be used as a standalone observable or as a base class for other
- * observable object.
- *
- * When another class wants to implement observable without extending
- * {@code SimpleObservable}, they can create an instance of
- * {@code SimpleObservable}, specifying {@code opt_actualObservable},
- * and delegate to the instance. Here is a trivial example:
- *
- * <pre>
- * ClassA = function() {
- * goog.base(this);
- * this.observable_ = new SimpleObservable(this);
- * this.registerDisposable(this.observable_);
- * };
- * goog.inherits(ClassA, goog.Disposable);
- *
- * ClassA.prototype.observe = function(observer) {
- * this.observable_.observe(observer);
- * };
- *
- * ClassA.prototype.unobserve = function(observer) {
- * this.observable_.unobserve(observer);
- * };
- *
- * ClassA.prototype.notify = function(opt_data) {
- * this.observable_.notify(opt_data);
- * };
- * </pre>
- *
- * @param {!goog.labs.observe.Observable=} opt_actualObservable
- * Optional observable object. Defaults to 'this'. When used as
- * base class, the parameter need not be given. It is only useful
- * when using this class to implement implement {@code Observable}
- * interface on another object, see example above.
- * @constructor
- * @implements {goog.labs.observe.Observable}
- * @extends {goog.Disposable}
- */
-goog.labs.observe.SimpleObservable = function(opt_actualObservable) {
- goog.base(this);
-
- /**
- * @type {!goog.labs.observe.Observable}
- * @private
- */
- this.actualObservable_ = opt_actualObservable || this;
-
- /**
- * Observers registered on this object.
- * @type {!Array.<!goog.labs.observe.Observer>}
- * @private
- */
- this.observers_ = [];
-};
-goog.inherits(goog.labs.observe.SimpleObservable, goog.Disposable);
-
-
-/** @override */
-goog.labs.observe.SimpleObservable.prototype.observe = function(observer) {
- goog.asserts.assert(!this.isDisposed());
-
- // Registers the (type, observer) only if it has not been previously
- // registered.
- var shouldRegisterObserver = !goog.array.some(this.observers_, goog.partial(
- goog.labs.observe.Observer.equals, observer));
- if (shouldRegisterObserver) {
- this.observers_.push(observer);
- }
- return shouldRegisterObserver;
-};
-
-
-/** @override */
-goog.labs.observe.SimpleObservable.prototype.unobserve = function(observer) {
- goog.asserts.assert(!this.isDisposed());
- return goog.array.removeIf(this.observers_, goog.partial(
- goog.labs.observe.Observer.equals, observer));
-};
-
-
-/** @override */
-goog.labs.observe.SimpleObservable.prototype.notify = function(opt_data) {
- goog.asserts.assert(!this.isDisposed());
- var notice = new goog.labs.observe.Notice(this.actualObservable_, opt_data);
- goog.array.forEach(
- goog.array.clone(this.observers_), function(observer) {
- observer.notify(notice);
- });
-};
-
-
-/** @override */
-goog.labs.observe.SimpleObservable.prototype.disposeInternal = function() {
- this.observers_.length = 0;
-};