#    Licensed under the Apache License, Version 2.0 (the "License"); you may
#    not use this file except in compliance with the License. You may obtain
#    a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
#    License for the specific language governing permissions and limitations
#    under the License.

from selenium.webdriver.common import by

from openstack_dashboard.test.integration_tests.regions import baseregion
from openstack_dashboard.test.integration_tests.regions import menus


class TopBarRegion(baseregion.BaseRegion):
    _user_dropdown_menu_locator = (by.By.CSS_SELECTOR,
                                   '.nav.navbar-nav.navbar-right')
    _openstack_brand_locator = (by.By.CSS_SELECTOR, 'a[href*="/home/"]')

    _user_dropdown_project_locator = (
        by.By.CSS_SELECTOR, '.navbar-collapse > ul.navbar-nav:first-child')
    _header_locator = (by.By.CSS_SELECTOR, 'nav.navbar-fixed-top')

    MATERIAL_THEME_CLASS = 'material-header'

    @property
    def user(self):
        return self._get_element(*self._user_dropdown_menu_locator)

    @property
    def brand(self):
        return self._get_element(*self._openstack_brand_locator)

    @property
    def header(self):
        return self._get_element(*self._header_locator)

    @property
    def is_material_theme_enabled(self):
        classes = self.header.get_attribute('class').strip().split()
        return self.MATERIAL_THEME_CLASS in classes

    @property
    def user_dropdown_menu(self):
        src_elem = self._get_element(*self._user_dropdown_menu_locator)
        return menus.UserDropDownMenuRegion(self.driver,
                                            self.conf, src_elem)

    @property
    def is_logged_in(self):
        return self._is_element_visible(*self._user_dropdown_menu_locator)

    @property
    def user_dropdown_project(self):
        src_elem = self._get_element(*self._user_dropdown_project_locator)
        return menus.ProjectDropDownRegion(self.driver,
                                           self.conf, src_elem)
