diff options
Diffstat (limited to 'mobile/android/base/java/org/mozilla/gecko/tabs/TabPanelBackButton.java')
-rw-r--r-- | mobile/android/base/java/org/mozilla/gecko/tabs/TabPanelBackButton.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/mobile/android/base/java/org/mozilla/gecko/tabs/TabPanelBackButton.java b/mobile/android/base/java/org/mozilla/gecko/tabs/TabPanelBackButton.java new file mode 100644 index 000000000..7ea02407e --- /dev/null +++ b/mobile/android/base/java/org/mozilla/gecko/tabs/TabPanelBackButton.java @@ -0,0 +1,55 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.gecko.tabs; + +import org.mozilla.gecko.R; + +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.ViewGroup; +import android.widget.ImageButton; + +public class TabPanelBackButton extends ImageButton { + + private int dividerWidth = 0; + + private final Drawable divider; + private final int dividerPadding; + + public TabPanelBackButton(Context context, AttributeSet attrs) { + super(context, attrs); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TabPanelBackButton); + divider = a.getDrawable(R.styleable.TabPanelBackButton_rightDivider); + dividerPadding = (int) a.getDimension(R.styleable.TabPanelBackButton_dividerVerticalPadding, 0); + a.recycle(); + + if (divider != null) { + dividerWidth = divider.getIntrinsicWidth(); + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + setMeasuredDimension(getMeasuredWidth() + dividerWidth, getMeasuredHeight()); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + if (divider != null) { + final ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) getLayoutParams(); + final int left = getRight() - lp.rightMargin - dividerWidth; + + divider.setBounds(left, getPaddingTop() + dividerPadding, + left + dividerWidth, getHeight() - getPaddingBottom() - dividerPadding); + divider.draw(canvas); + } + } +} |