// ToolboxViewPane.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 "GUI_VisualStudio.h" #include "ToolboxViewPane.h" #ifdef _DEBUG # define new DEBUG_NEW #endif IMPLEMENT_DYNAMIC(CToolboxViewPane, CWnd); BEGIN_MESSAGE_MAP(CToolboxViewPane, CWnd) ON_WM_CREATE() ON_WM_SIZE() ON_WM_PAINT() ON_WM_SETFOCUS() ON_MESSAGE(WM_XTP_SETCONTROLTHEME, OnSetControlTheme) END_MESSAGE_MAP() CToolboxViewPane::CToolboxViewPane() { m_pPane = NULL; m_rcMargin = CRect(0, 0, 0, 0); } CToolboxViewPane::~CToolboxViewPane() { } int CToolboxViewPane::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CWnd::OnCreate(lpCreateStruct) == -1) { TRACE(_T("ERROR: Unable to create resource view pane.\n")); return -1; } if (!m_wndToolboxView.Create(WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, CXTPEmptyRect(), this, 0)) { TRACE(_T("ERROR: Unable to create toolbox control.\n")); return 0; } m_wndToolboxView.ModifyStyleEx(0, WS_EX_STATICEDGE); m_wndToolboxView.SetOwner(this); m_wndToolboxView.GetImageManager()->SetIcons(IDB_TOOLBOXICONS, 0, 0, CSize(16, 16)); m_wndToolboxView.SetBehaviour(xtpTaskPanelBehaviourExplorer); m_wndToolboxView.SetHotTrackStyle(xtpTaskPanelHighlightItem); m_wndToolboxView.SetSelectItemOnFocus(TRUE); m_wndToolboxView.SetSingleSelection(); m_wndToolboxView.AllowDrag(TRUE); ResetToolboxItems(); return 0; } LRESULT CToolboxViewPane::OnSetControlTheme(WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); XTPControlTheme nTheme = (XTPControlTheme)wParam; BOOL bVS2015Plus = ((nTheme == xtpControlThemeVisualStudio2015) || (nTheme == xtpControlThemeVisualStudio2017) || (nTheme == xtpControlThemeVisualStudio2019) || (nTheme == xtpControlThemeVisualStudio2022)); if (bVS2015Plus) m_rcMargin = CRect(XTP_DPI_X(1), 0, XTP_DPI_X(1), XTP_DPI_Y(1)); else m_rcMargin = CRect(0, 0, 0, 0); switch (nTheme) { case xtpControlThemeDefault: m_wndToolboxView.SetTheme(xtpTaskPanelThemeVisualStudio2003); break; case xtpControlThemeVisualStudio2005: m_wndToolboxView.SetTheme(xtpTaskPanelThemeVisualStudio2005); break; case xtpControlThemeVisualStudio2008: m_wndToolboxView.SetTheme(xtpTaskPanelThemeVisualStudio2005); break; case xtpControlThemeVisualStudio2010: m_wndToolboxView.SetTheme(xtpTaskPanelThemeVisualStudio2010); break; case xtpControlThemeVisualStudio2012Dark: m_wndToolboxView.SetTheme(xtpTaskPanelThemeVisualStudio2012Dark); break; case xtpControlThemeVisualStudio2012Light: m_wndToolboxView.SetTheme(xtpTaskPanelThemeVisualStudio2012Light); break; case xtpControlThemeVisualStudio2015: m_wndToolboxView.SetTheme(xtpTaskPanelThemeVisualStudio2015); break; case xtpControlThemeVisualStudio2017: m_wndToolboxView.SetTheme(xtpTaskPanelThemeVisualStudio2017); break; case xtpControlThemeVisualStudio2019: m_wndToolboxView.SetTheme(xtpTaskPanelThemeVisualStudio2019); break; case xtpControlThemeVisualStudio2022: m_wndToolboxView.SetTheme(xtpTaskPanelThemeVisualStudio2022); break; default: ASSERT(FALSE); break; } LoadRasterIcons(); LoadVectorIcons(); return 0; } void CToolboxViewPane::OnSize(UINT nType, int cx, int cy) { CWnd::OnSize(nType, cx, cy); int x = m_rcMargin.left; int y = m_rcMargin.top; cx -= (x + m_rcMargin.right); cy -= (y + m_rcMargin.bottom); if (::IsWindow(m_wndToolboxView)) { XTPPaintTheme nTheme = theApp.GetAppTheme(); CString strThemeSettings = theApp.GetAppThemeSettings(); BOOL bAdjust = ((nTheme == xtpControlThemeVisualStudio2015) || (nTheme == xtpControlThemeVisualStudio2017) || (nTheme == xtpControlThemeVisualStudio2019) || (nTheme == xtpControlThemeVisualStudio2022)); m_wndToolboxView.ModifyStyleEx(bAdjust ? WS_EX_STATICEDGE : 0, bAdjust ? 0 : WS_EX_STATICEDGE); m_wndToolboxView.MoveWindow(x, y, cx, cy); m_wndToolboxView.Invalidate(FALSE); } } void CToolboxViewPane::OnPaint() { CPaintDC dc(this); if (!m_rcMargin.IsRectNull()) { CXTPClientRect rClient(this); theApp.GetPaneColorSet()->DrawBorders(&dc, rClient, m_pPane); } } void CToolboxViewPane::OnSetFocus(CWnd* /*pOldWnd*/) { m_wndToolboxView.SetFocus(); } CXTPTaskPanelGroup* CToolboxViewPane::CreateToolboxGroup(UINT nID) { CXTPTaskPanelGroup* pFolder = m_wndToolboxView.AddGroup(nID); ASSERT_VALID(pFolder); CXTPTaskPanelGroupItem* pPointerItem = pFolder->AddLinkItem(ID_TOOLBOXITEM_POINTER, 0); ASSERT_VALID(pPointerItem); pPointerItem->SetItemSelected(TRUE); pPointerItem->AllowDrag(FALSE); pPointerItem->AllowDrop(FALSE); return pFolder; } void CToolboxViewPane::DoPropExchange(CXTPPropExchange* pPX) { m_wndToolboxView.GetGroups()->DoPropExchange(pPX); } void CToolboxViewPane::ResetToolboxItems() { m_wndToolboxView.GetGroups()->Clear(FALSE); CXTPTaskPanelGroup* pFolderGeneral = CreateToolboxGroup(ID_TOOLBOXFOLDER_GENERAL); pFolderGeneral->SetExpanded(TRUE); CXTPTaskPanelGroup* pFolderData = CreateToolboxGroup(ID_TOOLBOXFOLDER_DATA); pFolderData->AddLinkItem(ID_TOOLBOXITEM_DATASET, 26); pFolderData->AddLinkItem(ID_TOOLBOXITEM_OLEDBDATAADAPTER, 27); pFolderData->AddLinkItem(ID_TOOLBOXITEM_OLEDBCONNECTION, 28); pFolderData->AddLinkItem(ID_TOOLBOXITEM_OLEDBCOMMAND, 29); pFolderData->AddLinkItem(ID_TOOLBOXITEM_SQLDATAADAPTER, 30); pFolderData->AddLinkItem(ID_TOOLBOXITEM_SQLCONNECTION, 31); pFolderData->AddLinkItem(ID_TOOLBOXITEM_SQLCOMMAND, 32); pFolderData->AddLinkItem(ID_TOOLBOXITEM_DATAVIEW, 33); // pFolderData->SetExpanded(FALSE); CXTPTaskPanelGroup* pFolderComponents = CreateToolboxGroup(ID_TOOLBOXFOLDER_COMPONENTS); pFolderComponents->AddLinkItem(ID_TOOLBOXITEM_FILESYSTEMWATCHER, 34); pFolderComponents->AddLinkItem(ID_TOOLBOXITEM_EVENTLOG, 35); pFolderComponents->AddLinkItem(ID_TOOLBOXITEM_DIRECTORYENTRY, 36); pFolderComponents->AddLinkItem(ID_TOOLBOXITEM_DIRECTORYSEARCHER, 37); pFolderComponents->AddLinkItem(ID_TOOLBOXITEM_MESSAGEQUEUE, 38); pFolderComponents->AddLinkItem(ID_TOOLBOXITEM_PERFORMANCECOUNTER, 39); pFolderComponents->AddLinkItem(ID_TOOLBOXITEM_PROCESS, 40); pFolderComponents->AddLinkItem(ID_TOOLBOXITEM_SERVICECONTROLLER, 41); pFolderComponents->AddLinkItem(ID_TOOLBOXITEM_TIMER, 42); // pFolderComponents->SetExpanded(FALSE); CXTPTaskPanelGroup* pFolderForms = CreateToolboxGroup(ID_TOOLBOXFOLDER_FORMS); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_BUTTON, 1); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_CHECK_BOX, 2); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_EDIT_CONTROL, 3); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_COMBO_BOX, 4); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_LIST_BOX, 5); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_GROUP_BOX, 6); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_RADIO_BUTTON, 7); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_STATIC_TEXT, 8); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_PICTURE_CONTROL, 9); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_HORIZONTAL_SCROLL_BAR, 10); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_VERTICAL_SCROLL_BAR, 11); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_SLIDER_CONTROL, 12); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_SPIN_CONTROL, 13); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_PROGRESS_CONTROL, 14); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_HOT_KEY, 15); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_LIST_CONTROL, 16); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_TREE_CONTROL, 17); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_TAB_CONTROL, 18); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_ANIMATION_CONTROL, 19); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_RICH_EDIT_CONTROL, 20); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_DATE_TIME_PICKER, 21); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_MONTH_CALENDAR_CONTROL, 22); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_IP_ADDRESS_CONTROL, 23); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_EXTENDED_COMBO_BOX, 24); pFolderForms->AddLinkItem(ID_TOOLBOXITEM_CUSTOM_CONTROL, 25); // pFolderForms->SetExpanded(FALSE); } void CToolboxViewPane::LoadRasterIcons() { CString strThemeSettings = theApp.GetAppThemeSettings(); UINT paneIcons = IDB_TOOLBOXICONS; if (0 < strThemeSettings.Find(_T("BLUE"))) { paneIcons = IDB_TOOLBOXICONS_LIGHT; } else if (0 < strThemeSettings.Find(_T("BLUEEXTRA"))) { paneIcons = IDB_TOOLBOXICONS_LIGHT; } else if (0 < strThemeSettings.Find(_T("DARK"))) { paneIcons = IDB_TOOLBOXICONS_DARK; } else if (0 < strThemeSettings.Find(_T("LIGHT"))) { paneIcons = IDB_TOOLBOXICONS_LIGHT; } m_wndToolboxView.GetImageManager()->SetIcons(paneIcons, 0, 0, CSize(16, 16)); } void CToolboxViewPane::LoadVectorIcons() { // }