diff options
Diffstat (limited to 'RotaryPlayground/src/com/android/car/rotaryplayground/RotaryMenu.java')
-rw-r--r-- | RotaryPlayground/src/com/android/car/rotaryplayground/RotaryMenu.java | 134 |
1 files changed, 76 insertions, 58 deletions
diff --git a/RotaryPlayground/src/com/android/car/rotaryplayground/RotaryMenu.java b/RotaryPlayground/src/com/android/car/rotaryplayground/RotaryMenu.java index c87fe1b..0e417b4 100644 --- a/RotaryPlayground/src/com/android/car/rotaryplayground/RotaryMenu.java +++ b/RotaryPlayground/src/com/android/car/rotaryplayground/RotaryMenu.java @@ -37,65 +37,81 @@ public class RotaryMenu extends Fragment { private Fragment mSysUiDirectManipulation = null; private Fragment mNotificationFragment = null; private Fragment mScrollFragment = null; - - private Button mCardButton; - private Button mGridButton; - private Button mDirectManipulationButton; - private Button mSysUiDirectManipulationButton; - private Button mNotificationButton; - private Button mScrollButton; + private Fragment mWebViewFragment = null; + private Fragment mCustomFocusAreasFragment = null; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.rotary_menu, container, false); - mCardButton = view.findViewById(R.id.cards); - mCardButton.setOnFocusChangeListener((v, hasFocus) -> showRotaryCards(hasFocus)); - mCardButton.setOnClickListener(v -> showRotaryCards(/* hasFocus= */ true)); - - mGridButton = view.findViewById(R.id.grid); - mGridButton.setOnFocusChangeListener((v, hasFocus) -> showGridExample(hasFocus)); - mGridButton.setOnClickListener(v -> showGridExample(/* hasFocus= */ true)); - - mDirectManipulationButton = view.findViewById(R.id.direct_manipulation); - mDirectManipulationButton.setOnFocusChangeListener( - (v, hasFocus) -> showDirectManipulationExamples(hasFocus)); - mDirectManipulationButton.setOnClickListener( - (v -> showDirectManipulationExamples(/* hasFocus= */ true))); - - mSysUiDirectManipulationButton = view.findViewById(R.id.sys_ui_direct_manipulation); - mSysUiDirectManipulationButton.setOnFocusChangeListener( - (v, hasFocus) -> showSysUiDirectManipulationExamples(hasFocus)); - mSysUiDirectManipulationButton.setOnClickListener( - (v -> showSysUiDirectManipulationExamples(/* hasFocus= */ true))); - - mNotificationButton = view.findViewById(R.id.notification); - mNotificationButton.setOnFocusChangeListener( - (v, hasFocus) -> showNotificationExample(hasFocus)); - mNotificationButton.setOnClickListener(v -> showNotificationExample(/* hasFocus= */ true)); - - mScrollButton = view.findViewById(R.id.scroll); - mScrollButton.setOnFocusChangeListener((v, hasFocus) -> showScrollFragment(hasFocus)); - mScrollButton.setOnClickListener(v -> showScrollFragment(/* hasFocus= */ true)); + Button cardButton = view.findViewById(R.id.cards); + cardButton.setOnClickListener(v -> { + selectTab(v); + showRotaryCards(); + }); + + Button gridButton = view.findViewById(R.id.grid); + gridButton.setOnClickListener(v -> { + selectTab(v); + showGridExample(); + }); + + Button directManipulationButton = view.findViewById(R.id.direct_manipulation); + directManipulationButton.setOnClickListener(v -> { + selectTab(v); + showDirectManipulationExamples(); + }); + + Button sysUiDirectManipulationButton = view.findViewById(R.id.sys_ui_direct_manipulation); + sysUiDirectManipulationButton.setOnClickListener(v -> { + selectTab(v); + showSysUiDirectManipulationExamples(); + }); + + Button notificationButton = view.findViewById(R.id.notification); + notificationButton.setOnClickListener(v -> { + selectTab(v); + showNotificationExample(); + }); + + Button scrollButton = view.findViewById(R.id.scroll); + scrollButton.setOnClickListener(v -> { + selectTab(v); + showScrollFragment(); + }); + + Button webViewButton = view.findViewById(R.id.web_view); + webViewButton.setOnClickListener(v -> { + selectTab(v); + showWebViewFragment(); + }); + + Button customFocusAreasButton = view.findViewById(R.id.custom_focus_areas); + customFocusAreasButton.setOnClickListener(v -> { + selectTab(v); + showCustomFocusAreasFragment(); + }); return view; } - private void showRotaryCards(boolean hasFocus) { - if (!hasFocus) { - return; // Do nothing if no focus. + private void selectTab(View view) { + ViewGroup container = (ViewGroup) view.getParent(); + for (int i = 0; i < container.getChildCount(); i++) { + container.getChildAt(i).setSelected(false); } + view.setSelected(true); + } + + private void showRotaryCards() { if (mRotaryCards == null) { mRotaryCards = new RotaryCards(); } showFragment(mRotaryCards); } - private void showGridExample(boolean hasFocus) { - if (!hasFocus) { - return; // do nothing if no focus. - } + private void showGridExample() { if (mRotaryGrid == null) { mRotaryGrid = new RotaryGrid(); } @@ -104,46 +120,48 @@ public class RotaryMenu extends Fragment { // TODO(agathaman): refactor this and the showRotaryCards above into a // showFragment(Fragment fragment, boolean hasFocus); method. - private void showDirectManipulationExamples(boolean hasFocus) { - if (!hasFocus) { - return; // Do nothing if no focus. - } + private void showDirectManipulationExamples() { if (mDirectManipulation == null) { mDirectManipulation = new RotaryDirectManipulationWidgets(); } showFragment(mDirectManipulation); } - private void showSysUiDirectManipulationExamples(boolean hasFocus) { - if (!hasFocus) { - return; // Do nothing if no focus. - } + private void showSysUiDirectManipulationExamples() { if (mSysUiDirectManipulation == null) { mSysUiDirectManipulation = new RotarySysUiDirectManipulationWidgets(); } showFragment(mSysUiDirectManipulation); } - private void showNotificationExample(boolean hasFocus) { - if (!hasFocus) { - return; // do nothing if no focus. - } + private void showNotificationExample() { if (mNotificationFragment == null) { mNotificationFragment = new HeadsUpNotificationFragment(); } showFragment(mNotificationFragment); } - private void showScrollFragment(boolean hasFocus) { - if (!hasFocus) { - return; // Do nothing if no focus. - } + private void showScrollFragment() { if (mScrollFragment == null) { mScrollFragment = new ScrollFragment(); } showFragment(mScrollFragment); } + private void showWebViewFragment() { + if (mWebViewFragment == null) { + mWebViewFragment = new WebViewFragment(); + } + showFragment(mWebViewFragment); + } + + private void showCustomFocusAreasFragment() { + if (mCustomFocusAreasFragment == null) { + mCustomFocusAreasFragment = new CustomFocusAreasFragment(); + } + showFragment(mCustomFocusAreasFragment); + } + private void showFragment(Fragment fragment) { getFragmentManager().beginTransaction() .replace(R.id.rotary_content, fragment) |