Class History
In order to receive notification of user-directed changes to the current
history item, implement the ValueChangeHandler
interface and attach
it via addValueChangeHandler(ValueChangeHandler)
.
Example
public class HistoryExample implements EntryPoint, ValueChangeHandler<String> { private Label lbl = new Label(); public void onModuleLoad() { // Create three hyperlinks that change the application's history. Hyperlink link0 = new Hyperlink("link to foo", "foo"); Hyperlink link1 = new Hyperlink("link to bar", "bar"); Hyperlink link2 = new Hyperlink("link to baz", "baz"); // If the application starts with no history token, redirect to a new // 'baz' state. String initToken = History.getToken(); if (initToken.length() == 0) { History.newItem("baz"); } // Add widgets to the root panel. VerticalPanel panel = new VerticalPanel(); panel.add(lbl); panel.add(link0); panel.add(link1); panel.add(link2); RootPanel.get().add(panel); // Add history listener History.addValueChangeHandler(this); // Now that we've setup our listener, fire the initial history state. History.fireCurrentHistoryState(); } public void onValueChange(ValueChangeEvent<String> event) { // This method is called whenever the application's history changes. Set // the label to reflect the current history token. lbl.setText("The current history token is: " + event.getValue()); } }
URL Encoding
Any valid characters may be used in the history token and will survive round-trips throughnewItem(String)
to getToken()
/
ValueChangeHandler.onValueChange(com.google.gwt.event.logical.shared.ValueChangeEvent)
, but most will be encoded in the user-visible URL. The following US-ASCII
characters are not encoded on any currently supported browser (but may be in
the future due to future browser changes):
- a-z
- A-Z
- 0-9
- ;,/?:@invalid input: '&'=+$-_.!~*()
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
addHistoryListener
(HistoryListener listener) Deprecated.static HandlerRegistration
addValueChangeHandler
(ValueChangeHandler<String> handler) Adds aValueChangeEvent
handler to be informed of changes to the browser's history stack.static void
back()
Programmatic equivalent to the user pressing the browser's 'back' button.static String
encodeHistoryToken
(String historyToken) Encode a history token for use as part of a URI.static void
FireValueChangeHandler.onValueChange(com.google.gwt.event.logical.shared.ValueChangeEvent)
events with the current history state.static void
forward()
Programmatic equivalent to the user pressing the browser's 'forward' button.static String
getToken()
Gets the current history token.static void
Adds a new browser history entry.static void
Adds a new browser history entry.static void
onHistoryChanged
(String historyToken) Deprecated.UsefireCurrentHistoryState()
instead.static void
removeHistoryListener
(HistoryListener listener) Deprecated.static void
replaceItem
(String historyToken) Replace the current history token on top of the browsers history stack.static void
replaceItem
(String historyToken, boolean issueEvent) Replace the current history token on top of the browsers history stack.
-
Constructor Details
-
History
public History()
-
-
Method Details
-
addHistoryListener
Deprecated.useaddValueChangeHandler(ValueChangeHandler)
insteadAdds a listener to be informed of changes to the browser's history stack.- Parameters:
listener
- the listener to be added
-
back
public static void back()Programmatic equivalent to the user pressing the browser's 'back' button. -
encodeHistoryToken
Encode a history token for use as part of a URI.- Parameters:
historyToken
- the token to encode- Returns:
- the encoded token, suitable for use as part of a URI
-
fireCurrentHistoryState
public static void fireCurrentHistoryState()FireValueChangeHandler.onValueChange(com.google.gwt.event.logical.shared.ValueChangeEvent)
events with the current history state. This is most often called at the end of an application'sEntryPoint.onModuleLoad()
to inform history handlers of the initial application state. -
forward
public static void forward()Programmatic equivalent to the user pressing the browser's 'forward' button. -
getToken
Gets the current history token. The handler will not receive aValueChangeHandler.onValueChange(com.google.gwt.event.logical.shared.ValueChangeEvent)
event for the initial token; requiring that an application request the token explicitly on startup gives it an opportunity to run different initialization code in the presence or absence of an initial token.- Returns:
- the initial token, or the empty string if none is present.
-
newItem
Adds a new browser history entry. Calling this method will causeValueChangeHandler.onValueChange(com.google.gwt.event.logical.shared.ValueChangeEvent)
to be called as well.- Parameters:
historyToken
- the token to associate with the new history item
-
newItem
Adds a new browser history entry. Calling this method will causeValueChangeHandler.onValueChange(com.google.gwt.event.logical.shared.ValueChangeEvent)
to be called as well if and only if issueEvent is true.- Parameters:
historyToken
- the token to associate with the new history itemissueEvent
- true if aValueChangeHandler.onValueChange(com.google.gwt.event.logical.shared.ValueChangeEvent)
event should be issued
-
onHistoryChanged
Deprecated.UsefireCurrentHistoryState()
instead.Call all history handlers with the specified token. Note that this does not change the history system's idea of the current state and is only kept for backward compatibility. To fire history events for the initial state of the application, instead callfireCurrentHistoryState()
from the applicationEntryPoint.onModuleLoad()
method.- Parameters:
historyToken
- history token to fire events for
-
removeHistoryListener
Deprecated.Removes a history listener.- Parameters:
listener
- the listener to be removed
-
replaceItem
Replace the current history token on top of the browsers history stack.Note: This method has problems. The URL is updated with window.location.replace, this unfortunately has side effects when using the deprecated iframe linker (ie. "std" linker). Make sure you are using the cross site iframe linker when using this method in your code.
Calling this method will cause
ValueChangeHandler.onValueChange(com.google.gwt.event.logical.shared.ValueChangeEvent)
to be called as well.- Parameters:
historyToken
- history token to replace current top entry
-
replaceItem
Replace the current history token on top of the browsers history stack.Note: This method has problems. The URL is updated with window.location.replace, this unfortunately has side effects when using the deprecated iframe linker (ie. "std" linker). Make sure you are using the cross site iframe linker when using this method in your code.
Calling this method will cause
ValueChangeHandler.onValueChange(com.google.gwt.event.logical.shared.ValueChangeEvent)
to be called as well if and only if issueEvent is true.- Parameters:
historyToken
- history token to replace current top entryissueEvent
- issueEvent true if aValueChangeHandler.onValueChange(com.google.gwt.event.logical.shared.ValueChangeEvent)
event should be issued
-
addValueChangeHandler(ValueChangeHandler)
instead