1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package com.reactnativenavigation.viewcontrollers;
-
- import android.app.Activity;
- import android.view.ViewGroup;
-
- import com.reactnativenavigation.parse.Options;
- import com.reactnativenavigation.presentation.OptionsPresenter;
-
- public abstract class ChildController<T extends ViewGroup> extends ViewController<T> {
- final OptionsPresenter presenter;
- private final ChildControllersRegistry childRegistry;
-
- public ChildControllersRegistry getChildRegistry() {
- return childRegistry;
- }
-
- public ChildController(Activity activity, ChildControllersRegistry childRegistry, String id, OptionsPresenter presenter, Options initialOptions) {
- super(activity, id, initialOptions);
- this.presenter = presenter;
- this.childRegistry = childRegistry;
- }
-
- @Override
- public void setDefaultOptions(Options defaultOptions) {
- presenter.setDefaultOptions(defaultOptions);
- }
-
- @Override
- public void onViewAppeared() {
- super.onViewAppeared();
- childRegistry.onViewAppeared(this);
- }
-
- @Override
- public void onViewDisappear() {
- super.onViewDisappear();
- childRegistry.onViewDisappear(this);
- }
-
- public void onViewBroughtToFront() {
- presenter.onViewBroughtToFront(getView(), options);
- }
-
- @Override
- public void applyOptions(Options options) {
- super.applyOptions(options);
- presenter.present(getView(), options);
- if (isRoot()) {
- presenter.applyRootOptions(getView(), options);
- }
- }
-
- protected boolean isRoot() {
- return getParentController() == null &&
- !(this instanceof Navigator) &&
- getView().getParent() != null;
- }
- }
|