void CPropTreeList::OnLButtonDblClk(UINT, CPoint point) { ASSERT(m_pProp!=NULL); m_pProp->SendNotify(NM_DBLCLK); CPropTreeItem* pItem; CPropTreeItem* pOldFocus; if ((pItem = m_pProp->FindItem(point))!=NULL && pItem->GetChild()) { switch (m_pProp->HitTest(point)) { case HTCOLUMN: break; case HTCHECKBOX: pItem->Check(!pItem->IsChecked()); m_pProp->SendNotify(PTN_CHECKCLICK, pItem); Invalidate(); break; case HTATTRIBUTE: if (!pItem->IsRootLevel()) break; // pass thru to default default: pOldFocus = m_pProp->GetFocusedItem(); m_pProp->SelectItems(NULL, FALSE); m_pProp->SetFocusedItem(pItem); pItem->Select(); if (pItem!=pOldFocus) m_pProp->SendNotify(PTN_SELCHANGE, pItem); // pass thru to HTEXPAND case HTEXPAND: if (!m_pProp->SendNotify(PTN_ITEMEXPANDING, pItem)) { pItem->Expand(!pItem->IsExpanded()); UpdateResize(); Invalidate(); UpdateWindow(); CheckVisibleFocus(); } break; } } }
void PropertyTree::OnLButtonDblClk(UINT, CPoint point) { SendNotify(NM_DBLCLK); PropertyTreeItem* pItem; if ( (pItem = FindItem(point))!=NULL ) { if ( pItem->IsRootLevel() ) { if (pItem->GetChild() && !SendNotify(PTN_ITEMEXPANDING, pItem)) { pItem->Expand(!pItem->IsExpanded()); UpdateScrollbar(); Invalidate(); UpdateWindow(); CheckVisibleFocus(); } return; } PropertyTreeItem* pOldFocus = GetFocusedItem(); SelectItems(NULL, FALSE); SetFocusedItem(pItem); pItem->Select(); Invalidate(); if ( !pItem->IsRootLevel() && pItem != pOldFocus ) SendNotify(PTN_SELCHANGE, pItem); } }
void COptionTreeList::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { // Declare variables COptionTreeItem* otiItem; CRect rcClient; // Get client rectangle GetClientRect(rcClient); // Validate option if (m_otOption == NULL) { CWnd::OnKeyDown(nChar, nRepCnt, nFlags); return; } // See if disabled if (m_otOption->IsDisableInput() || !m_otOption->IsWindowEnabled()) { CWnd::OnKeyDown(nChar, nRepCnt, nFlags); return; } switch (nChar) { case VK_TAB: // -- Shift if (GetKeyState(VK_SHIFT) < 0) { // -- -- Focus next otiItem = m_otOption->GetFocusedItem(); if (otiItem != NULL && !otiItem->IsRootLevel()) { m_otOption->FocusPrev(); } // -- -- Activate otiItem = m_otOption->GetFocusedItem(); if (otiItem != NULL && !otiItem->IsRootLevel() && !otiItem->IsReadOnly()) { otiItem->Activate(); } Invalidate(); UpdateWindow(); } // -- No shift else { // -- -- Focus next otiItem = m_otOption->GetFocusedItem(); if (otiItem != NULL && !otiItem->IsRootLevel()) { m_otOption->FocusNext(); } // -- -- Activate otiItem = m_otOption->GetFocusedItem(); if (otiItem != NULL && !otiItem->IsRootLevel() && !otiItem->IsReadOnly()) { otiItem->Activate(); } Invalidate(); UpdateWindow(); } break; case VK_RETURN: // -- Activate otiItem = m_otOption->GetFocusedItem(); if (otiItem != NULL && !otiItem->IsRootLevel() && !otiItem->IsReadOnly()) { otiItem->Activate(); } break; case VK_HOME: // -- Focus on first item if (m_otOption->FocusFirst()) { Invalidate(); UpdateWindow(); } break; case VK_END: // -- Focus on last item if (m_otOption->FocusLast()) { Invalidate(); UpdateWindow(); } break; case VK_LEFT: // -- Get focused item otiItem = m_otOption->GetFocusedItem(); if (otiItem != NULL) { // -- -- Send notify to user if (!m_otOption->SendNotify(OT_NOTIFY_ITEMEXPANDING, otiItem)) { // -- -- -- Validate if (otiItem->GetChild() && otiItem->IsExpanded()) { // -- Expand otiItem->Expand(FALSE); // -- Update resize UpdateResize(); // -- Force redraw Invalidate(); // -- Update window UpdateWindow(); // -- Check visible CheckVisibleFocus(); break; } } } else break; case VK_UP: // -- Move focus up if (m_otOption->FocusPrev()) { Invalidate(); UpdateWindow(); } break; case VK_RIGHT: // -- Get focused item otiItem = m_otOption->GetFocusedItem(); if (otiItem != NULL) { // -- -- Send notify to user if (!m_otOption->SendNotify(OT_NOTIFY_ITEMEXPANDING, otiItem)) { // -- -- -- Validate if (otiItem->GetChild() && !otiItem->IsExpanded()) { // -- -- -- -- Expand otiItem->Expand(TRUE); // -- -- -- -- Update resize UpdateResize(); // -- -- -- -- Force redraw Invalidate(); // -- -- -- -- Update window UpdateWindow(); // -- -- -- -- Check visible CheckVisibleFocus(); break; } } } else break; case VK_DOWN: // -- Move focus down if (m_otOption->FocusNext()) { Invalidate(); UpdateWindow(); } break; } CWnd::OnKeyDown(nChar, nRepCnt, nFlags); }
void COptionTreeList::OnLButtonDblClk(UINT nFlags, CPoint point) { // Validate option if (m_otOption == NULL) { CWnd::OnLButtonDblClk(nFlags, point); return; } // See if disabled if (m_otOption->IsDisableInput() || !m_otOption->IsWindowEnabled()) { CWnd::OnLButtonDblClk(nFlags, point); return; } // Declare variables COptionTreeItem *otiItem; COptionTreeItem *oliOldFocus; CRect rcClient, rcLabel; // Send notify to user m_otOption->SendNotify(NM_DBLCLK); // Get client rect GetClientRect(rcClient); // Hit test if ((otiItem = m_otOption->FindItem(point)) != NULL && otiItem->GetChild()) { switch (m_otOption->HitTest(point)) { case OT_HIT_COLUMN: // -- Get largest visible label rcLabel = m_otOption->GetLargestVisibleLabel(); // -- Resize limit // -- -- Right if (rcLabel.right + OT_SPACE > (rcClient.right - OT_RESIZEBUFFER)) { // -- -- -- Set column m_otOption->SetColumn(rcClient.right - OT_RESIZEBUFFER); } else { // -- -- -- Set column m_otOption->SetColumn(rcLabel.right + OT_SPACE); } // -- Update move items m_otOption->UpdateMoveAllItems(); // -- Force redraw Invalidate(); // -- Update window UpdateWindow(); break; case OT_HIT_ATTRIBUTE: if (!otiItem->IsRootLevel()) { break; } default: // -- Get focus item oliOldFocus = m_otOption->GetFocusedItem(); // -- Select items m_otOption->SelectItems(NULL, FALSE); // -- Set focus item m_otOption->SetFocusedItem(otiItem); // -- Select otiItem->Select(); // -- Send notify to user if (otiItem != oliOldFocus) { m_otOption->SendNotify(OT_NOTIFY_SELCHANGE, otiItem); } case OT_HIT_EXPAND: if (!m_otOption->SendNotify(OT_NOTIFY_ITEMEXPANDING, otiItem)) { // -- Expand otiItem->Expand(!otiItem->IsExpanded()); // -- Update resize UpdateResize(); // -- Force redraw Invalidate(); // -- Update window UpdateWindow(); // -- Check visible CheckVisibleFocus(); } break; } } else { switch (m_otOption->HitTest(point)) { case OT_HIT_COLUMN: // -- Get largest visible label rcLabel = m_otOption->GetLargestVisibleLabel(); // -- Resize limit // -- -- Right if (rcLabel.right + OT_SPACE > (rcClient.right - OT_RESIZEBUFFER)) { // -- -- -- Set column m_otOption->SetColumn(rcClient.right - OT_RESIZEBUFFER); } else { // -- -- -- Set column m_otOption->SetColumn(rcLabel.right + OT_SPACE); } // -- Update move items m_otOption->UpdateMoveAllItems(); // -- Force redraw Invalidate(); // -- Update window UpdateWindow(); break; } } CWnd::OnLButtonDblClk(nFlags, point); }
void COptionTreeList::OnLButtonDown(UINT nFlags, CPoint point) { // Validate option if (m_otOption == NULL) { CWnd::OnLButtonDown(nFlags, point); return; } // See if disabled if (m_otOption->IsDisableInput() || !m_otOption->IsWindowEnabled()) { CWnd::OnLButtonDown(nFlags, point); return; } // Send notify to user m_otOption->SendNotify(NM_CLICK); // Declare variables long lHit; COptionTreeItem *otiItem; COptionTreeItem *oliOldFocus; CRect rcClient; // Get client rectangle GetClientRect(rcClient); // Set focus to window SetFocus(); // Hit test lHit = m_otOption->HitTest(point); switch (lHit) { case OT_HIT_COLUMN: if (m_otOption->SendNotify(OT_NOTIFY_COLUMNCLICK)) { break; } // -- Set capture m_bColDrag = TRUE; SetCapture(); m_lColumn = m_otOption->GetOrigin().x; // -- Force redraw Invalidate(); // -- Update window UpdateWindow(); break; case OT_HIT_EXPAND: if ((otiItem = m_otOption->FindItem(point)) != NULL) { if (otiItem->GetChild() && !m_otOption->SendNotify(OT_NOTIFY_ITEMEXPANDING, otiItem)) { // -- Expand otiItem->Expand(!otiItem->IsExpanded()); // -- Update resize UpdateResize(); // -- Force redraw Invalidate(); // -- Update window UpdateWindow(); // -- Check visible CheckVisibleFocus(); } } break; default: if ((otiItem = m_otOption->FindItem(point)) != NULL) { // -- Get old focus oliOldFocus = m_otOption->GetFocusedItem(); // -- Select items m_otOption->SelectItems(NULL, FALSE); // -- Select otiItem->Select(); // -- Make sure new item if (otiItem != oliOldFocus) { m_otOption->SendNotify(OT_NOTIFY_SELCHANGE, otiItem); } // -- Send notify if (lHit == OT_HIT_ATTRIBUTE && !otiItem->IsRootLevel()) { if (!m_otOption->SendNotify(OT_NOTIFY_PROPCLICK, otiItem) && !otiItem->IsReadOnly()) { otiItem->Activate(); } } // -- Set focus item m_otOption->SetFocusedItem(otiItem); // -- Force redraw Invalidate(); // -- Update window UpdateWindow(); } else { // -- Select items m_otOption->SelectItems(NULL, FALSE); // -- Set focus item m_otOption->SetFocusedItem(NULL); // -- Send notify m_otOption->SendNotify(OT_NOTIFY_SELCHANGE); // -- Force redraw Invalidate(); // -- Update window UpdateWindow(); } break; } CWnd::OnLButtonDown(nFlags, point); }
void CPropTreeList::OnKeyDown(UINT nChar, UINT, UINT) { CPropTreeItem* pItem; ASSERT(m_pProp!=NULL); if (m_pProp->IsDisableInput() || !m_pProp->IsWindowEnabled()) return; switch (nChar) { case VK_RETURN: if ((pItem = m_pProp->GetFocusedItem())!=NULL && !pItem->IsRootLevel() && !pItem->IsReadOnly()) { pItem->Activate(); } break; case VK_HOME: if (m_pProp->FocusFirst()) Invalidate(); break; case VK_END: if (m_pProp->FocusLast()) Invalidate(); break; case VK_LEFT: if ((pItem = m_pProp->GetFocusedItem())!=NULL) { if (!m_pProp->SendNotify(PTN_ITEMEXPANDING, pItem)) { if (pItem->GetChild() && pItem->IsExpanded()) { pItem->Expand(FALSE); UpdateResize(); Invalidate(); UpdateWindow(); CheckVisibleFocus(); break; } } } else break; // pass thru to next case VK_UP case VK_UP: if (m_pProp->FocusPrev()) Invalidate(); break; case VK_RIGHT: if ((pItem = m_pProp->GetFocusedItem())!=NULL) { if (!m_pProp->SendNotify(PTN_ITEMEXPANDING, pItem)) { if (pItem->GetChild() && !pItem->IsExpanded()) { pItem->Expand(); UpdateResize(); Invalidate(); UpdateWindow(); CheckVisibleFocus(); break; } } } else break; // pass thru to next case VK_DOWN case VK_DOWN: if (m_pProp->FocusNext()) Invalidate(); break; } }
void CPropTreeList::OnLButtonDown(UINT, CPoint point) { ASSERT(m_pProp!=NULL); if (m_pProp->IsDisableInput()) return; m_pProp->SendNotify(NM_CLICK); if (!m_pProp->IsWindowEnabled()) return; SetFocus(); LONG nHit = m_pProp->HitTest(point); CPropTreeItem* pItem; CRect rc; CDC* pDC; switch (nHit) { case HTCOLUMN: if (m_pProp->SendNotify(PTN_COLUMNCLICK)) break; m_bColDrag = TRUE; SetCapture(); m_nPrevCol = m_pProp->GetOrigin().x; // paint drag line pDC = GetDC(); GetClientRect(rc); pDC->PatBlt(m_nPrevCol - PROPTREEITEM_COLRNG/2, 0, PROPTREEITEM_COLRNG, rc.bottom, PATINVERT); ReleaseDC(pDC); break; case HTCHECKBOX: if ((pItem = m_pProp->FindItem(point))!=NULL) { pItem->Check(!pItem->IsChecked()); m_pProp->SendNotify(PTN_CHECKCLICK, pItem); Invalidate(); } break; case HTEXPAND: if ((pItem = m_pProp->FindItem(point))!=NULL) { if (pItem->GetChild() && !m_pProp->SendNotify(PTN_ITEMEXPANDING, pItem)) { pItem->Expand(!pItem->IsExpanded()); UpdateResize(); Invalidate(); UpdateWindow(); CheckVisibleFocus(); } } break; default: if ((pItem = m_pProp->FindItem(point))!=NULL) { CPropTreeItem* pOldFocus = m_pProp->GetFocusedItem(); m_pProp->SelectItems(NULL, FALSE); m_pProp->SetFocusedItem(pItem); pItem->Select(); Invalidate(); if (pItem!=pOldFocus) m_pProp->SendNotify(PTN_SELCHANGE, pItem); if (nHit==HTATTRIBUTE && !pItem->IsRootLevel()) { if (!m_pProp->SendNotify(PTN_PROPCLICK, pItem) && !pItem->IsReadOnly()) pItem->Activate(); } } else { m_pProp->SelectItems(NULL, FALSE); m_pProp->SetFocusedItem(NULL); m_pProp->SendNotify(PTN_SELCHANGE); Invalidate(); } break; } }
void PropertyTree::OnKeyDown(UINT nChar, UINT, UINT) { PropertyTreeItem* pItem; switch (nChar) { case VK_RETURN: if ((pItem = GetFocusedItem())!=NULL && !pItem->IsRootLevel()) { pItem->Activate(); } break; case VK_LEFT: if ((pItem = GetFocusedItem())!=NULL) { if (!SendNotify(PTN_ITEMEXPANDING, pItem)) { if (pItem->GetChild() && pItem->IsExpanded()) { pItem->Expand(FALSE); UpdateScrollbar(); Invalidate(); UpdateWindow(); CheckVisibleFocus(); break; } } } else break; // pass thru to next case VK_UP case VK_UP: if (FocusPrev()) Invalidate(); break; case VK_RIGHT: if ((pItem = GetFocusedItem())!=NULL) { if (!SendNotify(PTN_ITEMEXPANDING, pItem)) { if (pItem->GetChild() && !pItem->IsExpanded()) { pItem->Expand(); UpdateScrollbar(); Invalidate(); UpdateWindow(); CheckVisibleFocus(); break; } } } else break; // pass thru to next case VK_DOWN case VK_DOWN: if (FocusNext()) Invalidate(); break; } }
void PropertyTree::OnLButtonDown(UINT flags, CPoint point) { // // hide edit in place // if ( m_EditInPlace.IsVisible() ) m_EditInPlace.Cancel(); SendNotify(NM_CLICK); if (!IsWindowEnabled()) return; SetFocus(); LONG nHit = HitTest(point); PropertyTreeItem* pItem; CRect rc; switch (nHit) { case HTEXPAND: if ( flags != RTCLKITEM && (pItem = FindItem(point))!=NULL) { if (pItem->GetChild() && !SendNotify(PTN_ITEMEXPANDING, pItem)) { pItem->Expand(!pItem->IsExpanded()); UpdateScrollbar(); Invalidate(); UpdateWindow(); CheckVisibleFocus(); } } break; default: if ((pItem = FindItem(point))!=NULL) { PropertyTreeItem* pOldFocus = GetFocusedItem(); if ( pItem->IsRootLevel() ) return; SelectItems(NULL, FALSE); SetFocusedItem(pItem); pItem->Select(); Invalidate(); if ( flags == RTCLKITEM ) m_LastBtn = RTCLKITEM; else m_LastBtn = LFCLKITEM; // don't send a sel change event for removable devices if (pItem!=pOldFocus ) SendNotify(PTN_SELCHANGE, pItem); if (nHit==HTATTRIBUTE && !pItem->IsRootLevel()) { if (!SendNotify(PTN_PROPCLICK, pItem)) pItem->Activate(); } } break; } }