<!DOCTYPE html>
<html>
<!--
Copyright The Closure Library Authors. All Rights Reserved.
Use of this source code is governed by the Apache License, Version 2.0.
See the COPYING file for details.
-->
<head>
<title>goog.labs.pubsub.BroadcastPubSub</title>
<link rel="stylesheet" href="../../demos/css/demo.css">
<style>
table {
border: 1px solid #666;
background: lightblue;
margin: 1em auto;
}
td {
text-align: center;
padding: 0 0.5em 0.5em 0.5em;
}
</style>
<script src="../../base.js"></script>
<script>
goog.require('goog.History');
goog.require('goog.debug.DivConsole');
goog.require('goog.dom');
goog.require('goog.events');
goog.require('goog.history.EventType');
goog.require('goog.labs.pubsub.BroadcastPubSub');
goog.require('goog.log');
goog.require('goog.object');
goog.require('goog.string');
</script>
</head>
<body>
<h1>goog.labs.pubsub.BroadcastPubSub</h1>
<p>Demonstration of publishing capabilities across tabs using
BroadcastPubSub. There are two instances of BroadcastPubSub on this page
which you can use to subscribe.</p>
<p><em>You should open this page in multiple windows and subscribe in the
windows you want to receive updates in.</em></p>
<p><button onclick="window.open(window.location, '_blank')">New Window</button></p>
<fieldset>
<legend>BroadcastPubSub Instance #1</legend>
<p>
Value to publish from BroadcastPubSub #1:
<input type="text" id="broadcastPubSub1Value" value="foo">
<button onclick="publish(broadcastPubSub1, broadcastPubSub1Value)">Publish</button>
</p>
<p>
<button onclick="unsubscribe(broadcastPubSub1, updateBroadcastPubSub1Text)">
Unsubscribe
</button>
<button onclick="subscribe(broadcastPubSub1, updateBroadcastPubSub1Text)">Subscribe</button>
<button onclick="subscribeOnce(broadcastPubSub1, updateBroadcastPubSub1Text)">
Subscribe Once
</button>
</p>
<p>
Last message seen by BroadcastPubSub #1:
<input type="text" id="broadcastPubSub1Display">
</p>
</fieldset>
<fieldset>
<legend>BroadcastPubSub Instance #2</legend>
<p>
Value to publish from BroadcastPubSub #2:
<input type="text" id="broadcastPubSub2Value" value="bar">
<button onclick="publish(broadcastPubSub2, broadcastPubSub2Value)">Publish</button>
</p>
<p>
<button onclick="unsubscribe(broadcastPubSub2, updateBroadcastPubSub2Text)">
Unsubscribe
</button>
<button onclick="subscribe(broadcastPubSub2, updateBroadcastPubSub2Text)">Subscribe</button>
<button onclick="subscribeOnce(broadcastPubSub2, updateBroadcastPubSub2Text)">
Subscribe Once
</button>
</p>
<p>
Last message seen by BroadcastPubSub #2:
<input type="text" id="broadcastPubSub2Display">
</p>
</fieldset>
<fieldset class="goog-debug-panel">
<legend>Event Log</legend>
<div id="log"></div>
</fieldset>
<script>
var logger = goog.log.getLogger('demo');
var logConsole = new goog.debug.DivConsole(goog.dom.getElement('log'));
logConsole.setCapturing(true);
var broadcastPubSub1Value = goog.dom.getElement('broadcastPubSub1Value');
var broadcastPubSub2Value = goog.dom.getElement('broadcastPubSub2Value');
var broadcastPubSub1Display = goog.dom.getElement('broadcastPubSub1Display');
var broadcastPubSub2Display = goog.dom.getElement('broadcastPubSub2Display');
goog.log.info(logger, 'initializing local storage');
var broadcastPubSub1 = new goog.labs.pubsub.BroadcastPubSub();
var broadcastPubSub2 = new goog.labs.pubsub.BroadcastPubSub();
function subscribe(sps, fn) {
goog.log.info(logger, goog.string.subs('subscribing to "bc_demo"'));
sps.subscribe('bc_demo', fn);
}
function unsubscribe(sps, fn) {
goog.log.info(logger, goog.string.subs('unsubscribing to "bc_demo"'));
sps.unsubscribe('bc_demo', fn);
}
function subscribeOnce(sps, fn) {
goog.log.info(logger, goog.string.subs('subscribing once to "bc_demo"'));
sps.subscribeOnce('bc_demo', fn);
}
function publish(sps, ele) {
goog.log.info(logger, goog.string.subs('publishing "%s"', ele.value));
sps.publish('bc_demo', ele.value);
}
function updateBroadcastPubSub1Text(val) {
goog.log.info(logger, goog.string.subs('bc1 received "%s"', val));
broadcastPubSub1Display.value = val;
}
function updateBroadcastPubSub2Text(val) {
goog.log.info(logger, goog.string.subs('bc2 received "%s"', val));
broadcastPubSub2Display.value = val;
}
</script>
</body>
</html>