меню/тулбары создавать Designer vs. руками
От: Аноним  
Дата: 06.12.06 13:58
Оценка:
Сейчас делаю приложение. И вот задумался над тем как реализовывать меню с тулбарами. Так вот вспоминаю предыдущий проект на предыдущем месте работы в котором на основной MDI форме приложения меню с тулбарами были созданы руками при помощи Designer'а VS с использованием infragistics'вских контролов. У которых со временем обнаружились баги. То панели пропадают, то пункты меню пропадали сечас я точно не помню, но проблемы были. Отказаться было не просто от использоания infragistic'вских контролов(хотя может быть не очень-то ведущие разработчики этого хотели).

Вот сейчас планирую использовать другие контролы. В приложении в дочерних окнах возможно наличие тулбара. Я как представлю себе ситуацию по смене компонентов в случае всплытия каких либо багов, так в дрожь бросает. Также хотелось бы сделать так что бы приложение само собирало меню главного окна из сборок входящих в приложение.
Я планирую сделать описатель меню в XML, в котором есть ссылки на объекты реализующие интерфейс для выполнения действия. Еще мне необходимо будет рулить раздачей прав на эти действия.

Проблема в том что приложение будет обновляться соответсвенно будут появляться новые пункты меню. Появление новых элементов меню и сведение с тем что юзер на редактировал не просто, но реализуемо.
Возможность настройки используемым контролом имеется, но реализацию сохранение настроек на потом. Меня сейчас больше интересует то что-бы избежать возможных проблем и как облегчить себе жизнь, хотя возможность последующей реализации настраиваемости и сохранения закладываю.

Описатель примерно такой. Это пока прототип shortcut'ы еще не предусмотрел
<--
buttonLook — вид пункта меню. Допустимые значения "Default"(if absent), "Text", "Image", "TextAndImage"
commandObjectName — строка по которой я получаю экземпляр объекта реализующий интерфес команды.
delimeter — перед данным MenuItem delimeter. False if absent.
-->
<ToolBar captionRID="">
<MenuItem buttonLook="TextAndImage" commandObjectName="" delimeter="true"/>
<!-- SubMenu, если MenuItem содержит в себе хотя бы один дочерний MenuItem то это подменю
Подменю может содержать commandObjectName. см в студии на стандартной панели кнопку "Undo"

textRID — обязательный идентификатор ресурса
iconRID — опциональный если требуется отображение только как Image то обязательный,
hintRID — опциональный
buttonLook — опциональный
commandObjectName — опциональный
delimeter — опциональный
-->

<MenuItem textRID="" iconRID="" buttonLook="TextAndImage">
<MenuItem>

</MenuItem>
</MenuItem>
<MenuItem buttonLook="TextAndImage" commandObjectName="" delimeter="true"/>
</ToolBar>

Интерфейс объекта Command примерно следующий.
Св-ва:
TextRID — идентификатор ресурса для Text'а MenuItem'а(возможно переопределение в XML файле). Ввел сюда этот и последующие идентификаторы поскольку одна и таже команда может присутствовать как в меню/тулбаре/контекстном меню и прописывать во всех XML'ах одно и тоже тоскливо.
ImageRID — идетификатор ресурса иконки
HintRID — идентификатор строки hint'a
CategoryRID — идентификатор категории для команды
Enabled

Методы:
Execute

+ еще не продуман окончательно механизм разделения доступа пользователям который также должен быть в этом интерфейсе.


Так вот хотелось бы услышать критику на то что я планирую сделать.
Или все же лучше воспользоваться Designer'ом VS и потом свой функционал к тому что он нагенерит прибивать гвоздями?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.