Esempio n. 1
0
        public void Associate(MetaFeature metaFeature, ITypedServiceProvider serviceProvider)
        {
            if (m_metaCommand != null || m_serviceProvider != null)
            {
                throw new InvalidOperationException("Associate should only be called once on a IFeature instance.");
            }

            if (metaFeature == null)
            {
                throw new ArgumentNullException("metaFeature");
            }
            if (serviceProvider == null)
            {
                throw new ArgumentNullException("serviceProvider");
            }

            m_metaCommand     = metaFeature as MetaCommand;
            m_serviceProvider = serviceProvider;

            IMenuCommandService menuService = m_serviceProvider.GetService <IMenuCommandService>();

            Debug.Assert(menuService != null);
            if (menuService != null)
            {
                menuService.AddCommand(this);
            }
        }
Esempio n. 2
0
 public static ITaskInteraction Create(
     MSBuildFramework.IBuildEngine buildEngine,
     ITaskOutputHandler outputHandler,
     ITask task,
     IArgumentProvider arguments,
     ITypedServiceProvider services)
 {
     return new BuildTaskInteraction(task, arguments, outputHandler, buildEngine, services);
 }
Esempio n. 3
0
 public static ITaskInteraction Create(
     MSBuildFramework.IBuildEngine buildEngine,
     ITaskOutputHandler outputHandler,
     ITask task,
     IArgumentProvider arguments,
     ITypedServiceProvider services)
 {
     return(new BuildTaskInteraction(task, arguments, outputHandler, buildEngine, services));
 }
Esempio n. 4
0
        protected virtual void Dispose(bool disposing)
        {
            // This could happen: when user disconnects add-in
            // Debug.Assert(disposing, "Finalizing " + this.GetType().Name + " without disposing.");

            m_serviceProvider = null;
            m_metaFeature     = null;

            Debug.WriteLine("Disposed feature of type: " + m_metaFeature);
        }
Esempio n. 5
0
        /// <summary>
        /// Called on a feature object right after it has been created from the
        /// meta-feature information.
        /// </summary>
        /// <param name="metaFeature">Corresponding MetaFeature which created the feature.</param>
        /// <param name="serviceProvider">Feature context (service provider).</param>
        public void Associate(MetaFeature metaFeature, ITypedServiceProvider serviceProvider)
        {
            Debug.Assert(!m_disposed);

            if (metaFeature == null)
            {
                throw new ArgumentNullException("metaFeature");
            }
            if (serviceProvider == null)
            {
                throw new ArgumentNullException("serviceProvider");
            }

            m_metaFeature     = metaFeature;
            m_serviceProvider = serviceProvider;

            VsShell.IVsUIShell vsUIShell = m_serviceProvider.GetService <VsShell.IVsUIShell>();
            Debug.Assert(vsUIShell != null);
            if (vsUIShell != null)
            {
                Guid  toolWindowID = this.GetType().GUID;
                int[] position     = new int[1];
                VsShell.IVsWindowFrame frame;
                Guid emptyGuid = Guid.Empty;
                int  hr        = vsUIShell.CreateToolWindow(
                    (int)VsShell.__VSCREATETOOLWIN.CTW_fInitNew,
                    0,
                    this,
                    ref emptyGuid,
                    ref toolWindowID,
                    ref emptyGuid,
                    null,
                    m_metaFeature.Name,
                    position,
                    out frame);

                // If the add-in is reloaded, the CreateToolWindow method may fail because
                // previous tool window may not be destroyed correctly. We try to create
                // tool window again.
                if (ErrorHandler.Failed(hr))
                {
                    ErrorHandler.ThrowOnFailure(vsUIShell.CreateToolWindow(
                                                    (int)VsShell.__VSCREATETOOLWIN.CTW_fInitNew,
                                                    0,
                                                    this,
                                                    ref emptyGuid,
                                                    ref toolWindowID,
                                                    ref emptyGuid,
                                                    null,
                                                    m_metaFeature.Name,
                                                    position,
                                                    out frame));
                }
            }
        }
Esempio n. 6
0
 private BuildTaskInteraction(
     ITask task,
     IArgumentProvider arguments,
     ITaskOutputHandler outputHandler,
     MSBuildFramework.IBuildEngine buildEngine,
     ITypedServiceProvider services)
     : base (arguments, services)
 {
     this.outputHandler = outputHandler;
     this.loggers = new Lazy<BuildTaskLoggers>(() => new BuildTaskLoggers(buildEngine, task, arguments));
 }
Esempio n. 7
0
 private BuildTaskInteraction(
     ITask task,
     IArgumentProvider arguments,
     ITaskOutputHandler outputHandler,
     MSBuildFramework.IBuildEngine buildEngine,
     ITypedServiceProvider services)
     : base(arguments, services)
 {
     this.outputHandler = outputHandler;
     this.loggers       = new Lazy <BuildTaskLoggers>(() => new BuildTaskLoggers(buildEngine, task, arguments));
 }
Esempio n. 8
0
 /// <summary>
 /// Does the actual work of instantiating feature object before Associate is called
 /// from CreateFeature (if required).
 /// </summary>
 /// <param name="serviceProvider">Context the feature is being created in.</param>
 /// <returns>Created feature object.</returns>
 protected override IDisposable DoCreateFeature(ITypedServiceProvider serviceProvider)
 {
     if (this.IsCustomCommand)
     {
         // Custom command requires CommandID to be passed in.
         return(Activator.CreateInstance(this.FeatureType, this.CustomCommandId) as IDisposable);
     }
     else
     {
         // Predefined commands have default constructors.
         return(Activator.CreateInstance(this.FeatureType) as IDisposable);
     }
 }
Esempio n. 9
0
        public override void Associate(MetaFeature metaFeature, ITypedServiceProvider serviceProvider)
        {
            base.Associate(metaFeature, serviceProvider);

            m_monitorDocumentsService = serviceProvider.GetService <IMonitorDocumentsService>();
            Debug.Assert(m_monitorDocumentsService != null);
            if (m_monitorDocumentsService != null)
            {
                m_monitorDocumentsService.ForAllOpenedDocuments(delegate(DocumentEventArgs args)
                {
                    OnDocumentOpened(m_monitorDocumentsService, args);
                });
                m_monitorDocumentsService.DocumentOpened += OnDocumentOpened;
                m_monitorDocumentsService.DocumentClosed += OnDocumentClosed;
            }
        }
Esempio n. 10
0
        /// <summary>
        /// Creates feature of this meta-feature type in specified context.
        /// </summary>
        /// <param name="serviceProvider">The context in which the new feature is created.</param>
        /// <returns>Created feature.</returns>
        /// <remarks>
        /// Note that even though feature might choose to implement IFeature interface, this is not
        /// a requirement (whereas IDisposable is a requirement).
        /// </remarks>
        public IDisposable CreateFeature(ITypedServiceProvider serviceProvider)
        {
            IDisposable disposableFeature = this.DoCreateFeature(serviceProvider);

            Debug.Assert(disposableFeature != null);

            IFeature feature = disposableFeature as IFeature;

            if (feature != null)
            {
                feature.Associate(this, serviceProvider);
            }

            Debug.WriteLine("Created feature " + this + ".");
            return(disposableFeature);
        }
Esempio n. 11
0
        /// <summary>
        /// Called on a feature object right after it has been created from the
        /// meta-feature information.
        /// </summary>
        /// <param name="metaFeature">Corresponding MetaFeature which created the feature.</param>
        /// <param name="serviceProvider">Feature context (service provider).</param>
        public override void Associate(MetaFeature metaFeature, ITypedServiceProvider serviceProvider)
        {
            base.Associate(metaFeature, serviceProvider);

            IList <MetaFeature> children = metaFeature.Store.GetRolePlayers(metaFeature, MetaRelationshipKind.Child);

            Debug.Assert(children != null);
            if (children != null)
            {
                foreach (MetaFeature childMetaFeature in children)
                {
                    if (childMetaFeature.Enabled)
                    {
                        this.CreateFeature(childMetaFeature.FeatureType);
                    }
                }
            }
        }
Esempio n. 12
0
        /// <summary>
        /// Called on a feature object right after it has been created from the
        /// meta-feature information.
        /// </summary>
        /// <param name="metaFeature">Corresponding MetaFeature which created the feature.</param>
        /// <param name="serviceProvider">Feature context (service provider).</param>
        public virtual void Associate(MetaFeature metaFeature, ITypedServiceProvider serviceProvider)
        {
            if (m_metaFeature != null || m_serviceProvider != null)
            {
                throw new InvalidOperationException();
            }

            if (metaFeature == null)
            {
                throw new ArgumentNullException("metaFeature");
            }
            m_metaFeature = metaFeature;

            // We do allow global context to have no parent context which is expected.
            if (serviceProvider == null)
            {
                throw new ArgumentNullException("serviceProvider");
            }
            m_serviceProvider = serviceProvider;
        }
Esempio n. 13
0
        /// <summary>
        /// Does the actual work of instantiating feature object before Associate is called
        /// from CreateFeature (if required).
        /// </summary>
        /// <param name="serviceProvider">Context the feature is being created in.</param>
        /// <returns>Created feature object.</returns>
        protected virtual IDisposable DoCreateFeature(ITypedServiceProvider serviceProvider)
        {
            if (serviceProvider == null)
            {
                throw new ArgumentNullException("serviceProvider");
            }

            // It is relatively common for types to take a IServiceProvider interface as an argument,
            // so we do provide a special case here for such situations (tool-windows and dialogs are
            // good examples of this).
            ConstructorInfo spConstructor = m_featureType.GetConstructor(new Type[] { typeof(IServiceProvider) });

            if (spConstructor != null)
            {
                return(spConstructor.Invoke(new object[] { serviceProvider }) as IDisposable);
            }
            else
            {
                // If failed, assume the type has a defalut constructor.
                return(Activator.CreateInstance(m_featureType) as IDisposable);
            }
        }
Esempio n. 14
0
        protected virtual void Dispose(bool disposing)
        {
            Debug.Assert(disposing, "Finalizing CustomCommand without disposing.");

            if (disposing)
            {
                if (m_serviceProvider != null)
                {
                    IMenuCommandService menuService = m_serviceProvider.GetService <IMenuCommandService>();
                    if (menuService != null)
                    {
                        menuService.RemoveCommand(this);
                    }
                    m_serviceProvider = null;
                }
            }

            m_metaCommand = null;
            m_selection   = null;

            Debug.WriteLine("Unloaded and disposed command " + m_metaCommand);
        }
Esempio n. 15
0
        public override void Associate(MetaFeature metaFeature, ITypedServiceProvider serviceProvider)
        {
            if (metaFeature == null)
            {
                throw new ArgumentNullException("metaFeature");
            }
            if (serviceProvider == null)
            {
                throw new ArgumentNullException("serviceProvider");
            }

            base.Associate(metaFeature, serviceProvider);

            Debug.Assert(m_scrollPanel == null);
            if (m_scrollPanel == null)
            {
                DiagramContext diagramContext = serviceProvider.GetService <IFeatureContext>() as DiagramContext;
                Debug.Assert(diagramContext != null && diagramContext.DiagramView != null);
                if (diagramContext != null && diagramContext.DiagramView != null)
                {
                    // Create and show a thumbnail form.
                    DiagramView diagramView = diagramContext.DiagramView;
                    m_scrollPanel = new Panel();
                    m_scrollPanel.BackgroundImage       = new Bitmap(typeof(ThumbnailViewForm), @"ThumbnailView.bmp");
                    m_scrollPanel.Anchor                = AnchorStyles.Bottom | AnchorStyles.Right;
                    m_scrollPanel.BackgroundImageLayout = ImageLayout.Center;
                    diagramView.Invoke(new EventHandler(delegate(object sender, EventArgs e)
                    {
                        diagramView.Controls.Add(m_scrollPanel);
                    }));
                    m_scrollPanel.Width  = diagramView.Controls[1].Width;
                    m_scrollPanel.Height = diagramView.Controls[2].Height;
                    m_scrollPanel.Left   = diagramView.Width - m_scrollPanel.Width;
                    m_scrollPanel.Top    = diagramView.Height - m_scrollPanel.Height;
                    m_scrollPanel.Anchor = AnchorStyles.Right | AnchorStyles.Bottom;
                    m_scrollPanel.BringToFront();
                    m_scrollPanel.MouseDown += delegate(object sender, MouseEventArgs args)
                    {
                        // Right-click on the thumbnail icon brings pan/zoom tool window.
                        Debug.Assert(args != null);
                        if (args != null && args.Button == MouseButtons.Right)
                        {
                            IFeatureContext featureContext = this.ServiceProvider.GetService <IFeatureContext>();
                            Debug.Assert(featureContext != null);
                            if (featureContext != null)
                            {
                                PanZoomWindow toolWindow = featureContext.CreateFeature <PanZoomWindow>();
                                Debug.Assert(toolWindow != null);
                                if (toolWindow != null)
                                {
                                    toolWindow.Show();
                                }
                            }
                        }
                        else
                        {
                            // Any other click on thumbnail icon displays the thumbnail form.
                            new ThumbnailViewForm(m_scrollPanel, diagramView.DiagramClientView).ShowDialog();
                        }
                    };
                }
            }
        }
Esempio n. 16
0
 /// <summary>
 /// Execution handler for tasks running under MSBuild.
 /// </summary>
 /// <param name="services">Override services, can be null. Used to get services before falling back on defaults.</param>
 public BuildTaskExecution(MSBuildFramework.IBuildEngine buildEngine, ITaskOutputHandler outputHandler, IArgumentProvider argumentProvider, ITaskRegistry taskRegistry, ITypedServiceProvider services = null)
     : base(argumentProvider, taskRegistry, services)
 {
     this.outputHandler = outputHandler;
     this.buildEngine = buildEngine;
 }
Esempio n. 17
0
 /// <summary>
 /// Execution handler for tasks running under the console.
 /// </summary>
 /// <param name="services">Override services, can be null. Used to get services before falling back on defaults.</param>
 public ConsoleTaskExecution(IArgumentProvider argumentProvider, ITaskRegistry taskRegistry, ITypedServiceProvider services = null)
     : base(argumentProvider, taskRegistry, services)
 {
 }
Esempio n. 18
0
 protected TaskExecution(IArgumentProvider argumentProvider, ITaskRegistry taskRegistry, ITypedServiceProvider services)
 {
     ArgumentProvider = argumentProvider;
     _taskRegistry    = taskRegistry;
     Services         = services;
 }
Esempio n. 19
0
 protected TaskExecution(IArgumentProvider argumentProvider, ITaskRegistry taskRegistry, ITypedServiceProvider services)
 {
     this.ArgumentProvider = argumentProvider;
     this.taskRegistry = taskRegistry;
     this.Services = services;
 }
Esempio n. 20
0
 protected TaskInteraction(IArgumentProvider arguments, ITypedServiceProvider services)
 {
     this.Arguments = arguments;
     this.services  = services;
 }
Esempio n. 21
0
 /// <summary>
 /// Execution handler for tasks running under MSBuild.
 /// </summary>
 /// <param name="services">Override services, can be null. Used to get services before falling back on defaults.</param>
 public BuildTaskExecution(MSBuildFramework.IBuildEngine buildEngine, ITaskOutputHandler outputHandler, IArgumentProvider argumentProvider, ITaskRegistry taskRegistry, ITypedServiceProvider services = null)
     : base(argumentProvider, taskRegistry, services)
 {
     _outputHandler = outputHandler;
     _buildEngine   = buildEngine;
 }
Esempio n. 22
0
 private ConsoleTaskInteraction(ITask task, IArgumentProvider arguments, ITypedServiceProvider services)
     : base(arguments, services)
 {
     _loggers = new Lazy <ConsoleTaskLoggers>(() => new ConsoleTaskLoggers(task, arguments));
 }
Esempio n. 23
0
 /// <summary>
 /// Execution handler for tasks running under the console.
 /// </summary>
 /// <param name="services">Override services, can be null. Used to get services before falling back on defaults.</param>
 public ConsoleTaskExecution(IArgumentProvider argumentProvider, ITaskRegistry taskRegistry, ITypedServiceProvider services = null)
     : base(argumentProvider, taskRegistry, services)
 {
 }
Esempio n. 24
0
 public static ITaskInteraction Create(ITask task, IArgumentProvider arguments, ITypedServiceProvider services)
 {
     return(new ConsoleTaskInteraction(task, arguments, services));
 }
Esempio n. 25
0
 public static ITaskInteraction Create(ITask task, IArgumentProvider arguments, ITypedServiceProvider services)
 {
     return new ConsoleTaskInteraction(task, arguments, services);
 }
Esempio n. 26
0
 private ConsoleTaskInteraction(ITask task, IArgumentProvider arguments, ITypedServiceProvider services)
     : base(arguments, services)
 {
     this.loggers = new Lazy<ConsoleTaskLoggers>(() => new ConsoleTaskLoggers(task, arguments));
 }