Ribbon для .NET. Часть вторая.Автор: Виктор Деревянко Опубликовано: 10.09.2008 Источник: SoftKey.info 
 | | Компоненты Elegant Ribbon | В первой части статьи рассказывалось о целях, преследуемых Microsoft при разработке нового интерфейса Fluent UI, условиях, на которых фирма Microsoft разрешила сторонним разработчикам его использование в собственных разработках, перечислялись библиотеки компонентов, пригодные для реализации Fluent UI и рассматривался вариант использования с этой целью библиотеки Elegant Ribbon, разработанной фирмой FOSS Software, Inc..
Elegant Ribbon - это небольшая, но мощная, библиотека компонентов, позволяющая реализовать новый интерфейс Fluent UI в .NET приложениях под Windows Forms. Библиотека написана на 100% управляемом C#, весьма легковесна и реализует практически все возможности Fluent UI. В первой части статьи были рассмотрены возможности элементов управления Ribbon, Application Menu и Appliction Button, с помощью которых в Elegant Ribbon реализуется лента и "большая круглая кнопка слева вверху" - основные элементы Fluent UI. Ниже рассматривается реализация других составляющих Fluent UI, перечисленных в
рекомендациях Microsoft.
Клавиатурная навигация (Keyboard Access)
В Fluent UI изменился механизм клавиатурной навигации. Раньше, в приложениях содержащих меню, вызов элемента меню осуществлялся путем нажатия клавиши, соответствующей букве, подчеркнутой в названии элемента меню. В риббон-интерфейсе подчеркнутые буквы заменены многобуквенными тултип-индикаторами, появляющимися при нажатии Alt или F10. Elegant Ribbon полностью поддерживает все возможности клавиатурной навигации, описанные в 2007 Microsoft Office System User Interface Design Guidelines.
 | | Возможности клавиатурной навигации |
Подсказки (ScreenTips)
Все элементы управления Elegant Ribbon поддерживают подсказки (ScreenTips), которые появляются, когда пользователь наводит на этот элемент управления мышкой. Для подсказки можно указать заголовок, краткий текст и картинку, информирующие пользователя о том, какую функциональность предоставляет данный элемент управления.
 | | Пример окна со ScreenTip |
Команды (Commands)
Elegant Ribbon предоставляет встроенную возможность реализации командно-ориентированного интерфейса, когда элементы управления и код, реализующий фактическую функциональность, разделены между собой. Команды создаются в виде объектов типа Command и регистрируются в едином глобальном менеджере команд. Команды можно создавать и регистрировать как программно, так и в процессе разработки, с помощью дизайнера форм.
 | | Редактор команд в Elegant Ribbon | Реализация команд в Elegant Ribbon во многом напоминает реализацию действий (actions) в Delphi. Например, точно так же как action, каждая команда имеет свойство "Enabled". При установки этого свойства в false, все связанные с командой элементы управления автоматически становятся неактивными. Важнейшим отличием команд в Elegant Ribbon и действий в Delphi является механизм их регистрации. Если в Delphi списков действий можно создавать сколько угодно, то в Elegant Ribbon менеджер команд один на все приложение.
Контекстуальные вкладки (Contextual tabs)
Контекстуальные вкладки позволяют показывать пользователю заданный набор элементов управления только в условиях определенного контекста, к примеру, когда в документе выделен объект определенного типа. Например, в Microsoft Office 2007 при выделении таблицы, появляется две дополнительные вкладки - Design и Layouts, предоставляющие инструменты для редактировании таблицы. Когда выделение с объекта снимается, контекстуальные вкладки исчезают. Контекстуальные вкладки, относящиеся к одному и тому же контексту, объединяются в группы. Название группы отображается над вкладками, рядом с названием окна. Кроме того, группе сопоставляется цвет, так чтобы различные контексты можно было различать визуально.
 | | Контекстуальные вкладки | Elegant Ribbon прекрасно поддерживает создание контекстуальных вкладок. При создании новой вкладки на форму добавляется компонент RibbonContextualTabGroup, с помощью которого можно задавать название группы и ее цвет, а так же редактировать список вкладок, входящих в группу. Компонент содержит свойство "Visible", которое позволяет показывать и скрывать группу в зависимости от контекста.
Галереи (Galleries)
Галереи - новый тип элементов управления, введенный в Microsoft Office 2007. Работает он аналогично меню. Однако, если в меню отображается список действий, которые пользователь может выполнить, то в галереи отображается список результатов, которые пользователь может получить.
 | | Пример реализации галереи |
Elegant Ribbon предоставляет полноценную реализацию галерей. Галереи могут размещаться как на ленте, так и в разнообразных меню. Элементы галерей можно разбивать по категориями. Поддерживается оба режима взаимодействия пользователя с элементами галерей - Selection, когда пользователь имеет возможность выбрать элемент, и Action, когда при выборе элемента выполняется заданная команда. Галереи поддерживают выпадающее снизу меню и, при необходимости, могут отображаться во всплывающем окне.
Панель быстрого доступа (Quick Access Toolbar, QAT)
Панель быстрого доступа - это настраиваемая панель, которая размещается либо в левом верхнем углу, рядом с Application Button, либо внизу, под лентой. Elegant Ribbon реализует все возможности QAT, описанные в guidelines, однако ее реализация требует обязательного использования командно-ориентированного интерфейса. Если элемент управления не связан с командой, он не может быть добавлен в QAT.
 | | Редактор, позволяющий пользователю самостоятельно настраивать панель быстрого доступа. | Elegant Ribbon предоставляет возможность редактировать состав QAT как в процессе разработки приложения, так и в процессе его выполнения. По умолчанию пользователю разрешена возможность вызывать диалог, с помощью которого он может добавить в QAT требуемые команды. Программист может запретить эту возможность, а может, наоборот, парой вызовов соответствующих функций организовать сериализацию состояния QAT в файл, так что настройки пользователя будут автоматически восстанавливаться при следующем запуске приложения.
Миниатюрная панель инструментов (Mini Toolbar)
Mini Toolbar - это панель инструментов, которая, когда вы выделяете текст мышью, появляется рядом с курсором мыши и содержит набор элементов управления для форматирования текста. Возможность отображения Mini Toolbar не поддерживается в Elegant Ribbon. Это, пожалуй, единственная нереализованная в Elegant Ribbon возможность интерфейса Fluent UI из тех, что перечислены в рекомендациях Microsoft, не являющаяся, кстати, обязательной. Впрочем, разработчики обещают реализовать Mini Toolbar уже в этом году.
Строка состояния (StatusBar)
Elegant Ribbon предоставляет возможность реализовать строку состояния аналогично той, что используется в Microsoft Office 2007, в соответствии с
рекомендациями Microsoft. Как того требуют рекомендации, две стороны StatusBar визуально разделены. Левая сторона служит для отображения различного рода уведомления, правая - зарезервирована для элементов управления, связанных с переключением режимов просмотра и масштабированием.
 | | StatusBar в Elegant Ribbon |
Поддержка тем
Визуальное представление элементов управления задается с помощь XML файла. Elegant Ribbon предоставляет три встроенные темы, полностью аналогичным тем, что применяются в Microsoft Office 2007: Blue, Black и Silver.
Любопытной особенностью библиотеки Elegant Ribbon является то, что она самостоятельно прорисовывает не только клиентскую область окна, но так же и не клиентскую, содержащую заголовок окна и рамку окна - т.е. ту, которая обычно отрисовывается системой. В итоге окно выглядит точно так же, как окна Microsoft Office 2007. Причем внешний вид окна меняется уже в дизайнере форм - при размещении на форме компонента FormFrameSkinner.
Кстати, разработчики Elegant Ribbon реализовали полезную возможность отключать прозрачность заголовка окна при работе под Windows Vista. Для этого достаточно изменить значение одного из свойств FormFrameSkinner .
Замена стандартным элементам управления
Приятной особенностью Elegant Ribbon является возможность размещения большинства элементов управления на формах, вместо аналогичных стандартных. По сравнению со стандартными, Elegant Ribbon обладают рядом дополнительных возможностей:
- поддержка скинов;
- поддержка команд Elegant Ribbon;
- поддержка механизма клавиатурной навигации Fluent UI;
- поддержка нового типа всплывающих подсказок в стиле Fluent UI;
- наличие дополнительных возможностей (например, TextBox реализует функцию автоматического завершения имен, autocomplete).
MDI и RTL
Elegant Ribbon поддерживает создание многодокументных приложений (MDI). Все элементы управления Elegant Ribbon полностью поддерживают возможность написания текста справа налево (right-to-left, RTL), которое используется, например, в иврите и в арабском языке.
Соответствие Elegant Ribbon рекомендациям Microsoft
По заверению разработчиков, реализация всех компонентов Elegant Ribbon полностью удовлетворяет
рекомендациям Microsoft.
Пара слов в заключение
На сайте разработчиков Elegant Ribbon доступен набор примеров, демонстрирующих возможности библиотеки. Там же имеется неплохая подборка статей, в которых подробно разбираются различные аспекты работы библиотеки.
Пробная версия библиотеки действует в течении 60 дней. При покупке библиотеки имеется возможность получить исходные коды. Весьма удобно, что для этого не требуется покупать самую дорогую "неограниченную" лицензию - существуют версии с исходными кодами для 1, 2 и т.д. разработчиков. Схема лицензирования "не жадная" - при распространении приложений, написанных с помощью Elegant Ribbon, никаких дополнительных отчислений не потребуется.
Практика показала, что техническая поддержка работает отлично - на вопросы отвечают оперативно, ошибки исправляются в короткие сроки.
Размер двух основных сборок, которые необходимо распространять с приложением, составляет около 2 Мб. Каждая тема занимает, дополнительно, еще около 1.5 Мб.
Системные требования
Visual Studio 2005 и .NET 2.0
Visual Studio 2008 и .NET 3.5
Windows Forms
Текущая версия библиотеки 3.1.
|