package com.example.stackmasterdetailfrag.util.pathview;
import android.annotation.TargetApi;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.util.AttributeSet;
import android.widget.LinearLayout;
import com.example.stackmasterdetailfrag.MasterDetailFragmentStateChanger;
import com.example.stackmasterdetailfrag.R;
import com.example.stackmasterdetailfrag.application.IsMasterView;
import com.example.stackmasterdetailfrag.application.MainActivity;
import com.example.stackmasterdetailfrag.paths.MasterDetailPath;
import com.example.stackmasterdetailfrag.util.FragmentManagerService;
import com.zhuinden.simplestack.StateChange;
import com.zhuinden.simplestack.StateChanger;
/**
* This view is shown only in landscape orientation on tablets. See
* the explanation in {@link MainActivity#onCreate}.
*/
public class TabletMasterDetailRoot
extends LinearLayout
implements StateChanger, HandlesBack {
public TabletMasterDetailRoot(Context context) {
super(context);
init(context);
}
public TabletMasterDetailRoot(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public TabletMasterDetailRoot(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
@TargetApi(21)
public TabletMasterDetailRoot(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context);
}
MasterDetailFragmentStateChanger masterDetailFragmentStateChanger;
private void init(Context context) {
if(!isInEditMode()) {
masterDetailFragmentStateChanger = new MasterDetailFragmentStateChanger(FragmentManagerService.get(context), R.id.master, R.id.detail);
}
}
@Override
public void handleStateChange(final StateChange stateChange, StateChanger.Callback callback) {
masterDetailFragmentStateChanger.handleStateChange(stateChange);
FragmentManager fragmentManager = FragmentManagerService.get(getContext());
Fragment fragment = fragmentManager.findFragmentById(R.id.master);
if(fragment != null && fragment.getView() != null && fragment.getView() instanceof IsMasterView) {
((IsMasterView) fragment.getView()).updateSelection(stateChange.<MasterDetailPath>topNewState());
}
callback.stateChangeComplete();
}
@Override
public boolean onBackPressed() {
FragmentManager fragmentManager = FragmentManagerService.get(getContext());
Fragment fragment = fragmentManager.findFragmentById(R.id.detail);
if(fragment != null && fragment.getView() != null) {
return BackSupport.onBackPressed(fragment.getView());
}
return false;
}
}