Текстовый редактор

Java (11), Swing (Single document interface), в качестве шаблона приложения (BankViewer)

Итак, создан просмотрщик банковских выписок. Используя аналогичный подход, можно сделать просмотрщики ещё для многих других вещей. Но это всего лишь просмотрщики. А если попробовать сделать редактор, то окажется, что надо решить массу проблем. Сейчас я не делаю какой-то необычный редактор, не создаю редактор лучше, чем какой-то другой, не пытаюсь с кем-то конкурировать. Я исследую, какие проблемы понадобится решить, и ищу их решения.

Это обычный текстовый редактор, который позволяет редактировать простые текстовые файлы. Он сохранил весь сервис, который уже есть в BankViewer. Но он не только открывает имеющиеся файлы, но и создает новые, сохраняет отредактированный текст, следит за тем, чтобы случайно не потерять результат редактирования, логично управляет активностью пунктов меню "Правка". Он умеет не только искать текст, но и изменять один текст на другой. Позволяет установить комфортный размер шрифта, использовать моноширинный шрифт.

Но главное, эта программа позволяет понять, как это делается.

Для разработки использован Eclipse. Проект расположен здесь: https://github.com/weekend-game/weekendtexteditor/ (EN) и здесь: https://gitflic.ru/project/weekend-game/weekendtexteditor/ (RU).

Как запустить программу

Скачайте репозиторий на свой компьютер. Всё необходимое для работы программы расположено в папке app. Зайдите в папку app и запустите программу двойным кликом по BankViewer.jar или, если она не запускается, двойным кликом по BankViewer.bat. Если и последнее не запускает программу, то скачайте и установите Java 11 или новее и снова попробуйте способы, описанные выше.

Как открыть проект в Eclipse

В Eclipse, в меню выберите File – Import... В появившемся окне выберите Existing Projects into Workspace. Укажите папку скаченного вами репозитория и нажмите кнопку Finish. Проект откроется в Eclipse. В Package Explorer (в левой части экрана) дважды кликните на файле WeekendTextEditor.java. Файл откроется для редактирования (в центральной части экрана). Запустите программу на выполнение, нажав Ctrl+F11 или так, как вам удобно запускать программы в Eclipse.

Как работать с программой

Этот текстовый редактор написан на основе просмотрщика банковских выписок и унаследовал от него весь пользовательский интерфейс ( см. здесь ). Конечно, теперь открытый файл отображается не в виде таблицы, а как текстовый файл. Появились новые функции.

В меню "Файл" появились пункты "Создать", "Сохранить", "Сохранить как...". Они работают так же, как и во всех программах.

В меню "Правка" появились пункты "Отменить" и "Повторить". Пункты редактирования текста "Вырезать", "Копировать" активны, если есть выделенный фрагмент текста, а пункт "Вставить" активен, только если ранее было копирование.

Появился пункт "Заменить". При выборе этого пункта меню появится диалоговое окно, в котором можно указать строку поиска, строку замены, отметить, следует ли учитывать регистр, указать направление поиска. Кнопка "Найти далее" работает так же, как и в окне поиска. Кнопка "Заменить" заменит найденную строку на строку замены. Кнопка "Заменить всё" заменит все включения в текст строки поиска на строку замены.

В пункте меню "Вид" появились пункты "Использовать моноширинный шрифт", "Увеличить шрифт", "Уменьшить шрифт" и "Размер шрифта по умолчанию".

Как программа написана

Главным классом приложения является класс WeekendTextEditor. Именно он содержит статический метод main() для запуска программы. В его конструкторе создаётся всё необходимое для работы.

Так как этот текстовый редактор написан на основе просмотрщика банковских выписок, он использует все те же объекты для своей работы. Ознакомиться с ними можно здесь. Но есть и новое.

Для редактирования текста используется всё та же JEditorPane, но теперь она вынесена в отдельный класс Editor, в котором реализуется множество функций. Именно здесь находятся методы, реализующие изменение шрифта и его размеров, методы поддержки пунктов меню "Отменить" и "Повторить", методы выделения, копирования и вставки текста и некоторое другое.

Классы Replacer и ReplacerFrame похожи на Finder и FinderFrame, но предназначены для выполнения не только поиска, но и замены текста.

Более подробно о работе программы можно узнать, скачав проект, открыв его в Eclipse, читая тексты классов, внося изменения, запуская программу и наблюдая, что из этого получается.

Итоги

Отличная практика! Редактор можно улучшать до бесконечности, но нужно уметь остановиться.