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

com.jpattern.gwt.client.navigationevent.ANavigationEvent Maven / Gradle / Ivy

package com.jpattern.gwt.client.navigationevent;

import java.util.Map;

import com.jpattern.gwt.client.ApplicationProxy;
import com.jpattern.gwt.client.IApplicationProvider;
import com.jpattern.gwt.client.presenter.IPresenter;

/**
 * 
 * @author Francesco Cina
 *
 * 01/ago/2011
 */
public abstract class ANavigationEvent implements INavigationEvent {

	private IApplicationProvider provider;
	private final String eventName;

	public ANavigationEvent(String eventName) {
		this(eventName, ApplicationProxy.getInstance().getApplicationProvider());
	}
	
	public ANavigationEvent(String eventName, IApplicationProvider provider) {
		this.eventName = eventName;
		this.provider = provider;
	}
	
	@Override
	public final void notifyNavigationEvent(IPresenter parentPresenter, Map queryStringValues, boolean registerEvent) {
		getProvider().getHistoryService().getHistoryManager().registerHistory(parentPresenter, queryStringValues, registerEvent, this);
	}
	
	@Override
	public IPresenter launch(IPresenter parentPresenter, Map queryStringValues, String childInitialEventName) {
		IPresenter presenter = exec(queryStringValues);
		presenter.ignoreInitialEventWithSameTargetOf(childInitialEventName);
		initPresenter(parentPresenter, presenter);
		return presenter;
	}
	
	@Override
	public IPresenter launch(IPresenter parentPresenter, Map queryStringValues) {
		IPresenter presenter = exec(queryStringValues);
		initPresenter(parentPresenter, presenter);
		return presenter;
	}
	
	private void initPresenter(IPresenter parentPresenter, IPresenter presenter) {
		presenter.setParent(parentPresenter);
		presenter.init();
		parentPresenter.getView().onNavigationEvent(getName());
	}

	/**
	 * Return the newly created presenter
	 * @return
	 */
	public abstract IPresenter exec(Map queryStringValues); 
	
	protected IApplicationProvider getProvider() {
		if (provider == null) {
			provider = ApplicationProxy.getInstance().getApplicationProvider();
		}
		return provider;
	}
	
	public final String getName() {
		return eventName;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy