/*
* Copyright 2010 Gal Dolber.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.guit.client;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Widget;
import com.guit.client.binder.GuitBinder;
/**
* Base presenter.
*
* @param <B> Binder class.
*/
@SuppressWarnings("rawtypes")
public abstract class GuitPresenterBase<B extends GuitBinder> implements Presenter {
protected B binder;
@Override
public View getView() {
assert binder != null : "The binder is null in the contructor, override initialize(). Found: " + getClass().getName();
return binder.getView();
}
/**
* Get called after the binder, eventbus, commandservice and placemanager get
* injected.
*/
protected void initialize() {
}
/**
* Release the view and unbind all view events.
*/
@Override
public void releaseView() {
assert binder != null : "The binder is null in the contructor, override initialize()";
binder.releaseView();
}
@Override
public void destroy() {
assert binder != null : "The presenter is already destroyed";
binder.destroy();
binder = null;
}
@Override
public Widget asWidget() {
return getView().asWidget();
}
@Override
public void setViewTo(AcceptsOneWidget panel) {
assert panel != null : "The panel cannot be null";
panel.setWidget(getView());
}
@Override
public void addViewTo(HasWidgets.ForIsWidget panel) {
assert panel != null : "The panel cannot be null";
panel.add(getView());
}
@Override
public void assertView() {
getView();
}
// --------- //
public void setWidth(String width) {
getView().asWidget().setWidth(width);
}
public void setHeight(String height) {
getView().asWidget().setHeight(height);
}
public void setVisible(boolean visible) {
getView().asWidget().setVisible(visible);
}
public void setTitle(String title) {
getView().asWidget().setTitle(title);
}
public void setStyleName(String style) {
getView().asWidget().setStyleName(style);
}
public void setStylePrimaryName(String style) {
getView().asWidget().setStylePrimaryName(style);
}
public boolean isVisible() {
return getView().asWidget().isVisible();
}
public void addStyleDependentName(String styleSuffix) {
getView().asWidget().addStyleDependentName(styleSuffix);
}
public void addStyleName(String style) {
getView().asWidget().addStyleName(style);
}
public final void ensureDebugId(String id) {
getView().asWidget().ensureDebugId(id);
}
public int getAbsoluteLeft() {
return getView().asWidget().getAbsoluteLeft();
}
public int getAbsoluteTop() {
return getView().asWidget().getAbsoluteTop();
}
public int getOffsetHeight() {
return getView().asWidget().getOffsetHeight();
}
public int getOffsetWidth() {
return getView().asWidget().getOffsetWidth();
}
public String getStyleName() {
return getView().asWidget().getStyleName();
}
public String getStylePrimaryName() {
return getView().asWidget().getStylePrimaryName();
}
public String getTitle() {
return getView().asWidget().getTitle();
}
public void removeStyleDependentName(String styleSuffix) {
getView().asWidget().removeStyleDependentName(styleSuffix);
}
public void removeStyleName(String style) {
getView().asWidget().removeStyleName(style);
}
public void setPixelSize(int width, int height) {
getView().asWidget().setPixelSize(width, height);
}
public void setSize(String width, String height) {
getView().asWidget().setSize(width, height);
}
public void setStyleDependentName(String styleSuffix, boolean add) {
getView().asWidget().setStyleDependentName(styleSuffix, add);
}
public void setStyleName(String style, boolean add) {
getView().asWidget().setStyleName(style, add);
}
public <H extends EventHandler> HandlerRegistration addHandler(H handler, GwtEvent.Type<H> type) {
return getView().asWidget().addHandler(handler, type);
}
public void fireEvent(GwtEvent<?> event) {
getView().asWidget().fireEvent(event);
}
}