1 #ifndef GUI_WIDGETS_ALNMULTI___SEL_LIST_CONTROLLER__HPP
2 #define GUI_WIDGETS_ALNMULTI___SEL_LIST_CONTROLLER__HPP
71 void x_SelectTo(
int index,
bool bShift,
bool bCtrl);
82 : m_ProcessMouseUp(
false)
93 m_ProcessMouseUp =
false;
94 wxPoint ms_pos =
event.GetPosition();
95 m_MouseDownPos = ms_pos;
100 int index = SLC_GetLineByWindowY(ms_pos.y,
true);
104 m_ProcessMouseUp =
true;
109 if(m_ProcessMouseUp) {
120 m_ProcessMouseUp =
true;
140 if(event.Dragging()) {
141 wxPoint pos =
event.GetPosition();
153 if(model && m_ProcessMouseUp) {
154 wxPoint pos =
event.GetPosition();
155 int index = SLC_GetLineByWindowY(pos.y,
true);
170 m_ProcessMouseUp =
false;
180 int key =
event.GetKeyCode();
187 case WXK_NUMPAD_HOME:
188 x_SelectTo(0, b_shift, b_ctrl);
195 case WXK_NUMPAD_DOWN:
196 x_MoveSelectionBy(1, b_shift, b_ctrl);
200 x_MoveSelectionBy(-1, b_shift, b_ctrl);
203 case WXK_NUMPAD_PAGEUP:
204 x_MoveSelLineByPage(
false, b_shift, b_ctrl);
207 case WXK_NUMPAD_PAGEDOWN:
208 x_MoveSelLineByPage(
true, b_shift, b_ctrl);
211 x_SelectFocusedItem(b_ctrl);
234 iFocused =
max(iFocused, 0);
238 iFocused =
max(iFocused, 0);
239 iFocused =
min(iFocused,
N - 1);
241 x_SelectTo(iFocused, b_shift, b_ctrl);
260 SLC_VertScrollToMakeVisible(index);
270 int PosY = SLC_GetHeight();
271 int iBottom = SLC_GetLineByWindowY(PosY);
274 if(iFocused == iBottom) {
276 iBottom = SLC_GetLineByWindowY(PosY);
281 x_SelectTo(iBottom, b_shift, b_ctrl);
283 int iTop = SLC_GetLineByWindowY(0);
286 if(iFocused == iTop) {
287 int PosY = SLC_GetHeight();
288 iTop = SLC_GetLineByWindowY(PosY);
293 x_SelectTo(iTop, b_shift, b_ctrl);
306 if( ! bSel || (bSel && bDeselectEn))
static EGUIState wxGetSelectState(const wxMouseEvent &event)
virtual ~CSelListController()
ISelListModel< Item > TSelListModel
virtual void SLC_VertScrollToMakeVisible(int index)=0
virtual void x_OnLeftDown(wxMouseEvent &event)
virtual int SLC_GetHeight()=0
virtual void x_OnMotion(wxMouseEvent &event)
virtual void x_OnLeftUp(wxMouseEvent &event)
void x_SelectFocusedItem(bool bDeselectEn)
virtual TSelListModel * SLC_GetModel()=0
void x_MoveSelLineByPage(bool bDown, bool bShift, bool bCtrl)
virtual void x_OnKeyDown(wxKeyEvent &event)
void x_MoveSelectionBy(int Shift, bool bShift, bool bCtrl)
void x_SelectTo(int index, bool bShift, bool bCtrl)
virtual int SLC_GetLineByWindowY(int WinY, bool b_clip=false)=0
virtual void SLM_InvertSingleItem(TIndex index)=0
virtual TIndex SLM_GetFocusedItemIndex() const =0
virtual void SLM_SelectAll(bool bSelect=true)=0
virtual TIndex SLM_GetItemsCount() const =0
virtual void SLM_SelectTo(TIndex index)=0
virtual bool SLM_IsItemSelected(TIndex index) const =0
virtual void SLM_FocusItem(TIndex index)=0
virtual void SLM_SelectSingleItem(TIndex index)=0
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
const struct ncbi::grid::netcache::search::fields::KEY key
The NCBI C++/STL use hints.
static const int kDragThreshold