// XTPSyntaxEditToolTipCtrl.h: interface for the CXTPSyntaxEditToolTipCtrl class.
//
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME SYNTAX EDIT LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////

//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPSYNTAXEDITTOOLTIPCTRL_H__)
#define __XTPSYNTAXEDITTOOLTIPCTRL_H__
//}}AFX_CODEJOCK_PRIVATE

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

class CXTPSyntaxEditCtrl;
// Internal class

//===========================================================================
// Summary:
//      The CXTPSyntaxEditToolTipCtrl class encapsulates the functionality of
//      a "tip control," a small pop-up window that displays a
//      single line of text describing the hidden text when hovering an
//      item on the report area.
//
//      CXTPSyntaxEditToolTipCtrl provides the functionality to control the
//      the tip text, the size of the tip window itself, and the text
//      font of the tip.
//
//      This class is used by the report control internally.
//
// See also:
//      CXTPSyntaxEditCtrl
//===========================================================================
class _XTP_EXT_CLASS CXTPSyntaxEditToolTipCtrl : public CWnd
{
// Construction
public:

	//-----------------------------------------------------------------------
	// Summary:
	//      Constructs a CXTPSyntaxEditToolTipCtrl object.
	// Remarks:
	//      You construct a object object in two steps. First, call the constructor
	//      object and then call Create, which initializes the window and attaches
	//      it to the parent window.
	// Example:
	//      // Declare a local CXTPSyntaxEditToolTipCtrl object.
	//      CXTPSyntaxEditToolTipCtrl wndTip;
	//
	//      // Declare a dynamic CXTPSyntaxEditToolTipCtrl object.
	//      CXTPSyntaxEditToolTipCtrl* pTipWnd = new CXTPSyntaxEditToolTipCtrl;
	//
	// See also:
	//      Create, Activate
	//-----------------------------------------------------------------------
	CXTPSyntaxEditToolTipCtrl();

	//-----------------------------------------------------------------------
	// Summary:
	//      Destroys a CXTPSyntaxEditToolTipCtrl object, handles cleanup and de-allocation
	//-----------------------------------------------------------------------
	virtual ~CXTPSyntaxEditToolTipCtrl();

	//-----------------------------------------------------------------------
	// Summary:
	//      Creates smart edit tip window.
	// Parameters:
	//      pParentWnd : [in] Parent report control window.
	// Returns:
	//      TRUE if tip window created successfully, FALSE otherwise.
	// See also:
	//      CXTPSyntaxEditCtrl::ShowCollapsedToolTip
	//-----------------------------------------------------------------------
	virtual BOOL Create(CXTPSyntaxEditCtrl* pParentWnd);

	//-----------------------------------------------------------------------
	// Summary:
	//      Sets time to display the tip.
	// Parameters:
	//      nDelay : [in] Display delay value for ToolTip.
	// See also:
	//      int GetDelay();
	//-----------------------------------------------------------------------
	void SetDelay(int nDelay);

	//-----------------------------------------------------------------------
	// Summary:
	//      Returns the delay time.
	// Returns:
	//      Integer value of current delay.
	// See also:
	//      void SetDelay(int nDelay);
	//-----------------------------------------------------------------------
	int GetDelay() const;

	//-----------------------------------------------------------------------
	// Summary:
	//      Hides the ToolTip Window.
	//-----------------------------------------------------------------------
	void Hide();

	//-----------------------------------------------------------------------
	// Summary:
	//      Activates the tooltip window.
	// Parameters:
	//      strText : [in] Text to be shown in ToolTip window.
	//-----------------------------------------------------------------------
	void Activate(const CString& strText);

	//-----------------------------------------------------------------------
	// Summary:
	//      Sets coordinates of the tooltip hover rectangle.
	// Parameters:
	//      rc : [in] New tooltip hover rectangle in parent window coordinates.
	// Remarks:
	//      Should be called before activating tooltip window.
	// See also:
	//      GetHoverRect()
	//-----------------------------------------------------------------------
	void SetHoverRect(CRect rc);

	//{{AFX_VIRTUAL(CXTPSyntaxEditToolTipCtrl)
	//}}AFX_VIRTUAL

protected:
	int m_nDelayTime; // Delay before showing the tooltip in milliseconds.
	CXTPSyntaxEditCtrl* m_pParentWnd; // Pointer to the parent report window.
	CRect m_rcHover; // Hover window coordinates.
	CString m_strToolTipText; // ToolTip text to display.

	//{{AFX_MSG(CXTPSyntaxEditToolTipCtrl)

	afx_msg LRESULT OnNcHitTest(CPoint point);
	afx_msg void OnPaint();
	afx_msg void OnTimer(UINT_PTR nIDEvent);

	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()

private:
	void ReCalcToolTipRect();
	BOOL RegisterWindowClass(HINSTANCE hInstance = NULL);
};

/////////////////////////////////////////////////////////////////////////////

AFX_INLINE void CXTPSyntaxEditToolTipCtrl::SetDelay(int nDelay) {
	m_nDelayTime = nDelay;
}
AFX_INLINE int CXTPSyntaxEditToolTipCtrl::GetDelay() const {
	return m_nDelayTime;
}
AFX_INLINE void CXTPSyntaxEditToolTipCtrl::SetHoverRect(CRect rc) {
	m_rcHover = rc;
}

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(__XTPSYNTAXEDITTOOLTIPCTRL_H__)