ShowOrHideColumnGroup
        (
            Microsoft.Office.Interop.Excel.Workbook oWorkbook,
            ColumnGroups eColumnGroup,
            Boolean bShow
        )
        {
            Debug.Assert(oWorkbook != null);

        #if DEBUG
            // Verify that a single value in the ColumnGroup enumeration has been
            // specified.

            Double dLogColumnGroup = Math.Log((Double)eColumnGroup, 2);
            Debug.Assert((Int32)dLogColumnGroup == dLogColumnGroup);
        #endif

            ListObject oTable;

            if (TryGetColumnGroupTable(oWorkbook, eColumnGroup, out oTable))
            {
                ExcelColumnHider.ShowOrHideColumns(oTable,
                                                   GetColumnNames(oWorkbook, eColumnGroup), bShow);

                if (eColumnGroup == ColumnGroups.VertexOtherColumns)
                {
                    // Hiding the subgraph image column doesn't hide the images in
                    // the column.

                    SubgraphImageColumnPopulator.ShowOrHideSubgraphImages(
                        oWorkbook, bShow);
                }
            }
        }
Example #2
0
        /// <summary>
        /// Selects the specified columns from the header.
        /// </summary>
        /// <param name="selectedColumns">The indexes of columns to select.</param>
        /// <returns>A new header containing only specified columns.</returns>
        public RecordSetHeader Select(IEnumerable <int> selectedColumns)
        {
            var columns    = new List <int>(selectedColumns);
            var columnsMap = new List <int>(Enumerable.Repeat(-1, Columns.Count));

            for (int newIndex = 0; newIndex < columns.Count; newIndex++)
            {
                var oldIndex = columns[newIndex];
                columnsMap[oldIndex] = newIndex;
            }

            var resultTupleDescriptor = Xtensive.Tuples.TupleDescriptor.Create(columns.Select(i => TupleDescriptor[i]));
            var resultOrder           = new DirectionCollection <int>(
                Order
                .Select(o => new KeyValuePair <int, Direction>(columnsMap[o.Key], o.Value))
                .TakeWhile(o => o.Key >= 0));

            var resultColumns = columns.Select((oldIndex, newIndex) => Columns[oldIndex].Clone(newIndex));

            var resultGroups = ColumnGroups
                               .Where(g => g.Keys.All(k => columnsMap[k] >= 0))
                               .Select(g => new ColumnGroup(
                                           g.TypeInfoRef,
                                           g.Keys.Select(k => columnsMap[k]),
                                           g.Columns
                                           .Select(c => columnsMap[c])
                                           .Where(c => c >= 0)));

            return(new RecordSetHeader(
                       resultTupleDescriptor,
                       resultColumns,
                       resultGroups,
                       null,
                       resultOrder));
        }
        /// ------------------------------------------------------------------------------------
        public void AdjustColumnHeaderHeight()
        {
            var newHeight = ColumnGroups.Aggregate(0, (curr, grp) =>
                                                   Math.Max(curr, grp.GetPreferredHeaderHeight()));

            ColumnHeadersHeight = (newHeight > 10 ? newHeight : 17);
        }
Example #4
0
        ShouldShowColumnGroup
        (
            ColumnGroups columnGroup,
            ColumnGroups columnGroupsToShow
        )
        {
            AssertValid();

            return((columnGroupsToShow & columnGroup) != 0);
        }
Example #5
0
 public override int GetHashCode()
 {
     unchecked
     {
         int result = ColumnGroups.GetHashCode();
         result = (result * 397) ^ RowCount;
         result = (result * 397) ^ (RowHeader != null ? RowHeader.GetHashCode() : 0);
         result = (result * 397) ^ (Title != null ? Title.GetHashCode() : 0);
         return(result);
     }
 }
        ShowOrHideColumnGroups
        (
            Microsoft.Office.Interop.Excel.Workbook workbook,
            ColumnGroups columnGroups,
            Boolean show,
            Boolean updateUserSettings
        )
        {
            Debug.Assert(workbook != null);

            foreach (ColumnGroups eColumnGroup in
                     Enum.GetValues(typeof(ColumnGroups)))
            {
                String sColumnGroup = eColumnGroup.ToString();

                if (eColumnGroup != ColumnGroups.All &&
                    (columnGroups & eColumnGroup) != 0 &&
                    sColumnGroup.IndexOf("DoNotHide") == -1 &&
                    sColumnGroup.IndexOf("InternalUse") == -1
                    )
                {
                    ShowOrHideColumnGroup(workbook, eColumnGroup, show);
                }
            }

            if (updateUserSettings)
            {
                ColumnGroupUserSettings oColumnGroupUserSettings =
                    new ColumnGroupUserSettings();

                ColumnGroups eColumnGroupsToShow =
                    oColumnGroupUserSettings.ColumnGroupsToShow;

                if (show)
                {
                    eColumnGroupsToShow |= columnGroups;
                }
                else
                {
                    eColumnGroupsToShow &= ~columnGroups;
                }

                oColumnGroupUserSettings.ColumnGroupsToShow = eColumnGroupsToShow;
                oColumnGroupUserSettings.Save();
            }
        }
        /// ------------------------------------------------------------------------------------
        public void ClearAll()
        {
            Columns.Clear();
            Rows.Clear();

            foreach (var grp in ColumnGroups)
            {
                grp.Dispose();
            }

            foreach (var grp in RowGroups)
            {
                grp.Dispose();
            }

            ColumnGroups.Clear();
            RowGroups.Clear();
        }
Example #8
0
        internal void OnAppearing()
        {
            Patients = PatientListService.GetPatients();
            foreach (var p in Patients)
            {
                p.TopLeftGroup  = new ObservableCollection <DynamicValue>();
                p.TopRightGroup = new ObservableCollection <DynamicValue>();
                p.LeftGroup     = new ObservableCollection <DynamicValue>();
                p.RightGroup    = new ObservableCollection <DynamicValue>();

                foreach (var c in ColumnGroups.FirstOrDefault(c => c.Title == "TopLeft").ToList())
                {
                    p.TopLeftGroup.Add(new DynamicValue
                    {
                        Header = c.Header,
                        Value  = c.Value
                    });
                }
                foreach (var c in ColumnGroups.FirstOrDefault(c => c.Title == "TopRight").ToList())
                {
                    p.TopRightGroup.Add(new DynamicValue
                    {
                        Header = c.Header,
                        Value  = c.Value
                    });
                }
                foreach (var c in ColumnGroups.FirstOrDefault(c => c.Title == "Left").ToList())
                {
                    p.LeftGroup.Add(new DynamicValue
                    {
                        Header = c.Header,
                        Value  = c.Value
                    });
                }
                foreach (var c in ColumnGroups.FirstOrDefault(c => c.Title == "Right").ToList())
                {
                    p.RightGroup.Add(new DynamicValue
                    {
                        Header = c.Header,
                        Value  = c.Value
                    });
                }
            }
        }
        TryGetColumnGroupTable
        (
            Microsoft.Office.Interop.Excel.Workbook oWorkbook,
            ColumnGroups eColumnGroup,
            out ListObject oTable
        )
        {
            Debug.Assert(oWorkbook != null);

            oTable = null;
            String sColumnGroup = eColumnGroup.ToString();

            if (sColumnGroup.StartsWith("Edge"))
            {
                return(ExcelTableUtil.TryGetTable(oWorkbook,
                                                  WorksheetNames.Edges, TableNames.Edges, out oTable));
            }

            if (sColumnGroup.StartsWith("Vertex"))
            {
                return(ExcelTableUtil.TryGetTable(oWorkbook,
                                                  WorksheetNames.Vertices, TableNames.Vertices, out oTable));
            }

            if (sColumnGroup.StartsWith("GroupEdge"))
            {
                return(ExcelTableUtil.TryGetTable(oWorkbook,
                                                  WorksheetNames.GroupEdgeMetrics, TableNames.GroupEdgeMetrics,
                                                  out oTable));
            }

            if (sColumnGroup.StartsWith("Group"))
            {
                return(ExcelTableUtil.TryGetTable(oWorkbook,
                                                  WorksheetNames.Groups, TableNames.Groups, out oTable));
            }

            Debug.Assert(false);
            return(false);
        }
        /// <summary>
        /// Gets the groups of columns - grouped by <see cref="SetGroup(DataColumn, string)"/>
        /// </summary>
        /// <param name="table">The table.</param>
        /// <returns></returns>
        public static ColumnGroups getGroupsOfColumns(this DataTable table)
        {
            Dictionary <String, DataColumn> registry = new Dictionary <string, DataColumn>();

            ColumnGroups groups = new ColumnGroups();
            ColumnGroup  group  = new ColumnGroup();

            Boolean startOfTheGroup = false;
            String  lastKey         = "";

            foreach (DataColumn c in table.Columns)
            {
                String key = c.GetGroup().ToUpper();

                if (lastKey != "" && lastKey != key)
                {
                    startOfTheGroup = true;
                }

                if (startOfTheGroup)
                {
                    if (group.Any())
                    {
                        groups.Add(group);
                    }
                    group           = new ColumnGroup();
                    startOfTheGroup = false;
                }

                group.Add(c);

                lastKey = key;
            }
            groups.Add(group);

            return(groups);
        }
    GetOtherColumnNames
    (
        Microsoft.Office.Interop.Excel.Workbook oWorkbook,
        ColumnGroups eOtherColumnGroup
    )
    {
        Debug.Assert(oWorkbook != null);

        List<String> oOtherColumnNames = new List<String>();
        ListObject oTable;

        if ( TryGetColumnGroupTable(oWorkbook, eOtherColumnGroup, out oTable) )
        {
            // Create a HashSet of the column names that are included in all
            // the non-other column groups in the table.

            HashSet<String> oColumnNamesInNonOtherGroups =
                new HashSet<String>();

            // All column groups in the edge table start with "Edge", all
            // column groups in the vertex table start with "Vertex", and all
            // column groups in the group table start with "Group".

            String sStartsWith = null;

            switch (eOtherColumnGroup)
            {
                case ColumnGroups.EdgeOtherColumns:

                    sStartsWith = "Edge";
                    break;

                case ColumnGroups.VertexOtherColumns:

                    sStartsWith = "Vertex";
                    break;

                case ColumnGroups.GroupOtherColumns:

                    sStartsWith = "Group";
                    break;

                default:

                    Debug.Assert(false);
                    break;
            }

            foreach ( ColumnGroups eColumnGroup in
                Enum.GetValues(typeof(ColumnGroups) ) )
            {
                if (
                    eColumnGroup != eOtherColumnGroup
                    &&
                    eColumnGroup.ToString().StartsWith(sStartsWith)
                    )
                {
                    foreach ( String sColumnNameInNonOtherGroup in 
                        GetColumnNames(oWorkbook, eColumnGroup) )
                    {
                        oColumnNamesInNonOtherGroups.Add(
                            sColumnNameInNonOtherGroup);
                    }
                }
            }

            // Any column not included in one of the non-other column groups is
            // an "other" column.

            foreach (ListColumn oColumn in oTable.ListColumns)
            {
                String sColumnName = oColumn.Name;

                if ( !oColumnNamesInNonOtherGroups.Contains(sColumnName) )
                {
                    oOtherColumnNames.Add(sColumnName);
                }
            }
        }
        
        return ( oOtherColumnNames.ToArray() );
    }
    GetColumnNames
    (
        Microsoft.Office.Interop.Excel.Workbook oWorkbook,
        ColumnGroups eColumnGroup
    )
    {
        Debug.Assert(oWorkbook != null);

        String [] asColumnNames = null;

        switch (eColumnGroup)
        {
            case ColumnGroups.EdgeDoNotHide:

                asColumnNames = new String [] {
                    EdgeTableColumnNames.Vertex1Name,
                    EdgeTableColumnNames.Vertex2Name,
                    };

                break;

            case ColumnGroups.EdgeVisualAttributes:

                asColumnNames = new String [] {
                    EdgeTableColumnNames.Color,
                    EdgeTableColumnNames.Width,
                    EdgeTableColumnNames.Style,
                    CommonTableColumnNames.Alpha,
                    CommonTableColumnNames.Visibility,
                    };

                break;

            case ColumnGroups.EdgeLabels:

                asColumnNames = new String [] {
                    EdgeTableColumnNames.Label,
                    EdgeTableColumnNames.LabelTextColor,
                    EdgeTableColumnNames.LabelFontSize,
                    };

                break;

            case ColumnGroups.EdgeGraphMetrics:

                asColumnNames = new String [] {
                    EdgeTableColumnNames.IsReciprocated,
                    };

                break;

            case ColumnGroups.VertexDoNotHide:

                asColumnNames = new String [] {
                    VertexTableColumnNames.VertexName,
                    };

                break;

            case ColumnGroups.VertexVisualAttributes:

                asColumnNames = new String [] {
                    VertexTableColumnNames.Color,
                    VertexTableColumnNames.Shape,
                    VertexTableColumnNames.Radius,
                    CommonTableColumnNames.Alpha,
                    VertexTableColumnNames.ImageUri,
                    CommonTableColumnNames.Visibility,
                    };

                break;

            case ColumnGroups.VertexGraphMetrics:

                asColumnNames = new String [] {
                    VertexTableColumnNames.Degree,
                    VertexTableColumnNames.InDegree,
                    VertexTableColumnNames.OutDegree,
                    VertexTableColumnNames.BetweennessCentrality,
                    VertexTableColumnNames.ClosenessCentrality,
                    VertexTableColumnNames.EigenvectorCentrality,
                    VertexTableColumnNames.PageRank,
                    VertexTableColumnNames.ClusteringCoefficient,
                    VertexTableColumnNames.ReciprocatedVertexPairRatio,
                    };

                break;

            case ColumnGroups.VertexLabels:

                asColumnNames = new String [] {
                    VertexTableColumnNames.Label,
                    VertexTableColumnNames.LabelFillColor,
                    VertexTableColumnNames.LabelPosition,
                    VertexTableColumnNames.ToolTip,
                    };

                break;

            case ColumnGroups.VertexLayout:

                asColumnNames = new String [] {
                    VertexTableColumnNames.LayoutOrder,
                    VertexTableColumnNames.X,
                    VertexTableColumnNames.Y,
                    VertexTableColumnNames.Locked,
                    VertexTableColumnNames.PolarR,
                    VertexTableColumnNames.PolarAngle,
                    };

                break;

            case ColumnGroups.EdgeInternalUse:
            case ColumnGroups.VertexInternalUse:

                asColumnNames = new String [] {
                    CommonTableColumnNames.ID,
                    CommonTableColumnNames.DynamicFilter,
                    };

                break;

            case ColumnGroups.EdgeOtherColumns:
            case ColumnGroups.VertexOtherColumns:
            case ColumnGroups.GroupOtherColumns:

                asColumnNames = GetOtherColumnNames(oWorkbook, eColumnGroup);
                break;

            case ColumnGroups.GroupDoNotHide:

                asColumnNames = new String [] {
                    GroupTableColumnNames.Name,
                    };

                break;

            case ColumnGroups.GroupVisualAttributes:

                asColumnNames = new String [] {
                    GroupTableColumnNames.VertexColor,
                    GroupTableColumnNames.VertexShape,
                    CommonTableColumnNames.Visibility,
                    GroupTableColumnNames.Collapsed,
                    };

                break;

            case ColumnGroups.GroupLabels:

                asColumnNames = new String [] {
                    GroupTableColumnNames.Label,
                    };

                break;

            case ColumnGroups.GroupLayout:

                asColumnNames = new String [] {
                    GroupTableColumnNames.CollapsedX,
                    GroupTableColumnNames.CollapsedY,
                    };

                break;

            case ColumnGroups.GroupGraphMetrics:

                asColumnNames = new String [] {
                    GroupTableColumnNames.Vertices,
                    GroupTableColumnNames.UniqueEdges,
                    GroupTableColumnNames.EdgesWithDuplicates,
                    GroupTableColumnNames.TotalEdges,
                    GroupTableColumnNames.SelfLoops,
                    GroupTableColumnNames.ReciprocatedVertexPairRatio,
                    GroupTableColumnNames.ReciprocatedEdgeRatio,
                    GroupTableColumnNames.ConnectedComponents,
                    GroupTableColumnNames.SingleVertexConnectedComponents,
                    GroupTableColumnNames.MaximumConnectedComponentVertices,
                    GroupTableColumnNames.MaximumConnectedComponentEdges,
                    GroupTableColumnNames.MaximumGeodesicDistance,
                    GroupTableColumnNames.AverageGeodesicDistance,
                    GroupTableColumnNames.GraphDensity,
                    };

                break;

            case ColumnGroups.GroupInternalUse:

                asColumnNames = new String [] {
                    CommonTableColumnNames.ID,
                    GroupTableColumnNames.CollapsedAttributes,
                    };

                break;

            case ColumnGroups.GroupEdgeDoNotHide:

                asColumnNames = new String [] {
                    GroupEdgeTableColumnNames.Group1Name,
                    GroupEdgeTableColumnNames.Group2Name,
                    };

                break;

            case ColumnGroups.GroupEdgeGraphMetrics:

                asColumnNames = new String [] {
                    GroupEdgeTableColumnNames.Edges,
                    };

                break;

            default:

                Debug.Assert(false);
                break;
        }
        
        Debug.Assert(asColumnNames != null);

        return (asColumnNames);
    }
    TryGetColumnGroupTable
    (
        Microsoft.Office.Interop.Excel.Workbook oWorkbook,
        ColumnGroups eColumnGroup,
        out ListObject oTable
    )
    {
        Debug.Assert(oWorkbook != null);

        oTable = null;
        String sColumnGroup = eColumnGroup.ToString();

        if ( sColumnGroup.StartsWith("Edge") )
        {
            return ( ExcelTableUtil.TryGetTable(oWorkbook,
                WorksheetNames.Edges, TableNames.Edges, out oTable) );
        }

        if ( sColumnGroup.StartsWith("Vertex") )
        {
            return ( ExcelTableUtil.TryGetTable(oWorkbook,
                WorksheetNames.Vertices, TableNames.Vertices, out oTable) );
        }

        if ( sColumnGroup.StartsWith("GroupEdge") )
        {
            return ( ExcelTableUtil.TryGetTable(oWorkbook,
                WorksheetNames.GroupEdgeMetrics, TableNames.GroupEdgeMetrics,
                out oTable) );
        }

        if ( sColumnGroup.StartsWith("Group") )
        {
            return ( ExcelTableUtil.TryGetTable(oWorkbook,
                WorksheetNames.Groups, TableNames.Groups, out oTable) );
        }

        Debug.Assert(false);
        return (false);
    }
    ShowOrHideColumnGroup
    (
        Microsoft.Office.Interop.Excel.Workbook oWorkbook,
        ColumnGroups eColumnGroup,
        Boolean bShow
    )
    {
        Debug.Assert(oWorkbook != null);

        #if DEBUG

        // Verify that a single value in the ColumnGroup enumeration has been
        // specified.

        Double dLogColumnGroup = Math.Log( (Double)eColumnGroup, 2 );
        Debug.Assert( (Int32)dLogColumnGroup == dLogColumnGroup );

        #endif

        ListObject oTable;

        if ( TryGetColumnGroupTable(oWorkbook, eColumnGroup, out oTable) )
        {
            ExcelColumnHider.ShowOrHideColumns(oTable,
                GetColumnNames(oWorkbook, eColumnGroup), bShow);

            if (eColumnGroup == ColumnGroups.VertexOtherColumns)
            {
                // Hiding the subgraph image column doesn't hide the images in
                // the column.

                TableImagePopulator.ShowOrHideImagesInColumn(oWorkbook,
                    WorksheetNames.Vertices,
                    VertexTableColumnNames.SubgraphImage, bShow);
            }
        }
    }
    ShowOrHideColumnGroups
    (
        Microsoft.Office.Interop.Excel.Workbook workbook,
        ColumnGroups columnGroups,
        Boolean show,
        Boolean updateUserSettings
    )
    {
        Debug.Assert(workbook != null);

        foreach ( ColumnGroups eColumnGroup in
            Enum.GetValues(typeof(ColumnGroups) ) )
        {
            String sColumnGroup = eColumnGroup.ToString();

            if (eColumnGroup != ColumnGroups.All &&
                (columnGroups & eColumnGroup) != 0 &&
                sColumnGroup.IndexOf("DoNotHide") == -1 &&
                sColumnGroup.IndexOf("InternalUse") == -1
                )
            {
                ShowOrHideColumnGroup(workbook, eColumnGroup, show);
            }
        }

        if (updateUserSettings)
        {
            ColumnGroupUserSettings oColumnGroupUserSettings =
                new ColumnGroupUserSettings();

            ColumnGroups eColumnGroupsToShow =
                oColumnGroupUserSettings.ColumnGroupsToShow;

            if (show)
            {
                eColumnGroupsToShow |= columnGroups;
            }
            else
            {
                eColumnGroupsToShow &= ~columnGroups;
            }

            oColumnGroupUserSettings.ColumnGroupsToShow = eColumnGroupsToShow;
            oColumnGroupUserSettings.Save();
        }
    }
 public void AddColumns(GridViewColumnGroup col)
 {
     ColumnGroups.Add(col);
 }
    ShouldShowColumnGroup
    (
        ColumnGroups columnGroup,
        ColumnGroups columnGroupsToShow
    )
    {
        AssertValid();

        return ( (columnGroupsToShow & columnGroup) != 0 );
    }
        /// <summary>
        /// Gets the cloned shema.
        /// </summary>
        /// <param name="table">The table.</param>
        /// <returns></returns>
        public static T GetClonedShema <T>(this DataTable table, bool disablePrimaryKey = true, String[] categories = null) where T : DataTable, new()
        {
            DataTable clone  = table.Clone();
            T         output = new T();

            ColumnGroups groupsOfColumns = clone.getGroupsOfColumns();

            if (categories != null)
            {
                List <String> matched = new List <string>();
                foreach (String c in categories)
                {
                    var cg = groupsOfColumns.FirstOrDefault(x => x.name.Equals(c, StringComparison.InvariantCultureIgnoreCase));
                    if (cg == null)
                    {
                        if (clone.Columns.Contains(c))
                        {
                            matched.Add(c);
                        }
                    }
                    else
                    {
                        matched.AddRange(cg.Select(x => x.ColumnName));
                    }
                }

                List <DataColumn> dcdel = new List <DataColumn>();
                foreach (DataColumn dc in clone.Columns)
                {
                    if (!matched.Contains(dc.ColumnName))
                    {
                        dcdel.Add(dc);
                    }
                    //String g = dc.GetGroup();
                    //if (!matched.Any())
                    //{
                    //    if (!matched.Contains(dc.ColumnName))
                    //    {

                    //    }
                    //}
                    //else
                    //{
                    //    if (!matched.Contains(g))
                    //    {
                    //        dcdel.Add(dc);
                    //    }
                    //}
                }

                foreach (DataColumn dc in dcdel)
                {
                    clone.Columns.Remove(dc);
                }
            }

            table.ExtendedProperties.copyInto(output.ExtendedProperties);

            output.SetTitle(table.GetTitle());
            output.SetDescription(table.GetDescription());
            output.SetClassName(table.GetClassName());
            output.SetClassType(table.GetClassType());
            output.SetAggregationAspect(table.GetAggregationAspect());
            output.SetAggregationOriginCount(table.GetAggregationOriginCount());
            output.SetAdditionalInfo(table.GetAdditionalInfo());
            output.SetExtraDesc(table.GetExtraDesc());

            output.SetCategoryPriority(table.GetCategoryPriority());

            output.SetStyleSet(table.GetStyleSet());
            output.SetColumnMetaSet(table.GetColumnMetaSet());
            output.SetRowMetaSet(table.GetRowMetaSet());
            //output.SetClassType(table.Get)



            List <string> catPri = table.GetCategoryPriority();

            if (disablePrimaryKey)
            {
                output.PrimaryKey = new DataColumn[0];
            }

            foreach (DataColumn dc in clone.Columns)
            {
                dc.GetSPE();
            }

            foreach (DataColumn dc in clone.Columns)
            {
                DataColumn dce = output.Columns.Add(dc.ColumnName);
                dce.SetSPE(dc.GetSPE());
            }
            if (catPri.Any())
            {
                output.Columns.OrderByCategoryPriority(catPri);
            }

            if (output.TableName.isNullOrEmpty())
            {
                output.TableName = "datatable_" + imbStringGenerators.getRandomString(4);
            }

            return(output);
        }
Example #19
0
        //If the user selects a column option.  We need to perform the operation
        private void optionCtrl_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var optionCtrl = sender as ColumnOptionControl;

            if (e.PropertyName == "SelectedColumnOptionItem")
            {
                if (optionCtrl != null)
                {
                    switch (optionCtrl.SelectedColumnOptionItem.ColumnOption)
                    {
                    case Enums.ColumnOption.AddGrouping:
                        optionCtrl.IsGrouped = true;
                        var v = new PagedCollectionView(FilteredItemsSource);

                        var newGroup = new PropertyGroupDescription(optionCtrl.FilterColumnInfo.PropertyPath, optionCtrl.FilterColumnInfo.Converter);
                        ColumnGroups.Add(newGroup);

                        foreach (var item in ColumnGroups)
                        {
                            v.GroupDescriptions.Add(item);
                        }

                        ItemsSource = v;
                        break;

                    case Enums.ColumnOption.RemoveGrouping:
                        optionCtrl.IsGrouped = false;
                        var view  = new PagedCollectionView(FilteredItemsSource);
                        var group = ColumnGroups.FirstOrDefault(c => c.PropertyName == optionCtrl.FilterColumnInfo.PropertyPath);
                        if (@group != null)
                        {
                            ColumnGroups.Remove(@group);
                        }
                        foreach (var item in ColumnGroups)
                        {
                            view.GroupDescriptions.Add(item);
                        }
                        ItemsSource = view;
                        break;

                    case Enums.ColumnOption.PinColumn:
                        optionCtrl.IsPinned = true;
                        var frozenCount = FrozenColumnCount;
                        if (optionCtrl.Column.DisplayIndex >= FrozenColumnCount)
                        {
                            frozenCount++;
                        }
                        optionCtrl.Column.DisplayIndex = 0;
                        FrozenColumnCount = frozenCount;
                        break;

                    case Enums.ColumnOption.UnpinColumn:
                        optionCtrl.IsPinned = false;
                        if (FrozenColumnCount == 0)
                        {
                            FrozenColumnCount = 1;
                        }
                        optionCtrl.Column.DisplayIndex = FrozenColumnCount - 1;
                        FrozenColumnCount = FrozenColumnCount - 1;
                        break;
                    }
                }
            }
        }
 public int ChildIndexOf(object o)
 {
     return(ColumnGroups.IndexOf(o as ColumnGroup));
 }
 public void ChildAdd(object o)
 {
     ColumnGroups.Add(o as ColumnGroup);
 }
 public void ChildInsert(int index, object o)
 {
     ColumnGroups.Insert(index, o as ColumnGroup);
 }
Example #23
0
        GetOtherColumnNames
        (
            Microsoft.Office.Interop.Excel.Workbook oWorkbook,
            ColumnGroups eOtherColumnGroup
        )
        {
            Debug.Assert(oWorkbook != null);

            List <String> oOtherColumnNames = new List <String>();
            ListObject    oTable;

            if (TryGetColumnGroupTable(oWorkbook, eOtherColumnGroup, out oTable))
            {
                // Create a HashSet of the column names that are included in all
                // the non-other column groups in the table.

                HashSet <String> oColumnNamesInNonOtherGroups =
                    new HashSet <String>();

                // All column groups in the edge table start with "Edge", all
                // column groups in the vertex table start with "Vertex", and all
                // column groups in the group table start with "Group".

                String sStartsWith = null;

                switch (eOtherColumnGroup)
                {
                case ColumnGroups.EdgeOtherColumns:

                    sStartsWith = "Edge";
                    break;

                case ColumnGroups.VertexOtherColumns:

                    sStartsWith = "Vertex";
                    break;

                case ColumnGroups.GroupOtherColumns:

                    sStartsWith = "Group";
                    break;

                default:

                    Debug.Assert(false);
                    break;
                }

                foreach (ColumnGroups eColumnGroup in
                         Enum.GetValues(typeof(ColumnGroups)))
                {
                    if (
                        eColumnGroup != eOtherColumnGroup
                        &&
                        eColumnGroup.ToString().StartsWith(sStartsWith)
                        )
                    {
                        foreach (String sColumnNameInNonOtherGroup in
                                 GetColumnNames(oWorkbook, eColumnGroup))
                        {
                            oColumnNamesInNonOtherGroups.Add(
                                sColumnNameInNonOtherGroup);
                        }
                    }
                }

                // Any column not included in one of the non-other column groups is
                // an "other" column.

                foreach (ListColumn oColumn in oTable.ListColumns)
                {
                    String sColumnName = oColumn.Name;

                    if (!oColumnNamesInNonOtherGroups.Contains(sColumnName))
                    {
                        oOtherColumnNames.Add(sColumnName);
                    }
                }
            }

            return(oOtherColumnNames.ToArray());
        }
Example #24
0
        GetColumnNames
        (
            Microsoft.Office.Interop.Excel.Workbook oWorkbook,
            ColumnGroups eColumnGroup
        )
        {
            Debug.Assert(oWorkbook != null);

            String [] asColumnNames = null;

            switch (eColumnGroup)
            {
            case ColumnGroups.EdgeDoNotHide:

                asColumnNames = new String [] {
                    EdgeTableColumnNames.Vertex1Name,
                    EdgeTableColumnNames.Vertex2Name,
                };

                break;

            case ColumnGroups.EdgeVisualAttributes:

                asColumnNames = new String [] {
                    EdgeTableColumnNames.Color,
                    EdgeTableColumnNames.Width,
                    EdgeTableColumnNames.Style,
                    CommonTableColumnNames.Alpha,
                    CommonTableColumnNames.Visibility,
                };

                break;

            case ColumnGroups.EdgeLabels:

                asColumnNames = new String [] {
                    EdgeTableColumnNames.Label,
                    EdgeTableColumnNames.LabelTextColor,
                    EdgeTableColumnNames.LabelFontSize,
                };

                break;

            case ColumnGroups.EdgeGraphMetrics:

                asColumnNames = new String [] {
                    EdgeTableColumnNames.IsReciprocated,
                };

                break;

            case ColumnGroups.VertexDoNotHide:

                asColumnNames = new String [] {
                    VertexTableColumnNames.VertexName,
                };

                break;

            case ColumnGroups.VertexVisualAttributes:

                asColumnNames = new String [] {
                    VertexTableColumnNames.Color,
                    VertexTableColumnNames.Shape,
                    VertexTableColumnNames.Radius,
                    CommonTableColumnNames.Alpha,
                    VertexTableColumnNames.ImageUri,
                    CommonTableColumnNames.Visibility,
                };

                break;

            case ColumnGroups.VertexGraphMetrics:

                asColumnNames = new String [] {
                    VertexTableColumnNames.Degree,
                    VertexTableColumnNames.InDegree,
                    VertexTableColumnNames.OutDegree,
                    VertexTableColumnNames.BetweennessCentrality,
                    VertexTableColumnNames.ClosenessCentrality,
                    VertexTableColumnNames.EigenvectorCentrality,
                    VertexTableColumnNames.PageRank,
                    VertexTableColumnNames.ClusteringCoefficient,
                    VertexTableColumnNames.ReciprocatedVertexPairRatio,
                };

                break;

            case ColumnGroups.VertexLabels:

                asColumnNames = new String [] {
                    VertexTableColumnNames.Label,
                    VertexTableColumnNames.LabelFillColor,
                    VertexTableColumnNames.LabelPosition,
                    VertexTableColumnNames.ToolTip,
                };

                break;

            case ColumnGroups.VertexLayout:

                asColumnNames = new String [] {
                    VertexTableColumnNames.LayoutOrder,
                    VertexTableColumnNames.X,
                    VertexTableColumnNames.Y,
                    VertexTableColumnNames.Locked,
                    VertexTableColumnNames.PolarR,
                    VertexTableColumnNames.PolarAngle,
                };

                break;

            case ColumnGroups.EdgeInternalUse:
            case ColumnGroups.VertexInternalUse:

                asColumnNames = new String [] {
                    CommonTableColumnNames.ID,
                    CommonTableColumnNames.DynamicFilter,
                };

                break;

            case ColumnGroups.EdgeOtherColumns:
            case ColumnGroups.VertexOtherColumns:
            case ColumnGroups.GroupOtherColumns:

                asColumnNames = GetOtherColumnNames(oWorkbook, eColumnGroup);
                break;

            case ColumnGroups.GroupDoNotHide:

                asColumnNames = new String [] {
                    GroupTableColumnNames.Name,
                };

                break;

            case ColumnGroups.GroupVisualAttributes:

                asColumnNames = new String [] {
                    GroupTableColumnNames.VertexColor,
                    GroupTableColumnNames.VertexShape,
                    CommonTableColumnNames.Visibility,
                    GroupTableColumnNames.Collapsed,
                };

                break;

            case ColumnGroups.GroupLabels:

                asColumnNames = new String [] {
                    GroupTableColumnNames.Label,
                };

                break;

            case ColumnGroups.GroupLayout:

                asColumnNames = new String [] {
                    GroupTableColumnNames.CollapsedX,
                    GroupTableColumnNames.CollapsedY,
                };

                break;

            case ColumnGroups.GroupGraphMetrics:

                asColumnNames = new String [] {
                    GroupTableColumnNames.Vertices,
                    GroupTableColumnNames.UniqueEdges,
                    GroupTableColumnNames.EdgesWithDuplicates,
                    GroupTableColumnNames.TotalEdges,
                    GroupTableColumnNames.SelfLoops,
                    GroupTableColumnNames.ReciprocatedVertexPairRatio,
                    GroupTableColumnNames.ReciprocatedEdgeRatio,
                    GroupTableColumnNames.ConnectedComponents,
                    GroupTableColumnNames.SingleVertexConnectedComponents,
                    GroupTableColumnNames.MaximumConnectedComponentVertices,
                    GroupTableColumnNames.MaximumConnectedComponentEdges,
                    GroupTableColumnNames.MaximumGeodesicDistance,
                    GroupTableColumnNames.AverageGeodesicDistance,
                    GroupTableColumnNames.GraphDensity,
                };

                break;

            case ColumnGroups.GroupInternalUse:

                asColumnNames = new String [] {
                    CommonTableColumnNames.ID,
                    GroupTableColumnNames.CollapsedAttributes,
                };

                break;

            case ColumnGroups.GroupEdgeDoNotHide:

                asColumnNames = new String [] {
                    GroupEdgeTableColumnNames.Group1Name,
                    GroupEdgeTableColumnNames.Group2Name,
                };

                break;

            case ColumnGroups.GroupEdgeGraphMetrics:

                asColumnNames = new String [] {
                    GroupEdgeTableColumnNames.Edges,
                };

                break;

            default:

                Debug.Assert(false);
                break;
            }

            Debug.Assert(asColumnNames != null);

            return(asColumnNames);
        }
 public void ChildRemove(object o)
 {
     ColumnGroups.Remove(o as ColumnGroup);
 }
 public void ChildRemoveAt(int index)
 {
     ColumnGroups.RemoveAt(index);
 }
 /// ------------------------------------------------------------------------------------
 public void AddColumnGroup(string text, string textsLocalizationId)
 {
     ColumnGroups.Add(CVChartColumnGroup.Create(text, this, textsLocalizationId));
 }