Ejemplo n.º 1
0
        /// <summary>
        /// Locates first component withing ordered components of a particular content type.
        /// </summary>
        public static TComponent FindFirstOrderedComponent(ICompositionCatalog catalog, string contentTypeName)
        {
            var contentTypeRegistryService = catalog.ExportProvider.GetExportedValue <IContentTypeRegistryService>();
            var contentType = contentTypeRegistryService.GetContentType(contentTypeName);

            return(FindFirstOrderedComponent(catalog.CompositionService, contentType));
        }
Ejemplo n.º 2
0
        public QuickInfoSource(ITextBuffer subjectBuffer, ICompositionCatalog catalog) {
            _catalog = catalog;
            _catalog.CompositionService.SatisfyImportsOnce(this);

            _subjectBuffer = subjectBuffer;
            _subjectBuffer.Changed += OnTextBufferChanged;
        }
Ejemplo n.º 3
0
        public QuickInfoSource(ITextBuffer subjectBuffer, ICompositionCatalog catalog)
        {
            _catalog = catalog;
            _catalog.CompositionService.SatisfyImportsOnce(this);

            _subjectBuffer          = subjectBuffer;
            _subjectBuffer.Changed += OnTextBufferChanged;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Locates all components exported with a given content type or with any of the content type base types
        /// </summary>
        public static IEnumerable <Lazy <TComponent, TMetadata> > ImportMany(ICompositionCatalog catalog, string contentTypeName)
        {
            var lazy = catalog.ExportProvider.GetExport <IContentTypeRegistryService>();

            Debug.Assert(lazy != null);

            var contentTypeRegistry = lazy.Value;
            var contentType         = contentTypeRegistry.GetContentType(contentTypeName);

            return(ImportMany(catalog.CompositionService, contentType));
        }
Ejemplo n.º 5
0
        protected ViewController(ITextView textView, ITextBuffer textBuffer, ICompositionCatalog shell) {
            TextView = textView;
            TextBuffer = textBuffer;
            _shell = shell;
            _controllers = new List<ICommandTarget>();

            BuildCommandSet();
            BuildControllerSet();

            TextViewListenerEvents.TextViewDisconnected += OnTextViewDisconnected;
        }
Ejemplo n.º 6
0
        protected ViewController(ITextView textView, ITextBuffer textBuffer, ICompositionCatalog shell)
        {
            TextView     = textView;
            TextBuffer   = textBuffer;
            _shell       = shell;
            _controllers = new List <ICommandTarget>();

            BuildCommandSet();
            BuildControllerSet();

            TextViewListenerEvents.TextViewDisconnected += OnTextViewDisconnected;
        }
Ejemplo n.º 7
0
        public MassiveChange(ITextView textView, ITextBuffer textBuffer, ICompositionCatalog catalog, string description) {
            _textBuffer = textBuffer;

            var undoManagerProvider = catalog.ExportProvider.GetExportedValue<ITextBufferUndoManagerProvider>();
            var undoManager = undoManagerProvider.GetTextBufferUndoManager(textView.TextBuffer);

            ITextUndoTransaction innerTransaction = undoManager.TextBufferUndoHistory.CreateTransaction(description);
            _transaction = new TextUndoTransactionThatRollsBackProperly(innerTransaction);

            _transaction.AddUndo(new StartMassiveChangeUndoUnit(_textBuffer));

            IREditorDocument document = REditorDocument.TryFromTextBuffer(_textBuffer);
            document?.BeginMassiveChange();
        }
Ejemplo n.º 8
0
        public static IEditorSettingsStorage GetSettings(ICompositionCatalog compositionCatalog, string contentTypeName) {
            IEditorSettingsStorage settingsStorage = null;

            lock (_settingsLock) {
                if (_settingStorageMap.TryGetValue(contentTypeName, out settingsStorage)) {
                    return settingsStorage;
                }

                // Need to find the settings using MEF (don't use MEF inside of other locks, that can lead to deadlock)

                var contentTypeRegistry = compositionCatalog.ExportProvider.GetExportedValue<IContentTypeRegistryService>();

                var contentType = contentTypeRegistry.GetContentType(contentTypeName);
                Debug.Assert(contentType != null, "Cannot find content type object for " + contentTypeName);

                var cs = compositionCatalog.CompositionService;
                settingsStorage = ComponentLocatorForOrderedContentType<IWritableEditorSettingsStorage>.FindFirstOrderedComponent(cs, contentType);

                if (settingsStorage == null) {
                    settingsStorage = ComponentLocatorForOrderedContentType<IEditorSettingsStorage>.FindFirstOrderedComponent(cs, contentType);
                }

                if (settingsStorage == null) {
                    var storages = ComponentLocatorForContentType<IWritableEditorSettingsStorage, IComponentContentTypes>.ImportMany(cs, contentType);
                    if (storages.Count() > 0)
                        settingsStorage = storages.First().Value;
                }

                if (settingsStorage == null) {
                    var readonlyStorages = ComponentLocatorForContentType<IEditorSettingsStorage, IComponentContentTypes>.ImportMany(cs, contentType);
                    if (readonlyStorages.Count() > 0)
                        settingsStorage = readonlyStorages.First().Value;
                }

                Debug.Assert(settingsStorage != null, String.Format(CultureInfo.CurrentCulture,
                    "Cannot find settings storage export for content type '{0}'", contentTypeName));

                if (_settingStorageMap.ContainsKey(contentTypeName)) {
                    // some other thread came along and loaded settings already
                    settingsStorage = _settingStorageMap[contentTypeName];
                } else {
                    _settingStorageMap[contentTypeName] = settingsStorage;
                    settingsStorage.LoadFromStorage();
                }
            }

            return settingsStorage;
        }
Ejemplo n.º 9
0
        public MassiveChange(ITextView textView, ITextBuffer textBuffer, ICompositionCatalog catalog, string description)
        {
            _textBuffer = textBuffer;

            var undoManagerProvider = catalog.ExportProvider.GetExportedValue <ITextBufferUndoManagerProvider>();
            var undoManager         = undoManagerProvider.GetTextBufferUndoManager(textView.TextBuffer);

            ITextUndoTransaction innerTransaction = undoManager.TextBufferUndoHistory.CreateTransaction(description);

            _transaction = new TextUndoTransactionThatRollsBackProperly(innerTransaction);

            _transaction.AddUndo(new StartMassiveChangeUndoUnit(_textBuffer));

            IREditorDocument document = REditorDocument.TryFromTextBuffer(_textBuffer);

            document?.BeginMassiveChange();
        }
Ejemplo n.º 10
0
 public ComponentModelMock(ICompositionCatalog catalog)
 {
     _catalog = catalog;
 }
Ejemplo n.º 11
0
 private TestEditorShell(ICompositionCatalog catalog)
 {
     CompositionService = catalog.CompositionService;
     ExportProvider     = catalog.ExportProvider;
     MainThread         = Thread.CurrentThread;
 }
Ejemplo n.º 12
0
        public static ISettingsStorage GetSettings(ICompositionCatalog compositionCatalog, string contentTypeName)
        {
            ISettingsStorage settingsStorage = null;

            lock (_settingsLock) {
                if (_settingStorageMap.TryGetValue(contentTypeName, out settingsStorage))
                {
                    return(settingsStorage);
                }

                // Need to find the settings using MEF (don't use MEF inside of other locks, that can lead to deadlock)

                var contentTypeRegistry = compositionCatalog.ExportProvider.GetExportedValue <IContentTypeRegistryService>();

                var contentType = contentTypeRegistry.GetContentType(contentTypeName);
                Debug.Assert(contentType != null, "Cannot find content type object for " + contentTypeName);

                settingsStorage = ComponentLocatorForOrderedContentType <IWritableSettingsStorage> .FindFirstOrderedComponent(compositionCatalog.CompositionService, contentType);

                if (settingsStorage == null)
                {
                    settingsStorage = ComponentLocatorForOrderedContentType <ISettingsStorage> .FindFirstOrderedComponent(compositionCatalog.CompositionService, contentType);
                }

                if (settingsStorage == null)
                {
                    var storages = ComponentLocatorForContentType <IWritableSettingsStorage, IComponentContentTypes> .ImportMany(compositionCatalog.CompositionService, contentType);

                    if (storages.Any())
                    {
                        settingsStorage = storages.First().Value;
                    }
                }

                if (settingsStorage == null)
                {
                    var readonlyStorages = ComponentLocatorForContentType <ISettingsStorage, IComponentContentTypes> .ImportMany(compositionCatalog.CompositionService, contentType);

                    if (readonlyStorages.Any())
                    {
                        settingsStorage = readonlyStorages.First().Value;
                    }
                }

                Debug.Assert(settingsStorage != null, String.Format(CultureInfo.CurrentCulture,
                                                                    "Cannot find settings storage export for content type '{0}'", contentTypeName));

                if (_settingStorageMap.ContainsKey(contentTypeName))
                {
                    // some other thread came along and loaded settings already
                    settingsStorage = _settingStorageMap[contentTypeName];
                }
                else
                {
                    _settingStorageMap[contentTypeName] = settingsStorage;
                    settingsStorage.LoadFromStorage();
                }
            }

            return(settingsStorage);
        }
Ejemplo n.º 13
0
 private TestEditorShell(ICompositionCatalog catalog, Thread mainThread) :
     base(catalog.ExportProvider)
 {
     CompositionService = catalog.CompositionService;
     MainThread         = mainThread;
 }
Ejemplo n.º 14
0
 private TestEditorShell(ICompositionCatalog catalog, Thread mainThread) {
     CompositionService = catalog.CompositionService;
     ExportProvider = catalog.ExportProvider;
     MainThread = mainThread;
 }
Ejemplo n.º 15
0
 public static ImageSource GetGlyph(StandardGlyphGroup @group, StandardGlyphItem item, ICompositionCatalog compositionCatalog)
 {
     lock (_lock) {
         var glyphService = compositionCatalog.ExportProvider.GetExportedValue <IGlyphService>();
         return(glyphService.GetGlyph(group, item));
     }
 }