protected override void RestoreStateCore(IDataGridContextVisitable dataGridContextVisitable)
        {
            try
            {
                m_rootDataGridContext = SaveRestoreDataGridContextStateVisitor.GetDataGridContextFromVisitable(dataGridContextVisitable);

                if (m_saveExpandedItems)
                {
                    for (int i = 0; i < m_itemsToExpand.Count; i++)
                    {
                        object dataItemToExpand = m_itemsToExpand[i].Target;

                        if (dataItemToExpand != null)
                        {
                            try
                            {
                                // Verify if we have a System.Data.DataView as ItemsSource to
                                // ensure to restore the System.Data.DataRowView that represents
                                // the System.Data.DataRow saved previously
                                System.Data.DataView dataView =
                                    ItemsSourceHelper.TryGetDataViewFromDataGridContext(m_rootDataGridContext);

                                if ((dataView != null) &&
                                    (dataItemToExpand is System.Data.DataRow))
                                {
                                    foreach (System.Data.DataRowView dataRowView in dataView)
                                    {
                                        if (dataRowView.Row == dataItemToExpand)
                                        {
                                            dataItemToExpand = dataRowView;
                                            break;
                                        }
                                    }
                                }

                                m_rootDataGridContext.ExpandDetails(dataItemToExpand);
                            }
                            catch
                            {
                                System.Diagnostics.Debug.Assert(false, "Item has moved in the source ?");
                            }
                        }
                    }
                }

                bool visitWasStopped;
                dataGridContextVisitable.AcceptVisitor(0, int.MaxValue, this, DataGridContextVisitorType.Groups, false, out visitWasStopped);
            }
            finally
            {
                m_itemsToExpand       = null;
                m_rootDataGridContext = null;
            }
        }
    public void SaveState( IDataGridContextVisitable dataGridContextVisitable )
    {
      if( m_status != SaveRestoreStateVisitorStatus.Ready )
        throw new InvalidOperationException( "An attempt was made to save the state of a visitor that is not ready." );

      m_status = SaveRestoreStateVisitorStatus.Saving;
      try
      {
        this.SaveStateCore( dataGridContextVisitable );
        m_status = SaveRestoreStateVisitorStatus.RestorePending;
      }
      catch
      {
        m_status = SaveRestoreStateVisitorStatus.Error;
        throw;
      }
    }
    public static DataGridContext GetDataGridContextFromVisitable( IDataGridContextVisitable dataGridContextVisitable )
    {
      DataGridContext dataGridContext = dataGridContextVisitable as DataGridContext;

      if( dataGridContext == null )
      {
        DataGridControl dataGridControl = dataGridContextVisitable as DataGridControl;

        if( dataGridControl != null )
          dataGridContext = dataGridControl.DataGridContext;
      }

      if( dataGridContext == null )
        throw new InvalidOperationException( "A dataGridContext could not be extracted from the IDataGridContextVisitable object." );

      return dataGridContext;
    }
        protected override void SaveStateCore(IDataGridContextVisitable dataGridContextVisitable)
        {
            try
            {
                bool visitWasStopped;
                m_rootDataGridContext = SaveRestoreStateVisitor.GetDataGridContextFromVisitable(dataGridContextVisitable);

                if (m_saveExpandedItems)
                {
                    dataGridContextVisitable.AcceptVisitor(0, int.MaxValue, this, DataGridContextVisitorType.DataGridContext, true, out visitWasStopped);
                }

                dataGridContextVisitable.AcceptVisitor(0, int.MaxValue, this, DataGridContextVisitorType.Groups, false, out visitWasStopped);
            }
            finally
            {
                m_rootDataGridContext = null;
            }
        }
        public void RestoreState(IDataGridContextVisitable dataGridContextVisitable)
        {
            if (m_status != SaveRestoreStateVisitorStatus.RestorePending)
            {
                throw new InvalidOperationException("An attempt was made to restore the state of a visitor that does not have a pending restorable state.");
            }

            m_status = SaveRestoreStateVisitorStatus.Restoring;
            try
            {
                this.RestoreStateCore(dataGridContextVisitable);
                m_status = SaveRestoreStateVisitorStatus.Restored;
            }
            catch
            {
                m_status = SaveRestoreStateVisitorStatus.Error;
                throw;
            }
        }
        public void SaveState(IDataGridContextVisitable dataGridContextVisitable)
        {
            if (m_status != SaveRestoreStateVisitorStatus.Ready)
            {
                throw new InvalidOperationException("An attempt was made to save the state of a visitor that is not ready.");
            }

            m_status = SaveRestoreStateVisitorStatus.Saving;
            try
            {
                this.SaveStateCore(dataGridContextVisitable);
                m_status = SaveRestoreStateVisitorStatus.RestorePending;
            }
            catch
            {
                m_status = SaveRestoreStateVisitorStatus.Error;
                throw;
            }
        }
        public static DataGridContext GetDataGridContextFromVisitable(IDataGridContextVisitable dataGridContextVisitable)
        {
            DataGridContext dataGridContext = dataGridContextVisitable as DataGridContext;

            if (dataGridContext == null)
            {
                DataGridControl dataGridControl = dataGridContextVisitable as DataGridControl;

                if (dataGridControl != null)
                {
                    dataGridContext = dataGridControl.DataGridContext;
                }
            }

            if (dataGridContext == null)
            {
                throw new InvalidOperationException("A dataGridContext could not be extracted from the IDataGridContextVisitable object.");
            }

            return(dataGridContext);
        }
Beispiel #8
0
        protected override void RestoreStateCore(IDataGridContextVisitable dataGridContextVisitable)
        {
            DataGridContext rootDataGridContext = SaveRestoreStateVisitor.GetDataGridContextFromVisitable(dataGridContextVisitable);

            this.RecursiveRestoreDataGridContextsState(rootDataGridContext);
        }
    protected override void RestoreStateCore( IDataGridContextVisitable dataGridContextVisitable )
    {
      try
      {
        m_rootDataGridContext = SaveRestoreDataGridContextStateVisitor.GetDataGridContextFromVisitable( dataGridContextVisitable );

        if( m_saveExpandedItems )
        {
          for( int i = 0; i < m_itemsToExpand.Count; i++ )
          {
            object dataItemToExpand = m_itemsToExpand[ i ].Target;

            if( dataItemToExpand != null )
            {
              try
              {
                // Verify if we have a System.Data.DataView as ItemsSource to 
                // ensure to restore the System.Data.DataRowView that represents
                // the System.Data.DataRow saved previously
                System.Data.DataView dataView = 
                  ItemsSourceHelper.TryGetDataViewFromDataGridContext( m_rootDataGridContext );

                if( ( dataView != null ) 
                    && ( dataItemToExpand is System.Data.DataRow ) )
                {
                  foreach( System.Data.DataRowView dataRowView in dataView )
                  {
                    if( dataRowView.Row == dataItemToExpand )
                    {
                      dataItemToExpand = dataRowView;
                      break;
                    }
                  }
                }

                m_rootDataGridContext.ExpandDetails( dataItemToExpand );
              }
              catch
              {
                System.Diagnostics.Debug.Assert( false, "Item has moved in the source ?" );
              }
            }
          }
        }

        bool visitWasStopped;
        dataGridContextVisitable.AcceptVisitor( 0, int.MaxValue, this, DataGridContextVisitorType.Groups, false, out visitWasStopped );
      }
      finally
      {
        m_itemsToExpand = null;
        m_rootDataGridContext = null;
      }
    }
    protected override void SaveStateCore( IDataGridContextVisitable dataGridContextVisitable )
    {
      try
      {
        bool visitWasStopped;
        m_rootDataGridContext = SaveRestoreStateVisitor.GetDataGridContextFromVisitable( dataGridContextVisitable );

        if( m_saveExpandedItems )
          dataGridContextVisitable.AcceptVisitor( 0, int.MaxValue, this, DataGridContextVisitorType.DataGridContext, true, out visitWasStopped );

        dataGridContextVisitable.AcceptVisitor( 0, int.MaxValue, this, DataGridContextVisitorType.Groups, false, out visitWasStopped );
      }
      finally
      {
        m_rootDataGridContext = null;
      }
    }
 protected abstract void RestoreStateCore(IDataGridContextVisitable dataGridContextVisitable);
    public void RestoreState( IDataGridContextVisitable dataGridContextVisitable )
    {
      if( m_status != SaveRestoreStateVisitorStatus.RestorePending )
        throw new InvalidOperationException( "An attempt was made to restore the state of a visitor that does not have a pending restorable state." );

      m_status = SaveRestoreStateVisitorStatus.Restoring;
      try
      {
        this.RestoreStateCore( dataGridContextVisitable );
        m_status = SaveRestoreStateVisitorStatus.Restored;
      }
      catch
      {
        m_status = SaveRestoreStateVisitorStatus.Error;
        throw;
      }
    }
 protected abstract void RestoreStateCore( IDataGridContextVisitable dataGridContextVisitable );
    protected override void RestoreStateCore( IDataGridContextVisitable dataGridContextVisitable )
    {
      DataGridContext rootDataGridContext = SaveRestoreStateVisitor.GetDataGridContextFromVisitable( dataGridContextVisitable );

      this.RecursiveRestoreDataGridContextsState( rootDataGridContext );
    }