VSIP Document Editor.
От: rollinx Россия  
Дата: 10.03.08 15:36
Оценка:
В данный момент разбираюсь с VSIP и у меня есть вопрос:

Как сделать Editor (или Designer) который:
— не будет ассоциироваться с файлом, т.е. не будет в New -> File его типа данных
— будет содержать контролы типа TextBox, ComboBox
— а при выборе хранимого объекта выводил заполнял значения этих полей (в моем случае это Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem)
— при выборе File -> Save — вызывал мою функцию сохранения

???
В каком направлении двигаться.

Заранее спасибо.
Re: VSIP Document Editor.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.03.08 18:57
Оценка:
Здравствуйте, rollinx, Вы писали:

R>Как сделать Editor (или Designer) который:

R>- не будет ассоциироваться с файлом

В стандартных типах проектов — никак.

R>, т.е. не будет в New -> File его типа данных


Для того чтобы эти типы были, наоборот нужно предпринять специальные шаги.

R>- будет содержать контролы типа TextBox, ComboBox


Легко

R>- а при выборе хранимого объекта выводил заполнял значения этих полей


Непонятно что такое "хранимый объект" и как его выбирать

R>- при выборе File -> Save — вызывал мою функцию сохранения


Без проблем.

R>В каком направлении двигаться.


В направлении VS SDK разумеется. Лучше сразу под VS 2008.
... << RSDN@Home 1.2.0 alpha 2 rev. 872 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[2]: VSIP Document Editor.
От: rollinx Россия  
Дата: 11.03.08 08:05
Оценка:
Здравствуйте, AndrewVK, Вы писали:

R>>В каком направлении двигаться.


AVK>В направлении VS SDK разумеется.


Ну это понятно, а вот там где что посмотреть?

AVK>Лучше сразу под VS 2008.


Мне нужно под VS 2005.
Re[3]: VSIP Document Editor.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.03.08 08:22
Оценка:
Здравствуйте, rollinx, Вы писали:

AVK>>В направлении VS SDK разумеется.


R>Ну это понятно, а вот там где что посмотреть?


Раздел создания собственных редакторов, разумеется.
... << RSDN@Home 1.2.0 alpha 2 rev. 872 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[4]: VSIP Document Editor.
От: rollinx Россия  
Дата: 11.03.08 12:17
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, rollinx, Вы писали:


AVK>>>В направлении VS SDK разумеется.


R>>Ну это понятно, а вот там где что посмотреть?


AVK>Раздел создания собственных редакторов, разумеется.


Немного уже разобрался, сделал Package на базе примера SynchronousXmlDesigner из SDK.

При открытии через File -> New
вижу что вызывается EditorFactory.SetSite -> EditorFactory.MapLogicalView -> EditorFactory.CreateEditorInstance -> Editor.Exec.

Но как это всё проделать вручную по нажатию какой-то кнопки?
Re[5]: VSIP Document Editor.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.03.08 13:36
Оценка:
Здравствуйте, rollinx, Вы писали:

R>Но как это всё проделать вручную по нажатию какой-то кнопки?


Что вручную? Позвать редактор? Самый простой способ — при помощи сервиса IVsUIShellOpenDocument.
... << RSDN@Home 1.2.0 alpha 2 rev. 872 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[2]: VSIP Document Editor.
От: orangy Россия
Дата: 11.03.08 14:00
Оценка:
Здравствуйте, AndrewVK, Вы писали:

R>>Как сделать Editor (или Designer) который:

R>>- не будет ассоциироваться с файлом
AVK>В стандартных типах проектов — никак.
Либо я не понял задачи, либо это просто Editors\{FactoryGuid}\OpenWithEntries
Атрибут регисрации выглядит как-то так:
    [AttributeUsage(AttributeTargets.Class, AllowMultiple=true, Inherited=true)]
    public class RegisterOpenWithEntryAttribute : RegistrationAttribute
    {
        Guid _factory;
        Guid _viewID;
        string _title;

        public RegisterOpenWithEntryAttribute(object factoryType, string viewID, string title)
        {
            if (factoryType is string)
                _factory = new Guid((string)factoryType);
            else if (factoryType is Type)
                _factory = ((Type)factoryType).GUID;
            else if (factoryType is Guid)
                _factory = (Guid)factoryType;

            _viewID = new Guid(viewID);
            _title = title;
        }


        public Guid Factory
        {
            get { return _factory; }
        }

        public Guid ViewID
        {
            get { return _viewID; }
        }

        public string Title
        {
            get { return _title; }
        }

        private string OpenWithPath
        {
            get { return string.Format("Editors\\{0}\\OpenWithEntries", _factory.ToString("B")); }
        }

        public override void Register(RegistrationContext context)
        {
            context.Log.WriteLine(string.Format("Open with:       {0} as '{1}'", _viewID, _title));
            Key childKey = context.CreateKey( OpenWithPath );
            childKey.SetValue(_viewID.ToString("B"), _title);
            childKey.Close();
        }

        public override void Unregister(RegistrationContext context)
        {
            context.RemoveValue(OpenWithPath, _viewID.ToString("B"));
        }
    }


Ну и там вся стандартная припрыжка с IVsEditorFactory, RegisterEditorExtension, RegisterEditorLogicalView
... << RSDN@Home 1.2.0 alpha rev. 655>>
"Develop with pleasure!"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.