Как отображать результаты синонимизации
Одной из задач синонимайзера в ручном режиме является отображение результатов синонимизации. При этом должны выполняться следующие требования:
- измененное слово должно выделяться (цветом и/или жирным шрифтом)
- должна быть возможность изменять замененное слово на другое из списка доступных синонимов
Палитра компонентов моей студии предлагает несколько классов, которые могли бы справиться с первой задачей.
Компонент первый: RichTextBox.
Достоинства: легкость создания форматирования текста, текст отображается естественно, словно работаешь с MS Word.
Недостатки: невозможность простого определения слова, которое было выделено - необходимо писать обработчик кликов мышки и производить последующий поиск выделенного слова в индексе для отображения списка синонимов.
Компонент второй: FlowPanel.
Достоинства: можно создать нужный список объектов (Label и ComboBox) по количеству обработанных слов и знаков препинания и поместить их на панель, которая сама будет переносить их по нужным местам. При этом компоненты выпадающего списка позволят сделать выбор наиболее подходящих синонимов делом простым и необременительным - синонимы будет достаточно выбрать из списка, не перенося мышу в дополнительное окно.
Недостатки: при добавлении контролов они выравниваются по верхнему краю. Впрочем, это достаточно легко исправляется с помощью выставленных границ меток.
Есть еще третий способ: написать аналог FlowPanel но с ручным размещением объектов. Но, ввиду трудоемкости данного процесса я этот вариант рассматривать не буду.
После некоторого размышления я решил воспользоваться вторым методом: размещать компоненты на FlowPanel. Единственное, что надо сделать, так это придумать, как реализовать возможность частичного выбора синонимов из найденного списка, и как затем помечать такие слова. Впрочем, не думаю, что это потребует много усилий.



Последние комментарии