/**
*
*/
package org.appfuse.webapp.client.application;
import org.appfuse.webapp.client.application.base.activity.AsyncActivityProxy;
import org.appfuse.webapp.client.application.base.place.EntityProxyPlace;
import org.appfuse.webapp.client.application.base.place.EntitySearchPlace;
import org.appfuse.webapp.client.proxies.UserProxy;
import org.appfuse.webapp.client.ui.home.HomeActivity;
import org.appfuse.webapp.client.ui.home.HomePlace;
import org.appfuse.webapp.client.ui.login.LoginActivity;
import org.appfuse.webapp.client.ui.login.LoginPlace;
import org.appfuse.webapp.client.ui.logout.LogoutActivity;
import org.appfuse.webapp.client.ui.logout.LogoutPlace;
import org.appfuse.webapp.client.ui.reloadOptions.ReloadOptionsActivity;
import org.appfuse.webapp.client.ui.reloadOptions.ReloadOptionsPlace;
import org.appfuse.webapp.client.ui.upload.FileUploadActivity;
import org.appfuse.webapp.client.ui.upload.FileUploadPlace;
import org.appfuse.webapp.client.ui.users.active.ActiveUsersActivity;
import org.appfuse.webapp.client.ui.users.active.ActiveUsersPlace;
import org.appfuse.webapp.client.ui.users.editProfile.EditProfileActivity;
import org.appfuse.webapp.client.ui.users.editProfile.EditProfilePlace;
import org.appfuse.webapp.client.ui.users.editUser.EditUserActivity;
import org.appfuse.webapp.client.ui.users.search.UsersSearchActivity;
import org.appfuse.webapp.client.ui.users.signUp.SignUpActivity;
import org.appfuse.webapp.client.ui.users.signUp.SignUpPlace;
import org.appfuse.webapp.client.ui.users.updatePassword.UpdatePasswordActivity;
import org.appfuse.webapp.client.ui.users.updatePassword.UpdatePasswordPlace;
import com.google.gwt.activity.shared.Activity;
import com.google.gwt.activity.shared.ActivityMapper;
import com.google.gwt.inject.client.AsyncProvider;
import com.google.gwt.place.shared.Place;
import com.google.inject.Inject;
import com.google.inject.Provider;
/**
* @author ivangsa
*
*/
public class ApplicationActivityMapper implements ActivityMapper {
@Inject
private Provider<HomeActivity> homeActivityProvider;
@Inject
private Provider<LoginActivity> loginActivityProvider;
@Inject
private Provider<UpdatePasswordActivity> updatePasswordActivityProvider;
@Inject
private AsyncProvider<LogoutActivity> logoutActivityProvider;
@Inject
private AsyncProvider<ReloadOptionsActivity> reloadOptionsActivityProvider;
@Inject
private AsyncProvider<SignUpActivity> signUpActivityProvider;
@Inject
private AsyncProvider<EditProfileActivity> editProfileActivityProvider;
@Inject
private AsyncProvider<ActiveUsersActivity> activeUsersActivityProvider;
@Inject
private AsyncProvider<FileUploadActivity> fileUploadActivityProvider;
@Inject
private AsyncProvider<EditUserActivity> editUserActivityProvider;
@Inject
private AsyncProvider<UsersSearchActivity> usersSearchActivityProvider;
@Override
public Activity getActivity(final Place place) {
Activity activity = null;
if(place instanceof LoginPlace) {
activity = this.loginActivityProvider.get();
}
else if (place instanceof HomePlace) {
activity = this.homeActivityProvider.get();
}
else if (place instanceof UpdatePasswordPlace) {
activity = this.updatePasswordActivityProvider.get();
}
else if (place instanceof LogoutPlace) {
activity = new AsyncActivityProxy<LogoutActivity>(this.logoutActivityProvider);
}
else if (place instanceof SignUpPlace) {
activity = new AsyncActivityProxy<SignUpActivity>(this.signUpActivityProvider);
}
else if (place instanceof EditProfilePlace) {
activity = new AsyncActivityProxy<EditProfileActivity>(this.editProfileActivityProvider);
}
else if (place instanceof ActiveUsersPlace) {
activity = new AsyncActivityProxy<ActiveUsersActivity>(this.activeUsersActivityProvider);
}
else if (place instanceof FileUploadPlace) {
activity = new AsyncActivityProxy<FileUploadActivity>(this.fileUploadActivityProvider);
}
else if (place instanceof ReloadOptionsPlace) {
activity = new AsyncActivityProxy<ReloadOptionsActivity>(this.reloadOptionsActivityProvider);
}
else if (place instanceof EntityProxyPlace) {
final EntityProxyPlace proxyPlace = (EntityProxyPlace) place;
if (UserProxy.class.equals(proxyPlace.getProxyClass())) {
activity = new AsyncActivityProxy<EditUserActivity>(this.editUserActivityProvider);
}
}
else if (place instanceof EntitySearchPlace) {
final EntitySearchPlace listPlace = (EntitySearchPlace) place;
if (UserProxy.class.equals(listPlace.getProxyClass())) {
activity = new AsyncActivityProxy<UsersSearchActivity>(this.usersSearchActivityProvider);
}
}
return activity;
}
}