예제 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Commands"/> class.
        /// Adds our command handlers for menu (commands must exist in the command table file)
        /// </summary>
        /// <param name="package">Owner package, not null.</param>
        /// <param name="commandService">Command service to add command to, not null.</param>
        private Commands(AsyncPackage package, OleMenuCommandService commandService)
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            _package       = package as P4EditVS ?? throw new ArgumentNullException(nameof(package));
            commandService = commandService ?? throw new ArgumentNullException(nameof(commandService));
            _application   = ServiceProvider.GetService(typeof(DTE)) as EnvDTE80.DTE2 ?? throw new ArgumentNullException(nameof(_application));

            foreach (var cmdId in CommandIds)
            {
                var menuCommandID = new CommandID(CommandSet, cmdId);
                var menuItem      = new OleMenuCommand(this.Execute, menuCommandID);
                menuItem.BeforeQueryStatus += new EventHandler(OnBeforeQueryStatus);
                menuItem.Visible            = true;
                commandService.AddCommand(menuItem);
            }

            foreach (var cmdId in CtxtCommandIds)
            {
                var menuCommandID = new CommandID(CommandSet, cmdId);
                var menuItem      = new OleMenuCommand(this.Execute, menuCommandID);
                menuItem.BeforeQueryStatus += new EventHandler(OnBeforeQueryStatusCtxt);
                menuItem.Visible            = true;
                commandService.AddCommand(menuItem);
            }

            foreach (var cmdId in WorkspaceCommandIds)
            {
                var menuCommandID = new CommandID(CommandSet, cmdId);
                var menuItem      = new OleMenuCommand(this.ExecuteWorkspace, menuCommandID);
                menuItem.BeforeQueryStatus += new EventHandler(OnBeforeQueryStatusWorkspace);
                menuItem.Visible            = true;
                commandService.AddCommand(menuItem);
            }

            if (_package.AutoCheckoutOnEdit)
            {
                _textDocEvents = ((EnvDTE80.Events2)_application.Events).get_TextDocumentKeyPressEvents(null);
                _textDocEvents.BeforeKeyPress += new _dispTextDocumentKeyPressEvents_BeforeKeyPressEventHandler(OnBeforeKeyPress);
            }
            //_textEditorEvents = ((EnvDTE80.Events2)_application.Events).get_TextEditorEvents(null);
            //_textEditorEvents.LineChanged += new _dispTextEditorEvents_LineChangedEventHandler(OnLineChanged);

            // Subscribe to events so we can do auto-checkout
            //_updateSolutionEvents = new UpdateSolutionEvents(this);
            _runningDocTableEvents = new RunningDocTableEvents(this, _application as DTE);

            // Setup output log
            var outputWindowPaneStream = new OutputWindowStream(_application, "P4EditVS");

            _outputWindow           = new StreamWriter(outputWindowPaneStream);
            _outputWindow.AutoFlush = true;
            //_outputWindow.WriteLine("hello from P4EditVS\n");
        }
예제 #2
0
        private void RegisterEvents(object sender = null, EventArgs e = null)
        {
            Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread();

            if (((Config)mPlugin.Options).AutoCheckoutOnEdit)
            {
                if (_registeredCommands == null)
                {
                    Log.Info("Adding handlers for automatically checking out text files as you edit them");
                    _registeredCommands = new List <string>();
                    var events = (EnvDTE80.Events2)mPlugin.App.Events;
                    mTextDocEvents = events.get_TextDocumentKeyPressEvents(null);
                    _beforeKeyPressEventHandler    = new _dispTextDocumentKeyPressEvents_BeforeKeyPressEventHandler(OnBeforeKeyPress);
                    mTextDocEvents.BeforeKeyPress += _beforeKeyPressEventHandler;

                    mTextEditorEvents              = events.get_TextEditorEvents(null);
                    _lineChangedEventHandler       = new _dispTextEditorEvents_LineChangedEventHandler(OnLineChanged);
                    mTextEditorEvents.LineChanged += _lineChangedEventHandler;

                    foreach (string command in _commands)
                    {
                        if (RegisterHandler(command, OnCheckoutCurrentDocument))
                        {
                            _registeredCommands.Add(command);
                        }
                        else
                        {
                            Log.Warning("Failed to register {0} to command '{1}'", nameof(OnCheckoutCurrentDocument), command);
                        }
                    }
                }
            }
            else if (_registeredCommands != null)
            {
                Log.Info("Removing handlers for automatically checking out text files as you edit them");
                foreach (string command in _registeredCommands)
                {
                    UnregisterHandler(command, OnCheckoutCurrentDocument);
                }
                _registeredCommands = null;

                mTextEditorEvents.LineChanged -= _lineChangedEventHandler;
                mTextEditorEvents              = null;

                mTextDocEvents.BeforeKeyPress -= _beforeKeyPressEventHandler;
                mTextDocEvents = null;
            }
        }
			public AutoCheckoutTextEdit(Plugin plugin)
				: base(plugin, "AutoCheckoutTextEdit", "Automatically checks out the text file on edits")
			{
				if(!Singleton<Config>.Instance.autoCheckoutOnEdit)
					return;

				Log.Info("Adding handlers for automatically checking out text files as you edit them");
				mTextDocEvents = ((EnvDTE80.Events2)plugin.App.Events).get_TextDocumentKeyPressEvents(null);
				mTextDocEvents.BeforeKeyPress += new _dispTextDocumentKeyPressEvents_BeforeKeyPressEventHandler(OnBeforeKeyPress);

				mTextEditorEvents = ((EnvDTE80.Events2)plugin.App.Events).get_TextEditorEvents(null);
				mTextEditorEvents.LineChanged += new _dispTextEditorEvents_LineChangedEventHandler(OnLineChanged);

				RegisterHandler("Edit.Delete", OnCheckoutCurrentDocument);
				RegisterHandler("Edit.DeleteBackwards", OnCheckoutCurrentDocument);
				RegisterHandler("Edit.Paste", OnCheckoutCurrentDocument);
			}
예제 #4
0
        public CodeBeautifierEventHandler(IServiceProvider serviceProvider)
        {
            m_serviceProvider    = serviceProvider;
            m_hApplicationObject = serviceProvider.GetService(typeof(EnvDTE.DTE)) as EnvDTE80.DTE2;

            m_settings.onOptionsChanged += new EventHandler(onConfigurationChanged);
            onConfigurationChanged(this, null);

            Command hCmdBuildSolution      = m_hApplicationObject.Commands.Item("Build.BuildSolution", 0);
            Command hCmdRebuildSolution    = m_hApplicationObject.Commands.Item("Build.RebuildSolution", 0);
            Command hCmdBuildOnlyProject   = m_hApplicationObject.Commands.Item("Build.BuildOnlyProject", 0);
            Command hCmdRebuildOnlyProject = m_hApplicationObject.Commands.Item("Build.RebuildOnlyProject", 0);

            Command hCmdBuildSelection   = m_hApplicationObject.Commands.Item("Build.BuildSelection", 886);
            Command hCmdRebuildSelection = m_hApplicationObject.Commands.Item("Build.RebuildSelection", 887);

            // BuildSolution
            m_hEventOnBuildSolution = m_hApplicationObject.Events.CommandEvents[hCmdBuildSolution.Guid, hCmdBuildSolution.ID] as CommandEvents;
            m_hEventOnBuildSolution.BeforeExecute += new _dispCommandEvents_BeforeExecuteEventHandler(OnBuildSolution);

            m_hEventOnRebuildSolution = m_hApplicationObject.Events.CommandEvents[hCmdRebuildSolution.Guid, hCmdRebuildSolution.ID] as CommandEvents;
            m_hEventOnRebuildSolution.BeforeExecute += new _dispCommandEvents_BeforeExecuteEventHandler(OnReBuildSolution);

            m_hEventOnBuildOnlyProject = m_hApplicationObject.Events.CommandEvents[hCmdBuildOnlyProject.Guid, hCmdBuildOnlyProject.ID] as CommandEvents;
            m_hEventOnBuildOnlyProject.BeforeExecute += new _dispCommandEvents_BeforeExecuteEventHandler(OnBuildProject);

            m_hEventOnRebuildOnlyProject = m_hApplicationObject.Events.CommandEvents[hCmdRebuildOnlyProject.Guid, hCmdRebuildOnlyProject.ID] as CommandEvents;
            m_hEventOnRebuildOnlyProject.BeforeExecute += new _dispCommandEvents_BeforeExecuteEventHandler(OnReBuildProject);


            m_hEventOnBuildSelected = m_hApplicationObject.Events.CommandEvents[hCmdBuildSelection.Guid, hCmdBuildSelection.ID] as CommandEvents;
            m_hEventOnBuildSelected.BeforeExecute += new _dispCommandEvents_BeforeExecuteEventHandler(OnBuildProject);

            m_hEventOnRebuildSelected = m_hApplicationObject.Events.CommandEvents[hCmdRebuildSelection.Guid, hCmdRebuildSelection.ID] as CommandEvents;
            m_hEventOnRebuildSelected.BeforeExecute += new _dispCommandEvents_BeforeExecuteEventHandler(OnReBuildProject);

            EnvDTE80.Events2 dteEvents2 = m_hApplicationObject.Events as EnvDTE80.Events2;
            m_textDocumentEvents = dteEvents2.get_TextDocumentKeyPressEvents();
            m_textDocumentEvents.AfterKeyPress += onTextDocumentKeyPressed;

            m_documentEvents = dteEvents2.get_DocumentEvents();
            m_documentEvents.DocumentSaved += onDocumentSaved;
        }
            public AutoCheckoutTextEdit(Plugin plugin)
                : base(plugin, "AutoCheckoutTextEdit", "Automatically checks out the text file on edits")
            {
                if (!Singleton <Config> .Instance.autoCheckoutOnEdit)
                {
                    return;
                }

                Log.Info("Adding handlers for automatically checking out text files as you edit them");
                mTextDocEvents = ((EnvDTE80.Events2)plugin.App.Events).get_TextDocumentKeyPressEvents(null);
                mTextDocEvents.BeforeKeyPress += new _dispTextDocumentKeyPressEvents_BeforeKeyPressEventHandler(OnBeforeKeyPress);

                mTextEditorEvents              = ((EnvDTE80.Events2)plugin.App.Events).get_TextEditorEvents(null);
                mTextEditorEvents.LineChanged += new _dispTextEditorEvents_LineChangedEventHandler(OnLineChanged);

                RegisterHandler("Edit.Delete", OnCheckoutCurrentDocument);
                RegisterHandler("Edit.DeleteBackwards", OnCheckoutCurrentDocument);
                RegisterHandler("Edit.Paste", OnCheckoutCurrentDocument);
            }
예제 #6
0
        public void Attach(_DTE app)
        {
            applicationObject = app;

            EnvDTE.Events events       = applicationObject.Events;
            OutputWindow  outputWindow = (OutputWindow)applicationObject.Windows.Item(Constants.vsWindowKindOutput).Object;


            //IObjectExplorerService objectExplorer = ServiceCache.GetObjectExplorer();
            //var provider = (IObjectExplorerEventProvider)objectExplorer.GetService(typeof(IObjectExplorerEventProvider));

            //provider.SelectionChanged += new NodesChangedEventHandler(provider_SelectionChanged);

            _outputWindowPane = outputWindow.OutputWindowPanes.Add("DTE Event Information - C# Event Watcher");

            //Retrieve the event objects from the automation model
            _windowsEvents       = (EnvDTE.WindowEvents)events.get_WindowEvents(null);
            _textEditorEvents    = (EnvDTE.TextEditorEvents)events.get_TextEditorEvents(null);
            _taskListEvents      = (EnvDTE.TaskListEvents)events.get_TaskListEvents("");
            _solutionEvents      = (EnvDTE.SolutionEvents)events.SolutionEvents;
            _selectionEvents     = (EnvDTE.SelectionEvents)events.SelectionEvents;
            _outputWindowEvents  = (EnvDTE.OutputWindowEvents)events.get_OutputWindowEvents("");
            _findEvents          = (EnvDTE.FindEvents)events.FindEvents;
            _dteEvents           = (EnvDTE.DTEEvents)events.DTEEvents;
            _documentEvents      = (EnvDTE.DocumentEvents)events.get_DocumentEvents(null);
            _debuggerEvents      = (EnvDTE.DebuggerEvents)events.DebuggerEvents;
            _commandEvents       = (EnvDTE.CommandEvents)events.get_CommandEvents("{00000000-0000-0000-0000-000000000000}", 0);
            _buildEvents         = (EnvDTE.BuildEvents)events.BuildEvents;
            _miscFilesEvents     = (EnvDTE.ProjectItemsEvents)events.MiscFilesEvents;
            _solutionItemsEvents = (EnvDTE.ProjectItemsEvents)events.SolutionItemsEvents;

            _globalProjectItemsEvents           = ((EnvDTE80.Events2)events).ProjectItemsEvents;
            _globalProjectsEvents               = ((EnvDTE80.Events2)events).ProjectsEvents;
            _textDocumentKeyPressEvents         = ((EnvDTE80.Events2)events).get_TextDocumentKeyPressEvents(null);
            _codeModelEvents                    = ((EnvDTE80.Events2)events).get_CodeModelEvents(null);
            _windowVisibilityEvents             = ((EnvDTE80.Events2)events).get_WindowVisibilityEvents(null);
            _debuggerProcessEvents              = ((EnvDTE80.Events2)events).DebuggerProcessEvents;
            _debuggerExpressionEvaluationEvents = ((EnvDTE80.Events2)events).DebuggerExpressionEvaluationEvents;
            _publishEvents = ((EnvDTE80.Events2)events).PublishEvents;

            //Connect to each delegate exposed from each object retrieved above
            _windowsEvents.WindowActivated     += new _dispWindowEvents_WindowActivatedEventHandler(this.WindowActivated);
            _windowsEvents.WindowClosing       += new _dispWindowEvents_WindowClosingEventHandler(this.WindowClosing);
            _windowsEvents.WindowCreated       += new _dispWindowEvents_WindowCreatedEventHandler(this.WindowCreated);
            _windowsEvents.WindowMoved         += new _dispWindowEvents_WindowMovedEventHandler(this.WindowMoved);
            _textEditorEvents.LineChanged      += new _dispTextEditorEvents_LineChangedEventHandler(this.LineChanged);
            _taskListEvents.TaskAdded          += new _dispTaskListEvents_TaskAddedEventHandler(this.TaskAdded);
            _taskListEvents.TaskModified       += new _dispTaskListEvents_TaskModifiedEventHandler(this.TaskModified);
            _taskListEvents.TaskNavigated      += new _dispTaskListEvents_TaskNavigatedEventHandler(this.TaskNavigated);
            _taskListEvents.TaskRemoved        += new _dispTaskListEvents_TaskRemovedEventHandler(this.TaskRemoved);
            _solutionEvents.AfterClosing       += new _dispSolutionEvents_AfterClosingEventHandler(this.AfterClosing);
            _solutionEvents.BeforeClosing      += new _dispSolutionEvents_BeforeClosingEventHandler(this.BeforeClosing);
            _solutionEvents.Opened             += new _dispSolutionEvents_OpenedEventHandler(this.Opened);
            _solutionEvents.ProjectAdded       += new _dispSolutionEvents_ProjectAddedEventHandler(this.ProjectAdded);
            _solutionEvents.ProjectRemoved     += new _dispSolutionEvents_ProjectRemovedEventHandler(this.ProjectRemoved);
            _solutionEvents.ProjectRenamed     += new _dispSolutionEvents_ProjectRenamedEventHandler(this.ProjectRenamed);
            _solutionEvents.QueryCloseSolution += new _dispSolutionEvents_QueryCloseSolutionEventHandler(this.QueryCloseSolution);
            _solutionEvents.Renamed            += new _dispSolutionEvents_RenamedEventHandler(this.Renamed);
            _selectionEvents.OnChange          += new _dispSelectionEvents_OnChangeEventHandler(this.OnChange);
            _outputWindowEvents.PaneAdded      += new _dispOutputWindowEvents_PaneAddedEventHandler(this.PaneAdded);
            _outputWindowEvents.PaneClearing   += new _dispOutputWindowEvents_PaneClearingEventHandler(this.PaneClearing);
            _outputWindowEvents.PaneUpdated    += new _dispOutputWindowEvents_PaneUpdatedEventHandler(this.PaneUpdated);
            _findEvents.FindDone                       += new _dispFindEvents_FindDoneEventHandler(this.FindDone);
            _dteEvents.ModeChanged                     += new _dispDTEEvents_ModeChangedEventHandler(this.ModeChanged);
            _dteEvents.OnBeginShutdown                 += new _dispDTEEvents_OnBeginShutdownEventHandler(this.OnBeginShutdown);
            _dteEvents.OnMacrosRuntimeReset            += new _dispDTEEvents_OnMacrosRuntimeResetEventHandler(this.OnMacrosRuntimeReset);
            _dteEvents.OnStartupComplete               += new _dispDTEEvents_OnStartupCompleteEventHandler(this.OnStartupComplete);
            _documentEvents.DocumentClosing            += new _dispDocumentEvents_DocumentClosingEventHandler(this.DocumentClosing);
            _documentEvents.DocumentOpened             += new _dispDocumentEvents_DocumentOpenedEventHandler(this.DocumentOpened);
            _documentEvents.DocumentOpening            += new _dispDocumentEvents_DocumentOpeningEventHandler(this.DocumentOpening);
            _documentEvents.DocumentSaved              += new _dispDocumentEvents_DocumentSavedEventHandler(this.DocumentSaved);
            _debuggerEvents.OnContextChanged           += new _dispDebuggerEvents_OnContextChangedEventHandler(this.OnContextChanged);
            _debuggerEvents.OnEnterBreakMode           += new _dispDebuggerEvents_OnEnterBreakModeEventHandler(this.OnEnterBreakMode);
            _debuggerEvents.OnEnterDesignMode          += new _dispDebuggerEvents_OnEnterDesignModeEventHandler(this.OnEnterDesignMode);
            _debuggerEvents.OnEnterRunMode             += new _dispDebuggerEvents_OnEnterRunModeEventHandler(this.OnEnterRunMode);
            _debuggerEvents.OnExceptionNotHandled      += new _dispDebuggerEvents_OnExceptionNotHandledEventHandler(this.OnExceptionNotHandled);
            _debuggerEvents.OnExceptionThrown          += new _dispDebuggerEvents_OnExceptionThrownEventHandler(this.OnExceptionThrown);
            _commandEvents.AfterExecute                += new _dispCommandEvents_AfterExecuteEventHandler(this.AfterExecute);
            _commandEvents.BeforeExecute               += new _dispCommandEvents_BeforeExecuteEventHandler(this.BeforeExecute);
            _buildEvents.OnBuildBegin                  += new _dispBuildEvents_OnBuildBeginEventHandler(this.OnBuildBegin);
            _buildEvents.OnBuildDone                   += new _dispBuildEvents_OnBuildDoneEventHandler(this.OnBuildDone);
            _buildEvents.OnBuildProjConfigBegin        += new _dispBuildEvents_OnBuildProjConfigBeginEventHandler(this.OnBuildProjConfigBegin);
            _buildEvents.OnBuildProjConfigDone         += new _dispBuildEvents_OnBuildProjConfigDoneEventHandler(this.OnBuildProjConfigDone);
            _miscFilesEvents.ItemAdded                 += new _dispProjectItemsEvents_ItemAddedEventHandler(this.MiscFilesEvents_ItemAdded);
            _miscFilesEvents.ItemRemoved               += new _dispProjectItemsEvents_ItemRemovedEventHandler(this.MiscFilesEvents_ItemRemoved);
            _miscFilesEvents.ItemRenamed               += new _dispProjectItemsEvents_ItemRenamedEventHandler(this.MiscFilesEvents_ItemRenamed);
            _solutionItemsEvents.ItemAdded             += new _dispProjectItemsEvents_ItemAddedEventHandler(this.SolutionItemsEvents_ItemAdded);
            _solutionItemsEvents.ItemRemoved           += new _dispProjectItemsEvents_ItemRemovedEventHandler(this.SolutionItemsEvents_ItemRemoved);
            _solutionItemsEvents.ItemRenamed           += new _dispProjectItemsEvents_ItemRenamedEventHandler(this.SolutionItemsEvents_ItemRenamed);
            _globalProjectItemsEvents.ItemAdded        += new _dispProjectItemsEvents_ItemAddedEventHandler(GlobalProjectItemsEvents_ItemAdded);
            _globalProjectItemsEvents.ItemRemoved      += new _dispProjectItemsEvents_ItemRemovedEventHandler(GlobalProjectItemsEvents_ItemRemoved);
            _globalProjectItemsEvents.ItemRenamed      += new _dispProjectItemsEvents_ItemRenamedEventHandler(GlobalProjectItemsEvents_ItemRenamed);
            _globalProjectsEvents.ItemAdded            += new _dispProjectsEvents_ItemAddedEventHandler(GlobalProjectsEvents_ItemAdded);
            _globalProjectsEvents.ItemRemoved          += new _dispProjectsEvents_ItemRemovedEventHandler(GlobalProjectsEvents_ItemRemoved);
            _globalProjectsEvents.ItemRenamed          += new _dispProjectsEvents_ItemRenamedEventHandler(GlobalProjectsEvents_ItemRenamed);
            _textDocumentKeyPressEvents.AfterKeyPress  += new _dispTextDocumentKeyPressEvents_AfterKeyPressEventHandler(AfterKeyPress);
            _textDocumentKeyPressEvents.BeforeKeyPress += new _dispTextDocumentKeyPressEvents_BeforeKeyPressEventHandler(BeforeKeyPress);
            _codeModelEvents.ElementAdded              += new _dispCodeModelEvents_ElementAddedEventHandler(ElementAdded);
            _codeModelEvents.ElementChanged            += new _dispCodeModelEvents_ElementChangedEventHandler(ElementChanged);
            _codeModelEvents.ElementDeleted            += new _dispCodeModelEvents_ElementDeletedEventHandler(ElementDeleted);
            _windowVisibilityEvents.WindowHiding       += new _dispWindowVisibilityEvents_WindowHidingEventHandler(WindowHiding);
            _windowVisibilityEvents.WindowShowing      += new _dispWindowVisibilityEvents_WindowShowingEventHandler(WindowShowing);
            _debuggerExpressionEvaluationEvents.OnExpressionEvaluation += new _dispDebuggerExpressionEvaluationEvents_OnExpressionEvaluationEventHandler(OnExpressionEvaluation);
            _debuggerProcessEvents.OnProcessStateChanged += new _dispDebuggerProcessEvents_OnProcessStateChangedEventHandler(OnProcessStateChanged);
            _publishEvents.OnPublishBegin += new _dispPublishEvents_OnPublishBeginEventHandler(OnPublishBegin);
            _publishEvents.OnPublishDone  += new _dispPublishEvents_OnPublishDoneEventHandler(OnPublishDone);
        }