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

org.ioc.commons.impl.gwt.client.ui.DisplayComposite Maven / Gradle / Ivy

There is a newer version: 1.2.1
Show newest version
package org.ioc.commons.impl.gwt.client.ui;

import java.util.HashMap;
import java.util.Map;

import org.ioc.commons.flowcontrol.actioncontroller.ActionController;
import org.ioc.commons.flowcontrol.actioncontroller.ActionControllerBinder;
import org.ioc.commons.flowcontrol.actioncontroller.IsExternalAction;
import org.ioc.commons.flowcontrol.eventbus.EventBus;
import org.ioc.commons.flowcontrol.eventbus.EventBusBinder;
import org.ioc.commons.flowcontrol.eventbus.IsEvent;
import org.ioc.commons.flowcontrol.operationmanager.IsOperation;
import org.ioc.commons.flowcontrol.operationmanager.OperationManager;
import org.ioc.commons.flowcontrol.operationmanager.OperationManagerBinder;
import org.ioc.commons.impl.gwt.client.flowcontrol.GwtFlowController;
import org.ioc.commons.ui.HasPosition;
import org.ioc.commons.ui.HasStorage;
import org.ioc.commons.ui.IsDisplay;
import org.ioc.commons.ui.IsPresenter;
import org.ioc.commons.ui.IsResizable;
import org.ioc.commons.ui.IsWidget;

import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.google.web.bindery.event.shared.SimpleEventBus;

public abstract class DisplayComposite, O extends Enum, A extends Enum, P extends IsPresenter>
		extends Composite implements IsDisplay, IsResizable, HasPosition, HasStorage {
	private final com.google.web.bindery.event.shared.EventBus gwtEventBus = new SimpleEventBus();

	protected final GwtFlowController flowController = new GwtFlowController(this.gwtEventBus, this);
	protected final EventBus eventbus = flowController.eventBus();
	protected final OperationManager operationManager = flowController.operationManager();
	protected final ActionController actionController = flowController.actionController();
	private final Map storage = new HashMap();

	protected P presenter;

	private boolean initialized;

	@Override
	protected void onLoad() {
		super.onLoad();
		if (this.presenter != null && !this.initialized) {
			this.initialized = true;
			this.presenter.onInitDisplay();
		}
	}

	final public EventBusBinder eventBus() {
		return this.eventbus;
	}

	final public OperationManagerBinder operationManager() {
		return this.operationManager;
	}

	final public ActionControllerBinder actionController() {
		return this.actionController;
	}

	@Override
	public int getWidth() {
		return super.getOffsetWidth();
	}

	@Override
	public int getHeight() {
		return super.getOffsetHeight();
	}

	@Override
	public int getX() {
		return super.getAbsoluteTop();
	}

	@Override
	public int getY() {
		return super.getAbsoluteLeft();
	}

	@Override
	public void setWidth(int width) {
		super.setWidth(width + "px");
	}

	@Override
	public void setHeight(int height) {
		super.setHeight(height + "px");
	}

	/**
	 * Utility method for checking if the user pressed ENTER key
	 * 
	 * @param evt
	 *            Key press event
	 * @return true if ENTER was pressed; false otherwise
	 */
	protected boolean enterPressed(KeyPressEvent evt) {
		char charCode = evt.getCharCode();
		return (charCode == '\r');
	}

	@Override
	public void store(Object key, Object data) {
		storage.put(key, data);
	}

	@Override
	public Object retrieve(Object key) {
		return storage.get(key);
	}

	@Override
	public IsWidget getWidgetParent() {
		return DisplayComposite.getWidgetParent(this);
	}

	/**
	 * A helpful method for other widgets which need to implements
	 * {@link IsWidget#getWidgetParent()} and cannot or do not want to extend
	 * from {@link DisplayComposite}
	 * 
	 * @param w
	 *            Widget which we want to get its parent.
	 * @return Parent widget if exists or null otherwise.
	 */
	public static IsWidget getWidgetParent(Widget w) {
		Widget parent = w.getParent();
		return parent != null ? (parent instanceof IsWidget ? ((IsWidget) parent) : new IsWidgetImpl(parent)) : null;
	}

	@Override
	public boolean isInitialized() {
		return initialized;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy