
com.jpattern.gwt.client.history.HistoryManager Maven / Gradle / Ivy
package com.jpattern.gwt.client.history;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.jpattern.gwt.client.navigationevent.INavigationEvent;
import com.jpattern.gwt.client.navigationevent.RootNavigationEvent;
import com.jpattern.gwt.client.presenter.IPresenter;
import com.jpattern.gwt.client.presenter.NullPresenter;
import com.jpattern.gwt.client.util.QueryString;
/**
*
* @author Francesco Cina
*
* 27/lug/2011
*/
public class HistoryManager implements IHistoryManager {
private static String TOKEN_SEPARATOR = "_";
private final IHistoryManagerObserver historyManagerObserver;
private final IHistoryEngine historyEngine;
private RootNavigationEvent rootNavigationEvent = new RootNavigationEvent("");
public HistoryManager(IHistoryEngine historyEngine, IHistoryManagerObserver historyManagerObserver) {
this.historyManagerObserver = historyManagerObserver;
this.historyEngine = historyEngine;
historyEngine.init(this);
}
@Override
public void onEvent(String eventName) {
IEventToken eventToken = generateEventToken(eventName);
String[] tokens = generateTokenList( eventToken.getToken() );
Map queryStringMap = QueryString.toMap(eventToken.getQueryString());
launchEvents( eventName , tokens , queryStringMap);
}
@Override
public void registerHistory(IPresenter parentPresenter, Map queryStringValues, boolean registerEvent, INavigationEvent navigationEvent) {
if (registerEvent) {
List presenterHierarchy = new ArrayList();
parentPresenter.hierarchy(presenterHierarchy);
presenterHierarchy.add(navigationEvent.getName());
String token = "";
if (presenterHierarchy.size()>0 || queryStringValues.size()>0) {
token = generateTokenString(presenterHierarchy);
token = token + QueryString.toQueryString(queryStringValues);
historyEngine.registerEvent(token);
}
historyManagerObserver.onRegisterHistory(token, presenterHierarchy);
} else {
navigationEvent.launch(parentPresenter, queryStringValues);
}
}
public String generateTokenString(List presenterHierarchy) {
StringBuffer token = new StringBuffer();
int size = presenterHierarchy.size();
for (int i=0; i queryStringMap) {
List createdPresenterList = new ArrayList();
// if (tokens.length<=1){// && tokens[0].equals("")) {
// IPresenter rootPresenter = rootNavigationEvent.launch(new NullPresenter(), queryStringMap);
// createdPresenterList.add(rootPresenter);
// return;
// } else {
// if (tokens.length>1) {
IPresenter presenter = new NullPresenter();
INavigationEvent navigationEvent = rootNavigationEvent;
for (int i=1; i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy