/// <summary> /// Collect diagnostic information /// </summary> /// <param name="comAddin">hosting addin or null</param> private void Setup(COMAddinBase comAddin) { if (null != comAddin) { OwnerAssembly = comAddin.GetType().Assembly; Add(new DiagnosticItem("---", "Runtime")); Add(new DiagnosticItem("LoadingTimeElapsed", comAddin.LoadingTimeElapsed.ToString())); if (null != comAddin.AppInstance) { Add(new DiagnosticItem("AppInstance", comAddin.AppInstance.InstanceName)); if (comAddin.AppInstance.EntityIsAvailable("Version", SupportedEntityType.Property)) { try { object version = comAddin.AppInstance.Invoker.PropertyGet(comAddin.AppInstance, "Version"); Add(new DiagnosticItem("Version", version.ToString())); } catch { ; } } } Add(new DiagnosticItem("---", "Self")); Add(new DiagnosticItem("Title", AssemblyTitle)); Add(new DiagnosticItem("Version", AssemblyVersion)); Add(new DiagnosticItem("Description", AssemblyDescription)); Add(new DiagnosticItem("Product", AssemblyProduct)); Add(new DiagnosticItem("Copyright", AssemblyCopyright)); Add(new DiagnosticItem("Company", AssemblyCompany)); } Add(new DiagnosticItem("---", "Environment")); Add(new DiagnosticItem("Is64BitOperatingSystem", Environment.Is64BitOperatingSystem.ToString())); Add(new DiagnosticItem("Is64BitProcess", Environment.Is64BitProcess.ToString())); Add(new DiagnosticItem("OSVersion", Environment.OSVersion.ToString())); Add(new DiagnosticItem("UserInteractive", Environment.UserInteractive.ToString())); Add(new DiagnosticItem("HasShutdownStarted", Environment.HasShutdownStarted.ToString())); Add(new DiagnosticItem("---", "AppDomain")); Add(new DiagnosticItem("FriendlyName", AppDomain.CurrentDomain.FriendlyName)); Add(new DiagnosticItem("Id", AppDomain.CurrentDomain.Id.ToString())); if (null != AppDomain.CurrentDomain.ApplicationIdentity) { Add(new DiagnosticItem("ApplicationIdentity", AppDomain.CurrentDomain.ApplicationIdentity.ToString())); } Add(new DiagnosticItem("---", "Assemblies")); foreach (Assembly item in AppDomain.CurrentDomain.GetAssemblies()) { AssemblyName assName = item.GetName(); string name = assName.Name; string version = assName.Version.ToString(); Add(new DiagnosticItem(name, version)); } }
/// <summary> /// Creates an instance of the class /// </summary> internal TrayMenu(COMAddinBase addin) { _addin = addin; _contextMenu = new ContextMenuStrip(); _contextMenu.Font = new System.Drawing.Font("Arial", 8.00F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(161))); _contextMenu.Opening += ContextMenu_Opening; Items = new TrayMenuItems(this); Enabled = true; }
/// <summary> /// Creates an instance of the class /// </summary> /// <param name="comAddin">owner addin</param> public TrayMenuMonitorItemControl(COMAddinBase comAddin) { if (null == comAddin) { throw new ArgumentNullException("comAddin"); } InitializeComponent(); Addin = comAddin; ViewOptions = new TrayMenuMonitorItem.Options(EnumeratorGrid, HierarchicalGrid, HighlightTimer, OnDisableHighlight); AutoExpandCheckBox.DataBindings.Add("Checked", ViewOptions, "AutoExpandNodes", false, DataSourceUpdateMode.OnPropertyChanged); HighlightCheckBox.DataBindings.Add("Checked", ViewOptions, "HighlightNewNodes", false, DataSourceUpdateMode.OnPropertyChanged); ShowTimeColumnCheckBox.DataBindings.Add("Checked", ViewOptions, "ShowConsoleTimeColumn", false, DataSourceUpdateMode.OnPropertyChanged); ShowKindColumnCheckBox.DataBindings.Add("Checked", ViewOptions, "ShowConsoleKindColumn", false, DataSourceUpdateMode.OnPropertyChanged); HighlightNodes = new Dictionary <TreeNode, DateTime>(); ContentPanel.Controls.Remove(OverlayPanel); Controls.Add(OverlayPanel); OverlayPanel.Dock = DockStyle.Fill; CoreRadioButton.Tag = TrayMenuMonitorItem.ShowMode.Core; SettingsRadioButton.Tag = TrayMenuMonitorItem.ShowMode.Settings; ConsoleRadioButton.Tag = TrayMenuMonitorItem.ShowMode.Console; DiagnosticsRadioButton.Tag = TrayMenuMonitorItem.ShowMode.Diagnostics; ProxiesRadioButton.Tag = TrayMenuMonitorItem.ShowMode.Proxies; OptionsRadioButton.Tag = TrayMenuMonitorItem.ShowMode.Options; Messages = new SortableBindingList <DebugConsole.ConsoleMessage>(Addin.Factory.Console.MessagesInternal); ShownItems = new Dictionary <RadioButton, object>(); ShownItems.Add(CoreRadioButton, Addin.Factory); ShownItems.Add(SettingsRadioButton, Addin.Factory.Settings); ShownItems.Add(ConsoleRadioButton, Messages); ShownItems.Add(DiagnosticsRadioButton, new NetOffice.Diagnostics.SelfDiagnostics(comAddin)); ShownItems.Add(ProxiesRadioButton, comAddin.Roots); ShownItems.Add(OptionsRadioButton, ViewOptions); EnumeratorGrid.Dock = DockStyle.Fill; SingleGrid.Dock = DockStyle.Fill; HierarchicalGrid.Dock = DockStyle.Fill; OptionsGrid.Dock = DockStyle.Fill; HighlightTimer.Enabled = true; HeaderRadioButton_CheckedChanged(CoreRadioButton, EventArgs.Empty); }
/// <summary> /// Creates an instance of the class /// </summary> /// <param name="comAddin">addin base</param> public SelfDiagnostics(COMAddinBase comAddin) { Setup(comAddin); }
/// <summary> /// Analyze COMAddin custom taskpane attributes /// </summary> /// <param name="taskPanes">taskpanes you want to create</param> /// <param name="addinType">addin class type informations</param> /// <param name="addin">addin instance</param> /// <param name="callOnCreateTaskPaneInfo">callback to manipulate the process dynamicly</param> /// <param name="visibleStateChange">visible changed event handler</param> /// <param name="dockPositionStateChange">dock state changed event handler</param> public void ProceedCustomPaneAttributes(OfficeApi.Tools.CustomTaskPaneCollection taskPanes, Type addinType, COMAddinBase addin, CallOnCreateTaskPaneInfoHandler callOnCreateTaskPaneInfo, CustomTaskPane_VisibleStateChangeEventHandler visibleStateChange, CustomTaskPane_DockPositionStateChangeEventHandler dockPositionStateChange) { CustomPaneAttribute[] paneAttributes = AttributeReflector.GetCustomPaneAttributes(addinType); foreach (CustomPaneAttribute itemPane in paneAttributes) { if (null != itemPane) { TaskPaneInfo item = taskPanes.Add(itemPane.PaneType, itemPane.PaneType.Name); item.Title = itemPane.Title; item.Visible = itemPane.Visible; item.DockPosition = (OfficeApi.Enums.MsoCTPDockPosition)Enum.Parse(typeof(OfficeApi.Enums.MsoCTPDockPosition), itemPane.DockPosition.ToString()); item.DockPositionRestrict = (OfficeApi.Enums.MsoCTPDockPositionRestrict)Enum.Parse(typeof(OfficeApi.Enums.MsoCTPDockPositionRestrict), itemPane.DockPositionRestrict.ToString()); item.Width = itemPane.Width; item.Height = itemPane.Height; item.Arguments = new object[] { addin, this }; if (callOnCreateTaskPaneInfo(item)) { item.VisibleStateChange += visibleStateChange; item.DockPositionStateChange += dockPositionStateChange; } else { taskPanes.Remove(item); } } } }