Loading core/java/com/android/internal/app/NavItemSelectedListener.java 0 → 100644 +46 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 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.android.internal.app; import android.app.ActionBar; import android.view.View; import android.widget.AdapterView; /** * Wrapper to adapt the ActionBar.OnNavigationListener in an AdapterView.OnItemSelectedListener * for use in Spinner widgets. Used by action bar implementations. */ class NavItemSelectedListener implements AdapterView.OnItemSelectedListener { private final ActionBar.OnNavigationListener mListener; public NavItemSelectedListener(ActionBar.OnNavigationListener listener) { mListener = listener; } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if (mListener != null) { mListener.onNavigationItemSelected(position, id); } } @Override public void onNothingSelected(AdapterView<?> parent) { // Do nothing } } core/java/com/android/internal/app/ToolbarActionBar.java +21 −17 Original line number Diff line number Diff line Loading @@ -173,14 +173,19 @@ public class ToolbarActionBar extends ActionBar { @Override public void setListNavigationCallbacks(SpinnerAdapter adapter, OnNavigationListener callback) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); mDecorToolbar.setDropdownParams(adapter, new NavItemSelectedListener(callback)); } @Override public void setSelectedNavigationItem(int position) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); switch (mDecorToolbar.getNavigationMode()) { case NAVIGATION_MODE_LIST: mDecorToolbar.setDropdownSelectedPosition(position); break; default: throw new IllegalStateException( "setSelectedNavigationIndex not valid for current navigation mode"); } } @Override Loading Loading @@ -276,8 +281,7 @@ public class ToolbarActionBar extends ActionBar { @Override public void setNavigationMode(@NavigationMode int mode) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); mDecorToolbar.setNavigationMode(mode); } @Override Loading @@ -288,67 +292,67 @@ public class ToolbarActionBar extends ActionBar { @Override public Tab newTab() { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void addTab(Tab tab) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void addTab(Tab tab, boolean setSelected) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void addTab(Tab tab, int position) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void addTab(Tab tab, int position, boolean setSelected) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void removeTab(Tab tab) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void removeTabAt(int position) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void removeAllTabs() { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void selectTab(Tab tab) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public Tab getSelectedTab() { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public Tab getTabAt(int index) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override Loading core/java/com/android/internal/app/WindowDecorActionBar.java +0 −23 Original line number Diff line number Diff line Loading @@ -18,9 +18,7 @@ package com.android.internal.app; import android.animation.ValueAnimator; import android.content.res.TypedArray; import android.view.ViewGroup; import android.view.ViewParent; import android.widget.AdapterView; import android.widget.Toolbar; import com.android.internal.R; import com.android.internal.view.ActionBarPolicy; Loading @@ -30,7 +28,6 @@ import com.android.internal.view.menu.SubMenuBuilder; import com.android.internal.widget.ActionBarContainer; import com.android.internal.widget.ActionBarContextView; import com.android.internal.widget.ActionBarOverlayLayout; import com.android.internal.widget.ActionBarView; import com.android.internal.widget.DecorToolbar; import com.android.internal.widget.ScrollingTabContainerView; Loading Loading @@ -59,7 +56,6 @@ import android.view.Window; import android.view.accessibility.AccessibilityEvent; import android.view.animation.AnimationUtils; import android.widget.SpinnerAdapter; import com.android.internal.widget.ToolbarWidgetWrapper; import java.lang.ref.WeakReference; import java.util.ArrayList; Loading Loading @@ -1313,23 +1309,4 @@ public class WindowDecorActionBar extends ActionBar implements } } static class NavItemSelectedListener implements AdapterView.OnItemSelectedListener { private final OnNavigationListener mListener; public NavItemSelectedListener(OnNavigationListener listener) { mListener = listener; } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if (mListener != null) { mListener.onNavigationItemSelected(position, id); } } @Override public void onNothingSelected(AdapterView<?> parent) { // Do nothing } } } core/java/com/android/internal/widget/ToolbarWidgetWrapper.java +38 −7 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.Parcelable; import android.text.TextUtils; import android.util.Log; import android.util.SparseArray; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; Loading Loading @@ -78,6 +79,8 @@ public class ToolbarWidgetWrapper implements DecorToolbar { private boolean mMenuPrepared; private ActionMenuPresenter mActionMenuPresenter; private int mNavigationMode = ActionBar.NAVIGATION_MODE_STANDARD; public ToolbarWidgetWrapper(Toolbar toolbar) { mToolbar = toolbar; Loading Loading @@ -420,23 +423,51 @@ public class ToolbarWidgetWrapper implements DecorToolbar { @Override public int getNavigationMode() { return 0; return mNavigationMode; } @Override public void setNavigationMode(int mode) { if (mode != ActionBar.NAVIGATION_MODE_STANDARD) { throw new IllegalArgumentException( "Navigation modes not supported in this configuration"); final int oldMode = mNavigationMode; if (mode != oldMode) { switch (oldMode) { case ActionBar.NAVIGATION_MODE_LIST: if (mSpinner != null && mSpinner.getParent() == mToolbar) { mToolbar.removeView(mSpinner); } break; } @Override public void setDropdownParams(SpinnerAdapter adapter, AdapterView.OnItemSelectedListener listener) { mNavigationMode = mode; switch (mode) { case ActionBar.NAVIGATION_MODE_STANDARD: break; case ActionBar.NAVIGATION_MODE_LIST: ensureSpinner(); mToolbar.addView(mSpinner, 0); break; case ActionBar.NAVIGATION_MODE_TABS: throw new IllegalStateException("Tabs not supported in this configuration"); default: throw new IllegalArgumentException("Invalid navigation mode " + mode); } } } private void ensureSpinner() { if (mSpinner == null) { mSpinner = new Spinner(getContext()); Toolbar.LayoutParams lp = new Toolbar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL); mSpinner.setLayoutParams(lp); } } @Override public void setDropdownParams(SpinnerAdapter adapter, AdapterView.OnItemSelectedListener listener) { ensureSpinner(); mSpinner.setAdapter(adapter); mSpinner.setOnItemSelectedListener(listener); } Loading Loading
core/java/com/android/internal/app/NavItemSelectedListener.java 0 → 100644 +46 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 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.android.internal.app; import android.app.ActionBar; import android.view.View; import android.widget.AdapterView; /** * Wrapper to adapt the ActionBar.OnNavigationListener in an AdapterView.OnItemSelectedListener * for use in Spinner widgets. Used by action bar implementations. */ class NavItemSelectedListener implements AdapterView.OnItemSelectedListener { private final ActionBar.OnNavigationListener mListener; public NavItemSelectedListener(ActionBar.OnNavigationListener listener) { mListener = listener; } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if (mListener != null) { mListener.onNavigationItemSelected(position, id); } } @Override public void onNothingSelected(AdapterView<?> parent) { // Do nothing } }
core/java/com/android/internal/app/ToolbarActionBar.java +21 −17 Original line number Diff line number Diff line Loading @@ -173,14 +173,19 @@ public class ToolbarActionBar extends ActionBar { @Override public void setListNavigationCallbacks(SpinnerAdapter adapter, OnNavigationListener callback) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); mDecorToolbar.setDropdownParams(adapter, new NavItemSelectedListener(callback)); } @Override public void setSelectedNavigationItem(int position) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); switch (mDecorToolbar.getNavigationMode()) { case NAVIGATION_MODE_LIST: mDecorToolbar.setDropdownSelectedPosition(position); break; default: throw new IllegalStateException( "setSelectedNavigationIndex not valid for current navigation mode"); } } @Override Loading Loading @@ -276,8 +281,7 @@ public class ToolbarActionBar extends ActionBar { @Override public void setNavigationMode(@NavigationMode int mode) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); mDecorToolbar.setNavigationMode(mode); } @Override Loading @@ -288,67 +292,67 @@ public class ToolbarActionBar extends ActionBar { @Override public Tab newTab() { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void addTab(Tab tab) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void addTab(Tab tab, boolean setSelected) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void addTab(Tab tab, int position) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void addTab(Tab tab, int position, boolean setSelected) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void removeTab(Tab tab) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void removeTabAt(int position) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void removeAllTabs() { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public void selectTab(Tab tab) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public Tab getSelectedTab() { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override public Tab getTabAt(int index) { throw new UnsupportedOperationException( "Navigation modes are not supported in toolbar action bars"); "Tabs are not supported in toolbar action bars"); } @Override Loading
core/java/com/android/internal/app/WindowDecorActionBar.java +0 −23 Original line number Diff line number Diff line Loading @@ -18,9 +18,7 @@ package com.android.internal.app; import android.animation.ValueAnimator; import android.content.res.TypedArray; import android.view.ViewGroup; import android.view.ViewParent; import android.widget.AdapterView; import android.widget.Toolbar; import com.android.internal.R; import com.android.internal.view.ActionBarPolicy; Loading @@ -30,7 +28,6 @@ import com.android.internal.view.menu.SubMenuBuilder; import com.android.internal.widget.ActionBarContainer; import com.android.internal.widget.ActionBarContextView; import com.android.internal.widget.ActionBarOverlayLayout; import com.android.internal.widget.ActionBarView; import com.android.internal.widget.DecorToolbar; import com.android.internal.widget.ScrollingTabContainerView; Loading Loading @@ -59,7 +56,6 @@ import android.view.Window; import android.view.accessibility.AccessibilityEvent; import android.view.animation.AnimationUtils; import android.widget.SpinnerAdapter; import com.android.internal.widget.ToolbarWidgetWrapper; import java.lang.ref.WeakReference; import java.util.ArrayList; Loading Loading @@ -1313,23 +1309,4 @@ public class WindowDecorActionBar extends ActionBar implements } } static class NavItemSelectedListener implements AdapterView.OnItemSelectedListener { private final OnNavigationListener mListener; public NavItemSelectedListener(OnNavigationListener listener) { mListener = listener; } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if (mListener != null) { mListener.onNavigationItemSelected(position, id); } } @Override public void onNothingSelected(AdapterView<?> parent) { // Do nothing } } }
core/java/com/android/internal/widget/ToolbarWidgetWrapper.java +38 −7 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.os.Parcelable; import android.text.TextUtils; import android.util.Log; import android.util.SparseArray; import android.view.Gravity; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; Loading Loading @@ -78,6 +79,8 @@ public class ToolbarWidgetWrapper implements DecorToolbar { private boolean mMenuPrepared; private ActionMenuPresenter mActionMenuPresenter; private int mNavigationMode = ActionBar.NAVIGATION_MODE_STANDARD; public ToolbarWidgetWrapper(Toolbar toolbar) { mToolbar = toolbar; Loading Loading @@ -420,23 +423,51 @@ public class ToolbarWidgetWrapper implements DecorToolbar { @Override public int getNavigationMode() { return 0; return mNavigationMode; } @Override public void setNavigationMode(int mode) { if (mode != ActionBar.NAVIGATION_MODE_STANDARD) { throw new IllegalArgumentException( "Navigation modes not supported in this configuration"); final int oldMode = mNavigationMode; if (mode != oldMode) { switch (oldMode) { case ActionBar.NAVIGATION_MODE_LIST: if (mSpinner != null && mSpinner.getParent() == mToolbar) { mToolbar.removeView(mSpinner); } break; } @Override public void setDropdownParams(SpinnerAdapter adapter, AdapterView.OnItemSelectedListener listener) { mNavigationMode = mode; switch (mode) { case ActionBar.NAVIGATION_MODE_STANDARD: break; case ActionBar.NAVIGATION_MODE_LIST: ensureSpinner(); mToolbar.addView(mSpinner, 0); break; case ActionBar.NAVIGATION_MODE_TABS: throw new IllegalStateException("Tabs not supported in this configuration"); default: throw new IllegalArgumentException("Invalid navigation mode " + mode); } } } private void ensureSpinner() { if (mSpinner == null) { mSpinner = new Spinner(getContext()); Toolbar.LayoutParams lp = new Toolbar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL); mSpinner.setLayoutParams(lp); } } @Override public void setDropdownParams(SpinnerAdapter adapter, AdapterView.OnItemSelectedListener listener) { ensureSpinner(); mSpinner.setAdapter(adapter); mSpinner.setOnItemSelectedListener(listener); } Loading