protected virtual void OnCollapse(MemberWrapperEventArgs e)
 {
     if (Collapse != null)
     {
         Collapse(this, e);
     }
 }
        internal void RefreshIfExpanded(CellEditorData cellData)
        {
            Debug.Assert(cellData != null, "cellData != null");

            if (cellData.IsExpanded)
            {
                // If the value has changed collapse the expanded cell. Then expand it again, unless the value was
                // set to null or has become unavailable.

                if (cellData.Wrapper.ValueIsNullOrUnavailable || cellData.Wrapper.Modified)
                {
                    MemberWrapperEventArgs args = new MemberWrapperEventArgs(cellData.Wrapper);
                    OnCollapse(args);
                    cellData.IsExpanded = false;

                    if (!cellData.Wrapper.ValueIsNullOrUnavailable)
                    {
                        OnExpand(args);
                        cellData.IsExpanded = true;
                    }
                }
            }
            else
            {
                // Needed in case the member has no children to allow the user to try expanding it again.
                cellData.Children = null;
            }
        }
 protected virtual void OnExpand(MemberWrapperEventArgs e)
 {
     if (Expand != null)
     {
         Expand(this, e);
     }
 }
Exemple #4
0
        private void nameColumn_Expand(object sender, MemberWrapperEventArgs e)
        {
            using (new LongRunningMonitor(this))
            {
                int index = m_properties.IndexOf(e.Wrapper);
                Debug.Assert(index != -1, "index != -1");
                Debug.Assert(!e.Wrapper.ValueIsNullOrUnavailable, "Trying to expand a null or unavailable value.");

                CellEditorData cellData = (CellEditorData)e.Wrapper.Tag;
                Debug.Assert(!cellData.IsExpanded, "Expanding an already expanded row.");

                // Create a new GenericWrapper object for the expanded value and get its properties.

                GenericWrapper genericWrapper = e.Wrapper.CreateWrapper();
                Debug.Assert(genericWrapper != null, "CreateWrapper() returned null for the member being expanded.");
                cellData.Children = genericWrapper.GetMembers();

                foreach (MemberWrapper childProperty in cellData.Children)
                {
                    childProperty.SetValueFormat(m_valueFormat);
                    childProperty.Tag           = new CellEditorData(childProperty, cellData.Level + 1, cellData);
                    childProperty.ValueChanged += new EventHandler(m_handler.ItemValueChanged);
                    m_properties.Insert(++index, childProperty);
                }

                if (cellData.Children.Count == 0)
                {
                    ((DataGridExpandableColumn)sender).Invalidate();
                }
                else
                {
                    ((CellEditorData)cellData.Children[cellData.Children.Count - 1].Tag).IsLastInLevel = true;
                }
            }
        }
 protected virtual void OnEditorCommitted(MemberWrapperEventArgs e)
 {
     if (EditorCommitted != null)
     {
         EditorCommitted(this, e);
     }
 }
Exemple #6
0
        private void editorColumn_EditorCommitted(object sender, MemberWrapperEventArgs e)
        {
            // When the a value is changed in an editor refresh the grid immediately - the change is already
            // committed, so there's no need to wait for the current grid cell to change. Also raise the
            // ListChanged event, otherwise if the cell being edited is not expanded it won't be updated
            // until the user moves away from it.

            m_properties.OnListChanged(new ListChangedEventArgs(ListChangedType.ItemChanged,
                                                                m_properties.IndexOf(e.Wrapper)));

            m_itemValueChanged = null;
            ProcessItemValueChanged(e.Wrapper);
        }
Exemple #7
0
        private void nameColumn_Collapse(object sender, MemberWrapperEventArgs e)
        {
            int index = m_properties.IndexOf(e.Wrapper);

            Debug.Assert(index != -1, "index != -1");

            CellEditorData cellData = (CellEditorData)e.Wrapper.Tag;

            Debug.Assert(cellData.IsExpanded, "Collapsing a row that is not expanded.");

            int totalRows = cellData.TotalExpandedRows;

            for (int i = 1; i <= totalRows; i++)
            {
                m_properties[index + i].ValueChanged -= new EventHandler(m_handler.ItemValueChanged);
            }

            m_properties.RemoveRange(index + 1, totalRows);
            cellData.Children = null;
        }