summaryrefslogtreecommitdiffstats
path: root/actionbarsherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java
diff options
context:
space:
mode:
Diffstat (limited to 'actionbarsherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java')
-rw-r--r--actionbarsherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java245
1 files changed, 0 insertions, 245 deletions
diff --git a/actionbarsherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java b/actionbarsherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java
deleted file mode 100644
index 5e5aa2867..000000000
--- a/actionbarsherlock/src/com/actionbarsherlock/internal/widget/ActionBarContainer.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.actionbarsherlock.internal.widget;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.actionbarsherlock.R;
-import com.actionbarsherlock.app.ActionBar;
-import com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout;
-
-/**
- * This class acts as a container for the action bar view and action mode context views.
- * It applies special styles as needed to help handle animated transitions between them.
- * @hide
- */
-public class ActionBarContainer extends NineFrameLayout {
- private boolean mIsTransitioning;
- private View mTabContainer;
- private ActionBarView mActionBarView;
-
- private Drawable mBackground;
- private Drawable mStackedBackground;
- private Drawable mSplitBackground;
- private boolean mIsSplit;
- private boolean mIsStacked;
-
- public ActionBarContainer(Context context) {
- this(context, null);
- }
-
- public ActionBarContainer(Context context, AttributeSet attrs) {
- super(context, attrs);
-
- setBackgroundDrawable(null);
-
- TypedArray a = context.obtainStyledAttributes(attrs,
- R.styleable.SherlockActionBar);
- mBackground = a.getDrawable(R.styleable.SherlockActionBar_background);
- mStackedBackground = a.getDrawable(
- R.styleable.SherlockActionBar_backgroundStacked);
-
- if (getId() == R.id.abs__split_action_bar) {
- mIsSplit = true;
- mSplitBackground = a.getDrawable(
- R.styleable.SherlockActionBar_backgroundSplit);
- }
- a.recycle();
-
- setWillNotDraw(mIsSplit ? mSplitBackground == null :
- mBackground == null && mStackedBackground == null);
- }
-
- @Override
- public void onFinishInflate() {
- super.onFinishInflate();
- mActionBarView = (ActionBarView) findViewById(R.id.abs__action_bar);
- }
-
- public void setPrimaryBackground(Drawable bg) {
- mBackground = bg;
- invalidate();
- }
-
- public void setStackedBackground(Drawable bg) {
- mStackedBackground = bg;
- invalidate();
- }
-
- public void setSplitBackground(Drawable bg) {
- mSplitBackground = bg;
- invalidate();
- }
-
- /**
- * Set the action bar into a "transitioning" state. While transitioning
- * the bar will block focus and touch from all of its descendants. This
- * prevents the user from interacting with the bar while it is animating
- * in or out.
- *
- * @param isTransitioning true if the bar is currently transitioning, false otherwise.
- */
- public void setTransitioning(boolean isTransitioning) {
- mIsTransitioning = isTransitioning;
- setDescendantFocusability(isTransitioning ? FOCUS_BLOCK_DESCENDANTS
- : FOCUS_AFTER_DESCENDANTS);
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- return mIsTransitioning || super.onInterceptTouchEvent(ev);
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
- super.onTouchEvent(ev);
-
- // An action bar always eats touch events.
- return true;
- }
-
- @Override
- public boolean onHoverEvent(MotionEvent ev) {
- super.onHoverEvent(ev);
-
- // An action bar always eats hover events.
- return true;
- }
-
- public void setTabContainer(ScrollingTabContainerView tabView) {
- if (mTabContainer != null) {
- removeView(mTabContainer);
- }
- mTabContainer = tabView;
- if (tabView != null) {
- addView(tabView);
- final ViewGroup.LayoutParams lp = tabView.getLayoutParams();
- lp.width = LayoutParams.MATCH_PARENT;
- lp.height = LayoutParams.WRAP_CONTENT;
- tabView.setAllowCollapse(false);
- }
- }
-
- public View getTabContainer() {
- return mTabContainer;
- }
-
- @Override
- public void onDraw(Canvas canvas) {
- if (getWidth() == 0 || getHeight() == 0) {
- return;
- }
-
- if (mIsSplit) {
- if (mSplitBackground != null) mSplitBackground.draw(canvas);
- } else {
- if (mBackground != null) {
- mBackground.draw(canvas);
- }
- if (mStackedBackground != null && mIsStacked) {
- mStackedBackground.draw(canvas);
- }
- }
- }
-
- //This causes the animation reflection to fail on pre-HC platforms
- //@Override
- //public android.view.ActionMode startActionModeForChild(View child, android.view.ActionMode.Callback callback) {
- // // No starting an action mode for an action bar child! (Where would it go?)
- // return null;
- //}
-
- @Override
- public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-
- if (mActionBarView == null) return;
-
- final LayoutParams lp = (LayoutParams) mActionBarView.getLayoutParams();
- final int actionBarViewHeight = mActionBarView.isCollapsed() ? 0 :
- mActionBarView.getMeasuredHeight() + lp.topMargin + lp.bottomMargin;
-
- if (mTabContainer != null && mTabContainer.getVisibility() != GONE) {
- final int mode = MeasureSpec.getMode(heightMeasureSpec);
- if (mode == MeasureSpec.AT_MOST) {
- final int maxHeight = MeasureSpec.getSize(heightMeasureSpec);
- setMeasuredDimension(getMeasuredWidth(),
- Math.min(actionBarViewHeight + mTabContainer.getMeasuredHeight(),
- maxHeight));
- }
- }
- }
-
- @Override
- public void onLayout(boolean changed, int l, int t, int r, int b) {
- super.onLayout(changed, l, t, r, b);
-
- final boolean hasTabs = mTabContainer != null && mTabContainer.getVisibility() != GONE;
-
- if (mTabContainer != null && mTabContainer.getVisibility() != GONE) {
- final int containerHeight = getMeasuredHeight();
- final int tabHeight = mTabContainer.getMeasuredHeight();
-
- if ((mActionBarView.getDisplayOptions() & ActionBar.DISPLAY_SHOW_HOME) == 0) {
- // Not showing home, put tabs on top.
- final int count = getChildCount();
- for (int i = 0; i < count; i++) {
- final View child = getChildAt(i);
-
- if (child == mTabContainer) continue;
-
- if (!mActionBarView.isCollapsed()) {
- child.offsetTopAndBottom(tabHeight);
- }
- }
- mTabContainer.layout(l, 0, r, tabHeight);
- } else {
- mTabContainer.layout(l, containerHeight - tabHeight, r, containerHeight);
- }
- }
-
- boolean needsInvalidate = false;
- if (mIsSplit) {
- if (mSplitBackground != null) {
- mSplitBackground.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight());
- needsInvalidate = true;
- }
- } else {
- if (mBackground != null) {
- mBackground.setBounds(mActionBarView.getLeft(), mActionBarView.getTop(),
- mActionBarView.getRight(), mActionBarView.getBottom());
- needsInvalidate = true;
- }
- if ((mIsStacked = hasTabs && mStackedBackground != null)) {
- mStackedBackground.setBounds(mTabContainer.getLeft(), mTabContainer.getTop(),
- mTabContainer.getRight(), mTabContainer.getBottom());
- needsInvalidate = true;
- }
- }
-
- if (needsInvalidate) {
- invalidate();
- }
- }
-}