fix focus
authorMyung Jin Kim <critical.kim@samsung.com>
Mon, 10 Jun 2013 15:14:59 +0000 (00:14 +0900)
committerMyung Jin Kim <critical.kim@samsung.com>
Mon, 10 Jun 2013 15:14:59 +0000 (00:14 +0900)
Change-Id: I89c4652c478a9a30402e21c0bb6f2fa275171cae

src/ui/controls/FUiCtrl_ButtonPresenter.cpp
src/ui/controls/FUiCtrl_CheckButtonPresenter.cpp
src/ui/controls/FUiCtrl_FooterImpl.cpp
src/ui/controls/FUiCtrl_Form.cpp
src/ui/controls/FUiCtrl_Toolbar.cpp
src/ui/inc/FUiCtrl_Form.h
src/ui/inc/FUiCtrl_Toolbar.h

index db7d280..a811af3 100644 (file)
@@ -277,25 +277,14 @@ _ButtonPresenter::Draw(void)
        else
        {
                DrawBackground();
-
-               //Bitmap* pBackgroundBitmap = __pButton->GetBackgroundBitmap(status);
-               //if (pBackgroundBitmap)
-               //{
-               //      String imagePath = _BitmapImpl::GetInstance(*pBackgroundBitmap)->GetFileName();
-               //      if (imagePath.IsEmpty() == false && __pButton->GetText() == L"" && __pButton->GetBitmap(status) == null)
-               //      {
-               //              SysLog(NID_UI_CTRL, "Cannot get a canvas.");
-               //              return;
-               //      }
-               //}
        }
 
        DrawBitmap();
        DrawText();
 
-       if ((status == _BUTTON_STATUS_SELECTED || (status == _BUTTON_STATUS_PRESSED && prevStatus == _BUTTON_STATUS_SELECTED)
-                       || (status == _BUTTON_STATUS_HIGHLIGHTED && prevStatus == _BUTTON_STATUS_SELECTED))
-                       && __pButton->GetToolbarItemBackgroundBitmap(_BUTTON_STATUS_SELECTED) == null)
+       if ((status == _BUTTON_STATUS_SELECTED && __pButton->GetToolbarItemBackgroundBitmap(_BUTTON_STATUS_SELECTED) == null) ||
+                       (status == _BUTTON_STATUS_PRESSED && prevStatus == _BUTTON_STATUS_SELECTED && __pButton->GetToolbarItemBackgroundBitmap(_BUTTON_STATUS_PRESSED) == null) ||
+                       (status == _BUTTON_STATUS_HIGHLIGHTED && prevStatus == _BUTTON_STATUS_SELECTED && __pButton->GetToolbarItemBackgroundBitmap(_BUTTON_STATUS_HIGHLIGHTED) == null))
        {
                DrawToolbarSelectedBitmap();
        }
index 900935d..fbda280 100644 (file)
@@ -1996,6 +1996,7 @@ _CheckButtonPresenter::OnKeyReleased(const _Control& source, const _KeyInfo& key
        _KeyCode keyCode = keyInfo.GetKeyCode();
 
        if (keyCode == _KEY_ENTER)
+       //if (__pCheckButton->IsFocusModeStateEnabled() == true && keyCode == _KEY_ENTER)
        {
                CheckButtonStyle checkStyle = __pCheckButton->GetCheckButtonStyle();
 
@@ -2436,9 +2437,12 @@ _CheckButtonPresenter::OnFocusModeStateChanged(void)
 bool
 _CheckButtonPresenter::OnFocusGained(const _Control& source)
 {
-       __focusPrevStatus = __pCheckButton->GetCheckButtonStatus();
-       __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
-       __pCheckButton->Invalidate();
+       //if (__pCheckButton->IsFocusModeStateEnabled() == true)
+       {
+               __focusPrevStatus = __pCheckButton->GetCheckButtonStatus();
+               __pCheckButton->SetCheckButtonStatus(_CHECK_BUTTON_STATUS_HIGHLIGHTED);
+               __pCheckButton->Invalidate();
+       }
 
        return true;
 }
index 1808ce3..da4bcbc 100644 (file)
@@ -404,7 +404,7 @@ _FooterImpl::SetButton(ButtonPosition position, const ButtonItem& button)
                if (position == BUTTON_POSITION_LEFT)
                {
                        SysTryReturnResult(NID_UI_CTRL, (IsMenuButtonSet() == false), E_SYSTEM,
-                                       "[E_SYSTEM] A Option button exists.");
+                                       "[E_SYSTEM] A Menu button exists.");
                }
 
                SysTryReturnResult(NID_UI_CTRL, (count <= FOOTER_MAX_ITEM_COUNT_WITH_BUTTON), E_SYSTEM,
@@ -1587,38 +1587,34 @@ _FooterImpl::ConvertFooterStyle(FooterStyle style)
 bool
 _FooterImpl::IsMenuButtonSet(void) const
 {
-       return GetCore().IsButtonSet(OPTION_BUTTON);
+       return GetCore().IsButtonSet(MENU_BUTTON);
 }
 
-
 ButtonItemStatus
 _FooterImpl::GetMenuButtonStatus(void) const
 {
        SysTryReturn(NID_UI_CTRL, (IsMenuButtonSet() == true), BUTTON_ITEM_STATUS_NORMAL, E_INVALID_OPERATION,
-                       "[E_INVALID_OPERATION] A Option button doesn't exist");
+                       "[E_INVALID_OPERATION] A Menu button doesn't exist");
 
        _ButtonStatus buttonStatus;
 
-       buttonStatus = GetCore().GetButtonStatus(OPTION_BUTTON);
+       buttonStatus = GetCore().GetButtonStatus(MENU_BUTTON);
 
        return ConvertButtonItemStatus(buttonStatus);
 }
 
-
 result
 _FooterImpl::RemoveMenuButton(void)
 {
-       return GetCore().RemoveButtonAt(OPTION_BUTTON);
+       return GetCore().RemoveButtonAt(MENU_BUTTON);
 }
 
-
 result
 _FooterImpl::SetMenuButtonEnabled(bool enable)
 {
-       return GetCore().SetButtonEnabled(OPTION_BUTTON, enable);
+       return GetCore().SetButtonEnabled(MENU_BUTTON, enable);
 }
 
-
 result
 _FooterImpl::SetMenuButton(void)
 {
@@ -1636,12 +1632,12 @@ _FooterImpl::SetMenuButton(void)
 
        if ((__style == FOOTER_STYLE_SEGMENTED_TEXT || __style == FOOTER_STYLE_SEGMENTED_ICON || __style == FOOTER_STYLE_SEGMENTED_ICON_TEXT) && GetItemCount() > 4)
        {
-               SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] Unable to set the option button.");
+               SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] Unable to set the menu button.");
                return E_SYSTEM;
        }
        else if ((__style == FOOTER_STYLE_BUTTON_ICON || __style == FOOTER_STYLE_BUTTON_TEXT || __style == FOOTER_STYLE_BUTTON_ICON_TEXT) && GetItemCount() > 5)
        {
-               SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] Unable to set the option button.");
+               SysLogException(NID_UI_CTRL, E_SYSTEM, "[E_SYSTEM] Unable to set the menu button.");
                return E_SYSTEM;
        }
 
@@ -1841,7 +1837,7 @@ _FooterImpl::SetMenuButton(void)
                delete pBackIconHighlightedEffectBitmap;
        }
 
-       return GetCore().SetButton(OPTION_BUTTON, pButton);
+       return GetCore().SetButton(MENU_BUTTON, pButton);
 }
 
 class _FooterMaker
index cbdfe0b..e8ba268 100644 (file)
@@ -360,7 +360,7 @@ _Form::SetFormMenuEventListener(_IFormMenuEventListener* pFormMenuEventListener)
        __pFormMenuEventListener = pFormMenuEventListener;
        if (__pFooter)
        {
-               __pFooter->SetOptionEventListener(*this, ID_OPTION_BUTTON);
+               __pFooter->SetMenuEventListener(*this, ID_MENU_BUTTON);
        }
 
        SetLastResult(E_SUCCESS);
@@ -2765,7 +2765,7 @@ _Form::OnActionPerformed(const _Control& source, int actionId)
                        }
                }
                break;
-       case ID_OPTION_BUTTON :
+       case ID_MENU_BUTTON :
                if (__pFormMenuEventListener)
                {
                        __pFormMenuEventListener->OnFormMenuRequested(*this);
index 02a4ded..4fc662d 100644 (file)
@@ -105,7 +105,7 @@ _Toolbar::_Toolbar(void)
        , __pToolbarPresenter(null)
        , __pActionEventListener(null)
        , __pBackEventListener(null)
-       , __pOptionEventListener(null)
+       , __pMenuEventListener(null)
        , __pLongPressGesture(null)
        , __pFlickGesture(null)
        , __pToolbarBackgroundBitmap(null)
@@ -116,7 +116,7 @@ _Toolbar::_Toolbar(void)
        , __pItems(null)
        , __pTitleBadgeIcon(null)
        , __backActionId(-1)
-       , __optionActionId(-1)
+       , __menuActionId(-1)
        , __itemCount(0)
        , __style(TOOLBAR_TITLE)
        , __transparent(false)
@@ -133,7 +133,7 @@ _Toolbar::_Toolbar(void)
        __pButtonItems[RIGHT_BUTTON] = null;
        __pButtonItems[BACK_BUTTON] = null;
        __pButtonItems[MIDDLE_BUTTON] = null;
-       __pButtonItems[OPTION_BUTTON] = null;
+       __pButtonItems[MENU_BUTTON] = null;
 
        for (int i = 0; i < TOOLBAR_ANIMATION_POSITION_MAX; i++)
        {
@@ -208,9 +208,9 @@ _Toolbar::~_Toolbar(void)
                __pBackEventListener = null;
        }
 
-       if (__pOptionEventListener)
+       if (__pMenuEventListener)
        {
-               __pOptionEventListener = null;
+               __pMenuEventListener = null;
        }
 
        if (__pLongPressGesture != null)
@@ -1608,17 +1608,17 @@ _Toolbar::SetButton(ToolbarButton position, _Button* pButton)
                                pButton->SetPosition(FloatPoint((toolbarWidth - buttonWidth - horizontalMargin)/2, verticalMargin));
                                break;
 
-                       case OPTION_BUTTON:
+                       case MENU_BUTTON:
                                if (IsButtonSet(LEFT_BUTTON) == true)
                                {
                                        RemoveButtonAt(LEFT_BUTTON);
                                }
 
                                pButton->SetPosition(FloatPoint(0.0f, 0.0f));
-                               if (__pOptionEventListener)
+                               if (__pMenuEventListener)
                                {
-                                       pButton->AddActionEventListener(*__pOptionEventListener);
-                                       pButton->SetActionId(__optionActionId);
+                                       pButton->AddActionEventListener(*__pMenuEventListener);
+                                       pButton->SetActionId(__menuActionId);
                                }
                                break;
 
@@ -1627,7 +1627,7 @@ _Toolbar::SetButton(ToolbarButton position, _Button* pButton)
                }
        }
 
-       if (!(position == BACK_BUTTON || position == OPTION_BUTTON) && __pActionEventListener != null)
+       if (!(position == BACK_BUTTON || position == MENU_BUTTON) && __pActionEventListener != null)
        {
                pButton->AddActionEventListener(*__pActionEventListener);
        }
@@ -2866,8 +2866,8 @@ _Toolbar::AddAccessibilityElement(ToolbarButton position, _Button* pButton)
                case MIDDLE_BUTTON:
                        name = L"MiddleButtonText";
                        break;
-               case OPTION_BUTTON:
-                       name = L"OptionButtonText";
+               case MENU_BUTTON:
+                       name = L"MenuButtonText";
                        break;
                default:
                        return;
@@ -2894,9 +2894,9 @@ _Toolbar::AddAccessibilityElement(ToolbarButton position, _Button* pButton)
                        pButtonElement->SetLabel("Back");
                        pButtonElement->SetTrait("Button");
                }
-               else if (position == OPTION_BUTTON)
+               else if (position == MENU_BUTTON)
                {
-                       pButtonElement->SetLabel("Option");
+                       pButtonElement->SetLabel("Menu");
                        pButtonElement->SetTrait("Button");
                }
                else
@@ -3069,32 +3069,51 @@ _Toolbar::OnFocusModeStateChanged(void)
 {
        if (__itemCount == 0)
        {
-               if (__pButtonItems[LEFT_BUTTON])
+               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                {
                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                        {
-                               if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
-                               {
-                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
-                               }
-                               else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[BACK_BUTTON])
+                               if (__highlightedItemIndex == __itemCount)
                                {
-                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+                                       if (__pButtonItems[MENU_BUTTON])
+                                       {
+                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                       }
+                                       else if (__pButtonItems[LEFT_BUTTON])
+                                       {
+                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                       }
                                }
-                               else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[RIGHT_BUTTON])
+                               else if (__highlightedItemIndex == __itemCount + 1)
                                {
-                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                       if (__pButtonItems[BACK_BUTTON])
+                                       {
+                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                       }
+                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                       }
                                }
                        }
                        else
                        {
-                               if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
+                               if (__highlightedItemIndex == __itemCount)
                                {
-                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                       if      (__pButtonItems[MENU_BUTTON])
+                                       {
+                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                       }
+                                       else if (__pButtonItems[LEFT_BUTTON])
+                                       {
+                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                       }
                                }
                        }
                }
@@ -3102,15 +3121,18 @@ _Toolbar::OnFocusModeStateChanged(void)
                {
                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                        {
-                               if (__highlightedItemIndex == __itemCount && __pButtonItems[BACK_BUTTON])
-                               {
-                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[BACK_BUTTON]->Invalidate();
-                               }
-                               else if (__highlightedItemIndex == __itemCount && __pButtonItems[RIGHT_BUTTON])
+                               if (__highlightedItemIndex == __itemCount)
                                {
-                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                       if (__pButtonItems[BACK_BUTTON])
+                                       {
+                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                       }
+                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                       }
                                }
                        }
                }
@@ -3119,7 +3141,7 @@ _Toolbar::OnFocusModeStateChanged(void)
        {
                if (__highlightedItemIndex < __itemCount)
                {
-                       if(__pItems.at(__highlightedItemIndex))
+                       if (__pItems.at(__highlightedItemIndex))
                        {
                                __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_NORMAL);
                                __pItems.at(__highlightedItemIndex)->Invalidate();
@@ -3127,32 +3149,51 @@ _Toolbar::OnFocusModeStateChanged(void)
                }
                else
                {
-                       if (__pButtonItems[LEFT_BUTTON])
+                       if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                        {
                                if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                {
-                                       if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
-                                       {
-                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
-                                       }
-                                       else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[BACK_BUTTON])
+                                       if (__highlightedItemIndex == __itemCount)
                                        {
-                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[MENU_BUTTON]->Invalidate();
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                               }
                                        }
-                                       else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[RIGHT_BUTTON])
+                                       else if (__highlightedItemIndex == __itemCount + 1)
                                        {
-                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               }
                                        }
                                }
                                else
                                {
-                                       if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
+                                       if (__highlightedItemIndex == __itemCount)
                                        {
-                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[MENU_BUTTON]->Invalidate();
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                               }
                                        }
                                }
                        }
@@ -3160,15 +3201,18 @@ _Toolbar::OnFocusModeStateChanged(void)
                        {
                                if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                {
-                                       if (__highlightedItemIndex == __itemCount && __pButtonItems[BACK_BUTTON])
-                                       {
-                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[BACK_BUTTON]->Invalidate();
-                                       }
-                                       else if (__highlightedItemIndex == __itemCount && __pButtonItems[RIGHT_BUTTON])
+                                       if (__highlightedItemIndex == __itemCount)
                                        {
-                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               }
                                        }
                                }
                        }
@@ -3189,34 +3233,905 @@ _Toolbar::OnFocusModeStateChanged(void)
 bool
 _Toolbar::OnFocusGained(const _Control& source)
 {
+       if (__header == true && __style != TOOLBAR_TEXT) // right align
+       {
+               OnHeaderFocusGained(source);
+       }
+       else
+       {
+               OnFooterFocusGained(source);
+       }
+
+       return true;
+}
+
+result
+_Toolbar::OnHeaderFocusGained(const _Control& source)
+{
        if (__itemCount == 0)
        {
-               if (__pButtonItems[LEFT_BUTTON])
+               if (__pButtonItems[MENU_BUTTON] || __pButtonItems[LEFT_BUTTON])
                {
-                       if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
+                       if (__pButtonItems[MENU_BUTTON])
+                       {
+                               if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                               {
+                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                       __pButtonItems[MENU_BUTTON]->Invalidate();
+
+                                       __highlightedItemIndex = __itemCount;
+                               }
+                               else
+                               {
+                                       if (__pButtonItems[BACK_BUTTON] || __pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                                       }
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                       }
+                                               }
+
+                                               __highlightedItemIndex = __itemCount + 1;
+                                       }
+                               }
+                       }
+                       else if (__pButtonItems[LEFT_BUTTON])
                        {
-                               if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
+                               if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                {
                                        __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
                                        __pButtonItems[LEFT_BUTTON]->Invalidate();
+
+                                       __highlightedItemIndex = __itemCount;
                                }
-                               else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[BACK_BUTTON])
+                               else
+                               {
+                                       if (__pButtonItems[BACK_BUTTON] || __pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                                       }
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                       }
+                                               }
+
+                                               __highlightedItemIndex = __itemCount + 1;
+                                       }
+                               }
+                       }
+               }
+               else if (__pButtonItems[BACK_BUTTON] || __pButtonItems[RIGHT_BUTTON])
+               {
+                       if (__pButtonItems[BACK_BUTTON])
+                       {
+                               if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                {
                                        __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
                                        __pButtonItems[BACK_BUTTON]->Invalidate();
+
+                                       __highlightedItemIndex = __itemCount;
                                }
-                               else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[RIGHT_BUTTON])
+                       }
+                       else if (__pButtonItems[RIGHT_BUTTON])
+                       {
+                               if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                {
                                        __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
                                        __pButtonItems[RIGHT_BUTTON]->Invalidate();
+
+                                       __highlightedItemIndex = __itemCount;
                                }
                        }
-                       else
+               }
+       }
+       else // itemCount != 0
+       {
+               if (__style == TOOLBAR_HEADER_SEGMENTED || __style ==TOOLBAR_HEADER_SEGMENTED_WITH_TITLE || __style == TOOLBAR_SEGMENTED
+                               || __style == TOOLBAR_TAB || __style == TOOLBAR_TAB_WITH_TITLE)
+               {
+                       __highlightedItemIndex = GetSelectedItemIndex();
+               }
+               else // not segmented
+               {
+                       __highlightedItemIndex = 0;
+               }
+
+               if (__pItems.at(__highlightedItemIndex))
+               {
+                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                       __pItems.at(__highlightedItemIndex)->Invalidate();
+               }
+       }
+
+       return E_SUCCESS;
+}
+
+result
+_Toolbar::OnFooterFocusGained(const _Control& source)
+{
+       __highlightedItemIndex = 0;
+
+       if (__itemCount == 0)
+       {
+               if (__pButtonItems[MENU_BUTTON] || __pButtonItems[LEFT_BUTTON])
+               {
+                       if (__pButtonItems[MENU_BUTTON])
+                       {
+                               if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                               {
+                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                       __pButtonItems[MENU_BUTTON]->Invalidate();
+
+                                       __highlightedItemIndex = __itemCount;
+                               }
+                               else
+                               {
+                                       if (__pButtonItems[BACK_BUTTON] || __pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                                       }
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                       }
+                                               }
+
+                                               __highlightedItemIndex = __itemCount + 1;
+                                       }
+                               }
+                       }
+                       else if (__pButtonItems[LEFT_BUTTON])
                        {
-                               if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
+                               if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                {
                                        __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
                                        __pButtonItems[LEFT_BUTTON]->Invalidate();
+
+                                       __highlightedItemIndex = __itemCount;
+                               }
+                               else
+                               {
+                                       if (__pButtonItems[BACK_BUTTON] || __pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                                       }
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                       }
+                                               }
+
+                                               __highlightedItemIndex = __itemCount + 1;
+                                       }
+                               }
+                       }
+               }
+               else if (__pButtonItems[BACK_BUTTON] || __pButtonItems[RIGHT_BUTTON])
+               {
+                       if (__pButtonItems[BACK_BUTTON])
+                       {
+                               if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                               {
+                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+
+                                       __highlightedItemIndex = __itemCount;
+                               }
+                       }
+                       else if (__pButtonItems[RIGHT_BUTTON])
+                       {
+                               if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                               {
+                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+
+                                       __highlightedItemIndex = __itemCount;
+                               }
+                       }
+               }
+       }
+       else // itemCount != 0
+       {
+               if (__style == TOOLBAR_HEADER_SEGMENTED || __style ==TOOLBAR_HEADER_SEGMENTED_WITH_TITLE || __style == TOOLBAR_SEGMENTED
+                               || __style == TOOLBAR_TAB || __style == TOOLBAR_TAB_WITH_TITLE)
+               {
+                       __highlightedItemIndex = GetSelectedItemIndex();
+
+                       if (__pItems.at(__highlightedItemIndex))
+                       {
+                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                       }
+               }
+               else // not segmented
+               {
+                       if (__pButtonItems[MENU_BUTTON] || __pButtonItems[LEFT_BUTTON])
+                       {
+                               if (__pButtonItems[MENU_BUTTON])
+                               {
+                                       if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                       {
+                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+
+                                               __highlightedItemIndex = __itemCount;
+                                       }
+                                       else
+                                       {
+                                               if (__pItems.at(__highlightedItemIndex))
+                                               {
+                                                       if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               for (__highlightedItemIndex = 0; __highlightedItemIndex < __itemCount; __highlightedItemIndex++)
+                                                               {
+                                                                       if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                       {
+                                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+
+                                                                               break;
+                                                                       }
+                                                               }
+
+                                                               if (__highlightedItemIndex == __itemCount)
+                                                               {
+                                                                       if (__pButtonItems[BACK_BUTTON])
+                                                                       {
+                                                                               if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                               {
+                                                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+
+                                                                                       __highlightedItemIndex = __itemCount + 1;
+                                                                               }
+                                                                       }
+                                                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                                                       {
+                                                                               if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                               {
+                                                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+
+                                                                                       __highlightedItemIndex = __itemCount + 1;
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                               else if (__pButtonItems[LEFT_BUTTON])
+                               {
+                                       if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                       {
+                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+
+                                               __highlightedItemIndex = __itemCount;
+                                       }
+                                       else
+                                       {
+                                               if (__pItems.at(__highlightedItemIndex))
+                                               {
+                                                       if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               for (__highlightedItemIndex = 0; __highlightedItemIndex < __itemCount; __highlightedItemIndex++)
+                                                               {
+                                                                       if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                       {
+                                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+
+                                                                               break;
+                                                                       }
+                                                               }
+
+                                                               if (__highlightedItemIndex == __itemCount)
+                                                               {
+                                                                       if (__pButtonItems[BACK_BUTTON])
+                                                                       {
+                                                                               if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                               {
+                                                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+
+                                                                                       __highlightedItemIndex = __itemCount + 1;
+                                                                               }
+                                                                       }
+                                                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                                                       {
+                                                                               if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                               {
+                                                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+
+                                                                                       __highlightedItemIndex = __itemCount + 1;
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               if (__pItems.at(__highlightedItemIndex))
+                               {
+                                       if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                       {
+                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                       }
+                                       else
+                                       {
+                                               for (__highlightedItemIndex = 0; __highlightedItemIndex < __itemCount; __highlightedItemIndex++)
+                                               {
+                                                       if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+
+                                                               break;
+                                                       }
+                                               }
+
+                                               if (__highlightedItemIndex == __itemCount)
+                                               {
+                                                       if (__pButtonItems[BACK_BUTTON])
+                                                       {
+                                                               if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                               {
+                                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+
+                                                                       __highlightedItemIndex = __itemCount;
+                                                               }
+                                                       }
+                                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                                       {
+                                                               if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                               {
+                                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+
+                                                                       __highlightedItemIndex = __itemCount;
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       return E_SUCCESS;
+}
+
+#if 0
+result
+_Toolbar::OnHeaderFocusGained(const _Control& source)
+{
+       if (__itemCount == 0)
+       {
+               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
+               {
+                       if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
+                       {
+                               if (__highlightedItemIndex == __itemCount)
+                               {
+                                       if (__pButtonItems[MENU_BUTTON])
+                                       {
+                                               if (__style == TOOLBAR_HEADER_SEGMENTED || __style ==TOOLBAR_HEADER_SEGMENTED_WITH_TITLE || __style == TOOLBAR_SEGMENTED
+                                                               || __style == TOOLBAR_TAB || __style == TOOLBAR_TAB_WITH_TITLE)
+                                               {
+                                                       if (__pItems.empty() == true)
+                                                       {
+                                                               if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                               {
+                                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                               }
+                                                               else
+                                                               {
+                                                                       __highlightedItemIndex++;
+                                                                       OnFocusGained(source);
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex = GetSelectedItemIndex();
+
+                                                               if (__pItems.at(__highlightedItemIndex))
+                                                               {
+                                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                               }
+                                                       }
+                                               }
+                                               else // not segmented
+                                               {
+                                                       if (__pItems.empty() == true)
+                                                       {
+                                                               if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                               {
+                                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                               }
+                                                               else
+                                                               {
+                                                                       __highlightedItemIndex++;
+                                                                       OnFocusGained(source);
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               if (__pItems.at(0))
+                                                               {
+                                                                       __pItems.at(0)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pItems.at(0)->Invalidate();
+                                                               }
+                                                       }
+                                               }
+                                       }
+                                       else if (__pButtonItems[LEFT_BUTTON])
+                                       {
+                                               if (__style == TOOLBAR_HEADER_SEGMENTED || __style ==TOOLBAR_HEADER_SEGMENTED_WITH_TITLE || __style == TOOLBAR_SEGMENTED
+                                                               || __style == TOOLBAR_TAB || __style == TOOLBAR_TAB_WITH_TITLE)
+                                               {
+                                                       if (__pItems.empty() == true)
+                                                       {
+                                                               if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                               {
+                                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                               }
+                                                               else
+                                                               {
+                                                                       __highlightedItemIndex++;
+                                                                       OnFocusGained(source);
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex = GetSelectedItemIndex();
+
+                                                               if (__pItems.at(__highlightedItemIndex))
+                                                               {
+                                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                               }
+                                                       }
+                                               }
+                                               else // not segmented
+                                               {
+                                                       if (__pItems.empty() == true)
+                                                       {
+                                                               if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                               {
+                                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                               }
+                                                               else
+                                                               {
+                                                                       __highlightedItemIndex++;
+                                                                       OnFocusGained(source);
+                                                               }
+                                                       }
+                                                       else
+                                                       {
+                                                               if (__pItems.at(0))
+                                                               {
+                                                                       __pItems.at(0)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pItems.at(0)->Invalidate();
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                               else if (__highlightedItemIndex == __itemCount + 1)
+                               {
+                                       if (__pButtonItems[BACK_BUTTON])
+                                       {
+                                               if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               if (__highlightedItemIndex == __itemCount)
+                               {
+                                       if (__pButtonItems[MENU_BUTTON])
+                                       {
+                                               if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[MENU_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                                       else if (__pButtonItems[LEFT_BUTTON])
+                                       {
+                                               if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                               }
+                       }
+               }
+               else
+               {
+                       if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
+                       {
+                               if (__highlightedItemIndex == __itemCount)
+                               {
+                                       if (__pButtonItems[BACK_BUTTON])
+                                       {
+                                               if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+       else
+       {
+               if (__highlightedItemIndex < __itemCount)
+               {
+                       if(__pItems.at(__highlightedItemIndex))
+                       {
+                               if(__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                               {
+                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                       __pItems.at(__highlightedItemIndex)->Invalidate();
+                               }
+                               else
+                               {
+                                       __highlightedItemIndex++;
+                                       OnFocusGained(source);
+                               }
+                       }
+               }
+               else
+               {
+                       if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
+                       {
+                               if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
+                               {
+                                       if (__highlightedItemIndex == __itemCount)
+                                       {
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                       }
+                                       else if (__highlightedItemIndex == __itemCount + 1)
+                                       {
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                       }
+                               }
+                               else
+                               {
+                                       if (__highlightedItemIndex == __itemCount)
+                                       {
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
+                               {
+                                       if (__highlightedItemIndex == __itemCount)
+                                       {
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
+       return E_SUCCESS;
+}
+
+result
+_Toolbar::OnFooterFocusGained(const _Control& source)
+{
+       if (__itemCount == 0)
+       {
+               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
+               {
+                       if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
+                       {
+                               if (__highlightedItemIndex == __itemCount)
+                               {
+                                       if (__pButtonItems[MENU_BUTTON])
+                                       {
+                                               if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[MENU_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                                       else if (__pButtonItems[LEFT_BUTTON])
+                                       {
+                                               if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                               }
+                               else if (__highlightedItemIndex == __itemCount + 1)
+                               {
+                                       if (__pButtonItems[BACK_BUTTON])
+                                       {
+                                               if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               if (__highlightedItemIndex == __itemCount)
+                               {
+                                       if (__pButtonItems[MENU_BUTTON])
+                                       {
+                                               if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[MENU_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                                       else if (__pButtonItems[LEFT_BUTTON])
+                                       {
+                                               if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
                                }
                        }
                }
@@ -3224,15 +4139,34 @@ _Toolbar::OnFocusGained(const _Control& source)
                {
                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                        {
-                               if (__highlightedItemIndex == __itemCount && __pButtonItems[BACK_BUTTON])
-                               {
-                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                       __pButtonItems[BACK_BUTTON]->Invalidate();
-                               }
-                               else if (__highlightedItemIndex == __itemCount && __pButtonItems[RIGHT_BUTTON])
+                               if (__highlightedItemIndex == __itemCount)
                                {
-                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                       if (__pButtonItems[BACK_BUTTON])
+                                       {
+                                               if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
+                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               }
+                                               else
+                                               {
+                                                       __highlightedItemIndex++;
+                                                       OnFocusGained(source);
+                                               }
+                                       }
                                }
                        }
                }
@@ -3243,38 +4177,113 @@ _Toolbar::OnFocusGained(const _Control& source)
                {
                        if(__pItems.at(__highlightedItemIndex))
                        {
-                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                               if(__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                               {
+                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                       __pItems.at(__highlightedItemIndex)->Invalidate();
+                               }
+                               else
+                               {
+                                       __highlightedItemIndex++;
+                                       OnFocusGained(source);
+                               }
                        }
                }
                else
                {
-                       if (__pButtonItems[LEFT_BUTTON])
+                       if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                        {
                                if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                {
-                                       if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
-                                       {
-                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
-                                       }
-                                       else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[BACK_BUTTON])
+                                       if (__highlightedItemIndex == __itemCount)
                                        {
-                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
                                        }
-                                       else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[RIGHT_BUTTON])
+                                       else if (__highlightedItemIndex == __itemCount + 1)
                                        {
-                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
                                        }
                                }
                                else
                                {
-                                       if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
+                                       if (__highlightedItemIndex == __itemCount)
                                        {
-                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       if(__pButtonItems[MENU_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
                                        }
                                }
                        }
@@ -3282,55 +4291,95 @@ _Toolbar::OnFocusGained(const _Control& source)
                        {
                                if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                {
-                                       if (__highlightedItemIndex == __itemCount && __pButtonItems[BACK_BUTTON])
-                                       {
-                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                               __pButtonItems[BACK_BUTTON]->Invalidate();
-                                       }
-                                       else if (__highlightedItemIndex == __itemCount && __pButtonItems[RIGHT_BUTTON])
+                                       if (__highlightedItemIndex == __itemCount)
                                        {
-                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       if(__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if(__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                       }
+                                                       else
+                                                       {
+                                                               __highlightedItemIndex++;
+                                                               OnFocusGained(source);
+                                                       }
+                                               }
                                        }
                                }
                        }
                }
        }
 
-       return true;
+       return E_SUCCESS;
 }
 
+#endif
+
 bool
 _Toolbar::OnFocusLost(const _Control& source)
 {
        if (__itemCount == 0)
        {
-               if (__pButtonItems[LEFT_BUTTON])
+               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                {
                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                        {
-                               if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
-                               {
-                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
-                               }
-                               else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[BACK_BUTTON])
+                               if (__highlightedItemIndex == __itemCount)
                                {
-                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+                                       if (__pButtonItems[MENU_BUTTON])
+                                       {
+                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                       }
+                                       else if (__pButtonItems[LEFT_BUTTON])
+                                       {
+                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                       }
                                }
-                               else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[RIGHT_BUTTON])
+                               else if (__highlightedItemIndex == __itemCount + 1)
                                {
-                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                       if (__pButtonItems[BACK_BUTTON])
+                                       {
+                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                       }
+                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                       }
                                }
                        }
                        else
                        {
-                               if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
+                               if (__highlightedItemIndex == __itemCount)
                                {
-                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                       if (__pButtonItems[MENU_BUTTON])
+                                       {
+                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                       }
+                                       else if (__pButtonItems[LEFT_BUTTON])
+                                       {
+                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                       }
                                }
                        }
                }
@@ -3338,15 +4387,18 @@ _Toolbar::OnFocusLost(const _Control& source)
                {
                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                        {
-                               if (__highlightedItemIndex == __itemCount && __pButtonItems[BACK_BUTTON])
-                               {
-                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[BACK_BUTTON]->Invalidate();
-                               }
-                               else if (__highlightedItemIndex == __itemCount && __pButtonItems[RIGHT_BUTTON])
+                               if (__highlightedItemIndex == __itemCount)
                                {
-                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                       if (__pButtonItems[BACK_BUTTON])
+                                       {
+                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                       }
+                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                       {
+                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                       }
                                }
                        }
                }
@@ -3363,32 +4415,51 @@ _Toolbar::OnFocusLost(const _Control& source)
                }
                else
                {
-                       if (__pButtonItems[LEFT_BUTTON])
+                       if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                        {
                                if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                {
-                                       if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
-                                       {
-                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
-                                       }
-                                       else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[BACK_BUTTON])
+                                       if (__highlightedItemIndex == __itemCount)
                                        {
-                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[MENU_BUTTON]->Invalidate();
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                               }
                                        }
-                                       else if (__highlightedItemIndex == __itemCount + 1 && __pButtonItems[RIGHT_BUTTON])
+                                       else if (__highlightedItemIndex == __itemCount + 1)
                                        {
-                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               }
                                        }
                                }
                                else
                                {
-                                       if (__highlightedItemIndex == __itemCount && __pButtonItems[LEFT_BUTTON])
+                                       if (__highlightedItemIndex == __itemCount)
                                        {
-                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[MENU_BUTTON]->Invalidate();
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
+                                               {
+                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                               }
                                        }
                                }
                        }
@@ -3396,15 +4467,18 @@ _Toolbar::OnFocusLost(const _Control& source)
                        {
                                if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                {
-                                       if (__highlightedItemIndex == __itemCount && __pButtonItems[BACK_BUTTON])
-                                       {
-                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[BACK_BUTTON]->Invalidate();
-                                       }
-                                       else if (__highlightedItemIndex == __itemCount && __pButtonItems[RIGHT_BUTTON])
+                                       if (__highlightedItemIndex == __itemCount)
                                        {
-                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               if (__pButtonItems[BACK_BUTTON])
+                                               {
+                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                               }
                                        }
                                }
                        }
@@ -3435,48 +4509,64 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                {
                        if (__itemCount != 0)
                        {
-                               if (__highlightedItemIndex < (__itemCount - 1))
+                               if (__highlightedItemIndex < (__itemCount - 1)) // 0,1
                                {
                                        if (__pItems.at(__highlightedItemIndex) != null)
                                        {
                                                if (__highlightedItemIndex == selectedItemIndex)
                                                {
-                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_SELECTED, false);
-                                                       __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                       if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_SELECTED, false);
+                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                       }
                                                }
                                                else
                                                {
-                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                                       __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                       if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                       {
+                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                       }
                                                }
 
                                                __highlightedItemIndex++;
 
-                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                               if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                               {
+                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pItems.at(__highlightedItemIndex)->Invalidate();
 
-                                               if (__highlightedItemIndex - __pToolbarPresenter->GetFirstLoadedItemIndex() == SEGMENTED_ITEM_MAX)
+                                                       if (__highlightedItemIndex - __pToolbarPresenter->GetFirstLoadedItemIndex() == SEGMENTED_ITEM_MAX)
+                                                       {
+                                                               __pToolbarPresenter->SetItemFit(__highlightedItemIndex - (SEGMENTED_ITEM_MAX - 1));
+                                                       }
+                                               }
+                                               else
                                                {
-                                                       __pToolbarPresenter->SetItemFit(__highlightedItemIndex - (SEGMENTED_ITEM_MAX - 1));
+                                                       OnKeyReleased(source, keyInfo);
                                                }
                                        }
                                }
-                               else
+                               else // 2, L, R, B,
                                {
-                                       if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[RIGHT_BUTTON])
+                                       if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                        {
-                                               if (__highlightedItemIndex < __itemCount)
+                                               if (__highlightedItemIndex == __itemCount - 1)
                                                {
                                                        if (__pItems.at(__highlightedItemIndex) != null)
                                                        {
                                                                if (__highlightedItemIndex == selectedItemIndex)
                                                                {
-                                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_SELECTED, false);
-                                                                       __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                                       if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                       {
+                                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_SELECTED, false);
+                                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                                       }
                                                                }
                                                                else
                                                                {
-                                                                       if (__highlightedItemIndex < __itemCount)
+                                                                       if (__pItems.at(__highlightedItemIndex)->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                                                        {
                                                                                __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_NORMAL);
                                                                                __pItems.at(__highlightedItemIndex)->Invalidate();
@@ -3485,52 +4575,84 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                        }
                                                }
                                        }
-                                       else
+
+                                       if (__pButtonItems[LEFT_BUTTON])
                                        {
-                                               if (__highlightedItemIndex < __itemCount - 1)
+                                               if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                                {
-                                                       if (__pItems.at(__highlightedItemIndex) != null)
+                                                       if (__pButtonItems[BACK_BUTTON])
                                                        {
-                                                               if (__highlightedItemIndex == selectedItemIndex)
+                                                               if (__highlightedItemIndex == __itemCount - 1)
                                                                {
-                                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_SELECTED, false);
-                                                                       __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                                       __highlightedItemIndex++;
+
+                                                                       if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                       {
+                                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               OnKeyReleased(source, keyInfo);
+                                                                       }
                                                                }
-                                                               else
+                                                               else if (__highlightedItemIndex == __itemCount)
                                                                {
-                                                                       if (__highlightedItemIndex < __itemCount)
+                                                                       __highlightedItemIndex++;
+
+                                                                       if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
                                                                        {
-                                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
                                                                        }
-                                                               }
 
-                                                               if (__highlightedItemIndex - __pToolbarPresenter->GetFirstLoadedItemIndex() == SEGMENTED_ITEM_MAX)
-                                                               {
-                                                                       __pToolbarPresenter->SetItemFit(__highlightedItemIndex - (SEGMENTED_ITEM_MAX - 1));
+                                                                       if (__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                       {
+                                                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               OnKeyReleased(source, keyInfo);
+                                                                       }
                                                                }
                                                        }
-                                               }
-                                       }
-
-                                       if (__pButtonItems[LEFT_BUTTON])
-                                       {
-                                               if (__pButtonItems[RIGHT_BUTTON])
-                                               {
-                                                       if (__highlightedItemIndex == __itemCount - 1)
-                                                       {
-                                                               __highlightedItemIndex++;
-                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
-                                                       }
-                                                       else if (__highlightedItemIndex == __itemCount)
+                                                       else if (__pButtonItems[RIGHT_BUTTON])
                                                        {
-                                                               __highlightedItemIndex++;
-                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                               if (__highlightedItemIndex == __itemCount - 1)
+                                                               {
+                                                                       __highlightedItemIndex++;
 
-                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                                       if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                       {
+                                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               OnKeyReleased(source, keyInfo);
+                                                                       }
+                                                               }
+                                                               else if (__highlightedItemIndex == __itemCount)
+                                                               {
+                                                                       __highlightedItemIndex++;
+
+                                                                       if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                       {
+                                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                                       }
+
+                                                                       if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                       {
+                                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               OnKeyReleased(source, keyInfo);
+                                                                       }
+                                                               }
                                                        }
                                                }
                                                else
@@ -3538,20 +4660,56 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                        if (__highlightedItemIndex == __itemCount - 1)
                                                        {
                                                                __highlightedItemIndex++;
-                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+
+                                                               if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                               {
+                                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                               }
+                                                               else
+                                                               {
+                                                                       OnKeyReleased(source, keyInfo);
+                                                               }
                                                        }
                                                }
                                        }
                                        else
                                        {
-                                               if (__pButtonItems[RIGHT_BUTTON])
+                                               if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                                {
-                                                       if (__highlightedItemIndex == __itemCount - 1)
+                                                       if (__pButtonItems[BACK_BUTTON])
                                                        {
-                                                               __highlightedItemIndex++;
-                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                               if (__highlightedItemIndex == __itemCount - 1)
+                                                               {
+                                                                       __highlightedItemIndex++;
+
+                                                                       if (__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                       {
+                                                                               __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                               __pButtonItems[BACK_BUTTON]->Invalidate();
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               OnKeyReleased(source, keyInfo);
+                                                                       }
+                                                               }
+                                                       }
+                                                       else if (__pButtonItems[RIGHT_BUTTON])
+                                                       {
+                                                               if (__highlightedItemIndex == __itemCount - 1)
+                                                               {
+                                                                       __highlightedItemIndex++;
+
+                                                                       if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                                       {
+                                                                               __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                               __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                                       }
+                                                                       else
+                                                                       {
+                                                                               OnKeyReleased(source, keyInfo);
+                                                                       }
+                                                               }
                                                        }
                                                }
                                        }
@@ -3561,16 +4719,53 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                        {
                                if (__pButtonItems[LEFT_BUTTON])
                                {
-                                       if (__pButtonItems[RIGHT_BUTTON])
+                                       if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                        {
-                                               if (__highlightedItemIndex == 0)
+                                               if (__pButtonItems[BACK_BUTTON])
                                                {
-                                                       __highlightedItemIndex++;
-                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       if (__highlightedItemIndex == 0)
+                                                       {
+                                                               __highlightedItemIndex++;
 
-                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                               if (__pButtonItems[LEFT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                               {
+                                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                               }
+
+                                                               if (__pButtonItems[BACK_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                               {
+                                                                       __pButtonItems[BACK_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pButtonItems[BACK_BUTTON]->Invalidate();
+                                                               }
+                                                               else
+                                                               {
+                                                                       OnKeyReleased(source, keyInfo);
+                                                               }
+                                                       }
+                                               }
+                                               else if (__pButtonItems[RIGHT_BUTTON])
+                                               {
+                                                       if (__highlightedItemIndex == 0)
+                                                       {
+                                                               __highlightedItemIndex++;
+
+                                                               if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                               {
+                                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                               }
+
+                                                               if (__pButtonItems[RIGHT_BUTTON]->GetButtonStatus() != _BUTTON_STATUS_DISABLED)
+                                                               {
+                                                                       __pButtonItems[RIGHT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                                       __pButtonItems[RIGHT_BUTTON]->Invalidate();
+                                                               }
+                                                               else
+                                                               {
+                                                                       OnKeyReleased(source, keyInfo);
+                                                               }
+                                                       }
                                                }
                                        }
                                }
@@ -3580,14 +4775,22 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                {
                        if (__itemCount != 0)
                        {
-                               if (__pButtonItems[LEFT_BUTTON])
+                               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                                {
                                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON]) // L Item  R
                                        {
                                                if (__highlightedItemIndex == __itemCount)
                                                {
-                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       if (__pButtonItems[MENU_BUTTON])
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                       }
+                                                       else if (__pButtonItems[LEFT_BUTTON])
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       }
 
                                                        __highlightedItemIndex = 0;
 
@@ -3643,8 +4846,16 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                        {
                                                if (__highlightedItemIndex == __itemCount)
                                                {
-                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       if (__pButtonItems[MENU_BUTTON])
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                       }
+                                                       else if (__pButtonItems[LEFT_BUTTON])
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       }
 
                                                        __highlightedItemIndex = 0;
 
@@ -3671,7 +4882,7 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                }
                                        }
                                }
-                               else // __pButtonItems[LEFT_BUTTON] is null
+                               else // L is null
                                {
                                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON]) // Item  R
                                        {
@@ -3750,15 +4961,24 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                        }
                        else // __itemCount = 0
                        {
-                               if (__pButtonItems[LEFT_BUTTON])
+                               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                                {
                                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                        {
                                                if (__highlightedItemIndex == 0)
                                                {
                                                        __highlightedItemIndex++;
-                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
-                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+
+                                                       if (__pButtonItems[MENU_BUTTON])
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                       }
+                                                       else if (__pButtonItems[LEFT_BUTTON])
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_NORMAL);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       }
 
                                                        if (__pButtonItems[BACK_BUTTON])
                                                        {
@@ -3845,7 +5065,7 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                {
                        if (__itemCount != 0)
                        {
-                               if (__pButtonItems[LEFT_BUTTON])
+                               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                                {
                                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON]) // L  Item  R
                                        {
@@ -3864,8 +5084,16 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
 
                                                        __highlightedItemIndex = __itemCount;
 
-                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       if (__pButtonItems[MENU_BUTTON])
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                       }
+                                                       else if (__pButtonItems[LEFT_BUTTON])
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       }
                                                }
                                                else if (__highlightedItemIndex < __itemCount)
                                                {
@@ -3921,8 +5149,16 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
 
                                                        __highlightedItemIndex = __itemCount;
 
-                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       if (__pButtonItems[MENU_BUTTON])
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                       }
+                                                       else if (__pButtonItems[LEFT_BUTTON])
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       }
                                                }
                                                else if (__highlightedItemIndex < __itemCount)
                                                {
@@ -3944,7 +5180,7 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                }
                                        }
                                }
-                               else // __pButtonItems[LEFT_BUTTON] is null
+                               else // L is null
                                {
                                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON]) // Item  R
                                        {
@@ -4023,7 +5259,7 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                        }
                        else // __itemCount == 0
                        {
-                               if (__pButtonItems[LEFT_BUTTON])
+                               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                                {
                                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                                        {
@@ -4042,8 +5278,16 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
 
                                                        __highlightedItemIndex--;
 
-                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
-                                                       __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       if (__pButtonItems[MENU_BUTTON])
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[MENU_BUTTON]->Invalidate();
+                                                       }
+                                                       else if (__pButtonItems[LEFT_BUTTON])
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pButtonItems[LEFT_BUTTON]->Invalidate();
+                                                       }
                                                }
                                        }
                                }
@@ -4055,7 +5299,7 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
        {
                if (__itemCount != 0)
                {
-                       if (__pButtonItems[LEFT_BUTTON])
+                       if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                        {
                                if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON]) // L  Item  R
                                {
@@ -4065,7 +5309,12 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                                || __style == TOOLBAR_TAB || __style == TOOLBAR_TAB_WITH_TITLE)
                                                {
                                                        SetItemSelected(__highlightedItemIndex, true, false);
-                                                       //__pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+
+                                                       if (__pItems.empty() == false)
+                                                       {
+                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                       }
                                                }
                                                else
                                                {
@@ -4079,11 +5328,23 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                        }
                                        else if (__highlightedItemIndex == __itemCount)
                                        {
-                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
 
-                                               if (__pButtonItems[LEFT_BUTTON] != null)
+                                                       if (__pButtonItems[MENU_BUTTON] != null)
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
                                                {
-                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
+
+                                                       if (__pButtonItems[LEFT_BUTTON] != null)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       }
                                                }
                                        }
                                        else if (__highlightedItemIndex == __itemCount + 1)
@@ -4116,7 +5377,12 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                                || __style == TOOLBAR_TAB || __style == TOOLBAR_TAB_WITH_TITLE)
                                                {
                                                        SetItemSelected(__highlightedItemIndex, true, false);
-                                                       //__pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+
+                                                       if (__pItems.empty() == false)
+                                                       {
+                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                       }
                                                }
                                                else
                                                {
@@ -4130,16 +5396,28 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                        }
                                        else if (__highlightedItemIndex == __itemCount)
                                        {
-                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
 
-                                               if (__pButtonItems[LEFT_BUTTON] != null)
+                                                       if (__pButtonItems[MENU_BUTTON] != null)
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
                                                {
-                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
+
+                                                       if (__pButtonItems[LEFT_BUTTON] != null)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       }
                                                }
                                        }
                                }
                        }
-                       else // __pButtonItems[LEFT_BUTTON] is null
+                       else // L is null
                        {
                                if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON]) // Item  R
                                {
@@ -4149,15 +5427,27 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                                || __style == TOOLBAR_TAB || __style == TOOLBAR_TAB_WITH_TITLE)
                                                {
                                                        SetItemSelected(__highlightedItemIndex, true, false);
-                                                       //__pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+
+                                                       if (__pItems.empty() == false)
+                                                       {
+                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                       }
                                                }
                                                else
                                                {
+                                                       _Button* beforeButton = dynamic_cast<_Button*>(__pItems.at(__highlightedItemIndex));
+
                                                        __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_SELECTED);
 
-                                                       if (__pItems.empty() == false)
+                                                       if (__highlightedItemIndex < __itemCount)
                                                        {
-                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               _Button* afterButton = dynamic_cast<_Button*>(__pItems.at(__highlightedItemIndex));
+
+                                                               if (afterButton != NULL && (afterButton == beforeButton))
+                                                               {
+                                                                       __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               }
                                                        }
                                                }
                                        }
@@ -4191,7 +5481,12 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                                                || __style == TOOLBAR_TAB || __style == TOOLBAR_TAB_WITH_TITLE)
                                                {
                                                        SetItemSelected(__highlightedItemIndex, true, false);
-                                                       //__pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+
+                                                       if (__pItems.empty() == false)
+                                                       {
+                                                               __pItems.at(__highlightedItemIndex)->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                               __pItems.at(__highlightedItemIndex)->Invalidate();
+                                                       }
                                                }
                                                else
                                                {
@@ -4208,17 +5503,29 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                }
                else // __itemCount == 0
                {
-                       if (__pButtonItems[LEFT_BUTTON])
+                       if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                        {
                                if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON]) // L   R
                                {
                                        if (__highlightedItemIndex == 0)
                                        {
-                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
 
-                                               if (__pButtonItems[LEFT_BUTTON] != null)
+                                                       if (__pButtonItems[MENU_BUTTON] != null)
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
                                                {
-                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
+
+                                                       if (__pButtonItems[LEFT_BUTTON] != null)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       }
                                                }
                                        }
                                        else if (__highlightedItemIndex == 1)
@@ -4247,16 +5554,28 @@ _Toolbar::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
                                {
                                        if (__highlightedItemIndex == 0)
                                        {
-                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
+                                               if (__pButtonItems[MENU_BUTTON])
+                                               {
+                                                       __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
 
-                                               if (__pButtonItems[LEFT_BUTTON] != null)
+                                                       if (__pButtonItems[MENU_BUTTON] != null)
+                                                       {
+                                                               __pButtonItems[MENU_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       }
+                                               }
+                                               else if (__pButtonItems[LEFT_BUTTON])
                                                {
-                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_SELECTED);
+
+                                                       if (__pButtonItems[LEFT_BUTTON] != null)
+                                                       {
+                                                               __pButtonItems[LEFT_BUTTON]->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED);
+                                                       }
                                                }
                                        }
                                }
                        }
-                       else // __pButtonItems[LEFT_BUTTON] is null
+                       else // L is null
                        {
                                if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON]) //  R
                                {
@@ -4420,18 +5739,18 @@ _Toolbar::RemoveActionEventListener(const Controls::_IActionEventListener& liste
 {
        __pActionEventListener = null;
 
-       for (int i = 0; i < __itemCount; i++)
-       {
-               __pItems.at(i)->RemoveActionEventListener(listener);
-       }
+       //for (int i = 0; i < __itemCount; i++)
+       //{
+               //__pItems.at(i)->RemoveActionEventListener(listener);
+       //}
 
-       for (int j = 0; j < MIDDLE_BUTTON; j++)
-       {
-               if (__pButtonItems[j])
-               {
-                       __pButtonItems[j]->RemoveActionEventListener(listener);
-               }
-       }
+       //for (int j = 0; j < MIDDLE_BUTTON; j++)
+       //{
+       //      if (__pButtonItems[j])
+       //      {
+       //              __pButtonItems[j]->RemoveActionEventListener(listener);
+       //      }
+       //}
 
        return;
 
@@ -4447,10 +5766,10 @@ _Toolbar::SetBackEventListener(const Controls::_IActionEventListener& listener,
 }
 
 void
-_Toolbar::SetOptionEventListener(const Controls::_IActionEventListener& listener, int actionId)
+_Toolbar::SetMenuEventListener(const Controls::_IActionEventListener& listener, int actionId)
 {
-       __optionActionId = actionId;
-       __pOptionEventListener = const_cast<_IActionEventListener*>(&listener);
+       __menuActionId = actionId;
+       __pMenuEventListener = const_cast<_IActionEventListener*>(&listener);
 
        return;
 }
@@ -5114,7 +6433,7 @@ _Toolbar::CalculateMinimumToolbarWidth(void)
                        GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetOrientation(), itemMinimumWidth);
                        totalWidth += itemMinimumWidth;
                }
-               else if (IsButtonSet(OPTION_BUTTON))
+               else if (IsButtonSet(MENU_BUTTON))
                {
                        GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetOrientation(), itemMinimumWidth);
                        totalWidth += itemMinimumWidth;
@@ -5209,7 +6528,7 @@ _Toolbar::CalculateMinimumToolbarWidthF(void)
                        GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetOrientation(), itemMinimumWidth);
                        totalWidth += itemMinimumWidth;
                }
-               else if (IsButtonSet(OPTION_BUTTON))
+               else if (IsButtonSet(MENU_BUTTON))
                {
                        GET_SHAPE_CONFIG(FOOTER::BUTTON_ITEM_WIDTH, GetOrientation(), itemMinimumWidth);
                        totalWidth += itemMinimumWidth;
@@ -5889,16 +7208,16 @@ _Toolbar::RearrangeItems(void)
                        {
                                if (__pButtonItems[BACK_BUTTON])  // L,B
                                {
-                                       if (__pButtonItems[OPTION_BUTTON])
+                                       if (__pButtonItems[MENU_BUTTON])
                                        {
                                                __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin,
                                                                (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight));
 
-                                               __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
+                                               __pButtonItems[MENU_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
                                                                footerButtonItemWidth, footerButtonItemHeight));
 
                                                __pButtonItems[BACK_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
-                                               __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
+                                               __pButtonItems[MENU_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
                                        }
                                        else
                                        {
@@ -5916,16 +7235,16 @@ _Toolbar::RearrangeItems(void)
                                {
                                        if (__style != TOOLBAR_SOFTKEY)
                                        {
-                                               if (__pButtonItems[OPTION_BUTTON])
+                                               if (__pButtonItems[MENU_BUTTON])
                                                {
                                                        __pButtonItems[RIGHT_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin,
                                                                        (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight));
 
-                                                       __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
+                                                       __pButtonItems[MENU_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
                                                                                                                                                                footerButtonItemWidth, footerButtonItemHeight));
 
                                                        __pButtonItems[RIGHT_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
-                                                       __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
+                                                       __pButtonItems[MENU_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
                                                }
                                                else
                                                {
@@ -5968,12 +7287,12 @@ _Toolbar::RearrangeItems(void)
                        {
                                if (__pButtonItems[BACK_BUTTON]) // B
                                {
-                                       if (__pButtonItems[OPTION_BUTTON])
+                                       if (__pButtonItems[MENU_BUTTON])
                                        {
-                                               __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
+                                               __pButtonItems[MENU_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
                                                                footerButtonItemWidth, footerButtonItemHeight));
 
-                                               __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
+                                               __pButtonItems[MENU_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
                                        }
                                        __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin,
                                                        (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight));
@@ -5984,12 +7303,12 @@ _Toolbar::RearrangeItems(void)
                                {
                                        if (__style != TOOLBAR_SOFTKEY)
                                        {
-                                               if (__pButtonItems[OPTION_BUTTON])
+                                               if (__pButtonItems[MENU_BUTTON])
                                                {
-                                                       __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
+                                                       __pButtonItems[MENU_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
                                                                        footerButtonItemWidth, footerButtonItemHeight));
 
-                                                       __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
+                                                       __pButtonItems[MENU_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
                                                }
 
                                                __pButtonItems[RIGHT_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin,
@@ -6017,16 +7336,16 @@ _Toolbar::RearrangeItems(void)
                {
                        if (__pButtonItems[BACK_BUTTON]) // L B
                        {
-                               if (__pButtonItems[OPTION_BUTTON])
+                               if (__pButtonItems[MENU_BUTTON])
                                {
                                        __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin,
                                                        (__itemArea.height - footerButtonItemHeight) / 2, footerButtonItemWidth, footerButtonItemHeight));
 
-                                       __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
+                                       __pButtonItems[MENU_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
                                                        footerButtonItemWidth, footerButtonItemHeight));
 
                                        __pButtonItems[BACK_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
-                                       __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
+                                       __pButtonItems[MENU_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
                                }
                                else
                                {
@@ -6044,12 +7363,12 @@ _Toolbar::RearrangeItems(void)
                        {
                                if (__style != TOOLBAR_SOFTKEY)
                                {
-                                       if (__pButtonItems[OPTION_BUTTON])
+                                       if (__pButtonItems[MENU_BUTTON])
                                        {
-                                               __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
+                                               __pButtonItems[MENU_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
                                                                footerButtonItemWidth, footerButtonItemHeight));
 
-                                               __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
+                                               __pButtonItems[MENU_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
                                        }
                                        else
                                        {
@@ -6077,11 +7396,11 @@ _Toolbar::RearrangeItems(void)
                {
                        if (__pButtonItems[BACK_BUTTON])
                        {
-                               if (__pButtonItems[OPTION_BUTTON])
+                               if (__pButtonItems[MENU_BUTTON])
                                {
-                                       __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
+                                       __pButtonItems[MENU_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
                                                        footerButtonItemWidth, footerButtonItemHeight));
-                                       __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
+                                       __pButtonItems[MENU_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
                                }
 
                                __pButtonItems[BACK_BUTTON]->SetBounds(FloatRectangle(__itemArea.width - footerButtonItemWidth - footerLeftMargin + rightTouchMargin,
@@ -6091,11 +7410,11 @@ _Toolbar::RearrangeItems(void)
                        }
                        else
                        {
-                               if (__pButtonItems[OPTION_BUTTON])
+                               if (__pButtonItems[MENU_BUTTON])
                                {
-                                       __pButtonItems[OPTION_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
+                                       __pButtonItems[MENU_BUTTON]->SetBounds(FloatRectangle(footerLeftMargin - leftTouchMargin, (__itemArea.height - footerButtonItemHeight) / 2,
                                                        footerButtonItemWidth, footerButtonItemHeight));
-                                       __pButtonItems[OPTION_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
+                                       __pButtonItems[MENU_BUTTON]->SetTouchMargin(leftTouchMargin, topTouchMargin, rightTouchMargin, bottomTouchMargin);
                                }
                        }
                }
@@ -6329,7 +7648,7 @@ _Toolbar::RearrangeFooterSegmentedItems(void)
        }
        else if (__itemCount == 3)
        {
-               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[OPTION_BUTTON])
+               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                {
                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                        {
@@ -6388,7 +7707,7 @@ _Toolbar::RearrangeFooterSegmentedItems(void)
        {
                if (__pButtonItems[BACK_BUTTON])
                {
-                       if (__pButtonItems[OPTION_BUTTON])
+                       if (__pButtonItems[MENU_BUTTON])
                        {
                                rightMargin = footerLeftMargin;
                                itemButtonRightGap = footerLeftMargin;
@@ -6404,7 +7723,7 @@ _Toolbar::RearrangeFooterSegmentedItems(void)
                }
                else
                {
-                       if (__pButtonItems[OPTION_BUTTON])
+                       if (__pButtonItems[MENU_BUTTON])
                        {
                                rightMargin = footerLeftMargin;
                                itemButtonRightGap = footerLeftMargin;
@@ -6803,7 +8122,7 @@ _Toolbar::RearrangeButtonItems(void)
        }
        else if (__itemCount == 3)
        {
-               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[OPTION_BUTTON])
+               if (__pButtonItems[LEFT_BUTTON] || __pButtonItems[MENU_BUTTON])
                {
                        if (__pButtonItems[RIGHT_BUTTON] || __pButtonItems[BACK_BUTTON])
                        {
@@ -6871,7 +8190,7 @@ _Toolbar::RearrangeButtonItems(void)
        {
                if (__pButtonItems[BACK_BUTTON])
                {
-                       if (__pButtonItems[OPTION_BUTTON])
+                       if (__pButtonItems[MENU_BUTTON])
                        {
                                tabRightMargin = footerLeftMargin;
                                itemButtonRightGap = footerLeftMargin;
@@ -6887,7 +8206,7 @@ _Toolbar::RearrangeButtonItems(void)
                }
                else
                {
-                       if (__pButtonItems[OPTION_BUTTON])
+                       if (__pButtonItems[MENU_BUTTON])
                        {
                                tabRightMargin = footerLeftMargin;
                                itemButtonRightGap = footerLeftMargin;
@@ -6941,7 +8260,7 @@ _Toolbar::RearrangeButtonItems(void)
        {
                if (__pButtonItems[BACK_BUTTON])
                {
-                       if (__pButtonItems[OPTION_BUTTON])
+                       if (__pButtonItems[MENU_BUTTON])
                        {
                                tabRightMargin = footerLeftMargin;
                                itemButtonRightGap = footerLeftMargin;
@@ -6957,7 +8276,7 @@ _Toolbar::RearrangeButtonItems(void)
                }
                else
                {
-                       if (__pButtonItems[OPTION_BUTTON])
+                       if (__pButtonItems[MENU_BUTTON])
                        {
                                tabRightMargin = footerLeftMargin;
                                itemButtonRightGap = footerLeftMargin;
index 633414a..635a830 100644 (file)
@@ -308,7 +308,7 @@ private:
 
        //Back button action ID
        static const int ID_BACK_BUTTON = -10;
-       static const int ID_OPTION_BUTTON = -20;
+       static const int ID_MENU_BUTTON = -20;
 
        //For Focus UI
        mutable std::unique_ptr<Tizen::Base::Collection::IListT<_Control*> > __pFocusControlList;
index 60af50b..9b99d33 100644 (file)
@@ -81,7 +81,7 @@ enum ToolbarButton
        RIGHT_BUTTON,
        MIDDLE_BUTTON,
        BACK_BUTTON,
-       OPTION_BUTTON,
+       MENU_BUTTON,
        BUTTON_MAX
 };
 
@@ -362,7 +362,7 @@ public:
 
        void SetBackEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener, int actionId);
 
-       void SetOptionEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener, int actionId);
+       void SetMenuEventListener(const Tizen::Ui::Controls::_IActionEventListener& listener, int actionId);
 
        virtual result OnAttachedToMainTree(void);
 
@@ -445,6 +445,10 @@ private:
 
        result InitToolbarColor(void);
 
+       result OnHeaderFocusGained(const _Control& source);
+
+       result OnFooterFocusGained(const _Control& source);
+
 private:
        bool __header;
 
@@ -454,7 +458,7 @@ private:
 
        Tizen::Ui::Controls::_IActionEventListener* __pBackEventListener;
 
-       Tizen::Ui::Controls::_IActionEventListener* __pOptionEventListener;
+       Tizen::Ui::Controls::_IActionEventListener* __pMenuEventListener;
 
        _TouchLongPressGestureDetector* __pLongPressGesture;
 
@@ -517,7 +521,7 @@ private:
 
        int __backActionId;
 
-       int __optionActionId;
+       int __menuActionId;
 
        int __itemCount;