// MarkupTitleView.cpp
//
// (c)1998-2025 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 TOOLKIT PRO 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
//
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ChartBrowser.h"
#include "MarkupTitleView.h"
// CMarkupTitleView
IMPLEMENT_DYNCREATE(CMarkupTitleView, CBaseView)
CMarkupTitleView::CMarkupTitleView()
: CBaseView(CMarkupTitleView::IDD)
{
m_strCaption = _T("Markup Titles");
m_pTitle = NULL;
m_nDock = -1;
m_nAlignment = -1;
}
CMarkupTitleView::~CMarkupTitleView()
{
}
void CMarkupTitleView::DoDataExchange(CDataExchange* pDX)
{
CBaseView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CHARTCONTROL, m_wndChartControl);
DDX_CBIndex(pDX, IDC_COMBO_DOCK, m_nDock);
DDX_CBIndex(pDX, IDC_COMBO_ALIGNMENT, m_nAlignment);
DDX_Text(pDX, IDC_EDIT_TEXT, m_strText);
}
BEGIN_MESSAGE_MAP(CMarkupTitleView, CBaseView)
ON_NOTIFY(NM_CLICK, IDC_CHARTCONTROL, OnChartClick)
ON_CBN_SELCHANGE(IDC_COMBO_DOCK, OnCbnSelchangeComboDock)
ON_CBN_SELCHANGE(IDC_COMBO_ALIGNMENT, OnCbnSelchangeComboAlignment)
ON_EN_CHANGE(IDC_EDIT_TEXT, OnEditChangedText)
END_MESSAGE_MAP()
// CMarkupTitleView diagnostics
#ifdef _DEBUG
void CMarkupTitleView::AssertValid() const
{
CBaseView::AssertValid();
}
# ifndef _WIN32_WCE
void CMarkupTitleView::Dump(CDumpContext& dc) const
{
CBaseView::Dump(dc);
}
# endif
#endif //_DEBUG
// CMarkupTitleView message handlers
void CMarkupTitleView::OnInitialUpdate()
{
CBaseView::OnInitialUpdate();
// SetResize(IDC_EDIT_TEXT, XTP_ANCHOR_TOPLEFT, XTP_ANCHOR_TOPRIGHT);
CreateChart();
SetTitle(0);
}
void CMarkupTitleView::CreateChart()
{
CXTPChartContent* pContent = m_wndChartControl.GetContent();
pContent->EnableMarkup();
pContent->GetLegend()->SetVisible(FALSE);
CXTPChartTitle* pTitle = pContent->GetTitles()->Add(new CXTPChartTitle());
pTitle->SetText(_T("Chart Control supports Titles "));
pTitle = pContent->GetTitles()->Add(new CXTPChartTitle());
pTitle->SetText(_T("Left Title"));
pTitle->SetDocking(xtpChartDockLeft);
pTitle = pContent->GetTitles()->Add(new CXTPChartTitle());
pTitle->SetText(_T("Right Title"));
pTitle->SetDocking(xtpChartDockRight);
pTitle = pContent->GetTitles()->Add(new CXTPChartTitle());
pTitle->SetText(_T("Click Title to set its propeties"));
pTitle->SetDocking(xtpChartDockBottom);
CXTPChartSeriesCollection* pCollection = pContent->GetSeries();
pCollection->RemoveAll();
if (pCollection)
{
CXTPChartSeries* pSeries1 = pCollection->Add(new CXTPChartSeries());
if (pSeries1)
{
pSeries1->SetName(_T("Serise"));
CXTPChartSeriesPointCollection* pPoints = pSeries1->GetPoints();
if (pPoints)
{
CXTPChartSeriesPoint* pPoint = NULL;
for (int i = 0; i < 30; i++)
{
pPoint = pPoints->Add(new CXTPChartSeriesPoint(i, rand() % 30 + 30));
}
}
pSeries1->SetStyle(new CXTPChartAreaSeriesStyle());
pSeries1->GetStyle()->GetLabel()->SetVisible(FALSE);
}
CXTPChartDiagram2D* pDiagram = DYNAMIC_DOWNCAST(CXTPChartDiagram2D,
pContent->GetPanels()->GetAt(0));
pDiagram->GetAxisX()->GetLabel()->SetVisible(FALSE);
pDiagram->GetAxisY()->GetLabel()->SetVisible(FALSE);
pDiagram->GetAxisX()->GetRange()->SetSideMargins(FALSE);
}
}
void CMarkupTitleView::SetTitle(CXTPChartTitle* pTitle)
{
m_pTitle = pTitle;
if (m_pTitle)
{
GetDlgItem(IDC_EDIT_TEXT)->EnableWindow(TRUE);
GetDlgItem(IDC_COMBO_ALIGNMENT)->EnableWindow(TRUE);
GetDlgItem(IDC_COMBO_DOCK)->EnableWindow(TRUE);
m_nAlignment = m_pTitle->GetAlignment();
m_nDock = m_pTitle->GetDocking();
m_strText = m_pTitle->GetText();
UpdateData(FALSE);
}
else
{
GetDlgItem(IDC_EDIT_TEXT)->EnableWindow(FALSE);
GetDlgItem(IDC_COMBO_ALIGNMENT)->EnableWindow(FALSE);
GetDlgItem(IDC_COMBO_DOCK)->EnableWindow(FALSE);
}
}
void CMarkupTitleView::OnChartClick(NMHDR* /*pNMHDR*/, LRESULT* /*pResult*/)
{
CPoint pt;
GetCursorPos(&pt);
m_wndChartControl.ScreenToClient(&pt);
CXTPChartElement* pElement = m_wndChartControl.HitTest(pt);
if (DYNAMIC_DOWNCAST(CXTPChartTitle, pElement))
{
CXTPChartTitle* pTitle = (CXTPChartTitle*)pElement;
SetTitle(pTitle);
}
else
{
SetTitle(NULL);
}
}
void CMarkupTitleView::OnCbnSelchangeComboDock()
{
UpdateData();
if (m_pTitle)
{
m_pTitle->SetDocking((XTPChartDocking)m_nDock);
}
}
void CMarkupTitleView::OnCbnSelchangeComboAlignment()
{
UpdateData();
if (m_pTitle)
{
m_pTitle->SetAlignment((XTPChartStringAlignment)m_nAlignment);
}
}
void CMarkupTitleView::OnEditChangedText()
{
UpdateData();
if (m_pTitle)
{
m_pTitle->SetText(m_strText);
}
}