/// <summary>
 /// Initializes a new instance of the <see cref="Text.TextViewModel+FontManagerController"/> class.
 /// </summary>
 /// <param name="window">Window.</param>
 /// <param name="fontFaceName">Font face name.</param>
 /// <param name="fontSize">Font size.</param>
 /// <param name="fontChangedCallback">Font changed callback.</param>
 public FontManagerController(RhinoMac.Window window, string fontFaceName, float fontSize, FontChangedEvent fontChangedCallback)
 {
     // Need the window to get the responder chain working
       _window = window;
       // Call this function when the selected font changes
       _fontChangedCallback = fontChangedCallback;
       // The close flag defaults to ture, set it to false if the
       // shared font manager panel is currently open so it will
       // be left open when this window closes otherwise the
       // font panel will close when this form does.
       if (null != MonoMac.AppKit.NSFontPanel.SharedFontPanel && MonoMac.AppKit.NSFontPanel.SharedFontPanel.IsVisible)
     _closeFontManager = false;
       // Get an instance of the font manager panel
       _fontManager = MonoMac.AppKit.NSFontManager.SharedFontManager;
       // Create an instance of the font we want to change when
       // the font manger selection changes, the font face name
       // will be extracted from this font and passed to the
       // associated view model.
       _font = MonoMac.AppKit.NSFont.FromFontName(fontFaceName, fontSize);
       // Set the font manager panel target to this object so the
       // ChangeFont() method will get called when the current font
       // selection changes
       //_fontManager.Target = this;
       //
       // Save the responder chain
       //
       _resetResponderChain = true;
       _thisNextResponder = NextResponder;
       _windowNextResponder = _window.NextResponder;
       _action = _fontManager.Action;
       //
       // Redirect the responder chain
       this.NextResponder = _window.NextResponder;
       _window.NextResponder = this;
       _fontManager.Action = new MonoMac.ObjCRuntime.Selector("changeFontAction:");
       // Set the currently selected font in the font manger panel
       _fontManager.SetSelectedFont(_font, false);
 }
 public new void Dispose()
 {
     ResetResponderChain();
       if (null != _fontManager)
     _fontManager.Dispose();
       _fontManager = null;
       base.Dispose();
 }