Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite купить дешевый 
компьютер родом из Dhgate.com

Lines Club

Ищем достойных соперников.

Библиотека сайта или "Мой Linux Documentation Project"

Фреймворк Violet

Глава 22 из книги "Архитектура приложений с открытым исходным кодом", том 1.

Оригинал: "Violet", глава из книги "The Architecture of Open Source Applications"
Автор: Cay Horstmann
Перевод: Н.Ромоданов

22.7. Это не фреймворк приложений Swing

В большинстве фреймворков графического пользовательского интерфейса GUI заложена некоторая идея о том, как в приложении происходит управление набором документов с использованием меню, панелей инструментов, строк состояний и т. д. Однако это никогда не было частью Java API. JSR 296 [5] должен был предоставить базовый фреймворк для приложений Swing, но в настоящее время он не действует. Таким образом, у авторов приложений Swing есть два варианта: самостоятельно изобретать велосипед или полагаться на фреймворк сторонних разработчиков. В то время, когда был написан Violet, первыми фреймворками приложений, которые обычно выбирались, были платформы Eclipse и NetBeans, каждая из которых в то время казалась слишком утяжеленной. (В настоящее время есть более широкий выбор, в том числе форки JSR 296, например, GUTS [6]). Таким образом, в Violet потребовалось заново изобретать механизмы для работы с меню и внутренними фреймами.

В Violet вы можете указать пункты меню в файлах свойств, например:

file.save.text=Save
file.save.mnemonic=S
file.save.accelerator=ctrl S
file.save.icon=/icons/16x16/save.png

Утилита method создает пункт меню используя для этого префикс (здесь — file.save). Суффиксы .text, .mnemonic и так далее, являются тем, что сегодня назвали бы «конфигурационным соглашением». Очевидно, что использование файлов ресурсов для описания этих параметров гораздо лучше, чем создание меню с вызовами API, поскольку здесь проще применять локализацию. Я повторно использовал этот механизм в другом проекте с открытым исходным кодом - в среде GridWorld, предназначенной для изучения информатики в средней школе [7].

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

Многим разработчикам не нравится MDI, и поэтому этот стиль пользовательского интерфейса вышел из моды. Какое-то время предпочтение отдавалось однодокументному интерфейсу (SDI), в котором приложение отображает несколько фреймов верхнего уровня; возможно предпочтение отдавалось потому, что этими фреймами можно было управлять с помощью инструментальных средств стандартного окна операционной системы. Когда стало ясно, что наличие большого количества окон верхнего уровня в конце концов не так уж и хорошо, появился интерфейс со вкладками, в котором несколько документов снова находятся в одном фрейме, но теперь все они отображаются в полном размере и выбираются с помощью вкладок. Это не позволяет пользователям сравнивать два документа, помещая их рядом друг с другом, но, кажется, этот подход победил.

Первоначальная версия Violet использовала интерфейс MDI. В Java API есть возможности использовать внутренние фреймы, но я должен был добавить поддержку для размещения фреймов в виде плиток и для каскадного размещения. Александр перешел на интерфейс с вкладками, который несколько лучше поддерживается в Java API. Было бы желательно иметь фреймворк приложения, в котором политика отображения документа была бы прозрачной для разработчика и, возможно, выбиралась бы пользователем.

Александр также добавил поддержку боковых панелей, панели приглашения и заставки. В идеале все это должно быть частью фреймворка приложений на Swing.


Продолжение статьи: 22.8. Операции Undo/Redo.


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют