bool TreeNode::OnDoubleClick(int mouse_x, int mouse_y) { if (IsExpandable() && icon_label_->IsOver(mouse_x, mouse_y) == true) { bool _expanded = !IsExpanded(); expand_button_->SetPressed(_expanded); SetExpanded(_expanded); } return (false); }
HRESULT CXTPTaskPanelGroup::AccessibleDoDefaultAction(VARIANT varChild) { SAFE_MANAGE_STATE(m_pModuleState); if (GetChildIndex(&varChild) != CHILDID_SELF) return E_INVALIDARG; SetExpanded(!IsExpanded()); return S_OK; }
bool TreeNode::OnKeyDown(uilepra::InputManager::KeyCode key_code) { Parent::OnKeyDown(key_code); switch(key_code) { case uilepra::InputManager::kInKbdLeft: { if (IsExpandable() && IsExpanded()) { expand_button_->SetPressed(false); SetExpanded(false); } } break; case uilepra::InputManager::kInKbdRight: { if (IsExpandable() && IsExpanded() == false) { expand_button_->SetPressed(true); SetExpanded(true); } } break; default: break; } return (false); }
void CXTPReportGroupRow::OnDblClick(CPoint ptClicked) { // do not expand if double clicked on the collapse bitmap - different action (one level only) if (!m_rcCollapse.PtInRect(ptClicked)) { // otherwise expand on double click SetSelectedChilds(); SetExpanded(!IsExpanded()); UpdateSelectedChilds(); } // process parent CXTPReportRow::OnDblClick(ptClicked); }
void CXTPReportGroupRow::OnClick(CPoint ptClicked) { // expand/collapse on single click at the collapse bitmap if (m_rcCollapse.PtInRect(ptClicked) && m_rcCollapse.PtInRect(m_pControl->m_ptMouseDown)) { BOOL bExp = IsExpanded(); SetSelectedMostDeepChilds(); SetExpanded(!bExp); UpdateSelectedMostDeepChilds(); BOOL bControlKey = (GetKeyState(VK_CONTROL) < 0) || m_pControl->m_bControlKeyAlwaysOn; BOOL bShiftKey = (GetKeyState(VK_SHIFT) < 0); if ((bControlKey || bShiftKey) && bExp && m_pControl->m_bSelectionExcludeGroupRows) m_pControl->UnselectGroupRows(); } }
void CXTPReportGroupRow::OnClick(CPoint ptClicked) { // expand/collapse on single click at the collapse bitmap if ( m_rcCollapse.PtInRect(m_pControl->m_mouseDownState.ptMouse) && m_rcCollapse.PtInRect(ptClicked) && !IsLockExpand()) { BOOL bExpanded = IsExpanded(); SetSelectedMostDeepChilds(); SetExpanded(!bExpanded); UpdateSelectedMostDeepChilds(); const BOOL bKeyControl = (::GetKeyState(VK_CONTROL) < 0) || m_pControl->m_bMultiSelectionMode; const BOOL bKeyShift = (::GetKeyState(VK_SHIFT) < 0); if ((bKeyControl || bKeyShift) && bExpanded && m_pControl->m_bSelectionExcludeGroupRows) { m_pControl->UnselectGroupRows(); } } }
void CXTPTaskPanelGroup::DoPropExchange(CXTPPropExchange* pPX) { CXTPTaskPanelItem::DoPropExchange(pPX); BOOL bExpanded = IsExpanded(); PX_Bool(pPX, _T("CaptionVisible"), m_bCaptionVisible, TRUE); PX_Bool(pPX, _T("Expandable"), m_bExpandable, TRUE); PX_Bool(pPX, _T("Expanded"), bExpanded, FALSE); PX_Bool(pPX, _T("Special"), m_bSpecial, FALSE); PX_Enum(pPX, _T("Layout"), m_itemLayout, xtpTaskItemLayoutDefault); PX_Rect(pPX, _T("MarginsInner"), m_rcMarginsInner, CXTPTaskPanelPaintManager::rectDefault); PX_Rect(pPX, _T("MarginsOuter"), m_rcMarginsOuter, CXTPTaskPanelPaintManager::rectDefault); PX_Size(pPX, _T("IconSize"), m_szItemIcon, CSize(0)); if (pPX->IsLoading()) { m_pItems->m_pPanel = m_pPanel; SetExpanded(bExpanded); } CXTPPropExchangeSection secItems(pPX->GetSection(_T("Items"))); m_pItems->DoPropExchange(&secItems); }
void CTreeCanvas::OnMouse( wxMouseEvent& event ) { if(wxGetApp().m_property_grid_validation)return; if(event.Entering()){ SetFocus(); // so middle wheel works } if(event.LeftDown()) { const CTreeButton* button = HitTest(event.GetPosition()); if(button) { switch(button->type) { case ButtonTypePlus: case ButtonTypeMinus: SetExpanded(button->obj, button->type == 0); SetVirtualSize(GetRenderSize()); this->Refresh(); break; case ButtonTypeLabelBefore: case ButtonTypeLabel: default: OnLabelLeftDown(button->obj, event); clicked_object = button->obj; break; } } else { wxGetApp().m_marked_list->Clear(true); } m_button_down_point = event.GetPosition(); } if(event.LeftUp()) { if(m_dragging) { m_dragging = false; // find the object to drop on to const CTreeButton* button = HitTest(event.GetPosition()); if(button == NULL || !wxGetApp().m_marked_list->ObjectMarked(button->obj)) // can only drop on to an item other than one of the items being dragged { // test drop possible bool drag_possible = true; HeeksObj* add_to = &wxGetApp(); if(button && button->paste_into)add_to = button->paste_into; for(std::list<HeeksObj*>::iterator It = m_dragged_list.begin(); It != m_dragged_list.end(); It++) { HeeksObj* object = *It; if(!add_to->CanAdd(object) || !object->CanAddTo(add_to)) { drag_possible = false; break; } } if(drag_possible) { wxGetApp().CreateUndoPoint(); // cut the objects wxGetApp().Remove(m_dragged_list); // paste the objects for(std::list<HeeksObj*>::iterator It = m_dragged_list.begin(); It != m_dragged_list.end(); It++) { HeeksObj* object = *It; { if(object->OneOfAKind()) { bool one_found = false; for(HeeksObj* child = add_to->GetFirstChild(); child; child = add_to->GetNextChild()) { if(child->GetType() == object->GetType()) { child->CopyFrom(object); one_found = true; break; } } if(!one_found) { add_to->Add(object, button ? button->paste_before : NULL); } } else { add_to->Add(object, button ? button->paste_before : NULL); } } } wxGetApp().Changed(); } else { Refresh(); } } else { Refresh(); } } else { if(m_waiting_until_left_up) { wxGetApp().m_marked_list->Clear(false); wxGetApp().m_marked_list->Add(clicked_object, true); } } m_waiting_until_left_up = false; } if(event.RightDown()) { const CTreeButton* button = HitTest(event.GetPosition()); clicked_object = NULL; if(button && (button->type == ButtonTypeLabelBefore || button->type == ButtonTypeLabel)) { clicked_object = button->obj; OnLabelRightDown(button->obj, event); } } if(event.RightUp()) { // do a context menu MarkedObjectOneOfEach marked_object(0, clicked_object, 1, 0, NULL); if(m_dragging) { m_dragging = false; // find the object to drop on to const CTreeButton* button = HitTest(event.GetPosition()); if(button == NULL || !wxGetApp().m_marked_list->ObjectMarked(button->obj)) // can only drop on to an item other than one of the items being dragged { // make a Move or Copy context menu HeeksObj* paste_into = NULL; HeeksObj* paste_before = NULL; if(button) { paste_into = button->paste_into; paste_before = button->paste_before; } wxGetApp().DoMoveOrCopyDropDownMenu(this, event.GetPosition(), &marked_object, paste_into, paste_before); } else { Refresh(); } } else { // do a standard drop down menu wxGetApp().DoDropDownMenu(this, event.GetPosition(), &marked_object, true, false); } } if(event.Dragging()) { if(event.LeftIsDown() || event.RightIsDown()) { if(!m_dragging && (abs(m_button_down_point.x - event.GetX())>2 || abs(m_button_down_point.y - event.GetY())>2)) { m_dragging = true; m_dragged_list = wxGetApp().m_marked_list->list(); } if(m_dragging) { m_drag_position = CalcUnscrolledPosition(event.GetPosition()); const CTreeButton* button = HitTest(event.GetPosition()); m_drag_paste_rect = wxRect(0, 0, 0, 0); if(button && button->type == ButtonTypeLabelBefore)m_drag_paste_rect = button->rect; Refresh(); } } } if(event.LeftDClick()) { const CTreeButton* button = HitTest(event.GetPosition()); if(button) { if(button->obj) { bool(*callback)(HeeksObj*) = NULL; button->obj->GetOnEdit(&callback); if(callback) { (*callback)(button->obj); } } } } event.Skip(); }
void TreeNode::SetExpanded(bool expanded) { ListControl* _list_control = (ListControl*)Parent::GetParentOfType(Parent::kListcontrol); if (_list_control != 0) { SetExpanded(expanded, _list_control); } }
void TreeNode::OnExpandButtonUnclicked(Button* /*button*/) { SetExpanded(expand_button_->GetPressed()); }