Пользовательский интерфейс расширения

Если для решения необходима административная настройка, к примеру: выбор почтового сервера, то для расширения Консоли настройки Docsvision может быть реализован пользовательский интерфейс.

Для Модуля учета сетевых устройств предусмотрен ввод некоторых данных: e-mail администратора, лицензионный ключ, признак глобального отключения проверки.

image

Для работы с карточками учета сетевого оборудования требуется лицензионный ключ: введите в поле Лицензионный ключ значение "ЛИЦЕНЗИЯ".

Интерфейс управления для расширения консоли настройки — это обычный WinForms элемент управления (типа System.Windows.Forms.UserControl), в котором реализован интерфейс IConsoleControl (сборка DocsVision.Tools.ServerConsole.Interfaces.dll).

Интерфейс IConsoleControl добавляет:
  • Свойство Changed, которое возвращает признак наличие изменений в данных. При закрытии формы, при наличии изменений, будет выдано предупреждение о необходимости сохранения данных.

    public bool Changed
    {
     set
     {
      isChanged = value;
      ControlChanged();
     }
     get
     {
      return isChanged;
     }
    }
  • Свойство Valid, которое возвращает результат проверки данных на наличии ошибок. Проверка выполняется при закрытии формы. Алгоритм верификации данных разрабатывается самостоятельно.

    public bool Valid
    {
     get
     {
      bool result = true;
      if (Admin_eMail.Text.Contains("@") = false)
      {
       result = false; (1)
      }
      return result;
     }
    }
    1 Возвращаем ошибку, если e-mail некорректен.
  • Свойство Caption — название модуля, которое отображается в узле Модули расширения Консоли настройки.

    public string Caption
    {
     get { return "Модуль учета сетевых устройств"; }
    }
  • Свойство Instance — должно возвращать экземпляр класса, реализующего элемент управления.

    public UserControl Instance
    {
     get { return this; }
    }
  • Метод Execute — вызывается при сохранении данных. Данный метод будет вызван, если на запрос сохранения данных, был получен утвердительный ответ.

    public bool Execute()
    {
     try
     {
      using (RegistryKey key = Common.GetSubKey(Registry.LocalMachine, Common.NetstatSolutionKey))
      {
       key.SetValue(Common.EmailAdminRegName, Admin_eMail.Text);
       key.SetValue(Common.CheckIsEnabledRegName, Convert.ToInt32(CheckIsOn.Checked));
       key.SetValue(Common.LicenseRegName, License.Text);
      }
      isChanged = false;
     } catch
     {
      return false;
     }
     return true;
    }
  • Метод Initialize — отвечает за предварительную загрузку данных и другие подготовительные действия. Вызывается перед открытием формы.

    public void Initialize()
    {
     using (RegistryKey key = Common.GetSubKey(Registry.LocalMachine, Common.NetstatSolutionKey))
     {
      Admin_eMail.Text = key.GetValue(Common.EmailAdminRegName, string.Empty).ToString();
      CheckIsOn.Checked = Convert.ToBoolean((int)key.GetValue(Common.CheckIsEnabledRegName, 1));
      License.Text = key.GetValue(Common.LicenseRegName, string.Empty).ToString();
     }
     isChanged = false;
    }
  • Генерация событие ControlChanged позволяет уведомить Консоль настройки об изменении данных, что активирует кнопку сохранения данных. Если самостоятельно не вызвать данный метод, сохранить данные можно будет только при закрытии формы, при появлении соответствующего запроса.