com.toedter.gwt.demo.contacts.client.activity.ContactDetailsActivity.java Source code

Java tutorial

Introduction

Here is the source code for com.toedter.gwt.demo.contacts.client.activity.ContactDetailsActivity.java

Source

/*******************************************************************************
 * 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();
    }
}