All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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