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_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 choose_item_from_suggestion(self, suggest_widget, element):
        rows_element = self.find_it(UI.get_monako_list_rows_locator(),
                                    parent=suggest_widget)
        self.wait_for_suggestion_rows_is_loaded(parent=rows_element)

        old_names = list()
        old_focused = None

        no_change_num = 0

        while True:
            rows = self.find_them(UI.get_monako_list_row_locator(),
                                  parent=rows_element)

            current_names = list()
            current_focused = None
            for row in rows:
                current_name = row.text
                if current_name == element:
                    self.click_me(row, effect_time=1)
                    return

                current_names.append(current_name)
                if constants.THEIA_FOCUSED in row.get_attribute(
                        constants.TYPE_CLASS):
                    current_focused = row

            if old_names == current_names and old_focused == current_focused:
                no_change_num += 1

            if no_change_num > 1:
                # rows didn't change - no more to page down
                raise ElementNotFoundException(self.get_driver())

            old_names = deepcopy(current_names)
            old_focused = current_focused
            self.send_key_sequence([Keys.PAGE_DOWN])
 def wait_for_suggestion_rows_is_loaded(self, parent):
     rows = self.find_them(UI.get_monako_list_row_locator(), parent=parent)
     if not len(rows):
         raise WebDriverException