Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.webfilings.webfilings.ui;
- import android.content.Context;
- import android.os.Parcel;
- import android.os.Parcelable;
- import android.support.v4.widget.SlidingPaneLayout;
- import android.support.v7.app.ActionBar;
- import android.support.v7.widget.Toolbar;
- import android.util.AttributeSet;
- import android.view.View;
- import android.view.ViewGroup;
- import com.webfilings.webfilings.R;
- import com.webfilings.webfilings.WFApplication;
- import com.webfilings.webfilings.activities.HomeActivity;
- import com.webfilings.webfilings.interfaces.HomeListSelectedListener;
- import com.webfilings.webfilings.services.AnalyticsService;
- import java.util.ArrayList;
- import java.util.Observable;
- import java.util.Observer;
- public class HomeSlidingPaneLayout extends SlidingPaneLayout
- implements HomeListSelectedListener, Observer {
- private View mPartialView;
- private ArrayList<View> mPartialChildViews = new ArrayList<>();
- private HomeFullDrawerLayout mFullView;
- private HomeContentLayout mContentView;
- private int mSelectedListIndex = -1;
- private HomeListSelectedListener mListSelectedListener;
- public HomeSlidingPaneLayout(Context context) {
- super(context);
- }
- public HomeSlidingPaneLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- public HomeSlidingPaneLayout(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- if (getChildCount() < 1) {
- return;
- }
- View panel = findViewById(R.id.panelView);
- if (!(panel instanceof ViewGroup)) {
- return;
- }
- ViewGroup viewGroup = (ViewGroup) panel;
- mFullView = (HomeFullDrawerLayout)viewGroup.getChildAt(0);
- // Register ourselves for list selection notification
- mFullView.setOnListSelectedListener(this);
- if (viewGroup.getChildCount() != 2) {
- return;
- }
- // Ensure the full view is initially hidden
- mFullView.setVisibility(INVISIBLE);
- mPartialView = viewGroup.getChildAt(1);
- mContentView = (HomeContentLayout)findViewById(R.id.contentView);
- mContentView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- if (isOpen()) {
- closePane();
- }
- }
- });
- initViews();
- super.setPanelSlideListener(new SlideListener());
- }
- @Override
- protected Parcelable onSaveInstanceState() {
- Parcelable superState = super.onSaveInstanceState();
- SavedState childState = new SavedState(superState);
- childState.selectedList = mSelectedListIndex;
- return childState;
- }
- @Override
- protected void onRestoreInstanceState(Parcelable state) {
- if (!(state instanceof SavedState)) {
- super.onRestoreInstanceState(state);
- } else {
- SavedState childState = (SavedState)state;
- super.onRestoreInstanceState(childState.getSuperState());
- updateUI(childState.selectedList);
- }
- }
- public void setActionBar(ActionBar actionBar, Toolbar toolbar) {
- // Forward to the full drawer
- mFullView.setActionBar(actionBar, toolbar);
- }
- public void setSelectedList(int listIndex) {
- mSelectedListIndex = -1;
- // Forward to the full drawer
- mFullView.setSelectedList(listIndex);
- }
- public void setOnListSelectedListener(HomeListSelectedListener listener) {
- mListSelectedListener = listener;
- }
- public void toggle() {
- if (isOpen()) {
- closePane();
- } else {
- openPane();
- }
- }
- private void initViews() {
- // Set the click listener for all clickable child views of the partial layout
- ViewGroup partialGroup = (ViewGroup)mPartialView;
- for (int i=0; i<partialGroup.getChildCount(); i++) {
- View child = partialGroup.getChildAt(i);
- if (child.isClickable()) {
- mPartialChildViews.add(child);
- child.setOnClickListener(mFullView);
- }
- }
- HomeActivity.getGlobalBreadcrumbStack().addObserver(this);
- }
- @Override
- public void onListSelected(int listIndex) {
- listSelected(listIndex);
- if (isOpen()) {
- closePane();
- }
- }
- @Override
- public void update(Observable observable, Object o) {
- if (observable instanceof BreadcrumbStack) {
- updateUI(HomeActivity.ALL_LIST_INDEX);
- }
- }
- private void listSelected(int listIndex) {
- if (mSelectedListIndex != listIndex) {
- updateUI(listIndex);
- // Notify the listener
- if (mListSelectedListener != null) {
- mListSelectedListener.onListSelected(listIndex);
- }
- }
- }
- private void updateUI(int listIndex) {
- if (mPartialChildViews.size() > 0) {
- // Restore previously selected item's background color
- if (mSelectedListIndex != -1) {
- View partialChild = mPartialChildViews.get(mSelectedListIndex);
- partialChild.setSelected(false);
- partialChild.setAlpha(.54f);
- }
- mSelectedListIndex = listIndex;
- // Set newly selected item's background color
- if (mSelectedListIndex != -1) {
- View partialChild = mPartialChildViews.get(listIndex);
- partialChild.setSelected(true);
- partialChild.setAlpha(1);
- }
- }
- }
- private class SlideListener extends SimplePanelSlideListener {
- @Override
- public void onPanelSlide(View panel, float slideOffset) {
- super.onPanelSlide(panel, slideOffset);
- if (mPartialView == null || mFullView == null) {
- return;
- }
- mPartialView.setVisibility(VISIBLE);
- mPartialView.setAlpha(1 - slideOffset);
- mFullView.setVisibility(VISIBLE);
- mFullView.setAlpha(slideOffset);
- }
- @Override
- public void onPanelOpened(View panel) {
- super.onPanelOpened(panel);
- AnalyticsService.getInstance().sendEventHit(AnalyticsService.ANALYTIC_CATEGORY_SETTINGS,
- AnalyticsService.ANALYTIC_ACTION_OPEN_SETTINGS_DRAWER);
- mPartialView.setVisibility(INVISIBLE);
- HomeActivity homeActivity = (HomeActivity) WFApplication.getActiveSessionActivity();
- homeActivity.invalidateOptionsMenu();
- }
- @Override
- public void onPanelClosed(View panel) {
- super.onPanelClosed(panel);
- mFullView.setVisibility(INVISIBLE);
- HomeActivity homeActivity = (HomeActivity) WFApplication.getActiveSessionActivity();
- homeActivity.invalidateOptionsMenu();
- }
- }
- static class SavedState extends BaseSavedState {
- int selectedList;
- SavedState(Parcelable superState) {
- super(superState);
- }
- private SavedState(Parcel in) {
- super(in);
- this.selectedList = in.readInt();
- }
- @Override
- public void writeToParcel(Parcel out, int flags) {
- super.writeToParcel(out, flags);
- out.writeInt(this.selectedList);
- }
- //required field that makes Parcelables from a Parcel
- public static final Parcelable.Creator<SavedState> CREATOR =
- new Parcelable.Creator<SavedState>() {
- public SavedState createFromParcel(Parcel in) {
- return new SavedState(in);
- }
- public SavedState[] newArray(int size) {
- return new SavedState[size];
- }
- };
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement