| Index: client/samples/swarm/UIState.dart
|
| ===================================================================
|
| --- client/samples/swarm/UIState.dart (revision 3770)
|
| +++ client/samples/swarm/UIState.dart (working copy)
|
| @@ -1,73 +0,0 @@
|
| -// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -/**
|
| - * The base class for UI state that intends to support browser history.
|
| - */
|
| -class UIState {
|
| - /**
|
| - * The event listener we hook to the window's "popstate" event.
|
| - * This event is triggered by the back button or by the first page load.
|
| - */
|
| - EventListener _historyTracking;
|
| -
|
| - UIState();
|
| -
|
| - void startHistoryTracking() {
|
| - stopHistoryTracking();
|
| -
|
| - bool firstEvent = true;
|
| - _historyTracking = EventBatch.wrap((event) {
|
| - String state = window.location.hash;
|
| - if (state.startsWith('#')) {
|
| - // TODO(jimhug): Support default argument on substring.
|
| - state = state.substring(1, state.length);
|
| - }
|
| -
|
| - if (firstEvent && state != '') {
|
| - // TODO(jmesserly): When loading a bookmark or refreshing, we replace
|
| - // the app state with a clean app state so the back button works. It
|
| - // would be better to support jumping to the previous story.
|
| - // We'd need to do some history manipulation here and some fixes to
|
| - // the views for this.
|
| - window.history.replaceState(null, document.title, '#');
|
| - } else if (state != '') {
|
| - loadFromHistory(JSON.parse(state));
|
| - }
|
| - firstEvent = false;
|
| - });
|
| -
|
| - window.on.popState.add(_historyTracking);
|
| - }
|
| -
|
| - void stopHistoryTracking() {
|
| - if (_historyTracking != null) {
|
| - window.on.popState.add(_historyTracking); // remove?
|
| - }
|
| - }
|
| -
|
| - /** Pushes a state onto the browser history stack */
|
| - void pushToHistory() {
|
| - if (_historyTracking == null) {
|
| - throw 'history tracking not started';
|
| - }
|
| -
|
| - String state = JSON.stringify(toHistory());
|
| -
|
| - // TODO(jmesserly): [state] should be an Object, and we should pass it to
|
| - // the state parameter instead of as a #hash URL. Right now we're working
|
| - // around b/4582542.
|
| - window.history.pushState(null, document.title, '#' + state);
|
| - }
|
| -
|
| - /**
|
| - * Serialize the state to a form suitable for storing in browser history.
|
| - */
|
| - abstract Map<String, String> toHistory();
|
| -
|
| - /**
|
| - * Load the UI state from the given [values].
|
| - */
|
| - abstract void loadFromHistory(Map<String, String> values);
|
| -}
|
|
|