예제 #1
0
 /// <summary>
 /// Invokes event
 /// </summary>
 protected virtual void OnCellSelection(CellElement oldCell, CellElement newCell)
 {
     if (CellSelection != null)
     {
         CellSelection(oldCell, newCell);
     }
 }
예제 #2
0
파일: Grid.cs 프로젝트: mjaric/nfx
        /// <summary>
        /// Dispatches appropriate events and performs row selection in the grid
        /// </summary>
        public virtual void DispatchCellSelection(CellElement cell)
        {
            if (cell.Row != null)
            {
                if (!m_MultiSelect)
                {
                    SelectRow(cell.Row);
                }
                else //multiselect
                {
                    if (!m_MultiSelectWithCtrl || (Control.ModifierKeys & Keys.Control) > 0)
                    {
                        if (IsRowSelected(cell.Row))
                        {
                            UnSelectRow(cell.Row);
                        }
                        else
                        {
                            SelectRow(cell.Row);
                        }
                    }
                }
            }

            if (m_CellSelectionAllowed)
            {
                try
                {
                    rebuildAllCells(true);//must force the rebuild or event will be invalid
                    OnCellSelection(m_SelectedCell, cell);
                }finally{
                    m_SelectedCell = cell;
                }
            }
        }
예제 #3
0
        /// <summary>
        /// Dispatches appropriate events and performs row selection in the grid
        /// </summary>
        public virtual void DispatchCellSelection(CellElement cell)
        {
            foreach (var col in m_Grid.m_Columns)
            {
                col.m_HasCellSelection = false;
            }

            if (m_Grid.CellSelectionAllowed)
            {
                m_HasCellSelection = true;
                OnCellSelection(m_Grid.SelectedCell, cell);
            }

            m_Grid.DispatchCellSelection(cell);
        }
예제 #4
0
        private void rebuildAllCells(bool force)//true to force rebuild inspite of Begin/End Change
        {
            if (!force && m_BatchChangeCounter > 0)
            {
                m_BatchChangeNeedsRebuild = true;
                return;
            }

            try
            {
                if (m_CellView == null)
                {
                    return;
                }

                if (m_Disposed)
                {
                    return;
                }

                //forget all previously selected cells
                m_SelectedCell = null;

                m_CommentElement = null;

                m_CellView.DeleteAllElements();
                buildCells();
            }
            finally
            {
                if (!force)
                {
                    m_BatchChangeNeedsRebuild = false;
                }
            }
        }
예제 #5
0
파일: Grid.cs 프로젝트: kinpro/nfx
 /// <summary>
 /// Invokes cell selection  event
 /// </summary>
 protected virtual void OnCellSelection(CellElement oldCell, CellElement newCell)
 {
   if (CellSelection!=null) CellSelection(oldCell, newCell);
 }    
예제 #6
0
파일: Grid.cs 프로젝트: kinpro/nfx
      /// <summary>
      /// Dispatches appropriate events and performs row selection in the grid
      /// </summary>
      public virtual void DispatchCellSelection(CellElement cell)
      {
        if (cell.Row!=null)
        {
          if (!m_MultiSelect)
            SelectRow(cell.Row);
          else //multiselect
          {
            if ((Control.ModifierKeys & Keys.Shift) > 0)
            {
              if (!SelectedRows.Any())
              {
                SelectRow(cell.Row);
                return;
              }

              var first = m_RowMap.FindIndex(re => re.Row == SelectedRows.First());
              var last  = m_RowMap.FindIndex(re => re.Row == SelectedRows.Last());
              var cur   = m_RowMap.FindIndex(re => re.Row == cell.Row);

              if (cur < 0)
                return;

              UnSelectAllRows();

              if (last <= cur)
                for (var i=last; i <= cur; ++i)
                   SelectRow(m_RowMap[i].Row);
              else if (cur <= first)
                for (var i = cur; i <= first; ++i)
                  SelectRow(m_RowMap[i].Row);
            }
            else if (!m_MultiSelectWithCtrl || (Control.ModifierKeys & Keys.Control) > 0)
            {
              if (IsRowSelected(cell.Row))
                UnSelectRow(cell.Row);
              else 
                SelectRow(cell.Row);
            }
            else
            {
              UnSelectAllRows();
              SelectRow(cell.Row);
            }
          } 
        }
        
        if (m_CellSelectionAllowed)
          try
          {
            rebuildAllCells(true);//must force the rebuild or event will be invalid
            OnCellSelection(m_SelectedCell, cell);
          }finally{
            m_SelectedCell = cell;
          } 
      } 
예제 #7
0
파일: Grid.cs 프로젝트: kinpro/nfx
 private void rebuildAllCells(bool force)//true to force rebuild inspite of Begin/End Change 
 {
   if (!force && m_BatchChangeCounter>0)
   {
     m_BatchChangeNeedsRebuild = true;
     return;
   }
   
   try
   {
       if (m_CellView==null) return;
       
       if (m_Disposed) return;
       
       //forget all previously selected cells
       m_SelectedCell = null;
       
       m_CommentElement = null;
       
       m_CellView.DeleteAllElements();
       buildCells();
   }
   finally
   {
      if (!force)
       m_BatchChangeNeedsRebuild = false;
   }
 }
예제 #8
0
파일: Grid.cs 프로젝트: vlapchenko/nfx
 /// <summary>
 /// Dispatches appropriate events and performs row selection in the grid
 /// </summary>
 public virtual void DispatchCellSelection(CellElement cell)
 {
   if (cell.Row!=null)
   {
     if (!m_MultiSelect)
      SelectRow(cell.Row);
     else //multiselect
     { 
       if (!m_MultiSelectWithCtrl || (Control.ModifierKeys&Keys.Control) >0)
       {
           if (IsRowSelected(cell.Row))
            UnSelectRow(cell.Row);
           else 
            SelectRow(cell.Row);
       } 
     } 
   }
   
   if (m_CellSelectionAllowed)
     try
     {
      rebuildAllCells(true);//must force the rebuild or event will be invalid
      OnCellSelection(m_SelectedCell, cell);
     }finally{
      m_SelectedCell = cell;
     } 
 } 
예제 #9
0
        /// <summary>
        /// Dispatches appropriate events and performs row selection in the grid
        /// </summary>
        public virtual void DispatchCellSelection(CellElement cell)
        {
            if (cell.Row != null)
            {
                if (!m_MultiSelect)
                {
                    if ((Control.ModifierKeys & Keys.Control) > 0)
                    {
                        UnSelectRow(cell.Row);
                    }
                    else
                    {
                        SelectRow(cell.Row);
                    }
                }
                else //multiselect
                {
                    if ((Control.ModifierKeys & Keys.Shift) > 0)
                    {
                        if (!SelectedRows.Any())
                        {
                            SelectRow(cell.Row);
                            return;
                        }

                        var first = m_RowMap.FindIndex(re => re.Row == SelectedRows.First());
                        var last  = m_RowMap.FindIndex(re => re.Row == SelectedRows.Last());
                        var cur   = m_RowMap.FindIndex(re => re.Row == cell.Row);

                        if (cur < 0)
                        {
                            return;
                        }

                        UnSelectAllRows();

                        if (last <= cur)
                        {
                            for (var i = last; i <= cur; ++i)
                            {
                                SelectRow(m_RowMap[i].Row);
                            }
                        }
                        else if (cur <= first)
                        {
                            for (var i = cur; i <= first; ++i)
                            {
                                SelectRow(m_RowMap[i].Row);
                            }
                        }
                    }
                    else if (!m_MultiSelectWithCtrl || (Control.ModifierKeys & Keys.Control) > 0)
                    {
                        if (IsRowSelected(cell.Row))
                        {
                            UnSelectRow(cell.Row);
                        }
                        else
                        {
                            SelectRow(cell.Row);
                        }
                    }
                    else
                    {
                        UnSelectAllRows();
                        SelectRow(cell.Row);
                    }
                }
            }

            if (m_CellSelectionAllowed)
            {
                try
                {
                    rebuildAllCells(true);//must force the rebuild or event will be invalid
                    OnCellSelection(m_SelectedCell, cell);
                }finally{
                    m_SelectedCell = cell;
                }
            }
        }
예제 #10
0
 internal ColumnResizeElement(CellView host, CellElement headerCell) : base(host)
 {
     m_HeaderCell = headerCell;
     m_Grid       = m_HeaderCell.Column.Grid;
 }
예제 #11
0
파일: Form2.cs 프로젝트: itadapter/nfx
        private void grid_CellSelection(CellElement oldCell, CellElement newCell)
        {
            if (newCell==null) return;
              if (newCell.Row==null) return;

              Text = newCell.Column.RepresentValueAsString(newCell.Row, newCell.Column.GetValueFromRow(newCell.Row));
        }
예제 #12
0
 internal ColumnResizeElement(CellView host, CellElement headerCell) : base(host)
 {
   m_HeaderCell = headerCell;
   m_Grid = m_HeaderCell.Column.Grid; 
 }