package architect.commons;
import android.app.Activity;
import android.os.Bundle;
import architect.Navigator;
import architect.NavigatorView;
import architect.StackablePath;
import mortar.MortarScope;
import mortar.bundler.BundleServiceRunner;
/**
* @author Lukasz Piliszczuk - lukasz.pili@gmail.com
*/
public class ActivityArchitector {
public static MortarScope onCreateScope(Activity activity, Bundle savedInstanceState, Architected architected) {
String scopeName = activity.getLocalClassName() + "-task-" + activity.getTaskId();
MortarScope scope = MortarScope.findChild(activity.getApplicationContext(), scopeName);
if (scope == null) {
MortarScope parentScope = MortarScope.getScope(activity.getApplicationContext());
MortarScope.Builder builder = parentScope.buildChild()
.withService(BundleServiceRunner.SERVICE_NAME, new BundleServiceRunner());
architected.configureScope(builder, parentScope);
scope = builder.build(scopeName);
architected.createNavigator(scope);
}
BundleServiceRunner.getBundleServiceRunner(scope).onCreate(savedInstanceState);
return scope;
}
public static Navigator onCreateNavigator(Activity activity, Bundle savedInstanceState, NavigatorView navigatorView, StackablePath... defaultPaths) {
Navigator navigator = Navigator.find(activity);
navigator.delegate().onCreate(activity.getIntent(), savedInstanceState, navigatorView, defaultPaths);
return navigator;
}
}