Использование пользовательских расширений для рабочих элементов TFS

ОГЛАВЛЕНИЕ

Стандартный набор элементов пользовательского интерфейса и его возможности не всегда удовлетворяют взыскательных пользователей любой системы. И MS Visual Studio Team Foundation Server (TFS), в этом смысле, не является исключением. Однако в TFS предусмотрена возможность создания пользовательских элементов для расширения стандартных свойств рабочих элементов системы. Использование технологий .NET позволяет просто создавать пользовательские расширения и интегрировать их в свою форму управления рабочим элементом. В данной статье описывается возможность создания дополнительных пользовательских элементов графического интерфейса на простом примере реализации связанных списков и сравнение со стандартной возможностью организации связанных списков.

Стандартные списки

Для формирования связанных списков нам помогут встроенные глобальные списки (элемент GLOBALLIST). Глобальные списки очень удобны при работе с часто меняющимися списками и большими списками и одни и те же списки могут использоваться в различных рабочих элементах. Для нашего примера мы создадим несколько глобальных списков (см. Рисунок 1):

  • Список «Operating systems» представляет собой набор типов операционных систем, который будет главным списком;
  • Списки «OS Microsoft Windows», «OS Linux» и т.д. представляют собой список версий для каждого из типа операционной системы.
     

Рисунок 1. Глобальные списки

Далее необходимо создать два текстовых поля, которые буду хранить в себе информацию о выбранных полях:

  • Поле «OS Type» будет содержать информацию о типе операционной системы;
  • Поле «OS Version» будет содержать информацию о версии операционной системы.
 

 Рисунок 2. Новые поля

 Теперь необходимо для каждого поля определить список. Особенность в нашем случае заключается в том, что для поля «OS Type» должен быть статический список, а для поля «OS Version» необходимо определить динамический список, которые будет менять свой набор значений в зависимости от значения, которое выбрано в поле «OS Type». Для того чтоб подключить список к полю «OS Type», для него необходимо указать правило «ALLOWEDVALUES» и в нем установить ссылку на глобальный список «Operating systems» как изображено на рисунке ниже (см. Рисунок 3).

 

Рисунок 3. Подключение списка к полю

 Для поля «OS Version» необходимо определить условия, по которым будет изменяться содержимое его списка. Для этого необходимо для поля определить правило «WHEN», которое выполнится при истинности прописанного в нем выражения. Правило «WHEN» может отслеживать изменения значения любого поля, которое принадлежит рабочему элементу. Как условие определим соответствие значения ссылки «CMC.Bug.OSType», которая определяет поле «OS Type», каждому значению из глобального списка «Operating systems» (см. Рисунок 4).

  

Рисунок 4. Определение условия для поля

 Результатом выполнения правила должно быть установка в значение «ALLOWEDVALUES» наименования необходимого глобального списка (одного из «OS Microsoft Windows», «OS Linux» и т.д.)


Рисунок 5. Подключение списка к условию

И на последнем шаге необходимо новые поля разместить на форме рабочего элемента, которые должны иметь встроенный тип стандартного элемента пользовательского интерфейса «FieldControl» (см. Рисунок 6).

 

Рисунок 6. Определение полей на форме

Результатом проведенных изменений на форме должны быть два списковых поля с зависимыми значениями (см. Рисунок 7).

 

Рисунок 7. Новые поля на форме рабочего элемента

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