/*******************************************************************************
* Copyright (c) 2012 Kai Toedter and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html.
*
* Contributors:
* Kai Toedter - initial API and implementation
******************************************************************************/
package com.toedter.gwt.demo.contacts.client.activity;
import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.Place;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.toedter.gwt.demo.contacts.client.IClientFactory;
import com.toedter.gwt.demo.contacts.client.event.ContactViewEvent;
import com.toedter.gwt.demo.contacts.client.place.ContactEditPlace;
import com.toedter.gwt.demo.contacts.client.place.ContactPlace;
import com.toedter.gwt.demo.contacts.client.ui.IContactDetailsView;
import com.toedter.gwt.demo.contacts.shared.Contact;
public class ContactDetailsActivity extends AbstractActivity implements IContactDetailsView.Presenter {
private final IClientFactory clientFactory;
private EventBus eventBus;
private ContactViewEvent.Handler handler;
private final String token;
private IContactDetailsView contactDetailsView;
private final Place place;
public ContactDetailsActivity(ContactPlace place, IClientFactory clientFactory) {
this.clientFactory = clientFactory;
token = place.getToken();
this.place = place;
System.out.println("ContactDetailsActivity.ContactDetailsActivity() token: " + token);
}
public ContactDetailsActivity(ContactEditPlace place, IClientFactory clientFactory) {
this.clientFactory = clientFactory;
token = place.getToken();
this.place = place;
System.out.println("ContactDetailsActivity.ContactDetailsActivity() token: " + token);
}
@Override
public void start(AcceptsOneWidget containerWidget, EventBus eventBus) {
System.out.println("ContactDetailsActivity.start()");
ActivityRegistry.setContactDetailsActivity(this);
contactDetailsView = clientFactory.getContactDetailsView();
this.eventBus = eventBus;
contactDetailsView.setPresenter(this);
if (place instanceof ContactEditPlace || (place instanceof ContactPlace && token.length() == 0)) {
contactDetailsView.clear();
}
handler = new ContactViewEvent.Handler() {
@Override
public void onContactView(ContactViewEvent event) {
System.out.println("ContactDetailsActivity onContactView()");
contactDetailsView.setContact(event.getContact());
}
};
this.eventBus.addHandler(ContactViewEvent.TYPE, handler);
containerWidget.setWidget(contactDetailsView.asWidget());
}
@Override
public String mayStop() {
contactDetailsView.setPresenter(null);
ActivityRegistry.setContactDetailsActivity(null);
return null;
}
/**
* @see IContactDetailsView.Presenter#goTo(Place)
*/
@Override
public void goTo(Place place) {
System.out.println("ContactDetailsActivity.goTo()");
clientFactory.getPlaceController().goTo(place);
}
@Override
public Contact getContact() {
return contactDetailsView.getContact();
}
}