def get_references_num(self, editor=None):
        if editor is None:
            editor = self.get_editor_element()

        WebDriverWait(self.get_driver(), self.DEFAULT_TIMEOUT).until(
            expected_conditions.presence_of_element_located(
                UI.get_monako_zone_widget_locator()))

        widget_zone = self.find_it(UI.get_monako_zone_widget_locator(),
                                   parent=editor)
        highlight(widget_zone)
        list_rows = self.find_them(UI.get_monako_list_row_locator(),
                                   parent=widget_zone)
        return len(list_rows)
    def get_current_line_num_inside_widget_zone(self, content, editor=None):
        if editor is None:
            editor = self.get_editor_element()

        WebDriverWait(self.get_driver(), self.DEFAULT_TIMEOUT).until(
            expected_conditions.presence_of_element_located(
                UI.get_monako_zone_widget_locator()))

        widget_zone = self.find_it(UI.get_monako_zone_widget_locator(),
                                   parent=editor)
        highlight(widget_zone)

        current_line_num = self.get_current_line_num(content=content,
                                                     parent=widget_zone)

        return current_line_num
    def close_zone_widget_if_exists(self, editor=None):
        if editor is None:
            editor = self.get_editor_element()

        try:
            widget_zone = self.find_it(UI.get_monako_zone_widget_locator(),
                                       parent=editor)
            highlight(widget_zone)
            actions = self.find_them(UI.get_action_items_locator(),
                                     parent=widget_zone)

            for action in actions:
                highlight(action)
                action_label = self.find_it(UI.get_action_label_locator())
                if action_label.get_attribute(
                        constants.ELEMENT_TITLE) == constants.Close:
                    self.click_me(action, element_human_name=constants.Close)
                    self.wait_for_widget_zone_disappear(editor)
                    break

        except WebDriverException:
            print("No widget zone. That's fine here.")

        except Exception:
            raise GeneralException(
                self.get_driver(),
                call_from=self.close_zone_widget_if_exists.__name__)
    def navigate_with_references(self, editor=None):
        if editor is None:
            editor = self.get_editor_element()

        WebDriverWait(self.get_driver(), self.DEFAULT_TIMEOUT).until(
            expected_conditions.presence_of_element_located(
                UI.get_monako_zone_widget_locator()))

        widget_zone = self.find_it(UI.get_monako_zone_widget_locator(),
                                   parent=editor)
        highlight(widget_zone)

        tree_rows = self.find_them(UI.get_monako_tree_row_locator(),
                                   parent=widget_zone)
        for row in tree_rows:
            highlight(row, effect_time=1)
            self.click_me(row)
            current_line_num = self.get_current_line_num(parent=widget_zone)
    def get_line_num_for_reference(self, ref_num, content=None, editor=None):
        if editor is None:
            editor = self.get_editor_element()

        ref_num = int(ref_num)

        WebDriverWait(self.get_driver(), self.DEFAULT_TIMEOUT).until(
            expected_conditions.presence_of_element_located(
                UI.get_monako_zone_widget_locator()))

        widget_zone = self.find_it(UI.get_monako_zone_widget_locator(),
                                   parent=editor)
        highlight(widget_zone)
        list_rows = self.find_them(UI.get_monako_list_row_locator(),
                                   parent=widget_zone)
        self.click_me(list_rows[ref_num])

        current_line_num = self.get_current_line_num(content=content,
                                                     parent=widget_zone)
        return current_line_num
    def wait_for_widget_zone_disappear(self, editor=None):
        if editor is None:
            editor = self.get_editor_element()

        try:
            widget_zone = self.find_it(UI.get_monako_zone_widget_locator(),
                                       parent=editor)
            raise WebDriverException

        finally:
            return