예제 #1
0
        private void Control_PreviewKeyDown(object sender, sw.Input.KeyEventArgs e)
        {
            if (e.Handled || swi.Keyboard.Modifiers != swi.ModifierKeys.None)
            {
                return;
            }

            // handle expanding/collapsing via the keyboard
            if (e.Key == swi.Key.Right)
            {
                var currentCell = Control.CurrentCell;
                if (currentCell.Column != null &&
                    Control.Columns.IndexOf(currentCell.Column) == 0 &&
                    currentCell.Item is ITreeGridItem item &&
                    item.Expandable &&
                    !item.Expanded)
                {
                    var index = controller.IndexOf(item);
                    if (index >= 0)
                    {
                        controller.ExpandRow(index);

                        e.Handled = true;
                    }
                }
            }
            else if (e.Key == swi.Key.Left)
            {
                var currentCell = Control.CurrentCell;
                if (currentCell.Column != null &&
                    Control.Columns.IndexOf(currentCell.Column) == 0 &&
                    currentCell.Item is ITreeGridItem item)
                {
                    if (!item.Expandable || !item.Expanded)
                    {
                        // select parent if not the top node
                        item = item.Parent;
                        if (item != null && !ReferenceEquals(item, DataStore))
                        {
                            Control.CurrentCell = new swc.DataGridCellInfo(item, currentCell.Column);
                            SelectedItem        = item;
                            e.Handled           = true;
                        }
                    }
                    else
                    {
                        var index = controller.IndexOf(item);
                        if (index >= 0)
                        {
                            controller.CollapseRow(index);

                            e.Handled = true;
                        }
                    }
                }
            }
        }
예제 #2
0
 public override bool CellMouseClick(GridColumnHandler column, swf.MouseEventArgs e, int rowIndex)
 {
     if (rowIndex >= 0 && object.ReferenceEquals(column.Widget, this.Widget.Columns[0]))
     {
         var offset = INDENT_WIDTH + controller.LevelAtRow(rowIndex) * INDENT_WIDTH;
         if (e.X < offset && e.X >= offset - INDENT_WIDTH)
         {
             if (controller.IsExpanded(rowIndex))
             {
                 controller.CollapseRow(rowIndex);
             }
             else
             {
                 controller.ExpandRow(rowIndex);
             }
             return(true);
         }
     }
     return(false);
 }