// Copyright © 2016, Oracle and/or its affiliates. All rights reserved.
//
// MySQL for Visual Studio is licensed under the terms of the GPLv2
// <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>, like most
// MySQL Connectors. There are special exceptions to the terms and
// conditions of the GPLv2 as it is applied to this software, see the
// FLOSS License Exception
// <http://www.mysql.com/about/legal/licensing/foss-exception.html>.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 2 of the License.
//
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA

using System.Windows.Forms;
using System.Runtime.InteropServices;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using Microsoft.VisualStudio;

namespace MySql.Data.VisualStudio.Editors
{
  /// <summary>
  /// Class that represents the pane holder for the MySql Output window
  /// </summary>
  /// <seealso cref="Microsoft.VisualStudio.Shell.ToolWindowPane" />
  /// <seealso cref="Microsoft.VisualStudio.Shell.Interop.IVsWindowFrameNotify2" />
  [Guid("2e0f7922-74d0-4010-826f-7a1fdf84e217")]
  public class MySqlOutputWindowPane : ToolWindowPane, IVsWindowFrameNotify2
  {
    /// <summary>
    /// the MySQLOutputPanel user control object
    /// </summary>
    private readonly MySqlOutputPanel _mySqlOutputPanelControl;

    /// <summary>
    /// Gets or sets the window handler.
    /// </summary>
    /// <value>
    /// The window handler.
    /// </value>
    public ToolWindowPane WindowHandler { get; set; }

    /// <summary>
    /// Initializes a new instance of the <see cref="MySqlOutputWindowPane"/> class.
    /// </summary>
    public MySqlOutputWindowPane() : base(null)
    {
      _mySqlOutputPanelControl = new MySqlOutputPanel();
    }

    /// <summary>
    /// Gets the window associated with this window pane.
    /// </summary>
    override public IWin32Window Window
    {
      get { return (IWin32Window)_mySqlOutputPanelControl; }
    }

    /// <summary>
    /// Gets my SQL output panel.
    /// </summary>
    /// <value>
    /// My SQL output panel.
    /// </value>
    public MySqlOutputPanel MySqlOutputPanel
    {
      get { return _mySqlOutputPanelControl; }
    }

    /// <summary>
    /// Raises the Close event.
    /// </summary>
    /// <param name="pgrfSaveOptions">[in, out] Specifies options for saving window content. Values are taken from the <see cref="T:Microsoft.VisualStudio.Shell.Interop.__FRAMECLOSE" /> enumeration.</param>
    /// <returns>
    /// If the method succeeds, it returns <see cref="F:Microsoft.VisualStudio.VSConstants.S_OK" />. If it fails, it returns an error code.
    /// </returns>
    public int OnClose(ref uint pgrfSaveOptions)
    {
      return VSConstants.S_OK;
    }
  }
}
