Back to OIM Explorer

Microsoft.PowerShell.Commands.Utility/Microsoft.PowerShell.Commands/OutWindowProxy.cs

Decompiler Source FileMicrosoft.PowerShell.Commands.Utility.OutWindowProxyDecompiled Source

10 extracted method/event/call references in OutWindowProxy.

Source: F:\Claude\.tmp\oim-decompiled-full\0658_One_Identity_Manager_Isolate_PowerShell_runtimes_unix_lib_net9.0_Microsoft.PowerShell.Commands.Utility.dll\Microsoft.PowerShell.Commands\OutWindowProxy.cs

Source size: 6.271 characters

Interpretation

  • Decompiled source file. Use method/event registrations and call-site extraction to connect back to DialogMethod, QBMEvent, and API layers.

Relations

  • CallMethod: AddColumns at line 55
  • CallMethod: AddItem at line 91
  • CallMethod: AddItem at line 101
  • CallMethod: AddItem at line 121
  • CallMethod: AddItem at line 132
  • CallMethod: StartWindow at line 140
  • CallMethod: CloseWindow at line 169
  • CallMethod: GetWindowClosedStatus at line 176
  • CallMethod: GetLastException at line 181
  • CallMethod: SelectedItems at line 186

Typed Edges

  • No typed edges extracted for this source.

References

  • No direct source references extracted.

Referenced By

  • No direct source references extracted.

Complete Source

C#189 lines
1using System;2using System.Collections.Generic;3using System.IO;4using System.Management.Automation;5using System.Management.Automation.Internal;6using System.Reflection;7using System.Threading;8using Microsoft.PowerShell.Commands.Internal.Format;910namespace Microsoft.PowerShell.Commands;1112internal class OutWindowProxy : IDisposable13{14	private const string OutGridViewWindowClassName = "Microsoft.Management.UI.Internal.OutGridViewWindow";1516	private const string OriginalTypePropertyName = "OriginalType";1718	internal const string OriginalObjectPropertyName = "OutGridViewOriginalObject";1920	private const string ToStringValuePropertyName = "ToStringValue";2122	private const string IndexPropertyName = "IndexValue";2324	private int _index;2526	private HeaderInfo _headerInfo;2728	private bool _isWindowStarted;2930	private readonly string _title;3132	private readonly OutputModeOption _outputMode;3334	private AutoResetEvent _closedEvent;3536	private readonly OutGridViewCommand _parentCmdlet;3738	private readonly GraphicalHostReflectionWrapper _graphicalHostReflectionWrapper;3940	internal OutWindowProxy(string title, OutputModeOption outPutMode, OutGridViewCommand parentCmdlet)41	{42		_title = title;43		_outputMode = outPutMode;44		_parentCmdlet = parentCmdlet;45		_graphicalHostReflectionWrapper = GraphicalHostReflectionWrapper.GetGraphicalHostReflectionWrapper(parentCmdlet, "Microsoft.Management.UI.Internal.OutGridViewWindow");46	}4748	internal void AddColumns(string[] propertyNames, string[] displayNames, Type[] types)49	{50		ArgumentNullException.ThrowIfNull(propertyNames, "propertyNames");51		ArgumentNullException.ThrowIfNull(displayNames, "displayNames");52		ArgumentNullException.ThrowIfNull(types, "types");53		try54		{55			_graphicalHostReflectionWrapper.CallMethod("AddColumns", propertyNames, displayNames, types);56		}57		catch (TargetInvocationException ex)58		{59			if (ex.InnerException is FileNotFoundException ex2 && ex2.FileName.Contains("System.Core"))60			{61				_parentCmdlet.ThrowTerminatingError(new ErrorRecord(new InvalidOperationException(StringUtil.Format(FormatAndOut_out_gridview.RestartPowerShell, _parentCmdlet.CommandInfo.Name), ex.InnerException), "ErrorLoadingAssembly", ErrorCategory.ObjectNotFound, null));62				return;63			}64			throw;65		}66	}6768	internal void AddColumnsAndItem(PSObject liveObject, TableView tableView)69	{70		_headerInfo = tableView.GenerateHeaderInfo(liveObject, _parentCmdlet);71		AddColumnsAndItemEnd(liveObject);72	}7374	internal void AddColumnsAndItem(PSObject liveObject, TableView tableView, TableControlBody tableBody)75	{76		_headerInfo = tableView.GenerateHeaderInfo(liveObject, tableBody, _parentCmdlet);77		AddColumnsAndItemEnd(liveObject);78	}7980	internal void AddColumnsAndItem(PSObject liveObject)81	{82		_headerInfo = new HeaderInfo();83		_headerInfo.AddColumn(new ScalarTypeColumnInfo(liveObject.BaseObject.GetType()));84		AddColumnsAndItemEnd(liveObject);85	}8687	private void AddColumnsAndItemEnd(PSObject liveObject)88	{89		PSObject pSObject = _headerInfo.AddColumnsToWindow(this, liveObject);90		AddExtraProperties(pSObject, liveObject);91		_graphicalHostReflectionWrapper.CallMethod("AddItem", pSObject);92	}9394	internal void AddHeteroViewColumnsAndItem(PSObject liveObject)95	{96		_headerInfo = new HeaderInfo();97		_headerInfo.AddColumn(new IndexColumnInfo("IndexValue", StringUtil.Format(FormatAndOut_out_gridview.IndexColumnName), _index));98		_headerInfo.AddColumn(new ToStringColumnInfo("ToStringValue", StringUtil.Format(FormatAndOut_out_gridview.ValueColumnName), _parentCmdlet));99		_headerInfo.AddColumn(new TypeNameColumnInfo("OriginalType", StringUtil.Format(FormatAndOut_out_gridview.TypeColumnName)));100		PSObject pSObject = _headerInfo.AddColumnsToWindow(this, liveObject);101		_graphicalHostReflectionWrapper.CallMethod("AddItem", pSObject);102	}103104	private void AddExtraProperties(PSObject staleObject, PSObject liveObject)105	{106		staleObject.Properties.Add(new PSNoteProperty("IndexValue", _index++));107		staleObject.Properties.Add(new PSNoteProperty("OriginalType", liveObject.BaseObject.GetType().FullName));108		staleObject.Properties.Add(new PSNoteProperty("OutGridViewOriginalObject", liveObject));109		staleObject.Properties.Add(new PSNoteProperty("ToStringValue", _parentCmdlet.ConvertToString(liveObject)));110	}111112	internal void AddItem(PSObject livePSObject)113	{114		ArgumentNullException.ThrowIfNull(livePSObject, "livePSObject");115		if (_headerInfo == null)116		{117			throw new InvalidOperationException();118		}119		PSObject pSObject = _headerInfo.CreateStalePSObject(livePSObject);120		AddExtraProperties(pSObject, livePSObject);121		_graphicalHostReflectionWrapper.CallMethod("AddItem", pSObject);122	}123124	internal void AddHeteroViewItem(PSObject livePSObject)125	{126		ArgumentNullException.ThrowIfNull(livePSObject, "livePSObject");127		if (_headerInfo == null)128		{129			throw new InvalidOperationException();130		}131		PSObject pSObject = _headerInfo.CreateStalePSObject(livePSObject);132		_graphicalHostReflectionWrapper.CallMethod("AddItem", pSObject);133	}134135	internal void ShowWindow()136	{137		if (!_isWindowStarted)138		{139			_closedEvent = new AutoResetEvent(initialState: false);140			_graphicalHostReflectionWrapper.CallMethod("StartWindow", _title, _outputMode.ToString(), _closedEvent);141			_isWindowStarted = true;142		}143	}144145	internal void BlockUntilClosed()146	{147		_closedEvent?.WaitOne();148	}149150	private void Dispose(bool isDisposing)151	{152		if (isDisposing && _closedEvent != null)153		{154			_closedEvent.Dispose();155			_closedEvent = null;156		}157	}158159	public void Dispose()160	{161		Dispose(isDisposing: true);162		GC.SuppressFinalize(this);163	}164165	internal void CloseWindow()166	{167		if (_isWindowStarted)168		{169			_graphicalHostReflectionWrapper.CallMethod("CloseWindow");170			_isWindowStarted = false;171		}172	}173174	internal bool IsWindowClosed()175	{176		return (bool)_graphicalHostReflectionWrapper.CallMethod("GetWindowClosedStatus");177	}178179	internal Exception GetLastException()180	{181		return (Exception)_graphicalHostReflectionWrapper.CallMethod("GetLastException");182	}183184	internal List<PSObject> GetSelectedItems()185	{186		return (List<PSObject>)_graphicalHostReflectionWrapper.CallMethod("SelectedItems");187	}188}189