Хранение пользовательских конфигураций вкладок в Vault
В ряде случаев возникает необходимость централизованного хранения конфигурации пользовательских настроек вкладок. Стандартный способ – это работа через Vault Option. Основная проблема в том, что пользовательские вкладки регистрируются до подключения Vault Explorer к Vault. Так как быть с настройкой пользовательских вкладок или команд, если невозможно прочитать Vault Option?
Решение довольно простое – достаточно вывести уведомление о необходимости перезапуска Vault Explorer. Этот метод работает для пользовательских команд, вкладок и обработчиков пользовательских объектов.
Так, например, Vault Web View имеет дело с двумя копиями конфигурационных настроек. Одна хранится локально в виде XML-файла в том же каталоге, что и DLL расширения. Другая копия представлена в виде данных, которые расположены в Vault Option. Когда Vault Web View настраивает вкладки, он производит эту операцию на основании локального файла настроек.
Код на C#:
- public IEnumerable<DetailPaneTab> DetailTabs()
- {
- // читаем и десериализуем локальный файл настроек в m_settings
- List<DetailPaneTab> tabs = new List<DetailPaneTab>();
- foreach (TabSettings tabSettings in m_settings.Tabs)
- {
- // настраиваем вкладки на основании настроек
- ...
- }
- return tabs;
- }
Позже, когда пользователь регистрируется в Vault, расширение читает Vault Option и сравнивает его с локальным файлом настроек. Если они совпадают, то расширение произвело правильную настройку. Если они не совпадают, то файл локальной настройки обновляется, и пользователю будет предложено перезагрузить Vault Explorer.
Код на C#:
- public void OnLogOn(IApplication application)
- {
- Util.DoAction(delegate
- {
- CheckSettings(application.Connection);
- });
- }
- private void CheckSettings(Connection conn)
- {
- // читаем Vault Option
- string xmlValue = conn.WebServiceManager.KnowledgeVaultService.GetVaultOption(
- SETTINGS_VAULT_OPTION);
- if (xmlValue == null)
- return;
- // нормализуем данные
- // пробелы в данных могут быть изменены во время сохранения в Vault Option
- Settings tmp = Settings.Load(xmlValue);
- xmlValue = tmp.Save();
- string settingsPath = System.IO.Path.Combine(Util.GetAssemblyPath(), SETTINGS_FILE);
- string xmlValue2 = null;
- // читаем локальные настройки
- if (System.IO.File.Exists(settingsPath))
- {
- xmlValue2 = System.IO.File.ReadAllText(settingsPath);
- }
- // сравниваем текстовые значения
- if (xmlValue != xmlValue2)
- {
- MessageBox.Show(
- "Настройки Web View были обновлены." +
- "\nДля того чтобы увидеть корректные вкладки Web View," +
- "\nвам рекомендуется перезапустить Vault explorer.");
- System.IO.File.WriteAllText(settingsPath, xmlValue);
- }
- }
Источник: http://justonesandzeros.typepad.com/blog/2013/09/storing-custom-tab-configurations-in-vault.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=295
Опубликовано 29.10.2013Отредактировано 29.10.2013 в 19:03:23