/*******************************************************************************
* 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.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.toedter.gwt.demo.contacts.client.IClientFactory;
import com.toedter.gwt.demo.contacts.client.IContactServiceAsync;
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.IToolBarView;
import com.toedter.gwt.demo.contacts.client.ui.IToolBarView.Presenter;
import com.toedter.gwt.demo.contacts.shared.Contact;
public class ToolBarActivity extends AbstractActivity implements Presenter {
private final IClientFactory clientFactory;
private IToolBarView toolBarView;
public ToolBarActivity(ContactPlace place, IClientFactory clientFactory) {
this.clientFactory = clientFactory;
}
public ToolBarActivity(ContactEditPlace place, IClientFactory clientFactory) {
System.out.println("ToolBarActivity.ToolBarActivity(): " + place.getToken());
this.clientFactory = clientFactory;
}
@Override
public void start(AcceptsOneWidget containerWidget, EventBus eventBus) {
System.out.println("ToolBarActivity.start()");
toolBarView = clientFactory.getToolBarView();
toolBarView.setPresenter(this);
containerWidget.setWidget(toolBarView.asWidget());
}
@Override
public String mayStop() {
toolBarView.setPresenter(null);
return null;
}
@Override
public void addContact() {
clientFactory.getPlaceController().goTo(new ContactEditPlace(null));
}
@Override
public void saveContact() {
System.out.println("ToolBarActivity.saveContact()");
ContactDetailsActivity contactDetailsActivity = ActivityRegistry.getContactDetailsActivity();
if (contactDetailsActivity != null) {
final Contact contact = contactDetailsActivity.getContact();
IContactServiceAsync contactService = clientFactory.getContactService();
contactService.saveContact(contact, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
System.out.println("Contact saved");
clientFactory.setContacts(null);
clientFactory.getPlaceController().goTo(new ContactPlace(contact.getEmail()));
}
@Override
public void onFailure(Throwable caught) {
System.err.println("Cannot save contact: " + contact);
}
});
}
}
@Override
public void deleteContact() {
System.out.println("ToolBarActivity.deleteContact()");
ContactDetailsActivity contactDetailsActivity = ActivityRegistry.getContactDetailsActivity();
if (contactDetailsActivity != null) {
final Contact contact = contactDetailsActivity.getContact();
IContactServiceAsync contactService = clientFactory.getContactService();
contactService.deleteContact(contact, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
System.out.println("Contact deleted");
clientFactory.setContacts(null);
clientFactory.getPlaceController().goTo(new ContactPlace(""));
}
@Override
public void onFailure(Throwable caught) {
System.err.println("Cannot delete contact: " + contact);
}
});
}
}
}