internal SwPropertyManagerPage(ISwApplication app, IPageSpec pageSpec, IServiceProvider svcProvider, SwPropertyManagerPageHandler handler, CreateDynamicControlsDelegate createDynCtrlHandler) { m_App = app; m_IsDisposed = false; m_SvcProvider = svcProvider; m_Logger = m_SvcProvider.GetService <IXLogger>(); m_IconsConv = m_SvcProvider.GetService <IIconsCreator>(); //TODO: validate that handler is COM visible Handler = handler; Handler.Closed += OnClosed; Handler.Closing += OnClosing; m_PmpBuilder = new PropertyManagerPageBuilder(app, m_IconsConv, Handler, pageSpec, m_Logger); m_ContextProvider = new BaseContextProvider(); m_Page = m_PmpBuilder.CreatePage <TModel>(createDynCtrlHandler, m_ContextProvider); var ctrls = new List <IPropertyManagerPageElementEx>(); foreach (var binding in m_Page.Binding.Bindings) { binding.Changed += OnBindingValueChanged; var ctrl = binding.Control; if (ctrl is IPropertyManagerPageElementEx) { ctrls.Add((IPropertyManagerPageElementEx)ctrl); } else { m_Logger.Log($"Unrecognized control type: {ctrl?.GetType().FullName}", XCad.Base.Enums.LoggerMessageSeverity_e.Error); } } Controls = ctrls.ToArray(); }
/// <summary>Creates instance of property manager page</summary> /// <param name="app">Pointer to session of SOLIDWORKS where the property manager page to be created</param> internal SwPropertyManagerPage(ISwApplication app, IServiceProvider svcProvider, SwPropertyManagerPageHandler handler, CreateDynamicControlsDelegate createDynCtrlHandler) : this(app, null, svcProvider, handler, createDynCtrlHandler) { }